Port-mips archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Anyone working on Octeon SMP?



On 10/04/2026 11:18, Kevin Bowling wrote:
> On Mon, Apr 6, 2026 at 6:42 AM Nick Hudson <nick.hudson%gmx.co.uk@localhost> wrote:
>> 
>> On 06/04/2026 10:49, Kevin Bowling wrote:
>>> On Sat, Mar 28, 2026 at 8:28 AM Andrew Parker <andrew%pmk1.net@localhost> wrote:
>>>> 
>>>> On Thursday, 19 March 2026 23:31:36 EDT Kevin Bowling wrote:
>>>>> On Sun, Feb 2, 2025 at 6:52 AM Andrew Parker <andrew%pmk1.net@localhost> 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?
>>>>>>>> 
>>>>>>>> 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.
>>>>>>> 
>>>>>>> Sure.
>>>>>>> 
>>>>>>> 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.
>>>>>>> 
>>>>>>> Nick
>>>>>> 
>>>>>> 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.
>>>>>> 
>>>>>> Anyway, I'll work on getting some stuff cleaned up and contact directly
>>>>>> if that works for you.
>>>>> 
>>>>> 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?
>>>> 
>>>> 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.
>>>> 
>>>> 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.
>>>> 
>>>> 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
>> 
>> 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


>> 
>> 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);
>>> +                       }
>> 
>> 
>> 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);
>> 
>>> 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?
>> 
>> 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.
>> 
>> No other NetBSD architecture (not sure of powerpc booke status actually) uses
>> the PMAP_TLB_NEED_SHOOTDOWN stuff.
>> 
>> 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





Home | Main Index | Thread Index | Old Index