From mboxrd@z Thu Jan 1 00:00:00 1970 From: Radim =?utf-8?B?S3LEjW3DocWZ?= Subject: Re: [PATCH v3 12/14] KVM: x86: add a flag to disable KVM x2apic broadcast quirk Date: Wed, 13 Jul 2016 17:14:13 +0200 Message-ID: <20160713151413.GD22438@potion> References: <20160712200930.32143-1-rkrcmar@redhat.com> <20160712200930.32143-13-rkrcmar@redhat.com> <4b30aa90-24bb-c5d0-18c0-b1fb4a62014f@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, "Lan, Tianyu" , Igor Mammedov , Jan Kiszka , Peter Xu , Yang Zhang To: Paolo Bonzini Return-path: Received: from mx1.redhat.com ([209.132.183.28]:56220 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753148AbcGMPOm (ORCPT ); Wed, 13 Jul 2016 11:14:42 -0400 Content-Disposition: inline In-Reply-To: <4b30aa90-24bb-c5d0-18c0-b1fb4a62014f@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: 2016-07-13 10:38+0200, Paolo Bonzini: > On 12/07/2016 22:09, Radim Kr=C4=8Dm=C3=A1=C5=99 wrote: >> @@ -619,14 +619,17 @@ static bool kvm_apic_match_logical_addr(struct= kvm_lapic *apic, u32 mda) >> /* KVM APIC implementation has two quirks >> * - dest always begins at 0 while xAPIC MDA has offset 24, >> * - IOxAPIC messages have to be delivered (directly) to x2APIC. >> + * >> + * The broadcast quirk can be disabled with KVM_CAP_X2APIC_API. >=20 > --verbose version: >=20 > /* KVM APIC implementation has two quirks > - * - dest always begins at 0 while xAPIC MDA has offset 24, > - * - IOxAPIC messages have to be delivered (directly) to x2APIC. > + * - dest always begins at 0 while xAPIC MDA has offset 24. This i= s > + * just a quirk in the API and is not problematic. > * > - * The broadcast quirk can be disabled with KVM_CAP_X2APIC_API. > + * - in-kernel IOAPIC messages have to be delivered directly to > + * x2APIC, because the kernel does not support interrupt remappin= g. > + * In order to support broadcast without interrupt remapping, x2A= PIC > + * rewrites the destination of non-IPI messages (and also of IPIs= sent > + * from xAPIC-mode LAPICs) from APIC_BROADCAST to X2APIC_BROADCAS= T. KVM doesn't do the operation in parentheses since 394457a928e0 ("KVM: x86: some apic broadcast modes does not work"). =46ollowing patches added only !ipi case (I already regret posting them= ). > + * > + * The broadcast quirk can be disabled with KVM_CAP_X2APIC_API. Thi= s is > + * important when userspace wants to use x2APIC-format MSIs, because > + * APIC_BROADCAST (0xff) is a legal route for "cluster 0, CPUs 0-7". > */ >=20 > Sounds good? Except that one bit. (Code alone really can't explain the what happens here.)