From: Aurelien Jarno <aurelien@aurel32.net>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Paul Brook <paul@codesourcery.com>,
qemu-devel@nongnu.org, patches@linaro.org
Subject: Re: [Qemu-devel] [PATCH] target-arm: Minimal implementation of performance counters
Date: Mon, 16 May 2011 19:29:23 +0200 [thread overview]
Message-ID: <20110516172923.GA6057@volta.aurel32.net> (raw)
In-Reply-To: <BANLkTikDS+ePn1rMNBFkYGRgaOSyD9+2BA@mail.gmail.com>
On Mon, May 16, 2011 at 10:59:47AM +0100, Peter Maydell wrote:
> On 14 May 2011 22:32, Aurelien Jarno <aurelien@aurel32.net> wrote:
> > On Fri, May 06, 2011 at 03:32:27PM +0100, Peter Maydell wrote:
> >> I just spoke with Paul on IRC about this. In summary:
> >> * for a helper to cause an exception then it has (a) to make sure CPU
> >> state (pc, condflags) is sync'd before the call to the helper and (b)
> >> the helper has to be in a file with access to global env, because it
> >> needs to call cpu_loop_exit()
> >
> > I don't think (a) is true. It is possible to use the same way as for
> > load/store operations, that is call cpu_restore_state() before calling
> > cpu_loop_exit().
>
> Yes, I think you're right here, I'm not sure why I didn't think that
> would work. (b) still applies, though.
>
> > If you don't really like having env as a fixed host registers (recent
> > patch series from Blue Swirl seems to want to get rid of this), it is
> > possible to pass env as an argument of the helper to do that.
>
> I think really my position on this patch is that it adds
> functionality that means you can't actually boot recent Linux
> kernels with hw breakpoint support enabled, and I'd rather not
> have it get tangled up with either the ongoing "remove AREG0"
> discussions or a more general overhaul of how cp15 registers
> are handled. It just handles this handful of new registers in
> the same way we currently handle all the other cp14/cp15 regs.
Well the current discussion is about to know if env access should be
implicit (through a fixed register), or explicit (passed as an argument
to the helper). Blue Swirl is working towards the second solution to see
if it could work or not, so currently I think both options are still
acceptable (both options are currently in use in the current code).
> > What ever solution is used, we need env for the load/store functions,
> > and theses functions already provide a framework to restore the CPU
> > state. I think it's a good idea to use this framework instead of having
> > a second framework using TCG code for that.
>
> Do you mean you'd like to see us using cpu_restore_state() instead
> of explicit state-syncing TCG code for the cases where the exception
> is "expected" like SVC instructions? (ie what most targets have
> a gen_exception() function for.)
>
Well maybe this patch is not the best example to use
cpu_restore_state(), but I think we should go toward this direction.
Exceptions as their name suggests are not the rules, so we should avoid
generating code to handle them (like state-syncing TCG code), and use
CPU state restoration, even if it is not fast (that's not a problem, as
exceptions are not the rules).
That said given this patch is more or less an extension of an existing
code, we may want to apply it anyway.
--
Aurelien Jarno GPG: 1024D/F1BCDB73
aurelien@aurel32.net http://www.aurel32.net
next prev parent reply other threads:[~2011-05-16 17:29 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-21 16:01 [Qemu-devel] [PATCH] target-arm: Minimal implementation of performance counters Peter Maydell
2011-04-22 7:23 ` Brad Hards
2011-04-22 9:48 ` Peter Maydell
2011-04-22 10:32 ` Brad Hards
2011-04-25 21:09 ` Aurelien Jarno
2011-04-25 21:59 ` Peter Maydell
2011-04-25 22:31 ` Aurelien Jarno
2011-04-25 22:35 ` Peter Maydell
2011-04-26 10:23 ` Aurelien Jarno
2011-05-06 14:32 ` Peter Maydell
2011-05-14 21:32 ` Aurelien Jarno
2011-05-14 22:01 ` Blue Swirl
2011-05-14 22:10 ` Aurelien Jarno
2011-05-16 9:59 ` Peter Maydell
2011-05-16 17:29 ` Aurelien Jarno [this message]
2011-05-16 17:51 ` Peter Maydell
2011-06-15 17:39 ` Peter Maydell
2011-05-16 16:10 ` Paul Brook
2011-05-16 16:37 ` Peter Maydell
2011-05-16 17:29 ` Aurelien Jarno
2011-05-16 17:47 ` Peter Maydell
2011-05-16 18:06 ` Aurelien Jarno
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=20110516172923.GA6057@volta.aurel32.net \
--to=aurelien@aurel32.net \
--cc=patches@linaro.org \
--cc=paul@codesourcery.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.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.