Benjamin Herrenschmidt <b...@kernel.crashing.org> wrote: > On Mon, 2015-02-09 at 15:43 -0800, Dave Olson wrote: > > Michael Ellerman <m...@ellerman.id.au> wrote: > > > > > On Mon, 2015-02-09 at 14:14 -0800, Dave Olson wrote: > > > > From: Dave Olson <ol...@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 ol...@cumulusnetworks.com _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev