qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Radim Krčmář" <rkrcmar@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>,
	qemu-devel@nongnu.org, liuxiaojian6@huawei.com, mst@redhat.com,
	peterx@redhat.com, kevin@koconnor.net, kraxel@redhat.com,
	pbonzini@redhat.com, lersek@redhat.com, chao.gao@intel.com
Subject: Re: [Qemu-devel] [PATCH v4 09/13] pc: kvm_apic: pass APIC ID depending on xAPIC/x2APIC mode
Date: Tue, 18 Oct 2016 18:26:54 +0200	[thread overview]
Message-ID: <20161018162654.GA20846@potion> (raw)
In-Reply-To: <20161018145623.GX3275@thinpad.lan.raisama.net>

2016-10-18 12:56-0200, Eduardo Habkost:
> On Fri, Oct 14, 2016 at 01:21:55PM +0200, Igor Mammedov wrote:
>> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
>> ---
>> v4:
>>  - restore kvm_has_x2apic_api() and use it to avoid side-effects
>>    of kvm_enable_x2apic(). x2APIC API will be enabled by iommu
>>    if it's present or not enabled at all.
>> v3:
>>  - drop kvm_has_x2apic_api() and reuse kvm_enable_x2apic() instead
>> ---
>> diff --git a/hw/i386/kvm/apic.c b/hw/i386/kvm/apic.c
>> @@ -34,7 +34,11 @@ static void kvm_put_apic_state(APICCommonState *s, struct kvm_lapic_state *kapic
>>      int i;
>>  
>>      memset(kapic, 0, sizeof(*kapic));
>> -    kvm_apic_set_reg(kapic, 0x2, s->id << 24);
>> +    if (kvm_has_x2apic_api() && s->apicbase & MSR_IA32_APICBASE_EXTD) {
>> +        kvm_apic_set_reg(kapic, 0x2, s->initial_apic_id);
> 
> What happens if:
> 
> * x2apic is enabled on CPUID;
> * guest sets MSR_IA32_APICBASE_EXTD; an
> * the x2apic API is not enabled?

KVM expects APIC ID to be in upper 8 bits of the register then.
Guest APIC mode does not come into play if the x2APIC API is not
enabled.  This is to keep compatibility with old KVMs that used xAPIC
format regardless of APIC mode.

> Does that mean kvm_{put,get}_apic_state() was already broken, or
> is the x2apic ID translated to the old format by the kernel when
> the x2apic API is disabled?

The latter.  KVM stores the 8 bits in an appropriate format, but it
doesn't really matter to QEMU: the exchange format without enabled
x2APIC API is defined to be the xAPIC one.  (KVM used to keep always
keep ID in xAPIC format and trapped x2APIC ID reads to shift the value.)

  reply	other threads:[~2016-10-18 16:27 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-13  9:52 [Qemu-devel] [PATCH v3 00/13] pc: q35: x2APIC support in kvm_apic mode Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 01/13] pc: acpi: x2APIC support for MADT table Igor Mammedov
2016-10-18 12:47   ` Eduardo Habkost
2016-10-18 13:00     ` Igor Mammedov
2016-10-18 13:05     ` Eduardo Habkost
2016-10-18 13:42       ` Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 02/13] pc: acpi: x2APIC support for SRAT table Igor Mammedov
2016-10-18 13:07   ` Eduardo Habkost
2016-10-18 13:47     ` Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 03/13] acpi: cphp: support x2APIC entry in cpu._MAT Igor Mammedov
2016-10-18 13:34   ` Eduardo Habkost
2016-10-18 13:46     ` Igor Mammedov
2016-10-18 13:47       ` Eduardo Habkost
2016-10-18 14:02         ` Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 04/13] acpi: cphp: force switch to modern cpu hotplug if APIC ID > 254 Igor Mammedov
2016-10-18 13:38   ` Eduardo Habkost
2016-10-18 14:34     ` Igor Mammedov
2016-10-18 15:05       ` Eduardo Habkost
2016-10-18 15:23         ` Igor Mammedov
2016-10-18 16:37           ` Eduardo Habkost
2016-10-19 10:35             ` Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 05/13] pc: leave max apic_id_limit only in legacy cpu hotplug code Igor Mammedov
2016-10-17 21:44   ` Eduardo Habkost
2016-10-18  9:02     ` Igor Mammedov
2016-10-18 10:31       ` Eduardo Habkost
2016-10-18 11:37         ` [Qemu-devel] [PATCH v4 " Igor Mammedov
2016-10-18 12:01           ` Eduardo Habkost
2016-10-18  9:12     ` [Qemu-devel] [PATCH v3 " Igor Mammedov
2016-10-18 10:39       ` Eduardo Habkost
2016-10-18 12:10         ` Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 06/13] pc: apic_common: extend APIC ID property to 32bit Igor Mammedov
2016-10-18 10:56   ` Eduardo Habkost
2016-10-18 12:36     ` Igor Mammedov
2016-10-18 12:59       ` Eduardo Habkost
2016-10-18 14:01         ` Igor Mammedov
2016-10-18 14:14           ` Eduardo Habkost
2016-10-18 14:38             ` Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 07/13] pc: apic_common: restore APIC ID to initial ID on reset Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 08/13] pc: apic_common: reset APIC ID to initial ID when switching into x2APIC mode Igor Mammedov
2016-10-13 14:11   ` Radim Krčmář
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 09/13] pc: kvm_apic: pass APIC ID depending on xAPIC/x2APIC mode Igor Mammedov
2016-10-13 14:08   ` Radim Krčmář
2016-10-14 11:21     ` [Qemu-devel] [PATCH v4 " Igor Mammedov
2016-10-17 12:35       ` Radim Krčmář
2016-10-18 14:56       ` Eduardo Habkost
2016-10-18 16:26         ` Radim Krčmář [this message]
2016-10-18 18:04           ` Eduardo Habkost
2016-10-17 21:51   ` [Qemu-devel] [PATCH v3 " Eduardo Habkost
2016-10-18  7:17     ` Igor Mammedov
2016-10-18 10:40       ` Eduardo Habkost
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 10/13] pc: clarify FW_CFG_MAX_CPUS usage comment Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 11/13] increase MAX_CPUMASK_BITS from 255 to 288 Igor Mammedov
2016-10-13 13:01   ` Andrew Jones
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 12/13] pc: add 'etc/boot-cpus' fw_cfg file for machine with more than 255 CPUs Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 13/13] pc: require IRQ remapping and EIM if there could be x2APIC CPUs Igor Mammedov
2016-10-13 13:56   ` Radim Krčmář
2016-10-14 11:25     ` [Qemu-devel] [PATCH v4 " Igor Mammedov
2016-10-18 11:27       ` Eduardo Habkost
2016-10-18 12:44         ` Igor Mammedov
2016-10-18 12:55           ` Eduardo Habkost
2016-10-18 14:39             ` Igor Mammedov
2016-10-13 10:01 ` [Qemu-devel] [PATCH v3 00/13] pc: q35: x2APIC support in kvm_apic mode Paolo Bonzini
2016-10-13 10:15   ` Igor Mammedov
2016-10-13 10:28   ` Gerd Hoffmann
2016-10-13 13:24 ` [Qemu-devel] [PATCH v3 14/13] pc: q35: bump max_cpus to 288 Igor Mammedov
2016-10-13 13:53   ` Radim Krčmář
2016-10-14  4:05 ` [Qemu-devel] [PATCH v3 00/13] pc: q35: x2APIC support in kvm_apic mode no-reply
2016-10-14  7:59   ` Igor Mammedov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161018162654.GA20846@potion \
    --to=rkrcmar@redhat.com \
    --cc=chao.gao@intel.com \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=kevin@koconnor.net \
    --cc=kraxel@redhat.com \
    --cc=lersek@redhat.com \
    --cc=liuxiaojian6@huawei.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).