An experimental hack that appears to allow old PowerMacG5 4-core (system total) system to boot reliably (head -r343884 based context)

Mark Millard via freebsd-ppc <[email protected]>
Newsgroups gmane.os.freebsd.devel.ppc
Message-ID <[email protected]>
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 = 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= PCPU_GET(aim.slb);
+	vm_offset_t va=    (vm_offset_t)vap;
+	uint64_t    slbv=  kernel_va_to_slbv(va);
+	uint64_t    esid=  va>>ADDR_SR_SHFT;
+	uint64_t    slbe=  (esid<<SLBE_ESID_SHIFT) | SLBE_VALID;
+	int i;
+
+	for (i = 0; i < n_slbs; i++) {
+		if (i == USER_SLB_SLOT)
+			continue;
+		if (cache[i].slbe == (slbe | i))
+			break;
+	}
+
+	if (i==n_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==n_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.

===
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.