[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/3] arm/arm64/xen: use C inlines for privcmd_call
On Fri, Nov 22, 2019 at 12:34:03AM +0000, Russell King - ARM Linux admin wrote: > On Thu, Nov 21, 2019 at 07:30:41PM -0500, Pavel Tatashin wrote: > > > > +#ifdef CONFIG_CPU_SW_DOMAIN_PAN > > > > +static __always_inline void uaccess_enable(void) > > > > +{ > > > > + unsigned long val = DACR_UACCESS_ENABLE; > > > > + > > > > + asm volatile("mcr p15, 0, %0, c3, c0, 0" : : "r" (val)); > > > > + isb(); > > > > +} > > > > + > > > > +static __always_inline void uaccess_disable(void) > > > > +{ > > > > + unsigned long val = DACR_UACCESS_ENABLE; > > > > Oops, should be DACR_UACCESS_DISABLE. > > > > > > + > > > > + asm volatile("mcr p15, 0, %0, c3, c0, 0" : : "r" (val)); > > > > + isb(); > > > > +} > > > > > > Rather than inventing these, why not use uaccess_save_and_enable().. > > > uaccess_restore() around the Xen call? > > > > Thank you for suggestion: uaccess_enable() and uaccess_disable() are > > common calls with arm64, so I will need them, but I think I can use > > set_domain() with DACR_UACCESS_DISABLE /DACR_UACCESS_ENABLE inside > > these inlines. > > That may be, but be very careful that you only use them in ARMv7-only > code. Using them elsewhere is unsafe as the domain register is used > for other purposes, and merely blatting over it (as your > uaccess_enable and uaccess_disable functions do) is unsafe. In fact, I'll turn that into a bit more than a suggestion. I'll make it a NAK on adding them to 32-bit ARM. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up According to speedtest.net: 11.9Mbps down 500kbps up _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |