Created attachment 301127 [details] dmesg (5.19-rc1, PowerMac G4 DP) [...] sysfs: cannot create duplicate filename '/devices/platform/of-display' CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.19.0-rc1-PMacG4+ #3 Call Trace: [e9025cc0] [c05984d0] dump_stack_lvl+0x60/0x90 (unreliable) [e9025ce0] [c02f043c] sysfs_warn_dup+0x64/0x84 [e9025d00] [c02f05cc] sysfs_create_dir_ns+0xfc/0x118 [e9025d30] [c059ffa4] kobject_add_internal+0x114/0x2f0 [e9025d60] [c05a0790] kobject_add+0x80/0xf0 [e9025da0] [c064c3d8] device_add+0x114/0x94c [e9025e10] [c06f197c] of_platform_device_create_pdata+0xb8/0x144 [e9025e40] [c0c43bb4] of_platform_default_populate_init+0x284/0x2f4 [e9025e70] [c0007a94] do_one_initcall+0x50/0x294 [e9025ee0] [c0c03ff0] kernel_init_freeable+0x228/0x334 [e9025f20] [c0007efc] kernel_init+0x28/0x144 [e9025f40] [c0019334] ret_from_kernel_thread+0x5c/0x64 kobject_add_internal failed for of-display with -EEXIST, don't try to register things with the same name in the same directory.
Created attachment 301128 [details] kernel .config (5.19-rc1, PowerMac G4 DP)
Created attachment 301576 [details] dmesg (6.0-rc1, PowerMac G5 11,2) Still a problem in 6.0-rc1: [...] sysfs: cannot create duplicate filename '/devices/platform/of-display' CPU: 0 PID: 1 Comm: swapper/0 Tainted: G T 6.0.0-rc1-PMacG5 #1 Call Trace: [c0000000015eb620] [c0000000006d0200] .dump_stack_lvl+0x7c/0xc4 (unreliable) [c0000000015eb6b0] [c0000000003c2684] .sysfs_warn_dup+0x74/0xa0 [c0000000015eb740] [c0000000003c287c] .sysfs_create_dir_ns+0x11c/0x160 [c0000000015eb7e0] [c0000000006d9190] .kobject_add_internal+0x130/0x380 [c0000000015eb890] [c0000000006d9b28] .kobject_add+0x68/0xf0 [c0000000015eb920] [c00000000079005c] .device_add+0x13c/0xb40 [c0000000015eba10] [c00000000087b408] .of_device_add+0x58/0x70 [c0000000015eba90] [c00000000087bbd0] .of_platform_device_create_pdata+0xc0/0x170 [c0000000015ebb30] [c00000000103a718] .of_platform_default_populate_init+0x1cc/0x20c [c0000000015ebbd0] [c00000000000f7b4] .do_one_initcall+0x64/0x250 [c0000000015ebcb0] [c000000001004400] .kernel_init_freeable+0x2ec/0x388 [c0000000015ebda0] [c00000000000fc10] .kernel_init+0x20/0x190 [c0000000015ebe10] [c00000000000bb50] .ret_from_kernel_thread+0x58/0x60 kobject_add_internal failed for of-display with -EEXIST, don't try to register things with the same name in the same directory.
Created attachment 301577 [details] kernel .config (6.0-rc1, PowerMac G5 11,2)
Created attachment 301581 [details] kernel .config (6.0-rc1, PowerMac G5 11,2)
Created attachment 303182 [details] dmesg (6.1-rc5, PowerMac G5 11,2) Still shows up in 6.1-rc5: [...] sysfs: cannot create duplicate filename '/devices/platform/of-display' CPU: 0 PID: 1 Comm: swapper/0 Tainted: G T 6.1.0-rc5-PMacG5 #2 Hardware name: PowerMac11,2 PPC970MP 0x440101 PowerMac Call Trace: [c000000001b37610] [c000000000b4e7c0] .dump_stack_lvl+0x7c/0xd8 (unreliable) [c000000001b376a0] [c00000000040c338] .sysfs_warn_dup+0x78/0xc0 [c000000001b37730] [c00000000040c56c] .sysfs_create_dir_ns+0x13c/0x160 [c000000001b377d0] [c000000000b5869c] .kobject_add_internal+0x14c/0x3c0 [c000000001b37870] [c000000000b590a8] .kobject_add+0x68/0x100 [c000000001b37900] [c0000000008074b0] .device_add+0xe0/0xbd0 [c000000001b379f0] [c000000000909f44] .of_device_add+0x44/0x70 [c000000001b37a60] [c00000000090a790] .of_platform_device_create_pdata+0xc0/0x160 [c000000001b37b00] [c0000000010737e8] .of_platform_default_populate_init+0x41c/0x4c4 [c000000001b37be0] [c00000000000fa84] .do_one_initcall+0x84/0x2b8 [c000000001b37cc0] [c000000001005c98] .kernel_init_freeable+0x420/0x54c [c000000001b37da0] [c00000000000ff50] .kernel_init+0x20/0x190 [c000000001b37e10] [c00000000000bd58] .ret_from_kernel_thread+0x58/0x60 kobject_add_internal failed for of-display with -EEXIST, don't try to register things with the same name in the same directory. PCI: Probing PCI hardware
Created attachment 303183 [details] kernel .config (6.1-rc5, PowerMac G5 11,2)
Created attachment 303509 [details] dmesg (6.2-rc1, PowerMac G4 DP) Now as the new ofdrm driver is in 6.2-rc1 the G4 fails to pick it up. ;) When I try to load it manually as a module I get "Error: Driver 'of-display' is already registered, aborting..." in the dmesg. When I build it statically into the kernel it says "of-display: probe of of-display failed with error -22".
Created attachment 303510 [details] kernel .config (6.2-rc1, PowerMac G4 DP)
Could you also attach the devicetree? dtc -I fs -O dts /proc/device-tree > device-tree.dts
Created attachment 303553 [details] device tree - PowerMac G4 3,6 DP (In reply to Michal Suchánek from comment #9) > Could you also attach the devicetree? > > dtc -I fs -O dts /proc/device-tree > device-tree.dts Sorry for the delay, I overlooked your post! I needed to force the output but otherwise it seemed to work fine: # dtc -f -I fs -O dts /proc/device-tree > PowerMac-G4_3,6_device-tree.dts <stdout>: ERROR (property_name_chars): /options:prev-lang:kbd: Bad character ':' in property Warning: Input tree has errors, output forced
Created attachment 303554 [details] device tree - PowerMac G5 11,2 Here's also the device tree of my G5, having the same issue. It was not necessary to force the output via '-f' here but I got lots of warnings: # dtc -I fs -O dts /proc/device-tree > PowerMac-G5_11,2_device-tree.dts <stdout>: Warning (reg_format): /smu@0,0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1) <stdout>: Warning (pci_bridge): /ht@0,f2000000/pci@4: missing ranges for PCI bridge (or not a bridge) <stdout>: Warning (pci_bridge): /ht@0,f2000000/pci@1: missing ranges for PCI bridge (or not a bridge) <stdout>: Warning (unit_address_format): Failed prerequisite 'pci_bridge' <stdout>: Warning (pci_device_reg): Failed prerequisite 'reg_format' <stdout>: Warning (pci_device_reg): Failed prerequisite 'pci_bridge' <stdout>: Warning (pci_device_bus_num): Failed prerequisite 'reg_format' <stdout>: Warning (pci_device_bus_num): Failed prerequisite 'pci_bridge' <stdout>: Warning (simple_bus_reg): Failed prerequisite 'reg_format' <stdout>: Warning (i2c_bus_reg): Failed prerequisite 'reg_format' <stdout>: Warning (spi_bus_reg): Failed prerequisite 'reg_format' <stdout>: Warning (avoid_default_addr_size): /rom@0,ff800000/boot-rom@fff00000: Relying on default #size-cells value <stdout>: Warning (avoid_default_addr_size): /ht@0,f2000000/pci@8/mac-io@7/escc@13000/ch-b@13000: Relying on default #size-cells value <stdout>: Warning (avoid_default_addr_size): /ht@0,f2000000/pci@8/mac-io@7/escc@13000/ch-a@13020: Relying on default #size-cells value <stdout>: Warning (avoid_default_addr_size): /ht@0,f2000000/pci@8/mac-io@7/i2s@0/i2s-c@14000: Relying on default #size-cells value <stdout>: Warning (avoid_default_addr_size): /ht@0,f2000000/pci@8/mac-io@7/i2s@0/i2s-a@10000: Relying on default #size-cells value <stdout>: Warning (avoid_default_addr_size): /ht@0,f2000000/pci@8/mac-io@7/escc-legacy@12000/ch-b@12000: Relying on default #size-cells value <stdout>: Warning (avoid_default_addr_size): /ht@0,f2000000/pci@8/mac-io@7/escc-legacy@12000/ch-a@12004: Relying on default #size-cells value <stdout>: Warning (avoid_unnecessary_addr_size): Failed prerequisite 'avoid_default_addr_size' <stdout>: Warning (unique_unit_address): Failed prerequisite 'avoid_default_addr_size' <stdout>: Warning (chosen_node_stdout_path): /chosen:linux,stdout-path: Use 'stdout-path' instead <stdout>: Warning (alias_paths): /aliases:ipc: aliases property is not a valid node (/ipc) <stdout>: Warning (alias_paths): /aliases:pci6: aliases property is not a valid node (/ht/pci@6) <stdout>: Warning (alias_paths): /aliases:nvram: aliases property is not a valid node (/nvram) <stdout>: Warning (alias_paths): /aliases:mac-io: aliases property is not a valid node (/ht/pci@8/mac-io) <stdout>: Warning (alias_paths): /aliases:usb3: aliases property is not a valid node (/ht/pci@8/@b,1) <stdout>: Warning (alias_paths): /aliases:pci4: aliases property is not a valid node (/ht/pci@4) <stdout>: Warning (alias_paths): /aliases:k2-sata: aliases property is not a valid node (/ht/pci@9/k2-sata-root) <stdout>: Warning (alias_paths): /aliases:macio-mpic: aliases property is not a valid node (/ht/pci@8/mac-io/mpic) <stdout>: Warning (alias_paths): /aliases:via-pmu: aliases property is not a valid node (/ht/pci@8/mac-io/via-pmu) <stdout>: Warning (alias_paths): /aliases:pci2: aliases property is not a valid node (/ht/pci@2) <stdout>: Warning (alias_paths): /aliases:ultra2: aliases property is not a valid node (/ht/pci@9/k2-sata-root/k2-sata@2/disk@0) <stdout>: Warning (alias_paths): /aliases:k2-mac-io: aliases property is not a valid node (/ht/pci@8/mac-io) <stdout>: Warning (alias_paths): /aliases:k2-fw: aliases property is not a valid node (/ht/pci@9/firewire) <stdout>: Warning (alias_paths): /aliases:ui2c: aliases property is not a valid node (/u4/i2c) <stdout>: Warning (alias_paths): /aliases:sccb: aliases property is not a valid node (/ht/pci@8/mac-io/escc/ch-b) <stdout>: Warning (alias_paths): /aliases:sd2: aliases property is not a valid node (/ht/pci@9/k2-sata-root/k2-sata@2/disk@0) <stdout>: Warning (alias_paths): /aliases:pci: aliases property is not a valid node (/ht/pci@8) <stdout>: Warning (alias_paths): /aliases:cpu3: aliases property is not a valid node (/cpus/@3) <stdout>: Warning (alias_paths): /aliases:k2-cd: aliases property is not a valid node (/ht/pci@9/ata-6/disk@0) <stdout>: Warning (alias_paths): /aliases:ultra0: aliases property is not a valid node (/ht/pci@9/k2-sata-root/k2-sata@0/disk@0) <stdout>: Warning (alias_paths): /aliases:hd: aliases property is not a valid node (/ht/pci@9/k2-sata-root/k2-sata@0/disk@0) <stdout>: Warning (alias_paths): /aliases:usb-2b: aliases property is not a valid node (/ht/pci@8/@b,1) <stdout>: Warning (alias_paths): /aliases:sd0: aliases property is not a valid node (/ht/pci@9/k2-sata-root/k2-sata@0/disk@0) <stdout>: Warning (alias_paths): /aliases:pci9: aliases property is not a valid node (/ht/pci@9) <stdout>: Warning (alias_paths): /aliases:sata: aliases property is not a valid node (/ht/pci@9/k2-sata-root) <stdout>: Warning (alias_paths): /aliases:fw: aliases property is not a valid node (/ht/pci@9/firewire) <stdout>: Warning (alias_paths): /aliases:cpu1: aliases property is not a valid node (/cpus/@1) <stdout>: Warning (alias_paths): /aliases:enet1: aliases property is not a valid node (/ht/pci@2/@4,1) <stdout>: Warning (alias_paths): /aliases:enet: aliases property is not a valid node (/ht/pci@2/@4) <stdout>: Warning (alias_paths): /aliases:pci7: aliases property is not a valid node (/ht/pci@7) <stdout>: Warning (alias_paths): /aliases:last-boot: aliases property is not a valid node (/ht@0,f2000000/pci@2/bcom5714) <stdout>: Warning (alias_paths): /aliases:wireless: aliases property is not a valid node (/ht/pci@8/@1) <stdout>: Warning (alias_paths): /aliases:pci10: aliases property is not a valid node (/ht/pci@a) <stdout>: Warning (alias_paths): /aliases:cd: aliases property is not a valid node (/ht/pci@9/ata-6/disk@0) <stdout>: Warning (alias_paths): /aliases:k2-uata: aliases property is not a valid node (/ht/pci@9/ata-6) <stdout>: Warning (alias_paths): /aliases:u4: aliases property is not a valid node (/u4) <stdout>: Warning (alias_paths): /aliases:pci5: aliases property is not a valid node (/ht/pci@5) <stdout>: Warning (alias_paths): /aliases:usb2: aliases property is not a valid node (/ht/pci@8/@b) <stdout>: Warning (alias_paths): /aliases:pci3: aliases property is not a valid node (/ht/pci@3) <stdout>: Warning (alias_paths): /aliases:ultra3: aliases property is not a valid node (/ht/pci@9/k2-sata-root/k2-sata@3/disk@0) <stdout>: Warning (alias_paths): /aliases:uata: aliases property is not a valid node (/ht/pci@9/ata-6) <stdout>: Warning (alias_paths): /aliases:sysclk: aliases property is not a valid node (/smu/smu-i2c-control/i2c-bus@b/@d4) <stdout>: Warning (alias_paths): /aliases:sd3: aliases property is not a valid node (/ht/pci@9/k2-sata-root/k2-sata@3/disk@0) <stdout>: Warning (alias_paths): /aliases:first-boot: aliases property is not a valid node (/ht@0,f2000000/pci@9/k2-sata-root@c/k2-sata) <stdout>: Warning (alias_paths): /aliases:pci1: aliases property is not a valid node (/ht/pci@1) <stdout>: Warning (alias_paths): /aliases:uni-mpic: aliases property is not a valid node (/u4/mpic) <stdout>: Warning (alias_paths): /aliases:ultra1: aliases property is not a valid node (/ht/pci@9/k2-sata-root/k2-sata@1/disk@0) <stdout>: Warning (alias_paths): /aliases:usb-2c: aliases property is not a valid node (/ht/pci@8/@b,2) <stdout>: Warning (alias_paths): /aliases:dart: aliases property is not a valid node (/u4/dart) <stdout>: Warning (alias_paths): /aliases:scca: aliases property is not a valid node (/ht/pci@8/mac-io/escc/ch-a) <stdout>: Warning (alias_paths): /aliases:sd1: aliases property is not a valid node (/ht/pci@9/k2-sata-root/k2-sata@1/disk@0) <stdout>: Warning (alias_paths): /aliases:cpu2: aliases property is not a valid node (/cpus/@2) <stdout>: Warning (alias_paths): /aliases:cd1: aliases property is not a valid node (/ht/pci@9/ata-6/disk@1) <stdout>: Warning (alias_paths): /aliases:usb-2a: aliases property is not a valid node (/ht/pci@8/@b) <stdout>: Warning (alias_paths): /aliases:pci8: aliases property is not a valid node (/ht/pci@8) <stdout>: Warning (alias_paths): /aliases:smu: aliases property is not a valid node (/smu) <stdout>: Warning (alias_paths): /aliases:ki2c: aliases property is not a valid node (/ht/pci@8/mac-io/i2c) <stdout>: Warning (alias_paths): /aliases:pci11: aliases property is not a valid node (/ht/pci@b) <stdout>: Warning (alias_paths): /aliases:rtc: aliases property is not a valid node (/smu) <stdout>: Warning (alias_paths): /aliases:uni-n: aliases property is not a valid node (/u4) <stdout>: Warning (alias_paths): /aliases:cpu0: aliases property is not a valid node (/cpus/@0)
Thanks for the DT dumps. So you really do have two outputs but the problem is likely different: The hardware-specific driver gets initialized earlier, and then the offb/ofdrm driver cannot get the resources for the framebuffer because the native driver is already using them. That should be fine but the message it prints is not exactly clear.
Created attachment 303600 [details] dmesg (6.2-rc3, PowerMac G4 DP) (In reply to Michal Suchánek from comment #12) > Thanks for the DT dumps. > > So you really do have two outputs but the problem is likely different: Two outputs? I got only a Radeon 9600 in the G4 and it does show up as a single card in lspci (no secondary output). Xorg.log. only shows a single device. # lspci 0000:00:0b.0 Host bridge: Apple Inc. UniNorth 2 AGP 0000:00:10.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV350 [Radeon 9550/9600/X1050 Series] 0001:10:0b.0 Host bridge: Apple Inc. UniNorth 2 PCI 0001:10:12.0 USB controller: NEC Corporation OHCI USB Controller (rev 43) 0001:10:12.1 USB controller: NEC Corporation OHCI USB Controller (rev 43) 0001:10:12.2 USB controller: NEC Corporation uPD72010x USB 2.0 Controller (rev 04) 0001:10:13.0 Mass storage controller: Silicon Image, Inc. SiI 3112 [SATALink/SATARaid] Serial ATA Controller (rev 02) 0001:10:15.0 Serial controller: MosChip Semiconductor Technology Ltd. PCI 9865 Multi-I/O Controller 0001:10:15.1 Serial controller: MosChip Semiconductor Technology Ltd. PCI 9865 Multi-I/O Controller 0001:10:15.2 Parallel controller: Illegal Vendor ID Device 9865 0001:10:16.0 Network controller: Broadcom Inc. and subsidiaries BCM4306 802.11b/g Wireless LAN Controller (rev 02) 0001:10:17.0 Unassigned class [ff00]: Apple Inc. KeyLargo Mac I/O (rev 03) 0001:10:18.0 USB controller: Apple Inc. KeyLargo USB 0001:10:19.0 USB controller: Apple Inc. KeyLargo USB 0001:10:1b.0 USB controller: NEC Corporation OHCI USB Controller (rev 43) 0001:10:1b.1 USB controller: NEC Corporation OHCI USB Controller (rev 43) 0001:10:1b.2 USB controller: NEC Corporation uPD72010x USB 2.0 Controller (rev 04) 0002:20:0b.0 Host bridge: Apple Inc. UniNorth 2 Internal PCI 0002:20:0d.0 Unassigned class [ff00]: Apple Inc. UniNorth 2 ATA/100 0002:20:0e.0 FireWire (IEEE 1394): Apple Inc. UniNorth 2 FireWire (rev 01) 0002:20:0f.0 Ethernet controller: Apple Inc. UniNorth 2 GMAC (Sun GEM) # lspci -v -s 0000:00:10.0 0000:00:10.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV350 [Radeon 9550/9600/X1050 Series] (prog-if 00 [VGA controller]) Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] R9600 Pro primary (Asus OEM for HP) Device tree node: /sys/firmware/devicetree/base/pci@f0000000/ATY,AlteracParent@10 Flags: bus master, 66MHz, medium devsel, latency 255, IRQ 48 Memory at a0000000 (32-bit, prefetchable) [size=256M] I/O ports at 0400 [disabled] [size=256] Memory at 90000000 (32-bit, non-prefetchable) [size=64K] Expansion ROM at 90020000 [disabled] [size=128K] Capabilities: [58] AGP version 2.0 Capabilities: [50] Power Management version 2 > The hardware-specific driver gets initialized earlier, and then the > offb/ofdrm driver cannot get the resources for the framebuffer because the > native driver is already using them. > > That should be fine but the message it prints is not exactly clear. Ok. To rule out influence of other drivers I disabled them (# CONFIG_FB is not set, # CONFIG_DRM_RADEON is not set) and only set CONFIG_DRM=y, CONFIG_DRM_OFDRM=y but it made no difference. Sill I get this: sysfs: cannot create duplicate filename '/devices/platform/of-display' [...] of-display: probe of of-display failed with error -22
Created attachment 303601 [details] kernel .config (6.2-rc3, PowerMac G4 DP)
You do have two outputs defined in the device tree: /pci@f0000000/ATY,AlteracParent@10/ATY,Alterac_A@0 /pci@f0000000/ATY,AlteracParent@10/ATY,Alterac_B@1 If they correspond to a physical outputs is another question. After all if one of the outputs exists only on some card models it would never detect a connected screen on the cards on which the output does not physically exist and everything will work just fine. Here is a patch that aims to resolve the problem https://lore.kernel.org/lkml/20230117165804.18036-1-msuchanek@suse.de/
Fix landed in 6.2 and 6.1 LTS meanwhile. Thanks! Closing here.