From: oleksii.kurochko@gmail.com
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
Bob Eshleman <bobbyeshleman@gmail.com>,
Connor Davis <connojdavis@gmail.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
Stefano Stabellini <sstabellini@kernel.org>,
xen-devel@lists.xenproject.org, Julien Grall <julien@xen.org>
Subject: Re: [PATCH v2 5/8] xen/riscv: introduce asm/pmap.h header
Date: Tue, 23 Jul 2024 17:36:42 +0200 [thread overview]
Message-ID: <b7e248ae79aaded532d86453520fcb4cb7a7fb3b.camel@gmail.com> (raw)
In-Reply-To: <14ffb00d-d6ba-4c18-88c1-2601a2df8a8b@suse.com>
On Tue, 2024-07-23 at 12:02 +0200, Jan Beulich wrote:
> On 23.07.2024 10:55, oleksii.kurochko@gmail.com wrote:
> > On Tue, 2024-07-23 at 10:36 +0200, Jan Beulich wrote:
> > > On 23.07.2024 10:02, Oleksii Kurochko wrote:
> > > > On Mon, Jul 22, 2024 at 7:27 PM Julien Grall <julien@xen.org>
> > > > wrote:
> > > > > > > On 22/07/2024 15:44, Oleksii Kurochko wrote:
> > > > > > /* Map a 4k page in a fixmap entry */
> > > > > > void set_fixmap(unsigned map, mfn_t mfn, unsigned int
> > > > > > flags)
> > > > > > {
> > > > > > pte_t pte;
> > > > > >
> > > > > > pte = mfn_to_xen_entry(mfn, flags);
> > > > > > pte.pte |= PTE_LEAF_DEFAULT;
> > > > > > write_pte(&xen_fixmap[pt_index(0,
> > > > > > FIXMAP_ADDR(map))],
> > > > > > pte);
> > > > >
> > > > > It would be saner to check if you are not overwriting any
> > > > > existing
> > > > > mapping as otherwise you will probably need a TLB flush.
> > > > >
> > > > > > }
> > > > > >
> > > > > > /* Remove a mapping from a fixmap entry */
> > > > > > void clear_fixmap(unsigned map)
> > > > > > {
> > > > > > pte_t pte = {0};
> > > > > > write_pte(&xen_fixmap[pt_index(0,
> > > > > > FIXMAP_ADDR(map))],
> > > > > > pte);
> > > > >
> > > > > Don't you need a TLB flush?
> > > > >
> > > > Inside write_pte() there is "sfence.vma".
> > >
> > > That's just a fence though, not a TLB flush.
> > From the privileged doc:
> > ```
> > SFENCE.VMA is also used to invalidate entries in the
> > address-translation cache associated with a hart (see Section
> > 4.3.2).
> > ...
> > The SFENCE.VMA is used to flush any local hardware caches
> > related to
> > address translation.
> > It is specified as a fence rather than a TLB flush to provide
> > cleaner
> > semantics with respect to
> > which instructions are affected by the flush operation and to
> > support a
> > wider variety of dynamic
> > caching structures and memory-management schemes. SFENCE.VMA is
> > also
> > used by higher
> > privilege levels to synchronize page table writes and the
> > address
> > translation hardware.
> > ...
> > ```
> > I read this as SFENCE.VMA is used not only for ordering of
> > load/stores,
> > but also to flush TLB ( which is a type of more general term as
> > address-translation cache, IIUIC ).
>
> Oh, I see. Kind of unexpected for an instruction of that name. Yet
> note
> how they talk about the local hart only. You need a wider scope TLB
> flush here.
Could you please clarify why it is needed wider?
Arm Xen flushed only local TLB.
RISC-V Linux kernel for fixmap also uses: local_flush_tlb_page().
~ Oleksii
next prev parent reply other threads:[~2024-07-23 15:37 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-12 16:22 [PATCH v2 0/8] RISCV device tree mapping Oleksii Kurochko
2024-07-12 16:22 ` [PATCH v6 1/8] xen/device-tree: Move Arm's setup.c bootinfo functions to common Oleksii Kurochko
2024-07-15 8:36 ` Jan Beulich
2024-07-15 10:15 ` Michal Orzel
2024-07-15 13:42 ` Oleksii
2024-07-12 16:22 ` [PATCH v6 2/8] xen/common: Move Arm's bootfdt.c " Oleksii Kurochko
2024-07-12 16:22 ` [PATCH v2 3/8] xen/riscv: enable CONFIG_HAS_DEVICE_TREE Oleksii Kurochko
2024-07-15 8:40 ` Jan Beulich
2024-07-12 16:22 ` [PATCH v2 4/8] xen/riscv: setup fixmap mapping Oleksii Kurochko
2024-07-21 8:46 ` Julien Grall
2024-07-22 14:31 ` Oleksii
2024-07-22 14:44 ` Julien Grall
2024-07-23 12:58 ` oleksii.kurochko
2024-07-23 13:32 ` Julien Grall
2024-07-23 13:27 ` oleksii.kurochko
2024-07-23 13:33 ` Julien Grall
2024-07-23 13:38 ` oleksii.kurochko
2024-07-22 12:42 ` Jan Beulich
2024-07-22 14:36 ` Oleksii
2024-07-22 15:25 ` Jan Beulich
2024-07-22 17:04 ` oleksii.kurochko
2024-07-23 13:34 ` oleksii.kurochko
2024-07-12 16:22 ` [PATCH v2 5/8] xen/riscv: introduce asm/pmap.h header Oleksii Kurochko
2024-07-21 8:51 ` Julien Grall
2024-07-22 12:58 ` Jan Beulich
2024-07-22 14:57 ` Julien Grall
2024-07-22 14:40 ` Oleksii
2024-07-22 12:54 ` Jan Beulich
2024-07-22 14:44 ` Oleksii Kurochko
2024-07-22 14:48 ` Julien Grall
2024-07-22 17:09 ` Oleksii Kurochko
2024-07-22 17:21 ` Julien Grall
2024-07-23 8:02 ` Oleksii Kurochko
2024-07-23 8:36 ` Jan Beulich
2024-07-23 8:55 ` oleksii.kurochko
2024-07-23 10:02 ` Jan Beulich
2024-07-23 15:36 ` oleksii.kurochko [this message]
2024-07-23 15:49 ` Julien Grall
2024-07-23 17:25 ` oleksii.kurochko
2024-07-23 17:28 ` oleksii.kurochko
2024-07-23 18:44 ` Julien Grall
2024-07-12 16:22 ` [PATCH v2 6/8] xen/riscv: introduce generic Xen page table handling Oleksii Kurochko
2024-07-21 9:02 ` Julien Grall
2024-07-22 6:59 ` Jan Beulich
2024-07-22 14:51 ` Oleksii
2024-07-12 16:22 ` [PATCH v2 7/8] xen/riscv: select CONFIG_GENREIC_PT Oleksii Kurochko
2024-07-12 16:22 ` [PATCH v2 8/8] xen/riscv: introduce early_fdt_map() Oleksii Kurochko
2024-07-15 8:52 ` Jan Beulich
2024-07-15 13:58 ` Oleksii
2024-07-15 14:58 ` Jan Beulich
2024-07-15 15:00 ` Jan Beulich
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=b7e248ae79aaded532d86453520fcb4cb7a7fb3b.camel@gmail.com \
--to=oleksii.kurochko@gmail.com \
--cc=alistair.francis@wdc.com \
--cc=andrew.cooper3@citrix.com \
--cc=bobbyeshleman@gmail.com \
--cc=connojdavis@gmail.com \
--cc=jbeulich@suse.com \
--cc=julien@xen.org \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.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.