On Thu, May 20, 2021 at 09:40:57PM -0400, George Koehler wrote:
[..]
> Those of you who applied the older diff will probably get a conflict
> from cvs update, like "C sys/arch/powerpc/powerpc/lock_machdep.c".
> I would either clean it like "cvs up -C lock_machdep.c", or just rm(1)
> it and cvs(1) up again.
>
> I have no trouble fitting the src tree into the default 2G /usr/src.
Ditto. It even has enough space to have the 6.9 src.tar.gz and sys.tar.gz in
there as well.
> > As far as the 2GB memory limit in macppc is concerned I had to search a
> > little
> > for this proof, I think I have found the right spot but it may turn out the
> > wrong spot if someone more experienced with kernel programming reads this.
> > I have a G5 btw that has 4GB of RAM and only 2GB get detected. Now for the
> > source.. macppc is really a sub-arch of powerpc (just like octeon is a
> > sub-arch
> > of mips64) and in powerpc in the pmap.c routines I found this at the bottom
> > of
> > /usr/src/sys/arch/powerpc/powerpc/pmap.c line 1612: function
> > pmap_bootstrap():
> >
> > for (mp = pmap_avail; mp->size; mp++) {
> > if (mp->start > 0x80000000)
> > continue;
> > if (mp->start + mp->size > 0x80000000)
> > mp->size = 0x80000000 - mp->start;
> > uvm_page_physload(atop(mp->start), atop(mp->start+mp->size),
> > atop(mp->start), atop(mp->start+mp->size), 0);
> > }
>
> That's part of it. /sys/arch/macppc/macppc/ofw_machdep.c line 174 is
> another part. It ignores RAM ">= 1ULL << 32" which is outside the
> 32-bit range. My G5 has 5G of RAM split this way:
>
> 2G RAM at physical addresses 0x0000_0000 .. 0x7fff_ffff
> 3G RAM at physical addresses 0x1_0000_0000 .. 0x1_bfff_ffff
>
> The code in ofw_machdep.c discards the higher 3G and passes only the
> lower 2G to the code in pmap.c.
>
> The kernel virtual address space has 2 halves: the 1st half
> 0x0000_0000 .. 0x7fff_ffff, is a direct map of all RAM up to 2G. The
> 2nd half 0x8000_0000 .. 0xffff_ffff is for other kernel mappings. If
> there is RAM > 0x8000_0000, then it doesn't fit in the direct map, so
> the kernel can't use it. Therefore, pmap.c would limit us to 2G RAM
> even if ofw_machdep.c would pass more than 2G.
Awesome! and Oops! I knew I didn't find the right spot, well at least I got
50% right if even.
> > The rest, if there is more memory, is not mapped. Really there is a few
> > drawbacks to having more than 2GB memory in the machine if it's dedicated to
> > OpenBSD (one having to do with partitioning, in the past /tmp was not
> > created
> > because the system had trouble detecting memory (really it was becuse of
> > swap))
>
> The /tmp bug got fixed by Theo de Raadt before OpenBSD 6.9,
> https://marc.info/?l=openbsd-cvs&m=161526563325599&w=2
Absolutely awesome! I think I may reinstall my macppc in a bit. I finally
got a shipment of keyboards this morning at 9AM so my G5 is back in action.
> --George
>
Best Regards,
-peter