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

Re: [PATCH for-4.17 1/2] viridian: suggest MSR APIC accesses if MSR accesses are accelerated



On 04/11/2022 14:22, Roger Pau Monne wrote:
The "APIC register virtualization" Intel hardware feature applies to
both MMIO or MSR APIC accesses depending on whether "virtualize x2APIC
mode" is also available.

As such also suggest MSR APIC accesses if both "APIC register
virtualization" and "virtualize x2APIC mode" features are available.


I'm having trouble reconciling that with the logic below...

Fixes: 7f2e992b82 ('VMX/Viridian: suppress MSR-based APIC suggestion when 
having APIC-V')
Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
  xen/arch/x86/hvm/viridian/viridian.c | 6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/viridian/viridian.c 
b/xen/arch/x86/hvm/viridian/viridian.c
index 25dca93e8b..c4fa0a8b32 100644
--- a/xen/arch/x86/hvm/viridian/viridian.c
+++ b/xen/arch/x86/hvm/viridian/viridian.c
@@ -197,7 +197,11 @@ void cpuid_viridian_leaves(const struct vcpu *v, uint32_t 
leaf,
          res->a = CPUID4A_RELAX_TIMER_INT;
          if ( viridian_feature_mask(d) & HVMPV_hcall_remote_tlb_flush )
              res->a |= CPUID4A_HCALL_REMOTE_TLB_FLUSH;
-        if ( !cpu_has_vmx_apic_reg_virt )
+        /*
+         * Suggest x2APIC mode by default, unless xAPIC registers are hardware
+         * virtualized and x2APIC ones aren't.
+         */
+        if ( !cpu_has_vmx_apic_reg_virt || cpu_has_vmx_virtualize_x2apic_mode )

This means APIC register virt *not* available or virt x2apic *is* available. Is the latter gated on the former?

  Paul


              res->a |= CPUID4A_MSR_BASED_APIC;
          if ( viridian_feature_mask(d) & HVMPV_hcall_ipi )
              res->a |= CPUID4A_SYNTHETIC_CLUSTER_IPI;




 


Rackspace

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