Orange Pi 6 Plus works (15.1-RELEASE)

Kevin Day <[email protected]> Mon, 29 Jun 2026 16:16:10 -0500
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
The Orange Pi 6 Plus SBC works fine out of the box for the most part. 12 =
arm cores (8 fast, 4 slower), 16/32/64GB of ram, Dual 5G ethernet, dual =
NVME slots, etc.

It's a UEFI based system that just booted the memstick image okay and =
installed. I have not tested anything with the GPU or NPU, and the =
if_rge driver isn't in GENERIC on arm64 so I had to add that. The only =
issue is that it's got CPU cores that are not all the same, and the =
scheduler doesn't seem to understand that:

CPU  0: ARM Cortex-A720 r0p1 affinity: 10  0
                   Cache Type =3D <IDC,64 byte CWG,64 byte ERG,64 byte =
D-cacheline,PIPT I-cache,64 byte I-cacheline,0x400000000>
 Instruction Set Attributes 0 =3D =
<TLBI-OSR,CondM-8.5,FHM,DP,SM4,SM3,SHA3,RDM,Atomic,CRC32,SHA2+SHA512,SHA1,=
AES+PMULL>
 Instruction Set Attributes 1 =3D <XS,I8MM,DGH,BF16,PredInv =
v8.5,SB,FRINTTS,RCPC-8.4,FCMA,JSCVT,DCCVADP>
 Instruction Set Attributes 2 =3D <PAC_frac,APA3 =
FPAC+Combined,GPA3,WFxT>
         Processor Features 0 =3D =
<CSV3,CSV2_2,PSTATE.DIT,AMUv1,MPAM,SEL2,SVE,RAS v8.4,GIC =
4.1,AdvSIMD+HP,FP+HP,EL3,EL2,EL1,EL0>
         Processor Features 1 =3D <MTE_frac,MPAM p1,MTE3,PSTATE.SSBS =
MSR,BTI>
         Processor Features 2 =3D <>
      Memory Model Features 0 =3D <ECV POFF,FGT v8.6,S2 TGran4,S2 =
TGran64,S2 TGran16,TGran4,TGran64,TGran16,SNSMem,BigEnd,16bit ASID,1TB =
PA>
      Memory Model Features 1 =3D =
<ECBHB,nTLBPA,AFP,HCX,XNX,EPAN,LO,HPD+TTPBHA,VH,16bit VMID,HAF+DS>
      Memory Model Features 2 =3D <E0PD,EVT-8.5,BBM level =
2,TTL,FWB,IDS,AT,ST,64bit CCIDX,48bit VA,IESB,UAO,CnP>
      Memory Model Features 3 =3D <>
      Memory Model Features 4 =3D <>
             Debug Features 0 =3D <HPMN0,MTPMU res0,TraceBuffer,Trace =
v8.4,SPEv1p2,2 CTX BKPTs,4 Watchpoints,6 =
Breakpoints,PMUv3p7,Trace,Debugv8p4>
             Debug Features 1 =3D <>
         Auxiliary Features 0 =3D <>
         Auxiliary Features 1 =3D <>
               SVE Features 0 =3D =
<I8MM,SM4,SHA3,BF16,BitPerm,AES+PMULL,SVE2>
AArch32 Instruction Set Attributes 5 =3D <>
AArch32 Media and VFP Features 0 =3D <>
AArch32 Media and VFP Features 1 =3D <>
CPU  1: ARM Cortex-A720 r0p1 affinity: 11  0
CPU  2: ARM Cortex-A520 r0p1 affinity:  0  0
      Memory Model Features 1 =3D =
<ECBHB,nTLBPA,AFP,HCX,XNX,SpecSEI,EPAN,LO,HPD+TTPBHA,VH,16bit =
VMID,HAF+DS>
             Debug Features 0 =3D <HPMN0,MTPMU res0,TraceBuffer,Trace =
v8.4,2 CTX BKPTs,4 Watchpoints,6 Breakpoints,PMUv3p7,Trace,Debugv8p4>
CPU  3: ARM Cortex-A520 r0p1 affinity:  1  0
CPU  4: ARM Cortex-A520 r0p1 affinity:  2  0
CPU  5: ARM Cortex-A520 r0p1 affinity:  3  0
CPU  6: ARM Cortex-A720 r0p1 affinity:  4  0
      Memory Model Features 1 =3D =
<ECBHB,nTLBPA,AFP,HCX,XNX,EPAN,LO,HPD+TTPBHA,VH,16bit VMID,HAF+DS>
             Debug Features 0 =3D <HPMN0,MTPMU res0,TraceBuffer,Trace =
v8.4,SPEv1p2,2 CTX BKPTs,4 Watchpoints,6 =
Breakpoints,PMUv3p7,Trace,Debugv8p4>
CPU  7: ARM Cortex-A720 r0p1 affinity:  5  0
CPU  8: ARM Cortex-A720 r0p1 affinity:  6  0
CPU  9: ARM Cortex-A720 r0p1 affinity:  7  0
CPU 10: ARM Cortex-A720 r0p1 affinity:  8  0
CPU 11: ARM Cortex-A720 r0p1 affinity:  9  0

0-1,6-11 are fast, and 2-5 are slow. However, it seems like the =
scheduler is just randomly picking a core, so performance varies wildly =
depending on which one you hit.

kern.sched.topology_spec: <groups>
 <group level=3D"1" cache-level=3D"3">
  <cpu count=3D"12" mask=3D"fff,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0">0, 1, 2, =
3, 4, 5, 6, 7, 8, 9, 10, 11</cpu>
 </group>
</groups>


Is there an easy fix for this? Linux gets it right, but I'm really =
unfamiliar with the low level of arm board support to understand =
how/where it's learning the topology.

-- Kevin