Merge tag 'for-linus-5.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw...
[linux-2.6-microblaze.git] / drivers / hv / vmbus_drv.c
index 4fad3e6..502f8cd 100644 (file)
@@ -55,7 +55,7 @@ int vmbus_interrupt;
 /*
  * Boolean to control whether to report panic messages over Hyper-V.
  *
- * It can be set via /proc/sys/kernel/hyperv/record_panic_msg
+ * It can be set via /proc/sys/kernel/hyperv_record_panic_msg
  */
 static int sysctl_record_panic_msg = 1;
 
@@ -156,6 +156,7 @@ static u32 channel_conn_id(struct vmbus_channel *channel,
 {
        u8 monitor_group = channel_monitor_group(channel);
        u8 monitor_offset = channel_monitor_offset(channel);
+
        return monitor_page->parameter[monitor_group][monitor_offset].connectionid.u.id;
 }
 
@@ -550,6 +551,7 @@ static ssize_t vendor_show(struct device *dev,
                           char *buf)
 {
        struct hv_device *hv_dev = device_to_hv_device(dev);
+
        return sprintf(buf, "0x%x\n", hv_dev->vendor_id);
 }
 static DEVICE_ATTR_RO(vendor);
@@ -559,6 +561,7 @@ static ssize_t device_show(struct device *dev,
                           char *buf)
 {
        struct hv_device *hv_dev = device_to_hv_device(dev);
+
        return sprintf(buf, "0x%x\n", hv_dev->device_id);
 }
 static DEVICE_ATTR_RO(device);
@@ -1384,6 +1387,24 @@ static struct kmsg_dumper hv_kmsg_dumper = {
        .dump = hv_kmsg_dump,
 };
 
+static void hv_kmsg_dump_register(void)
+{
+       int ret;
+
+       hv_panic_page = hv_alloc_hyperv_zeroed_page();
+       if (!hv_panic_page) {
+               pr_err("Hyper-V: panic message page memory allocation failed\n");
+               return;
+       }
+
+       ret = kmsg_dump_register(&hv_kmsg_dumper);
+       if (ret) {
+               pr_err("Hyper-V: kmsg dump register error 0x%x\n", ret);
+               hv_free_hyperv_page((unsigned long)hv_panic_page);
+               hv_panic_page = NULL;
+       }
+}
+
 static struct ctl_table_header *hv_ctl_table_hdr;
 
 /*
@@ -1474,21 +1495,8 @@ static int vmbus_bus_init(void)
                 * capability is supported by the hypervisor.
                 */
                hv_get_crash_ctl(hyperv_crash_ctl);
-               if (hyperv_crash_ctl & HV_CRASH_CTL_CRASH_NOTIFY_MSG) {
-                       hv_panic_page = (void *)hv_alloc_hyperv_zeroed_page();
-                       if (hv_panic_page) {
-                               ret = kmsg_dump_register(&hv_kmsg_dumper);
-                               if (ret) {
-                                       pr_err("Hyper-V: kmsg dump register "
-                                               "error 0x%x\n", ret);
-                                       hv_free_hyperv_page(
-                                           (unsigned long)hv_panic_page);
-                                       hv_panic_page = NULL;
-                               }
-                       } else
-                               pr_err("Hyper-V: panic message page memory "
-                                       "allocation failed");
-               }
+               if (hyperv_crash_ctl & HV_CRASH_CTL_CRASH_NOTIFY_MSG)
+                       hv_kmsg_dump_register();
 
                register_die_notifier(&hyperv_die_block);
        }
@@ -1812,7 +1820,7 @@ static ssize_t channel_pending_show(struct vmbus_channel *channel,
                       channel_pending(channel,
                                       vmbus_connection.monitor_pages[1]));
 }
-static VMBUS_CHAN_ATTR(pending, S_IRUGO, channel_pending_show, NULL);
+static VMBUS_CHAN_ATTR(pending, 0444, channel_pending_show, NULL);
 
 static ssize_t channel_latency_show(struct vmbus_channel *channel,
                                    char *buf)
@@ -1821,19 +1829,19 @@ static ssize_t channel_latency_show(struct vmbus_channel *channel,
                       channel_latency(channel,
                                       vmbus_connection.monitor_pages[1]));
 }
-static VMBUS_CHAN_ATTR(latency, S_IRUGO, channel_latency_show, NULL);
+static VMBUS_CHAN_ATTR(latency, 0444, channel_latency_show, NULL);
 
 static ssize_t channel_interrupts_show(struct vmbus_channel *channel, char *buf)
 {
        return sprintf(buf, "%llu\n", channel->interrupts);
 }
-static VMBUS_CHAN_ATTR(interrupts, S_IRUGO, channel_interrupts_show, NULL);
+static VMBUS_CHAN_ATTR(interrupts, 0444, channel_interrupts_show, NULL);
 
 static ssize_t channel_events_show(struct vmbus_channel *channel, char *buf)
 {
        return sprintf(buf, "%llu\n", channel->sig_events);
 }
-static VMBUS_CHAN_ATTR(events, S_IRUGO, channel_events_show, NULL);
+static VMBUS_CHAN_ATTR(events, 0444, channel_events_show, NULL);
 
 static ssize_t channel_intr_in_full_show(struct vmbus_channel *channel,
                                         char *buf)
@@ -1872,7 +1880,7 @@ static ssize_t subchannel_monitor_id_show(struct vmbus_channel *channel,
 {
        return sprintf(buf, "%u\n", channel->offermsg.monitorid);
 }
-static VMBUS_CHAN_ATTR(monitor_id, S_IRUGO, subchannel_monitor_id_show, NULL);
+static VMBUS_CHAN_ATTR(monitor_id, 0444, subchannel_monitor_id_show, NULL);
 
 static ssize_t subchannel_id_show(struct vmbus_channel *channel,
                                  char *buf)
@@ -2377,7 +2385,7 @@ static int vmbus_bus_suspend(struct device *dev)
                 * We wait here until the completion of any channel
                 * offers that are currently in progress.
                 */
-               msleep(1);
+               usleep_range(1000, 2000);
        }
 
        mutex_lock(&vmbus_connection.channel_mutex);