lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 7 Oct 2022 06:31:34 +0200 From: Juergen Gross <jgross@...e.com> To: Oleksandr Tyshchenko <Oleksandr_Tyshchenko@...m.com>, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>, "x86@...nel.org" <x86@...nel.org> Cc: Boris Ostrovsky <boris.ostrovsky@...cle.com>, Thomas Gleixner <tglx@...utronix.de>, Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>, Dave Hansen <dave.hansen@...ux.intel.com>, "H. Peter Anvin" <hpa@...or.com>, Stefano Stabellini <sstabellini@...nel.org>, "xen-devel@...ts.xenproject.org" <xen-devel@...ts.xenproject.org> Subject: Re: [PATCH 3/3] xen/virtio: enable grant based virtio on x86 On 06.10.22 18:04, Oleksandr Tyshchenko wrote: > > On 06.10.22 10:15, Juergen Gross wrote: > > > Hello Juergen > >> Use an x86-specific virtio_check_mem_acc_cb() for Xen in order to setup >> the correct DMA ops. >> >> Signed-off-by: Juergen Gross <jgross@...e.com> >> --- >> arch/x86/xen/enlighten_hvm.c | 2 +- >> arch/x86/xen/enlighten_pv.c | 2 +- >> drivers/xen/grant-dma-ops.c | 10 ++++++++++ >> include/xen/xen-ops.h | 1 + >> 4 files changed, 13 insertions(+), 2 deletions(-) >> >> diff --git a/arch/x86/xen/enlighten_hvm.c b/arch/x86/xen/enlighten_hvm.c >> index 1c1ac418484b..c1cd28e915a3 100644 >> --- a/arch/x86/xen/enlighten_hvm.c >> +++ b/arch/x86/xen/enlighten_hvm.c >> @@ -212,7 +212,7 @@ static void __init xen_hvm_guest_init(void) >> return; >> >> if (IS_ENABLED(CONFIG_XEN_VIRTIO_FORCE_GRANT)) >> - virtio_set_mem_acc_cb(virtio_require_restricted_mem_acc); >> + virtio_set_mem_acc_cb(xen_virtio_restricted_mem_acc); >> >> init_hvm_pv_info(); >> >> diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c >> index 9b1a58dda935..45b24c1b646a 100644 >> --- a/arch/x86/xen/enlighten_pv.c >> +++ b/arch/x86/xen/enlighten_pv.c >> @@ -112,7 +112,7 @@ static void __init xen_pv_init_platform(void) >> { >> /* PV guests can't operate virtio devices without grants. */ >> if (IS_ENABLED(CONFIG_XEN_VIRTIO)) >> - virtio_set_mem_acc_cb(virtio_require_restricted_mem_acc); >> + virtio_set_mem_acc_cb(xen_virtio_restricted_mem_acc); >> >> populate_extra_pte(fix_to_virt(FIX_PARAVIRT_BOOTMAP)); >> >> diff --git a/drivers/xen/grant-dma-ops.c b/drivers/xen/grant-dma-ops.c >> index a00112235877..60a7acc334ed 100644 >> --- a/drivers/xen/grant-dma-ops.c >> +++ b/drivers/xen/grant-dma-ops.c >> @@ -372,6 +372,16 @@ void xen_grant_setup_dma_ops(struct device *dev) >> dev_err(dev, "Cannot set up Xen grant DMA ops, retain platform DMA ops\n"); >> } >> >> +bool xen_virtio_restricted_mem_acc(struct virtio_device *dev) >> +{ >> + bool ret = xen_virtio_mem_acc(dev); > > > The grant usage is mandatory for PV guests, right? > > Then xen_virtio_mem_acc() should always return true for PV guests (I > mean even if CONFIG_XEN_VIRTIO_FORCE_GRANT is not set). Yes. > > > >> + >> + if (ret) >> + xen_grant_setup_dma_ops(dev->dev.parent); >> + >> + return ret; >> +} >> + >> MODULE_DESCRIPTION("Xen grant DMA-mapping layer"); >> MODULE_AUTHOR("Juergen Gross <jgross@...e.com>"); >> MODULE_LICENSE("GPL"); >> diff --git a/include/xen/xen-ops.h b/include/xen/xen-ops.h >> index dae0f350c678..3dd5aa936f1d 100644 >> --- a/include/xen/xen-ops.h >> +++ b/include/xen/xen-ops.h >> @@ -219,6 +219,7 @@ static inline void xen_preemptible_hcall_end(void) { } >> void xen_grant_setup_dma_ops(struct device *dev); >> bool xen_is_grant_dma_device(struct device *dev); >> bool xen_virtio_mem_acc(struct virtio_device *dev); >> +bool xen_virtio_restricted_mem_acc(struct virtio_device *dev); >> #else >> static inline void xen_grant_setup_dma_ops(struct device *dev) >> { > > > And probably static inline stub always returning false if > CONFIG_XEN_GRANT_DMA_OPS is not set. Indeed. Juergen Download attachment "OpenPGP_0xB0DE9DD628BF132F.asc" of type "application/pgp-keys" (3099 bytes) Download attachment "OpenPGP_signature" of type "application/pgp-signature" (496 bytes)
Powered by blists - more mailing lists