diff for duplicates of <20180327173613.GI18435@arm.com> diff --git a/a/1.txt b/N1/1.txt index fd765d3..0d2fc20 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -12,24 +12,24 @@ On Tue, Mar 27, 2018 at 09:53:16AM -0500, Shanker Donthineni wrote: > >> > >> Signed-off-by: Philip Elcan <pelcan@codeaurora.org> > >> --- -> >> ? arch/arm64/include/asm/tlbflush.h | 23 ++++++++++++++++------- -> >> ? 1 file changed, 16 insertions(+), 7 deletions(-) +> >> arch/arm64/include/asm/tlbflush.h | 23 ++++++++++++++++------- +> >> 1 file changed, 16 insertions(+), 7 deletions(-) > >> > >> diff --git a/arch/arm64/include/asm/tlbflush.h b/arch/arm64/include/asm/tlbflush.h > >> index 9e82dd7..b1205e9 100644 > >> --- a/arch/arm64/include/asm/tlbflush.h > >> +++ b/arch/arm64/include/asm/tlbflush.h > >> @@ -60,6 +60,15 @@ -> >> ????????? __tlbi(op, (arg) | USER_ASID_FLAG);??????????????? \ -> >> ? } while (0) -> >> ? +/* This macro creates a properly formatted VA operand for the TLBI */ -> >> +#define __TLBI_VADDR(addr, asid)??????????????? \ -> >> +??? ({??????????????????????????? \ -> >> +??????? unsigned long __ta = (addr) >> 12;??????? \ -> >> +??????? __ta &= GENMASK_ULL(43, 0);??????????? \ -> >> +??????? __ta |= (unsigned long)(asid) << 48;??????? \ -> >> +??????? __ta;??????????????????????? \ -> >> +??? }) +> >> __tlbi(op, (arg) | USER_ASID_FLAG); \ +> >> } while (0) +> >> +/* This macro creates a properly formatted VA operand for the TLBI */ +> >> +#define __TLBI_VADDR(addr, asid) \ +> >> + ({ \ +> >> + unsigned long __ta = (addr) >> 12; \ +> >> + __ta &= GENMASK_ULL(43, 0); \ +> >> + __ta |= (unsigned long)(asid) << 48; \ +> >> + __ta; \ +> >> + }) > > > > I'd be inclined to make this a static inline function rather than a > > macro, since it doesn't need to do any wacky type-dodging, but either @@ -43,12 +43,12 @@ On Tue, Mar 27, 2018 at 09:53:16AM -0500, Shanker Donthineni wrote: [...] > >> @@ -154,8 +163,8 @@ static inline void __flush_tlb_range(struct vm_area_struct *vma, -> >> ????????? return; -> >> ????? } -> >> ? -??? start = asid | (start >> 12); -> >> -??? end = asid | (end >> 12); -> >> +??? start = __TLBI_VADDR(start, asid); -> >> +??? end = __TLBI_VADDR(end, asid); +> >> return; +> >> } +> >> - start = asid | (start >> 12); +> >> - end = asid | (end >> 12); +> >> + start = __TLBI_VADDR(start, asid); +> >> + end = __TLBI_VADDR(end, asid); Can you test this bit too, please? ;) diff --git a/a/content_digest b/N1/content_digest index add6a8d..a71db81 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,10 +1,17 @@ "ref\01522120877-9136-1-git-send-email-pelcan@codeaurora.org\0" "ref\0985a0edd-e388-dade-8824-30cc58a236f3@arm.com\0" "ref\056b560a5-6e57-8e01-32ca-9d3c95ccd2e5@codeaurora.org\0" - "From\0will.deacon@arm.com (Will Deacon)\0" - "Subject\0[PATCH V2] arm64: tlbflush: avoid writing RES0 bits\0" + "From\0Will Deacon <will.deacon@arm.com>\0" + "Subject\0Re: [PATCH V2] arm64: tlbflush: avoid writing RES0 bits\0" "Date\0Tue, 27 Mar 2018 18:36:13 +0100\0" - "To\0linux-arm-kernel@lists.infradead.org\0" + "To\0Shanker Donthineni <shankerd@codeaurora.org>\0" + "Cc\0Robin Murphy <robin.murphy@arm.com>" + Philip Elcan <pelcan@codeaurora.org> + linux-arm-kernel@lists.infradead.org + Catalin Marinas <catalin.marinas@arm.com> + Mark Rutland <mark.rutland@arm.com> + linux-kernel@vger.kernel.org + " Thomas Speier <tspeier@codeaurora.org>\0" "\00:1\0" "b\0" "Hi Shanker,\n" @@ -21,24 +28,24 @@ "> >>\n" "> >> Signed-off-by: Philip Elcan <pelcan@codeaurora.org>\n" "> >> ---\n" - "> >> ? arch/arm64/include/asm/tlbflush.h | 23 ++++++++++++++++-------\n" - "> >> ? 1 file changed, 16 insertions(+), 7 deletions(-)\n" + "> >> \302\240 arch/arm64/include/asm/tlbflush.h | 23 ++++++++++++++++-------\n" + "> >> \302\240 1 file changed, 16 insertions(+), 7 deletions(-)\n" "> >>\n" "> >> diff --git a/arch/arm64/include/asm/tlbflush.h b/arch/arm64/include/asm/tlbflush.h\n" "> >> index 9e82dd7..b1205e9 100644\n" "> >> --- a/arch/arm64/include/asm/tlbflush.h\n" "> >> +++ b/arch/arm64/include/asm/tlbflush.h\n" "> >> @@ -60,6 +60,15 @@\n" - "> >> ????????? __tlbi(op, (arg) | USER_ASID_FLAG);??????????????? \\\n" - "> >> ? } while (0)\n" - "> >> ? +/* This macro creates a properly formatted VA operand for the TLBI */\n" - "> >> +#define __TLBI_VADDR(addr, asid)??????????????? \\\n" - "> >> +??? ({??????????????????????????? \\\n" - "> >> +??????? unsigned long __ta = (addr) >> 12;??????? \\\n" - "> >> +??????? __ta &= GENMASK_ULL(43, 0);??????????? \\\n" - "> >> +??????? __ta |= (unsigned long)(asid) << 48;??????? \\\n" - "> >> +??????? __ta;??????????????????????? \\\n" - "> >> +??? })\n" + "> >> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 __tlbi(op, (arg) | USER_ASID_FLAG);\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \\\n" + "> >> \302\240 } while (0)\n" + "> >> \302\240 +/* This macro creates a properly formatted VA operand for the TLBI */\n" + "> >> +#define __TLBI_VADDR(addr, asid)\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \\\n" + "> >> +\302\240\302\240\302\240 ({\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \\\n" + "> >> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240 unsigned long __ta = (addr) >> 12;\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \\\n" + "> >> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240 __ta &= GENMASK_ULL(43, 0);\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \\\n" + "> >> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240 __ta |= (unsigned long)(asid) << 48;\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \\\n" + "> >> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240 __ta;\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \\\n" + "> >> +\302\240\302\240\302\240 })\n" "> > \n" "> > I'd be inclined to make this a static inline function rather than a\n" "> > macro, since it doesn't need to do any wacky type-dodging, but either\n" @@ -52,15 +59,15 @@ "[...]\n" "\n" "> >> @@ -154,8 +163,8 @@ static inline void __flush_tlb_range(struct vm_area_struct *vma,\n" - "> >> ????????? return;\n" - "> >> ????? }\n" - "> >> ? -??? start = asid | (start >> 12);\n" - "> >> -??? end = asid | (end >> 12);\n" - "> >> +??? start = __TLBI_VADDR(start, asid);\n" - "> >> +??? end = __TLBI_VADDR(end, asid);\n" + "> >> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 return;\n" + "> >> \302\240\302\240\302\240\302\240\302\240 }\n" + "> >> \302\240 -\302\240\302\240\302\240 start = asid | (start >> 12);\n" + "> >> -\302\240\302\240\302\240 end = asid | (end >> 12);\n" + "> >> +\302\240\302\240\302\240 start = __TLBI_VADDR(start, asid);\n" + "> >> +\302\240\302\240\302\240 end = __TLBI_VADDR(end, asid);\n" "\n" "Can you test this bit too, please? ;)\n" "\n" Will -2c97a2f229855c0d373645a92ba8fc43b658ebe687c18f97c48501093a9b89a9 +7405db7aa3fb29bdc5c77341decbe9ad6ad4dabfa74f91dcd53ae2310ea35feb
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.