Patches to allow usefdt mode that works on a 2 socket PowerMac3, 6 example too --and makes more work on 2-socket/1-core-each PowerMac11, 2

Mark Millard marklmi at yahoo.com
Wed Apr 24 20:12:51 UTC 2019


[The patches are updated to span the iMac G3 example.]

On 2019-Apr-20, at 19:27, Mark Millard <marklmi at yahoo.com> wrote:

> To my knowledge, the investigatory patches to head
> -r345758 that are now in:
> 
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=233863
> 
> are sufficient for both non-usefdt mode and usefdt mode
> for booting and using the old PowerMac's that I can test,
> both G5 and G4. I'm hoping that other Apple ppc's that used
> to work before various changes again work for non-usefdt
> mode. Ones with even longer term problems probably still
> have such.
> 
> One requirement for usefdt mode is: kern.vty=vt
> Using sc hangs after the "Kernel entry at" message
> before even clearing the screen. (This is so early
> I may never figure out a way to isolate the problem
> for sc: no serial console context.)
> 
> So, unlike before, I now expect that testing on whatever
> variety of Apple G5 types that you have access to would
> be very useful to you and make evidence about the patches
> beyond what I can do with what I have access to. (It
> also cross checks if I've forgotten to post something.)
> This applies to both non-usefdt mode and usefdt mode.
> 
> Similarly for any variety of Apple G4's, if you have
> access to some.
> 
> The only powerpc64 and 32-bit-powerpc systems that I
> have access to are old PowerMacs. So I can not check
> the status of any other types of ppc systems with my
> patches involved.
> 
> One thing I'm not sure of for usefdt mode is what
> the consequences of small memory machines might be.
> /usr/src/stand/powerpc/ofw/ofwfdt.c has:
> 
> int
> fdt_platform_load_dtb(void)
> {
>        void *buffer;
>        size_t buflen = 409600;
> 
>        buffer = malloc(buflen);
>        fdt_create_empty_tree(buffer, buflen);
>        add_node_to_fdt(buffer, OF_peer(0), fdt_path_offset(buffer, "/"));
>        ofwfdt_fixups(buffer);
>        fdt_pack(buffer);
> 
>        fdt_load_dtb_addr(buffer);
>        free(buffer);
> 
>        return (0);
> }
> 
> On a 1 GiByte machine, with some other overhead
> use of RAM, that 409600 could be around half the
> available memory --or more. Even though
> fdt_load_dtb_addr will make a smaller copy, and
> then the bigger one will be freed, the copy's
> address range is constrained by the existing big
> allocation at the time.
> 
> On a sufficiently small memory machine the 409600
> would just not be possible. (That might even be
> true for a 1 GiByte machine.) Note the lack of
> any check on the malloc(409600)'s success vs.
> failure status. (By contrast, fdt_load_dtb_addr
> does check for a NULL return, even though
> fdt_platform_load_dtb ignores the fdt_load_dtb_addr
> return value.)
> 
> So if any of your testing contexts are "small" memory
> ones, it may be for those that only non-usefdt mode
> is the only effective option.
> 
> 
> Some patches only matter for usefdt mode, because they are
> about the conversion to fdt in the loader or use of
> the phandle nodes that the conversion adds to record
> openfirmware's original node-ids (xrefs vs. node refs).
> (Presumes no typing of commands like "fdt header" or such
> in the loader before the non-usefdt boot. Otherwise the
> fdt command itself does do a conversion at the time and so
> the conversion code would be involved.)
> 
> So, for just testing non-usefdt mode, fewer of the patches
> are needed.
> 
> No longer should any of my usefdt mode pure-hacks be
> required. (I now use my hacks to see if they report
> ever having anything special to do vs. not. This is
> more complete of a check than just watching overall
> normal-use behavior for usefdt mode.) I've not posted
> the current versions of my pure-hacks anywhere and I'd
> avoid any old postings about old versions. I hope to
> back out the hacks in my context as well.
> 
> 
> 
> (Note: I have access to one old PowerMac G4 that no version
> of FreeBSD that I've ever tried over the years could complete
> the boot. OS X had no problem with it, nor did the Linux that
> I tried. Until/unless I isolate the low level spot were
> FreeBSD fails on it, I ignore this old PowerMac in my wording
> for my testing.)

I have updated the patches and now the MPC750 iMac G3
PowerPC4,1 example also boots and operates for *BOTH*
non-usefdt mode and usefdt mode.

That is the last of the old PowerMac's that I
can test with.

It is still based on -r345758 and some of it would
not apply cleanly to sufficiently more recent
vintages of head.


===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)



More information about the freebsd-ppc mailing list