From: dave.martin@linaro.org (Dave Martin)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] ARM: net: JIT compiler for packet filters
Date: Mon, 19 Dec 2011 15:52:52 +0000 [thread overview]
Message-ID: <20111219155252.GG2031@linaro.org> (raw)
In-Reply-To: <20111219153338.GV24496@pengutronix.de>
On Mon, Dec 19, 2011 at 04:33:38PM +0100, Uwe Kleine-K?nig wrote:
> Hello,
>
> On Mon, Dec 19, 2011 at 03:24:18PM +0000, Dave Martin wrote:
> > On Mon, Dec 19, 2011 at 04:19:58PM +0100, Uwe Kleine-K?nig wrote:
> > > On Mon, Dec 19, 2011 at 12:50:21PM +0000, Dave Martin wrote:
> > > > On Mon, Dec 19, 2011 at 09:40:30AM +0100, Mircea Gherzan wrote:
> > > > > Based of Matt Evans's PPC64 implementation.
> > > > Note that it's fine to have the JIT generating ARM code, even if the rest
> > > > if the kernel is Thumb-2. This would only start to cause problems if we
> > > > want to do things like set kprobes in the JITted code, or unwind out of
> > > > the JITted code.
> > > or use a CPU that doesn't speak ARM (e.g. v7M)
> >
> > Indeed... I was assuming though that that would be out of scope for the
> > first iteration of this code.
> Right, depending on !THUMB2 is fine. Only generating ARM code with
> THUMB2=y is not.
The kernel doesn't support v7-M upstream though. CONFIG_THUMB2_KERNEL=y
doesn't mean that there is no ARM code present -- there _is_ ARM code in
the kernel image even with this option (though not very much).
IMHO, CONFIG_THUMB2_KERNEL should be viewed as similiar to an optimisation
option or other code gen options -- it's a hint to use the Thumb-2
instruction set in preference to ARM, but doesn't make a 100% guarantee.
Some parts of the kernel do contain ARM code even in this configuration.
The real problem we have here is that we do not distinguish between v7-A
and v7-M in Kconfig (this is not the same thing as CONFIG_MMU, since
there's no special reason why it should be impossible to build a ucLinux
kernel for v7-A -- in which case the ARM instruction is available)
In the meantime, we could temporarily make the JIT dependent on
MMU || !THUMB2_KERNEL, but that doesn't seem strictly correct.
If we had dedicated Kconfig variables describing the (non-) availability
of the two instruction sets, that might enable us to get this right.
Cheers
---Dave
WARNING: multiple messages have this Message-ID (diff)
From: Dave Martin <dave.martin@linaro.org>
To: Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>
Cc: Mircea Gherzan <mgherzan@gmail.com>,
netdev@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2] ARM: net: JIT compiler for packet filters
Date: Mon, 19 Dec 2011 15:52:52 +0000 [thread overview]
Message-ID: <20111219155252.GG2031@linaro.org> (raw)
In-Reply-To: <20111219153338.GV24496@pengutronix.de>
On Mon, Dec 19, 2011 at 04:33:38PM +0100, Uwe Kleine-K?nig wrote:
> Hello,
>
> On Mon, Dec 19, 2011 at 03:24:18PM +0000, Dave Martin wrote:
> > On Mon, Dec 19, 2011 at 04:19:58PM +0100, Uwe Kleine-K?nig wrote:
> > > On Mon, Dec 19, 2011 at 12:50:21PM +0000, Dave Martin wrote:
> > > > On Mon, Dec 19, 2011 at 09:40:30AM +0100, Mircea Gherzan wrote:
> > > > > Based of Matt Evans's PPC64 implementation.
> > > > Note that it's fine to have the JIT generating ARM code, even if the rest
> > > > if the kernel is Thumb-2. This would only start to cause problems if we
> > > > want to do things like set kprobes in the JITted code, or unwind out of
> > > > the JITted code.
> > > or use a CPU that doesn't speak ARM (e.g. v7M)
> >
> > Indeed... I was assuming though that that would be out of scope for the
> > first iteration of this code.
> Right, depending on !THUMB2 is fine. Only generating ARM code with
> THUMB2=y is not.
The kernel doesn't support v7-M upstream though. CONFIG_THUMB2_KERNEL=y
doesn't mean that there is no ARM code present -- there _is_ ARM code in
the kernel image even with this option (though not very much).
IMHO, CONFIG_THUMB2_KERNEL should be viewed as similiar to an optimisation
option or other code gen options -- it's a hint to use the Thumb-2
instruction set in preference to ARM, but doesn't make a 100% guarantee.
Some parts of the kernel do contain ARM code even in this configuration.
The real problem we have here is that we do not distinguish between v7-A
and v7-M in Kconfig (this is not the same thing as CONFIG_MMU, since
there's no special reason why it should be impossible to build a ucLinux
kernel for v7-A -- in which case the ARM instruction is available)
In the meantime, we could temporarily make the JIT dependent on
MMU || !THUMB2_KERNEL, but that doesn't seem strictly correct.
If we had dedicated Kconfig variables describing the (non-) availability
of the two instruction sets, that might enable us to get this right.
Cheers
---Dave
next prev parent reply other threads:[~2011-12-19 15:52 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-19 8:40 [PATCH v2] ARM: net: JIT compiler for packet filters Mircea Gherzan
2011-12-19 8:40 ` Mircea Gherzan
2011-12-19 12:50 ` Dave Martin
2011-12-19 12:50 ` Dave Martin
2011-12-19 15:19 ` Uwe Kleine-König
2011-12-19 15:19 ` Uwe Kleine-König
2011-12-19 15:24 ` Dave Martin
2011-12-19 15:24 ` Dave Martin
2011-12-19 15:33 ` Uwe Kleine-König
2011-12-19 15:33 ` Uwe Kleine-König
2011-12-19 15:52 ` Dave Martin [this message]
2011-12-19 15:52 ` Dave Martin
2011-12-19 17:14 ` Mircea Gherzan
2011-12-19 17:14 ` Mircea Gherzan
2011-12-19 17:39 ` Catalin Marinas
2011-12-19 17:39 ` Catalin Marinas
2011-12-19 16:45 ` Mircea Gherzan
2011-12-19 16:45 ` Mircea Gherzan
2011-12-19 18:18 ` Dave Martin
2011-12-19 18:18 ` Dave Martin
2011-12-19 18:29 ` Dave Martin
2011-12-19 18:29 ` Dave Martin
2011-12-21 14:59 ` Mircea Gherzan
2011-12-21 14:59 ` Mircea Gherzan
2011-12-22 17:00 ` Dave Martin
2011-12-22 17:00 ` Dave Martin
2011-12-22 17:34 ` David Laight
2011-12-22 17:34 ` David Laight
2011-12-23 2:26 ` Nicolas Pitre
2011-12-23 2:26 ` 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=20111219155252.GG2031@linaro.org \
--to=dave.martin@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.