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

[Xen-devel] [PATCH v8 01/11] viridian: add init hooks


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Paul Durrant <paul.durrant@xxxxxxxxxx>
  • Date: Mon, 18 Mar 2019 11:20:49 +0000
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Paul Durrant <paul.durrant@xxxxxxxxxx>, Wei Liu <wei.liu2@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Delivery-date: Mon, 18 Mar 2019 11:21:15 +0000
  • Ironport-data: A9a23:8KdLjK3pafqwIcuBVPbDix16xWK7qk9dZSB6s+R8DyB0pV0GPEx97T uKzLUkopUAQnJEN2Bag4kgu/4O4M+aA/v0HWXmahotxN278sXjqoC5vKFpLolWPzaw3Mp9pH FmhHhUbiRlhWTAu2pAKZTKCVWUjYtrBQMQAZUrTrmuD3d98N9pcGd+xmNqA4p/Qa1yzR0X+d /eiRfvWLWClGLh9r8MDaQvqWSkpI3HHV62X+qGd79Z85ov2AmytHazxNcMZy4Mbv/4ryhngZ jNh1QprBaXRlMfglOmrY+kzrdpY8Y0BODxahqyIRebt8N8fulWvsAdLfXpHctxK0Xou/Zyzs m4vfe85R6jUA7+8BjZTSVHMQt8jZ0KqyypTONN2pm+AjOTt4wTbFxMSMt3bYC0kAlMQTe/h6 kb59qBLkOa2qexrt9/KhuGEQVfpJE5dmBY3nSx2WItin6dtKY3fk9ow0YQeF8hCso4V8YokD WGvE5DOYpiwkqMEeR0Wmb/VqDaCcQoU23EiLGZEjaPZ04p3YZxL4zbBrwHqcA++OF0zhWDWG eTprwEmzMon/XGjyvAl6ne2oPzsEQDG6Yg3flZDE2lt8LE8RTC3g46RfU3Kegfbj7ea729gU z6EVsATtnEU+Xt9GTjK2/r0iiFe98gxulXTj2jHuePVKFQ8AR3gRO4wVrbBj3YgImODxYz/v PdRkaH4XYoUIJLUngRaH3pUdh1ReQB/H9uMhuI0lR6zj/6jHsZORQM4VtojVTCfHZoj7ep7y +tE6OLYELgYkTNwOV9ovd2gQ2tK1qGnR8dZIS+G1Zs0C5y2h4YoztZ14LJ9wUvOTXET70Q26 vVyP4Z+5fww9sZPA+LkKS7X0pSBSplsYOC6PJe+Vp9oAhhS+RcabNdo10nqspbqwK8RE0ioo tbLzEKP0UP2SaPXg/OEURoGaFIpzu1UpdI8zUSNC2JSGX/Ct+2DlxBxVEcnr9FKXaF4ztAsn sMq5zwMBCCF3BjiR35E9LggDUqAFKZWm72c/kczJxQkxKteiIYhd6TZGi9PmfRa+zDO0ByG8 G9mAm+wNccO30gcBhl02V5YMS1RuyWcjhZbKQhyQZkIjj6PEq0ut04t8QcKhXew1fX4+/fWR laqyXS7z7rWfJEtMVg1xD3kXQgPGgpAwpo8zeMWtlzZhGzFyC70dqTgsyw4HZqc6K27C137c fcIV8dnQlJ1XBSQFOdSlCUK/Cd3700avxj9eU+DzAkF8rLG5JUnJCxa9wQFieNB4hIk15Q9S x2PARd0mGtUJhjJLcYQZVl28TQUoz4H0/DKJ3fvpTM5WF4eR6UqkxzS9fgN+Ylzrv/yJHdfl GX13rNe1+eWHj9B4X5rPWpwBW3V057hZXNDfOQHCaRqDnPDQ4FQi3DQSDP56Q6acINXwpt86 V+bIorsevZAERtLmALByGD6jGXR1f4EOjduYwADhqEeEb8LyYKd3lkQg6dQzW9EUjU6ryh4i 8bnERU5sVdExN7hsl98gmCue8PWd6U5aGDfA/AtN5zfXoBZA+tNdFgVM4vB6K9UvEwnrQoBz dnDKUO4CWpHhcYqkAcNtgyZffUcNWi53JA9yqDGLivuTytlUB8idIDQfgn1kkTFYoTS9khPy /RzzY6Qef8e6sx8696lY968jVM4w7wd7fTeTiSadf8IX1cQTDAT87S9oMbspiRvR0V5q/03x iWO8hqNWIio4FQHonnMh//0tcChXPGEZxyTgitHBx9HTl2MEKSDvk+eYJpLZJqYfX6QK8lZ3 QkXkcM7glDhO8QyRXu6h4VI2FMDfJhJ5jJ19LhrkxVZxMNz55TgYvODQI=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

This patch adds domain and vcpu init hooks for viridian features. The init
hooks do not yet do anything; the functionality will be added to by
subsequent patches.

Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
Reviewed-by: Wei Liu <wei.liu2@xxxxxxxxxx>
Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
---
Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Cc: "Roger Pau Monné" <roger.pau@xxxxxxxxxx>

v5:
 - Put the call to viridian_domain_deinit() back into
   hvm_domain_relinquish_resources() where it should be

v3:
 - Re-instate call from domain deinit to vcpu deinit
 - Move deinit calls to avoid introducing new labels

v2:
 - Remove call from domain deinit to vcpu deinit
---
 xen/arch/x86/hvm/hvm.c               | 10 ++++++++++
 xen/arch/x86/hvm/viridian/viridian.c | 10 ++++++++++
 xen/include/asm-x86/hvm/viridian.h   |  3 +++
 3 files changed, 23 insertions(+)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 8adbb61b57..11ce21fc08 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -666,6 +666,10 @@ int hvm_domain_initialise(struct domain *d)
     if ( hvm_tsc_scaling_supported )
         d->arch.hvm.tsc_scaling_ratio = hvm_default_tsc_scaling_ratio;
 
+    rc = viridian_domain_init(d);
+    if ( rc )
+        goto fail2;
+
     rc = hvm_funcs.domain_initialise(d);
     if ( rc != 0 )
         goto fail2;
@@ -687,6 +691,7 @@ int hvm_domain_initialise(struct domain *d)
     hvm_destroy_cacheattr_region_list(d);
     destroy_perdomain_mapping(d, PERDOMAIN_VIRT_START, 0);
  fail:
+    viridian_domain_deinit(d);
     return rc;
 }
 
@@ -1526,6 +1531,10 @@ int hvm_vcpu_initialise(struct vcpu *v)
          && (rc = nestedhvm_vcpu_initialise(v)) < 0 ) /* teardown: 
nestedhvm_vcpu_destroy */
         goto fail5;
 
+    rc = viridian_vcpu_init(v);
+    if ( rc )
+        goto fail5;
+
     rc = hvm_all_ioreq_servers_add_vcpu(d, v);
     if ( rc != 0 )
         goto fail6;
@@ -1553,6 +1562,7 @@ int hvm_vcpu_initialise(struct vcpu *v)
  fail2:
     hvm_vcpu_cacheattr_destroy(v);
  fail1:
+    viridian_vcpu_deinit(v);
     return rc;
 }
 
diff --git a/xen/arch/x86/hvm/viridian/viridian.c 
b/xen/arch/x86/hvm/viridian/viridian.c
index 425af56856..5b0eb8a8c7 100644
--- a/xen/arch/x86/hvm/viridian/viridian.c
+++ b/xen/arch/x86/hvm/viridian/viridian.c
@@ -417,6 +417,16 @@ int guest_rdmsr_viridian(const struct vcpu *v, uint32_t 
idx, uint64_t *val)
     return X86EMUL_OKAY;
 }
 
+int viridian_vcpu_init(struct vcpu *v)
+{
+    return 0;
+}
+
+int viridian_domain_init(struct domain *d)
+{
+    return 0;
+}
+
 void viridian_vcpu_deinit(struct vcpu *v)
 {
     viridian_synic_wrmsr(v, HV_X64_MSR_VP_ASSIST_PAGE, 0);
diff --git a/xen/include/asm-x86/hvm/viridian.h 
b/xen/include/asm-x86/hvm/viridian.h
index ec5ef8d3f9..f072838955 100644
--- a/xen/include/asm-x86/hvm/viridian.h
+++ b/xen/include/asm-x86/hvm/viridian.h
@@ -80,6 +80,9 @@ viridian_hypercall(struct cpu_user_regs *regs);
 void viridian_time_ref_count_freeze(struct domain *d);
 void viridian_time_ref_count_thaw(struct domain *d);
 
+int viridian_vcpu_init(struct vcpu *v);
+int viridian_domain_init(struct domain *d);
+
 void viridian_vcpu_deinit(struct vcpu *v);
 void viridian_domain_deinit(struct domain *d);
 
-- 
2.20.1


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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