Message ID | 1478544462-9549-2-git-send-email-hch@lst.de (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
On 11/07/2016 07:47 PM, Christoph Hellwig wrote: > From: Christogh Hellwig <hch@lst.de> > > Some drivers (various network and RDMA adapter for example) have a MSI-X > vector layout where most of the vectors are used for I/O queues and should > have CPU affinity assigned to them, but some (usually 1 but sometimes more) > at the beginning or end are used for low-performance admin or configuration > work and should not have any explicit affinity assigned to them. > > This adds a new irq_affinity structure, which will be passed through a > variant of pci_irq_alloc_vectors that allows to specify these > requirements (and is extensible to any future quirks in that area) so that > the core IRQ affinity algorithm can take this quirks into account. > > Signed-off-by: Christogh Hellwig <hch@lst.de> > --- > include/linux/interrupt.h | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h > index 72f0721..7284bcd 100644 > --- a/include/linux/interrupt.h > +++ b/include/linux/interrupt.h > @@ -232,6 +232,18 @@ struct irq_affinity_notify { > void (*release)(struct kref *ref); > }; > > +/** > + * struct irq_affinity - Description for auto irq affinity assignements > + * @pre_vectors: Reserved vectors at the beginning of the MSIX > + * vector space > + * @post_vectors: Reserved vectors at the end of the MSIX > + * vector space > + */ > +struct irq_affinity { > + int pre_vectors; > + int post_vectors; > +}; > + > #if defined(CONFIG_SMP) > > extern cpumask_var_t irq_default_affinity; > Reviewed-by: Hannes Reinecke <hare@suse.com> Cheers, Hannes
On Mon, Nov 07, 2016 at 10:47:36AM -0800, Christoph Hellwig wrote: > From: Christogh Hellwig <hch@lst.de> > > Some drivers (various network and RDMA adapter for example) have a MSI-X > vector layout where most of the vectors are used for I/O queues and should > have CPU affinity assigned to them, but some (usually 1 but sometimes more) > at the beginning or end are used for low-performance admin or configuration > work and should not have any explicit affinity assigned to them. > > This adds a new irq_affinity structure, which will be passed through a > variant of pci_irq_alloc_vectors that allows to specify these > requirements (and is extensible to any future quirks in that area) so that > the core IRQ affinity algorithm can take this quirks into account. > > Signed-off-by: Christogh Hellwig <hch@lst.de> > --- Looks good, Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
On Mon, Nov 07, 2016 at 10:47:36AM -0800, Christoph Hellwig wrote: > From: Christogh Hellwig <hch@lst.de> > > Some drivers (various network and RDMA adapter for example) have a MSI-X > vector layout where most of the vectors are used for I/O queues and should > have CPU affinity assigned to them, but some (usually 1 but sometimes more) > at the beginning or end are used for low-performance admin or configuration > work and should not have any explicit affinity assigned to them. > > This adds a new irq_affinity structure, which will be passed through a > variant of pci_irq_alloc_vectors that allows to specify these > requirements (and is extensible to any future quirks in that area) so that > the core IRQ affinity algorithm can take this quirks into account. > > Signed-off-by: Christogh Hellwig <hch@lst.de> s/Christogh/Christoph/ (also above) What tree would you prefer? I vote for the IRQ tree since that seems to be where the interesting parts are, and I think I acked all the PCI bits. > + * struct irq_affinity - Description for auto irq affinity assignements > + * @pre_vectors: Reserved vectors at the beginning of the MSIX > + * vector space > + * @post_vectors: Reserved vectors at the end of the MSIX > + * vector space Maybe include something more informative than just "reserved", e.g., "Don't apply affinity to @pre_vectors at beginning of MSI-X vector space" or "Vectors at beginning of MSI-X vector space that are exempt from affinity"? > + */ > +struct irq_affinity { > + int pre_vectors; > + int post_vectors; > +}; > + > #if defined(CONFIG_SMP) > > extern cpumask_var_t irq_default_affinity; > -- > 2.1.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-pci" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Nov 08, 2016 at 03:25:27PM -0600, Bjorn Helgaas wrote: > What tree would you prefer? I vote for the IRQ tree since that seems > to be where the interesting parts are, and I think I acked all the PCI > bits. Yes, that would be my preference to. > > > + * struct irq_affinity - Description for auto irq affinity assignements > > + * @pre_vectors: Reserved vectors at the beginning of the MSIX > > + * vector space > > + * @post_vectors: Reserved vectors at the end of the MSIX > > + * vector space > > Maybe include something more informative than just "reserved", e.g., > "Don't apply affinity to @pre_vectors at beginning of MSI-X vector > space" or "Vectors at beginning of MSI-X vector space that are exempt > from affinity"? Sure. -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 72f0721..7284bcd 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -232,6 +232,18 @@ struct irq_affinity_notify { void (*release)(struct kref *ref); }; +/** + * struct irq_affinity - Description for auto irq affinity assignements + * @pre_vectors: Reserved vectors at the beginning of the MSIX + * vector space + * @post_vectors: Reserved vectors at the end of the MSIX + * vector space + */ +struct irq_affinity { + int pre_vectors; + int post_vectors; +}; + #if defined(CONFIG_SMP) extern cpumask_var_t irq_default_affinity;