Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932858AbcJNSLU (ORCPT ); Fri, 14 Oct 2016 14:11:20 -0400 Received: from userp1040.oracle.com ([156.151.31.81]:44463 "EHLO userp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932764AbcJNSK6 (ORCPT ); Fri, 14 Oct 2016 14:10:58 -0400 From: Boris Ostrovsky To: david.vrabel@citrix.com, JGross@suse.com Cc: roger.pau@citrix.com, linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org, Boris Ostrovsky Subject: [PATCH 5/8] xen/pvh: Prevent PVH guests from using PIC, RTC and IOAPIC Date: Fri, 14 Oct 2016 14:05:15 -0400 Message-Id: <1476468318-24422-6-git-send-email-boris.ostrovsky@oracle.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1476468318-24422-1-git-send-email-boris.ostrovsky@oracle.com> References: <1476468318-24422-1-git-send-email-boris.ostrovsky@oracle.com> X-Source-IP: aserv0021.oracle.com [141.146.126.233] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1756 Lines: 63 Make sure they don't use these devices since they are not emulated for unprivileged PVH guest. Also don't initialize hypercall page for them in init_hvm_pv_info() since this has already been done. Signed-off-by: Boris Ostrovsky --- arch/x86/xen/enlighten.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index d38d568..6c1a330 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c @@ -1803,10 +1803,21 @@ static void __init init_hvm_pv_info(void) minor = eax & 0xffff; printk(KERN_INFO "Xen version %d.%d.\n", major, minor); - cpuid(base + 2, &pages, &msr, &ecx, &edx); + xen_domain_type = XEN_HVM_DOMAIN; - pfn = __pa(hypercall_page); - wrmsr_safe(msr, (u32)pfn, (u32)(pfn >> 32)); + /* PVH set up hypercall page earlier in xen_prepare_pvh() */ + if (xen_pvh_domain()) { + pv_info.name = "Xen PVH"; +#ifdef CONFIG_ACPI + /* No PIC or IOAPIC */ + acpi_irq_model = ACPI_IRQ_MODEL_PLATFORM; +#endif + } else { + pv_info.name = "Xen HVM"; + cpuid(base + 2, &pages, &msr, &ecx, &edx); + pfn = __pa(hypercall_page); + wrmsr_safe(msr, (u32)pfn, (u32)(pfn >> 32)); + } xen_setup_features(); @@ -1815,10 +1826,6 @@ static void __init init_hvm_pv_info(void) this_cpu_write(xen_vcpu_id, ebx); else this_cpu_write(xen_vcpu_id, smp_processor_id()); - - pv_info.name = "Xen HVM"; - - xen_domain_type = XEN_HVM_DOMAIN; } static int xen_cpu_up_prepare(unsigned int cpu) @@ -1892,6 +1899,9 @@ static void __init xen_hvm_guest_init(void) init_hvm_pv_info(); + if (xen_pvh_domain()) + x86_platform.legacy.rtc = 0; + xen_hvm_init_shared_info(); xen_panic_handler_init(); -- 1.8.3.1