Hello Xen Developers,
I am working on Xen bring-up on a Raspberry Pi 5 (BCM2712 + RP1 over PCIe) and am stuck with Dom0 firmware clocks, RP1, and VC4/DRM not probing correctly. I am hoping for guidance on the intended DT/Xen model for RP1 and Raspberry Pi firmware devices under Xen.
Setup
Board: Raspberry Pi 5 (BCM2712, RP1 southbridge over PCIe)
Xen: 4.17.0 (xen-troops build)
Dom0 kernel:
Bootloader: U-Boot
Goal: Dom0 owns display/graphics; DomU gets a virtual display
Problem Summary
Dom0 never gets /dev/dri. The VC4/V3D/HVS DRM stack fails due to missing clocks/firmware and RP1 not binding.
Key Dom0 dmesg errors:
raspberrypi-clk soc@107c000000:firmware:clocks: probe with driver raspberrypi-clk failed with error -22
platform 1002000000.v3d: deferred probe pending: platform: supplier soc@107c000000:firmware:clocks not ready
vc4_hvs 107c580000.hvs: Couldn't get core clock
vc4-drm axi:gpu: failed to bind 107c580000.hvs (ops vc4_hvs_ops): -2
rp1_pci 0002:01:00.0: Missing of_node for device
rp1_pci 0002:01:00.0: probe with driver rp1_pci failed with error -22
As a result:
raspberrypi-clk never binds
firmware clock/reset providers don’t come up
RP1 PCI device has no OF node
VC4 DRM never probes → no /dev/dri
Device Tree / Overlay Details
Xen DT Overlay
I am using a Xen DT overlay based on xen-troops that enables HDMI, V3D, firmware, clocks, reset, vcio, and assigns devices without IOMMU. This overlay relies heavily on symbol fixups (__fixups__) and target = <0xffffffff> fragments.
Excerpt:
(Full file: bcm2712-raspberrypi5-xen.dtso)
HDMI / Dom0 Passthrough Overlay
This overlay sets up /chosen multiboot nodes, UART for Xen console, and forces PCIe assignment.
Key parts:
dom0 {
compatible = "multiboot,kernel\0multiboot,module";
reg = <0x8000000 0x20000000 0x00 0x2000000>;
};
(Full file: hdmi-passthrough-dom0.dtso)
Boot Logs
Full Xen + Dom0 boot logs showing:
(Full log: bootlogs3.txt)
Observations
Firmware node exists and is enabled in the DT passed to Dom0:
/soc@107c000000/firmware {
compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
clocks { compatible = "raspberrypi,firmware-clocks"; status = "okay"; };
reset { compatible = "raspberrypi,firmware-reset"; status = "okay"; };
vcio { compatible = "raspberrypi,vcio"; status = "okay"; };
};
Despite this, raspberrypi-clk fails probing very early with -22.
RP1 enumerates correctly on PCIe:
0002:01:00.0 Ethernet controller: Raspberry Pi Ltd RP1 PCIe 2.0 South Bridge [1de4:0001]
But Linux reports:
rp1_pci ... Missing of_node for device
Which prevents:
I attempted U-Boot DT overlays to attach an OF node at:
/axi/pcie@1000120000/pci@0,0/dev@0,0
but overlays frequently fail with:
FDT_ERR_NOTFOUND
unless I rely on symbol-based fixups.
Questions
What is the intended DT model for RP1 under Xen on Raspberry Pi 5?
Is raspberrypi,firmware-clocks supported in Dom0 under Xen on Pi 5?
Are there known patches/branches for Xen or DT that enable VC4/DRM on Pi 5?
Reproduction Summary
Boot flow:
U-Boot loads bcm2712-rpi-5-b.dtb
Applies bcm2712-raspberrypi5-xen.dtbo
Applies hdmi-passthrough-dom0.dtbo
Boots Xen
Loads Dom0 kernel as multiboot module
Result: Dom0 boots, but RP1 and firmware clocks do not bind, so VC4/DRM never comes up.
Any guidance on the correct DT/Xen integration model for BCM2712/RP1 would be greatly appreciated. If there is a reference DT, patch series, or recommended branch, I’d be happy to test and report back.
Best regards,
Alap