From: Jan Beulich <jbeulich@suse.com>
To: Juergen Gross <jgross@suse.com>,
Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
lkml <linux-kernel@vger.kernel.org>,
"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: [PATCH 3/6] xen/x86: adjust xen_set_fixmap()
Date: Thu, 30 Sep 2021 14:35:52 +0200 [thread overview]
Message-ID: <11fcaea2-ec17-3edd-ecdf-4cdd2d472bd0@suse.com> (raw)
In-Reply-To: <022b1a5e-4121-6bae-f07c-4ad5eac12481@suse.com>
Using __native_set_fixmap() here means guaranteed trap-and-emulate
instances the hypervisor has to deal with. Since the virtual address
covered by the to be adjusted page table entry is easy to determine (and
actually already gets obtained in a special case), simply use an
available, easy to invoke hypercall instead.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
--- a/arch/x86/xen/mmu_pv.c
+++ b/arch/x86/xen/mmu_pv.c
@@ -2010,6 +2010,7 @@ static unsigned char dummy_mapping[PAGE_
static void xen_set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t prot)
{
pte_t pte;
+ unsigned long vaddr;
phys >>= PAGE_SHIFT;
@@ -2050,15 +2051,15 @@ static void xen_set_fixmap(unsigned idx,
break;
}
- __native_set_fixmap(idx, pte);
+ vaddr = __fix_to_virt(idx);
+ if (HYPERVISOR_update_va_mapping(vaddr, pte, UVMF_INVLPG))
+ BUG();
#ifdef CONFIG_X86_VSYSCALL_EMULATION
/* Replicate changes to map the vsyscall page into the user
pagetable vsyscall mapping. */
- if (idx == VSYSCALL_PAGE) {
- unsigned long vaddr = __fix_to_virt(idx);
+ if (idx == VSYSCALL_PAGE)
set_pte_vaddr_pud(level3_user_vsyscall, vaddr, pte);
- }
#endif
}
next prev parent reply other threads:[~2021-09-30 12:36 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-30 12:33 [PATCH 0/6] xen/x86: PV boot speedup Jan Beulich
2021-09-30 12:34 ` [PATCH 1/6] xen/x86: streamline set_pte_mfn() Jan Beulich
2021-09-30 12:35 ` [PATCH 2/6] xen/x86: restore (fix) xen_set_pte_init() behavior Jan Beulich
2021-09-30 12:35 ` Jan Beulich [this message]
2021-09-30 12:36 ` [PATCH 4/6] xen/x86: adjust handling of the L3 user vsyscall special page table Jan Beulich
2021-09-30 12:36 ` [PATCH 5/6] xen/x86: there's no highmem anymore in PV mode Jan Beulich
2021-09-30 12:37 ` [PATCH 6/6] xen/x86: restrict PV Dom0 identity mapping Jan Beulich
2021-10-02 0:33 ` [PATCH 0/6] xen/x86: PV boot speedup Boris Ostrovsky
2021-10-27 13:17 ` Boris Ostrovsky
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=11fcaea2-ec17-3edd-ecdf-4cdd2d472bd0@suse.com \
--to=jbeulich@suse.com \
--cc=boris.ostrovsky@oracle.com \
--cc=jgross@suse.com \
--cc=linux-kernel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox