Revert "xen: Disable PCI on qemuarm with Xen"

This reverts commit fb0a7b97db.

Justification:
Commit fb0a7b97db 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>
This commit is contained in:
Michal Orzel 2022-06-09 11:57:47 +02:00 committed by Bruce Ashfield
parent ec96eab80c
commit 17f3d28228

View File

@ -63,21 +63,6 @@ write_lops_xen_section() {
EOF
}
write_lop_rm_pci() {
cat <<EOF >"$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 <<EOF >"$1"
@ -150,13 +135,6 @@ 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