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>