From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: [PATCH kvm-unit-tests 4/4] x86: apic: cleanup Date: Tue, 15 Dec 2015 11:25:38 +0100 Message-ID: <1450175138-1140-5-git-send-email-pbonzini@redhat.com> References: <1450175138-1140-1-git-send-email-pbonzini@redhat.com> Cc: dmatlack@google.com To: kvm@vger.kernel.org Return-path: Received: from mail-wm0-f46.google.com ([74.125.82.46]:36462 "EHLO mail-wm0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S964870AbbLOKZ5 (ORCPT ); Tue, 15 Dec 2015 05:25:57 -0500 Received: by mail-wm0-f46.google.com with SMTP id n186so157868650wmn.1 for ; Tue, 15 Dec 2015 02:25:56 -0800 (PST) In-Reply-To: <1450175138-1140-1-git-send-email-pbonzini@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: Signed-off-by: Paolo Bonzini --- x86/apic.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/x86/apic.c b/x86/apic.c index de19724..dfaea35 100644 --- a/x86/apic.c +++ b/x86/apic.c @@ -66,7 +66,7 @@ static bool do_write_apicbase(u64 data) jmp_buf jmpbuf; int ret; if (set_exception_jmpbuf(GP_VECTOR, jmpbuf) == 0) { - wrmsr(MSR_IA32_APICBASE, data); + wrmsr(MSR_IA32_APICBASE, APIC_DEFAULT_PHYS_BASE | APIC_BSP | data); ret = 0; } else { ret = 1; @@ -77,36 +77,32 @@ static bool do_write_apicbase(u64 data) void test_enable_x2apic(void) { - u64 invalid_state = APIC_DEFAULT_PHYS_BASE | APIC_BSP | APIC_EXTD; - u64 apic_enabled = APIC_DEFAULT_PHYS_BASE | APIC_BSP | APIC_EN; - u64 x2apic_enabled = - APIC_DEFAULT_PHYS_BASE | APIC_BSP | APIC_EN | APIC_EXTD; - if (enable_x2apic()) { printf("x2apic enabled\n"); report("x2apic enabled to invalid state", - do_write_apicbase(invalid_state)); + do_write_apicbase(APIC_EXTD)); report("x2apic enabled to apic enabled", - do_write_apicbase(apic_enabled)); + do_write_apicbase(APIC_EN)); - wrmsr(MSR_IA32_APICBASE, APIC_DEFAULT_PHYS_BASE | APIC_BSP); + report("x2apic enabled to disabled state", + !do_write_apicbase(0)); report("disabled to invalid state", - do_write_apicbase(invalid_state)); + do_write_apicbase(APIC_EXTD)); report("disabled to x2apic enabled", - do_write_apicbase(x2apic_enabled)); + do_write_apicbase(APIC_EN | APIC_EXTD)); - wrmsr(MSR_IA32_APICBASE, apic_enabled); + wrmsr(MSR_IA32_APICBASE, APIC_EN); report("apic enabled to invalid state", - do_write_apicbase(invalid_state)); + do_write_apicbase(APIC_EXTD)); - wrmsr(MSR_IA32_APICBASE, x2apic_enabled); + wrmsr(MSR_IA32_APICBASE, APIC_EN | APIC_EXTD); apic_write(APIC_SPIV, 0x1ff); } else { printf("x2apic not detected\n"); report("enable unsupported x2apic", - do_write_apicbase(x2apic_enabled)); + do_write_apicbase(APIC_EN | APIC_EXTD)); } } -- 2.5.0