Thread (33 messages) 33 messages, 7 authors, 2016-09-26

Re: [PATCH 02/13] genirq/affinity: Provide smarter irq spreading infrastructure

flat view

From: Alexander Gordeev <hidden>
Date: 2016-09-21 12:23:58
Also in: lkml

On Wed, Sep 14, 2016 at 04:18:48PM +0200, Christoph Hellwig wrote:
quoted hunk ↗ jump to hunk
+/**
+ * irq_calc_affinity_vectors - Calculate to optimal number of vectors for a given affinity mask
+ * @affinity:		The affinity mask to spread. If NULL cpu_online_mask
+ *			is used
+ * @maxvec:		The maximum number of vectors available
+ */
+int irq_calc_affinity_vectors(const struct cpumask *affinity, int maxvec)
+{
+	int cpus, ret;
+
+	/* Stabilize the cpumasks */
+	get_online_cpus();
+	/* If the supplied affinity mask is NULL, use cpu online mask */
+	if (!affinity)
+		affinity = cpu_online_mask;
+
+	cpus = cpumask_weight(affinity);
Should not we consider the result of AND of affinity and cpu_online_mask?
+	ret = (cpus < maxvec) ? cpus : maxvec;
+
+	put_online_cpus();
+	return ret;
+}
+
 static int get_first_sibling(unsigned int cpu)
 {
 	unsigned int ret;
-- 
2.1.4
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help