HIGHMEM now working

Tilmann Bitterberg tibit-ibm at bitterberg.de
Wed Oct 18 02:05:45 EST 2000


On Tue, 17 Oct 2000, Paul Mackerras wrote:

> Where did you get the version you tried?  I recently got a kernel
> going with highmem on a 44p/170 but I haven't pushed all the changes
> into bk.  I had to make several changes to the python code as well as
> arch/ppc/mm/init.c and my changes are somewhat different to what is
> being done in the linuxppc_2_5 tree.  My changes are available in the
> rsync tree at ppc.samba.org::linux-pmac-devel but that is

I tried test10-pre2 with the bitkeeper patch yesterday. Now I
upgraded to test0-pre3 with the bitkeeper patch. Both kernels
are only working (without HIGHMEM) when I revert the setbat
setting back to its original behaviour (0xf8000000-0xffffffff).
I understand what you did, but its not working right now.

> > Why not just lower PKMAP_BASE to 0xf6000000, will this break
> > someone?
>
> Everyone, potentially. :-)  You're lucky it worked.
>
> The way the code is at the moment, we divide up the space between the
> end of RAM and the end of the address space (0xffffffff) like this:
>
>     end of RAM ... end of RAM + VMALLOC_OFFSET:	    not used
>     end of RAM + VMALLOC_OFFSET ... ioremap_bot:    vmalloc & ioremap
>     ioremap_bot ... ioremap_base:		    early ioremaps
>     ioremap_base ... 0xffffffff:		    ioremap virt = phys

I know, that I take space away from the VMMALLOC area. But is
this a Bad Thing(TM)?

So my map look like this:
     end of RAM + VMALLOC_OFFSET ... Highmem start (0xf6000000)
     Highmem end (0xf8000000) ... ioremap_bot
     ioremap_bot ... ioremap_base
     ioremap_base (0xf8000000) ... 0xfffffffff virt=phys with BAT

> In other words all of the address space from end of RAM +
> VMALLOC_OFFSET is potentially used by ioremap (which is a bit greedy
> of it really).

OK, now I see.

> I personally think that the code in ioremap which assigns virt
> = phys for phys >= ioremap_base should go away.  For now I
> have added an extra check in the highmem case so that it only
> uses virt = phys for ioremap_base <= phys <= PKMAP_BASE.  This
> shows up one or two missing ioremaps in the chrp code which I
> have fixed in my version.

I don't like the virt=phys mapping, but it seems some drivers
depend on that.

I'll try to rsync and see if I can merge the python changes into
my stuff.

Thanks
Tilmann


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-dev mailing list