Commit ee39facb authored by David S. Miller's avatar David S. Miller

net: Revert mlx4 cpumask changes.

This reverts commit 70a640d0
("net/mlx4_en: Use affinity hint") and commit
c8865b64 ("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: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2a82e40d
...@@ -1441,31 +1441,33 @@ static int ks8851_probe(struct spi_device *spi) ...@@ -1441,31 +1441,33 @@ static int ks8851_probe(struct spi_device *spi)
} }
} }
ks->vdd_io = devm_regulator_get(&spi->dev, "vdd-io"); ks->vdd_io = devm_regulator_get_optional(&spi->dev, "vdd-io");
if (IS_ERR(ks->vdd_io)) { if (IS_ERR(ks->vdd_io)) {
ret = PTR_ERR(ks->vdd_io); ret = PTR_ERR(ks->vdd_io);
if (ret == -EPROBE_DEFER)
goto err_reg_io; goto err_reg_io;
} } else {
ret = regulator_enable(ks->vdd_io); ret = regulator_enable(ks->vdd_io);
if (ret) { if (ret) {
dev_err(&spi->dev, "regulator vdd_io enable fail: %d\n", dev_err(&spi->dev, "regulator vdd_io enable fail: %d\n",
ret); ret);
goto err_reg_io; goto err_reg_io;
} }
}
ks->vdd_reg = devm_regulator_get(&spi->dev, "vdd"); ks->vdd_reg = devm_regulator_get_optional(&spi->dev, "vdd");
if (IS_ERR(ks->vdd_reg)) { if (IS_ERR(ks->vdd_reg)) {
ret = PTR_ERR(ks->vdd_reg); ret = PTR_ERR(ks->vdd_reg);
if (ret == -EPROBE_DEFER)
goto err_reg; goto err_reg;
} } else {
ret = regulator_enable(ks->vdd_reg); ret = regulator_enable(ks->vdd_reg);
if (ret) { if (ret) {
dev_err(&spi->dev, "regulator vdd enable fail: %d\n", dev_err(&spi->dev, "regulator vdd enable fail: %d\n",
ret); ret);
goto err_reg; goto err_reg;
} }
}
if (gpio_is_valid(gpio)) { if (gpio_is_valid(gpio)) {
usleep_range(10000, 11000); usleep_range(10000, 11000);
...@@ -1570,8 +1572,10 @@ static int ks8851_probe(struct spi_device *spi) ...@@ -1570,8 +1572,10 @@ static int ks8851_probe(struct spi_device *spi)
if (gpio_is_valid(gpio)) if (gpio_is_valid(gpio))
gpio_set_value(gpio, 0); gpio_set_value(gpio, 0);
err_id: err_id:
if (!IS_ERR(ks->vdd_reg))
regulator_disable(ks->vdd_reg); regulator_disable(ks->vdd_reg);
err_reg: err_reg:
if (!IS_ERR(ks->vdd_io))
regulator_disable(ks->vdd_io); regulator_disable(ks->vdd_io);
err_reg_io: err_reg_io:
err_gpio: err_gpio:
...@@ -1590,7 +1594,9 @@ static int ks8851_remove(struct spi_device *spi) ...@@ -1590,7 +1594,9 @@ static int ks8851_remove(struct spi_device *spi)
free_irq(spi->irq, priv); free_irq(spi->irq, priv);
if (gpio_is_valid(priv->gpio)) if (gpio_is_valid(priv->gpio))
gpio_set_value(priv->gpio, 0); gpio_set_value(priv->gpio, 0);
if (!IS_ERR(priv->vdd_reg))
regulator_disable(priv->vdd_reg); regulator_disable(priv->vdd_reg);
if (!IS_ERR(priv->vdd_io))
regulator_disable(priv->vdd_io); regulator_disable(priv->vdd_io);
free_netdev(priv->netdev); free_netdev(priv->netdev);
......
...@@ -257,8 +257,6 @@ static inline void cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp) ...@@ -257,8 +257,6 @@ static inline void cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp)
set_bit(cpumask_check(cpu), cpumask_bits(dstp)); set_bit(cpumask_check(cpu), cpumask_bits(dstp));
} }
int cpumask_set_cpu_local_first(int i, int numa_node, cpumask_t *dstp);
/** /**
* cpumask_clear_cpu - clear a cpu in a cpumask * cpumask_clear_cpu - clear a cpu in a cpumask
* @cpu: cpu number (< nr_cpu_ids) * @cpu: cpu number (< nr_cpu_ids)
......
...@@ -163,68 +163,4 @@ void __init free_bootmem_cpumask_var(cpumask_var_t mask) ...@@ -163,68 +163,4 @@ void __init free_bootmem_cpumask_var(cpumask_var_t mask)
{ {
memblock_free_early(__pa(mask), cpumask_size()); memblock_free_early(__pa(mask), cpumask_size());
} }
/**
* cpumask_set_cpu_local_first - set i'th cpu with local numa cpu's first
*
* @i: index number
* @numa_node: local numa_node
* @dstp: cpumask with the relevant cpu bit set according to the policy
*
* This function sets the cpumask according to a numa aware policy.
* cpumask could be used as an affinity hint for the IRQ related to a
* queue. When the policy is to spread queues across cores - local cores
* first.
*
* Returns 0 on success, -ENOMEM for no memory, and -EAGAIN when failed to set
* the cpu bit and need to re-call the function.
*/
int cpumask_set_cpu_local_first(int i, int numa_node, cpumask_t *dstp)
{
cpumask_var_t mask;
int cpu;
int ret = 0;
if (!zalloc_cpumask_var(&mask, GFP_KERNEL))
return -ENOMEM;
i %= num_online_cpus();
if (!cpumask_of_node(numa_node)) {
/* Use all online cpu's for non numa aware system */
cpumask_copy(mask, cpu_online_mask);
} else {
int n;
cpumask_and(mask,
cpumask_of_node(numa_node), cpu_online_mask);
n = cpumask_weight(mask);
if (i >= n) {
i -= n;
/* If index > number of local cpu's, mask out local
* cpu's
*/
cpumask_andnot(mask, cpu_online_mask, mask);
}
}
for_each_cpu(cpu, mask) {
if (--i < 0)
goto out;
}
ret = -EAGAIN;
out:
free_cpumask_var(mask);
if (!ret)
cpumask_set_cpu(cpu, dstp);
return ret;
}
EXPORT_SYMBOL(cpumask_set_cpu_local_first);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment