summaryrefslogtreecommitdiffstats
path: root/classes
diff options
context:
space:
mode:
authorMichal Orzel <michal.orzel@arm.com>2022-06-09 11:57:47 +0200
committerBruce Ashfield <bruce.ashfield@gmail.com>2022-06-20 12:07:45 -0400
commit17f3d28228341b5fc80ffcfa8847f4cfb74991bf (patch)
tree78d92b20a61a10b99b8ea4fd0cbf045ecd2bc90c /classes
parentec96eab80c3caa59fa7d086398d5a5a2895b8b68 (diff)
downloadmeta-virtualization-17f3d28228341b5fc80ffcfa8847f4cfb74991bf.tar.gz
Revert "xen: Disable PCI on qemuarm with Xen"
This reverts commit fb0a7b97db4f419b82309f98a4944ae3330d1e2e. Justification: Commit fb0a7b97db4f removed the PCI node from the qemu device tree due to the issue when trying to access PCI configuration space that was causing Linux running on top of Xen to end up in an infinite loop. The investigation showed that the problem occurs due to qemu placing ECAM space at 256GiB mark. Even though Xen officially supports on arm32 up to 12GiB of physical address space, it is able to map it correctly for dom0. However, when Linux tries to access the ECAM space and the stage2 translation fault occurs, HPFAR register contains incorrect IPA. We can say it is incorrect because using hardware AT instruction or software lookup, we can obtain the correct IPA from the same VA. This can suggest that the problem is related to QEMU fault handling. Instead of removing the PCI node the follow-up commit will disable highmem option in qemu which will cause placing ECAM space in the 32-bit space. Signed-off-by: Michal Orzel <michal.orzel@arm.com> Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com> Reviewed-by: Christopher Clark <christopher.w.clark@gmail.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Diffstat (limited to 'classes')
-rw-r--r--classes/qemuboot-xen-dtb.bbclass22
1 files changed, 0 insertions, 22 deletions
diff --git a/classes/qemuboot-xen-dtb.bbclass b/classes/qemuboot-xen-dtb.bbclass
index 1f17a869..d43d23a3 100644
--- a/classes/qemuboot-xen-dtb.bbclass
+++ b/classes/qemuboot-xen-dtb.bbclass
@@ -63,21 +63,6 @@ write_lops_xen_section() {
63EOF 63EOF
64} 64}
65 65
66write_lop_rm_pci() {
67 cat <<EOF >"$1"
68/dts-v1/;
69/ {
70 compatible = "system-device-tree-v1";
71 lops {
72 lop_1 {
73 compatible = "system-device-tree-v1,lop,modify";
74 modify = "/pcie@10000000::";
75 };
76 };
77};
78EOF
79}
80
81write_lop_add_to_xen_cmdline() { 66write_lop_add_to_xen_cmdline() {
82 EXTRA_XEN_BOOTARGS="$2" 67 EXTRA_XEN_BOOTARGS="$2"
83 cat <<EOF >"$1" 68 cat <<EOF >"$1"
@@ -150,13 +135,6 @@ generate_xen_qemuboot_dtb() {
150 write_lop_add_to_xen_cmdline "${B}/lop-xen-cmdline.dts" \ 135 write_lop_add_to_xen_cmdline "${B}/lop-xen-cmdline.dts" \
151 "${QB_XEN_CMDLINE_EXTRA}" 136 "${QB_XEN_CMDLINE_EXTRA}"
152 137
153 # On Qemu Arm32, Dom0 accessing PCI config space ends up in an
154 # infinite loop. Remove pci node from the device tree
155 if [ "${MACHINE}" = "qemuarm" ]; then
156 write_lop_rm_pci "${B}/lop-rm-pci.dts"
157 LOP_MODULE_ARGS="${LOP_MODULE_ARGS} -i ${B}/lop-rm-pci.dts"
158 fi
159
160 if [ -z "${QB_XEN_DOMAIN_MODULES}" ]; then 138 if [ -z "${QB_XEN_DOMAIN_MODULES}" ]; then
161 bbwarn "No domain modules: please set QB_XEN_DOMAIN_MODULES" 139 bbwarn "No domain modules: please set QB_XEN_DOMAIN_MODULES"
162 fi 140 fi