linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: ard.biesheuvel@linaro.org (Ard Biesheuvel)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH RFC] ARM: option for loading modules into vmalloc area
Date: Wed, 19 Nov 2014 15:54:38 +0100	[thread overview]
Message-ID: <CAKv+Gu-8qhHYOry+LsDzp+LDZqYxVZ5G7cj48E3G2Unp2+=_yg@mail.gmail.com> (raw)
In-Reply-To: <2041617.Kxhx5O4MMr@wuerfel>

On 19 November 2014 14:40, Arnd Bergmann <arnd@arndb.de> wrote:
> On Tuesday 18 November 2014 21:13:56 Konstantin Khlebnikov wrote:
>> On 2014-11-18 20:34, Russell King - ARM Linux wrote:
>> > On Tue, Nov 18, 2014 at 08:21:46PM +0400, Konstantin Khlebnikov wrote:
>> >> Usually modules are loaded into small area prior to the kernel
>> >> text because they are linked with the kernel using short calls.
>> >> Compile-time instrumentation like GCOV or KASAN bloats code a lot,
>> >> and as a result huge modules no longer fit into reserved area.
>> >>
>> >> This patch adds option CONFIG_MODULES_USE_VMALLOC which lifts
>> >> limitation on amount of loaded modules. It links modules using
>> >> long-calls (option -mlong-calls) and loads them into vmalloc area.
>> >>
>> >> In few places exported symbols are called from inline assembly.
>> >> This patch adds macro for such call sites: __asmbl and __asmbl_clobber.
>> >> Call turns into single 'bl' or sequence 'movw; movt; blx' depending on
>> >> context and state of config option.
>> >>
>> >> Unfortunately this option isn't compatible with CONFIG_FUNCTION_TRACER.
>> >> Compiler emits short calls to profiling function despite of -mlong-calls.
>> >> This is a bug in GCC, but ftrace anyway needs an update to handle this.
>> > It also isn't compatible with the older architectures which don't have
>> > "blx".
>>
>> Ok, I'll add "depends on CPU_V6 || CPU_V7" I don't think that it is
>> necessary for older cpus.
>
> Why not just use a different branch instruction for the older CPUs?
>

ARMv6 doesn't support movw/movt so this will only work on v7.

What about doing 'mov lr, pc; ldr pc,=symbol' instead? You clearly
don't care about performance in this case, so the performance hit (due
to the dcache access and interfering with the return stack predictors)
should be tolerable. The only thing to be careful about is thumb2
kernels: you would need to set the thumb bit in lr manually but only
if the call is made /from/ thumb. You would probably be better off
just depending on !THUMB2_KERNEL.

-- 
Ard.

  reply	other threads:[~2014-11-19 14:54 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-18 16:21 [PATCH RFC] ARM: option for loading modules into vmalloc area Konstantin Khlebnikov
2014-11-18 17:34 ` Russell King - ARM Linux
2014-11-18 18:13   ` Konstantin Khlebnikov
2014-11-19 13:40     ` Arnd Bergmann
2014-11-19 14:54       ` Ard Biesheuvel [this message]
2014-11-19 15:52         ` Konstantin Khlebnikov
2014-11-19 16:02           ` Ard Biesheuvel
2014-11-19 16:07             ` Russell King - ARM Linux
2014-11-19 16:25               ` Ard Biesheuvel
2014-11-19 16:32                 ` Konstantin Khlebnikov
2014-11-19 16:38                   ` Ard Biesheuvel
2014-11-19 16:55                     ` Russell King - ARM Linux
2014-11-19 16:59                       ` Nicolas Pitre
2014-11-19 16:41                 ` Russell King - ARM Linux
2014-11-19 16:37               ` Nicolas Pitre
2014-11-19 16:41                 ` Ard Biesheuvel
2014-11-19 16:49                 ` Russell King - ARM Linux
2014-11-19 16:57                   ` Nicolas Pitre
2014-11-19 16:59                     ` Russell King - ARM Linux
2014-11-19 17:12                       ` Nicolas Pitre
2014-11-19 17:59                         ` Ard Biesheuvel
2014-11-19 18:22                           ` Nicolas Pitre

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAKv+Gu-8qhHYOry+LsDzp+LDZqYxVZ5G7cj48E3G2Unp2+=_yg@mail.gmail.com' \
    --to=ard.biesheuvel@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).