Merge tag 'hyperv-next-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/hyper...
[linux-2.6-microblaze.git] / drivers / hv / vmbus_drv.c
index d69f4ef..b50081c 100644 (file)
@@ -23,7 +23,6 @@
 #include <linux/cpu.h>
 #include <linux/sched/task_stack.h>
 
-#include <asm/mshyperv.h>
 #include <linux/delay.h>
 #include <linux/notifier.h>
 #include <linux/ptrace.h>
@@ -227,7 +226,7 @@ static ssize_t numa_node_show(struct device *dev,
        if (!hv_dev->channel)
                return -ENODEV;
 
-       return sprintf(buf, "%d\n", hv_dev->channel->numa_node);
+       return sprintf(buf, "%d\n", cpu_to_node(hv_dev->channel->target_cpu));
 }
 static DEVICE_ATTR_RO(numa_node);
 #endif
@@ -508,18 +507,17 @@ static ssize_t channel_vp_mapping_show(struct device *dev,
 {
        struct hv_device *hv_dev = device_to_hv_device(dev);
        struct vmbus_channel *channel = hv_dev->channel, *cur_sc;
-       unsigned long flags;
        int buf_size = PAGE_SIZE, n_written, tot_written;
        struct list_head *cur;
 
        if (!channel)
                return -ENODEV;
 
+       mutex_lock(&vmbus_connection.channel_mutex);
+
        tot_written = snprintf(buf, buf_size, "%u:%u\n",
                channel->offermsg.child_relid, channel->target_cpu);
 
-       spin_lock_irqsave(&channel->lock, flags);
-
        list_for_each(cur, &channel->sc_list) {
                if (tot_written >= buf_size - 1)
                        break;
@@ -533,7 +531,7 @@ static ssize_t channel_vp_mapping_show(struct device *dev,
                tot_written += n_written;
        }
 
-       spin_unlock_irqrestore(&channel->lock, flags);
+       mutex_unlock(&vmbus_connection.channel_mutex);
 
        return tot_written;
 }
@@ -1717,7 +1715,7 @@ static ssize_t target_cpu_store(struct vmbus_channel *channel,
        /* No CPUs should come up or down during this. */
        cpus_read_lock();
 
-       if (!cpumask_test_cpu(target_cpu, cpu_online_mask)) {
+       if (!cpu_online(target_cpu)) {
                cpus_read_unlock();
                return -EINVAL;
        }
@@ -1779,8 +1777,6 @@ static ssize_t target_cpu_store(struct vmbus_channel *channel,
         */
 
        channel->target_cpu = target_cpu;
-       channel->target_vp = hv_cpu_number_to_vp_number(target_cpu);
-       channel->numa_node = cpu_to_node(target_cpu);
 
        /* See init_vp_index(). */
        if (hv_is_perf_channel(channel))
@@ -2347,7 +2343,6 @@ acpi_walk_err:
 static int vmbus_bus_suspend(struct device *dev)
 {
        struct vmbus_channel *channel, *sc;
-       unsigned long flags;
 
        while (atomic_read(&vmbus_connection.offer_in_progress) != 0) {
                /*
@@ -2405,12 +2400,10 @@ static int vmbus_bus_suspend(struct device *dev)
                        continue;
                }
 
-               spin_lock_irqsave(&channel->lock, flags);
                list_for_each_entry(sc, &channel->sc_list, sc_list) {
                        pr_err("Sub-channel not deleted!\n");
                        WARN_ON_ONCE(1);
                }
-               spin_unlock_irqrestore(&channel->lock, flags);
 
                atomic_inc(&vmbus_connection.nr_chan_fixup_on_resume);
        }