diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-09-13 14:32:58 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-09-26 12:01:17 -0400 |
commit | 4947c7453b184bc33a0056cf95af61c3cad11ef6 (patch) | |
tree | 3a83a2c0f705b5f202f32b5257fc24b38797695c /drivers/hv | |
parent | 1cee272b0249c5007391da6cf42903b8f30dbc5a (diff) |
hv: move "client/server_monitor_conn_id" bus attributes to dev_groups
This moves the "client_monitor_conn_id" and "server_monitor_conn_id" bus
attributes to the dev_groups structure, removing the need for it to be
in a temporary structure.
Tested-by: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/hv')
-rw-r--r-- | drivers/hv/channel.c | 14 | ||||
-rw-r--r-- | drivers/hv/vmbus_drv.c | 55 |
2 files changed, 38 insertions, 31 deletions
diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c index ff61464f57ca..75c26da3e011 100644 --- a/drivers/hv/channel.c +++ b/drivers/hv/channel.c | |||
@@ -65,20 +65,6 @@ static void vmbus_setevent(struct vmbus_channel *channel) | |||
65 | void vmbus_get_debug_info(struct vmbus_channel *channel, | 65 | void vmbus_get_debug_info(struct vmbus_channel *channel, |
66 | struct vmbus_channel_debug_info *debuginfo) | 66 | struct vmbus_channel_debug_info *debuginfo) |
67 | { | 67 | { |
68 | struct hv_monitor_page *monitorpage; | ||
69 | u8 monitor_group = (u8)channel->offermsg.monitorid / 32; | ||
70 | u8 monitor_offset = (u8)channel->offermsg.monitorid % 32; | ||
71 | |||
72 | monitorpage = vmbus_connection.monitor_pages[0]; | ||
73 | debuginfo->servermonitor_connectionid = | ||
74 | monitorpage->parameter[monitor_group] | ||
75 | [monitor_offset].connectionid.u.id; | ||
76 | |||
77 | monitorpage = vmbus_connection.monitor_pages[1]; | ||
78 | debuginfo->clientmonitor_connectionid = | ||
79 | monitorpage->parameter[monitor_group] | ||
80 | [monitor_offset].connectionid.u.id; | ||
81 | |||
82 | hv_ringbuffer_get_debuginfo(&channel->inbound, &debuginfo->inbound); | 68 | hv_ringbuffer_get_debuginfo(&channel->inbound, &debuginfo->inbound); |
83 | hv_ringbuffer_get_debuginfo(&channel->outbound, &debuginfo->outbound); | 69 | hv_ringbuffer_get_debuginfo(&channel->outbound, &debuginfo->outbound); |
84 | } | 70 | } |
diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c index 461b989835b6..73cb456e256b 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c | |||
@@ -47,9 +47,6 @@ static struct completion probe_event; | |||
47 | static int irq; | 47 | static int irq; |
48 | 48 | ||
49 | struct hv_device_info { | 49 | struct hv_device_info { |
50 | u32 server_monitor_conn_id; | ||
51 | u32 client_monitor_conn_id; | ||
52 | |||
53 | struct hv_dev_port_info inbound; | 50 | struct hv_dev_port_info inbound; |
54 | struct hv_dev_port_info outbound; | 51 | struct hv_dev_port_info outbound; |
55 | }; | 52 | }; |
@@ -73,10 +70,6 @@ static void get_channel_info(struct hv_device *device, | |||
73 | 70 | ||
74 | vmbus_get_debug_info(device->channel, &debug_info); | 71 | vmbus_get_debug_info(device->channel, &debug_info); |
75 | 72 | ||
76 | info->server_monitor_conn_id = debug_info.servermonitor_connectionid; | ||
77 | |||
78 | info->client_monitor_conn_id = debug_info.clientmonitor_connectionid; | ||
79 | |||
80 | info->inbound.int_mask = debug_info.inbound.current_interrupt_mask; | 73 | info->inbound.int_mask = debug_info.inbound.current_interrupt_mask; |
81 | info->inbound.read_idx = debug_info.inbound.current_read_index; | 74 | info->inbound.read_idx = debug_info.inbound.current_read_index; |
82 | info->inbound.write_idx = debug_info.inbound.current_write_index; | 75 | info->inbound.write_idx = debug_info.inbound.current_write_index; |
@@ -147,12 +140,6 @@ static ssize_t vmbus_show_device_attr(struct device *dev, | |||
147 | } else if (!strcmp(dev_attr->attr.name, "in_write_bytes_avail")) { | 140 | } else if (!strcmp(dev_attr->attr.name, "in_write_bytes_avail")) { |
148 | ret = sprintf(buf, "%d\n", | 141 | ret = sprintf(buf, "%d\n", |
149 | device_info->inbound.bytes_avail_towrite); | 142 | device_info->inbound.bytes_avail_towrite); |
150 | } else if (!strcmp(dev_attr->attr.name, "server_monitor_conn_id")) { | ||
151 | ret = sprintf(buf, "%d\n", | ||
152 | device_info->server_monitor_conn_id); | ||
153 | } else if (!strcmp(dev_attr->attr.name, "client_monitor_conn_id")) { | ||
154 | ret = sprintf(buf, "%d\n", | ||
155 | device_info->client_monitor_conn_id); | ||
156 | } | 143 | } |
157 | 144 | ||
158 | kfree(device_info); | 145 | kfree(device_info); |
@@ -184,6 +171,14 @@ static u32 channel_latency(struct vmbus_channel *channel, | |||
184 | return monitor_page->latency[monitor_group][monitor_offset]; | 171 | return monitor_page->latency[monitor_group][monitor_offset]; |
185 | } | 172 | } |
186 | 173 | ||
174 | static u32 channel_conn_id(struct vmbus_channel *channel, | ||
175 | struct hv_monitor_page *monitor_page) | ||
176 | { | ||
177 | u8 monitor_group = channel_monitor_group(channel); | ||
178 | u8 monitor_offset = channel_monitor_offset(channel); | ||
179 | return monitor_page->parameter[monitor_group][monitor_offset].connectionid.u.id; | ||
180 | } | ||
181 | |||
187 | static ssize_t id_show(struct device *dev, struct device_attribute *dev_attr, | 182 | static ssize_t id_show(struct device *dev, struct device_attribute *dev_attr, |
188 | char *buf) | 183 | char *buf) |
189 | { | 184 | { |
@@ -308,6 +303,34 @@ static ssize_t client_monitor_latency_show(struct device *dev, | |||
308 | } | 303 | } |
309 | static DEVICE_ATTR_RO(client_monitor_latency); | 304 | static DEVICE_ATTR_RO(client_monitor_latency); |
310 | 305 | ||
306 | static ssize_t server_monitor_conn_id_show(struct device *dev, | ||
307 | struct device_attribute *dev_attr, | ||
308 | char *buf) | ||
309 | { | ||
310 | struct hv_device *hv_dev = device_to_hv_device(dev); | ||
311 | |||
312 | if (!hv_dev->channel) | ||
313 | return -ENODEV; | ||
314 | return sprintf(buf, "%d\n", | ||
315 | channel_conn_id(hv_dev->channel, | ||
316 | vmbus_connection.monitor_pages[0])); | ||
317 | } | ||
318 | static DEVICE_ATTR_RO(server_monitor_conn_id); | ||
319 | |||
320 | static ssize_t client_monitor_conn_id_show(struct device *dev, | ||
321 | struct device_attribute *dev_attr, | ||
322 | char *buf) | ||
323 | { | ||
324 | struct hv_device *hv_dev = device_to_hv_device(dev); | ||
325 | |||
326 | if (!hv_dev->channel) | ||
327 | return -ENODEV; | ||
328 | return sprintf(buf, "%d\n", | ||
329 | channel_conn_id(hv_dev->channel, | ||
330 | vmbus_connection.monitor_pages[1])); | ||
331 | } | ||
332 | static DEVICE_ATTR_RO(client_monitor_conn_id); | ||
333 | |||
311 | static struct attribute *vmbus_attrs[] = { | 334 | static struct attribute *vmbus_attrs[] = { |
312 | &dev_attr_id.attr, | 335 | &dev_attr_id.attr, |
313 | &dev_attr_state.attr, | 336 | &dev_attr_state.attr, |
@@ -319,16 +342,14 @@ static struct attribute *vmbus_attrs[] = { | |||
319 | &dev_attr_client_monitor_pending.attr, | 342 | &dev_attr_client_monitor_pending.attr, |
320 | &dev_attr_server_monitor_latency.attr, | 343 | &dev_attr_server_monitor_latency.attr, |
321 | &dev_attr_client_monitor_latency.attr, | 344 | &dev_attr_client_monitor_latency.attr, |
345 | &dev_attr_server_monitor_conn_id.attr, | ||
346 | &dev_attr_client_monitor_conn_id.attr, | ||
322 | NULL, | 347 | NULL, |
323 | }; | 348 | }; |
324 | ATTRIBUTE_GROUPS(vmbus); | 349 | ATTRIBUTE_GROUPS(vmbus); |
325 | 350 | ||
326 | /* Set up per device attributes in /sys/bus/vmbus/devices/<bus device> */ | 351 | /* Set up per device attributes in /sys/bus/vmbus/devices/<bus device> */ |
327 | static struct device_attribute vmbus_device_attrs[] = { | 352 | static struct device_attribute vmbus_device_attrs[] = { |
328 | __ATTR(server_monitor_conn_id, S_IRUGO, vmbus_show_device_attr, NULL), | ||
329 | |||
330 | __ATTR(client_monitor_conn_id, S_IRUGO, vmbus_show_device_attr, NULL), | ||
331 | |||
332 | __ATTR(out_intr_mask, S_IRUGO, vmbus_show_device_attr, NULL), | 353 | __ATTR(out_intr_mask, S_IRUGO, vmbus_show_device_attr, NULL), |
333 | __ATTR(out_read_index, S_IRUGO, vmbus_show_device_attr, NULL), | 354 | __ATTR(out_read_index, S_IRUGO, vmbus_show_device_attr, NULL), |
334 | __ATTR(out_write_index, S_IRUGO, vmbus_show_device_attr, NULL), | 355 | __ATTR(out_write_index, S_IRUGO, vmbus_show_device_attr, NULL), |