• Vineet Gupta's avatar
    ARC: support HIGHMEM even without PAE40 · 26f9d5fd
    Vineet Gupta authored
    Initial HIGHMEM support on ARC was introduced for PAE40 where the low
    memory (0x8000_0000 based) and high memory (0x1_0000_0000) were
    physically contiguous. So CONFIG_FLATMEM sufficed (despite a peipheral
    hole in the middle, which wasted a bit of struct page memory, but things
    worked).
    
    However w/o PAE, highmem was not possible and we could only reach
    ~1.75GB of DDR. Now there is a use case to access ~4GB of DDR w/o PAE40
    The idea is to have low memory at canonical 0x8000_0000 and highmem
    at 0 so enire 4GB address space is available for physical addressing
    This needs additional platform/interconnect mapping to convert
    the non contiguous physical addresses into linear bus adresses.
    
    From Linux point of view, non contiguous divide means FLATMEM no
    longer works and DISCONTIGMEM is needed to track the pfns in the 2
    regions.
    
    This scheme would also work for PAE40, only better in that we don't
    waste struct page memory for the peripheral hole.
    
    The DT description will be something like
    
        memory {
            ...
            reg = <0x80000000 0x200000000   /* 512MB: lowmem */
                   0x00000000 0x10000000>;  /* 256MB: highmem */
       }
    Signed-off-by: default avatarNoam Camus <noamc@ezchip.com>
    Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
    26f9d5fd
init.c 6.06 KB