Re: Anyone working on Octeon SMP?
Nick Hudson <[email protected]> Sun, 19 Apr 2026 16:22:00 +0100
| Newsgroups | gmane.os.netbsd.ports.mips.devel |
|---|---|
| Message-ID | <[email protected]> |
On 16/04/2026 13:24, Andrew Parker wrote: > On Monday, 13 April 2026 12:58:34 EDT Kevin Bowling wrote: >> On Fri, Apr 10, 2026 at 11:45=E2=80=AFPM Nick Hudson = <[email protected]> wrote: >>> On 10/04/2026 11:18, Kevin Bowling wrote: >>>> On Mon, Apr 6, 2026 at 6:42=E2=80=AFAM Nick Hudson = <[email protected]> > wrote: >>>>> On 06/04/2026 10:49, Kevin Bowling wrote: >>>>>> On Sat, Mar 28, 2026 at 8:28=E2=80=AFAM Andrew Parker = <[email protected]> wrote: >>>>>>> On Thursday, 19 March 2026 23:31:36 EDT Kevin Bowling wrote: >>>>>>>> On Sun, Feb 2, 2025 at 6:52=E2=80=AFAM Andrew Parker = <[email protected]> > wrote: >>>>>>>>> On 1/29/25 06:23, Nick Hudson wrote: >>>>>>>>>> On 20/12/2024 22:01, Andrew Parker wrote: >>>>>>>>>>> Hi, I've been working towards getting a MULTIPROCESSOR build = more >>>>>>>>>>> stable >>>>>>>>>>> on my ER4 and would like to know if anyone else may be = working on >>>>>>>>>>> the >>>>>>>>>>> same? >>>>>>>>>>>=20 >>>>>>>>>>> I've found a few areas that were causing instability on my >>>>>>>>>>> machine and >>>>>>>>>>> have some patches that help (but mostly just for debugging = at >>>>>>>>>>> this >>>>>>>>>>> point). If there's any interest in teaming up and exchanging >>>>>>>>>>> ideas or >>>>>>>>>>> patches for SMP on Octeon please let me know. >>>>>>>>>>=20 >>>>>>>>>> Sure. >>>>>>>>>>=20 >>>>>>>>>> I've dropped the ball on this and said I had a couple of = fixes in >>>>>>>>>> mind, >>>>>>>>>> but done nothing to share them. Hopefully we can make it = stable. >>>>>>>>>>=20 >>>>>>>>>> Nick >>>>>>>>>=20 >>>>>>>>> Great! I'm curious about what you have in mind for = improvement. >>>>>>>>> I've >>>>>>>>> mostly been looking around TLB invalidation and perhaps a = missing >>>>>>>>> memory >>>>>>>>> barrier. >>>>>>>>>=20 >>>>>>>>> Anyway, I'll work on getting some stuff cleaned up and contact >>>>>>>>> directly >>>>>>>>> if that works for you. >>>>>>>>=20 >>>>>>>> I'm interested in this as well, is there anything to share = around >>>>>>>> current status or issues as well as if anything is pending out = of >>>>>>>> tree? >>>>>>>=20 >>>>>>> I hoped to spend more time on this over the winter but ended up >>>>>>> moving and >>>>>>> some of my networking gear is still packed up. >>>>>>>=20 >>>>>>> It's been a slow process getting my test environment setup again = but >>>>>>> it would be great to pick this back up...especially if there's >>>>>>> continued interest in it. >>>>>>>=20 >>>>>>> Give me a week or two to see what I can dig up and I'll be in = touch. >>>>>>=20 >>>>>> I've made some progress but it turned into a much deeper hole = than I >>>>>> was anticipating. I can increase SMP stability with some changes = in >>>>>> pmap_tlb.c to add some icache syncs >>>>>=20 >>>>> I have a change I'll commit soon to handle EXECness (more) = correctly. >>>=20 >>> This is committed >>>=20 >>> = https://mail-index.netbsd.org/source-changes/2026/04/10/msg161522.html >>>=20 >>> m >>>=20 >>>>> Am I right in thinking at least some octeon processors icaches are >>>>> VIVT? >>>>> I've forgotten most of the mips stuff I knew... If so there will = be >>>>> more flushing required for VIVT. >>>>=20 >>>> VIPT. But it has an assortment of fun issues. >>>=20 >>> fun issues? >>=20 >> It seems to require pretty deliberate management that is different >> than other MIPS and archs. >>=20 >> I was able to get SMP stabilized to my own satisfaction last night, = in >> so far as it can hold up cnmac driver modifications which is what I >> was originally started with. >>=20 >> There are a few categories of mandatory fixes: membar_release is >> missing a SYNC_PLUNGER (second syncw), INT_MASKs critically missing = in >> octeon_intr.c, and a variety of locore fixups. Beyond that I ended = up >> redoing octeon_intr.c to distribute interrupts and fix my previous >> octeon III patch. I have changes to the PMAP_TLB_NEED_SHOOTDOWN path >> primarily that I am least confident about. I'll try and organize >> everything into a more deliberate patch series, right now it is = pretty >> messy with attempts and debugging. > I was finally able to boot up my ER-4 last night. I don't have = anything to add > (yet) to the pmap discussion here except I'm guessing I'm in similar = place you > are with it. Things are 'stable' mostly through a bunch of extra TLB = flushes. > The other change that resulted in a more stable userland for me is = what > appears to be a missing memory barrier around cpu_lwp_setprivate(). = The one I > added in lwp.c doesn't seem 100% correct but this does resolve = instability > that's easily reproduced in unbound (using multiple threads) and = occasionally > sshd: > diff --git a/sys/arch/mips/mips/cpu_subr.c = b/sys/arch/mips/mips/cpu_subr.c > index a80304908774..df854cae4254 100644 > --- a/sys/arch/mips/mips/cpu_subr.c > +++ b/sys/arch/mips/mips/cpu_subr.c > @@ -1051,11 +1051,11 @@ cpu_vmspace_exec(lwp_t *l, vaddr_t start, = vaddr_t end) > int > cpu_lwp_setprivate(lwp_t *l, void *v) > { > - > #if (MIPS32R2 + MIPS64R2) > 0 > if (l =3D=3D curlwp && MIPS_HAS_USERLOCAL) { > mipsNN_cp0_userlocal_write(v); > } > + membar_sync(); > #endif > return 0; > } > diff --git a/sys/kern/sys_lwp.c b/sys/kern/sys_lwp.c > index 7c4e4f27ad23..24cc3315f3e4 100644 > --- a/sys/kern/sys_lwp.c > +++ b/sys/kern/sys_lwp.c > @@ -187,7 +187,7 @@ sys__lwp_self(struct lwp *l, const void *v, = register_t > *retval) > int > sys__lwp_getprivate(struct lwp *l, const void *v, register_t *retval) > { > - > + membar_sync(); > *retval =3D (uintptr_t)l->l_private; > return 0; > } Thanks for testing. I can=E2=80=99t say I understand why these memory are needed. Can you = explain, please?