Pull hyperv updates from Wei Liu: - More patches for Hyper-V isolation VM support (Tianyu Lan) - Bug fixes and clean-up patches from various people * tag 'hyperv-next-signed-20220114' of git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux: scsi: storvsc: Fix storvsc_queuecommand() memory leak x86/hyperv: Properly deal with empty cpumasks in hyperv_flush_tlb_multi() Drivers: hv: vmbus: Initialize request offers message for Isolation VM scsi: storvsc: Fix unsigned comparison to zero swiotlb: Add CONFIG_HAS_IOMEM check around swiotlb_mem_remap() x86/hyperv: Fix definition of hv_ghcb_pg variable Drivers: hv: Fix definition of hypercall input & output arg variables net: netvsc: Add Isolation VM support for netvsc driver scsi: storvsc: Add Isolation VM support for storvsc driver hyper-v: Enable swiotlb bounce buffer for Isolation VM x86/hyper-v: Add hyperv Isolation VM check in the cc_platform_has() swiotlb: Add swiotlb bounce buffer remap function for HV IVM
Showing the changes to include (3 of 18 files). Show all
Unified · Split
| @@ -49,8 +49,8 @@ struct ms_hyperv_info { · 48 unmodified lines | |||
| 49 | }; | 49 | }; |
| 50 | extern struct ms_hyperv_info ms_hyperv; | 50 | extern struct ms_hyperv_info ms_hyperv; |
| 51 | 51 | ||
| 52 | extern void __percpu **hyperv_pcpu_input_arg; | 52 | extern void * __percpu *hyperv_pcpu_input_arg; |
| 53 | extern void __percpu **hyperv_pcpu_output_arg; | 53 | extern void * __percpu *hyperv_pcpu_output_arg; |
| 54 | 54 | ||
| 55 | extern u64 hv_do_hypercall(u64 control, void *inputaddr, void *outputaddr); | 55 | extern u64 hv_do_hypercall(u64 control, void *inputaddr, void *outputaddr); |
| 56 | extern u64 hv_do_fast_hypercall8(u16 control, u64 input8); | 56 | extern u64 hv_do_fast_hypercall8(u16 control, u64 input8); |
| @@ -269,6 +269,8 @@ bool hv_isolation_type_snp(void); · 212 unmodified lines | |||
| 269 | u64 hv_ghcb_hypercall(u64 control, void *input, void *output, u32 input_size); | 269 | u64 hv_ghcb_hypercall(u64 control, void *input, void *output, u32 input_size); |
| 270 | void hyperv_cleanup(void); | 270 | void hyperv_cleanup(void); |
| 271 | bool hv_query_ext_cap(u64 cap_query); | 271 | bool hv_query_ext_cap(u64 cap_query); |
| 272 | void *hv_map_memory(void *addr, unsigned long size); | ||
| 273 | void hv_unmap_memory(void *addr); | ||
| 272 | #else /* CONFIG_HYPERV */ | 274 | #else /* CONFIG_HYPERV */ |
| 273 | static inline bool hv_is_hyperv_initialized(void) { return false; } | 275 | static inline bool hv_is_hyperv_initialized(void) { return false; } |
| 274 | static inline bool hv_is_hibernation_supported(void) { return false; } | 276 | static inline bool hv_is_hibernation_supported(void) { return false; } |
| @@ -1261,6 +1261,7 @@ struct hv_device { · 1260 unmodified lines | |||
| 1261 | 1261 | ||
| 1262 | struct vmbus_channel *channel; | 1262 | struct vmbus_channel *channel; |
| 1263 | struct kset *channels_kset; | 1263 | struct kset *channels_kset; |
| 1264 | struct device_dma_parameters dma_parms; | ||
| 1264 | 1265 | ||
| 1265 | /* place holder to keep track of the dir for hv device in debugfs */ | 1266 | /* place holder to keep track of the dir for hv device in debugfs */ |
| 1266 | struct dentry *debug_dir; | 1267 | struct dentry *debug_dir; |
| @@ -1583,6 +1584,11 @@ struct hyperv_service_callback { · 316 unmodified lines | |||
| 1583 | void (*callback)(void *context); | 1584 | void (*callback)(void *context); |
| 1584 | }; | 1585 | }; |
| 1585 | 1586 | ||
| 1587 | struct hv_dma_range { | ||
| 1588 | dma_addr_t dma; | ||
| 1589 | u32 mapping_size; | ||
| 1590 | }; | ||
| 1591 | |||
| 1586 | #define MAX_SRV_VER 0x7ffffff | 1592 | #define MAX_SRV_VER 0x7ffffff |
| 1587 | extern bool vmbus_prep_negotiate_resp(struct icmsg_hdr *icmsghdrp, u8 *buf, u32 buflen, | 1593 | extern bool vmbus_prep_negotiate_resp(struct icmsg_hdr *icmsghdrp, u8 *buf, u32 buflen, |
| 1588 | const int *fw_version, int fw_vercnt, | 1594 | const int *fw_version, int fw_vercnt, |
| @@ -73,6 +73,9 @@ extern enum swiotlb_force swiotlb_force; · 72 unmodified lines | |||
| 73 | * @end: The end address of the swiotlb memory pool. Used to do a quick | 73 | * @end: The end address of the swiotlb memory pool. Used to do a quick |
| 74 | * range check to see if the memory was in fact allocated by this | 74 | * range check to see if the memory was in fact allocated by this |
| 75 | * API. | 75 | * API. |
| 76 | * @vaddr: The vaddr of the swiotlb memory pool. The swiotlb memory pool | ||
| 77 | * may be remapped in the memory encrypted case and store virtual | ||
| 78 | * address for bounce buffer operation. | ||
| 76 | * @nslabs: The number of IO TLB blocks (in groups of 64) between @start and | 79 | * @nslabs: The number of IO TLB blocks (in groups of 64) between @start and |
| 77 | * @end. For default swiotlb, this is command line adjustable via | 80 | * @end. For default swiotlb, this is command line adjustable via |
| 78 | * setup_io_tlb_npages. | 81 | * setup_io_tlb_npages. |
| @@ -92,6 +95,7 @@ extern enum swiotlb_force swiotlb_force; · 13 unmodified lines | |||
| 92 | struct io_tlb_mem { | 95 | struct io_tlb_mem { |
| 93 | phys_addr_t start; | 96 | phys_addr_t start; |
| 94 | phys_addr_t end; | 97 | phys_addr_t end; |
| 98 | void *vaddr; | ||
| 95 | unsigned long nslabs; | 99 | unsigned long nslabs; |
| 96 | unsigned long used; | 100 | unsigned long used; |
| 97 | unsigned int index; | 101 | unsigned int index; |
| @@ -186,4 +190,6 @@ static inline bool is_swiotlb_for_alloc(struct device *dev) · 88 unmodified lines | |||
| 186 | } | 190 | } |
| 187 | #endif /* CONFIG_DMA_RESTRICTED_POOL */ | 191 | #endif /* CONFIG_DMA_RESTRICTED_POOL */ |
| 188 | 192 | ||
| 193 | extern phys_addr_t swiotlb_unencrypted_base; | ||
| 194 | |||
| 189 | #endif /* __LINUX_SWIOTLB_H */ | 195 | #endif /* __LINUX_SWIOTLB_H */ |