Re: 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 via freebsd-ppc <[email protected]>
Newsgroups gmane.os.freebsd.devel.ppc
Message-ID <[email protected]>
[The patches are updated to span the iMac G3 example.]

On 2019-Apr-20, at 19:27, Mark Millard <[email protected]> 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)

_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ppc
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.