Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Feb 2019 11:36:11 -0800
From:      Mark Millard <marklmi@yahoo.com>
To:        Justin Hibbits <chmeeedalf@gmail.com>
Cc:        FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>, Dennis Clarke <dclarke@blastwave.org>
Subject:   An experimental hack that appears to allow old PowerMacG5 4-core (system total) system to boot reliably (head -r343884 based context)
Message-ID:  <AE42887B-3B50-452F-85AA-CCB382179124@yahoo.com>

next in thread | raw e-mail | index | archive | help
For sys/powerpc/aim/mp_cpudep.c 's cpudep_ap_bootstrap I added as shown =
below:

+extern void hack_into_slb_if_needed(void* vap); // HACK!!!
+
 uintptr_t
 cpudep_ap_bootstrap(void)
 {
. . .
+	hack_into_slb_if_needed(pcpup->pc_curpcb); // HACK!!!
+
 	sp =3D pcpup->pc_curpcb->pcb_sp;

and in src/sys/powerpc/aim/slb.c I added an implementation:

+void hack_into_slb_if_needed(void* vap); // HACK!!!
+void hack_into_slb_if_needed(void* vap) // HACK!!!
+{ // HACK!!!
+	struct slb *cache=3D PCPU_GET(aim.slb);
+	vm_offset_t va=3D    (vm_offset_t)vap;
+	uint64_t    slbv=3D  kernel_va_to_slbv(va);
+	uint64_t    esid=3D  va>>ADDR_SR_SHFT;
+	uint64_t    slbe=3D  (esid<<SLBE_ESID_SHIFT) | SLBE_VALID;
+	int i;
+
+	for (i =3D 0; i < n_slbs; i++) {
+		if (i =3D=3D USER_SLB_SLOT)
+			continue;
+		if (cache[i].slbe =3D=3D (slbe | i))
+			break;
+	}
+
+	if (i=3D=3Dn_slbs)
+		slb_insert_kernel(slbe,slbv);
+} // HACK!!!
+

So far I've not had any boot hang-ups after this.

Given the random nature of the hang-ups it will be a
while before I conclude for sure how reliable this
change makes booting, but so far so good.

(I recognize that the "break" could be "return"
and then then the "if (i=3D=3Dn_slbs)" would not be
needed.)


Other issues not fixed by this:

This does not change the buf*daemon* randomly getting
hung up (and so timing out on shutdown). This appears
to be the same issue that leads to the fans sometimes
starting to run full-rate because of pmac_thermal
being hun -up.

For  buf*daemon* "top -SHIopid" before shutdown shows
just the ones that will not hang-up. The same goes for
seeing before hand for pmac_thermal vs. the fans.

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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AE42887B-3B50-452F-85AA-CCB382179124>