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.
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to