LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH v1 1/6] objtool/powerpc: Add build-time fixup of alternate feature branch targets
From: Peter Zijlstra @ 2026-05-06 14:22 UTC (permalink / raw)
  To: Segher Boessenkool
  Cc: Sathvika Vasireddy, nathan, nsc, maddy, mpe, npiggin, chleroy,
	jpoimboe, ojeda, masahiroy, lossin, tamird, thomas.weissschuh,
	rostedt, ihor.solodrai, thuth, pmladek, aliceryhl, elver, kees,
	legion, ardb, yuxuan.zuo, alexghiti, alexandre.chartre, bp,
	linux-kbuild, linux-kernel, linuxppc-dev
In-Reply-To: <aftJIWxB70eNRX8l@gate>

On Wed, May 06, 2026 at 08:58:57AM -0500, Segher Boessenkool wrote:
> Hi!
> 
> On Wed, May 06, 2026 at 09:00:00AM +0200, Peter Zijlstra wrote:
> > On Tue, May 05, 2026 at 10:56:58AM -0500, Segher Boessenkool wrote:
> > > On Tue, May 05, 2026 at 04:45:39PM +0200, Peter Zijlstra wrote:
> > > > On Tue, May 05, 2026 at 02:16:23PM +0530, Sathvika Vasireddy wrote:
> > > > >  	switch (opcode) {
> > > > > +	case 16:
> > > > 
> > > > Like case 18 below, this wants a comment describing which instruction
> > > > this is; bclr ?
> > > 
> > > Yes.  It is 19/16, b[c]lr (primary opcode 19, secondary opcode 16).
> > > 
> > > Where is it described what INSN_RETURN actually means for objtool?  Not
> > > in the header file :-(
> > 
> > Yeah, nowhere much I'm afraid, it is very much organic growth that is
> > firmly rooted in x86.
> > 
> > RETURN, along with sibling/tail CALLs validate things like the stack
> > frame being in identical state as on function entry and a few other
> > sanity checks (DF flag not set, no uaccess).
> 
> Huh.
> 
> On function entry, there is *no* accessible stack frame, on our ABIs
> (typically you can still access your parent's frame of course, but then
> you first need to find out who your parent is, etc.)  All stack frames
> are always set up by separate store instructions.  We are a RISC
> architecture after all (POWER means "Performance Optimisation With
> Enhanced RISC").  So objtool checks if we actually tore down all
> stack frames?  What a very useful thing to do.
> 
> Stack frames are a software concept in the first place, it has nothing
> to do with the hardware, *at all*.  This is a bit different on archs
> that *actually* have such a thing as a frame pointer, that don't emulate
> it using a GPR (or something in memory!)

So, remember that objtool was born to generate ORC stack unwind data.
It needs to track the stack state at every instruction to accomplish
this.

One of the basic sanity checks it does is ensuring there is no lingering
stack state on RETURN -- this would obviously cause the
caller/returned-to context to get a wee bit upset.

And yes, I realize this might sound quite mad to a compiler person. But
remember that we have a ton of ASM (inline and otherwise) mixed in with
our C code. And while you can add DWARF CFI to ASM, this has
historically been a bit of a trainwreck, not in the least because the
annotations got wrong and nothing warned about it until the unwinder
would explode.

Objtool solves all of that, by doing build time reconstruction of the
control flow and stack state it guarantees everything is consistent at
build time. Additionally it can deal with fun things like alternatives
/ static branches etc.

It can deal with both -fframe-pointer and -fomit-frame-pointer (on x86).
When the frame pointer reg (BP) is used, it also validates this is done
correctly.

This has caught many whoopsies over the years.

Then because this thing is parsing object files and decoding control
flow, features were added, like the uaccess scope checks.

> > There is also a pile of hacks around the whole return thunk mitigation
> > thing. But that might be less relevant for other archs.
> 
> I don't really want to think about it :-)  Horrors!
> 
> There are many other archs where all (or almost all, "all normal", call/
> return sequences use a "link register", often called exactly that.  It's
> the modern consensus to design call/return around that, I'd say even.
> It would be nice if this abstraction worked well ;-)

Agreed. Its just that this thing has a very strong x86 flavour per its
legacy ;-) We'll get it sorted.


^ permalink raw reply

* powernv_rng_read: Oops: Kernel access of bad area, sig: 11 [#1]
From: Paul Menzel @ 2026-05-06 14:01 UTC (permalink / raw)
  To: Olivia Mackall, Herbert Xu, Madhavan Srinivasan, Michael Ellerman
  Cc: linux-crypto, linuxppc-dev, LKML

[-- Attachment #1: Type: text/plain, Size: 3436 bytes --]

Dear Linux folks,


After a long while, on the 8335-GCA POWER8 (raw) 0x4d0200 
opal:skiboot-5.4.8-5787ad3 PowerNV, I built Linux from Linus’ master 
branch and rebooted via kexec.

```
[    0.000000] Linux version 7.1.0-rc2+ 
(pmenzel@flughafenberlinbrandenburgwillybrandt.molgen.mpg.de) (gcc 
(Ubuntu 11.2.0-7ubuntu2) 11.2.0, GNU ld (GNU Binutils for Ubuntu) 2.37) 
#3 SMP PREEMPT Wed May  6 08:50:58 CEST 2026
[…]
[   17.901992] Kernel attempted to read user page (0) - exploit attempt? 
(uid: 0)
[   17.902011] BUG: Kernel NULL pointer dereference on read at 0x00000000
[   17.902018] Faulting instruction address: 0xc0000000000e7138
[   17.902027] Oops: Kernel access of bad area, sig: 11 [#1]
[   17.902034] LE PAGE_SIZE=64K MMU=Hash  SMP NR_CPUS=2048 NUMA PowerNV
[   17.902045] Modules linked in: powernv_rng(+) bnx2x ofpart ibmpowernv 
bfq mdio cmdlinepart powernv_flash ipmi_powernv ipmi_devintf mtd 
ipmi_msghandler at24(+) vmx_crypto opal_prd sch_fq_codel nfsd parport_pc 
ppdev auth_rpcgss nfs_acl lp lockd grace parport sunrpc autofs4 btrfs 
xor libblake2b raid6_pq ast drm_shmem_helper drm_client_lib i2c_algo_bit 
drm_kms_helper drm ahci drm_panel_orientation_quirks libahci
[   17.902185] CPU: 147 UID: 0 PID: 2626 Comm: hwrng Not tainted 
7.1.0-rc2+ #3 PREEMPTLAZY
[   17.902197] Hardware name: 8335-GCA POWER8 (raw) 0x4d0200 
opal:skiboot-5.4.8-5787ad3 PowerNV
[   17.902204] NIP:  c0000000000e7138 LR: c00800001ec8013c CTR: 
c0000000000e70fc
[   17.902212] REGS: c000000092913c50 TRAP: 0300   Not tainted  (7.1.0-rc2+)
[   17.902222] MSR:  900000000280b033 
<SF,HV,VEC,VSX,EE,FP,ME,IR,DR,RI,LE>  CR: 44420220  XER: 20000000
[   17.902269] CFAR: c00800001ec8026c DAR: 0000000000000000 DSISR: 
40000000 IRQMASK: 0
                GPR00: c00800001ec8013c c000000092913ef0 
c000000001c18100 c00000002222d900
                GPR04: c00000002222d900 0000000000000080 
0000000000000001 0000000000000000
                GPR08: 0000000000000000 c000000002212000 
c0000000951e1780 c00800001ec80258
                GPR12: c0000000000e70fc c00000ffff6fd700 
c0000000001d11c0 c00000001b99b9c0
                GPR16: 0000000000000000 0000000000000000 
0000000000000000 0000000000000000
                GPR20: 0000000000000000 0000000000000000 
0000000000000000 0000000000000000
                GPR24: 0000000000000000 c000000002fe6a58 
0000000000000000 0000000000000000
                GPR28: c000000002fe6a20 0000000000000010 
000000000000000f c00000002222d900
[   17.902406] NIP [c0000000000e7138] pnv_get_random_long+0x3c/0x114
[   17.902426] LR [c00800001ec8013c] powernv_rng_read+0x78/0xc4 
[powernv_rng]
[   17.902444] Call Trace:
[   17.902448] [c000000092913ef0] [c000000092913f30] 0xc000000092913f30 
(unreliable)
[   17.902463] [c000000092913f30] [c000000000decd58] hwrng_fillfn+0xd4/0x3dc
[   17.902484] [c000000092913f90] [c0000000001d1328] kthread+0x170/0x1a4
[   17.902498] [c000000092913fe0] [c00000000000d030] 
start_kernel_thread+0x14/0x18
[   17.902513] Code: 60000000 7d2000a6 71290010 418200bc e94d0908 
812a0000 39290001 912a0000 e90d0030 3d220060 39299f00 7d08482a 
<e9280000> 7c0004ac e8e90000 0c070000
[   17.902569] ---[ end trace 0000000000000000 ]---
[   18.008801] pstore: backend (nvram) writing error (-1)

[   18.015458] note: hwrng[2626] exited with irqs disabled
[   18.015483] note: hwrng[2626] exited with preempt_count 1
```

Please find the output of `dmesg` attached.


Kind regards,

Paul

[-- Attachment #2: 20260506--linux-7.10.0-rc2+-74fe02ce122a--messages.txt --]
[-- Type: text/plain, Size: 84279 bytes --]

[    0.000000] hash-mmu: Page sizes from device-tree:
[    0.000000] hash-mmu: base_shift=12: shift=12, sllp=0x0000, avpnm=0x00000000, tlbiel=1, penc=0
[    0.000000] hash-mmu: base_shift=12: shift=16, sllp=0x0000, avpnm=0x00000000, tlbiel=1, penc=7
[    0.000000] hash-mmu: base_shift=12: shift=24, sllp=0x0000, avpnm=0x00000000, tlbiel=1, penc=56
[    0.000000] hash-mmu: base_shift=16: shift=16, sllp=0x0110, avpnm=0x00000000, tlbiel=1, penc=1
[    0.000000] hash-mmu: base_shift=16: shift=24, sllp=0x0110, avpnm=0x00000000, tlbiel=1, penc=8
[    0.000000] hash-mmu: base_shift=20: shift=20, sllp=0x0130, avpnm=0x00000000, tlbiel=0, penc=2
[    0.000000] hash-mmu: base_shift=24: shift=24, sllp=0x0100, avpnm=0x00000001, tlbiel=0, penc=0
[    0.000000] hash-mmu: base_shift=34: shift=34, sllp=0x0120, avpnm=0x000007ff, tlbiel=0, penc=3
[    0.000000] Enabling pkeys with max key count 32
[    0.000000] Activating Kernel Userspace Access Prevention
[    0.000000] Activating Kernel Userspace Execution Prevention
[    0.000000] hash-mmu: Page orders: linear mapping = 24, virtual = 16, io = 16, vmemmap = 24
[    0.000000] hash-mmu: Using 1TB segments
[    0.000000] hash-mmu: Initializing hash mmu with SLB
[    0.000000] Linux version 7.1.0-rc2+ (pmenzel@flughafenberlinbrandenburgwillybrandt.molgen.mpg.de) (gcc (Ubuntu 11.2.0-7ubuntu2) 11.2.0, GNU ld (GNU Binutils for Ubuntu) 2.37) #3 SMP PREEMPT Wed May  6 08:50:58 CEST 2026
[    0.000000] OF: reserved mem: 0x0000000039c00000..0x000000003a7801ff (11776 KiB) map non-reusable ibm,firmware-allocs-memory@39c00000
[    0.000000] OF: reserved mem: 0x0000008000000000..0x0000008000c401ff (12544 KiB) map non-reusable ibm,firmware-allocs-memory@8000000000
[    0.000000] OF: reserved mem: 0x0000000030000000..0x00000000302fffff (3072 KiB) map non-reusable ibm,firmware-code@30000000
[    0.000000] OF: reserved mem: 0x0000000031000000..0x0000000031bfffff (12288 KiB) map non-reusable ibm,firmware-data@31000000
[    0.000000] OF: reserved mem: 0x0000000030300000..0x0000000030ffffff (13312 KiB) map non-reusable ibm,firmware-heap@30300000
[    0.000000] OF: reserved mem: 0x0000000031c00000..0x0000000032ddffff (18304 KiB) map non-reusable ibm,firmware-stacks@31c00000
[    0.000000] OF: reserved mem: 0x000000fffd440000..0x000000fffd6bffff (2560 KiB) map non-reusable ibm,hbrt-code-image@fffd440000
[    0.000000] OF: reserved mem: 0x000000fffd6c0000..0x000000fffd6fffff (256 KiB) map non-reusable ibm,hbrt-target-image@fffd6c0000
[    0.000000] OF: reserved mem: 0x000000fffd700000..0x000000fffd7fffff (1024 KiB) map non-reusable ibm,hbrt-vpd-image@fffd700000
[    0.000000] OF: reserved mem: 0x000000fffd800000..0x000000fffdbfffff (4096 KiB) map non-reusable ibm,homer-image@fffd800000
[    0.000000] OF: reserved mem: 0x000000fffdc00000..0x000000fffdffffff (4096 KiB) map non-reusable ibm,homer-image@fffdc00000
[    0.000000] OF: reserved mem: 0x000000ffff800000..0x000000ffffffffff (8192 KiB) map non-reusable ibm,occ-common-area@ffff800000
[    0.000000] Found initrd at 0xc000000005680000:0xc000000008a34449
[    0.000000] OPAL: Found non-mapped LPC bus on chip 0
[    0.000000] Hardware name: 8335-GCA POWER8 (raw) 0x4d0200 opal:skiboot-5.4.8-5787ad3 PowerNV
[    0.000000] printk: legacy bootconsole [udbg0] enabled
[    0.000000] CPU maps initialized for 8 threads per core
[    0.000000]  (thread shift is 3)
[    0.000000] Allocated 5760 bytes for 160 pacas
[    0.000000] -----------------------------------------------------
[    0.000000] phys_mem_size     = 0x10000000000
[    0.000000] dcache_bsize      = 0x80
[    0.000000] icache_bsize      = 0x80
[    0.000000] cpu_features      = 0x000000fb8f5db187
[    0.000000]   possible        = 0x003ffbfbcf5fb187
[    0.000000]   always          = 0x0000000380008181
[    0.000000] cpu_user_features = 0xdc0065c2 0xef000000
[    0.000000] mmu_features      = 0x7c006e01
[    0.000000]   possible        = 0x00000000fe00fe41
[    0.000000]   always          = 0x0000000000000000
[    0.000000] firmware_features = 0x0000000110000000
[    0.000000] vmalloc start     = 0xc008000000000000
[    0.000000] IO start          = 0xc00a000000000000
[    0.000000] vmemmap start     = 0xc00c000000000000
[    0.000000] hash-mmu: ppc64_pft_size    = 0x0
[    0.000000] hash-mmu: htab_hash_mask    = 0x7fffff
[    0.000000] -----------------------------------------------------
[    0.000000] NODE_DATA(0) allocated [mem 0x7fff934780-0x7fff93bfff]
[    0.000000] NODE_DATA(8) allocated [mem 0xffff07d880-0xffff0850ff]
[    0.000000] rfi-flush: ori type flush available
[    0.000000] rfi-flush: patched 13 locations (ori type flush)
[    0.000000] count-cache-flush: flush disabled.
[    0.000000] link-stack-flush: software flush enabled.
[    0.000000] entry-flush: patched 61 locations (no flush)
[    0.000000] uaccess-flush: patched 1 locations (no flush)
[    0.000000] stf-barrier: hwsync barrier available
[    0.000000] stf-barrier: patched 61 entry locations (hwsync barrier)
[    0.000000] stf-barrier: patched 13 exit locations (hwsync barrier)
[    0.000000] OPAL nvram setup, 589824 bytes
[    0.000000] barrier-nospec: using ORI speculation barrier
[    0.000000] barrier-nospec: patched 298 locations
[    0.000000] Top of RAM: 0x10000000000, Total RAM: 0x10000000000
[    0.000000] Memory hole size: 0MB
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x000000ffffffffff]
[    0.000000]   Device   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x0000007fffffffff]
[    0.000000]   node   8: [mem 0x0000008000000000-0x000000ffffffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000007fffffffff]
[    0.000000] Initmem setup node 8 [mem 0x0000008000000000-0x000000ffffffffff]
[    0.000000] percpu: Embedded 3 pages/cpu s126744 r0 d69864 u262144
[    0.000000] pcpu-alloc: s126744 r0 d69864 u262144 alloc=1*1048576
[    0.000000] pcpu-alloc: [0] 000 001 002 003 [0] 004 005 006 007 
[    0.000000] pcpu-alloc: [0] 008 009 010 011 [0] 012 013 014 015 
[    0.000000] pcpu-alloc: [0] 016 017 018 019 [0] 020 021 022 023 
[    0.000000] pcpu-alloc: [0] 024 025 026 027 [0] 028 029 030 031 
[    0.000000] pcpu-alloc: [0] 032 033 034 035 [0] 036 037 038 039 
[    0.000000] pcpu-alloc: [0] 040 041 042 043 [0] 044 045 046 047 
[    0.000000] pcpu-alloc: [0] 048 049 050 051 [0] 052 053 054 055 
[    0.000000] pcpu-alloc: [0] 056 057 058 059 [0] 060 061 062 063 
[    0.000000] pcpu-alloc: [0] 064 065 066 067 [0] 068 069 070 071 
[    0.000000] pcpu-alloc: [0] 072 073 074 075 [0] 076 077 078 079 
[    0.000000] pcpu-alloc: [1] 080 081 082 083 [1] 084 085 086 087 
[    0.000000] pcpu-alloc: [1] 088 089 090 091 [1] 092 093 094 095 
[    0.000000] pcpu-alloc: [1] 096 097 098 099 [1] 100 101 102 103 
[    0.000000] pcpu-alloc: [1] 104 105 106 107 [1] 108 109 110 111 
[    0.000000] pcpu-alloc: [1] 112 113 114 115 [1] 116 117 118 119 
[    0.000000] pcpu-alloc: [1] 120 121 122 123 [1] 124 125 126 127 
[    0.000000] pcpu-alloc: [1] 128 129 130 131 [1] 132 133 134 135 
[    0.000000] pcpu-alloc: [1] 136 137 138 139 [1] 140 141 142 143 
[    0.000000] pcpu-alloc: [1] 144 145 146 147 [1] 148 149 150 151 
[    0.000000] pcpu-alloc: [1] 152 153 154 155 [1] 156 157 158 159 
[    0.000000] Kernel command line: root=UUID=2c3dd738-785a-469b-843e-9f0ba8b47b0d ro rootflags=subvol=@ quiet splash 
[    0.000000] Unknown kernel command line parameters "splash", will be passed to user space.
[    0.000000] printk: log_buf_len individual max cpu contribution: 4096 bytes
[    0.000000] printk: log_buf_len total cpu_extra contributions: 651264 bytes
[    0.000000] printk: log_buf_len min size: 131072 bytes
[    0.000000] printk: log buffer data + meta data: 1048576 + 4456448 = 5505024 bytes
[    0.000000] printk: early log buf free: 123808(94%)
[    0.000000] kvm_cma_reserve: reserving 52428 MiB for global area
[    0.000000] cma: Reserved 52428 MiB at 0x0000000100000000
[    0.000000] Fallback order for Node 0: 0 8 
[    0.000000] Fallback order for Node 8: 8 0 
[    0.000000] Built 2 zonelists, mobility grouping on.  Total pages: 16777216
[    0.000000] Policy zone: Normal
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] stackdepot: allocating hash table via alloc_large_system_hash
[    0.000000] stackdepot hash table entries: 1048576 (order: 8, 16777216 bytes, linear)
[    0.000000] stackdepot: allocating space for 8191 stack pools via memblock
[    0.000000] SLUB: HWalign=128, Order=0-3, MinObjects=0, CPUs=160, Nodes=9
[    0.000000] ftrace: allocating 51243 entries in 13 pages
[    0.000000] ftrace: allocated 13 pages with 3 groups
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=2048 to nr_cpu_ids=160.
[    0.000000] 	Trampoline variant of Tasks RCU enabled.
[    0.000000] 	Rude variant of Tasks RCU enabled.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=160
[    0.000000] RCU Tasks: Setting shift to 8 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=160.
[    0.000000] RCU Tasks Rude: Setting shift to 8 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=160.
[    0.000000] NR_IRQS: 512, nr_irqs: 512, preallocated irqs: 16
[    0.000000] ICS OPAL backend registered
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes to big.
[    0.000000] time_init: decrementer frequency = 512.000000 MHz
[    0.000000] time_init: processor frequency   = 2926.000000 MHz
[    0.000001] clocksource: timebase: mask: 0xffffffffffffffff max_cycles: 0x761537d007, max_idle_ns: 440795202126 ns
[    0.000012] clocksource: timebase mult[1f40000] shift[24] registered
[    0.000026] clockevent: decrementer mult[83126e98] shift[32] cpu[0]
[    0.006585] Console: colour dummy device 80x25
[    0.006747] printk: legacy console [hvc0] enabled
[    0.006756] printk: legacy bootconsole [udbg0] disabled
[    0.017250] mempolicy: Enabling automatic NUMA balancing. Configure with numa_balancing= or the kernel.numa_balancing sysctl
[    0.017275] pid_max: default: 163840 minimum: 1280
[    0.142947] Yama: becoming mindful.
[    0.142975] SELinux:  Initializing.
[    0.198807] TOMOYO Linux initialized
[    0.233462] Dentry cache hash table entries: 33554432 (order: 12, 268435456 bytes, vmalloc)
[    0.246051] Inode-cache hash table entries: 16777216 (order: 11, 134217728 bytes, vmalloc)
[    0.252805] Mount-cache hash table entries: 524288 (order: 6, 4194304 bytes, vmalloc)
[    0.253238] Mountpoint-cache hash table entries: 524288 (order: 6, 4194304 bytes, vmalloc)
[    0.259651] VFS: Finished mounting rootfs on nullfs
[    0.304680] POWER8 performance monitor hardware support registered
[    0.305353] rcu: Hierarchical SRCU implementation.
[    0.305359] rcu: 	Max phase no-delay instances is 1000.
[    0.305652] Timer migration: 4 hierarchy levels; 8 children per group; 3 crossnode level
[    0.317377] smp: Bringing up secondary CPUs ...
[    0.679222] smp: Brought up 2 nodes, 160 CPUs
[    0.679244] numa: Node 0 CPUs: 0-79
[    0.679270] numa: Node 8 CPUs: 80-159
[    0.723053] Memory: 1017008576K/1073741824K available (22080K kernel code, 3392K rwdata, 10688K rodata, 8768K init, 4181K bss, 2474688K reserved, 53690368K cma-reserved)
[    0.758408] devtmpfs: initialized
[    1.110158] Initializing IODA2 PHB (/pciex@3fffe40000000)
[    1.110330] PCI host bridge /pciex@3fffe40000000 (primary) ranges:
[    1.110361]  MEM 0x00003fe000000000..0x00003fe07ffeffff -> 0x0000000080000000 
[    1.110811]  MEM 0x0000200000000000..0x000020ffffffffff -> 0x0000200000000000 (M64 #0..15)
[    1.110826]  Using M64 #15 as default window
[    1.110891]   256 (255) PE's M32: 0x80000000 [segment=0x800000]
[    1.110903]                  M64: 0x10000000000 [segment=0x100000000]
[    1.110919]   Allocated bitmap for 2040 MSIs (base IRQ 0x800)
[    1.112752] Initializing IODA2 PHB (/pciex@3fffe40100000)
[    1.112866] PCI host bridge /pciex@3fffe40100000  ranges:
[    1.112889]  MEM 0x00003fe080000000..0x00003fe0fffeffff -> 0x0000000080000000 
[    1.113314]  MEM 0x0000210000000000..0x000021ffffffffff -> 0x0000210000000000 (M64 #0..15)
[    1.113328]  Using M64 #15 as default window
[    1.113391]   256 (255) PE's M32: 0x80000000 [segment=0x800000]
[    1.113402]                  M64: 0x10000000000 [segment=0x100000000]
[    1.113417]   Allocated bitmap for 2040 MSIs (base IRQ 0x1000)
[    1.115339] Initializing IODA2 PHB (/pciex@3fffe41000000)
[    1.115474] PCI host bridge /pciex@3fffe41000000  ranges:
[    1.115498]  MEM 0x00003fe800000000..0x00003fe87ffeffff -> 0x0000000080000000 
[    1.115924]  MEM 0x0000240000000000..0x000024ffffffffff -> 0x0000240000000000 (M64 #0..15)
[    1.115938]  Using M64 #15 as default window
[    1.115998]   256 (255) PE's M32: 0x80000000 [segment=0x800000]
[    1.116009]                  M64: 0x10000000000 [segment=0x100000000]
[    1.116024]   Allocated bitmap for 2040 MSIs (base IRQ 0x10800)
[    1.117944] Initializing IODA2 PHB (/pciex@3fffe41100000)
[    1.118061] PCI host bridge /pciex@3fffe41100000  ranges:
[    1.118084]  MEM 0x00003fe880000000..0x00003fe8fffeffff -> 0x0000000080000000 
[    1.118510]  MEM 0x0000250000000000..0x000025ffffffffff -> 0x0000250000000000 (M64 #0..15)
[    1.118524]  Using M64 #15 as default window
[    1.118583]   256 (255) PE's M32: 0x80000000 [segment=0x800000]
[    1.118594]                  M64: 0x10000000000 [segment=0x100000000]
[    1.118609]   Allocated bitmap for 2040 MSIs (base IRQ 0x11000)
[    1.120723] Initializing IODA2 PHB (/pciex@3fffe41200000)
[    1.120863] PCI host bridge /pciex@3fffe41200000  ranges:
[    1.120886]  MEM 0x00003fe900000000..0x00003fe97ffeffff -> 0x0000000080000000 
[    1.121311]  MEM 0x0000260000000000..0x000026ffffffffff -> 0x0000260000000000 (M64 #0..15)
[    1.121324]  Using M64 #15 as default window
[    1.121380]   256 (255) PE's M32: 0x80000000 [segment=0x800000]
[    1.121391]                  M64: 0x10000000000 [segment=0x100000000]
[    1.121406]   Allocated bitmap for 2040 MSIs (base IRQ 0x11800)
[    1.125864] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    1.125939] posixtimers hash table entries: 131072 (order: 5, 2097152 bytes, vmalloc)
[    1.130038] futex hash table entries: 32768 (4194304 bytes on 2 NUMA nodes, total 8192 KiB, linear).
[    1.202258] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    1.204054] audit: initializing netlink subsys (disabled)
[    1.204585] audit: type=2000 audit(1778050876.196:1): state=initialized audit_enabled=0 res=1
[    1.208116] thermal_sys: Registered thermal governor 'fair_share'
[    1.208126] thermal_sys: Registered thermal governor 'bang_bang'
[    1.208135] thermal_sys: Registered thermal governor 'step_wise'
[    1.208144] thermal_sys: Registered thermal governor 'user_space'
[    1.208315] cpuidle: using governor ladder
[    1.208403] cpuidle: using governor menu
[    1.209675] pstore: Using crash dump compression: deflate
[    1.209685] pstore: Registered nvram as persistent store backend
[    1.214159] EEH: PowerNV platform initialized
[    1.406801] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    1.420321] HugeTLB: registered 16.0 MiB page size, pre-allocated 0 pages
[    1.420327] HugeTLB: 0 KiB vmemmap can be freed for a 16.0 MiB page
[    1.420332] HugeTLB: registered 16.0 GiB page size, pre-allocated 0 pages
[    1.420336] HugeTLB: 0 KiB vmemmap can be freed for a 16.0 GiB page
[    1.440032] iommu: Default domain type: Translated
[    1.440037] iommu: DMA domain TLB invalidation policy: strict mode
[    1.454595] SCSI subsystem initialized
[    1.455030] libata version 3.00 loaded.
[    1.455262] usbcore: registered new interface driver usbfs
[    1.455316] usbcore: registered new interface driver hub
[    1.455632] usbcore: registered new device driver usb
[    1.455794] pps_core: LinuxPPS API ver. 1 registered
[    1.455797] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    1.455815] PTP clock support registered
[    1.456560] EDAC MC: Ver: 3.0.0
[    1.459096] NetLabel: Initializing
[    1.459099] NetLabel:  domain hash size = 128
[    1.459102] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    1.459156] NetLabel:  unlabeled traffic allowed by default
[    1.459359] PCI: Probing PCI hardware
[    1.459637] PCI host bridge to bus 0000:00
[    1.459644] pci_bus 0000:00: root bus resource [mem 0x3fe000000000-0x3fe07ffeffff] (bus address [0x80000000-0xfffeffff])
[    1.459652] pci_bus 0000:00: root bus resource [mem 0x200000000000-0x20fdffffffff 64bit pref]
[    1.459658] pci_bus 0000:00: root bus resource [bus 00-ff]
[    1.459663] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to ff
[    1.459738] pci 0000:00:00.0: [1014:03dc] type 01 class 0x060400 PCIe Root Port
[    1.459783] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    1.459923] pci 0000:00:00.0: PME# supported from D0 D3hot D3cold
[    1.462061] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    1.462098] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to ff
[    1.462353] PCI host bridge to bus 0001:00
[    1.462359] pci_bus 0001:00: root bus resource [mem 0x3fe080000000-0x3fe0fffeffff] (bus address [0x80000000-0xfffeffff])
[    1.462365] pci_bus 0001:00: root bus resource [mem 0x210000000000-0x21fdffffffff 64bit pref]
[    1.462371] pci_bus 0001:00: root bus resource [bus 00-ff]
[    1.462375] pci_bus 0001:00: busn_res: [bus 00-ff] end is updated to ff
[    1.462427] pci 0001:00:00.0: [1014:03dc] type 01 class 0x060400 PCIe Root Port
[    1.462472] pci 0001:00:00.0: PCI bridge to [bus 01]
[    1.462489] pci 0001:00:00.0:   bridge window [mem 0x3fe080000000-0x3fe0ffefffff]
[    1.462509] pci 0001:00:00.0:   bridge window [mem 0x210000000000-0x21fdffffffff 64bit pref]
[    1.462612] pci 0001:00:00.0: PME# supported from D0 D3hot D3cold
[    1.464691] pci 0001:01:00.0: [14e4:168a] type 00 class 0x020000 PCIe Endpoint
[    1.464773] pci 0001:01:00.0: BAR 0 [mem 0x210000000000-0x2100007fffff 64bit pref]
[    1.464783] pci 0001:01:00.0: BAR 2 [mem 0x210000800000-0x210000ffffff 64bit pref]
[    1.464791] pci 0001:01:00.0: BAR 4 [mem 0x210004000000-0x21000400ffff 64bit pref]
[    1.464798] pci 0001:01:00.0: ROM [mem 0x00000000-0x0003ffff pref]
[    1.465017] pci 0001:01:00.0: PME# supported from D0 D3hot D3cold
[    1.477309] pci 0001:01:00.1: [14e4:168a] type 00 class 0x020000 PCIe Endpoint
[    1.477383] pci 0001:01:00.1: BAR 0 [mem 0x210001000000-0x2100017fffff 64bit pref]
[    1.477391] pci 0001:01:00.1: BAR 2 [mem 0x210001800000-0x210001ffffff 64bit pref]
[    1.477398] pci 0001:01:00.1: BAR 4 [mem 0x210004010000-0x21000401ffff 64bit pref]
[    1.477403] pci 0001:01:00.1: ROM [mem 0x00000000-0x0003ffff pref]
[    1.477606] pci 0001:01:00.1: PME# supported from D0 D3hot D3cold
[    1.489280] pci 0001:01:00.2: [14e4:168a] type 00 class 0x020000 PCIe Endpoint
[    1.489354] pci 0001:01:00.2: BAR 0 [mem 0x210002000000-0x2100027fffff 64bit pref]
[    1.489361] pci 0001:01:00.2: BAR 2 [mem 0x210002800000-0x210002ffffff 64bit pref]
[    1.489369] pci 0001:01:00.2: BAR 4 [mem 0x210004020000-0x21000402ffff 64bit pref]
[    1.489374] pci 0001:01:00.2: ROM [mem 0x00000000-0x0003ffff pref]
[    1.489577] pci 0001:01:00.2: PME# supported from D0 D3hot D3cold
[    1.501284] pci 0001:01:00.3: [14e4:168a] type 00 class 0x020000 PCIe Endpoint
[    1.501359] pci 0001:01:00.3: BAR 0 [mem 0x210003000000-0x2100037fffff 64bit pref]
[    1.501367] pci 0001:01:00.3: BAR 2 [mem 0x210003800000-0x210003ffffff 64bit pref]
[    1.501374] pci 0001:01:00.3: BAR 4 [mem 0x210004030000-0x21000403ffff 64bit pref]
[    1.501379] pci 0001:01:00.3: ROM [mem 0x00000000-0x0003ffff pref]
[    1.501585] pci 0001:01:00.3: PME# supported from D0 D3hot D3cold
[    1.513259] pci 0001:01:00.0: ASPM: default states L0s
[    1.513365] pci 0001:00:00.0: PCI bridge to [bus 01]
[    1.513396] pci_bus 0001:00: busn_res: [bus 00-ff] end is updated to 01
[    1.513550] PCI host bridge to bus 0020:00
[    1.513555] pci_bus 0020:00: root bus resource [mem 0x3fe800000000-0x3fe87ffeffff] (bus address [0x80000000-0xfffeffff])
[    1.513559] pci_bus 0020:00: root bus resource [mem 0x240000000000-0x24fdffffffff 64bit pref]
[    1.513564] pci_bus 0020:00: root bus resource [bus 00-ff]
[    1.513567] pci_bus 0020:00: busn_res: [bus 00-ff] end is updated to ff
[    1.513614] pci 0020:00:00.0: [1014:03dc] type 01 class 0x060400 PCIe Root Port
[    1.513655] pci 0020:00:00.0: PCI bridge to [bus 01-ff]
[    1.513784] pci 0020:00:00.0: PME# supported from D0 D3hot D3cold
[    1.515649] pci 0020:00:00.0: PCI bridge to [bus 01-ff]
[    1.515683] pci_bus 0020:00: busn_res: [bus 00-ff] end is updated to ff
[    1.519571] PCI host bridge to bus 0021:00
[    1.519576] pci_bus 0021:00: root bus resource [mem 0x3fe880000000-0x3fe8fffeffff] (bus address [0x80000000-0xfffeffff])
[    1.519582] pci_bus 0021:00: root bus resource [mem 0x250000000000-0x25fdffffffff 64bit pref]
[    1.519586] pci_bus 0021:00: root bus resource [bus 00-ff]
[    1.519589] pci_bus 0021:00: busn_res: [bus 00-ff] end is updated to ff
[    1.519637] pci 0021:00:00.0: [1014:03dc] type 01 class 0x060400 PCIe Root Port
[    1.519681] pci 0021:00:00.0: PCI bridge to [bus 01-15]
[    1.519697] pci 0021:00:00.0:   bridge window [mem 0x3fe880000000-0x3fe8ffefffff]
[    1.519716] pci 0021:00:00.0:   bridge window [mem 0x250000000000-0x25fdffffffff 64bit pref]
[    1.519815] pci 0021:00:00.0: PME# supported from D0 D3hot D3cold
[    1.521678] pci 0021:01:00.0: [10b5:8725] type 01 class 0x060400 PCIe Switch Upstream Port
[    1.521723] pci 0021:01:00.0: BAR 0 [mem 0x3fe883800000-0x3fe88383ffff]
[    1.521732] pci 0021:01:00.0: PCI bridge to [bus 02-15]
[    1.521749] pci 0021:01:00.0:   bridge window [mem 0x3fe880000000-0x3fe8ffefffff]
[    1.521770] pci 0021:01:00.0:   bridge window [mem 0x250000000000-0x25fdffffffff 64bit pref]
[    1.521999] pci 0021:01:00.0: PME# supported from D0 D3hot D3cold
[    1.522389] pci 0021:01:00.1: [10b5:87d0] type 00 class 0x088000 PCIe Endpoint
[    1.522459] pci 0021:01:00.1: BAR 0 [mem 0x3fe883840000-0x3fe883841fff]
[    1.522524] pci 0021:01:00.1: BAR 0 [mem size 0x00002000]: requesting alignment to 0x10000
[    1.522886] pci 0021:01:00.2: [10b5:87d0] type 00 class 0x088000 PCIe Endpoint
[    1.522956] pci 0021:01:00.2: BAR 0 [mem 0x3fe883850000-0x3fe883851fff]
[    1.523022] pci 0021:01:00.2: BAR 0 [mem size 0x00002000]: requesting alignment to 0x10000
[    1.523384] pci 0021:01:00.3: [10b5:87d0] type 00 class 0x088000 PCIe Endpoint
[    1.523455] pci 0021:01:00.3: BAR 0 [mem 0x3fe883860000-0x3fe883861fff]
[    1.523520] pci 0021:01:00.3: BAR 0 [mem size 0x00002000]: requesting alignment to 0x10000
[    1.523884] pci 0021:01:00.4: [10b5:87d0] type 00 class 0x088000 PCIe Endpoint
[    1.523956] pci 0021:01:00.4: BAR 0 [mem 0x3fe883870000-0x3fe883871fff]
[    1.524021] pci 0021:01:00.4: BAR 0 [mem size 0x00002000]: requesting alignment to 0x10000
[    1.524358] pci 0021:00:00.0: PCI bridge to [bus 01-15]
[    1.524625] pci 0021:02:01.0: [10b5:8725] type 01 class 0x060400 PCIe Switch Downstream Port
[    1.524677] pci 0021:02:01.0: PCI bridge to [bus 03-07]
[    1.524695] pci 0021:02:01.0:   bridge window [mem 0x3fe880000000-0x3fe8807fffff]
[    1.524717] pci 0021:02:01.0:   bridge window [mem 0x250000000000-0x2500ffffffff 64bit pref]
[    1.524966] pci 0021:02:01.0: PME# supported from D0 D3hot D3cold
[    1.525685] pci 0021:02:08.0: [10b5:8725] type 01 class 0x060400 PCIe Switch Downstream Port
[    1.525738] pci 0021:02:08.0: PCI bridge to [bus 08-0c]
[    1.526021] pci 0021:02:08.0: PME# supported from D0 D3hot D3cold
[    1.526435] pci 0021:02:09.0: [10b5:8725] type 01 class 0x060400 PCIe Switch Downstream Port
[    1.526489] pci 0021:02:09.0: PCI bridge to [bus 0d]
[    1.526507] pci 0021:02:09.0:   bridge window [mem 0x3fe880800000-0x3fe880ffffff]
[    1.526772] pci 0021:02:09.0: PME# supported from D0 D3hot D3cold
[    1.527185] pci 0021:02:0a.0: [10b5:8725] type 01 class 0x060400 PCIe Switch Downstream Port
[    1.527239] pci 0021:02:0a.0: PCI bridge to [bus 0e]
[    1.527258] pci 0021:02:0a.0:   bridge window [mem 0x3fe881000000-0x3fe8817fffff]
[    1.527523] pci 0021:02:0a.0: PME# supported from D0 D3hot D3cold
[    1.527946] pci 0021:02:0b.0: [10b5:8725] type 01 class 0x060400 PCIe Switch Downstream Port
[    1.528001] pci 0021:02:0b.0: PCI bridge to [bus 0f-10]
[    1.528019] pci 0021:02:0b.0:   bridge window [mem 0x3fe881800000-0x3fe882ffffff]
[    1.528287] pci 0021:02:0b.0: PME# supported from D0 D3hot D3cold
[    1.528711] pci 0021:02:0c.0: [10b5:8725] type 01 class 0x060400 PCIe Switch Downstream Port
[    1.528767] pci 0021:02:0c.0: PCI bridge to [bus 11-15]
[    1.529060] pci 0021:02:0c.0: PME# supported from D0 D3hot D3cold
[    1.530316] pci 0021:01:00.0: PCI bridge to [bus 02-15]
[    1.530509] pci 0021:02:01.0: PCI bridge to [bus 03-07]
[    1.530706] pci 0021:02:08.0: PCI bridge to [bus 08-0c]
[    1.530945] pci 0021:0d:00.0: [104c:8241] type 00 class 0x0c0330 PCIe Endpoint
[    1.531038] pci 0021:0d:00.0: BAR 0 [mem 0x3fe880800000-0x3fe88080ffff 64bit]
[    1.531047] pci 0021:0d:00.0: BAR 2 [mem 0x3fe880810000-0x3fe880811fff 64bit]
[    1.531103] pci 0021:0d:00.0: BAR 2 [mem size 0x00002000 64bit]: requesting alignment to 0x10000
[    1.531221] pci 0021:0d:00.0: supports D1 D2
[    1.531223] pci 0021:0d:00.0: PME# supported from D0 D1 D2 D3hot
[    1.536985] pci 0021:0d:00.0: ASPM: default states L1
[    1.537033] pci 0021:02:09.0: PCI bridge to [bus 0d]
[    1.537264] pci 0021:0e:00.0: [1b4b:9235] type 00 class 0x010601 PCIe Legacy Endpoint
[    1.537352] pci 0021:0e:00.0: BAR 0 [io  0x8000-0x8007]
[    1.537358] pci 0021:0e:00.0: BAR 1 [io  0x8040-0x8043]
[    1.537364] pci 0021:0e:00.0: BAR 2 [io  0x8100-0x8107]
[    1.537369] pci 0021:0e:00.0: BAR 3 [io  0x8140-0x8143]
[    1.537375] pci 0021:0e:00.0: BAR 4 [io  0x800000-0x80001f]
[    1.537380] pci 0021:0e:00.0: BAR 5 [mem 0x3fe881000000-0x3fe8810007ff]
[    1.537386] pci 0021:0e:00.0: ROM [mem 0x3fe8d0000000-0x3fe8d000ffff pref]
[    1.537425] pci 0021:0e:00.0: Enabling fixed DMA alias to 00.1
[    1.537434] pci 0021:0e:00.0: BAR 5 [mem size 0x00000800]: requesting alignment to 0x10000
[    1.537538] pci 0021:0e:00.0: PME# supported from D3hot
[    1.545010] pci 0021:0e:00.0: ASPM: default states L1
[    1.545027] pci 0021:02:0a.0: PCI bridge to [bus 0e]
[    1.545263] pci 0021:0f:00.0: [1a03:1150] type 01 class 0x060400 PCIe to PCI/PCI-X bridge
[    1.545330] pci 0021:0f:00.0: PCI bridge to [bus 10]
[    1.545354] pci 0021:0f:00.0:   bridge window [mem 0x3fe881800000-0x3fe882ffffff]
[    1.545594] pci 0021:0f:00.0: supports D1 D2
[    1.545597] pci 0021:0f:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    1.545879] pci 0021:0f:00.0: disabling ASPM on pre-1.1 PCIe device.  You can enable it with 'pcie_aspm=force'
[    1.545913] pci 0021:02:0b.0: PCI bridge to [bus 0f-10]
[    1.546030] pci_bus 0021:10: extended config space not accessible
[    1.546115] pci 0021:10:00.0: [1a03:2000] type 00 class 0x030000 conventional PCI endpoint
[    1.546224] pci 0021:10:00.0: BAR 0 [mem 0x3fe882000000-0x3fe882ffffff]
[    1.546231] pci 0021:10:00.0: BAR 1 [mem 0x3fe881800000-0x3fe88181ffff]
[    1.546238] pci 0021:10:00.0: BAR 2 [io  0x0000-0x007f]
[    1.546352] pci 0021:10:00.0: supports D1 D2
[    1.546355] pci 0021:10:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    1.548013] pci 0021:0f:00.0: PCI bridge to [bus 10]
[    1.548229] pci 0021:02:0c.0: PCI bridge to [bus 11-15]
[    1.548339] pci_bus 0021:00: busn_res: [bus 00-ff] end is updated to 15
[    1.548504] PCI host bridge to bus 0022:00
[    1.548509] pci_bus 0022:00: root bus resource [mem 0x3fe900000000-0x3fe97ffeffff] (bus address [0x80000000-0xfffeffff])
[    1.548514] pci_bus 0022:00: root bus resource [mem 0x260000000000-0x26fdffffffff 64bit pref]
[    1.548525] pci_bus 0022:00: root bus resource [bus 00-ff]
[    1.548528] pci_bus 0022:00: busn_res: [bus 00-ff] end is updated to ff
[    1.548575] pci 0022:00:00.0: [1014:03dc] type 01 class 0x060400 PCIe Root Port
[    1.548616] pci 0022:00:00.0: PCI bridge to [bus 01-ff]
[    1.548747] pci 0022:00:00.0: PME# supported from D0 D3hot D3cold
[    1.550572] pci 0022:00:00.0: PCI bridge to [bus 01-ff]
[    1.550606] pci_bus 0022:00: busn_res: [bus 00-ff] end is updated to ff
[    1.550614] pci 0000:00:00.0: disabling bridge window [io  0x0000-0xffffffffffffffff] to [bus 01-ff] (unused)
[    1.550618] pci 0000:00:00.0: disabling bridge window [mem 0x00000000-0xffffffffffffffff 64bit pref] to [bus 01-ff] (unused)
[    1.550622] pci 0000:00:00.0: disabling bridge window [mem 0x00000000-0xffffffffffffffff] to [bus 01-ff] (unused)
[    1.550627] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    1.550644] pci_bus 0000:00: resource 4 [mem 0x3fe000000000-0x3fe07ffeffff]
[    1.550647] pci_bus 0000:00: resource 5 [mem 0x200000000000-0x20fdffffffff 64bit pref]
[    1.550650] pci_bus 0000:01: resource 0 [io  0x0000-0xffffffffffffffff disabled]
[    1.550653] pci_bus 0000:01: resource 1 [mem 0x00000000-0xffffffffffffffff disabled]
[    1.550656] pci_bus 0000:01: resource 2 [mem 0x00000000-0xffffffffffffffff 64bit pref disabled]
[    1.550660] pci 0001:00:00.0: disabling bridge window [io  0x0000-0xffffffffffffffff] to [bus 01] (unused)
[    1.550684] pci 0001:00:00.0: bridge window [mem 0x00800000-0x007fffff] to [bus 01] add_size 800000 add_align 800000
[    1.550695] pci 0001:00:00.0: bridge window [mem 0x210000000000-0x2100ffffffff 64bit pref]: assigned
[    1.550699] pci 0001:00:00.0: bridge window [mem 0x3fe080000000-0x3fe0807fffff]: assigned
[    1.550740] pci 0001:01:00.0: BAR 0 [mem 0x210000000000-0x2100007fffff 64bit pref]: assigned
[    1.550763] pci 0001:01:00.0: BAR 2 [mem 0x210000800000-0x210000ffffff 64bit pref]: assigned
[    1.550786] pci 0001:01:00.1: BAR 0 [mem 0x210001000000-0x2100017fffff 64bit pref]: assigned
[    1.550808] pci 0001:01:00.1: BAR 2 [mem 0x210001800000-0x210001ffffff 64bit pref]: assigned
[    1.550829] pci 0001:01:00.2: BAR 0 [mem 0x210002000000-0x2100027fffff 64bit pref]: assigned
[    1.550852] pci 0001:01:00.2: BAR 2 [mem 0x210002800000-0x210002ffffff 64bit pref]: assigned
[    1.550875] pci 0001:01:00.3: BAR 0 [mem 0x210003000000-0x2100037fffff 64bit pref]: assigned
[    1.550898] pci 0001:01:00.3: BAR 2 [mem 0x210003800000-0x210003ffffff 64bit pref]: assigned
[    1.550920] pci 0001:01:00.0: ROM [mem 0x3fe080000000-0x3fe08003ffff pref]: assigned
[    1.550924] pci 0001:01:00.1: ROM [mem 0x3fe080040000-0x3fe08007ffff pref]: assigned
[    1.550927] pci 0001:01:00.2: ROM [mem 0x3fe080080000-0x3fe0800bffff pref]: assigned
[    1.550930] pci 0001:01:00.3: ROM [mem 0x3fe0800c0000-0x3fe0800fffff pref]: assigned
[    1.550934] pci 0001:01:00.0: BAR 4 [mem 0x210004000000-0x21000400ffff 64bit pref]: assigned
[    1.550956] pci 0001:01:00.1: BAR 4 [mem 0x210004010000-0x21000401ffff 64bit pref]: assigned
[    1.550978] pci 0001:01:00.2: BAR 4 [mem 0x210004020000-0x21000402ffff 64bit pref]: assigned
[    1.551001] pci 0001:01:00.3: BAR 4 [mem 0x210004030000-0x21000403ffff 64bit pref]: assigned
[    1.551036] pci 0001:00:00.0: PCI bridge to [bus 01]
[    1.551044] pci 0001:00:00.0:   bridge window [mem 0x3fe080000000-0x3fe0ffefffff]
[    1.551050] pci 0001:00:00.0:   bridge window [mem 0x210000000000-0x21fdfff0ffff 64bit pref]
[    1.551059] pci_bus 0001:00: resource 4 [mem 0x3fe080000000-0x3fe0fffeffff]
[    1.551062] pci_bus 0001:00: resource 5 [mem 0x210000000000-0x21fdffffffff 64bit pref]
[    1.551065] pci_bus 0001:01: resource 0 [io  0x0000-0xffffffffffffffff disabled]
[    1.551068] pci_bus 0001:01: resource 1 [mem 0x3fe080000000-0x3fe0ffefffff]
[    1.551070] pci_bus 0001:01: resource 2 [mem 0x210000000000-0x21fdfff0ffff 64bit pref]
[    1.551074] pci 0020:00:00.0: disabling bridge window [io  0x0000-0xffffffffffffffff] to [bus 01-ff] (unused)
[    1.551077] pci 0020:00:00.0: disabling bridge window [mem 0x00000000-0xffffffffffffffff 64bit pref] to [bus 01-ff] (unused)
[    1.551080] pci 0020:00:00.0: disabling bridge window [mem 0x00000000-0xffffffffffffffff] to [bus 01-ff] (unused)
[    1.551084] pci 0020:00:00.0: PCI bridge to [bus 01-ff]
[    1.551101] pci_bus 0020:00: resource 4 [mem 0x3fe800000000-0x3fe87ffeffff]
[    1.551104] pci_bus 0020:00: resource 5 [mem 0x240000000000-0x24fdffffffff 64bit pref]
[    1.551107] pci_bus 0020:01: resource 0 [io  0x0000-0xffffffffffffffff disabled]
[    1.551109] pci_bus 0020:01: resource 1 [mem 0x00000000-0xffffffffffffffff disabled]
[    1.551112] pci_bus 0020:01: resource 2 [mem 0x00000000-0xffffffffffffffff 64bit pref disabled]
[    1.551118] pci 0021:02:01.0: bridge window [io  0x1000-0x0fff] to [bus 03-07] add_size 1000
[    1.551123] pci 0021:02:01.0: bridge window [mem 0x100000000-0xffffffff 64bit pref] to [bus 03-07] add_size 100000000 add_align 100000000
[    1.551129] pci 0021:02:01.0: bridge window [mem 0x00800000-0x007fffff] to [bus 03-07] add_size 800000 add_align 800000
[    1.551133] pci 0021:02:08.0: disabling bridge window [io  0x0000-0xffffffffffffffff] to [bus 08-0c] (unused)
[    1.551136] pci 0021:02:08.0: disabling bridge window [mem 0x00000000-0xffffffffffffffff 64bit pref] to [bus 08-0c] (unused)
[    1.551139] pci 0021:02:08.0: disabling bridge window [mem 0x00000000-0xffffffffffffffff] to [bus 08-0c] (unused)
[    1.551143] pci 0021:02:09.0: disabling bridge window [io  0x0000-0xffffffffffffffff] to [bus 0d] (unused)
[    1.551146] pci 0021:02:09.0: disabling bridge window [mem 0x00000000-0xffffffffffffffff 64bit pref] to [bus 0d] (unused)
[    1.551150] pci 0021:02:0a.0: disabling bridge window [mem 0x00000000-0xffffffffffffffff 64bit pref] to [bus 0e] (unused)
[    1.551156] pci 0021:0f:00.0: disabling bridge window [mem 0x00000000-0xffffffffffffffff 64bit pref] to [bus 10] (unused)
[    1.551161] pci 0021:02:0b.0: disabling bridge window [mem 0x00000000-0xffffffffffffffff 64bit pref] to [bus 0f-10] (unused)
[    1.551164] pci 0021:02:0c.0: disabling bridge window [io  0x0000-0xffffffffffffffff] to [bus 11-15] (unused)
[    1.551168] pci 0021:02:0c.0: disabling bridge window [mem 0x00000000-0xffffffffffffffff 64bit pref] to [bus 11-15] (unused)
[    1.551171] pci 0021:02:0c.0: disabling bridge window [mem 0x00000000-0xffffffffffffffff] to [bus 11-15] (unused)
[    1.551176] pci 0021:01:00.0: bridge window [io  0x1000-0x2fff] to [bus 02-15] add_size 1000
[    1.551182] pci 0021:01:00.0: bridge window [mem 0x100000000-0xffffffff 64bit pref] to [bus 02-15] add_size 100000000 add_align 100000000
[    1.551189] pci 0021:01:00.0: bridge window [mem 0x00800000-0x02ffffff] to [bus 02-15] add_size 800000 add_align 800000
[    1.551195] pci 0021:00:00.0: bridge window [io  0x1000-0x2fff] to [bus 01-15] add_size 1000
[    1.551200] pci 0021:00:00.0: bridge window [mem 0x100000000-0xffffffff 64bit pref] to [bus 01-15] add_size 100000000 add_align 100000000
[    1.551207] pci 0021:00:00.0: bridge window [mem 0x00800000-0x037fffff] to [bus 01-15] add_size 800000 add_align 800000
[    1.551217] pci 0021:00:00.0: bridge window [mem 0x250000000000-0x2500ffffffff 64bit pref]: assigned
[    1.551220] pci 0021:00:00.0: bridge window [mem 0x3fe880000000-0x3fe8837fffff]: assigned
[    1.551224] pci 0021:00:00.0: bridge window [io  size 0x3000]: can't assign; no space
[    1.551227] pci 0021:00:00.0: bridge window [io  size 0x3000]: failed to assign
[    1.551234] pci 0021:00:00.0: bridge window [io  size 0x2000]: can't assign; no space
[    1.551237] pci 0021:00:00.0: bridge window [io  size 0x2000]: failed to assign
[    1.551258] pci 0021:01:00.0: bridge window [mem 0x250000000000-0x2500ffffffff 64bit pref]: assigned
[    1.551261] pci 0021:01:00.0: bridge window [mem 0x3fe880000000-0x3fe882ffffff]: assigned
[    1.551264] pci 0021:01:00.0: BAR 0 [mem 0x3fe883000000-0x3fe88303ffff]: assigned
[    1.551272] pci 0021:01:00.1: BAR 0 [mem 0x3fe883040000-0x3fe883041fff]: assigned
[    1.551279] pci 0021:01:00.2: BAR 0 [mem 0x3fe883050000-0x3fe883051fff]: assigned
[    1.551286] pci 0021:01:00.3: BAR 0 [mem 0x3fe883060000-0x3fe883061fff]: assigned
[    1.551294] pci 0021:01:00.4: BAR 0 [mem 0x3fe883070000-0x3fe883071fff]: assigned
[    1.551301] pci 0021:01:00.0: bridge window [io  size 0x3000]: can't assign; no space
[    1.551304] pci 0021:01:00.0: bridge window [io  size 0x3000]: failed to assign
[    1.551314] pci 0021:01:00.0: bridge window [io  size 0x2000]: can't assign; no space
[    1.551317] pci 0021:01:00.0: bridge window [io  size 0x2000]: failed to assign
[    1.551339] pci 0021:02:01.0: bridge window [mem 0x250000000000-0x2500ffffffff 64bit pref]: assigned
[    1.551342] pci 0021:02:0b.0: bridge window [mem 0x3fe880000000-0x3fe8817fffff]: assigned
[    1.551346] pci 0021:02:01.0: bridge window [mem 0x3fe881800000-0x3fe881ffffff]: assigned
[    1.551349] pci 0021:02:09.0: bridge window [mem 0x3fe882000000-0x3fe8827fffff]: assigned
[    1.551352] pci 0021:02:0a.0: bridge window [mem 0x3fe882800000-0x3fe882ffffff]: assigned
[    1.551355] pci 0021:02:01.0: bridge window [io  size 0x1000]: can't assign; no space
[    1.551358] pci 0021:02:01.0: bridge window [io  size 0x1000]: failed to assign
[    1.551362] pci 0021:02:0a.0: bridge window [io  size 0x1000]: can't assign; no space
[    1.551365] pci 0021:02:0a.0: bridge window [io  size 0x1000]: failed to assign
[    1.551369] pci 0021:02:0b.0: bridge window [io  size 0x1000]: can't assign; no space
[    1.551372] pci 0021:02:0b.0: bridge window [io  size 0x1000]: failed to assign
[    1.551382] pci 0021:02:0a.0: bridge window [io  size 0x1000]: can't assign; no space
[    1.551384] pci 0021:02:0a.0: bridge window [io  size 0x1000]: failed to assign
[    1.551387] pci 0021:02:0b.0: bridge window [io  size 0x1000]: can't assign; no space
[    1.551390] pci 0021:02:0b.0: bridge window [io  size 0x1000]: failed to assign
[    1.551393] pci 0021:02:01.0: bridge window [io  size 0x1000]: can't assign; no space
[    1.551395] pci 0021:02:01.0: bridge window [io  size 0x1000]: failed to assign
[    1.551403] pci 0021:02:01.0: PCI bridge to [bus 03-07]
[    1.551411] pci 0021:02:01.0:   bridge window [mem 0x3fe881800000-0x3fe881ffffff]
[    1.551418] pci 0021:02:01.0:   bridge window [mem 0x250000000000-0x2500ffffffff 64bit pref]
[    1.551428] pci 0021:02:08.0: PCI bridge to [bus 08-0c]
[    1.551451] pci 0021:0d:00.0: BAR 0 [mem 0x3fe882000000-0x3fe88200ffff 64bit]: assigned
[    1.551474] pci 0021:0d:00.0: BAR 2 [mem 0x3fe882010000-0x3fe882011fff 64bit]: assigned
[    1.551494] pci 0021:02:09.0: PCI bridge to [bus 0d]
[    1.551501] pci 0021:02:09.0:   bridge window [mem 0x3fe882000000-0x3fe8827fffff]
[    1.551529] pci 0021:0e:00.0: BAR 5 [mem 0x3fe882800000-0x3fe8828007ff]: assigned
[    1.551537] pci 0021:0e:00.0: ROM [mem 0x3fe882810000-0x3fe88281ffff pref]: assigned
[    1.551540] pci 0021:0e:00.0: BAR 4 [io  size 0x0020]: can't assign; no space
[    1.551543] pci 0021:0e:00.0: BAR 4 [io  size 0x0020]: failed to assign
[    1.551547] pci 0021:0e:00.0: BAR 0 [io  size 0x0008]: can't assign; no space
[    1.551550] pci 0021:0e:00.0: BAR 0 [io  size 0x0008]: failed to assign
[    1.551554] pci 0021:0e:00.0: BAR 2 [io  size 0x0008]: can't assign; no space
[    1.551557] pci 0021:0e:00.0: BAR 2 [io  size 0x0008]: failed to assign
[    1.551561] pci 0021:0e:00.0: BAR 1 [io  size 0x0004]: can't assign; no space
[    1.551563] pci 0021:0e:00.0: BAR 1 [io  size 0x0004]: failed to assign
[    1.551567] pci 0021:0e:00.0: BAR 3 [io  size 0x0004]: can't assign; no space
[    1.551570] pci 0021:0e:00.0: BAR 3 [io  size 0x0004]: failed to assign
[    1.551578] pci 0021:0e:00.0: BAR 4 [io  size 0x0020]: can't assign; no space
[    1.551581] pci 0021:0e:00.0: BAR 4 [io  size 0x0020]: failed to assign
[    1.551584] pci 0021:0e:00.0: BAR 0 [io  size 0x0008]: can't assign; no space
[    1.551586] pci 0021:0e:00.0: BAR 0 [io  size 0x0008]: failed to assign
[    1.551589] pci 0021:0e:00.0: BAR 2 [io  size 0x0008]: can't assign; no space
[    1.551592] pci 0021:0e:00.0: BAR 2 [io  size 0x0008]: failed to assign
[    1.551594] pci 0021:0e:00.0: BAR 1 [io  size 0x0004]: can't assign; no space
[    1.551597] pci 0021:0e:00.0: BAR 1 [io  size 0x0004]: failed to assign
[    1.551600] pci 0021:0e:00.0: BAR 3 [io  size 0x0004]: can't assign; no space
[    1.551602] pci 0021:0e:00.0: BAR 3 [io  size 0x0004]: failed to assign
[    1.551612] pci 0021:02:0a.0: PCI bridge to [bus 0e]
[    1.551620] pci 0021:02:0a.0:   bridge window [mem 0x3fe882800000-0x3fe882ffffff]
[    1.551636] pci 0021:0f:00.0: bridge window [mem 0x3fe880000000-0x3fe8817fffff]: assigned
[    1.551639] pci 0021:0f:00.0: bridge window [io  size 0x1000]: can't assign; no space
[    1.551642] pci 0021:0f:00.0: bridge window [io  size 0x1000]: failed to assign
[    1.551647] pci 0021:0f:00.0: bridge window [io  size 0x1000]: can't assign; no space
[    1.551649] pci 0021:0f:00.0: bridge window [io  size 0x1000]: failed to assign
[    1.551657] pci 0021:10:00.0: BAR 0 [mem 0x3fe880000000-0x3fe880ffffff]: assigned
[    1.551667] pci 0021:10:00.0: BAR 1 [mem 0x3fe881000000-0x3fe88101ffff]: assigned
[    1.551676] pci 0021:10:00.0: BAR 2 [io  size 0x0080]: can't assign; no space
[    1.551678] pci 0021:10:00.0: BAR 2 [io  size 0x0080]: failed to assign
[    1.551684] pci 0021:10:00.0: BAR 2 [io  size 0x0080]: can't assign; no space
[    1.551686] pci 0021:10:00.0: BAR 2 [io  size 0x0080]: failed to assign
[    1.551691] pci 0021:0f:00.0: PCI bridge to [bus 10]
[    1.551700] pci 0021:0f:00.0:   bridge window [mem 0x3fe880000000-0x3fe8817fffff]
[    1.551717] pci 0021:02:0b.0: PCI bridge to [bus 0f-10]
[    1.551727] pci 0021:02:0b.0:   bridge window [mem 0x3fe880000000-0x3fe8817fffff]
[    1.551745] pci 0021:02:0c.0: PCI bridge to [bus 11-15]
[    1.551765] pci 0021:01:00.0: PCI bridge to [bus 02-15]
[    1.551773] pci 0021:01:00.0:   bridge window [mem 0x3fe880000000-0x3fe8ffefffff]
[    1.551779] pci 0021:01:00.0:   bridge window [mem 0x250000000000-0x25fdfff0ffff 64bit pref]
[    1.551789] pci 0021:00:00.0: PCI bridge to [bus 01-15]
[    1.551797] pci 0021:00:00.0:   bridge window [mem 0x3fe880000000-0x3fe8ffefffff]
[    1.551803] pci 0021:00:00.0:   bridge window [mem 0x250000000000-0x25fdfff0ffff 64bit pref]
[    1.551813] pci_bus 0021:00: Some PCI device resources are unassigned, try booting with pci=realloc
[    1.551819] pci_bus 0021:00: resource 4 [mem 0x3fe880000000-0x3fe8fffeffff]
[    1.551822] pci_bus 0021:00: resource 5 [mem 0x250000000000-0x25fdffffffff 64bit pref]
[    1.551825] pci_bus 0021:01: resource 0 [io  size 0x2000]
[    1.551828] pci_bus 0021:01: resource 1 [mem 0x3fe880000000-0x3fe8ffefffff]
[    1.551830] pci_bus 0021:01: resource 2 [mem 0x250000000000-0x25fdfff0ffff 64bit pref]
[    1.551833] pci_bus 0021:02: resource 0 [io  size 0x2000]
[    1.551836] pci_bus 0021:02: resource 1 [mem 0x3fe880000000-0x3fe8ffefffff]
[    1.551839] pci_bus 0021:02: resource 2 [mem 0x250000000000-0x25fdfff0ffff 64bit pref]
[    1.551841] pci_bus 0021:03: resource 0 [io  size 0x1000]
[    1.551844] pci_bus 0021:03: resource 1 [mem 0x3fe881800000-0x3fe881ffffff]
[    1.551848] pci_bus 0021:03: resource 2 [mem 0x250000000000-0x2500ffffffff 64bit pref]
[    1.551851] pci_bus 0021:08: resource 0 [io  0x0000-0xffffffffffffffff disabled]
[    1.551854] pci_bus 0021:08: resource 1 [mem 0x00000000-0xffffffffffffffff disabled]
[    1.551857] pci_bus 0021:08: resource 2 [mem 0x00000000-0xffffffffffffffff 64bit pref disabled]
[    1.551859] pci_bus 0021:0d: resource 0 [io  0x0000-0xffffffffffffffff disabled]
[    1.551862] pci_bus 0021:0d: resource 1 [mem 0x3fe882000000-0x3fe8827fffff]
[    1.551865] pci_bus 0021:0d: resource 2 [mem 0x00000000-0xffffffffffffffff 64bit pref disabled]
[    1.551868] pci_bus 0021:0e: resource 0 [io  size 0x1000]
[    1.551870] pci_bus 0021:0e: resource 1 [mem 0x3fe882800000-0x3fe882ffffff]
[    1.551873] pci_bus 0021:0e: resource 2 [mem 0x00000000-0xffffffffffffffff 64bit pref disabled]
[    1.551876] pci_bus 0021:0f: resource 0 [io  size 0x1000]
[    1.551879] pci_bus 0021:0f: resource 1 [mem 0x3fe880000000-0x3fe8817fffff]
[    1.551881] pci_bus 0021:0f: resource 2 [mem 0x00000000-0xffffffffffffffff 64bit pref disabled]
[    1.551884] pci_bus 0021:10: resource 0 [io  size 0x1000]
[    1.551887] pci_bus 0021:10: resource 1 [mem 0x3fe880000000-0x3fe8817fffff]
[    1.551889] pci_bus 0021:10: resource 2 [mem 0x00000000-0xffffffffffffffff 64bit pref disabled]
[    1.551892] pci_bus 0021:11: resource 0 [io  0x0000-0xffffffffffffffff disabled]
[    1.551895] pci_bus 0021:11: resource 1 [mem 0x00000000-0xffffffffffffffff disabled]
[    1.551898] pci_bus 0021:11: resource 2 [mem 0x00000000-0xffffffffffffffff 64bit pref disabled]
[    1.551901] pci 0022:00:00.0: disabling bridge window [io  0x0000-0xffffffffffffffff] to [bus 01-ff] (unused)
[    1.551904] pci 0022:00:00.0: disabling bridge window [mem 0x00000000-0xffffffffffffffff 64bit pref] to [bus 01-ff] (unused)
[    1.551908] pci 0022:00:00.0: disabling bridge window [mem 0x00000000-0xffffffffffffffff] to [bus 01-ff] (unused)
[    1.551911] pci 0022:00:00.0: PCI bridge to [bus 01-ff]
[    1.551928] pci_bus 0022:00: resource 4 [mem 0x3fe900000000-0x3fe97ffeffff]
[    1.551931] pci_bus 0022:00: resource 5 [mem 0x260000000000-0x26fdffffffff 64bit pref]
[    1.551934] pci_bus 0022:01: resource 0 [io  0x0000-0xffffffffffffffff disabled]
[    1.551937] pci_bus 0022:01: resource 1 [mem 0x00000000-0xffffffffffffffff disabled]
[    1.551940] pci_bus 0022:01: resource 2 [mem 0x00000000-0xffffffffffffffff 64bit pref disabled]
[    1.551943] pci_bus 0000:00: Configuring PE for bus
[    1.551946] pci 0000:00     : [PE# fe] Secondary bus 0x0000000000000000 associated with PE#fe
[    1.552089] pci 0000:00:00.0: Configured PE#fe
[    1.552193] pci_bus 0001:00: Configuring PE for bus
[    1.552196] pci 0001:00     : [PE# fe] Secondary bus 0x0000000000000000 associated with PE#fe
[    1.552336] pci 0001:00:00.0: Configured PE#fe
[    1.552433] pci_bus 0001:01: Configuring PE for bus
[    1.552458] pci 0001:01     : [PE# 00] Secondary bus 0x0000000000000001 associated with PE#0
[    1.552601] pci 0001:01:00.0: Configured PE#0
[    1.552603] pci 0001:01     : [PE# 00] Setting up 32-bit TCE table at 0..80000000
[    1.553510] IOMMU table initialized, virtual merging enabled
[    1.553512] pci 0001:01     : [PE# 00] Setting up window#0 0..ffffffffff pg=10000
[    1.553521] pci 0001:01     : [PE# 00] Enabling 64-bit DMA bypass
[    1.553581] pci 0001:01:00.0: Adding to iommu group 0
[    1.553958] pci 0001:01:00.1: Added to existing PE#0
[    1.553977] pci 0001:01:00.1: Adding to iommu group 0
[    1.554314] pci 0001:01:00.2: Added to existing PE#0
[    1.554331] pci 0001:01:00.2: Adding to iommu group 0
[    1.554643] pci 0001:01:00.3: Added to existing PE#0
[    1.554660] pci 0001:01:00.3: Adding to iommu group 0
[    1.555003] pci_bus 0020:00: Configuring PE for bus
[    1.555006] pci 0020:00     : [PE# fe] Secondary bus 0x0000000000000000 associated with PE#fe
[    1.555147] pci 0020:00:00.0: Configured PE#fe
[    1.555250] pci_bus 0021:00: Configuring PE for bus
[    1.555252] pci 0021:00     : [PE# fe] Secondary bus 0x0000000000000000 associated with PE#fe
[    1.555393] pci 0021:00:00.0: Configured PE#fe
[    1.555494] pci_bus 0021:01: Configuring PE for bus
[    1.555501] pci 0021:01     : [PE# fd] Secondary bus 0x0000000000000001 associated with PE#fd
[    1.555643] pci 0021:01:00.0: Configured PE#fd
[    1.555902] pci 0021:01:00.1: Added to existing PE#fd
[    1.555904] pci 0021:01     : [PE# fd] Setting up 32-bit TCE table at 0..80000000
[    1.556874] pci 0021:01     : [PE# fd] Setting up window#0 0..ffffffffff pg=10000
[    1.556883] pci 0021:01     : [PE# fd] Enabling 64-bit DMA bypass
[    1.556927] pci 0021:01:00.1: Adding to iommu group 1
[    1.557103] pci 0021:01:00.2: Added to existing PE#fd
[    1.557122] pci 0021:01:00.2: Adding to iommu group 1
[    1.557280] pci 0021:01:00.3: Added to existing PE#fd
[    1.557298] pci 0021:01:00.3: Adding to iommu group 1
[    1.557440] pci 0021:01:00.4: Added to existing PE#fd
[    1.557457] pci 0021:01:00.4: Adding to iommu group 1
[    1.557603] pci_bus 0021:02: Configuring PE for bus
[    1.557610] pci 0021:02     : [PE# fc] Secondary bus 0x0000000000000002 associated with PE#fc
[    1.557751] pci 0021:02:01.0: Configured PE#fc
[    1.557998] pci 0021:02:08.0: Added to existing PE#fc
[    1.558247] pci 0021:02:09.0: Added to existing PE#fc
[    1.558499] pci 0021:02:0a.0: Added to existing PE#fc
[    1.558745] pci 0021:02:0b.0: Added to existing PE#fc
[    1.558997] pci 0021:02:0c.0: Added to existing PE#fc
[    1.559223] pci_bus 0021:0d: Configuring PE for bus
[    1.559229] pci 0021:0d     : [PE# fb] Secondary bus 0x000000000000000d associated with PE#fb
[    1.559371] pci 0021:0d:00.0: Configured PE#fb
[    1.559374] pci 0021:0d     : [PE# fb] Setting up 32-bit TCE table at 0..80000000
[    1.560325] pci 0021:0d     : [PE# fb] Setting up window#0 0..ffffffffff pg=10000
[    1.560332] pci 0021:0d     : [PE# fb] Enabling 64-bit DMA bypass
[    1.560376] pci 0021:0d:00.0: Adding to iommu group 2
[    1.560572] pci_bus 0021:0e: Configuring PE for bus
[    1.560579] pci 0021:0e     : [PE# fa] Secondary bus 0x000000000000000e associated with PE#fa
[    1.560720] pci 0021:0e:00.0: Configured PE#fa
[    1.560723] pci 0021:0e     : [PE# fa] Setting up 32-bit TCE table at 0..80000000
[    1.561701] pci 0021:0e     : [PE# fa] Setting up window#0 0..ffffffffff pg=10000
[    1.561708] pci 0021:0e     : [PE# fa] Enabling 64-bit DMA bypass
[    1.561783] pci 0021:0e:00.0: Adding to iommu group 3
[    1.561952] pci_bus 0021:0f: Configuring PE for bus
[    1.561958] pci 0021:0f     : [PE# f9] Secondary bus 0x000000000000000f associated with PE#f9
[    1.562099] pci 0021:0f:00.0: Configured PE#f9
[    1.562322] pci_bus 0021:10: Configuring PE for bus
[    1.562329] pci 0021:10     : [PE# f8] Secondary bus 0x0000000000000010..0x0000000000000010 associated with PE#f8
[    1.562472] pci 0021:10:00.0: Configured PE#f8
[    1.562474] pci 0021:10     : [PE# f8] Setting up 32-bit TCE table at 0..80000000
[    1.563445] pci 0021:10     : [PE# f8] Setting up window#0 0..ffffffffff pg=10000
[    1.563452] pci 0021:10     : [PE# f8] Enabling 64-bit DMA bypass
[    1.563498] pci 0021:10:00.0: Adding to iommu group 4
[    1.563660] pci_bus 0022:00: Configuring PE for bus
[    1.563663] pci 0022:00     : [PE# fe] Secondary bus 0x0000000000000000 associated with PE#fe
[    1.563805] pci 0022:00:00.0: Configured PE#fe
[    1.564012] pci 0001:00:00.0: enabling device (0141 -> 0143)
[    1.564027] pci 0021:00:00.0: enabling device (0141 -> 0143)
[    1.564042] pci 0021:01:00.0: enabling device (0141 -> 0143)
[    1.564059] pci 0021:02:09.0: enabling device (0141 -> 0143)
[    1.564077] pci 0021:02:0a.0: enabling device (0141 -> 0143)
[    1.564095] pci 0021:02:0b.0: enabling device (0141 -> 0143)
[    1.564115] pci 0021:0f:00.0: enabling device (0141 -> 0143)
[    1.564128] EEH: Capable adapter found: recovery enabled.
[    1.564319] PCI: Probing PCI hardware done
[    1.564434] pci 0021:10:00.0: vgaarb: setting as boot VGA device
[    1.564437] pci 0021:10:00.0: vgaarb: bridge control possible
[    1.564439] pci 0021:10:00.0: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none
[    1.564443] vgaarb: loaded
[    1.565342] clocksource: Switched to clocksource timebase
[    1.570409] VFS: Disk quotas dquot_6.6.0
[    1.570793] VFS: Dquot-cache hash table entries: 8192 (order 0, 65536 bytes)
[    1.581033] NET: Registered PF_INET protocol family
[    1.581275] IP idents hash table entries: 262144 (order: 5, 2097152 bytes, vmalloc)
[    1.589191] tcp_listen_portaddr_hash hash table entries: 65536 (order: 4, 1048576 bytes, vmalloc)
[    1.589444] Table-perturb hash table entries: 65536 (order: 2, 262144 bytes, vmalloc)
[    1.589467] TCP established hash table entries: 524288 (order: 6, 4194304 bytes, vmalloc)
[    1.590267] TCP bind hash table entries: 65536 (order: 5, 2097152 bytes, vmalloc)
[    1.590549] TCP: Hash tables configured (established 524288 bind 65536)
[    1.591767] UDP hash table entries: 65536 (order: 6, 4194304 bytes, vmalloc)
[    1.593760] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    1.593859] pci 0021:0d:00.0: enabling device (0140 -> 0142)
[    1.627080] pci 0021:0d:00.0: xHCI HW did not halt within 32000 usec status = 0x0
[    1.627094] pci 0021:0d:00.0: quirk_usb_early_handoff+0x0/0x300 took 32465 usecs
[    1.627123] PCI: CLS 0 bytes, default 128
[    1.627300] Trying to unpack rootfs image as initramfs...
[    1.633227] random: crng init done
[    1.637735] Initialise system trusted keyrings
[    1.637773] Key type blacklist registered
[    1.637903] workingset: timestamp_bits=38 (anon: 34) max_order=24 bucket_order=0 (anon: 0)
[    1.641817] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    1.642754] fuse: init (API version 7.45)
[    1.662427] Key type asymmetric registered
[    1.662430] Asymmetric key parser 'x509' registered
[    1.662672] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
[    1.662946] io scheduler mq-deadline registered
[    1.682613] ledtrig-cpu: registered to indicate activity on CPUs
[    1.683033] pci 0021:10:00.0: enabling device (0141 -> 0143)
[    1.683294] hvc0: raw protocol on /ibm,opal/consoles/serial@0 (boot console)
[    1.683302] hvc0: No interrupts property, using OPAL event
[    1.684333] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    1.693441] Non-volatile memory driver v1.3
[    1.736173] loop: module loaded
[    1.738055] tun: Universal TUN/TAP device driver, 1.6
[    1.738236] PPP generic driver version 2.4.2
[    1.738528] VFIO - User Level meta-driver version: 0.3
[    1.739374] xhci_hcd 0021:0d:00.0: xHCI Host Controller
[    1.739431] xhci_hcd 0021:0d:00.0: new USB bus registered, assigned bus number 1
[    1.794727] Freeing initrd memory: 52928K
[    1.801984] xhci_hcd 0021:0d:00.0: Host halt failed, -110
[    1.801988] xhci_hcd 0021:0d:00.0: can't setup: -110
[    1.802137] xhci_hcd 0021:0d:00.0: USB bus 1 deregistered
[    1.802154] xhci_hcd 0021:0d:00.0: init 0021:0d:00.0 fail, -110
[    1.802250] xhci_hcd 0021:0d:00.0: probe with driver xhci_hcd failed with error -110
[    1.802802] mousedev: PS/2 mouse device common for all mice
[    1.817314] rtc-opal opal-rtc: registered as rtc0
[    1.833264] rtc-opal opal-rtc: setting system clock to 2026-05-06T07:01:17 UTC (1778050877)
[    1.833299] i2c_dev: i2c /dev entries driver
[    1.838768] device-mapper: core: CONFIG_IMA_DISABLE_HTABLE is disabled. Duplicate IMA measurements will not be recorded in the IMA log.
[    1.839017] device-mapper: uevent: version 1.0.3
[    1.839567] device-mapper: ioctl: 4.50.0-ioctl (2025-04-28) initialised: dm-devel@lists.linux.dev
[    1.839576] powernv-cpufreq: cpufreq pstate min 0xffffffd5 nominal 0xffffffef max 0x0
[    1.839578] powernv-cpufreq: Workload Optimized Frequency is disabled in the platform
[    1.853421] powernv_idle_driver registered
[    1.854516] NET: Registered PF_INET6 protocol family
[    1.858060] Segment Routing with IPv6
[    1.858088] In-situ OAM (IOAM) with IPv6
[    1.858135] NET: Registered PF_PACKET protocol family
[    1.858280] Key type dns_resolver registered
[    1.867760] registered taskstats version 1
[    1.875741] Loading compiled-in X.509 certificates
[    1.877080] Loaded X.509 cert 'Build time autogenerated kernel key: e8777919b07b958e05390190c252dd0554826a36'
[    1.889770] Demotion targets for Node 0: null
[    1.889773] Demotion targets for Node 8: null
[    1.889821] kmemleak: Kernel memory leak detector initialized (mem pool available: 5807)
[    1.889824] kmemleak: Automatic memory scanning thread started
[    1.890972] Key type .fscrypt registered
[    1.890974] Key type fscrypt-provisioning registered
[    1.891009] Key type big_key registered
[    1.891013] trusted_key: H_PKS_WRAP_OBJECT interface not supported
[    1.903045] Key type encrypted registered
[    1.903049] ima: No TPM chip found, activating TPM-bypass!
[    1.903061] ima: Allocated hash algorithm: sha256
[    1.903087] ima: No architecture policies found
[    1.903159] evm: Initialising EVM extended attributes:
[    1.903160] evm: security.selinux
[    1.903162] evm: security.SMACK64
[    1.903163] evm: security.SMACK64EXEC
[    1.903165] evm: security.SMACK64TRANSMUTE
[    1.903166] evm: security.SMACK64MMAP
[    1.903168] evm: security.apparmor
[    1.903169] evm: security.ima
[    1.903170] evm: security.capability
[    1.903172] evm: HMAC attrs: 0x1
[    1.903217] SED: plpks not available
[    1.905316] PM: genpd: Disabling unused power domains
[    1.905449] integrity: Unable to open file: /etc/keys/x509_ima.der (-2)
[    1.905457] integrity: Unable to open file: /etc/keys/x509_evm.der (-2)
[    1.908676] Freeing unused kernel image (initmem) memory: 8768K
[    1.908752] Run /init as init process
[    1.908754]   with arguments:
[    1.908756]     /init
[    1.908758]     splash
[    1.908760]   with environment:
[    1.908761]     HOME=/
[    1.908763]     TERM=linux
[    2.275710] ahci 0021:0e:00.0: enabling device (0541 -> 0543)
[    2.275985] ahci 0021:0e:00.0: iommu: 64-bit OK but direct DMA is limited by 0
[    2.275988] ahci 0021:0e:00.0: iommu: 64-bit OK but direct DMA is limited by 0
[    2.286072] ahci 0021:0e:00.0: AHCI vers 0001.0000, 32 command slots, 6 Gbps, SATA mode
[    2.286076] ahci 0021:0e:00.0: 4/4 ports implemented (port mask 0xf)
[    2.286079] ahci 0021:0e:00.0: flags: 64bit ncq sntf led only pmp fbs pio slum part sxs 
[    2.288839] scsi host0: ahci
[    2.290329] scsi host1: ahci
[    2.291218] scsi host2: ahci
[    2.292102] scsi host3: ahci
[    2.292459] ata1: SATA max UDMA/133 abar m2048@0x3fe882800000 port 0x3fe882800100 irq 39 lpm-pol 1 ext
[    2.292463] ata2: SATA max UDMA/133 abar m2048@0x3fe882800000 port 0x3fe882800180 irq 39 lpm-pol 1 ext
[    2.292466] ata3: SATA max UDMA/133 abar m2048@0x3fe882800000 port 0x3fe882800200 irq 39 lpm-pol 1 ext
[    2.292469] ata4: SATA max UDMA/133 abar m2048@0x3fe882800000 port 0x3fe882800280 irq 39 lpm-pol 1 ext
[    2.399805] ata3: SATA link down (SStatus 0 SControl 300)
[    2.399871] ata4: SATA link down (SStatus 0 SControl 300)
[    2.565242] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    2.565278] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    2.565709] ata2.00: ATA-10: ST1000NX0313         00LY266 00LY265IBM, BE33, max UDMA/133
[    2.565839] ata2.00: 1953525168 sectors, multi 0: LBA48 NCQ (depth 32), AA
[    2.565842] ata2.00: Features: DIPM
[    2.566430] ata2.00: configured for UDMA/133
[    2.596915] ata1.00: ATA-10: ST1000NX0313         00LY266 00LY265IBM, BE33, max UDMA/133
[    2.597096] ata1.00: 1953525168 sectors, multi 0: LBA48 NCQ (depth 32), AA
[    2.597099] ata1.00: Features: DIPM
[    2.597720] ata1.00: configured for UDMA/133
[    2.598119] scsi 0:0:0:0: Direct-Access     ATA      ST1000NX0313     BE33 PQ: 0 ANSI: 5
[    2.598804] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    2.598956] sd 0:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB)
[    2.598964] sd 0:0:0:0: [sda] 4096-byte physical blocks
[    2.598994] sd 0:0:0:0: [sda] Write Protect is off
[    2.599000] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    2.599044] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.599097] sd 0:0:0:0: [sda] Preferred minimum I/O size 4096 bytes
[    2.599197] scsi 1:0:0:0: Direct-Access     ATA      ST1000NX0313     BE33 PQ: 0 ANSI: 5
[    2.599952] sd 1:0:0:0: Attached scsi generic sg1 type 0
[    2.600042] sd 1:0:0:0: [sdb] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB)
[    2.600049] sd 1:0:0:0: [sdb] 4096-byte physical blocks
[    2.600071] sd 1:0:0:0: [sdb] Write Protect is off
[    2.600077] sd 1:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[    2.600118] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.600167] sd 1:0:0:0: [sdb] Preferred minimum I/O size 4096 bytes
[    2.706268] sd 1:0:0:0: [sdb] Attached SCSI disk
[    2.752402]  sda: sda1 sda2
[    2.752653] sd 0:0:0:0: [sda] Attached SCSI disk
[    2.782168] ast 0021:10:00.0: Platform has no I/O space, using MMIO
[    2.782182] ast 0021:10:00.0: Using P2A bridge for configuration
[    2.782184] ast 0021:10:00.0: AST 2400 detected
[    2.782408] ast 0021:10:00.0: [drm] Using analog VGA
[    2.853220] [drm] Initialized ast 0.1.0 for 0021:10:00.0 on minor 0
[    2.947768] Console: switching to colour frame buffer device 128x48
[    3.023023] ast 0021:10:00.0: [drm] fb0: astdrmfb frame buffer device
[    3.337220] raid6: vpermxor8 gen() 29923 MB/s
[    3.405222] raid6: vpermxor4 gen() 28230 MB/s
[    3.473215] raid6: vpermxor2 gen() 22763 MB/s
[    3.541232] raid6: vpermxor1 gen() 15843 MB/s
[    3.609246] raid6: altivecx8 gen() 15626 MB/s
[    3.677225] raid6: altivecx4 gen() 18234 MB/s
[    3.745233] raid6: altivecx2 gen() 13441 MB/s
[    3.813219] raid6: altivecx1 gen() 10658 MB/s
[    3.881278] raid6: int64x8  gen()  5273 MB/s
[    3.949225] raid6: int64x4  gen()  5865 MB/s
[    4.017280] raid6: int64x2  gen()  4494 MB/s
[    4.085264] raid6: int64x1  gen()  4001 MB/s
[    4.085266] raid6: using algorithm vpermxor8 gen() 29923 MB/s
[    4.085268] raid6: using intx1 recovery algorithm
[    4.088109] xor: measuring software checksum speed
[    4.088230]    altivec         : 27566 MB/sec
[    4.088461]    32regs_prefetch : 14372 MB/sec
[    4.088670]    32regs          : 15812 MB/sec
[    4.088899]    8regs_prefetch  : 14448 MB/sec
[    4.089107]    8regs           : 15924 MB/sec
[    4.089108] xor: using function: altivec (27566 MB/sec)
[    4.270944] Btrfs loaded, zoned=yes, fsverity=no
[    4.309057] BTRFS: device label root devid 1 transid 8211691 /dev/sda2 (8:2) scanned by mount (1192)
[    4.311880] BTRFS info (device sda2): first mount of filesystem 2c3dd738-785a-469b-843e-9f0ba8b47b0d
[    4.311885] BTRFS info (device sda2): using crc32c checksum algorithm
[    4.311891] BTRFS warning (device sda2): space cache v1 is being deprecated and will be removed in a future release, please use -o space_cache=v2
[    7.561624] BTRFS info (device sda2): enabling disk space caching
[    7.747547] Not activating Mandatory Access Control as /sbin/tomoyo-init does not exist.
[    8.815011] systemd[1]: Inserted module 'autofs4'
[    8.905035] systemd[1]: systemd 248.3-1ubuntu8.6 running in system mode. (+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT +GNUTLS -OPENSSL +ACL +BLKID +CURL +ELFUTILS -FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP -LIBFDISK +PCRE2 -PWQUALITY -P11KIT -QRENCODE +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    8.908376] systemd[1]: Detected architecture ppc64-le.
[    8.917189] systemd[1]: Hostname set to <flughafenberlinbrandenburgwillybrandt.molgen.mpg.de>.
[   10.015375] block sda: the capability attribute has been deprecated.
[   10.944328] systemd[1]: /etc/systemd/system/docker.service:26: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[   11.040503] systemd[1]: /lib/systemd/system/rtas_errd.service:12: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[   11.040524] systemd[1]: /lib/systemd/system/rtas_errd.service:13: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[   11.056093] systemd[1]: /lib/systemd/system/opal_errd.service:10: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[   11.056106] systemd[1]: /lib/systemd/system/opal_errd.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[   11.158928] systemd[1]: Queued start job for default target Multi-User System.
[   11.195222] systemd[1]: Created slice Virtual Machine and Container Slice.
[   11.197941] systemd[1]: Created slice system-modprobe.slice.
[   11.199280] systemd[1]: Created slice system-serial\x2dgetty.slice.
[   11.200556] systemd[1]: Created slice system-systemd\x2dfsck.slice.
[   11.201946] systemd[1]: Created slice User and Session Slice.
[   11.202068] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[   11.202156] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[   11.202656] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[   11.202709] systemd[1]: Reached target Local Encrypted Volumes.
[   11.202785] systemd[1]: Reached target Slices.
[   11.202811] systemd[1]: Reached target Swap.
[   11.202844] systemd[1]: Reached target Local Verity Integrity Protected Volumes.
[   11.202868] systemd[1]: Reached target Libvirt guests shutdown.
[   11.203015] systemd[1]: Listening on Device-mapper event daemon FIFOs.
[   11.208896] systemd[1]: Listening on RPCbind Server Activation Socket.
[   11.209179] systemd[1]: Listening on Syslog Socket.
[   11.209372] systemd[1]: Listening on fsck to fsckd communication Socket.
[   11.209495] systemd[1]: Listening on initctl Compatibility Named Pipe.
[   11.209883] systemd[1]: Listening on Journal Audit Socket.
[   11.210052] systemd[1]: Listening on Journal Socket (/dev/log).
[   11.210267] systemd[1]: Listening on Journal Socket.
[   11.210522] systemd[1]: Listening on Network Service Netlink Socket.
[   11.210779] systemd[1]: Listening on udev Control Socket.
[   11.210942] systemd[1]: Listening on udev Kernel Socket.
[   11.213350] systemd[1]: Mounting Huge Pages File System...
[   11.215642] systemd[1]: Mounting POSIX Message Queue File System...
[   11.217797] systemd[1]: Mounting Proc NFSD mountpoint...
[   11.220052] systemd[1]: Mounting RPC Pipe File System...
[   11.222383] systemd[1]: Mounting Kernel Debug File System...
[   11.224615] systemd[1]: Mounting Kernel Trace File System...
[   11.229878] systemd[1]: Starting Journal Service...
[   11.229979] systemd[1]: Condition check resulted in Kernel Module supporting RPCSEC_GSS being skipped.
[   11.232481] systemd[1]: Starting Set the console keyboard layout...
[   11.234920] systemd[1]: Starting Create list of static device nodes for the current kernel...
[   11.236732] systemd[1]: Starting Load Kernel Module configfs...
[   11.238486] systemd[1]: Starting Load Kernel Module drm...
[   11.240260] systemd[1]: Starting Load Kernel Module fuse...
[   11.240332] systemd[1]: Condition check resulted in OpenVSwitch configuration for cleanup being skipped.
[   11.240677] systemd[1]: Condition check resulted in Set Up Additional Binary Formats being skipped.
[   11.240724] systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
[   11.243413] systemd[1]: Starting Load Kernel Modules...
[   11.245944] systemd[1]: Starting Remount Root and Kernel File Systems...
[   11.248274] systemd[1]: Starting Coldplug All udev Devices...
[   11.250629] systemd[1]: Starting Uncomplicated firewall...
[   11.253395] systemd[1]: Mounted Huge Pages File System.
[   11.253545] systemd[1]: Mounted POSIX Message Queue File System.
[   11.253675] systemd[1]: Mounted Kernel Debug File System.
[   11.253807] systemd[1]: Mounted Kernel Trace File System.
[   11.254551] systemd[1]: Finished Create list of static device nodes for the current kernel.
[   11.255018] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[   11.255567] systemd[1]: Finished Load Kernel Module configfs.
[   11.255961] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[   11.256452] systemd[1]: Finished Load Kernel Module fuse.
[   11.259007] systemd[1]: Mounting FUSE Control File System...
[   11.261332] systemd[1]: Mounting Kernel Configuration File System...
[   11.262398] systemd[1]: Mounted FUSE Control File System.
[   11.263534] systemd[1]: Mounted Kernel Configuration File System.
[   11.298164] systemd[1]: modprobe@drm.service: Deactivated successfully.
[   11.298748] systemd[1]: Finished Load Kernel Module drm.
[   11.382962] systemd[1]: Finished Uncomplicated firewall.
[   11.412742] RPC: Registered named UNIX socket transport module.
[   11.412746] RPC: Registered udp transport module.
[   11.412748] RPC: Registered tcp transport module.
[   11.412749] RPC: Registered tcp-with-tls transport module.
[   11.412751] RPC: Registered tcp NFSv4.1 backchannel transport module.
[   11.414281] systemd[1]: Mounted RPC Pipe File System.
[   11.416885] systemd[1]: Starting pNFS block layout mapping daemon...
[   11.462458] systemd[1]: Finished Remount Root and Kernel File Systems.
[   11.529885] systemd[1]: Condition check resulted in Rebuild Hardware Database being skipped.
[   11.573607] systemd[1]: Starting Platform Persistent Storage Archival...
[   11.576023] systemd[1]: Starting Load/Save Random Seed...
[   11.578614] systemd[1]: Starting Create System Users...
[   11.578820] systemd[1]: Started Journal Service.
[   11.664888] lp: driver loaded but no devices found
[   11.851964] ppdev: user-space parallel port driver
[   11.919415] systemd-journald[1288]: Received client request to flush runtime journal.
[   12.425032] systemd-journald[1288]: File /var/log/journal/11882866fe9241ad9ffe6ba0e37fae72/system.journal corrupted or uncleanly shut down, renaming and replacing.
[   16.543160] at24 0-0051: supply vcc not found, using dummy regulator
[   16.587583] at24 0-0051: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   16.589498] at24 0-0052: supply vcc not found, using dummy regulator
[   16.592283] IPMI message handler: version 39.2
[   16.627468] at24 0-0052: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   16.627583] at24 0-0053: supply vcc not found, using dummy regulator
[   16.628132] at24 0-0053: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   16.628196] at24 0-0054: supply vcc not found, using dummy regulator
[   16.628739] at24 0-0054: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   16.628803] at24 0-0055: supply vcc not found, using dummy regulator
[   16.629462] at24 0-0055: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   16.629549] at24 1-0050: supply vcc not found, using dummy regulator
[   16.674815] ipmi device interface
[   16.717591] ipmi-powernv ibm,opal:ipmi: Unable to map irq from device tree
[   16.720172] at24 1-0050: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   16.720263] at24 1-0052: supply vcc not found, using dummy regulator
[   16.720854] at24 1-0052: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   16.720943] at24 1-0053: supply vcc not found, using dummy regulator
[   16.721559] at24 1-0053: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   16.721645] ipmi-powernv ibm,opal:ipmi: IPMI message handler: Found new BMC (man_id: 0x000000, prod_id: 0xaabb, dev_id: 0x20)
[   16.721652] at24 1-0054: supply vcc not found, using dummy regulator
[   16.722199] at24 1-0054: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   16.722259] at24 1-0055: supply vcc not found, using dummy regulator
[   16.722861] at24 1-0055: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   16.722937] at24 2-0052: supply vcc not found, using dummy regulator
[   16.753979] at24 2-0052: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   16.754047] at24 2-0053: supply vcc not found, using dummy regulator
[   16.754706] at24 2-0053: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   16.754806] at24 2-0054: supply vcc not found, using dummy regulator
[   16.755388] at24 2-0054: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   16.755454] at24 2-0055: supply vcc not found, using dummy regulator
[   16.756038] at24 2-0055: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   16.756105] at24 2-0056: supply vcc not found, using dummy regulator
[   16.756718] at24 2-0056: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   16.756790] at24 3-0052: supply vcc not found, using dummy regulator
[   17.071037] io scheduler bfq registered
[   17.163576] bnx2x 0001:01:00.0: msix capability found
[   17.163651] bnx2x 0001:01:00.0: enabling device (0140 -> 0142)
[   17.163808] bnx2x 0001:01:00.0: iommu: 64-bit OK but direct DMA is limited by 0
[   17.163812] bnx2x 0001:01:00.0: iommu: 64-bit OK but direct DMA is limited by 0
[   17.163875] bnx2x 0001:01:00.0: part number 0-0-0-0
[   17.251010] bnx2x 0001:01:00.0: 32.000 Gb/s available PCIe bandwidth (5.0 GT/s PCIe x8 link)
[   17.251098] bnx2x 0001:01:00.1: msix capability found
[   17.251149] bnx2x 0001:01:00.1: enabling device (0140 -> 0142)
[   17.251316] bnx2x 0001:01:00.1: iommu: 64-bit OK but direct DMA is limited by 0
[   17.251321] bnx2x 0001:01:00.1: iommu: 64-bit OK but direct DMA is limited by 0
[   17.251386] bnx2x 0001:01:00.1: part number 0-0-0-0
[   17.314551] bnx2x 0001:01:00.1: 32.000 Gb/s available PCIe bandwidth (5.0 GT/s PCIe x8 link)
[   17.314614] bnx2x 0001:01:00.2: msix capability found
[   17.314666] bnx2x 0001:01:00.2: enabling device (0140 -> 0142)
[   17.314833] bnx2x 0001:01:00.2: iommu: 64-bit OK but direct DMA is limited by 0
[   17.314838] bnx2x 0001:01:00.2: iommu: 64-bit OK but direct DMA is limited by 0
[   17.314903] bnx2x 0001:01:00.2: part number 0-0-0-0
[   17.378567] bnx2x 0001:01:00.2: 32.000 Gb/s available PCIe bandwidth (5.0 GT/s PCIe x8 link)
[   17.378626] bnx2x 0001:01:00.3: msix capability found
[   17.378675] bnx2x 0001:01:00.3: enabling device (0140 -> 0142)
[   17.378846] bnx2x 0001:01:00.3: iommu: 64-bit OK but direct DMA is limited by 0
[   17.378851] bnx2x 0001:01:00.3: iommu: 64-bit OK but direct DMA is limited by 0
[   17.378919] bnx2x 0001:01:00.3: part number 0-0-0-0
[   17.437729] bnx2x 0001:01:00.3: 32.000 Gb/s available PCIe bandwidth (5.0 GT/s PCIe x8 link)
[   17.440628] bnx2x 0001:01:00.0 enP1p1s0f0: renamed from eth0
[   17.441777] bnx2x 0001:01:00.1 enP1p1s0f1: renamed from eth1
[   17.445251] bnx2x 0001:01:00.2 enP1p1s0f2: renamed from eth2
[   17.449353] bnx2x 0001:01:00.3 enP1p1s0f3: renamed from eth3
[   17.901533] powernv_rng: Registered powernv hwrng.
[   17.901992] Kernel attempted to read user page (0) - exploit attempt? (uid: 0)
[   17.902011] BUG: Kernel NULL pointer dereference on read at 0x00000000
[   17.902018] Faulting instruction address: 0xc0000000000e7138
[   17.902027] Oops: Kernel access of bad area, sig: 11 [#1]
[   17.902034] LE PAGE_SIZE=64K MMU=Hash  SMP NR_CPUS=2048 NUMA PowerNV
[   17.902045] Modules linked in: powernv_rng(+) bnx2x ofpart ibmpowernv bfq mdio cmdlinepart powernv_flash ipmi_powernv ipmi_devintf mtd ipmi_msghandler at24(+) vmx_crypto opal_prd sch_fq_codel nfsd parport_pc ppdev auth_rpcgss nfs_acl lp lockd grace parport sunrpc autofs4 btrfs xor libblake2b raid6_pq ast drm_shmem_helper drm_client_lib i2c_algo_bit drm_kms_helper drm ahci drm_panel_orientation_quirks libahci
[   17.902185] CPU: 147 UID: 0 PID: 2626 Comm: hwrng Not tainted 7.1.0-rc2+ #3 PREEMPTLAZY 
[   17.902197] Hardware name: 8335-GCA POWER8 (raw) 0x4d0200 opal:skiboot-5.4.8-5787ad3 PowerNV
[   17.902204] NIP:  c0000000000e7138 LR: c00800001ec8013c CTR: c0000000000e70fc
[   17.902212] REGS: c000000092913c50 TRAP: 0300   Not tainted  (7.1.0-rc2+)
[   17.902222] MSR:  900000000280b033 <SF,HV,VEC,VSX,EE,FP,ME,IR,DR,RI,LE>  CR: 44420220  XER: 20000000
[   17.902269] CFAR: c00800001ec8026c DAR: 0000000000000000 DSISR: 40000000 IRQMASK: 0 
               GPR00: c00800001ec8013c c000000092913ef0 c000000001c18100 c00000002222d900 
               GPR04: c00000002222d900 0000000000000080 0000000000000001 0000000000000000 
               GPR08: 0000000000000000 c000000002212000 c0000000951e1780 c00800001ec80258 
               GPR12: c0000000000e70fc c00000ffff6fd700 c0000000001d11c0 c00000001b99b9c0 
               GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 
               GPR20: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 
               GPR24: 0000000000000000 c000000002fe6a58 0000000000000000 0000000000000000 
               GPR28: c000000002fe6a20 0000000000000010 000000000000000f c00000002222d900 
[   17.902406] NIP [c0000000000e7138] pnv_get_random_long+0x3c/0x114
[   17.902426] LR [c00800001ec8013c] powernv_rng_read+0x78/0xc4 [powernv_rng]
[   17.902444] Call Trace:
[   17.902448] [c000000092913ef0] [c000000092913f30] 0xc000000092913f30 (unreliable)
[   17.902463] [c000000092913f30] [c000000000decd58] hwrng_fillfn+0xd4/0x3dc
[   17.902484] [c000000092913f90] [c0000000001d1328] kthread+0x170/0x1a4
[   17.902498] [c000000092913fe0] [c00000000000d030] start_kernel_thread+0x14/0x18
[   17.902513] Code: 60000000 7d2000a6 71290010 418200bc e94d0908 812a0000 39290001 912a0000 e90d0030 3d220060 39299f00 7d08482a <e9280000> 7c0004ac e8e90000 0c070000 
[   17.902569] ---[ end trace 0000000000000000 ]---
[   18.008801] pstore: backend (nvram) writing error (-1)

[   18.015458] note: hwrng[2626] exited with irqs disabled
[   18.015483] note: hwrng[2626] exited with preempt_count 1
[   18.309967] bnx2x 0001:01:00.0: Direct firmware load for bnx2x/bnx2x-e2-7.13.21.0.fw failed with error -2
[   18.793748] at24 3-0052: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   18.793840] at24 3-0053: supply vcc not found, using dummy regulator
[   18.794394] at24 3-0053: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   18.794490] at24 3-0054: supply vcc not found, using dummy regulator
[   18.795011] at24 3-0054: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   18.795071] at24 3-0055: supply vcc not found, using dummy regulator
[   18.795580] at24 3-0055: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   18.795638] at24 3-0057: supply vcc not found, using dummy regulator
[   18.796198] at24 3-0057: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   18.796258] at24 4-0051: supply vcc not found, using dummy regulator
[   18.878651] bnx2x 0001:01:00.0 enP1p1s0f0: using MSI-X  IRQs: sp 40  fp[0] 42 ... fp[9] 51
[   19.081229] bnx2x 0001:01:00.0 enP1p1s0f0: NIC Link is Up, 10000 Mbps full duplex, Flow control: ON - receive & transmit
[   19.318954] at24 4-0051: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   19.319133] at24 4-0052: supply vcc not found, using dummy regulator
[   19.319799] at24 4-0052: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   19.319876] at24 4-0053: supply vcc not found, using dummy regulator
[   19.320594] at24 4-0053: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   19.320672] at24 4-0054: supply vcc not found, using dummy regulator
[   19.321309] at24 4-0054: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   19.321390] at24 4-0055: supply vcc not found, using dummy regulator
[   19.322020] at24 4-0055: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   19.322122] at24 5-0050: supply vcc not found, using dummy regulator
[   21.349730] at24 5-0050: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   21.349834] at24 5-0052: supply vcc not found, using dummy regulator
[   21.350485] at24 5-0052: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   21.350554] at24 5-0053: supply vcc not found, using dummy regulator
[   21.351142] at24 5-0053: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   21.351304] at24 5-0054: supply vcc not found, using dummy regulator
[   21.351917] at24 5-0054: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   21.351985] at24 5-0055: supply vcc not found, using dummy regulator
[   21.352704] at24 5-0055: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   21.352777] at24 6-0052: supply vcc not found, using dummy regulator
[   23.365702] at24 6-0052: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   23.365808] at24 6-0053: supply vcc not found, using dummy regulator
[   23.366453] at24 6-0053: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   23.366521] at24 6-0054: supply vcc not found, using dummy regulator
[   23.367107] at24 6-0054: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   23.367268] at24 6-0055: supply vcc not found, using dummy regulator
[   23.367819] at24 6-0055: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   23.367889] at24 6-0056: supply vcc not found, using dummy regulator
[   23.368615] at24 6-0056: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   23.368687] at24 7-0052: supply vcc not found, using dummy regulator
[   25.381710] at24 7-0052: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   25.381865] at24 7-0053: supply vcc not found, using dummy regulator
[   25.382468] at24 7-0053: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   25.382539] at24 7-0054: supply vcc not found, using dummy regulator
[   25.383161] at24 7-0054: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   25.383228] at24 7-0055: supply vcc not found, using dummy regulator
[   25.383758] at24 7-0055: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[   25.383825] at24 7-0057: supply vcc not found, using dummy regulator
[   25.384407] at24 7-0057: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   25.384476] at24 8-0050: supply vcc not found, using dummy regulator
[   25.384732] at24 8-0050: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   25.384801] at24 8-0051: supply vcc not found, using dummy regulator
[   25.385061] at24 8-0051: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   25.385136] at24 9-0050: supply vcc not found, using dummy regulator
[   25.385418] at24 9-0050: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   25.385492] at24 9-0051: supply vcc not found, using dummy regulator
[   25.385781] at24 9-0051: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   25.385860] at24 10-0050: supply vcc not found, using dummy regulator
[   25.386215] at24 10-0050: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   25.386298] at24 11-0050: supply vcc not found, using dummy regulator
[   25.386599] at24 11-0050: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   25.386675] at24 11-0051: supply vcc not found, using dummy regulator
[   25.386938] at24 11-0051: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   25.387008] at24 12-0050: supply vcc not found, using dummy regulator
[   25.387267] at24 12-0050: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   25.387340] at24 12-0051: supply vcc not found, using dummy regulator
[   25.387665] at24 12-0051: 16384 byte 24c128 EEPROM, writable, 1 bytes/write
[   26.523961] SGI XFS with ACLs, security attributes, realtime, quota, no debug enabled
[   26.531480] XFS (sdb): Mounting V5 Filesystem 4765af8c-1797-4fb3-833f-9790bf53c3cd
[   26.634162] XFS (sdb): Starting recovery (logdev: internal)
[   28.626258] XFS (sdb): Ending recovery (logdev: internal)
[   28.692207] xfs filesystem being mounted at /amd/flughafenberlinbrandenburgwillybrandt/0 supports timestamps until 2038-01-19 (0x7fffffff)
[   30.334824] KVM-HV: Enabling IRQ bypass
[   30.547364] systemd-journald[1288]: Failed to read journal file /var/log/journal/11882866fe9241ad9ffe6ba0e37fae72/user-5272.journal for rotation, trying to move it out of the way: Device or resource busy
[   31.925222] NFSD: Unable to initialize client recovery tracking! (-110)
[   31.925290] NFSD: Is nfsdcld running? If not, enable CONFIG_NFSD_LEGACY_CLIENT_TRACKING.
[   31.925396] NFSD: starting 90-second grace period (net effffff9)
[   32.631318] Process accounting resumed
[   38.234701] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.

^ permalink raw reply

* Re: [PATCH v1 1/6] objtool/powerpc: Add build-time fixup of alternate feature branch targets
From: Segher Boessenkool @ 2026-05-06 13:58 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: Sathvika Vasireddy, nathan, nsc, maddy, mpe, npiggin, chleroy,
	jpoimboe, ojeda, masahiroy, lossin, tamird, thomas.weissschuh,
	rostedt, ihor.solodrai, thuth, pmladek, aliceryhl, elver, kees,
	legion, ardb, yuxuan.zuo, alexghiti, alexandre.chartre, bp,
	linux-kbuild, linux-kernel, linuxppc-dev
In-Reply-To: <20260506070000.GZ3126523@noisy.programming.kicks-ass.net>

Hi!

On Wed, May 06, 2026 at 09:00:00AM +0200, Peter Zijlstra wrote:
> On Tue, May 05, 2026 at 10:56:58AM -0500, Segher Boessenkool wrote:
> > On Tue, May 05, 2026 at 04:45:39PM +0200, Peter Zijlstra wrote:
> > > On Tue, May 05, 2026 at 02:16:23PM +0530, Sathvika Vasireddy wrote:
> > > >  	switch (opcode) {
> > > > +	case 16:
> > > 
> > > Like case 18 below, this wants a comment describing which instruction
> > > this is; bclr ?
> > 
> > Yes.  It is 19/16, b[c]lr (primary opcode 19, secondary opcode 16).
> > 
> > Where is it described what INSN_RETURN actually means for objtool?  Not
> > in the header file :-(
> 
> Yeah, nowhere much I'm afraid, it is very much organic growth that is
> firmly rooted in x86.
> 
> RETURN, along with sibling/tail CALLs validate things like the stack
> frame being in identical state as on function entry and a few other
> sanity checks (DF flag not set, no uaccess).

Huh.

On function entry, there is *no* accessible stack frame, on our ABIs
(typically you can still access your parent's frame of course, but then
you first need to find out who your parent is, etc.)  All stack frames
are always set up by separate store instructions.  We are a RISC
architecture after all (POWER means "Performance Optimisation With
Enhanced RISC").  So objtool checks if we actually tore down all
stack frames?  What a very useful thing to do.

Stack frames are a software concept in the first place, it has nothing
to do with the hardware, *at all*.  This is a bit different on archs
that *actually* have such a thing as a frame pointer, that don't emulate
it using a GPR (or something in memory!)

> There is also a pile of hacks around the whole return thunk mitigation
> thing. But that might be less relevant for other archs.

I don't really want to think about it :-)  Horrors!

There are many other archs where all (or almost all, "all normal", call/
return sequences use a "link register", often called exactly that.  It's
the modern consensus to design call/return around that, I'd say even.
It would be nice if this abstraction worked well ;-)


Segher


^ permalink raw reply

* Re: [PATCH] powerpc: fix dead default for GUEST_STATE_BUFFER_TEST
From: Gautam Menghani @ 2026-05-06 12:08 UTC (permalink / raw)
  To: Julian Braha
  Cc: maddy, mpe, npiggin, chleroy, jniethe5, linuxppc-dev,
	linux-kernel
In-Reply-To: <20260405161545.161006-1-julianbraha@gmail.com>

On Sun, Apr 05, 2026 at 05:15:45PM +0100, Julian Braha wrote:
> The GUEST_STATE_BUFFER_TEST config option should default
> to KUNIT_ALL_TESTS so that if all tests are enabled then
> it is included, but currently the 'default KUNIT_ALL_TESTS'
> statement is shadowed by 'def_tristate n',
> meaning that this second default statement is currently dead code.
> 
> It looks to me like the commit
> 6ccbbc33f06a ("KVM: PPC: Add helper library for Guest State Buffers")
> intended to set the default to KUNIT_ALL_TESTS, but mistakenly
> missed the def_tristate.
> 
> This dead code was found by kconfirm, a static analysis tool for Kconfig.
> 
> Fixes: 6ccbbc33f06a ("KVM: PPC: Add helper library for Guest State Buffers")
> Signed-off-by: Julian Braha <julianbraha@gmail.com>
> ---
>  arch/powerpc/Kconfig.debug | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug
> index f15e5920080b..e8718bc13eeb 100644
> --- a/arch/powerpc/Kconfig.debug
> +++ b/arch/powerpc/Kconfig.debug
> @@ -83,11 +83,10 @@ config MSI_BITMAP_SELFTEST
>  	depends on DEBUG_KERNEL
>  
>  config GUEST_STATE_BUFFER_TEST
> -	def_tristate n
> +	def_tristate KUNIT_ALL_TESTS
>  	prompt "Enable Guest State Buffer unit tests"
>  	depends on KUNIT
>  	depends on KVM_BOOK3S_HV_POSSIBLE
> -	default KUNIT_ALL_TESTS
>  	help
>  	  The Guest State Buffer is a data format specified in the PAPR.
>  	  It is by hcalls to communicate the state of L2 guests between
> -- 

Tested-by: Gautam Menghani <gautam@linux.ibm.com>


^ permalink raw reply

* Re: [PATCH v3] powerpc/g5: Enable all windfarms by default
From: Michael Ellerman @ 2026-05-06 11:41 UTC (permalink / raw)
  To: Linus Walleij, Madhavan Srinivasan, Michael Ellerman,
	Nicholas Piggin, Christophe Leroy (CS GROUP)
  Cc: linuxppc-dev, linux-kernel
In-Reply-To: <20260505-powermac-g5-config-v3-1-7747bf72f874@kernel.org>

On 6/5/2026 04:47, Linus Walleij wrote:
> The G5 defconfig is clearly intended for the G5 Powermac
> series, and that should enable all the available
> windfarm drivers, or the machine will overheat a short
> while after booting and shut itself down, which is
> annoying.
> 
> Signed-off-by: Linus Walleij <linusw@kernel.org>
> ---
> I wonder why this never gets applied. Am I doing something wrong?
> Is the patch stupid? No-one cares?

Sorry it didn't get picked up.

I don't have any G5s anymore, but the ones I did have used the other 
windfarm drivers so I never hit this.

You might be the last person on earth booting Linux on those :)

> ---
> Changes in v3:
> - Rebased on v7.1-rc1
> - Link to v2: https://lore.kernel.org/r/20260120-powermac-g5-config-v2-1-cd8f1c8bfbae@kernel.org
> 
> Changes in v2:
> - Rebased on v6.19-rc1
> - Link to v1: https://lore.kernel.org/r/20251205-powermac-g5-config-v1-1-8609aa97c1c0@kernel.org
> 
> To: Madhavan Srinivasan <maddy@linux.ibm.com>
> To: Michael Ellerman <mpe@ellerman.id.au>
> To: Nicholas Piggin <npiggin@gmail.com>
> To: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
> Cc: linuxppc-dev@lists.ozlabs.org
> Cc: linux-kernel@vger.kernel.org
> ---
>   arch/powerpc/configs/g5_defconfig | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig
> index 04bbb37f5978..f74ccc06f4c1 100644
> --- a/arch/powerpc/configs/g5_defconfig
> +++ b/arch/powerpc/configs/g5_defconfig
> @@ -85,6 +85,8 @@ CONFIG_PMAC_SMU=y
>   CONFIG_MAC_EMUMOUSEBTN=y
>   CONFIG_WINDFARM=y
>   CONFIG_WINDFARM_PM81=y
> +CONFIG_WINDFARM_PM72=y
> +CONFIG_WINDFARM_RM31=y
>   CONFIG_WINDFARM_PM91=y
>   CONFIG_WINDFARM_PM112=y
>   CONFIG_WINDFARM_PM121=y
> 

Ack, LGTM.

Maddy can you pick this one up for next?

cheers


^ permalink raw reply

* [PATCH v2 net] net: wan: fsl_ucc_hdlc: free tx_skbuff in uhdlc_memclean
From: Holger Brunck @ 2026-05-06 11:15 UTC (permalink / raw)
  To: netdev
  Cc: linuxppc-dev, andrew+netdev, chleroy, qiang.zhao, horms, kuba,
	Holger Brunck

When the device is removed all allocated resources should be freed.
In uhdlc_memclean the netdev transmit queue was already stopped. But at
this point we may have pending skb in the transmit queue which must be
freed. Therefore iterate over the tx_skbuff pointers and free all
pending skb. The issue was discovered by sashiko.

https://sashiko.dev/#/patchset/20260429114208.941011-1-holger.brunck%40hitachienergy.com
Fixes: c19b6d246a35 ("drivers/net: support hdlc function for QE-UCC")
Signed-off-by: Holger Brunck <holger.brunck@hitachienergy.com>
---
v2: - use dev_kfree_skb instead of kfree
    - improve commit message
    - add missing paramter in for statement
v1: https://lore.kernel.org/linuxppc-dev/20260504161145.2217950-1-holger.brunck@hitachienergy.com/

 drivers/net/wan/fsl_ucc_hdlc.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/net/wan/fsl_ucc_hdlc.c b/drivers/net/wan/fsl_ucc_hdlc.c
index bc7c2e9e6554..417e8e4c111f 100644
--- a/drivers/net/wan/fsl_ucc_hdlc.c
+++ b/drivers/net/wan/fsl_ucc_hdlc.c
@@ -739,6 +739,8 @@ static int uhdlc_open(struct net_device *dev)
 
 static void uhdlc_memclean(struct ucc_hdlc_private *priv)
 {
+	int i;
+
 	qe_muram_free(ioread16be(&priv->ucc_pram->riptr));
 	qe_muram_free(ioread16be(&priv->ucc_pram->tiptr));
 
@@ -769,6 +771,11 @@ static void uhdlc_memclean(struct ucc_hdlc_private *priv)
 	kfree(priv->rx_skbuff);
 	priv->rx_skbuff = NULL;
 
+	for (i = 0; i < TX_BD_RING_LEN; i++) {
+		dev_kfree_skb(priv->tx_skbuff[i]);
+		priv->tx_skbuff[i] = NULL;
+	}
+
 	kfree(priv->tx_skbuff);
 	priv->tx_skbuff = NULL;
 
-- 
2.52.0.120.gb31ab939fe



^ permalink raw reply related

* Re: [PATCH] powerpc: fix dead default for GUEST_STATE_BUFFER_TEST
From: Amit Machhiwal @ 2026-05-07 13:46 UTC (permalink / raw)
  To: Julian Braha
  Cc: maddy, mpe, npiggin, chleroy, jniethe5, linuxppc-dev,
	linux-kernel
In-Reply-To: <20260405161545.161006-1-julianbraha@gmail.com>

Hi Julian,

Thanks for the patch.

On 2026/04/05 05:15 PM, Julian Braha wrote:
> The GUEST_STATE_BUFFER_TEST config option should default
> to KUNIT_ALL_TESTS so that if all tests are enabled then
> it is included, but currently the 'default KUNIT_ALL_TESTS'
> statement is shadowed by 'def_tristate n',
> meaning that this second default statement is currently dead code.
> 
> It looks to me like the commit
> 6ccbbc33f06a ("KVM: PPC: Add helper library for Guest State Buffers")
> intended to set the default to KUNIT_ALL_TESTS, but mistakenly
> missed the def_tristate.
> 
> This dead code was found by kconfirm, a static analysis tool for Kconfig.
> 
> Fixes: 6ccbbc33f06a ("KVM: PPC: Add helper library for Guest State Buffers")
> Signed-off-by: Julian Braha <julianbraha@gmail.com>
> ---
>  arch/powerpc/Kconfig.debug | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)

This test is specific to KVM nested API v2 and is currently opt-in only.
This patch enables it by default when KUNIT_ALL_TESTS=y.

Since PPC kernels in general are built for both PowerNV and pSeries
platforms, and the API v2 code is always compiled in. Also, the tests
operate on guest state buffer in memory and no hcalls are involved,
enabling the test by default makes sense. Hence:

Reviewed-by: Amit Machhiwal <amachhiw@linux.ibm.com>

Thanks,
Amit

> 
> diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug
> index f15e5920080b..e8718bc13eeb 100644
> --- a/arch/powerpc/Kconfig.debug
> +++ b/arch/powerpc/Kconfig.debug
> @@ -83,11 +83,10 @@ config MSI_BITMAP_SELFTEST
>  	depends on DEBUG_KERNEL
>  
>  config GUEST_STATE_BUFFER_TEST
> -	def_tristate n
> +	def_tristate KUNIT_ALL_TESTS
>  	prompt "Enable Guest State Buffer unit tests"
>  	depends on KUNIT
>  	depends on KVM_BOOK3S_HV_POSSIBLE
> -	default KUNIT_ALL_TESTS
>  	help
>  	  The Guest State Buffer is a data format specified in the PAPR.
>  	  It is by hcalls to communicate the state of L2 guests between
> -- 
> 2.53.0
> 


^ permalink raw reply

* RE: [PATCH net] net: wan: fsl_ucc_hdlc: return NETDEV_TX_OK if skb was freed
From: Holger Brunck @ 2026-05-06  9:35 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: netdev@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	andrew+netdev@lunn.ch, chleroy@kernel.org, qiang.zhao@nxp.com,
	horms@kernel.org
In-Reply-To: <20260505182220.29e5f34e@kernel.org>

> 
> On Mon,  4 May 2026 19:44:06 +0200 Holger Brunck wrote:
> > If the skb was freed in the ucc_hdlc_tx function and the packet marked
> > as dropped we need to return NETDEV_TX_OK. Otherwise the above layer
> > will try to requeue an already freed skb.
> 
> Is this really true? I thought negative returns mean drop.

the API suggest to only use NETDEV_TX_OK or NETDEV_TX_BUSY as return value.
I checked several drivers and they are usually returning NETDEV_TX_OK if an
error occurred and the driver consumed the packet. But you are right
dev_xmit_complete will also return true if the return code is smaller than zero
and the packet is not requeued. Should I update the commit message or should
the patch be dropped?

Best regards
Holger


^ permalink raw reply

* [PATCH 3/3] lkdtm/powerpc: add PPC_RADIX_TLBIEL test for radix MCE validation
From: Sayali Patil @ 2026-05-06  9:06 UTC (permalink / raw)
  To: linuxppc-dev, maddy
  Cc: linux-kernel, Ritesh Harjani, Mahesh Salgaonkar, sshegde, chleroy
In-Reply-To: <cover.1778057685.git.sayalip@linux.ibm.com>

Add a new LKDTM trigger (PPC_RADIX_TLBIEL) that executes a process-scoped
radix TLBIEL instruction to exercise the radix MMU behaviour and
associated machine check exception (MCE) handling paths.

This provides a way to validate MCE handling in radix mode. Currently,
there is no dedicated LKDTM test that exercises this path or allows
triggering radix-specific machine check behaviour for validation.

The test is only enabled on ppc64 systems with radix MMU
support and If radix is not active, the trigger is skipped and reported as
XFAIL.

Co-developed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Sayali Patil <sayalip@linux.ibm.com>
---
 drivers/misc/lkdtm/Makefile             |  2 +-
 drivers/misc/lkdtm/powerpc.c            | 39 +++++++++++++++++++++++++
 tools/testing/selftests/lkdtm/tests.txt |  1 +
 3 files changed, 41 insertions(+), 1 deletion(-)

diff --git a/drivers/misc/lkdtm/Makefile b/drivers/misc/lkdtm/Makefile
index 03ebe33185f9..4e58d16fc01e 100644
--- a/drivers/misc/lkdtm/Makefile
+++ b/drivers/misc/lkdtm/Makefile
@@ -11,7 +11,7 @@ lkdtm-$(CONFIG_LKDTM)		+= usercopy.o
 lkdtm-$(CONFIG_LKDTM)		+= kstack_erase.o
 lkdtm-$(CONFIG_LKDTM)		+= cfi.o
 lkdtm-$(CONFIG_LKDTM)		+= fortify.o
-lkdtm-$(CONFIG_PPC_64S_HASH_MMU)	+= powerpc.o
+lkdtm-$(CONFIG_PPC_BOOK3S_64)	+= powerpc.o
 
 KASAN_SANITIZE_stackleak.o	:= n
 
diff --git a/drivers/misc/lkdtm/powerpc.c b/drivers/misc/lkdtm/powerpc.c
index ef07e5201edf..3d56b56f5e0c 100644
--- a/drivers/misc/lkdtm/powerpc.c
+++ b/drivers/misc/lkdtm/powerpc.c
@@ -105,6 +105,31 @@ static void insert_dup_slb_entry_0(void)
 	preempt_enable();
 }
 
+static void tlbiel_va(unsigned long va,
+		      unsigned long pid,
+		      unsigned long ap,
+		      unsigned long ric)
+{
+	unsigned long rb, rs, prs, r;
+
+	rb = va & ~(PPC_BITMASK(52, 63));
+	rb |= ap << PPC_BITLSHIFT(58);
+	rs = pid << PPC_BITLSHIFT(31);
+
+	prs = 1; /* process scoped */
+	r = 1;   /* radix format */
+
+	/*
+	 * Trigger an MCE by issuing radix tlbiel with an invalid operand combination.
+	 * Using PRS=1 (process-scoped) with kernel address does not correspond to
+	 * any valid process-scoped translation.
+	 * This results in an invalid tlbiel operation, causing hardware to
+	 * raise a machine check.
+	 */
+	asm volatile(PPC_TLBIEL(%0, %4, %3, %2, %1)
+			: : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
+}
+
 static void lkdtm_PPC_SLB_MULTIHIT(void)
 {
 	if (!radix_enabled()) {
@@ -124,8 +149,22 @@ static void lkdtm_PPC_SLB_MULTIHIT(void)
 	}
 }
 
+static void lkdtm_PPC_RADIX_TLBIEL(void)
+{
+	unsigned long addr = PAGE_OFFSET;
+
+	if (radix_enabled()) {
+		pr_info("Injecting Radix TLB invalidation MCE\n");
+		tlbiel_va(addr, 0, 0, RIC_FLUSH_ALL);
+		pr_info("Recovered from radix tlbiel attempt\n");
+	} else {
+		pr_err("XFAIL: This test is for ppc64 and with radix mode MMU only\n");
+	}
+}
+
 static struct crashtype crashtypes[] = {
 	CRASHTYPE(PPC_SLB_MULTIHIT),
+	CRASHTYPE(PPC_RADIX_TLBIEL),
 };
 
 struct crashtype_category powerpc_crashtypes = {
diff --git a/tools/testing/selftests/lkdtm/tests.txt b/tools/testing/selftests/lkdtm/tests.txt
index 3245032db34d..d8180bbe31e8 100644
--- a/tools/testing/selftests/lkdtm/tests.txt
+++ b/tools/testing/selftests/lkdtm/tests.txt
@@ -86,3 +86,4 @@ FORTIFY_STR_MEMBER detected buffer overflow
 FORTIFY_MEM_OBJECT detected buffer overflow
 FORTIFY_MEM_MEMBER detected field-spanning write
 PPC_SLB_MULTIHIT Recovered
+#PPC_RADIX_TLBIEL Triggers unrecoverable MCE
-- 
2.52.0



^ permalink raw reply related

* [PATCH 1/3] powerpc/time: remove preempt_disable/enable from arch_irq_work_raise()
From: Sayali Patil @ 2026-05-06  9:06 UTC (permalink / raw)
  To: linuxppc-dev, maddy
  Cc: linux-kernel, Ritesh Harjani, Mahesh Salgaonkar, sshegde, chleroy
In-Reply-To: <cover.1778057685.git.sayalip@linux.ibm.com>

A kernel panic is observed when handling machine check exceptions from
real mode.

  BUG: Unable to handle kernel data access on read at 0xc00000006be21300
  Oops: Kernel access of bad area, sig: 11 [#1]
  NIP [c000000000029e40] arch_irq_work_raise+0x10/0x70
  LR [c00000000003ffc8] machine_check_queue_event+0xa8/0x150
  Call Trace:
  [c0000000179d3c70] [c00000000003ff64] machine_check_queue_event+0x44/0x150
  [c0000000179d3d30] [c0000000000084e0] machine_check_early_common+0x1f0/0x2c0

The crash occurs because arch_irq_work_raise() calls preempt_disable()
from machine check exception (MCE) handlers running in real mode. In
this context, accessing the preempt_count can fault, leading to the panic.

The preempt_disable()/preempt_enable() pair in arch_irq_work_raise()
was originally added by commit 0fe1ac48bef0 ("powerpc/perf_event: Fix
oops due to perf_event_do_pending call") to avoid races while raising
irq work from exception context.

Later, commit 471ba0e686cb ("irq_work: Do not raise an IPI when
queueing work on the local CPU") added preemption protection in
irq_work_queue() path, while commit 20b876918c06 ("irq_work: Use per
cpu atomics instead of regular atomics") added equivalent
protection in irq_work_queue_on() before reaching arch_irq_work_raise():

  irq_work_queue() / irq_work_queue_on()
    -> preempt_disable()
      -> __irq_work_queue_local()
        -> irq_work_raise()
          -> arch_irq_work_raise()

As a result, callers other than mce_irq_work_raise() already execute
with preemption disabled, making the additional
preempt_disable()/preempt_enable() pair in arch_irq_work_raise()
redundant.

Remove it to avoid accessing preempt_count from real mode context.

Fixes: cc15ff327569 ("powerpc/mce: Avoid using irq_work_queue() in realmode")
Suggested-by: Mahesh Salgaonkar <mahesh@linux.ibm.com>
Signed-off-by: Sayali Patil <sayalip@linux.ibm.com>
---
 arch/powerpc/kernel/time.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 4bbeb8644d3d..a99eb43f6ce9 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -471,10 +471,8 @@ void arch_irq_work_raise(void)
 	 * which could get tangled up if we're messing with the same state
 	 * here.
 	 */
-	preempt_disable();
 	set_irq_work_pending_flag();
 	set_dec(1);
-	preempt_enable();
 }
 
 static void set_dec_or_work(u64 val)
-- 
2.52.0



^ permalink raw reply related

* [PATCH 0/3] MCE robustness fixes and LKDTM powerpc enhancements
From: Sayali Patil @ 2026-05-06  9:06 UTC (permalink / raw)
  To: linuxppc-dev, maddy
  Cc: linux-kernel, Ritesh Harjani, Mahesh Salgaonkar, sshegde, chleroy

Hi all,

This series fixes a panic observed while handling machine check exceptions
(MCEs) from real mode. It also improves the reliability of the
PPC_SLB_MULTIHIT test by adding isync instructions after slbmte operations,
and introduces a new LKDTM trigger (PPC_RADIX_TLBIEL) to validate MCE
behavior on radix MMU.

Please review the patches and provide any feedback or suggestions
for improvement.

Thanks,
Sayali

Sayali Patil (3):
  powerpc/time: remove preempt_disable/enable from arch_irq_work_raise()
  lkdtm/powerpc: add isync after slbmte to enforce SLB update ordering
  lkdtm/powerpc: add PPC_RADIX_TLBIEL test for radix MCE validation

 arch/powerpc/kernel/time.c              |  2 --
 drivers/misc/lkdtm/Makefile             |  2 +-
 drivers/misc/lkdtm/powerpc.c            | 44 +++++++++++++++++++++++++
 tools/testing/selftests/lkdtm/tests.txt |  1 +
 4 files changed, 46 insertions(+), 3 deletions(-)

-- 
2.52.0



^ permalink raw reply

* [PATCH 2/3] lkdtm/powerpc: add isync after slbmte to enforce SLB update ordering
From: Sayali Patil @ 2026-05-06  9:06 UTC (permalink / raw)
  To: linuxppc-dev, maddy
  Cc: linux-kernel, Ritesh Harjani, Mahesh Salgaonkar, sshegde, chleroy
In-Reply-To: <cover.1778057685.git.sayalip@linux.ibm.com>

The slbmte instruction modifies the Segment Lookaside Buffer, but without
a context synchronizing operation the CPU is not guaranteed to observe
the updated SLB state for subsequent instructions. This can result in
use of stale translation state when memory is accessed immediately after
SLB modifications.

Add isync after each slbmte in the PPC_SLB_MULTIHIT test to ensure proper
ordering of SLB updates before subsequent memory accesses.

This aligns with Power ISA context synchronization requirements for changes
in address translation state and improves the reliability of SLB multihit
injection tests in hash MMU mode.

Suggested-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Sayali Patil <sayalip@linux.ibm.com>
---
 drivers/misc/lkdtm/powerpc.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/misc/lkdtm/powerpc.c b/drivers/misc/lkdtm/powerpc.c
index be385449911a..ef07e5201edf 100644
--- a/drivers/misc/lkdtm/powerpc.c
+++ b/drivers/misc/lkdtm/powerpc.c
@@ -17,11 +17,14 @@ static void insert_slb_entry(unsigned long p, int ssize, int page_size)
 		     : "r" (mk_vsid_data(p, ssize, flags)),
 		       "r" (mk_esid_data(p, ssize, SLB_NUM_BOLTED))
 		     : "memory");
+	isync();
 
 	asm volatile("slbmte %0,%1" :
 			: "r" (mk_vsid_data(p, ssize, flags)),
 			  "r" (mk_esid_data(p, ssize, SLB_NUM_BOLTED + 1))
 			: "memory");
+	isync();
+
 	preempt_enable();
 }
 
@@ -84,6 +87,7 @@ static void insert_dup_slb_entry_0(void)
 			: "r" (vsid),
 			  "r" (esid | SLB_NUM_BOLTED)
 			: "memory");
+	isync();
 
 	asm volatile("slbmfee  %0,%1" : "=r" (esid) : "r" (i));
 	asm volatile("slbmfev  %0,%1" : "=r" (vsid) : "r" (i));
@@ -93,6 +97,7 @@ static void insert_dup_slb_entry_0(void)
 			: "r" (vsid),
 			  "r" (esid | (SLB_NUM_BOLTED + 1))
 			: "memory");
+	isync();
 
 	pr_info("%s accessing test address 0x%lx: 0x%lx\n",
 		__func__, test_address, *test_ptr);
-- 
2.52.0



^ permalink raw reply related

* Re: [PATCH V2] powerpc/text-patching: simplify the implementation of ppc_kallsyms_lookup_name()
From: Andy Shevchenko @ 2026-05-06  8:44 UTC (permalink / raw)
  To: Xie Yuanbin
  Cc: chleroy, maddy, mpe, npiggin, kees, linuxppc-dev, linux-kernel,
	lilinjie8, liaohua4
In-Reply-To: <20260506021143.13797-1-xieyuanbin1@huawei.com>

On Wed, May 06, 2026 at 10:11:43AM +0800, Xie Yuanbin wrote:
> ppc_kallsyms_lookup_name() is called only twice in the kernel code, and
> the parameters are all constant strings. strnlen(name, KSYM_NAME_LEN) is
> called inside ppc_kallsyms_lookup_name(), when the compiler detects that
> KSYM_NAME_LEN is larger then the constant strings,
> the following error will be triggered:
> ```log
>   CC      arch/powerpc/kernel/optprobes.o
> In file included from ./arch/powerpc/include/asm/kprobes.h:24,
>                  from ./include/linux/kprobes.h:31,
>                  from arch/powerpc/kernel/optprobes.c:8:
> In function 'ppc_kallsyms_lookup_name',
>     inlined from 'arch_prepare_optimized_kprobe' at arch/powerpc/kernel/optprobes.c:209:21:
> ./arch/powerpc/include/asm/text-patching.h:232:13: error: 'strnlen' specified bound 512 exceeds source size 19 [-Werror=stringop-overread]
>   232 |         if (strnlen(name, KSYM_NAME_LEN) >= KSYM_NAME_LEN)
>       |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In function 'ppc_kallsyms_lookup_name',
>     inlined from 'arch_prepare_optimized_kprobe' at arch/powerpc/kernel/optprobes.c:210:22:
> ./arch/powerpc/include/asm/text-patching.h:232:13: error: 'strnlen' specified bound 512 exceeds source size 13 [-Werror=stringop-overread]
>   232 |         if (strnlen(name, KSYM_NAME_LEN) >= KSYM_NAME_LEN)
>       |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> cc1: all warnings being treated as errors
> ```

This log can be made more readable:

  ```log
  In function 'ppc_kallsyms_lookup_name',
  ./arch/powerpc/include/asm/text-patching.h:232:13: error: 'strnlen' specified bound 512 exceeds source size 19 [-Werror=stringop-overread]
    232 |         if (strnlen(name, KSYM_NAME_LEN) >= KSYM_NAME_LEN)
        |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ```

> The error can be reproduced in the following ways:
> Use lastest linux-next source, change ppc_kallsyms_lookup_name() to
> __always_inline, use default ppc64_defconfig, set CONFIG_EXPERT=y,
> CONFIG_PPC64_BIG_ENDIAN_ELF_ABI_V2=n, CONFIG_CC_OPTIMIZE_FOR_SIZE=y,
> and use gcc-14 or a later version for compilation.
> 
> Since ppc_kallsyms_lookup_name() is called only twice in the kernel,
> and the parameters are all constant strins, simplify the implementation
> of ppc_kallsyms_lookup_name() and avoid calling strnlen().

> Cc: Andy Shevchenko <andriy.shevchenko@intel.com>
> Cc: Kees Cook <kees@kernel.org>

Please, keep Cc list...

> Suggested-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
> Signed-off-by: Xie Yuanbin <xieyuanbin1@huawei.com>
> ---

...somewhere here in the comments block. This will reduce unneeded churn
in the commit message when maintainer applies the patch.

> v1->v2: https://lore.kernel.org/20260205100517.292858-2-xieyuanbin1@huawei.com
>   - Not use strlen()

-- 
With Best Regards,
Andy Shevchenko




^ permalink raw reply

* RE: [PATCH net] net: wan: fsl_ucc_hdlc: free tx_skbuff in uhdlc_memclean
From: Holger Brunck @ 2026-05-06  8:27 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: Christophe Leroy (CS GROUP), netdev@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, andrew+netdev@lunn.ch,
	qiang.zhao@nxp.com, horms@kernel.org
In-Reply-To: <20260505164736.26d203a8@kernel.org>

 > On Tue, 5 May 2026 08:33:34 +0000 Holger Brunck wrote:
> > > I don't think you can just kfree() an skb like this.
> > >
> > > I think you have to call dev_kfree_skb_any() instead.
> >
> > yes you are right or at least dev_kfree_skb() as the error handling
> > code in ucc_hdlc_tx does.
> 
> Please make it clear in the commit message how you discovered the issue and
> how you tested your patches.

currently the driver is broken if you compile it as a module and try to reload it.
The issue was discovered by a sashiko review for a previous patch of me:
 https://sashiko.dev/#/patchset/20260429114208.941011-1-holger.brunck%40hitachienergy.com

Still there are further issues remaining in the driver. I will update the patch and
the commit message.

Best regards
Holger



^ permalink raw reply

* RE: [PATCH v5 net-next 11/15] net: dsa: netc: add phylink MAC operations
From: Wei Fang @ 2026-05-06  8:20 UTC (permalink / raw)
  To: Claudiu Manoil, Vladimir Oltean, Clark Wang,
	andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, robh@kernel.org,
	krzk+dt@kernel.org, conor+dt@kernel.org, f.fainelli@gmail.com,
	Frank Li, chleroy@kernel.org, horms@kernel.org,
	linux@armlinux.org.uk
  Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev
In-Reply-To: <20260430024945.3413973-12-wei.fang@nxp.com>

There are some comments from Sashiko and see my response inline.

> +static void netc_mac_port_rmw(struct netc_port *np, u32 reg,
> +			      u32 mask, u32 val)
> +{
> +	u32 old, new;
> +
> +	if (is_netc_pseudo_port(np))
> +		return;
> +
> +	WARN_ON((mask | val) != mask);
> +
> +	old = netc_port_rd(np, reg);
> +	new = (old & ~mask) | val;
> +	if (new == old)
> +		return;
> +
> +	netc_port_wr(np, reg, new);
> +	if (np->caps.pmac)
> +		netc_port_wr(np, reg + NETC_PMAC_OFFSET, new);

Does this code risk corrupting the pseudo-MAC (PMAC) configuration?

By reading the original register value exclusively from the primary MAC
(MAC 0) and writing the resulting new value to both MAC 0 and the PMAC,
any independent configuration stored in the unmasked bits of the PMAC could
be blindly overwritten.

Additionally, if the new value matches the old value for MAC 0, the function
returns early. Could this leave the PMAC permanently out of sync if its state
needed updating but MAC 0 did not?

The pmac means preemption MAC not the pseudo MAC, I will add a comment
to the pmac definition. The purpose of netc_mac_port_rmw() is to make
pMAC and eMAC configurations the same. So this is a false positive.

[...]

> +static void netc_port_mac_tx_graceful_stop(struct netc_port *np) {
> +	netc_port_rmw(np, NETC_POR, POR_TXDIS, POR_TXDIS);
> +
> +	if (is_netc_pseudo_port(np))
> +		return;
> +
> +	netc_port_wait_tx_empty(np, 0);
> +	if (np->caps.pmac)
> +		netc_port_wait_tx_empty(np, 1);
> +
> +	netc_mac_port_rmw(np, NETC_PM_CMD_CFG(0), PM_CMD_CFG_TX_EN,
> 0); }

Can this sequence race with the Port actively pushing the remainder of a packet
to the MAC?

The code disables the Port TX (POR_TXDIS) and then immediately waits for the
MAC TX FIFO to empty. However, without polling the PSR_TX_BUSY bit in NETC_PSR
to ensure the port has finished its work (similar to how PSR_RX_BUSY is checked
in netc_port_mac_rx_graceful_stop), it appears the MAC TX FIFO could
momentarily empty while the port is still pushing data.

Would this lead to prematurely disabling the MAC TX (PM_CMD_CFG_TX_EN = 0) and
potentially truncating egress packets or leaving the hardware in an invalid
state?

This is also a false positive, the procedures for configuring graceful stop for TX
and RX are different, and they are all configured in accordance with the NETC
reference manual.



^ permalink raw reply

* RE: [PATCH v5 net-next 10/15] net: dsa: netc: introduce NXP NETC switch driver for i.MX94
From: Wei Fang @ 2026-05-06  8:03 UTC (permalink / raw)
  To: Claudiu Manoil, Vladimir Oltean, Clark Wang,
	andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, robh@kernel.org,
	krzk+dt@kernel.org, conor+dt@kernel.org, f.fainelli@gmail.com,
	Frank Li, chleroy@kernel.org, horms@kernel.org,
	linux@armlinux.org.uk
  Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev
In-Reply-To: <20260430024945.3413973-11-wei.fang@nxp.com>

There are some comments from Sashiko, and see my response inline.

> +static int netc_init_all_ports(struct netc_switch *priv)
> +{
> +	struct device *dev = priv->dev;
> +	struct netc_port *np;
> +	struct dsa_port *dp;
> +	int err;
> +
> +	priv->ports = devm_kcalloc(dev, priv->info->num_ports,
> +				   sizeof(struct netc_port *),
> +				   GFP_KERNEL);
> +	if (!priv->ports)
> +		return -ENOMEM;
> +
> +	/* Some DSA interfaces may set the port even it is disabled, such
> +	 * as .port_disable(), .port_stp_state_set() and so on. To avoid
> +	 * crash caused by accessing NULL port pointer, each port is
> +	 * allocated its own memory. Otherwise, we need to check whether
> +	 * the port pointer is NULL in these interfaces. The latter is
> +	 * difficult for us to cover.
> +	 */
> +	for (int i = 0; i < priv->info->num_ports; i++) {
> +		np = devm_kzalloc(dev, sizeof(*np), GFP_KERNEL);

These devm_* allocations are tied to the PCI device (dev), but happen in a
call chain invoked by the DSA setup() callback:
netc_setup()
  netc_init_all_ports()
    devm_kcalloc(...)
    devm_kzalloc(...)
    netc_port_create_mdio_bus()
      netc_port_create_emdio_bus()
        devm_mdiobus_alloc_size(...)
        devm_of_mdiobus_register(...)
Because the DSA setup() and teardown() callbacks can execute multiple times
over the device's lifetime (e.g., when the DSA conduit interface is unbound
and rebound), these devm_* allocations won't be freed during teardown().

Will this cause memory leaks and MDIO bus registration failures due to sysfs
collisions on subsequent setup() calls?

I checked the DSA core driver with Cody help, the .teardown() is only called
when .setup() fails or the switch device is removed. So .setup() and .teardown()
are not called multiple time over the switch's lifetime, this should be a false
positive.

[ ... ]
> +static int netc_switch_pci_init(struct pci_dev *pdev)
> +{
> +	struct device *dev = &pdev->dev;
> +	struct netc_switch_regs *regs;
> +	struct netc_switch *priv;
> +	void __iomem *base;
> +	int err;
> +
> +	pcie_flr(pdev);

Will this pcie_flr() call wipe the PCI configuration space and BARs?

Since pcie_flr() is called without first saving and later restoring the state
with pci_save_state() and pci_restore_state(), the BARs might remain zeroed.
Could subsequent calls to pcim_iomap() and MMIO accesses then fail to decode
at the hardware level, resulting in target aborts?

This is a false positive, the pcie_flr() is called when initializing the switch
to clear the configuration from U-boot or the last binding.



^ permalink raw reply

* Re: [PATCH v1 1/6] objtool/powerpc: Add build-time fixup of alternate feature branch targets
From: Peter Zijlstra @ 2026-05-06  7:17 UTC (permalink / raw)
  To: Christophe Leroy (CS GROUP)
  Cc: Sathvika Vasireddy, nathan, nsc, maddy, mpe, npiggin, jpoimboe,
	ojeda, masahiroy, lossin, tamird, thomas.weissschuh, rostedt,
	ihor.solodrai, thuth, pmladek, aliceryhl, elver, kees, legion,
	ardb, yuxuan.zuo, alexghiti, alexandre.chartre, bp, linux-kbuild,
	linux-kernel, linuxppc-dev
In-Reply-To: <669fbc9a-a243-43e8-8888-93bfb9d6ee12@kernel.org>

On Tue, May 05, 2026 at 05:48:32PM +0200, Christophe Leroy (CS GROUP) wrote:

> bclr (which is the return INSN_RETURN) has type 19
> 
> By the way you can have a look at https://patchwork.ozlabs.org/project/linuxppc-dev/patch/bfa8364da047d8610a09458a1cd924a0566aedbb.1736955567.git.christophe.leroy@csgroup.eu/

That is indeed more; isn't bcl something like COND_CALL ? (another one
of them things we don't have).

> That patch has all the objtool decoding. By the way objtool is missing a
> INSN_CONDITIONAL_RETURN, also see https://patchwork.ozlabs.org/project/linuxppc-dev/patch/537e5d8f181b1f1c2b8918f1aefa1dba3f972c03.1736955567.git.christophe.leroy@csgroup.eu/

Right, that is not something x86 has, but I don't see a reason we can't
add that. With return thunks, Clang (and I've heard GCC is also
considering this) does something very close to conditional return.

With return thunks, regular RET instruction is replaced with a JMP, or
rather Jcc in this specific case, to the out of line __x86_return_thunk
symbol. Objtool currently treats that as a conditional sibling/tail
call, which isn't wrong.

Anyway, with that patch, I think validate_insn() wants something like so
added:

	case INSN_COND_RETURN:
		validate_return(func, insn, statep);
		break;

That way we do the return checks, but don't terminate the control flow.
After all, when the condition is taken, we had better have the stack
frame in the same state etc.


^ permalink raw reply

* RE: [PATCH v5 net-next 09/15] net: dsa: add NETC switch tag support
From: Wei Fang @ 2026-05-06  7:34 UTC (permalink / raw)
  To: Claudiu Manoil, Vladimir Oltean, Clark Wang,
	andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, robh@kernel.org,
	krzk+dt@kernel.org, conor+dt@kernel.org, f.fainelli@gmail.com,
	Frank Li, chleroy@kernel.org, horms@kernel.org,
	linux@armlinux.org.uk
  Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev
In-Reply-To: <20260430024945.3413973-10-wei.fang@nxp.com>

> +static void netc_flow_dissect(const struct sk_buff *skb, __be16 *proto,
> +			      int *offset)
> +{
> +	struct netc_tag_cmn *tag_cmn = (struct netc_tag_cmn *)(skb->data - 2);
> +	int tag_len = netc_get_rx_tag_len(tag_cmn->type);
> +
> +	*offset = tag_len;
> +	*proto = ((__be16 *)skb->data)[(tag_len / 2) - 1];

Below is the comment from Sashiko.

Can this direct access to skb->data cause an out-of-bounds read?

When __skb_flow_dissect() invokes ops->flow_dissect() on a packet injected by
a local user with a small linear area (where skb_headlen(skb) < tag_len),
these accesses might read past skb->tail into uninitialized memory or unmapped
pages.

Since pskb_may_pull() cannot be used on a const struct sk_buff, does this
dissector need to use skb_header_pointer() to safely extract the fields?

This is a false positive, or at least it can be ignored. The RX minimum frame
length of each NETC switch port is set to 64 bytes. The frame will be received
by the ENETC driver. From the hardware perspective, each RX BD receive
buffer is at least 128 bytes, so the skb's linear buffer will definitely contain
the switch tag.



^ permalink raw reply

* RE: [PATCH v5 net-next 06/15] net: enetc: add support for the "Update" operation to buffer pool table
From: Wei Fang @ 2026-05-06  7:21 UTC (permalink / raw)
  To: Claudiu Manoil, Vladimir Oltean, Clark Wang,
	andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, robh@kernel.org,
	krzk+dt@kernel.org, conor+dt@kernel.org, f.fainelli@gmail.com,
	Frank Li, chleroy@kernel.org, horms@kernel.org,
	linux@armlinux.org.uk
  Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev
In-Reply-To: <20260430024945.3413973-7-wei.fang@nxp.com>

> +int ntmp_bpt_update_entry(struct ntmp_user *user, u32 entry_id,
> +			  const struct bpt_cfge_data *cfge)
> +{
> +	struct bpt_req_update *req;
> +	struct netc_swcbd swcbd;
> +	struct netc_cbdr *cbdr;
> +	union netc_cbd cbd;
> +	int err;
> +
> +	swcbd.size = sizeof(*req);
> +	err = ntmp_alloc_data_mem(user->dev, &swcbd, (void **)&req);
> +	if (err)
> +		return err;
> +
> +	ntmp_fill_crd_eid(&req->rbe, user->tbl.bpt_ver, 0,
> +			  NTMP_GEN_UA_CFGEU | BPT_UA_BPSEU, entry_id);

Below is the comment from Sashiko.

Will setting the BPT_UA_BPSEU flag cause issues here?

The BPT_UA_BPSEU flag instructs the hardware to update the Buffer Pool Status
Entry (BPSE), but the allocated request buffer (struct bpt_req_update) only
contains the configuration data (struct bpt_cfge_data), entirely omitting the
status data (struct bpt_bpse_data):
drivers/net/ethernet/freescale/enetc/ntmp_private.h:
struct bpt_req_update {
	struct ntmp_req_by_eid rbe;
	struct bpt_cfge_data cfge;
};

Because the length passed to the hardware is only
sizeof(struct bpt_req_update), will the hardware either reject the command
due to a length mismatch, or read past the end of the cfge structure and
write garbage into the hardware buffer pool's operational status fields?

This is a false positive, BPSEU flag indicates buffer pool state element
update. The state information is maintained by the table's internal buffer,
the table will clear the information if BPSEU flag is set.

> +	req->cfge = *cfge;
> +	ntmp_fill_request_hdr(&cbd, swcbd.dma, NTMP_LEN(swcbd.size, 0),
> +			      NTMP_BPT_ID, NTMP_CMD_UPDATE,
> NTMP_AM_ENTRY_ID);
> +
> +	ntmp_select_and_lock_cbdr(user, &cbdr);
> +	err = netc_xmit_ntmp_cmd(cbdr, &cbd, &swcbd);
> +	if (err)
> +		dev_err(user->dev,
> +			"Failed to update %s entry 0x%x, err: %pe\n",
> +			ntmp_table_name(NTMP_BPT_ID), entry_id, ERR_PTR(err));
> +
> +	ntmp_unlock_cbdr(cbdr);
> +
> +	return err;
> +}
> +EXPORT_SYMBOL_GPL(ntmp_bpt_update_entry);



^ permalink raw reply

* RE: [PATCH v5 net-next 15/15] net: dsa: netc: add support for ethtool private statistics
From: Wei Fang @ 2026-05-06  7:06 UTC (permalink / raw)
  To: Paolo Abeni
  Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev,
	Claudiu Manoil, Vladimir Oltean, Clark Wang,
	andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, robh@kernel.org, krzk+dt@kernel.org,
	conor+dt@kernel.org, f.fainelli@gmail.com, Frank Li,
	chleroy@kernel.org, horms@kernel.org, linux@armlinux.org.uk
In-Reply-To: <37382811-ba47-4432-9911-6c39acea4f86@redhat.com>

> On 4/30/26 4:49 AM, Wei Fang wrote:
> > Implement the ethtool private statistics interface to expose additional
> > port-level and MAC-level counters that are not covered by the standard
> > IEEE 802.3 statistics. The pMAC counters are only reported when the port
> > supports Frame Preemption (802.1Qbu/802.3br).
> >
> > Signed-off-by: Wei Fang <wei.fang@nxp.com>
> > ---
> >  drivers/net/dsa/netc/netc_ethtool.c   | 107
> ++++++++++++++++++++++++++
> >  drivers/net/dsa/netc/netc_main.c      |   3 +
> >  drivers/net/dsa/netc/netc_switch.h    |   9 +++
> >  drivers/net/dsa/netc/netc_switch_hw.h |  58 ++++++++++++++
> >  4 files changed, 177 insertions(+)
> >
> > diff --git a/drivers/net/dsa/netc/netc_ethtool.c
> b/drivers/net/dsa/netc/netc_ethtool.c
> > index ac8940b5a85c..8d04db534347 100644
> > --- a/drivers/net/dsa/netc/netc_ethtool.c
> > +++ b/drivers/net/dsa/netc/netc_ethtool.c
> > @@ -19,6 +19,56 @@ static const struct ethtool_rmon_hist_range
> netc_rmon_ranges[] = {
> >  	{ }
> >  };
> >
> > +static const struct netc_port_stat netc_port_counters[] = {
> > +	{ NETC_PTGSLACR,	"port gate late arrival frames" },
> > +	{ NETC_PSDFTCR,	"port SDF transmit frames" },
> > +	{ NETC_PSDFDDCR,	"port SDF drop duplicate frames" },
> > +	{ NETC_PRXDCR,		"port rx discard frames" },
> > +	{ NETC_PRXDCRRR,	"port rx discard read-reset" },
> > +	{ NETC_PRXDCRR0,	"port rx discard reason 0" },
> > +	{ NETC_PRXDCRR1,	"port rx discard reason 1" },
> > +	{ NETC_PTXDCR,		"port tx discard frames" },
> > +	{ NETC_PTXDCRRR,	"port tx discard read-reset" },
> > +	{ NETC_PTXDCRR0,	"port tx discard reason 0" },
> > +	{ NETC_PTXDCRR1,	"port tx discard reason 1" },
> > +	{ NETC_BPDCR,		"bridge port discard frames" },
> > +	{ NETC_BPDCRRR,	"bridge port discard read-reset" },
> > +	{ NETC_BPDCRR0,	"bridge port discard reason 0" },
> > +	{ NETC_BPDCRR1,	"bridge port discard reason 1" },
> > +};
> > +
> > +static const struct netc_port_stat netc_emac_counters[] = {
> > +	{ NETC_PM_ROCT(0),	"eMAC rx octets" },
> > +	{ NETC_PM_RVLAN(0),	"eMAC rx VLAN frames" },
> > +	{ NETC_PM_RERR(0),	"eMAC rx frame errors" },
> > +	{ NETC_PM_RUCA(0),	"eMAC rx unicast frames" },
> > +	{ NETC_PM_RDRP(0),	"eMAC rx dropped packets" },
> > +	{ NETC_PM_RPKT(0),	"eMAC rx packets" },
> > +	{ NETC_PM_TOCT(0),	"eMAC tx octets" },
> > +	{ NETC_PM_TVLAN(0),	"eMAC tx VLAN frames" },
> > +	{ NETC_PM_TFCS(0),	"eMAC tx FCS errors" },
> > +	{ NETC_PM_TUCA(0),	"eMAC tx unicast frames" },
> > +	{ NETC_PM_TPKT(0),	"eMAC tx packets" },
> > +	{ NETC_PM_TUND(0),	"eMAC tx undersized packets" },
> > +	{ NETC_PM_TIOCT(0),	"eMAC tx invalid octets" },
> > +};
> > +
> > +static const struct netc_port_stat netc_pmac_counters[] = {
> > +	{ NETC_PM_ROCT(1),	"pMAC rx octets" },
> > +	{ NETC_PM_RVLAN(1),	"pMAC rx VLAN frames" },
> > +	{ NETC_PM_RERR(1),	"pMAC rx frame errors" },
> > +	{ NETC_PM_RUCA(1),	"pMAC rx unicast frames" },
> > +	{ NETC_PM_RDRP(1),	"pMAC rx dropped packets" },
> > +	{ NETC_PM_RPKT(1),	"pMAC rx packets" },
> > +	{ NETC_PM_TOCT(1),	"pMAC tx octets" },
> > +	{ NETC_PM_TVLAN(1),	"pMAC tx VLAN frames" },
> > +	{ NETC_PM_TFCS(1),	"pMAC tx FCS errors" },
> > +	{ NETC_PM_TUCA(1),	"pMAC tx unicast frames" },
> > +	{ NETC_PM_TPKT(1),	"pMAC tx packets" },
> > +	{ NETC_PM_TUND(1),	"pMAC tx undersized packets" },
> > +	{ NETC_PM_TIOCT(1),	"pMAC tx invalid octets" },
> > +};
> 
> Sashiko says:
> 
> Are these standard MAC and interface statistics being duplicated in the
> driver-private ethtool strings?
> The networking subsystem guidelines indicate that statistics which have
> a standard uAPI must not be duplicated in ethtool -S. Standard
> interfaces like struct rtnl_link_stats64 or struct ethtool_eth_mac_stats
> already exist for counters such as rx octets, rx packets, dropped
> packets, and FCS errors.
> Could these metrics be exposed through the standardized interfaces
> rather than adding them to the private string sets?
> 

I don't think it is an issue. For the NETC switch, its ports support preemption,
so each port has two MACs (express MAC and preemptive MAC). The driver-
private statistics can help users obtain statistics for each MAC, just like the
standard statistics of ethtool. However, rtnl_link_stats64 retrieves the combined
statistics of the two MACs.

In addition, ethtool_eth_mac_stats only has the FCS error counter for RX,
not TX. what I added to driver-private was TX's FCS error counter.


^ permalink raw reply

* Re: [PATCH v1 1/6] objtool/powerpc: Add build-time fixup of alternate feature branch targets
From: Peter Zijlstra @ 2026-05-06  7:00 UTC (permalink / raw)
  To: Segher Boessenkool
  Cc: Sathvika Vasireddy, nathan, nsc, maddy, mpe, npiggin, chleroy,
	jpoimboe, ojeda, masahiroy, lossin, tamird, thomas.weissschuh,
	rostedt, ihor.solodrai, thuth, pmladek, aliceryhl, elver, kees,
	legion, ardb, yuxuan.zuo, alexghiti, alexandre.chartre, bp,
	linux-kbuild, linux-kernel, linuxppc-dev
In-Reply-To: <afoTSvawD4CXCCy1@gate>

On Tue, May 05, 2026 at 10:56:58AM -0500, Segher Boessenkool wrote:
> Hi!
> 
> On Tue, May 05, 2026 at 04:45:39PM +0200, Peter Zijlstra wrote:
> > On Tue, May 05, 2026 at 02:16:23PM +0530, Sathvika Vasireddy wrote:
> > >  	switch (opcode) {
> > > +	case 16:
> > 
> > Like case 18 below, this wants a comment describing which instruction
> > this is; bclr ?
> 
> Yes.  It is 19/16, b[c]lr (primary opcode 19, secondary opcode 16).
> 
> Where is it described what INSN_RETURN actually means for objtool?  Not
> in the header file :-(

Yeah, nowhere much I'm afraid, it is very much organic growth that is
firmly rooted in x86.

RETURN, along with sibling/tail CALLs validate things like the stack
frame being in identical state as on function entry and a few other
sanity checks (DF flag not set, no uaccess).

There is also a pile of hacks around the whole return thunk mitigation
thing. But that might be less relevant for other archs.


^ permalink raw reply

* RE: [PATCH v5 net-next 04/15] net: enetc: add basic operations to the FDB table
From: Wei Fang @ 2026-05-06  6:37 UTC (permalink / raw)
  To: Paolo Abeni
  Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev,
	Claudiu Manoil, Vladimir Oltean, Clark Wang,
	andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, robh@kernel.org, krzk+dt@kernel.org,
	conor+dt@kernel.org, f.fainelli@gmail.com, Frank Li,
	chleroy@kernel.org, horms@kernel.org, linux@armlinux.org.uk
In-Reply-To: <6324783e-b5c8-462d-8cf7-f6cc9c01ea89@redhat.com>

> On 4/30/26 4:49 AM, Wei Fang wrote:
> > The FDB table is used for MAC learning lookups and MAC forwarding lookups.
> > Each table entry includes information such as a FID and MAC address that
> > may be unicast or multicast and a forwarding destination field containing
> > a port bitmap identifying the associated port(s) with the MAC address.
> > FDB table entries can be static or dynamic. Static entries are added from
> > software whereby dynamic entries are added either by software or by the
> > hardware as MAC addresses are learned in the datapath.
> >
> > The FDB table can only be managed by the command BD ring using table
> > management protocol version 2.0. Table management command operations
> Add,
> > Delete, Update and Query are supported. And the FDB table supports three
> > access methods: Entry ID, Exact Match Key Element and Search. This patch
> > adds the following basic supports to the FDB table.
> >
> > ntmp_fdbt_update_entry() - update the configuration element data of a
> > specified FDB entry
> >
> > ntmp_fdbt_delete_entry() - delete a specified FDB entry
> >
> > ntmp_fdbt_add_entry() - add an entry into the FDB table
> >
> > ntmp_fdbt_search_port_entry() - Search the FDB entry on the specified
> > port based on RESUME_ENTRY_ID.
> >
> > Signed-off-by: Wei Fang <wei.fang@nxp.com>
> > ---
> >  drivers/net/ethernet/freescale/enetc/ntmp.c   | 203
> +++++++++++++++++-
> >  .../ethernet/freescale/enetc/ntmp_private.h   |  61 +++++-
> >  include/linux/fsl/ntmp.h                      |  44 +++-
> >  3 files changed, 305 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/freescale/enetc/ntmp.c
> b/drivers/net/ethernet/freescale/enetc/ntmp.c
> > index c94a928622fd..4ed8d783a9a2 100644
> > --- a/drivers/net/ethernet/freescale/enetc/ntmp.c
> > +++ b/drivers/net/ethernet/freescale/enetc/ntmp.c
> > @@ -1,7 +1,7 @@
> >  // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
> >  /*
> >   * NETC NTMP (NETC Table Management Protocol) 2.0 Library
> > - * Copyright 2025 NXP
> > + * Copyright 2025-2026 NXP
> >   */
> >
> >  #include <linux/dma-mapping.h>
> > @@ -21,11 +21,15 @@
> >  /* Define NTMP Table ID */
> >  #define NTMP_MAFT_ID			1
> >  #define NTMP_RSST_ID			3
> > +#define NTMP_FDBT_ID			15
> >
> >  /* Generic Update Actions for most tables */
> >  #define NTMP_GEN_UA_CFGEU		BIT(0)
> >  #define NTMP_GEN_UA_STSEU		BIT(1)
> >
> > +/* Query Action: 0: Full query, 1: Only query entry ID */
> > +#define NTMP_QA_ENTRY_ID		1
> 
> Sashiko noted that the above comments looks inconsistent with the update
> code, where NTMP_QA_ENTRY_ID apparently uses a full query, and 0 just
> the entry ID.
> 

The definition is correct, 0 indicates a full query, 1 indicates just query the
entry ID. It seems you misunderstood Sashiko's comment. Below is the
comment from Sashiko.

Since this command uses the NTMP_QA_ENTRY_ID ('Only query entry ID') query
action, the hardware returns only a 4-byte entry ID at offset 0. However,
in struct fdbt_resp_query, the entry_id field is located at offset 4,
following the status field.

I would say this is a false positive. Below is the response data structure of a
full query. NTMP_QA_ENTRY_ID does not mean the hardware will return
only a 4-byte entry ID at offset 0, it indicates the fields after entry_id will
not be present in the response data, such as keye, cfge, acte and resv.

struct fdbt_resp_query {
	__le32 status;
	__le32 entry_id;
	struct fdbt_keye_data keye;
	struct fdbt_cfge_data cfge;
	u8 acte;
	u8 resv[3];
};


^ permalink raw reply

* Re: [PATCH V2] powerpc/text-patching: simplify the implementation of ppc_kallsyms_lookup_name()
From: Christophe Leroy (CS GROUP) @ 2026-05-06  6:37 UTC (permalink / raw)
  To: Xie Yuanbin, maddy, mpe, npiggin, andriy.shevchenko, kees
  Cc: linuxppc-dev, linux-kernel, lilinjie8, liaohua4
In-Reply-To: <20260506021143.13797-1-xieyuanbin1@huawei.com>



Le 06/05/2026 à 04:11, Xie Yuanbin a écrit :
> ppc_kallsyms_lookup_name() is called only twice in the kernel code, and
> the parameters are all constant strings. strnlen(name, KSYM_NAME_LEN) is
> called inside ppc_kallsyms_lookup_name(), when the compiler detects that
> KSYM_NAME_LEN is larger then the constant strings,
> the following error will be triggered:
> ```log
>    CC      arch/powerpc/kernel/optprobes.o
> In file included from ./arch/powerpc/include/asm/kprobes.h:24,
>                   from ./include/linux/kprobes.h:31,
>                   from arch/powerpc/kernel/optprobes.c:8:
> In function 'ppc_kallsyms_lookup_name',
>      inlined from 'arch_prepare_optimized_kprobe' at arch/powerpc/kernel/optprobes.c:209:21:
> ./arch/powerpc/include/asm/text-patching.h:232:13: error: 'strnlen' specified bound 512 exceeds source size 19 [-Werror=stringop-overread]
>    232 |         if (strnlen(name, KSYM_NAME_LEN) >= KSYM_NAME_LEN)
>        |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In function 'ppc_kallsyms_lookup_name',
>      inlined from 'arch_prepare_optimized_kprobe' at arch/powerpc/kernel/optprobes.c:210:22:
> ./arch/powerpc/include/asm/text-patching.h:232:13: error: 'strnlen' specified bound 512 exceeds source size 13 [-Werror=stringop-overread]
>    232 |         if (strnlen(name, KSYM_NAME_LEN) >= KSYM_NAME_LEN)
>        |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> cc1: all warnings being treated as errors
> ```
> 
> The error can be reproduced in the following ways:
> Use lastest linux-next source, change ppc_kallsyms_lookup_name() to
> __always_inline, use default ppc64_defconfig, set CONFIG_EXPERT=y,
> CONFIG_PPC64_BIG_ENDIAN_ELF_ABI_V2=n, CONFIG_CC_OPTIMIZE_FOR_SIZE=y,
> and use gcc-14 or a later version for compilation.
> 
> Since ppc_kallsyms_lookup_name() is called only twice in the kernel,
> and the parameters are all constant strins, simplify the implementation
> of ppc_kallsyms_lookup_name() and avoid calling strnlen().
> 
> Cc: Andy Shevchenko <andriy.shevchenko@intel.com>
> Cc: Kees Cook <kees@kernel.org>
> Suggested-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
> Signed-off-by: Xie Yuanbin <xieyuanbin1@huawei.com>

Reviewed-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>

> ---
> v1->v2: https://lore.kernel.org/20260205100517.292858-2-xieyuanbin1@huawei.com
>    - Not use strlen()
> 
>   arch/powerpc/include/asm/text-patching.h | 50 ++++++++----------------
>   1 file changed, 17 insertions(+), 33 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/text-patching.h b/arch/powerpc/include/asm/text-patching.h
> index e7f14720f630..2d3f698cb4f1 100644
> --- a/arch/powerpc/include/asm/text-patching.h
> +++ b/arch/powerpc/include/asm/text-patching.h
> @@ -221,39 +221,23 @@ static inline unsigned long ppc_global_function_entry(void *func)
>    * - For ABIv1, we lookup the dot variant.
>    * - For ABIv2, we return the local entry point.
>    */
> -static inline unsigned long ppc_kallsyms_lookup_name(const char *name)
> -{
> -	unsigned long addr;
> -#ifdef CONFIG_PPC64_ELF_ABI_V1
> -	/* check for dot variant */
> -	char dot_name[1 + KSYM_NAME_LEN];
> -	bool dot_appended = false;
> -
> -	if (strnlen(name, KSYM_NAME_LEN) >= KSYM_NAME_LEN)
> -		return 0;
> -
> -	if (name[0] != '.') {
> -		dot_name[0] = '.';
> -		dot_name[1] = '\0';
> -		strlcat(dot_name, name, sizeof(dot_name));
> -		dot_appended = true;
> -	} else {
> -		dot_name[0] = '\0';
> -		strlcat(dot_name, name, sizeof(dot_name));
> -	}
> -	addr = kallsyms_lookup_name(dot_name);
> -	if (!addr && dot_appended)
> -		/* Let's try the original non-dot symbol lookup	*/
> -		addr = kallsyms_lookup_name(name);
> -#elif defined(CONFIG_PPC64_ELF_ABI_V2)
> -	addr = kallsyms_lookup_name(name);
> -	if (addr)
> -		addr = ppc_function_entry((void *)addr);
> -#else
> -	addr = kallsyms_lookup_name(name);
> -#endif
> -	return addr;
> -}
> +static inline unsigned long __ppc_kallsyms_lookup_name(const char *name)
> +{
> +	unsigned long addr = kallsyms_lookup_name(name);
> +
> +	if (IS_ENABLED(CONFIG_PPC64_ELF_ABI_V1) && !addr)
> +		addr = kallsyms_lookup_name(name + 1);
> +	if (IS_ENABLED(CONFIG_PPC64_ELF_ABI_V2) && addr)
> +		addr = ppc_function_entry((void *)addr);
> +
> +	return addr;
> +}
> +
> +#ifdef CONFIG_PPC64_ELF_ABI_V1
> +#define ppc_kallsyms_lookup_name(x)	__ppc_kallsyms_lookup_name("." x)
> +#else
> +#define ppc_kallsyms_lookup_name(x)	__ppc_kallsyms_lookup_name(x)
> +#endif
>   
>   /*
>    * Some instruction encodings commonly used in dynamic ftracing



^ permalink raw reply

* Re: [PATCH] powerpc: fix dead default for GUEST_STATE_BUFFER_TEST
From: Harsh Prateek Bora @ 2026-05-06  4:34 UTC (permalink / raw)
  To: Julian Braha, maddy, mpe, npiggin, chleroy, jniethe5
  Cc: linuxppc-dev, linux-kernel
In-Reply-To: <20260405161545.161006-1-julianbraha@gmail.com>



On 05/04/26 9:45 pm, Julian Braha wrote:
> The GUEST_STATE_BUFFER_TEST config option should default
> to KUNIT_ALL_TESTS so that if all tests are enabled then
> it is included, but currently the 'default KUNIT_ALL_TESTS'
> statement is shadowed by 'def_tristate n',
> meaning that this second default statement is currently dead code.
> 
> It looks to me like the commit
> 6ccbbc33f06a ("KVM: PPC: Add helper library for Guest State Buffers")
> intended to set the default to KUNIT_ALL_TESTS, but mistakenly
> missed the def_tristate.
> 
> This dead code was found by kconfirm, a static analysis tool for Kconfig.
> 
> Fixes: 6ccbbc33f06a ("KVM: PPC: Add helper library for Guest State Buffers")
> Signed-off-by: Julian Braha <julianbraha@gmail.com>

Keeping the commit title as "powerpc: correctly enable KUNIT_ALL_TESTS
as default for GUEST_STATE_BUFFER_TEST" might look better. Anyways,

Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>

> ---
>   arch/powerpc/Kconfig.debug | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug
> index f15e5920080b..e8718bc13eeb 100644
> --- a/arch/powerpc/Kconfig.debug
> +++ b/arch/powerpc/Kconfig.debug
> @@ -83,11 +83,10 @@ config MSI_BITMAP_SELFTEST
>   	depends on DEBUG_KERNEL
>   
>   config GUEST_STATE_BUFFER_TEST
> -	def_tristate n
> +	def_tristate KUNIT_ALL_TESTS
>   	prompt "Enable Guest State Buffer unit tests"
>   	depends on KUNIT
>   	depends on KVM_BOOK3S_HV_POSSIBLE
> -	default KUNIT_ALL_TESTS
>   	help
>   	  The Guest State Buffer is a data format specified in the PAPR.
>   	  It is by hcalls to communicate the state of L2 guests between



^ permalink raw reply

* Re: [PATCH] powerpc/pseries/iommu: Add TCEs for 16GB pages when RAM is pre-mapped
From: Harsh Prateek Bora @ 2026-05-06  4:04 UTC (permalink / raw)
  To: Gaurav Batra, maddy; +Cc: linuxppc-dev, ritesh.list, donettom, vaibhav, sbhat
In-Reply-To: <d8448246-f296-44d1-ac95-a80984e78c7e@linux.ibm.com>



On 06/05/26 2:31 am, Gaurav Batra wrote:
> 
> On 5/5/26 1:49 PM, Harsh Prateek Bora wrote:
>>
>>
>> On 05/05/26 2:24 am, Gaurav Batra wrote:
>>> @@ -2431,7 +2437,7 @@ static int iommu_mem_notifier(struct 
>>> notifier_block *nb, unsigned long action,
>>>           spin_lock(&dma_win_list_lock);
>>>           list_for_each_entry(window, &dma_win_list, list) {
>>>               if (window->direct && (arg->start_pfn << PAGE_SHIFT) <
>>> -                ddw_memory_hotplug_max()) {
>>> +                pseries_ddw_max_ram) {
>>>                   ret |= tce_setrange_multi_pSeriesLP(arg->start_pfn,
>>>                           arg->nr_pages, window->prop);
>>
>> I think not only start_pfn, but end_pfn also needs to be within allowed
>> range, which may require clamping arg->nr_pages if crossing the limits.
> The reason to only check for start_pfn is because the range given will 
> either be in the RAM or pmemory. It can never cross the boundary

Usually as an API, we do not trust the caller, hence the check for
start_pfn. However, if at all we need to go ahead with that assumption,
may be document that as a code comment and/or in the commit log also?

>>
>>>               }
>>> @@ -2444,7 +2450,7 @@ static int iommu_mem_notifier(struct 
>>> notifier_block *nb, unsigned long action,
>>>           spin_lock(&dma_win_list_lock);
>>>           list_for_each_entry(window, &dma_win_list, list) {
>>>               if (window->direct && (arg->start_pfn << PAGE_SHIFT) <
>>> -                ddw_memory_hotplug_max()) {
>>> +                pseries_ddw_max_ram) {
>>>                   ret |= tce_clearrange_multi_pSeriesLP(arg->start_pfn,
>>>                           arg->nr_pages, window->prop);
>>>               }
>>



^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox