[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH V3 03/13] x86/HV: Add new hvcall guest address host visibility support



On 8/10/2021 7:03 PM, Wei Liu wrote:
diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c
index 0bb4d9ca7a55..b3683083208a 100644
--- a/arch/x86/hyperv/hv_init.c
+++ b/arch/x86/hyperv/hv_init.c
@@ -607,6 +607,12 @@ EXPORT_SYMBOL_GPL(hv_get_isolation_type);
bool hv_is_isolation_supported(void)
  {
+       if (!cpu_feature_enabled(X86_FEATURE_HYPERVISOR))
+               return 0;
Nit: false instead of 0.


OK. Will fix in the next version.

+int hv_mark_gpa_visibility(u16 count, const u64 pfn[],
+                          enum hv_mem_host_visibility visibility)
+{
+       struct hv_gpa_range_for_visibility **input_pcpu, *input;
+       u16 pages_processed;
+       u64 hv_status;
+       unsigned long flags;
+
+       /* no-op if partition isolation is not enabled */
+       if (!hv_is_isolation_supported())
+               return 0;
+
+       if (count > HV_MAX_MODIFY_GPA_REP_COUNT) {
+               pr_err("Hyper-V: GPA count:%d exceeds supported:%lu\n", count,
+                       HV_MAX_MODIFY_GPA_REP_COUNT);
+               return -EINVAL;
+       }
+
+       local_irq_save(flags);
+       input_pcpu = (struct hv_gpa_range_for_visibility **)
+                       this_cpu_ptr(hyperv_pcpu_input_arg);
+       input = *input_pcpu;
+       if (unlikely(!input)) {
+               local_irq_restore(flags);
+               return -EINVAL;
+       }
+
+       input->partition_id = HV_PARTITION_ID_SELF;
+       input->host_visibility = visibility;
+       input->reserved0 = 0;
+       input->reserved1 = 0;
+       memcpy((void *)input->gpa_page_list, pfn, count * sizeof(*pfn));
+       hv_status = hv_do_rep_hypercall(
+                       HVCALL_MODIFY_SPARSE_GPA_PAGE_HOST_VISIBILITY, count,
+                       0, input, &pages_processed);
+       local_irq_restore(flags);
+
+       if (!(hv_status & HV_HYPERCALL_RESULT_MASK))
+               return 0;
+
+       return hv_status & HV_HYPERCALL_RESULT_MASK;
Joseph introduced a few helper functions in 753ed9c95c37d. They will
make the code simpler.

OK. Will update in the next version.

Thanks.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.