[PATCH 1/1] powerpc: fix missing L2 cache size in /sys/devices/system/cpu
Dave Olson
olson at cumulusnetworks.com
Tue Feb 10 19:00:02 AEDT 2015
Benjamin Herrenschmidt <benh at kernel.crashing.org> wrote:
> On Mon, 2015-02-09 at 15:43 -0800, Dave Olson wrote:
> > Michael Ellerman <mpe at ellerman.id.au> wrote:
> >
> > > On Mon, 2015-02-09 at 14:14 -0800, Dave Olson wrote:
> > > > From: Dave Olson <olson at cumulusnetworks.com>
> > > >
> > > > Fix missing L2 cache size in /sys/devices/system/cpu/cpu0/cache/index2/size
> > > > This bug appears to be introduced in 2.6.29 by 93197a36a9c16a85fb24cf5a8639f7bf9af838a3.
> > > > The missing entry caused lscpu to error out on e500v2 devices, and probably others
> > > > error: cannot open /sys/devices/system/cpu/cpu0/cache/index2/size: No such file or directory
> > > > The DTS files we see use cache-size for the unified L2 cache size, not d-cache-size
> > >
> > > Can you convince me that this is not going to break other machines that have
> > > "d-cache-size" but not "cache-size"?
> >
> > I'm unable to find any dts file that uses d-cache-size for the L2
> > unified cache. All in the powerpc tree in arch/powerpc/boot/dts/*
> > are using cache-size in the L2 description for the cache size.
> >
> > As best as I can tell from looking around, this is universal.
>
> It may be universal for embedded machines using DTS in the kernel tree
> but it's definitely not true of any Mac or server machine (from which
> there is no DTS in the kernel as we get the DT from the firmware).
OK, now that I understand that's the case, I'll have to go back and
re-do the patch to handle both cache-size and d-cache-size for the
L2 cache (using whichever is present).
I don't have any power Macs to use for testing, would one of you be
willing and able to verify the patch on a power Mac?
The patch below fixes my problem, and I don't think it will break
platforms like the PowerPC Mac that use d-cache-size
=====
diff --git a/arch/powerpc/kernel/cacheinfo.c b/arch/powerpc/kernel/cacheinfo.c
index a3c684b..0d1f879 100644
--- a/arch/powerpc/kernel/cacheinfo.c
+++ b/arch/powerpc/kernel/cacheinfo.c
@@ -200,6 +200,10 @@ static int cache_size(const struct cache *cache, unsigned int *ret)
propname = cache_type_info[cache->type].size_prop;
cache_size = of_get_property(cache->ofnode, propname, NULL);
+ if (!cache_size && cache->type == CACHE_TYPE_UNIFIED) {
+ /* most embedded systems with L2 use "cache-size", allow that also */
+ cache_size = of_get_property(cache->ofnode, "cache-size", NULL);
+ }
if (!cache_size)
return -ENODEV;
=====
Thanks,
Dave Olson
olson at cumulusnetworks.com
More information about the Linuxppc-dev
mailing list