[Top][All Lists]

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

Re: [Qemu-devel] [PATCH v3] pci: fix pci_requester_id()

From: Peter Xu
Subject: Re: [Qemu-devel] [PATCH v3] pci: fix pci_requester_id()
Date: Tue, 17 May 2016 16:00:47 +0800
User-agent: Mutt/1.5.24 (2015-08-30)

On Tue, May 17, 2016 at 10:46:12AM +0300, Michael S. Tsirkin wrote:
> On Tue, May 17, 2016 at 02:45:07PM +0800, Peter Xu wrote:
> > This fix SID verification failure when IOMMU IR is enabled with PCI
> > bridges. Existing pci_requester_id() is more like getting BDF info
> > only. Renaming it to pci_get_bdf(). Meanwhile, we provide the correct
> > implementation to get requester ID. VT-d spec 5.1.1 is a good reference
> > to go, though it talks only about interrupt delivery, the rule works
> > exactly the same for non-interrupt cases.
> > 
> > Currently, there are three use cases for pci_requester_id():
> > 
> > - PCIX status bits: here we need BDF only, not requester ID. Replacing
> >   with pci_get_bdf().
> > - PCIe Error injection and MSI delivery: for both these cases, we are
> >   looking for requester IDs. Here we should use the new impl.
> > 
> > To avoid a PCI walk every time we send MSI message, one requester_id
> > field is added to PCIDevice to cache the result when we use it the first
> > time.  Here assumption is made that requester_id will never change
> > during device lifecycle.
> That's wrong though. It can change if bus number changes.
> That's why I said add a pointer to the actual requester,
> set it up during initialization, not on first use.

Ah... So finally we need one more field for that... Will fix in
v4. Thanks!

-- peterx

reply via email to

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