[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH V2] pci: fixes to allow booting from extra root
From: |
Laszlo Ersek |
Subject: |
Re: [Qemu-devel] [PATCH V2] pci: fixes to allow booting from extra root pci buses. |
Date: |
Thu, 11 Jun 2015 15:57:31 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 |
On 06/11/15 15:37, Marcel Apfelbaum wrote:
> The fixes solves the following issue:
> The PXB device exposes a new pci root bridge with the
> fw path: /address@hidden/..., in which 4 is the root bus number.
> Before this patch the fw path was wrongly computed:
> /address@hidden/address@hidden/...
> Fix the above issues: Correct the bus number and remove the
> extra host bridge description.
>
> The IEEE Std 1275-1994:
>
> IEEE Standard for Boot (Initialization Configuration)
> Firmware: Core Requirements and Practices
> 3.2.1.1 Node names
> Each node in the device tree is identified by a node name
> using the following notation:
> address@hidden:device-arguments
>
> The driver name field is a sequence of between one and 31
> letters [...]. By convention, this name includes the name of
> the device’s manufacturer and the device’s model name separated by
> a “,”.
>
> The unit address field is the text representation of the
> physical address of the device within the address space
> defined by its parent node. The form of the text
> representation is bus-dependent.
> 3.2.1.2 Path names
> A particular node is uniquely identified by describing its position
> in the device tree by completely specifying the
> path from the root node through all intermediate nodes to the node
> in question. The textual representation of a
> such a path is called a device path. Device paths are composed as
> follows:
> /node-name0/node-name1/ ... /node-nameN
> When Open Firmware is searching for a particular node, and either
> the driver name or @unit-address portion of
> the node name is not given, Open Firmware shall arbitrarily choose a
> node matching the portion that is present.
>
> Signed-off-by: Marcel Apfelbaum <address@hidden>
> ---
> v1->v2:
> - fixed a bug preventing the boot of devices behind the main host bridge
> This approach leaves previous code paths intact so it will work the same
> as before if no PXB is present.
> - Added spec for fw path naming conventions. (Michael S. Tsirkin)
>
> src/boot.c | 3 ++-
> src/hw/pci.c | 2 +-
> 2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/src/boot.c b/src/boot.c
> index ec59c37..e241d1c 100644
> --- a/src/boot.c
> +++ b/src/boot.c
> @@ -114,7 +114,8 @@ build_pci_path(char *buf, int max, const char *devname,
> struct pci_device *pci)
> } else {
> if (pci->rootbus)
> p += snprintf(p, max, "/address@hidden", pci->rootbus);
> - p += snprintf(p, buf+max-p, "%s", FW_PCI_DOMAIN);
> + else
> + p += snprintf(p, buf+max-p, "%s", FW_PCI_DOMAIN);
> }
>
> int dev = pci_bdf_to_dev(pci->bdf), fn = pci_bdf_to_fn(pci->bdf);
> diff --git a/src/hw/pci.c b/src/hw/pci.c
> index 0379b55..9e77af4 100644
> --- a/src/hw/pci.c
> +++ b/src/hw/pci.c
> @@ -133,7 +133,7 @@ pci_probe_devices(void)
> if (bus != lastbus)
> rootbuses++;
> lastbus = bus;
> - rootbus = rootbuses;
> + rootbus = bus;
> if (bus > MaxPCIBus)
> MaxPCIBus = bus;
> } else {
>
I think the commit message is somewhat overkill, but I'll leave that to
Michael. :)
Regardig the rootbus question. As far as I can see, the last hunk
changes the dev->rootbus assignment for parentless devices, so they pick
up the last bus rather than the number of buses found.
Then, the only difference this makes is in build_pci_path() -- I grepped
the tree for whole-word "rootbus".
(It's quite a serendipity that my v3 qemu patchset produces exactly this
pattern in OFW device paths, without my then-knowledge of the SeaBIOS
code. Although, admittedly, the fw_name := "pci-root" change there was
suggested by Marcel.)
So, unless I'm missing something:
Reviewed-by: Laszlo Ersek <address@hidden>
- [Qemu-devel] [PATCH V2] pci: fixes to allow booting from extra root pci buses., Marcel Apfelbaum, 2015/06/11
- Re: [Qemu-devel] [PATCH V2] pci: fixes to allow booting from extra root pci buses.,
Laszlo Ersek <=
- Re: [Qemu-devel] [PATCH V2] pci: fixes to allow booting from extra root pci buses., Kevin O'Connor, 2015/06/11
- Re: [Qemu-devel] [PATCH V2] pci: fixes to allow booting from extra root pci buses., Marcel Apfelbaum, 2015/06/11
- Re: [Qemu-devel] [PATCH V2] pci: fixes to allow booting from extra root pci buses., Kevin O'Connor, 2015/06/11
- Re: [Qemu-devel] [PATCH V2] pci: fixes to allow booting from extra root pci buses., Marcel Apfelbaum, 2015/06/11
- Re: [Qemu-devel] [PATCH V2] pci: fixes to allow booting from extra root pci buses., Laszlo Ersek, 2015/06/11
- Re: [Qemu-devel] [PATCH V2] pci: fixes to allow booting from extra root pci buses., Kevin O'Connor, 2015/06/11
- Re: [Qemu-devel] [PATCH V2] pci: fixes to allow booting from extra root pci buses., Marcel Apfelbaum, 2015/06/11
- Re: [Qemu-devel] [PATCH V2] pci: fixes to allow booting from extra root pci buses., Laszlo Ersek, 2015/06/11
- Re: [Qemu-devel] [PATCH V2] pci: fixes to allow booting from extra root pci buses., Kevin O'Connor, 2015/06/11
- Re: [Qemu-devel] [PATCH V2] pci: fixes to allow booting from extra root pci buses., Laszlo Ersek, 2015/06/12