Re: Anyone working on Octeon SMP?

Nick Hudson <[email protected]> Sat, 11 Apr 2026 07:45:37 +0100
Newsgroups gmane.os.netbsd.ports.mips.devel
Message-ID <[email protected]>
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:
>>=20
>> 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:
>>>>=20
>>>> 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.
>>> 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.

This is committed

https://mail-index.netbsd.org/source-changes/2026/04/10/msg161522.html


>>=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.
> VIPT.  But it has an assortment of fun issues.

fun issues?



>>> and guarding around an assert that
>>> is easy to trigger
>>> @@ -735,7 +767,9 @@ pmap_tlb_shootdown_bystanders(pmap_t pm)
>>>                         * And best of all, we avoid an IPI.
>>>                         */
>>>                        KASSERT(!kernel_p);
>>> -                       pmap_tlb_pai_reset(ti, pai, pm);
>>> +                       if (pai->pai_asid > KERNEL_PID) {
>>> +                               pmap_tlb_pai_reset(ti, pai, pm);
>>> +                       }
>>=20
>>=20
>> you mean this KASSERT in pmap_tlb_pai_reset?
> Yeah.  But let me think harder about this.
>>    252  /*
>>    253   * We must have an ASID but it must not be onproc (on a =
processor).
>>    254   */
>>    255  KASSERT(pai->pai_asid > KERNEL_PID);
>>=20
>>> I think there are a variety of pmap changes needed.  But I wonder if
>>> any MIPS SMP or other PMAP_TLB_NEED_SHOOTDOWN has been heavily
>>> exercised?
>>=20
>> Almost certainly not.
> Good to know, I was a bit shy about looking at the MI pmap at first.
>>> IPI and TLB stuff is probably "simpler" on ARM.  On
>>> FreeBSD (13), OpenBSD, Linux the MIPS TLB shootdowns are =
synchronous.
>>=20
>> No other NetBSD architecture (not sure of powerpc booke status =
actually) uses
>> the PMAP_TLB_NEED_SHOOTDOWN stuff.
>>=20
>> I'm about to switch aarch64 to sys/uvm/pmap which uses architecture =
defined
>> broadcast TLB operations. RISC-V uses SBI remote fence operations.
> Arch defined broadcast sounds very suitable for what we'll need to do
> here.  Is that out of tree?

Arm architecture defined the broadcast TLB operations long ago. Others =
have caught up...

MI PMAP uses tlb_* functions
=
https://nxr.netbsd.org/xref/src/sys/arch/aarch64/aarch64/aarch64_tlb.c#84
=
https://nxr.netbsd.org/xref/src/sys/arch/aarch64/aarch64/cpufunc_asm_armv8=
.S#221