From: "J. Mayer" <l_indien@magic.fr>
To: qemu-devel@nongnu.org
Cc: Blue Swirl <blauwirbel@gmail.com>
Subject: Re: [Qemu-devel] [PATCH, RFC] Disable implicit self-modifying code support for RISC CPUs
Date: Sun, 04 Nov 2007 08:36:05 +0100 [thread overview]
Message-ID: <1194161766.31210.9.camel@rapid> (raw)
In-Reply-To: <f43fc5580711040012s6bac616aybb0d1fe69a1b65b6@mail.gmail.com>
On Sun, 2007-11-04 at 09:12 +0200, Blue Swirl wrote:
> On 11/4/07, Fabrice Bellard <fabrice@bellard.org> wrote:
> > Blue Swirl wrote:
> > > Hi,
> > >
> > > RISC CPUs don't support self-modifying code unless the affected area
> > > is flushed explicitly. This patch disables the extra effort for SMC.
> > > The changes in this version would affect all CPUs except x86, but I'd
> > > like to see if there are problems with some target, so that the
> > > committed change can be limited. Without comments, I'll just disable
> > > SMC for Sparc, as there are no problems. So please comment, especially
> > > if you want to "opt in".
> > >
> > > For some reason, I can't disable all TB/TLB flushing, for example
> > > there was already one line with TARGET_HAS_SMC || 1, but removing the
> > > || 1 part causes crashing. Does anyone know why?
> >
> > With the current QEMU architecture, you cannot disable self-modifying
> > code as you did. This is why I did not fully supported the
> > TARGET_HAS_SMC flag. The problem is that the translator make the
> > assumption that the RAM and the TB contents are consistent for example
> > when handling exceptions. Suppressing this assumption is possible but
> > requires more work.
>
> I think the conclusion is that we would need some kind of emulator for
> i-cache for any accurate emulation. And handling the boot loader may
> need an uncached mode.
> The performance benefit from disabling SMC is unnoticeable according
> to my benchmarks. Adding a TB flush to i-cache flushing made things
> worse. Moreover, SMC is hardly ever used on Sparc.
>
> I'll just commit the debug statement fixes and
> the fix that separates
> PAGE_READ from PAGE_EXEC for Sparc.
This patch is absolutely not needed. You have to directly call
tlb_set_page_exec instead of tlb_set_page if you want to separate
PAGE_READ from PAGE_EXEC.
#ifdef TARGET_xxx should never occur in generic code and in that
specific case, it's the Sparc target code that has to be fixed...
> Maybe this issue should be documented in qemu-tech.texi, there are
> also frequently some questions about caches.
Yes, some documentation on such tricks can never hurt !
--
J. Mayer <l_indien@magic.fr>
Never organized
next prev parent reply other threads:[~2007-11-04 7:36 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-03 20:15 [Qemu-devel] [PATCH, RFC] Disable implicit self-modifying code support for RISC CPUs Blue Swirl
2007-11-03 20:37 ` Thiemo Seufer
2007-11-03 22:13 ` Fabrice Bellard
2007-11-04 7:12 ` Blue Swirl
2007-11-04 7:36 ` J. Mayer [this message]
2007-11-04 7:49 ` Blue Swirl
2007-11-03 23:30 ` Paul Brook
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=1194161766.31210.9.camel@rapid \
--to=l_indien@magic.fr \
--cc=blauwirbel@gmail.com \
--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.