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

Justin Hibbits <[email protected]>
Newsgroups gmane.os.freebsd.devel.ppc
Message-ID <CAHSQbTBX3UR0M6V4sOjO9KFMWbi32bCR5TmBj6kF+gF9hF_kLg@mail.gmail.com>
On Sat, Feb 23, 2019 at 1:36 PM Mark Millard <[email protected]> wrote:
>
> 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

Hi Mark,

Fantastic work tracking this down!  So the problem is we now can fault
when accessing KVA space.  I think we should allow this, otherwise we
can hamper performance with reduced KVA size.  I'll have to think
about how best to do this.  Would you be willing to test patches I
come up with?

- Justin
_______________________________________________
[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.