[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 11/11] vpci/msix: add MSI-X handlers
>>> On 10.10.17 at 17:04, <roger.pau@xxxxxxxxxx> wrote: > On Wed, Oct 04, 2017 at 08:34:43AM +0000, Jan Beulich wrote: >> >>> On 19.09.17 at 17:29, <roger.pau@xxxxxxxxxx> wrote: >> > --- a/xen/include/xen/vpci.h >> > +++ b/xen/include/xen/vpci.h >> > @@ -100,6 +100,40 @@ struct vpci { >> > /* 64-bit address capable? */ >> > bool address64; >> > } *msi; >> > + >> > + /* MSI-X data. */ >> > + struct vpci_msix { >> > + struct pci_dev *pdev; >> > + /* List link. */ >> > + struct list_head next; >> > + /* Table information. */ >> > + struct vpci_msix_mem { >> > + /* MSI-X table offset. */ >> > + unsigned int offset; >> > + /* MSI-X table BIR. */ >> > + unsigned int bir; >> > + /* Table size. */ >> > + unsigned int size; >> > +#define VPCI_MSIX_TABLE 0 >> > +#define VPCI_MSIX_PBA 1 >> > +#define VPCI_MSIX_MEM_NUM 2 >> > + } mem[VPCI_MSIX_MEM_NUM]; >> > + /* Maximum number of vectors supported by the device. */ >> > + unsigned int max_entries; >> > + /* MSI-X enabled? */ >> > + bool enabled; >> > + /* Masked? */ >> > + bool masked; >> > + /* Entries. */ >> > + struct vpci_msix_entry { >> > + uint64_t addr; >> > + uint32_t data; >> > + unsigned int nr; >> > + struct vpci_arch_msix_entry arch; >> > + bool masked; >> > + bool updated; >> > + } entries[]; >> > + } *msix; >> >> Same remark as for MSI regarding optimizing structure size. > > Going over the fields, bir can be turned into a uint8_t, and size into > a uint16_t. max_entries can also be converted to a uint16_t together > with nr. > > Apart from that I don't see much more optimization, unless we start > packaging fields (ie: offset and bir could reside in a uint32_t), but > IMHO that's going to make the code harder to parse for little gain, > and will involve more calculations in the handlers. The more instances of a structure there may be, the more relevant it is to pack them tightly. I.e. primary focus needs to be on struct vpci_msix_entry, but since - as indicated - there may be many devices supporting MSI-X, struct vpci_msix as a whole should be reasonably well packed as well. I don't think more calculation in the handlers is an argument - the compiler will do it for you, and the affected code shouldn't really be performance critical (it's involved in setting up interrupts, not delivering them). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |