All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Christopher Clark <christopher.w.clark@gmail.com>
Cc: "meta-virtualization@lists.yoctoproject.org"
	<meta-virtualization@lists.yoctoproject.org>,
	Bruce Ashfield <bruce.ashfield@gmail.com>
Subject: Re: [meta-virtualization][honister][PATCH 3/3] xen: fix boot on the Raspberry Pi 4 with Xen 4.14
Date: Mon, 23 May 2022 09:50:28 +0000	[thread overview]
Message-ID: <422B574E-8994-4341-B90F-56FC70FAA687@arm.com> (raw)
In-Reply-To: <20220521190447.135705-10-christopher.w.clark@gmail.com>

Hi Christopher,

> On 21 May 2022, at 20:04, Christopher Clark <christopher.w.clark@gmail.com> wrote:
>
> Apply the patch from Xen to fix device tree parsing in newer kernels.
>
> Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>

Cheers
Bertrand

> ---
> ...issing-device_type-property-in-pci-p.patch | 91 +++++++++++++++++++
> recipes-extended/xen/xen_4.14.bb              |  1 +
> 2 files changed, 92 insertions(+)
> create mode 100644 recipes-extended/xen/files/0001-xen-workaround-missing-device_type-property-in-pci-p.patch
>
> diff --git a/recipes-extended/xen/files/0001-xen-workaround-missing-device_type-property-in-pci-p.patch b/recipes-extended/xen/files/0001-xen-workaround-missing-device_type-property-in-pci-p.patch
> new file mode 100644
> index 0000000..09a461b
> --- /dev/null
> +++ b/recipes-extended/xen/files/0001-xen-workaround-missing-device_type-property-in-pci-p.patch
> @@ -0,0 +1,91 @@
> +From 5a4087004d1adbbb223925f3306db0e5824a2bdc Mon Sep 17 00:00:00 2001
> +From: Stefano Stabellini <sstabellini@kernel.org>
> +Date: Tue, 9 Feb 2021 11:53:34 -0800
> +Subject: [PATCH] xen: workaround missing device_type property in pci/pcie
> + nodes
> +
> +PCI buses differ from default buses in a few important ways, so it is
> +important to detect them properly. Normally, PCI buses are expected to
> +have the following property:
> +
> +    device_type = "pci"
> +
> +In reality, it is not always the case. To handle PCI bus nodes that
> +don't have the device_type property, also consider the node name: if the
> +node name is "pcie" or "pci" then consider the bus as a PCI bus.
> +
> +This commit is based on the Linux kernel commit
> +d1ac0002dd29 "of: address: Work around missing device_type property in
> +pcie nodes".
> +
> +This fixes Xen boot on RPi4. Some RPi4 kernels have the following node
> +on their device trees:
> +
> +&pcie0 {
> +     pci@1,0 {
> +             #address-cells = <3>;
> +             #size-cells = <2>;
> +             ranges;
> +
> +             reg = <0 0 0 0 0>;
> +
> +             usb@1,0 {
> +                     reg = <0x10000 0 0 0 0>;
> +                     resets = <&reset RASPBERRYPI_FIRMWARE_RESET_ID_USB>;
> +             };
> +     };
> +};
> +
> +The pci@1,0 node is a PCI bus. If we parse the node and its children as
> +a default bus, the reg property under usb@1,0 would have to be
> +interpreted as an address range mappable by the CPU, which is not the
> +case and would break.
> +
> +Link: https://lore.kernel.org/xen-devel/YBmQQ3Tzu++AadKx@mattapan.m5p.com/
> +[fix style on commit]
> +Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
> +Tested-by: Elliott Mitchell <ehem+xen@m5p.com>
> +Tested-by: Jukka Kaartinen <jukka.kaartinen@unikie.com>
> +Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
> +Acked-by: Julien Grall <jgrall@amazon.com>
> +---
> + xen/common/device_tree.c | 16 +++++++++++++++-
> + 1 file changed, 15 insertions(+), 1 deletion(-)
> +
> +diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c
> +index 18825e333e..03d25a81ce 100644
> +--- a/xen/common/device_tree.c
> ++++ b/xen/common/device_tree.c
> +@@ -563,14 +563,28 @@ static unsigned int dt_bus_default_get_flags(const __be32 *addr)
> +  * PCI bus specific translator
> +  */
> +
> ++static bool dt_node_is_pci(const struct dt_device_node *np)
> ++{
> ++    bool is_pci = !strcmp(np->name, "pcie") || !strcmp(np->name, "pci");
> ++
> ++    if ( is_pci )
> ++        printk(XENLOG_WARNING "%s: Missing device_type\n", np->full_name);
> ++
> ++    return is_pci;
> ++}
> ++
> + static bool_t dt_bus_pci_match(const struct dt_device_node *np)
> + {
> +     /*
> +      * "pciex" is PCI Express "vci" is for the /chaos bridge on 1st-gen PCI
> +      * powermacs "ht" is hypertransport
> ++     *
> ++     * If none of the device_type match, and that the node name is
> ++     * "pcie" or "pci", accept the device as PCI (with a warning).
> +      */
> +     return !strcmp(np->type, "pci") || !strcmp(np->type, "pciex") ||
> +-        !strcmp(np->type, "vci") || !strcmp(np->type, "ht");
> ++        !strcmp(np->type, "vci") || !strcmp(np->type, "ht") ||
> ++        dt_node_is_pci(np);
> + }
> +
> + static void dt_bus_pci_count_cells(const struct dt_device_node *np,
> +--
> +2.25.1
> +
> diff --git a/recipes-extended/xen/xen_4.14.bb b/recipes-extended/xen/xen_4.14.bb
> index 267db16..c0fa938 100644
> --- a/recipes-extended/xen/xen_4.14.bb
> +++ b/recipes-extended/xen/xen_4.14.bb
> @@ -7,6 +7,7 @@ XEN_BRANCH ?= "stable-${XEN_REL}"
> SRC_URI = " \
>    git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \
>    file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch \
> +    file://0001-xen-workaround-missing-device_type-property-in-pci-p.patch \
>    "
>
> LIC_FILES_CHKSUM ?= "file://COPYING;md5=419739e325a50f3d7b4501338e44a4e5"
> --
> 2.25.1
>

IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.


  reply	other threads:[~2022-05-23  9:50 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-21 19:04 [meta-virtualization][gatesgarth,hardknott,honister,kirkstone,master][PATCH 0/11] Xen on Raspberry Pi 4 fixes Christopher Clark
2022-05-21 19:04 ` [meta-virtualization][gatesgarth][PATCH 1/3] linux-yocto-dev, raspberrypi: apply fixed revision to kernel Christopher Clark
2022-05-21 19:04 ` [meta-virtualization][gatesgarth][PATCH 2/3] xen: drop patch to workaround prelink on aarch64 Christopher Clark
2022-05-21 19:04 ` [meta-virtualization][gatesgarth][PATCH 3/3] xen: fix boot on the Raspberry Pi 4 Christopher Clark
2022-05-21 19:04 ` [meta-virtualization][hardknott][PATCH 1/3] linux-yocto-dev, raspberrypi: apply fixed revision to kernel Christopher Clark
2022-05-21 19:04 ` [meta-virtualization][hardknott][PATCH 2/3] xen: drop patch to workaround prelink on aarch64 Christopher Clark
2022-05-21 19:04 ` [meta-virtualization][hardknott][PATCH 3/3] xen: fix boot on the Raspberry Pi 4 with Xen 4.14 Christopher Clark
2022-05-21 19:04 ` [meta-virtualization][honister][PATCH 1/3] linux-yocto-dev, xen, raspberrypi: remove tracking bbappend Christopher Clark
2022-05-23  9:50   ` Bertrand Marquis
2022-05-21 19:04 ` [meta-virtualization][honister][PATCH 2/3] xen: drop patch to workaround prelink on aarch64 Christopher Clark
2022-05-23  9:55   ` Bertrand Marquis
2022-05-21 19:04 ` [meta-virtualization][honister][PATCH 3/3] xen: fix boot on the Raspberry Pi 4 with Xen 4.14 Christopher Clark
2022-05-23  9:50   ` Bertrand Marquis [this message]
2022-05-21 19:04 ` [meta-virtualization][kirkstone][PATCH] xen, raspberry pi: replace linux-yocto-dev with linux-yocto 5.15 Christopher Clark
2022-05-23  9:53   ` Bertrand Marquis
2022-05-21 19:04 ` [meta-virtualization][PATCH] " Christopher Clark
2022-05-23  9:53   ` Bertrand Marquis
2022-05-23  9:47 ` [meta-virtualization][gatesgarth,hardknott,honister,kirkstone,master][PATCH 0/11] Xen on Raspberry Pi 4 fixes Bertrand Marquis
2022-05-25 15:36 ` Bruce Ashfield
2022-05-25 17:00   ` Christopher Clark

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=422B574E-8994-4341-B90F-56FC70FAA687@arm.com \
    --to=bertrand.marquis@arm.com \
    --cc=bruce.ashfield@gmail.com \
    --cc=christopher.w.clark@gmail.com \
    --cc=meta-virtualization@lists.yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.