OSDN Git Service

net: Revert mlx4 cpumask changes.
authorDavid S. Miller <davem@davemloft.net>
Mon, 2 Jun 2014 04:58:02 +0000 (21:58 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 2 Jun 2014 04:58:02 +0000 (21:58 -0700)
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>
drivers/net/ethernet/micrel/ks8851.c
include/linux/cpumask.h
lib/cpumask.c

index 66d4ab7..e729189 100644 (file)
@@ -1441,30 +1441,32 @@ 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)) {
                ret = PTR_ERR(ks->vdd_io);
-               goto err_reg_io;
-       }
-
-       ret = regulator_enable(ks->vdd_io);
-       if (ret) {
-               dev_err(&spi->dev, "regulator vdd_io enable fail: %d\n",
-                       ret);
-               goto err_reg_io;
+               if (ret == -EPROBE_DEFER)
+                       goto err_reg_io;
+       } else {
+               ret = regulator_enable(ks->vdd_io);
+               if (ret) {
+                       dev_err(&spi->dev, "regulator vdd_io enable fail: %d\n",
+                               ret);
+                       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)) {
                ret = PTR_ERR(ks->vdd_reg);
-               goto err_reg;
-       }
-
-       ret = regulator_enable(ks->vdd_reg);
-       if (ret) {
-               dev_err(&spi->dev, "regulator vdd enable fail: %d\n",
-                       ret);
-               goto err_reg;
+               if (ret == -EPROBE_DEFER)
+                       goto err_reg;
+       } else {
+               ret = regulator_enable(ks->vdd_reg);
+               if (ret) {
+                       dev_err(&spi->dev, "regulator vdd enable fail: %d\n",
+                               ret);
+                       goto err_reg;
+               }
        }
 
        if (gpio_is_valid(gpio)) {
@@ -1570,9 +1572,11 @@ err_irq:
        if (gpio_is_valid(gpio))
                gpio_set_value(gpio, 0);
 err_id:
-       regulator_disable(ks->vdd_reg);
+       if (!IS_ERR(ks->vdd_reg))
+               regulator_disable(ks->vdd_reg);
 err_reg:
-       regulator_disable(ks->vdd_io);
+       if (!IS_ERR(ks->vdd_io))
+               regulator_disable(ks->vdd_io);
 err_reg_io:
 err_gpio:
        free_netdev(ndev);
@@ -1590,8 +1594,10 @@ static int ks8851_remove(struct spi_device *spi)
        free_irq(spi->irq, priv);
        if (gpio_is_valid(priv->gpio))
                gpio_set_value(priv->gpio, 0);
-       regulator_disable(priv->vdd_reg);
-       regulator_disable(priv->vdd_io);
+       if (!IS_ERR(priv->vdd_reg))
+               regulator_disable(priv->vdd_reg);
+       if (!IS_ERR(priv->vdd_io))
+               regulator_disable(priv->vdd_io);
        free_netdev(priv->netdev);
 
        return 0;
index 3551d66..d08e4d2 100644 (file)
@@ -257,8 +257,6 @@ static inline void cpumask_set_cpu(unsigned int cpu, struct cpumask *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
  * @cpu: cpu number (< nr_cpu_ids)
index 14049a9..b810b75 100644 (file)
@@ -163,68 +163,4 @@ void __init free_bootmem_cpumask_var(cpumask_var_t mask)
 {
        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