diff options
author | David S. Miller <davem@davemloft.net> | 2014-06-02 00:58:02 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-06-02 00:58:02 -0400 |
commit | ee39facbf82e73e468c504d2b40e83e2d223c28c (patch) | |
tree | 802451ae11344f94f66a8b922a5418095707517e | |
parent | 2a82e40d6b66373498bf937e31b249f17dc1105a (diff) |
net: Revert mlx4 cpumask changes.
This reverts commit 70a640d0dae3a9b1b222ce673eb5d92c263ddd61
("net/mlx4_en: Use affinity hint") and commit
c8865b64b05b2f4eeefd369373e9c8aeb069e7a1 ("cpumask: Utility function
to set n'th cpu - local cpu first") because these changes break
the build when SMP is disabled amongst other things.
Reported-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/micrel/ks8851.c | 50 | ||||
-rw-r--r-- | include/linux/cpumask.h | 2 | ||||
-rw-r--r-- | lib/cpumask.c | 64 |
3 files changed, 28 insertions, 88 deletions
diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c index 66d4ab703f45..e72918970a58 100644 --- a/drivers/net/ethernet/micrel/ks8851.c +++ b/drivers/net/ethernet/micrel/ks8851.c | |||
@@ -1441,30 +1441,32 @@ static int ks8851_probe(struct spi_device *spi) | |||
1441 | } | 1441 | } |
1442 | } | 1442 | } |
1443 | 1443 | ||
1444 | ks->vdd_io = devm_regulator_get(&spi->dev, "vdd-io"); | 1444 | ks->vdd_io = devm_regulator_get_optional(&spi->dev, "vdd-io"); |
1445 | if (IS_ERR(ks->vdd_io)) { | 1445 | if (IS_ERR(ks->vdd_io)) { |
1446 | ret = PTR_ERR(ks->vdd_io); | 1446 | ret = PTR_ERR(ks->vdd_io); |
1447 | goto err_reg_io; | 1447 | if (ret == -EPROBE_DEFER) |
1448 | } | 1448 | goto err_reg_io; |
1449 | 1449 | } else { | |
1450 | ret = regulator_enable(ks->vdd_io); | 1450 | ret = regulator_enable(ks->vdd_io); |
1451 | if (ret) { | 1451 | if (ret) { |
1452 | dev_err(&spi->dev, "regulator vdd_io enable fail: %d\n", | 1452 | dev_err(&spi->dev, "regulator vdd_io enable fail: %d\n", |
1453 | ret); | 1453 | ret); |
1454 | goto err_reg_io; | 1454 | goto err_reg_io; |
1455 | } | ||
1455 | } | 1456 | } |
1456 | 1457 | ||
1457 | ks->vdd_reg = devm_regulator_get(&spi->dev, "vdd"); | 1458 | ks->vdd_reg = devm_regulator_get_optional(&spi->dev, "vdd"); |
1458 | if (IS_ERR(ks->vdd_reg)) { | 1459 | if (IS_ERR(ks->vdd_reg)) { |
1459 | ret = PTR_ERR(ks->vdd_reg); | 1460 | ret = PTR_ERR(ks->vdd_reg); |
1460 | goto err_reg; | 1461 | if (ret == -EPROBE_DEFER) |
1461 | } | 1462 | goto err_reg; |
1462 | 1463 | } else { | |
1463 | ret = regulator_enable(ks->vdd_reg); | 1464 | ret = regulator_enable(ks->vdd_reg); |
1464 | if (ret) { | 1465 | if (ret) { |
1465 | dev_err(&spi->dev, "regulator vdd enable fail: %d\n", | 1466 | dev_err(&spi->dev, "regulator vdd enable fail: %d\n", |
1466 | ret); | 1467 | ret); |
1467 | goto err_reg; | 1468 | goto err_reg; |
1469 | } | ||
1468 | } | 1470 | } |
1469 | 1471 | ||
1470 | if (gpio_is_valid(gpio)) { | 1472 | if (gpio_is_valid(gpio)) { |
@@ -1570,9 +1572,11 @@ err_irq: | |||
1570 | if (gpio_is_valid(gpio)) | 1572 | if (gpio_is_valid(gpio)) |
1571 | gpio_set_value(gpio, 0); | 1573 | gpio_set_value(gpio, 0); |
1572 | err_id: | 1574 | err_id: |
1573 | regulator_disable(ks->vdd_reg); | 1575 | if (!IS_ERR(ks->vdd_reg)) |
1576 | regulator_disable(ks->vdd_reg); | ||
1574 | err_reg: | 1577 | err_reg: |
1575 | regulator_disable(ks->vdd_io); | 1578 | if (!IS_ERR(ks->vdd_io)) |
1579 | regulator_disable(ks->vdd_io); | ||
1576 | err_reg_io: | 1580 | err_reg_io: |
1577 | err_gpio: | 1581 | err_gpio: |
1578 | free_netdev(ndev); | 1582 | free_netdev(ndev); |
@@ -1590,8 +1594,10 @@ static int ks8851_remove(struct spi_device *spi) | |||
1590 | free_irq(spi->irq, priv); | 1594 | free_irq(spi->irq, priv); |
1591 | if (gpio_is_valid(priv->gpio)) | 1595 | if (gpio_is_valid(priv->gpio)) |
1592 | gpio_set_value(priv->gpio, 0); | 1596 | gpio_set_value(priv->gpio, 0); |
1593 | regulator_disable(priv->vdd_reg); | 1597 | if (!IS_ERR(priv->vdd_reg)) |
1594 | regulator_disable(priv->vdd_io); | 1598 | regulator_disable(priv->vdd_reg); |
1599 | if (!IS_ERR(priv->vdd_io)) | ||
1600 | regulator_disable(priv->vdd_io); | ||
1595 | free_netdev(priv->netdev); | 1601 | free_netdev(priv->netdev); |
1596 | 1602 | ||
1597 | return 0; | 1603 | return 0; |
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index 3551d667ef9f..d08e4d2a9b92 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h | |||
@@ -257,8 +257,6 @@ static inline void cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp) | |||
257 | set_bit(cpumask_check(cpu), cpumask_bits(dstp)); | 257 | set_bit(cpumask_check(cpu), cpumask_bits(dstp)); |
258 | } | 258 | } |
259 | 259 | ||
260 | int cpumask_set_cpu_local_first(int i, int numa_node, cpumask_t *dstp); | ||
261 | |||
262 | /** | 260 | /** |
263 | * cpumask_clear_cpu - clear a cpu in a cpumask | 261 | * cpumask_clear_cpu - clear a cpu in a cpumask |
264 | * @cpu: cpu number (< nr_cpu_ids) | 262 | * @cpu: cpu number (< nr_cpu_ids) |
diff --git a/lib/cpumask.c b/lib/cpumask.c index 14049a96f04a..b810b753c607 100644 --- a/lib/cpumask.c +++ b/lib/cpumask.c | |||
@@ -163,68 +163,4 @@ void __init free_bootmem_cpumask_var(cpumask_var_t mask) | |||
163 | { | 163 | { |
164 | memblock_free_early(__pa(mask), cpumask_size()); | 164 | memblock_free_early(__pa(mask), cpumask_size()); |
165 | } | 165 | } |
166 | |||
167 | /** | ||
168 | * cpumask_set_cpu_local_first - set i'th cpu with local numa cpu's first | ||
169 | * | ||
170 | * @i: index number | ||
171 | * @numa_node: local numa_node | ||
172 | * @dstp: cpumask with the relevant cpu bit set according to the policy | ||
173 | * | ||
174 | * This function sets the cpumask according to a numa aware policy. | ||
175 | * cpumask could be used as an affinity hint for the IRQ related to a | ||
176 | * queue. When the policy is to spread queues across cores - local cores | ||
177 | * first. | ||
178 | * | ||
179 | * Returns 0 on success, -ENOMEM for no memory, and -EAGAIN when failed to set | ||
180 | * the cpu bit and need to re-call the function. | ||
181 | */ | ||
182 | int cpumask_set_cpu_local_first(int i, int numa_node, cpumask_t *dstp) | ||
183 | { | ||
184 | cpumask_var_t mask; | ||
185 | int cpu; | ||
186 | int ret = 0; | ||
187 | |||
188 | if (!zalloc_cpumask_var(&mask, GFP_KERNEL)) | ||
189 | return -ENOMEM; | ||
190 | |||
191 | i %= num_online_cpus(); | ||
192 | |||
193 | if (!cpumask_of_node(numa_node)) { | ||
194 | /* Use all online cpu's for non numa aware system */ | ||
195 | cpumask_copy(mask, cpu_online_mask); | ||
196 | } else { | ||
197 | int n; | ||
198 | |||
199 | cpumask_and(mask, | ||
200 | cpumask_of_node(numa_node), cpu_online_mask); | ||
201 | |||
202 | n = cpumask_weight(mask); | ||
203 | if (i >= n) { | ||
204 | i -= n; | ||
205 | |||
206 | /* If index > number of local cpu's, mask out local | ||
207 | * cpu's | ||
208 | */ | ||
209 | cpumask_andnot(mask, cpu_online_mask, mask); | ||
210 | } | ||
211 | } | ||
212 | |||
213 | for_each_cpu(cpu, mask) { | ||
214 | if (--i < 0) | ||
215 | goto out; | ||
216 | } | ||
217 | |||
218 | ret = -EAGAIN; | ||
219 | |||
220 | out: | ||
221 | free_cpumask_var(mask); | ||
222 | |||
223 | if (!ret) | ||
224 | cpumask_set_cpu(cpu, dstp); | ||
225 | |||
226 | return ret; | ||
227 | } | ||
228 | EXPORT_SYMBOL(cpumask_set_cpu_local_first); | ||
229 | |||
230 | #endif | 166 | #endif |