From patchwork Tue Jul 5 19:05:15 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boris Ostrovsky X-Patchwork-Id: 9215127 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id B38C760752 for ; Tue, 5 Jul 2016 19:14:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A5DEE28333 for ; Tue, 5 Jul 2016 19:14:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9A88528336; Tue, 5 Jul 2016 19:14:04 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 526D128333 for ; Tue, 5 Jul 2016 19:14:04 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bKVl2-000475-6w; Tue, 05 Jul 2016 19:11:44 +0000 Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bKVl0-00046Q-S0 for xen-devel@lists.xen.org; Tue, 05 Jul 2016 19:11:42 +0000 Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id 5B/34-09256-E660C775; Tue, 05 Jul 2016 19:11:42 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFLMWRWlGSWpSXmKPExsUyZ7p8oG4uW02 4wbt2Q4slHxezODB6HN39mymAMYo1My8pvyKBNePgkkNMBU8EKv506TcwXuPuYuTkEBJoZ5KY vjCpi5ELyP7KKLHi5UpmCGcDo8SHT3MYIZweRomjJ1awgbSwCRhJnD06nRHEFhGQlrj2+TJYE bPALUaJ7b/vMIMkhAX8JA5sbQVKcHCwCKhKrD2ZAhLmFfCSmP78JFiJhICcxI7VT5hAbE6g+P rGVywQJ3lKbHpylh2ixlii/e1FtgmMfAsYGVYxqhenFpWlFuka6yUVZaZnlOQmZuboGhqY6eW mFhcnpqfmJCYV6yXn525iBIYJAxDsYOz453SIUZKDSUmUl+VbdbgQX1J+SmVGYnFGfFFpTmrx IUYZDg4lCd5y1ppwIcGi1PTUirTMHGDAwqQlOHiURHi7QdK8xQWJucWZ6RCpU4yKUuK8zSAJA ZBERmkeXBssSi4xykoJ8zICHSLEU5BalJtZgir/ilGcg1FJmDcNZApPZl4J3PRXQIuZgBb/dK kGWVySiJCSamBMFrj5Qufvl7tNSv+n3q1yWFNoKMnZ9CD++7Y792bstps0jZ9/fvLXP3fML0y bwt2/hjlh1pILCU0imw7IJm5ebp/DLbnvdhuvdEi5r+3kLMEZBoJ1u34Uny7XfnLiw/38ks1t O6bPZD4ecodnx43D6p+KyozePY08YKX49ILy1Jfy+1lT5/U7KLEUZyQaajEXFScCALFnb4SNA gAA X-Env-Sender: boris.ostrovsky@oracle.com X-Msg-Ref: server-5.tower-21.messagelabs.com!1467745900!22446673!1 X-Originating-IP: [156.151.31.81] X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: VHJ1c3RlZCBJUDogMTU2LjE1MS4zMS44MSA9PiAyODgzMzk=\n X-StarScan-Received: X-StarScan-Version: 8.46; banners=-,-,- X-VirusChecked: Checked Received: (qmail 47216 invoked from network); 5 Jul 2016 19:11:41 -0000 Received: from userp1040.oracle.com (HELO userp1040.oracle.com) (156.151.31.81) by server-5.tower-21.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 5 Jul 2016 19:11:41 -0000 Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id u65JBTpa022865 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 5 Jul 2016 19:11:30 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserv0022.oracle.com (8.13.8/8.13.8) with ESMTP id u65JBTsM018059 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 5 Jul 2016 19:11:29 GMT Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserv0122.oracle.com (8.13.8/8.13.8) with ESMTP id u65JBRlW003191; Tue, 5 Jul 2016 19:11:28 GMT Received: from ovs104.us.oracle.com (/10.149.76.204) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 05 Jul 2016 19:11:27 +0000 From: Boris Ostrovsky To: xen-devel@lists.xen.org Date: Tue, 5 Jul 2016 15:05:15 -0400 Message-Id: <1467745519-9868-17-git-send-email-boris.ostrovsky@oracle.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1467745519-9868-1-git-send-email-boris.ostrovsky@oracle.com> References: <1467745519-9868-1-git-send-email-boris.ostrovsky@oracle.com> X-Source-IP: aserv0022.oracle.com [141.146.126.234] Cc: wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, julien.grall@arm.com, jbeulich@suse.com, zhaoshenglong@huawei.com, boris.ostrovsky@oracle.com, roger.pau@citrix.com Subject: [Xen-devel] [PATCH v1 16/20] x86: Allow LAPIC-only emulation_flags for HVM guests X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP PVHv2 guests may request LAPIC emulation (and nothing else) Signed-off-by: Boris Ostrovsky Reviewed-by: Jan Beulich --- Changes in v1: * Refer to PVHv2 (not hvmlite) xen/arch/x86/domain.c | 26 ++++++++++++++++---------- 1 files changed, 16 insertions(+), 10 deletions(-) diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index 989bc74..c495a29 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -545,25 +545,31 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags, } else { - if ( (config->emulation_flags & ~XEN_X86_EMU_ALL) != 0 ) + uint32_t emflags; + + if ( is_hardware_domain(d) ) + config->emulation_flags |= XEN_X86_EMU_PIT; + + emflags = config->emulation_flags; + if ( (emflags & ~XEN_X86_EMU_ALL) != 0 ) { printk(XENLOG_G_ERR "d%d: Invalid emulation bitmap: %#x\n", - d->domain_id, config->emulation_flags); + d->domain_id, emflags); return -EINVAL; } - if ( is_hardware_domain(d) ) - config->emulation_flags |= XEN_X86_EMU_PIT; - if ( config->emulation_flags != 0 && - (config->emulation_flags != - (is_hvm_domain(d) ? XEN_X86_EMU_ALL : XEN_X86_EMU_PIT)) ) + + /* PVHv2 guests can request emulated APIC */ + if ( emflags && + (is_hvm_domain(d) ? ((emflags != XEN_X86_EMU_ALL) && + (emflags != XEN_X86_EMU_LAPIC)) : + (emflags != XEN_X86_EMU_PIT)) ) { printk(XENLOG_G_ERR "d%d: Xen does not allow %s domain creation " "with the current selection of emulators: %#x\n", - d->domain_id, is_hvm_domain(d) ? "HVM" : "PV", - config->emulation_flags); + d->domain_id, is_hvm_domain(d) ? "HVM" : "PV", emflags); return -EOPNOTSUPP; } - d->arch.emulation_flags = config->emulation_flags; + d->arch.emulation_flags = emflags; } if ( has_hvm_container_domain(d) )