qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v5 2/2] enable multi-function hot-add


From: Cao jin
Subject: Re: [Qemu-devel] [PATCH v5 2/2] enable multi-function hot-add
Date: Tue, 27 Oct 2015 18:39:19 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0

Hi Michael
    Thanks for your quick response

On 10/27/2015 05:47 PM, Michael S. Tsirkin wrote:
On Tue, Oct 27, 2015 at 05:39:01PM +0800, Cao jin wrote:
static
bool pcie_has_upstream_port(PCIDevice *dev)
{
     PCIDevice *parent_dev = pci_bridge_get_device(pci_dev->bus);

     /*
      * Device associated with an upstream port.
      * As there are several types of these, it's easier to check the
      * parent device: upstream ports are always connected to
      * root or downstream ports.
      */
     return parent_dev &&
            pci_is_express(parent_dev) &&
                parent_dev->exp.exp_cap &&
                (pcie_cap_get_type(parent_dev) == PCI_EXP_TYPE_ROOT_PORT ||
                pcie_cap_get_type(parent_dev) == PCI_EXP_TYPE_DOWNSTREAM);
}


Assume my understanding is right, which means both ARI and non-ARI device
have the upstream port(root port or downstream port), could the existence of
upstream port be the judgment condition?

This tells us whether we are behind a port that
can address devices in slot != 0.



Seems I find something, according to spec: Endpoints are classified as
either legacy, PCI Express, or Root Complex Integrated Endpoints. I think
this is also what you means in comment "As there are several types of these"
And "we are behind a port" means the device is not a Root Complex
Integrated, only the other two types can be behind a port.

Am I right about this?

No, device can be a bridge itself.

Ah yes, you are saying a PCIe-->PCI(PCI-X) bridge, right?

It's simple: root and downstream
ports only have 1 slot (and it's a physical one) so you know there's
always 1 device there. It could have multiple functions.

Yes, I am aware.
It seems there is no big and obvious error about other understandings in last mail:) I just want to get myself totally understood about ARI and your implementation before using your code. Thank you very much for your time and patience:)

And the v6 is on the way

--
Yours Sincerely,

Cao Jin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]