Pull Hyper-V updates from Sasha Levin: - first round of vmbus hibernation support (Dexuan Cui) - remove dependencies on PAGE_SIZE (Maya Nakamura) - move the hyper-v tools/ code into the tools build system (Andy Shevchenko) - hyper-v balloon cleanups (Dexuan Cui) * tag 'hyperv-next-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux: Drivers: hv: vmbus: Resume after fixing up old primary channels Drivers: hv: vmbus: Suspend after cleaning up hv_sock and sub channels Drivers: hv: vmbus: Clean up hv_sock channels by force upon suspend Drivers: hv: vmbus: Suspend/resume the vmbus itself for hibernation Drivers: hv: vmbus: Ignore the offers when resuming from hibernation Drivers: hv: vmbus: Implement suspend/resume for VSC drivers for hibernation Drivers: hv: vmbus: Add a helper function is_sub_channel() Drivers: hv: vmbus: Suspend/resume the synic for hibernation Drivers: hv: vmbus: Break out synic enable and disable operations HID: hv: Remove dependencies on PAGE_SIZE for ring buffer Tools: hv: move to tools buildsystem hv_balloon: Reorganize the probe function hv_balloon: Use a static page for the balloon_up send buffer
Showing the changes to include/linux (1 of 10 files). Show all
Unified · Split
| @@ -245,7 +245,10 @@ struct vmbus_channel_offer { · 244 unmodified lines | ||
| 245 | 245 | } pipe; |
| 246 | 246 | } u; |
| 247 | 247 | /* |
| 248 | − * The sub_channel_index is defined in win8. | |
| 248 | + * The sub_channel_index is defined in Win8: a value of zero means a | |
| 249 | + * primary channel and a value of non-zero means a sub-channel. | |
| 250 | + * | |
| 251 | + * Before Win8, the field is reserved, meaning it's always zero. | |
| 249 | 252 | */ |
| 250 | 253 | u16 sub_channel_index; |
| 251 | 254 | u16 reserved3; |
| @@ -423,6 +426,9 @@ enum vmbus_channel_message_type { · 171 unmodified lines | ||
| 423 | 426 | CHANNELMSG_COUNT |
| 424 | 427 | }; |
| 425 | 428 | |
| 429 | +/* Hyper-V supports about 2048 channels, and the RELIDs start with 1. */ | |
| 430 | +#define INVALID_RELID U32_MAX | |
| 431 | + | |
| 426 | 432 | struct vmbus_channel_message_header { |
| 427 | 433 | enum vmbus_channel_message_type msgtype; |
| 428 | 434 | u32 padding; |
| @@ -934,6 +940,11 @@ static inline bool is_hvsock_channel(const struct vmbus_channel *c) · 505 unmodified lines | ||
| 934 | 940 | VMBUS_CHANNEL_TLNPI_PROVIDER_OFFER); |
| 935 | 941 | } |
| 936 | 942 | |
| 943 | +static inline bool is_sub_channel(const struct vmbus_channel *c) | |
| 944 | +{ | |
| 945 | + return c->offermsg.offer.sub_channel_index != 0; | |
| 946 | +} | |
| 947 | + | |
| 937 | 948 | static inline void set_channel_affinity_state(struct vmbus_channel *c, |
| 938 | 949 | enum hv_numa_policy policy) |
| 939 | 950 | { |
| @@ -1149,6 +1160,9 @@ struct hv_driver { · 209 unmodified lines | ||
| 1149 | 1160 | int (*remove)(struct hv_device *); |
| 1150 | 1161 | void (*shutdown)(struct hv_device *); |
| 1151 | 1162 | |
| 1163 | + int (*suspend)(struct hv_device *); | |
| 1164 | + int (*resume)(struct hv_device *); | |
| 1165 | + | |
| 1152 | 1166 | }; |
| 1153 | 1167 | |
| 1154 | 1168 | /* Base device object */ |