Thread (21 messages) 21 messages, 5 authors, 2021-06-18

Re: [patch v6 3/7] genirq/affinity: Add new callback for (re)calculating interrupt sets

From: Thomas Gleixner <hidden>
Date: 2021-06-18 19:32:32
Also in: linux-nvme, linux-pci, lkml

On Wed, Jun 16 2021 at 08:40, Ming Lei wrote:
On Tue, Jun 15, 2021 at 02:57:07PM -0500, Bjorn Helgaas wrote:
+static inline void irq_affinity_calc_sets_legacy(struct irq_affinity *affd)
This function name sucks because the function is really a wrapper around
irq_affinity_calc_sets(). What's so legacy about this? The fact that
it's called from the legacy PCI single interrupt code path?
quoted hunk ↗ jump to hunk
@@ -405,6 +405,30 @@ static void default_calc_sets(struct irq_affinity *affd, unsigned int affvecs)
 	affd->set_size[0] = affvecs;
 }
 
+static void irq_affinity_calc_sets(unsigned int affvecs,
+		struct irq_affinity *affd)
Please align the arguments when you need a line break.
+{
+	/*
+	 * Simple invocations do not provide a calc_sets() callback. Install
+	 * the generic one.
+	 */
+	if (!affd->calc_sets)
+		affd->calc_sets = default_calc_sets;
+
+	/* Recalculate the sets */
+	affd->calc_sets(affd, affvecs);
+
+	WARN_ON_ONCE(affd->nr_sets > IRQ_AFFINITY_MAX_SETS);
Hrm. That function really should return an error code to tell the caller
that something went wrong.
+}
+
+/* Provide a chance to call ->calc_sets for legacy */
What does this comment tell? Close to zero. 
+void irq_affinity_calc_sets_legacy(struct irq_affinity *affd)
+{
+	if (!affd)
+		return;
+	irq_affinity_calc_sets(0, affd);
+}
What's wrong with just exposing irq_affinity_calc_sets() have that
NULL pointer check in the function and add proper function documentation
which explains what this is about?

Thanks,

        tglx
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help