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:
-
Linux 6.19.0-rc5 (mainline)
-
Also tested Raspberry Pi downstream 6.6
-
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 DetailsXen 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:
-
Enables:
-
hdmi0, hdmi1, v3d, vc4, hvs, pixelvalve*
-
firmware, firmware_clocks, reset, vcio
-
rp1_clocks, bcm_reset, pcie_rescal
-
Uses xen,force-assign-without-iommu on most nodes
(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:
-
raspberrypi-clk failing with -EINVAL
-
rp1_pci missing of_node
-
VC4/HVS/V3D deferring and timing out
(Full log: bootlogs3.txt)
Observations
1.
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.
2.
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:
-
rp1-clk
-
GPIO
-
reset
-
HDMI PHY
-
downstream display pipeline
3.
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
1.
*What is the intended DT model for RP1 under Xen on Raspberry Pi 5?*
-
Should RP1 be represented as a proper OF node under the PCI endpoint
in the Xen DT?
-
Or is Xen expected to synthesize this mapping internally?
2.
*Is raspberrypi,firmware-clocks supported in Dom0 under Xen on Pi 5?*
-
The driver probes but returns -EINVAL even when the DT node exists
and is enabled.
3.
*Are there known patches/branches for Xen or DT that enable VC4/DRM on
Pi 5?*
-
Specifically for firmware clocks, RP1, and HVS/V3D dependencies.
Reproduction Summary
Boot flow:
1.
U-Boot loads bcm2712-rpi-5-b.dtb
2.
Applies bcm2712-raspberrypi5-xen.dtbo
3.
Applies hdmi-passthrough-dom0.dtbo
4.
Boots Xen
5.
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