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

Re: [Xen-devel] [PATCH v7] interrupts: allow guest to set/clear MSI-X mask bit



>>> On 04.09.13 at 14:01, Joby Poriyath <joby.poriyath@xxxxxxxxxx> wrote:
> On Wed, Sep 04, 2013 at 09:36:09AM +0100, Jan Beulich wrote:
>> >>> On 30.08.13 at 18:12, Joby Poriyath <joby.poriyath@xxxxxxxxxx> wrote:
>> > +static struct msi_desc *virt_to_msi_desc(struct pci_dev *dev, void *virt)
>> > +{
>> > +    struct msi_desc *desc;
>> > +
>> > +    list_for_each_entry( desc, &dev->msi_list, list )
>> > +        if ( desc->msi_attrib.type == PCI_CAP_ID_MSIX  &&
>> > +             desc->mask_base + PCI_MSIX_ENTRY_VECTOR_CTRL_OFFSET 
>> > +                == virt )
>> 
>> To match the function's name I'd prefer this to hit on the full 16-byte
>> range rather than just the control word.
>> 
> 
> Sorry Jan, I didn't quite understand this. virt points to the control word 
> in this function. So how can we do a match on (low | high) address and data 
> words?

Each MSI-X table entry occupies 16 bytes. What I'm asking for is
that rather than just matching virt == base + ctrl-offset, you
should use a range check (virt >= base && virt < base + 16) here,
so that the addresses of the three other dwords in the MSI-X table
entry could also be passed in. Otherwise the function doesn't really
do what its name says.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.