[parisc-linux] depi?

Philipp Rumpf Philipp.H.Rumpf@mathe.stud.uni-erlangen.de
Tue, 16 Nov 1999 17:47:33 +0100


>>  - consistent with what the other ports do / what hardware does for the other
>>    ports (MIPS)
> Not consistent with what some other ports do however. That one is a non
> valid argument.

Consistent with what the widely-used ports do in 2.2 (as far as I can see).

> >  - is already implemented
> True

This actually belongs here (i.e. most of the code is stolen from other architec-
tures while the mapping at 0x0000 0000 one would have to be written AFAIK).

> >  - clear difference between user pointers and kernel pointers (this matters
> >    for debugging, not for a running system)
> You can stick your elf binaries at 0x80000000 for debugging

Sure I could.  It is going to be work though while we get it for free when
mapped at 0x8000 0000.  Furthermore this is likely to cause some meta-
debugging.

> >  - clear difference between physical addresses and kernel pointers.  Think
> >    about vmalloc for one reason this is a good thing.  Also I dislike the
> >    idea of staring at HPMCs for hours just to find out what really happened
> >    is someone forgot to set the D bit and we didn't notice until we happened
> >    to hit a vmalloc area.
> 
> Phys = Virt can help you.

It sure can help from a performance pov.

> Ultrasparc makes good use of tlb bypass bits for this.

We do have load/store word bypassing the TLB instructions, if that's what you
mean.  We also can fix one of SR1-SR3 in kernel mode to be the identical map
if some phys->virt instructions shows up heavily in profiles.

> >  - allows us to catch NULL pointers and use large pages to map the physical
> >    memory [1]
> 
> Only relevant for debug.
> Indeed on x86 with 4Mb maps enabled we dont do 
> null catches in the same way

The day the parisc port reaches the usage counts we can stop caring about
getting Oops/Panic messages (especially if they were unexpected and happened
on a system that seemed stable a long time before) I might agree to the "only".

> >  - conflicts with a rather obscure restriction of PA1.1 cache aliases.  As
> >    Frank pointed out to me, it is only guaranteed you access the same data
> >    using a physical address and a virtual address mapped to the physical if
> >    the physical address is equal to the virtual address (or you are flushing
> >    the cache lines in question).  I do not believe this to be a real problem
> >    with any existing hardware and if it is, the performance hit of the
> >    additional cache flushes may be seen as proper punishment for brain-dead
> >    hardware.
> 
> The goal is to make it work well.
> X86 is brain dead, thats why we do the 3gig/1gig game with it. 

The one point I see is how difficult it's going to be to get both mappings
to the point we have 3.75 GB physical mem / 3.75 GB virtual mem (assuming we
want to do it directly and don't want to do the x86 highmem stuff).

Extending a mapping at 0x8000 0000 to do this is non-trivial, and I would
consider an independent mapping using one of SR[1-3] as the easiest way to do
it.

A mapping at 0x0000 0000 would allow us to do this without any problems, so
this is definitely a disadvantage I missed.

Note that 3.75 GB userspace isn't a problem with either.  My A class looks
pretty packed with 768 MB RAM so I doubt you could fit more than 1.75 GB in
many pa1.1 boxes.

	Philipp Rumpf