From fb0a7b97db4f419b82309f98a4944ae3330d1e2e Mon Sep 17 00:00:00 2001 From: Bertrand Marquis Date: Tue, 10 May 2022 16:35:16 +0100 Subject: xen: Disable PCI on qemuarm with Xen Remove the pci node from the qemu device tree when runqemu is used with xen-qemuboot. Linux is ending up in an infinite loop when trying to access PCI configuration space when running on top of Xen on arm32. As we do not need or support any of the devices on PCI on arm32 at the moment, just remove the node from the device tree generated by qemu. The problem does not appear at the moment without Xen and it is unclear why it is with Xen. This will be investigated but in the meantime provide a working configuration for users. Signed-off-by: Bertrand Marquis Signed-off-by: Bruce Ashfield --- classes/qemuboot-xen-dtb.bbclass | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'classes') diff --git a/classes/qemuboot-xen-dtb.bbclass b/classes/qemuboot-xen-dtb.bbclass index d43d23a3..1f17a869 100644 --- a/classes/qemuboot-xen-dtb.bbclass +++ b/classes/qemuboot-xen-dtb.bbclass @@ -63,6 +63,21 @@ write_lops_xen_section() { EOF } +write_lop_rm_pci() { + cat <"$1" +/dts-v1/; +/ { + compatible = "system-device-tree-v1"; + lops { + lop_1 { + compatible = "system-device-tree-v1,lop,modify"; + modify = "/pcie@10000000::"; + }; + }; +}; +EOF +} + write_lop_add_to_xen_cmdline() { EXTRA_XEN_BOOTARGS="$2" cat <"$1" @@ -135,6 +150,13 @@ generate_xen_qemuboot_dtb() { write_lop_add_to_xen_cmdline "${B}/lop-xen-cmdline.dts" \ "${QB_XEN_CMDLINE_EXTRA}" + # On Qemu Arm32, Dom0 accessing PCI config space ends up in an + # infinite loop. Remove pci node from the device tree + if [ "${MACHINE}" = "qemuarm" ]; then + write_lop_rm_pci "${B}/lop-rm-pci.dts" + LOP_MODULE_ARGS="${LOP_MODULE_ARGS} -i ${B}/lop-rm-pci.dts" + fi + if [ -z "${QB_XEN_DOMAIN_MODULES}" ]; then bbwarn "No domain modules: please set QB_XEN_DOMAIN_MODULES" fi -- cgit v1.2.3-54-g00ecf