Re: [PATCH] Qemu/KVM: Remove x2apic feature from CPU model when kernel_irqchip is off

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

 



On Mon, Feb 29, 2016 at 10:56:04AM +0800, Lan Tianyu wrote:
> On 2016年02月27日 03:54, Eduardo Habkost wrote:
> > On Thu, Feb 25, 2016 at 11:15:12PM +0800, Lan Tianyu wrote:
> >> x2apic feature is in the kvm_default_props and automatically added to all
> >> CPU models when KVM is enabled. But userspace devices don't support x2apic
> >> which can't be enabled without the in-kernel irqchip. It will trigger
> >> warning of "host doesn't support requested feature: CPUID.01H:ECX.x2apic
> >> [bit 21]" when kernel_irqchip is off. This patch is to fix it via removing
> >> x2apic feature when kernel_irqchip is off.
> >>
> >> Signed-off-by: Lan Tianyu <tianyu.lan@xxxxxxxxx>
> >> ---
> >>  target-i386/cpu.c | 4 ++++
> >>  1 file changed, 4 insertions(+)
> >>
> >> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> >> index c78f824..298fb62 100644
> >> --- a/target-i386/cpu.c
> >> +++ b/target-i386/cpu.c
> >> @@ -2125,6 +2125,10 @@ static void x86_cpu_load_def(X86CPU *cpu, X86CPUDefinition *def, Error **errp)
> >>  
> >>      /* Special cases not set in the X86CPUDefinition structs: */
> >>      if (kvm_enabled()) {
> >> +        if (!kvm_irqchip_in_kernel()) {
> >> +            x86_cpu_change_kvm_default("x2apic", "off");
> > 
> > This should be NULL instead of "off".
> 
> I tried "NULL" before. But some cpus modules(E,G SandyBridge,
> IvyBridge, haswell) already have x2apic feature in their default
> features of struct X86CPUDefinition, passing "NULL" is not to add x2apic
> feature to the cpu module and will not help to remove x2apic feature for
> these cpu modules. So I changed "NULL" to "off".

In this case, I suggest we remove x2apic from these CPU models to
avoid confusion, as the presence of the flag in the table makes
no difference at all (this can be done in a separate patch).

If we do that, NULL and "off" would have the same results, but
NULL is clearer, IMO. NULL simply disables the KVM-specific hack
(so we don't touch the property anymore), but "off" adds a new
TCG-specific hack. I will submit that as a follow-up patch.

Reviewed-by: Eduardo Habkost <ehabkost@xxxxxxxxxx>

> 
> > Otherwise, the warning will
> > be disabled if using "-cpu ...,+x2apic".
> > 
> 
> kvm_arch_get_supported_cpuid() always returns no x2apic support when
> kernel_irqchip is off and so it still triggers warning with "-cpu
> ...,+x2apic".
> 
> #qemu-system-x86_64 -cpu qemu64,+x2apic -machine kernel-irqchip=off
> warning: TCG doesn't support requested feature: CPUID.01H:ECX.x2apic
> [bit 21]

You are right. The +x2apic flag is applied after
x86_cpu_load_def() runs. My mistake.

-- 
Eduardo
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux