Commit c9c92bee authored by Vitaly Kuznetsov's avatar Vitaly Kuznetsov Committed by Radim Krčmář

x86/hyper-v: move struct hv_flush_pcpu{,ex} definitions to common header

Hyper-V TLB flush hypercalls definitions will be required for KVM so move
them hyperv-tlfs.h. Structures also need to be renamed as '_pcpu' suffix is
irrelevant for a general-purpose definition.
Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
parent f33ecec9
...@@ -13,22 +13,6 @@ ...@@ -13,22 +13,6 @@
#define CREATE_TRACE_POINTS #define CREATE_TRACE_POINTS
#include <asm/trace/hyperv.h> #include <asm/trace/hyperv.h>
/* HvFlushVirtualAddressSpace, HvFlushVirtualAddressList hypercalls */
struct hv_flush_pcpu {
u64 address_space;
u64 flags;
u64 processor_mask;
u64 gva_list[];
};
/* HvFlushVirtualAddressSpaceEx, HvFlushVirtualAddressListEx hypercalls */
struct hv_flush_pcpu_ex {
u64 address_space;
u64 flags;
struct hv_vpset hv_vp_set;
u64 gva_list[];
};
/* Each gva in gva_list encodes up to 4096 pages to flush */ /* Each gva in gva_list encodes up to 4096 pages to flush */
#define HV_TLB_FLUSH_UNIT (4096 * PAGE_SIZE) #define HV_TLB_FLUSH_UNIT (4096 * PAGE_SIZE)
...@@ -67,8 +51,8 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus, ...@@ -67,8 +51,8 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus,
const struct flush_tlb_info *info) const struct flush_tlb_info *info)
{ {
int cpu, vcpu, gva_n, max_gvas; int cpu, vcpu, gva_n, max_gvas;
struct hv_flush_pcpu **flush_pcpu; struct hv_tlb_flush **flush_pcpu;
struct hv_flush_pcpu *flush; struct hv_tlb_flush *flush;
u64 status = U64_MAX; u64 status = U64_MAX;
unsigned long flags; unsigned long flags;
...@@ -82,7 +66,7 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus, ...@@ -82,7 +66,7 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus,
local_irq_save(flags); local_irq_save(flags);
flush_pcpu = (struct hv_flush_pcpu **) flush_pcpu = (struct hv_tlb_flush **)
this_cpu_ptr(hyperv_pcpu_input_arg); this_cpu_ptr(hyperv_pcpu_input_arg);
flush = *flush_pcpu; flush = *flush_pcpu;
...@@ -152,8 +136,8 @@ static void hyperv_flush_tlb_others_ex(const struct cpumask *cpus, ...@@ -152,8 +136,8 @@ static void hyperv_flush_tlb_others_ex(const struct cpumask *cpus,
const struct flush_tlb_info *info) const struct flush_tlb_info *info)
{ {
int nr_bank = 0, max_gvas, gva_n; int nr_bank = 0, max_gvas, gva_n;
struct hv_flush_pcpu_ex **flush_pcpu; struct hv_tlb_flush_ex **flush_pcpu;
struct hv_flush_pcpu_ex *flush; struct hv_tlb_flush_ex *flush;
u64 status = U64_MAX; u64 status = U64_MAX;
unsigned long flags; unsigned long flags;
...@@ -167,7 +151,7 @@ static void hyperv_flush_tlb_others_ex(const struct cpumask *cpus, ...@@ -167,7 +151,7 @@ static void hyperv_flush_tlb_others_ex(const struct cpumask *cpus,
local_irq_save(flags); local_irq_save(flags);
flush_pcpu = (struct hv_flush_pcpu_ex **) flush_pcpu = (struct hv_tlb_flush_ex **)
this_cpu_ptr(hyperv_pcpu_input_arg); this_cpu_ptr(hyperv_pcpu_input_arg);
flush = *flush_pcpu; flush = *flush_pcpu;
......
...@@ -741,4 +741,20 @@ struct ipi_arg_ex { ...@@ -741,4 +741,20 @@ struct ipi_arg_ex {
struct hv_vpset vp_set; struct hv_vpset vp_set;
}; };
/* HvFlushVirtualAddressSpace, HvFlushVirtualAddressList hypercalls */
struct hv_tlb_flush {
u64 address_space;
u64 flags;
u64 processor_mask;
u64 gva_list[];
};
/* HvFlushVirtualAddressSpaceEx, HvFlushVirtualAddressListEx hypercalls */
struct hv_tlb_flush_ex {
u64 address_space;
u64 flags;
struct hv_vpset hv_vp_set;
u64 gva_list[];
};
#endif #endif
...@@ -269,7 +269,7 @@ static inline int cpumask_to_vpset(struct hv_vpset *vpset, ...@@ -269,7 +269,7 @@ static inline int cpumask_to_vpset(struct hv_vpset *vpset,
return 0; return 0;
/* /*
* Clear all banks up to the maximum possible bank as hv_flush_pcpu_ex * Clear all banks up to the maximum possible bank as hv_tlb_flush_ex
* structs are not cleared between calls, we risk flushing unneeded * structs are not cleared between calls, we risk flushing unneeded
* vCPUs otherwise. * vCPUs otherwise.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment