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

Reply via email to