* [PATCH v2 1/3] arm64: fix typo in I-cache policy detection
@ 2014-08-05 9:25 Ard Biesheuvel
2014-08-05 9:25 ` [PATCH v2 2/3] arm64: add helper functions to read I-cache attributes Ard Biesheuvel
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Ard Biesheuvel @ 2014-08-05 9:25 UTC (permalink / raw)
To: linux-arm-kernel
This removes an unfortunately placed semi-colon resulting in all instruction
caches being classified as AIVIVT.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
---
v2: add ack
arch/arm64/kernel/cpuinfo.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c
index f798f66634af..177169623026 100644
--- a/arch/arm64/kernel/cpuinfo.c
+++ b/arch/arm64/kernel/cpuinfo.c
@@ -49,7 +49,7 @@ static void cpuinfo_detect_icache_policy(struct cpuinfo_arm64 *info)
if (l1ip != ICACHE_POLICY_PIPT)
set_bit(ICACHEF_ALIASING, &__icache_flags);
- if (l1ip == ICACHE_POLICY_AIVIVT);
+ if (l1ip == ICACHE_POLICY_AIVIVT)
set_bit(ICACHEF_AIVIVT, &__icache_flags);
pr_info("Detected %s I-cache on CPU%d\n", icache_policy_str[l1ip], cpu);
--
1.8.3.2
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v2 2/3] arm64: add helper functions to read I-cache attributes 2014-08-05 9:25 [PATCH v2 1/3] arm64: fix typo in I-cache policy detection Ard Biesheuvel @ 2014-08-05 9:25 ` Ard Biesheuvel 2014-08-06 13:00 ` Will Deacon 2014-08-05 9:25 ` [PATCH v2 3/3] arm64: don't flag non-aliasing VIPT I-caches as aliasing Ard Biesheuvel 2014-08-06 12:43 ` [PATCH v2 1/3] arm64: fix typo in I-cache policy detection Will Deacon 2 siblings, 1 reply; 9+ messages in thread From: Ard Biesheuvel @ 2014-08-05 9:25 UTC (permalink / raw) To: linux-arm-kernel This adds helper functions and #defines to <asm/cachetype.h> to read the line size and the number of sets from the level 1 instruction cache. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> --- v2: put () around macro args, use 64-bit types for asm() mrs/msr calls arch/arm64/include/asm/cachetype.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/arch/arm64/include/asm/cachetype.h b/arch/arm64/include/asm/cachetype.h index 7a2e0762cb40..e59c0c25b307 100644 --- a/arch/arm64/include/asm/cachetype.h +++ b/arch/arm64/include/asm/cachetype.h @@ -39,6 +39,34 @@ extern unsigned long __icache_flags; +#define CCSIDR_EL1_LINESIZE_MASK 0x7 +#define CCSIDR_EL1_LINESIZE(x) ((x) & CCSIDR_EL1_LINESIZE_MASK) + +#define CCSIDR_EL1_NUMSETS_SHIFT 13 +#define CCSIDR_EL1_NUMSETS_MASK (0x7fff << CCSIDR_EL1_NUMSETS_SHIFT) +#define CCSIDR_EL1_NUMSETS(x) \ + (((x) & CCSIDR_EL1_NUMSETS_MASK) >> CCSIDR_EL1_NUMSETS_SHIFT) + +static inline __attribute_const__ u64 icache_get_ccsidr(void) +{ + u64 ccsidr; + + /* Select L1 I-cache and read its size ID register */ + asm("msr csselr_el1, %1; isb; mrs %0, ccsidr_el1" + : "=r"(ccsidr) : "r"(1L)); + return ccsidr; +} + +static inline int icache_get_linesize(void) +{ + return 16 << CCSIDR_EL1_LINESIZE(icache_get_ccsidr()); +} + +static inline int icache_get_numsets(void) +{ + return 1 + CCSIDR_EL1_NUMSETS(icache_get_ccsidr()); +} + /* * Whilst the D-side always behaves as PIPT on AArch64, aliasing is * permitted in the I-cache. -- 1.8.3.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 2/3] arm64: add helper functions to read I-cache attributes 2014-08-05 9:25 ` [PATCH v2 2/3] arm64: add helper functions to read I-cache attributes Ard Biesheuvel @ 2014-08-06 13:00 ` Will Deacon 2014-08-06 13:17 ` Ard Biesheuvel 0 siblings, 1 reply; 9+ messages in thread From: Will Deacon @ 2014-08-06 13:00 UTC (permalink / raw) To: linux-arm-kernel On Tue, Aug 05, 2014 at 10:25:56AM +0100, Ard Biesheuvel wrote: > This adds helper functions and #defines to <asm/cachetype.h> to read the > line size and the number of sets from the level 1 instruction cache. > > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > --- > v2: put () around macro args, use 64-bit types for asm() mrs/msr calls > > arch/arm64/include/asm/cachetype.h | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/arch/arm64/include/asm/cachetype.h b/arch/arm64/include/asm/cachetype.h > index 7a2e0762cb40..e59c0c25b307 100644 > --- a/arch/arm64/include/asm/cachetype.h > +++ b/arch/arm64/include/asm/cachetype.h > @@ -39,6 +39,34 @@ > > extern unsigned long __icache_flags; > > +#define CCSIDR_EL1_LINESIZE_MASK 0x7 > +#define CCSIDR_EL1_LINESIZE(x) ((x) & CCSIDR_EL1_LINESIZE_MASK) > + > +#define CCSIDR_EL1_NUMSETS_SHIFT 13 > +#define CCSIDR_EL1_NUMSETS_MASK (0x7fff << CCSIDR_EL1_NUMSETS_SHIFT) > +#define CCSIDR_EL1_NUMSETS(x) \ > + (((x) & CCSIDR_EL1_NUMSETS_MASK) >> CCSIDR_EL1_NUMSETS_SHIFT) > + > +static inline __attribute_const__ u64 icache_get_ccsidr(void) > +{ > + u64 ccsidr; > + > + /* Select L1 I-cache and read its size ID register */ > + asm("msr csselr_el1, %1; isb; mrs %0, ccsidr_el1" > + : "=r"(ccsidr) : "r"(1L)); > + return ccsidr; Is it worth having a WARN_ON(preemptible()) here? Will ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 2/3] arm64: add helper functions to read I-cache attributes 2014-08-06 13:00 ` Will Deacon @ 2014-08-06 13:17 ` Ard Biesheuvel 2014-08-06 13:27 ` Ard Biesheuvel 0 siblings, 1 reply; 9+ messages in thread From: Ard Biesheuvel @ 2014-08-06 13:17 UTC (permalink / raw) To: linux-arm-kernel On 6 August 2014 15:00, Will Deacon <will.deacon@arm.com> wrote: > On Tue, Aug 05, 2014 at 10:25:56AM +0100, Ard Biesheuvel wrote: >> This adds helper functions and #defines to <asm/cachetype.h> to read the >> line size and the number of sets from the level 1 instruction cache. >> >> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> >> --- >> v2: put () around macro args, use 64-bit types for asm() mrs/msr calls >> >> arch/arm64/include/asm/cachetype.h | 28 ++++++++++++++++++++++++++++ >> 1 file changed, 28 insertions(+) >> >> diff --git a/arch/arm64/include/asm/cachetype.h b/arch/arm64/include/asm/cachetype.h >> index 7a2e0762cb40..e59c0c25b307 100644 >> --- a/arch/arm64/include/asm/cachetype.h >> +++ b/arch/arm64/include/asm/cachetype.h >> @@ -39,6 +39,34 @@ >> >> extern unsigned long __icache_flags; >> >> +#define CCSIDR_EL1_LINESIZE_MASK 0x7 >> +#define CCSIDR_EL1_LINESIZE(x) ((x) & CCSIDR_EL1_LINESIZE_MASK) >> + >> +#define CCSIDR_EL1_NUMSETS_SHIFT 13 >> +#define CCSIDR_EL1_NUMSETS_MASK (0x7fff << CCSIDR_EL1_NUMSETS_SHIFT) >> +#define CCSIDR_EL1_NUMSETS(x) \ >> + (((x) & CCSIDR_EL1_NUMSETS_MASK) >> CCSIDR_EL1_NUMSETS_SHIFT) >> + >> +static inline __attribute_const__ u64 icache_get_ccsidr(void) >> +{ >> + u64 ccsidr; >> + >> + /* Select L1 I-cache and read its size ID register */ >> + asm("msr csselr_el1, %1; isb; mrs %0, ccsidr_el1" >> + : "=r"(ccsidr) : "r"(1L)); >> + return ccsidr; > > Is it worth having a WARN_ON(preemptible()) here? > Sure, why not. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 2/3] arm64: add helper functions to read I-cache attributes 2014-08-06 13:17 ` Ard Biesheuvel @ 2014-08-06 13:27 ` Ard Biesheuvel 2014-08-06 14:34 ` Will Deacon 0 siblings, 1 reply; 9+ messages in thread From: Ard Biesheuvel @ 2014-08-06 13:27 UTC (permalink / raw) To: linux-arm-kernel On 6 August 2014 15:17, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > On 6 August 2014 15:00, Will Deacon <will.deacon@arm.com> wrote: >> On Tue, Aug 05, 2014 at 10:25:56AM +0100, Ard Biesheuvel wrote: >>> This adds helper functions and #defines to <asm/cachetype.h> to read the >>> line size and the number of sets from the level 1 instruction cache. >>> >>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> >>> --- >>> v2: put () around macro args, use 64-bit types for asm() mrs/msr calls >>> >>> arch/arm64/include/asm/cachetype.h | 28 ++++++++++++++++++++++++++++ >>> 1 file changed, 28 insertions(+) >>> >>> diff --git a/arch/arm64/include/asm/cachetype.h b/arch/arm64/include/asm/cachetype.h >>> index 7a2e0762cb40..e59c0c25b307 100644 >>> --- a/arch/arm64/include/asm/cachetype.h >>> +++ b/arch/arm64/include/asm/cachetype.h >>> @@ -39,6 +39,34 @@ >>> >>> extern unsigned long __icache_flags; >>> >>> +#define CCSIDR_EL1_LINESIZE_MASK 0x7 >>> +#define CCSIDR_EL1_LINESIZE(x) ((x) & CCSIDR_EL1_LINESIZE_MASK) >>> + >>> +#define CCSIDR_EL1_NUMSETS_SHIFT 13 >>> +#define CCSIDR_EL1_NUMSETS_MASK (0x7fff << CCSIDR_EL1_NUMSETS_SHIFT) >>> +#define CCSIDR_EL1_NUMSETS(x) \ >>> + (((x) & CCSIDR_EL1_NUMSETS_MASK) >> CCSIDR_EL1_NUMSETS_SHIFT) >>> + >>> +static inline __attribute_const__ u64 icache_get_ccsidr(void) >>> +{ >>> + u64 ccsidr; >>> + >>> + /* Select L1 I-cache and read its size ID register */ >>> + asm("msr csselr_el1, %1; isb; mrs %0, ccsidr_el1" >>> + : "=r"(ccsidr) : "r"(1L)); >>> + return ccsidr; >> >> Is it worth having a WARN_ON(preemptible()) here? >> > > Sure, why not. ... if it weren't for the fact that this triggers recursive header inclusion hell CC kernel/bounds.s In file included from /home/ard/linux-2.6/include/asm-generic/preempt.h:4:0, from arch/arm64/include/generated/asm/preempt.h:1, from /home/ard/linux-2.6/include/linux/preempt.h:18, from /home/ard/linux-2.6/arch/arm64/include/asm/cachetype.h:21, from /home/ard/linux-2.6/arch/arm64/include/asm/cache.h:19, from /home/ard/linux-2.6/include/linux/cache.h:5, from /home/ard/linux-2.6/include/linux/printk.h:8, from /home/ard/linux-2.6/include/linux/kernel.h:13, from /home/ard/linux-2.6/include/asm-generic/bug.h:13, from arch/arm64/include/generated/asm/bug.h:1, from /home/ard/linux-2.6/include/linux/bug.h:4, from /home/ard/linux-2.6/include/linux/page-flags.h:9, from /home/ard/linux-2.6/kernel/bounds.c:9: /home/ard/linux-2.6/include/linux/thread_info.h: In function ?set_restore_sigmask?: /home/ard/linux-2.6/include/linux/thread_info.h:128:2: error: implicit declaration of function ?WARN_ON? [-Werror=implicit-function-declaration] WARN_ON(!test_thread_flag(TIF_SIGPENDING)); ^ In file included from /home/ard/linux-2.6/arch/arm64/include/asm/cache.h:19:0, from /home/ard/linux-2.6/include/linux/cache.h:5, from /home/ard/linux-2.6/include/linux/printk.h:8, from /home/ard/linux-2.6/include/linux/kernel.h:13, from /home/ard/linux-2.6/include/asm-generic/bug.h:13, from arch/arm64/include/generated/asm/bug.h:1, from /home/ard/linux-2.6/include/linux/bug.h:4, from /home/ard/linux-2.6/include/linux/page-flags.h:9, from /home/ard/linux-2.6/kernel/bounds.c:9: /home/ard/linux-2.6/arch/arm64/include/asm/cachetype.h: In function ?icache_get_ccsidr?: /home/ard/linux-2.6/arch/arm64/include/asm/cachetype.h:59:2: error: implicit declaration of function ?preemptible? [-Werror=implicit-function-declaration] WARN_ON(preemptible()); ^ i.e., linux/bug,h and linux/preempt.h already implicitly #include cachetype.h, so including the former from the latter to import the declaration of WARN_ON() and/or preemptible respectively produces this error. -- Ard. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 2/3] arm64: add helper functions to read I-cache attributes 2014-08-06 13:27 ` Ard Biesheuvel @ 2014-08-06 14:34 ` Will Deacon 2014-08-06 14:38 ` Ard Biesheuvel 0 siblings, 1 reply; 9+ messages in thread From: Will Deacon @ 2014-08-06 14:34 UTC (permalink / raw) To: linux-arm-kernel On Wed, Aug 06, 2014 at 02:27:55PM +0100, Ard Biesheuvel wrote: > On 6 August 2014 15:17, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > > On 6 August 2014 15:00, Will Deacon <will.deacon@arm.com> wrote: > >> On Tue, Aug 05, 2014 at 10:25:56AM +0100, Ard Biesheuvel wrote: > >>> This adds helper functions and #defines to <asm/cachetype.h> to read the > >>> line size and the number of sets from the level 1 instruction cache. > >>> > >>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > >>> --- [...] > >>> +static inline __attribute_const__ u64 icache_get_ccsidr(void) > >>> +{ > >>> + u64 ccsidr; > >>> + > >>> + /* Select L1 I-cache and read its size ID register */ > >>> + asm("msr csselr_el1, %1; isb; mrs %0, ccsidr_el1" > >>> + : "=r"(ccsidr) : "r"(1L)); > >>> + return ccsidr; > >> > >> Is it worth having a WARN_ON(preemptible()) here? > >> > > > > Sure, why not. > > ... if it weren't for the fact that this triggers recursive header > inclusion hell > > CC kernel/bounds.s > In file included from /home/ard/linux-2.6/include/asm-generic/preempt.h:4:0, > from arch/arm64/include/generated/asm/preempt.h:1, > from /home/ard/linux-2.6/include/linux/preempt.h:18, > from /home/ard/linux-2.6/arch/arm64/include/asm/cachetype.h:21, [...] > i.e., linux/bug,h and linux/preempt.h already implicitly #include > cachetype.h, so including the former from the latter to import the > declaration of WARN_ON() and/or preemptible respectively produces this > error. Damn, that's a real shame. I'm always dubious about adding code like this which isn't obviously broken from preemptible context when you're just looking at the function name. Ho-hum. Will ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 2/3] arm64: add helper functions to read I-cache attributes 2014-08-06 14:34 ` Will Deacon @ 2014-08-06 14:38 ` Ard Biesheuvel 0 siblings, 0 replies; 9+ messages in thread From: Ard Biesheuvel @ 2014-08-06 14:38 UTC (permalink / raw) To: linux-arm-kernel On 6 August 2014 16:34, Will Deacon <will.deacon@arm.com> wrote: > On Wed, Aug 06, 2014 at 02:27:55PM +0100, Ard Biesheuvel wrote: >> On 6 August 2014 15:17, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: >> > On 6 August 2014 15:00, Will Deacon <will.deacon@arm.com> wrote: >> >> On Tue, Aug 05, 2014 at 10:25:56AM +0100, Ard Biesheuvel wrote: >> >>> This adds helper functions and #defines to <asm/cachetype.h> to read the >> >>> line size and the number of sets from the level 1 instruction cache. >> >>> >> >>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> >> >>> --- > > [...] > >> >>> +static inline __attribute_const__ u64 icache_get_ccsidr(void) >> >>> +{ >> >>> + u64 ccsidr; >> >>> + >> >>> + /* Select L1 I-cache and read its size ID register */ >> >>> + asm("msr csselr_el1, %1; isb; mrs %0, ccsidr_el1" >> >>> + : "=r"(ccsidr) : "r"(1L)); >> >>> + return ccsidr; >> >> >> >> Is it worth having a WARN_ON(preemptible()) here? >> >> >> > >> > Sure, why not. >> >> ... if it weren't for the fact that this triggers recursive header >> inclusion hell >> >> CC kernel/bounds.s >> In file included from /home/ard/linux-2.6/include/asm-generic/preempt.h:4:0, >> from arch/arm64/include/generated/asm/preempt.h:1, >> from /home/ard/linux-2.6/include/linux/preempt.h:18, >> from /home/ard/linux-2.6/arch/arm64/include/asm/cachetype.h:21, > > [...] > >> i.e., linux/bug,h and linux/preempt.h already implicitly #include >> cachetype.h, so including the former from the latter to import the >> declaration of WARN_ON() and/or preemptible respectively produces this >> error. > > Damn, that's a real shame. I'm always dubious about adding code like this > which isn't obviously broken from preemptible context when you're just > looking at the function name. > > Ho-hum. > Moving icache_get_ccsidr() into cpuinfo.c does work, as in the patch below diff --git a/arch/arm64/include/asm/cachetype.h b/arch/arm64/include/asm/cachetype.h index 7a2e0762cb40..4c631a0a3609 100644 --- a/arch/arm64/include/asm/cachetype.h +++ b/arch/arm64/include/asm/cachetype.h @@ -39,6 +39,26 @@ extern unsigned long __icache_flags; +#define CCSIDR_EL1_LINESIZE_MASK 0x7 +#define CCSIDR_EL1_LINESIZE(x) ((x) & CCSIDR_EL1_LINESIZE_MASK) + +#define CCSIDR_EL1_NUMSETS_SHIFT 13 +#define CCSIDR_EL1_NUMSETS_MASK (0x7fff << CCSIDR_EL1_NUMSETS_SHIFT) +#define CCSIDR_EL1_NUMSETS(x) \ + (((x) & CCSIDR_EL1_NUMSETS_MASK) >> CCSIDR_EL1_NUMSETS_SHIFT) + +extern u64 __attribute_const__ icache_get_ccsidr(void); + +static inline int icache_get_linesize(void) +{ + return 16 << CCSIDR_EL1_LINESIZE(icache_get_ccsidr()); +} + +static inline int icache_get_numsets(void) +{ + return 1 + CCSIDR_EL1_NUMSETS(icache_get_ccsidr()); +} + /* * Whilst the D-side always behaves as PIPT on AArch64, aliasing is * permitted in the I-cache. diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c index f798f66634af..319255ff536d 100644 --- a/arch/arm64/kernel/cpuinfo.c +++ b/arch/arm64/kernel/cpuinfo.c @@ -20,8 +20,10 @@ #include <asm/cputype.h> #include <linux/bitops.h> +#include <linux/bug.h> #include <linux/init.h> #include <linux/kernel.h> +#include <linux/preempt.h> #include <linux/printk.h> #include <linux/smp.h> @@ -190,3 +192,15 @@ void __init cpuinfo_store_boot_cpu(void) boot_cpu_data = *info; } + +u64 __attribute_const__ icache_get_ccsidr(void) +{ + u64 ccsidr; + + WARN_ON(preemptible()); + + /* Select L1 I-cache and read its size ID register */ + asm("msr csselr_el1, %1; isb; mrs %0, ccsidr_el1" + : "=r"(ccsidr) : "r"(1L)); + return ccsidr; +} ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 3/3] arm64: don't flag non-aliasing VIPT I-caches as aliasing 2014-08-05 9:25 [PATCH v2 1/3] arm64: fix typo in I-cache policy detection Ard Biesheuvel 2014-08-05 9:25 ` [PATCH v2 2/3] arm64: add helper functions to read I-cache attributes Ard Biesheuvel @ 2014-08-05 9:25 ` Ard Biesheuvel 2014-08-06 12:43 ` [PATCH v2 1/3] arm64: fix typo in I-cache policy detection Will Deacon 2 siblings, 0 replies; 9+ messages in thread From: Ard Biesheuvel @ 2014-08-05 9:25 UTC (permalink / raw) To: linux-arm-kernel VIPT caches are non-aliasing if the index is derived from address bits that are always equal between VA and PA. Classifying these as aliasing results in unnecessary flushing which may hurt performance. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> --- arch/arm64/kernel/cpuinfo.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c index 177169623026..eb993cbdacf7 100644 --- a/arch/arm64/kernel/cpuinfo.c +++ b/arch/arm64/kernel/cpuinfo.c @@ -47,7 +47,13 @@ static void cpuinfo_detect_icache_policy(struct cpuinfo_arm64 *info) unsigned int cpu = smp_processor_id(); u32 l1ip = CTR_L1IP(info->reg_ctr); - if (l1ip != ICACHE_POLICY_PIPT) + /* + * VIPT caches are non-aliasing if the VA always equals the PA in all + * bit positions that are covered by the index, i.e., if num_sets_shift + * is less than or equal to PAGE_SHIFT minus line_size_shift. + */ + if (l1ip != ICACHE_POLICY_PIPT && !(l1ip == ICACHE_POLICY_VIPT && + icache_get_linesize() * icache_get_numsets() <= PAGE_SIZE)) set_bit(ICACHEF_ALIASING, &__icache_flags); if (l1ip == ICACHE_POLICY_AIVIVT) set_bit(ICACHEF_AIVIVT, &__icache_flags); -- 1.8.3.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 1/3] arm64: fix typo in I-cache policy detection 2014-08-05 9:25 [PATCH v2 1/3] arm64: fix typo in I-cache policy detection Ard Biesheuvel 2014-08-05 9:25 ` [PATCH v2 2/3] arm64: add helper functions to read I-cache attributes Ard Biesheuvel 2014-08-05 9:25 ` [PATCH v2 3/3] arm64: don't flag non-aliasing VIPT I-caches as aliasing Ard Biesheuvel @ 2014-08-06 12:43 ` Will Deacon 2 siblings, 0 replies; 9+ messages in thread From: Will Deacon @ 2014-08-06 12:43 UTC (permalink / raw) To: linux-arm-kernel On Tue, Aug 05, 2014 at 10:25:55AM +0100, Ard Biesheuvel wrote: > This removes an unfortunately placed semi-colon resulting in all instruction > caches being classified as AIVIVT. > > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > Acked-by: Mark Rutland <mark.rutland@arm.com> > --- > v2: add ack Cheers Ard, I'll take this patch into our fixes branch. Will ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2014-08-06 14:38 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-08-05 9:25 [PATCH v2 1/3] arm64: fix typo in I-cache policy detection Ard Biesheuvel 2014-08-05 9:25 ` [PATCH v2 2/3] arm64: add helper functions to read I-cache attributes Ard Biesheuvel 2014-08-06 13:00 ` Will Deacon 2014-08-06 13:17 ` Ard Biesheuvel 2014-08-06 13:27 ` Ard Biesheuvel 2014-08-06 14:34 ` Will Deacon 2014-08-06 14:38 ` Ard Biesheuvel 2014-08-05 9:25 ` [PATCH v2 3/3] arm64: don't flag non-aliasing VIPT I-caches as aliasing Ard Biesheuvel 2014-08-06 12:43 ` [PATCH v2 1/3] arm64: fix typo in I-cache policy detection Will Deacon
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.