Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Feb 2024 15:16:11 -0500
From:      ben wilber <ben@desync.com>
To:        Justin Hibbits <jhibbits@freebsd.org>
Cc:        ppc@freebsd.org
Subject:   Re: IBM LC921
Message-ID:  <thodzhddsyuajokock3yw5svzkk7amhdkfjgo2e4mswumlehvg@6wvam7hyekfn>
In-Reply-To: <20240219111032.64754685@ralga.knownspace>
References:  <xdn7darvpmvypdfxadjberls37x724svopdo7zvwlxzikbzm66@zjobbpdwlxw6> <20240219111032.64754685@ralga.knownspace>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Feb 19, 2024 at 11:10:32AM -0500, Justin Hibbits wrote:
> I think this is a known issue with older firmwares (found on Talos II
> firmware back in 2020 or so), and unfortunately the only workaround I
> recall from that was to use kexec-lite.

Hmm, okay.  Maybe it was different when kexec-lite was fixed, but it
seems like the kernel only has one PT_LOAD segment now.  I don't know
enough to know whether this is a bad idea, but this change lets the
kernel start from the vintage PNOR:

diff --git a/sys/conf/ldscript.powerpc64le b/sys/conf/ldscript.powerpc64le
index 3fd80d3130fb..bfd5b64cb9c0 100644
--- a/sys/conf/ldscript.powerpc64le
+++ b/sys/conf/ldscript.powerpc64le
@@ -14,7 +14,7 @@ SECTIONS
 {
 
   /* Low-address wrapper for bootloaders (kexec/kboot) that can't parse ELF */
-  . = kernbase - 0x100;
+  . = 0;
   .kboot : { *(.text.kboot) } :kernel
 
   /* Read-only sections, merged into text segment: */

> Is this from a kernel on an ISO, or a self-built kernel?  We can run
> addr2line on the kernel.debug from the ISO (if it's on the ISO, I don't
> recall now if the debug symbols are included on the ISO).  What version
> of FreeBSD are you testing?

Yes, this was with a snapshot ISO.  Thank you for the hint.  I finally
figured out that addr2line likes the small numbers and found the crash
in PIC_UNMASK().  Adding this check stopped the panic:

diff --git a/sys/powerpc/powerpc/intr_machdep.c b/sys/powerpc/powerpc/intr_machdep.c
index 9d361c73a240..210c9cc0c9b4 100644
--- a/sys/powerpc/powerpc/intr_machdep.c
+++ b/sys/powerpc/powerpc/intr_machdep.c
@@ -333,6 +333,9 @@ powerpc_intr_post_ithread(void *arg)
 {
 	struct powerpc_intr *i = arg;
 
+	if (i == NULL || i->pic == NULL)
+		return;
+
 	PIC_UNMASK(i->pic, i->intline, i->priv);
 }
 
Maybe not necessary if USB cooperates.  I guess the PNOR kernel has this patch:

https://github.com/open-power/op-build/blob/master/openpower/linux/0001-xhci-Reset-controller-on-xhci-shutdown.patch

Booting from PNOR directly, everything works... in BE mode.  In LE, ixl
doesn't probe, aacraid gets stuck and USB times out trying to attach
something forever.  But, progress.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?thodzhddsyuajokock3yw5svzkk7amhdkfjgo2e4mswumlehvg>