HEADS UP: powerpc64 kernel format change [booted a PowerMac G5 quad-core]

Nathan Whitehorn nwhitehorn at freebsd.org
Sun Feb 1 16:02:58 UTC 2015


So this has to be some kind of icache issue. If you unload and reload 
the *same* kernel, does it also help?
-Nathan

On 02/01/15 00:04, Mark Millard wrote:
> Just an FYI, not a request for anything.
>
> I've booted my powerpc64 11.0-CURRENT -r277990 "GENERIC64vtsc" variant on a PowerMac G5 quad core, but a little oddly. I've also used the new loader to boot 10.1-RELEASE-p5 and 10.1-STABLE (-r277808), 10.1-RELEASE-p5 being a normal boot but 10.1-STABLE also being odd in the same way as 11.0-CURRENT. (The oddity is not new to the -r277990 context.)
>
> Before attempting this I'd already adapted my powermac-g5-more-reliable-booting-investigation-hacks to powerpc64 11-CURRENT after the relocatable kernel changes touched ofwcall64.S and I had booted a with-hack 11.0-CURRENT kernel before this. (The recent Justin H. patch for fan/pump RPMs is also present, although the problem powermac is gone.)
>
> Like for 10.1-STABLE, for 11-CURRENT (-R277990) the sequence buildworld, buildkernel, installkernel, installworld, reboot failed to boot before getting to the "any other key for a command prompt" stage, although the SRR0 figure was different.
>
> %SRR0: 00000000.01c287ac (10.1-STABLE reports 1c277fc)
> %SRR1: 10000000.00003030
>
> But the same technique that allows me to boot 10.1-STABLE works for 11-CURRENT as well. More below for what I did to have 11-CURRENT kernel+world running despite the above.
>
> To make swapping contexts easier I've established copies of the 3 vintages of loader, each copy established just after the matching installworld:
>
> $ ls -F /boot/loader /boot/loader1*
> /boot/loader*				/boot/loader10.1S_from_usr_obj*
> /boot/loader10.1RE*			/boot/loader11C*
> /boot/loader10.1RE_from_usr_obj*	/boot/loader11C_from_usr_obj*
> /boot/loader10.1S*
>
> and I copy /boot/loader11C to /boot/loader to test using it for whatever I'm going to boot with it. (I've not tried any that I copied from /usr/obj/... I may just delete those.) "RE" stands for RelEng, "S" for Stable, "C" for Current.
>
> Note that 10.1RE here is 10.1-RELEASE-p5 (RELENG -r277807) but with my original powermac-g5-more-reliable-booting-investigation-hacks and the fan/pump RPM patch. (My 10.1-STABLE has those as well.)
>
> I also have separate kernel copies (via INSTKERNNAME use):
>
> $ ls -Fd /boot/kernel*
> /boot/kernel/		/boot/kernel10.1RE/	/boot/kernel10.1S/	/boot/kernel11C/
>
> (Ignore /boot/kernel here. I tend to use the other ones.)
>
> And I use /boot/loader.conf to control which kernel is initially started, such as:
>
> $ more /boot/loader.conf
> kernel="kernel10.1RE"
> verbose_loading="YES"
> kern.vty=vt
>
> The kernel10.RE one boots and runs fine with any of the 3 vintages of loader. Listing kernel10.1S or kernel11C in loader.conf instead gets the SRR0/SRR1 failures referenced above, even when loader (and world) is from the matching buildworld.
>
> So I boot as above (kernel10.1RE) but use the "any other key for a command prompt" to stop it and then (for example):
>
> unload
> boot kernel11C
>
> and that boots and runs fine if I've done the 11-CURRENT installworld before the reboot.
>
> (At this point 10.1-RELEASE-p5 and 10.1-STABLE buildworlds (loader updated) do not mix very well with 11-CURRENT kernels. "init: getting kqueues resource limit invalid argument" notices are an example. And I had kernel panics after a while for such combinations. So far the above 11-CURRENT kernel+world combination seems okay despite the boot sequence having a 10.1-RELEASE-p5 kernel variant involved for a bit.)
>
> $ freebsd-version -ku; uname -a
> 10.1-RELEASE-p5
> 11.0-CURRENT
> FreeBSD FBSDG5M1 11.0-CURRENT FreeBSD 11.0-CURRENT #0 r277990M: Sat Jan 31 18:27:29 PST 2015     root at FBSDG5M1:/usr/obj/usr/home/markmi/src_11_current/sys/GENERIC64vtsc  powerpc
>
>
>
> Other details controlling how things were built (all 3 are built similarly):
>
> $ more /etc/make.conf
> WRKDIRPREFIX=/usr/obj/portswork
> WITH_DEBUG=
> MALLOC_PRODUCTION=
>
> $ more /etc/src.conf
> #WITH_DEBUG_FILES=
> #WITHOUT_CLANG=
>
> (I have separate svn source directory trees for 10.1-RELEASE-p5, 10.1-STABLE (-r277808), and 11.0-CURRENT (-r277990).)
>
> $ more ~markmi/src_11_current/sys/powerpc/conf/GENERIC64vtsc
> include GENERIC64
> ident   GENERIC64vtsc
>
> nooptions       PS3                     #Sony Playstation 3               HACK!!! to allow sc
>
> options         DDB                     # HACK!!! to dump early crash info (but 11.0-CURRENT already has it)
> options         GDB                     # HACK!!! ...
> #options        KTR
> #options        KTR_MASK=KTR_TRAP
> #options        KTR_CPUMASK=0xF
> #options        KTR_VERBOSE
>
> # HACK!!! to allow sc for 2560x1440 display on Radeon X1950 that vt historically mishandled during booting
> device          sc
> #device          kbdmux         # HACK: already listed by vt
> options         SC_OFWFB        # OFW frame buffer
> options         SC_DFLT_FONT    # compile font in
> makeoptions     SC_DFLT_FONT=cp437
>
>
> # Disable extra checking typically used for FreeBSD 11.0-CURRENT:
> nooptions       DEADLKRES               #Enable the deadlock resolver
> nooptions       INVARIANTS              #Enable calls of extra sanity checking
> nooptions       INVARIANT_SUPPORT       #Extra sanity checks of internal structures, required by INVARIANTS
> nooptions       WITNESS                 #Enable checks to detect deadlocks and cycles
> nooptions       WITNESS_SKIPSPIN        #Don't run witness on spinlocks for speed
> nooptions       MALLOC_DEBUG_MAXZONES   # Separate malloc(9) zones
>
> (My 10.1-RELEASE-p5 and 10.1-STABLE variants use the same file contents as above.)
>
> $ svnlite status ~markmi/src_11_current/
> M       /home/markmi/src_11_current/sys/ddb/db_main.c
> M       /home/markmi/src_11_current/sys/ddb/db_script.c
> ?       /home/markmi/src_11_current/sys/powerpc/conf/GENERIC64vtsc
> M       /home/markmi/src_11_current/sys/powerpc/ofw/ofw_machdep.c
> M       /home/markmi/src_11_current/sys/powerpc/ofw/ofwcall64.S
> M       /home/markmi/src_11_current/sys/powerpc/powermac/powermac_thermal.c
>
> $ svnlite info ~markmi/src_11_current/
> Path: /home/markmi/src_11_current
> Working Copy Root Path: /home/markmi/src_11_current
> URL: https://svn0.us-west.freebsd.org/base/head
> Relative URL: ^/head
> Repository Root: https://svn0.us-west.freebsd.org/base
> Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
> Revision: 277990
> Node Kind: directory
> Schedule: normal
> Last Changed Author: nwhitehorn
> Last Changed Rev: 277990
> Last Changed Date: 2015-01-31 11:16:51 -0800 (Sat, 31 Jan 2015)
>
> ===
> Mark Millard
> markmi at dsl-only.net
>
> _______________________________________________
> freebsd-ppc at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-ppc
> To unsubscribe, send any mail to "freebsd-ppc-unsubscribe at freebsd.org"
>



More information about the freebsd-ppc mailing list