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>
index | next in thread | raw e-mail
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)
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AE42887B-3B50-452F-85AA-CCB382179124>
