[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/3] arm64: remove uaccess_ttbr0 asm macros from cache functions
On Thu, Nov 28, 2019 at 9:51 AM Mark Rutland <mark.rutland@xxxxxxx> wrote: > > On Wed, Nov 27, 2019 at 01:44:52PM -0500, Pavel Tatashin wrote: > > We currently duplicate the logic to enable/disable uaccess via TTBR0, > > with C functions and assembly macros. This is a maintenenace burden > > and is liable to lead to subtle bugs, so let's get rid of the assembly > > macros, and always use the C functions. This requires refactoring > > some assembly functions to have a C wrapper. > > [...] > > > +static inline int invalidate_icache_range(unsigned long start, > > + unsigned long end) > > +{ > > + int rv; > > Please make this 'ret', for consistency with other arm64 code. We only > use 'rv' in one place where it's short for "Revision and Variant", and > 'ret' is our usual name for a temporary variable used to hold a return > value. OK > > > + > > + if (cpus_have_const_cap(ARM64_HAS_CACHE_DIC)) { > > + isb(); > > + return 0; > > + } > > + uaccess_ttbr0_enable(); > > Please place a newline between these two, for consistency with other > arm64 code. OK > > > + rv = asm_invalidate_icache_range(start, end); > > + uaccess_ttbr0_disable(); > > + > > + return rv; > > +} > > + > > static inline void flush_icache_range(unsigned long start, unsigned long > > end) > > { > > __flush_icache_range(start, end); > > diff --git a/arch/arm64/mm/cache.S b/arch/arm64/mm/cache.S > > index db767b072601..a48b6dba304e 100644 > > --- a/arch/arm64/mm/cache.S > > +++ b/arch/arm64/mm/cache.S > > @@ -15,7 +15,7 @@ > > #include <asm/asm-uaccess.h> > > > > /* > > - * flush_icache_range(start,end) > > + * __asm_flush_icache_range(start,end) > > * > > * Ensure that the I and D caches are coherent within specified region. > > * This is typically used when code has been written to a memory region, > > @@ -24,11 +24,11 @@ > > * - start - virtual start address of region > > * - end - virtual end address of region > > */ > > -ENTRY(__flush_icache_range) > > +ENTRY(__asm_flush_icache_range) > > /* FALLTHROUGH */ > > > > /* > > - * __flush_cache_user_range(start,end) > > + * __asm_flush_cache_user_range(start,end) > > * > > * Ensure that the I and D caches are coherent within specified region. > > * This is typically used when code has been written to a memory region, > > @@ -37,8 +37,7 @@ ENTRY(__flush_icache_range) > > * - start - virtual start address of region > > * - end - virtual end address of region > > */ > > -ENTRY(__flush_cache_user_range) > > - uaccess_ttbr0_enable x2, x3, x4 > > +ENTRY(__asm_flush_cache_user_range) > > alternative_if ARM64_HAS_CACHE_IDC > > It's unfortunate that we pulled the IDC alternative out for > invalidate_icache_range(), but not here. Good point. I will fix that in a separate patch. Thank you, Pasha _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |