Hi Michal,

> On 9 Jun 2022, at 10:57, Michal Orzel via lists.yoctoproject.org 
> <[email protected]> wrote:
> 
> 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 <[email protected]>
Reviewed-by: Bertrand Marquis <[email protected]>

Also tested on kirkstone and dom0 boots fine and pci is working.

Thanks a lot
Cheers
Bertrand

> ---
> classes/qemuboot-xen-dtb.bbclass | 22 ----------------------
> 1 file changed, 22 deletions(-)
> 
> diff --git a/classes/qemuboot-xen-dtb.bbclass 
> b/classes/qemuboot-xen-dtb.bbclass
> index 1f17a86..d43d23a 100644
> --- a/classes/qemuboot-xen-dtb.bbclass
> +++ b/classes/qemuboot-xen-dtb.bbclass
> @@ -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
> -- 
> 2.25.1
> 
> 
> 
> 

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#7353): 
https://lists.yoctoproject.org/g/meta-virtualization/message/7353
Mute This Topic: https://lists.yoctoproject.org/mt/91642063/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/meta-virtualization/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to