On Fri, Sep 09, 2016 at 06:17:13AM -0700, Sagar Borikar wrote: > Thanks James. > > On Fri, Sep 9, 2016 at 5:36 AM, James Hogan <james.hogan@xxxxxxxxxx> wrote: > > Hi Sagar, > > > > On Thu, Sep 08, 2016 at 08:33:57PM -0700, Sagar Borikar wrote: > >> Hello, > >> > >> I am upgrading kernel for a MIPS Interaptive CPU from 3.10.60 to > >> 3.14.10 (stable) from: > >> https://www.linux-mips.org/wiki/Malta_Linux_Repository > > > > Unfortunately that wiki page needs updating. > > > > If you're upgrading anyway, I think we'd recommend switching all the way > > to a recent mainline kernel release / stable branch, e.g. 4.4 (LTS) or > > 4.7 (and maybe update to 4.9 (LTS) when it is released or when 4.7 goes > > EOL). I think all the stuff you'll need for interAptiv should be in > > mainline now anyway. > > I see. We generally upgrade to malta repo as its maintained by mips > (imgtec). I presume you are referring to kernel.org. I think linux-mti > is having 4.1.7 as stable, right? Yeh I was referring to kernel.org. 3.14 was the last linux-mti branch. A lot of stuff in mti-3.10 got upstreamed (with a lot of changes and clean ups made along the way), and I think as a result mti-3.14 was mostly backported patches from mainline. That may explain this regression. We're now trying to focus a lot more on mainline (although we have engineering branches in that same linux-mti repository, which are more for supporting new architecture features & new cores before they've found their way into mainline). > >> The platform has non-contiguous low memory and high memory. After the > >> upgrade, highmem is not getting enabled due to max_low_pfn and > >> highend_pfn not being the same. > >> > >> The commit cce335ae47e231398269fb05fa48e0e9cbf289e0 introduced the > >> change apparently for sibyte platform. That change doesn't hold good > >> for all platforms where the high memory and low memory is sparsed. > >> > >> If I comment out only following change in arch/mips/mm/init.c, highmem > >> gets initialized properly. > >> > >> 296 if (cpu_has_dc_aliases && max_low_pfn != highend_pfn) { > >> 297 printk(KERN_WARNING "This processor doesn't support highmem." > >> 298 " %ldk highmem ignored\n", > >> 299 (highend_pfn - max_low_pfn) << (PAGE_SHIFT - 10)); > >> 300 max_zone_pfns[ZONE_HIGHMEM] = max_low_pfn; > >> 301 lastpfn = max_low_pfn; > >> 302 } > > > > I don't think we ever supported DCache aliasing + highmem in > > combination. > > Interesting. We are currently running 3.10.60 and apparently it seems > to work. Are you saying it may cause any issues? So far we haven't > seen any problems. What kind of issues it might end up into? Sorry, I was thinking of mainline. Mti-3.10 seems to have had changes which didn't make it upstream which would have made this possible, from which commit 15de36a4c3cf ("mm/highmem: make kmap cache coloring aware") was derived (which was merged for v3.17, in August 2014). There were attempts to add the MIPS support after this, but none of them made it upstream: https://patchwork.linux-mips.org/project/linux-mips/list/?state=*&q=fixes+for+cache+aliasing > > > > > If you want to use that memory your options are probably: > > - increase the page size to avoid dcache aliasing. > > Ok thanks. I would need to experiment with this but I am bit baffled > how its working in 3.10.60. > Generally, is there any reference platforms based on interaptiv which > uses highmem and dcache aliasing? I might have missed but couldn't > find any platform which comes close in both trees. Its probably possible to configure malta in such a way (4k pages, big cache, alias removal disabled in hardware, highmem). > > > - OR use EVA to increase the size of lowmem, which at the moment is a > > bit more involved. How much RAM do you have, and what does your > > physical memory map look like? > > Total memory is 2GB. memory map looks like this: > > low mem(~66MB) : > > * 0x04300000 +-----------------+ > * | Linux | > * 0x00043000 +-----------------+ > > high mem (128MB): > > * 0x28000000 +-----------------+ > * | linuxhi | > * 0x20000000 +-----------------+ > > Rest of the blocks are reserved. It should be possible to use EVA to expand lowmem to cover these two regions. Fitting in the whole 2GB would probably be a little trickier depending on other stuff (how much IO memory is needed, IOCU in use, etc). Cheers James
Attachment:
signature.asc
Description: Digital signature