From: Tim Deegan <tim@xen.org>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>
Subject: Re: [PATCH 6/7] xen/arm: flush D-cache and I-cache when appropriate
Date: Wed, 24 Oct 2012 17:17:45 +0100 [thread overview]
Message-ID: <20121024161745.GG39126@ocelot.phlegethon.org> (raw)
In-Reply-To: <1351094749.18035.70.camel@zakaz.uk.xensource.com>
At 17:05 +0100 on 24 Oct (1351098349), Ian Campbell wrote:
> On Wed, 2012-10-24 at 16:59 +0100, Tim Deegan wrote:
> > > + asm volatile (
> > > + "dsb;"
> > > + STORE_CP32(0, DCCMVAC)
> > > + "isb;"
> > > + : : "r" (r0) : "memory");
> >
> > Does this need a 'memory' clobber? Can we get away with just saying it
> > consumes *va as an input? All we need to be sure of is that the
> > particular thing we're flushing has been written out; no need to stop
> > any other optimizations.
> >
> > I guess it might need to be re-cast as a macro so the compiler knows how
> > big *va is?
>
> Does it matter that this flushes the cache line containing va, which
> might be larger than whatever type va is?
That depends why you're flushing. :) From this CPU's PoV the flush
should have no effect at all, so the things to worry about are:
- the write of the thing we're trying to flush gets moved by the
compiler so it's after the flush. That case is handled by using an
input memory operand of the right size.
- something else on the cacheline that's written after the flush gets
hoisted and written before. It seems like anything that's relying on
that (?!) is on very thin ice already and ought to be using (at least)
explicit memory barriers of its own.
Another interesting case is where we're flushing a large area by
cachelines (like the new loop after relocation), so effectively we don't
know the size of the input operand (a.k.a. 1 cacheline) at compile time.
But there I think a single explicit barrier before the loop isn't too much
to ask. We could break that and the loop out into a separate function.
Tim.
next prev parent reply other threads:[~2012-10-24 16:17 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-24 15:03 [PATCH 0/7] xen/arm: run on real hardware Stefano Stabellini
2012-10-24 15:03 ` [PATCH 1/7] xen/arm: fix rank calculation in vgic_vcpu_inject_irq Stefano Stabellini
2012-10-25 9:27 ` Ian Campbell
2012-10-26 16:33 ` Stefano Stabellini
2012-10-26 16:40 ` Ian Campbell
2012-10-26 18:42 ` Stefano Stabellini
2012-10-26 20:47 ` Ian Campbell
2012-10-27 10:09 ` Tim Deegan
2012-10-27 10:44 ` Ian Campbell
2012-11-13 11:57 ` Stefano Stabellini
2012-11-13 12:00 ` Ian Campbell
2012-11-13 12:23 ` Stefano Stabellini
2012-10-24 15:03 ` [PATCH 2/7] xen/arm: setup the fixmap in head.S Stefano Stabellini
2012-10-24 15:27 ` Tim Deegan
2012-10-24 15:37 ` Stefano Stabellini
2012-10-25 9:33 ` Ian Campbell
2012-10-25 11:00 ` Stefano Stabellini
2012-10-24 15:03 ` [PATCH 3/7] pl011: set baud and clock_hz to the right defaults for Versatile Express Stefano Stabellini
2012-10-25 9:37 ` Ian Campbell
2012-10-25 10:57 ` Stefano Stabellini
2012-10-25 11:00 ` Ian Campbell
2012-10-24 15:03 ` [PATCH 4/7] xen/arm: set the SMP bit in the ACTLR register Stefano Stabellini
2012-10-25 9:52 ` Ian Campbell
2012-10-25 11:57 ` Stefano Stabellini
2012-10-25 12:04 ` Ian Campbell
2012-10-26 8:56 ` Tim Deegan
2012-10-26 8:59 ` Ian Campbell
2012-10-24 15:03 ` [PATCH 5/7] xen/arm: wake up secondary cpus Stefano Stabellini
2012-10-24 15:38 ` Tim Deegan
2012-10-24 15:59 ` Stefano Stabellini
2012-10-24 16:05 ` Tim Deegan
2012-10-25 9:59 ` Ian Campbell
2012-10-25 17:45 ` Stefano Stabellini
2012-10-26 7:30 ` Ian Campbell
2012-10-26 11:18 ` Stefano Stabellini
2012-10-26 12:16 ` Ian Campbell
2012-10-26 15:24 ` Stefano Stabellini
2012-10-26 15:32 ` Ian Campbell
2012-10-24 15:03 ` [PATCH 6/7] xen/arm: flush D-cache and I-cache when appropriate Stefano Stabellini
2012-10-24 15:59 ` Tim Deegan
2012-10-24 16:05 ` Ian Campbell
2012-10-24 16:17 ` Tim Deegan [this message]
2012-10-24 17:35 ` Stefano Stabellini
2012-10-26 9:01 ` Tim Deegan
2012-10-26 15:53 ` Stefano Stabellini
2012-10-26 15:55 ` Stefano Stabellini
2012-10-26 16:03 ` Stefano Stabellini
2012-10-26 16:55 ` Tim Deegan
2012-10-26 18:40 ` Stefano Stabellini
2012-10-27 10:44 ` Tim Deegan
2012-10-27 11:54 ` Tim Deegan
2012-10-29 9:53 ` Stefano Stabellini
2012-10-29 9:52 ` Stefano Stabellini
2012-11-13 12:01 ` Stefano Stabellini
2012-11-13 12:15 ` Tim Deegan
2012-10-26 16:45 ` Tim Deegan
2012-10-24 15:03 ` [PATCH 7/7] xen/arm: get the number of cpus from device tree Stefano Stabellini
2012-10-25 10:02 ` Ian Campbell
2012-10-24 16:02 ` [PATCH 0/7] xen/arm: run on real hardware Tim Deegan
-- strict thread matches above, loose matches on Subject: below --
2012-11-13 15:40 [PATCH v2 " Stefano Stabellini
2012-11-13 15:42 ` [PATCH 6/7] xen/arm: flush D-cache and I-cache when appropriate Stefano Stabellini
2012-11-15 10:02 ` Ian Campbell
2012-11-16 15:36 ` Stefano Stabellini
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=20121024161745.GG39126@ocelot.phlegethon.org \
--to=tim@xen.org \
--cc=Ian.Campbell@citrix.com \
--cc=Stefano.Stabellini@eu.citrix.com \
--cc=xen-devel@lists.xensource.com \
/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).