Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp2474535imm; Wed, 16 May 2018 13:30:25 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqQ4KURB8Fc6ovnxrmuGrLr07WlEc1p5ugYWQCh7015kkfR0a0RPDO0q8qjCqMYcA6AN2vn X-Received: by 2002:a63:90c4:: with SMTP id a187-v6mr1858976pge.189.1526502625906; Wed, 16 May 2018 13:30:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526502625; cv=none; d=google.com; s=arc-20160816; b=G7/tgWyeGnE0UmHu94QxBIfMUt3rnbiRQjBXdV0a7GUloCJz+eursSpaYM7g7fQT2n vrx4SV1EDXtJAUibLifZzSACCifLPColQOnX6lRusCNQz1tQj88GtbEsnKu5lLx7Qf7a URHmxbKtRQYneB8x5ZegCRlOivve+bnI9aaIiTzDWNYhm1C4wBilIZBTHodHtb3ZJpdp enU4vS0ouZMtd+DGdQepwchtOFbFeQooLha6G8sCmTvZiVgwIjA+WJE0/F4vHDPb7HPV g1UQrEUgGXQfA4UMTazxcFbxEq2PrnO2iG0iQYwRNZ9aTnKJdFLqZ/V/JzZbyLp0cbT6 627Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:organization:from:references:cc:to:subject :dkim-signature:arc-authentication-results; bh=YF/+HDG7lT5pSRYUOIC0I0QHbTU3u9b31tH0WZ4g3+c=; b=owSr+mrih7KVEf3uSsV4PJo8mDvKewPBNXRf15aV9KH4JOxXM4pOM6NG/j7YmMOEeO XksEEIRD2ykHgYgnK3E7KTnH+79uKop1unQqoGZYM00XSb1+GJDSQLDkAod5wALOV7Ry /iGof0qW/LVEbJlF3jzgMzRdoFxLV3p8XQoQHbGtMuuq5ylUmkq/1b9+eXn/Byswoh52 C9oEY0nDVaPVbdkX3ORyF+w4FUM9r7VT3Gp67X5QEMmdY49dorGuwGov0Adyxa/HdQ3b FHehxHafru0v6Nk24T04i5ToHYlH+bOQ6kh/AzO/ItV4skoYAjS0Mv3RQDqk624Vy0/1 bsrA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2017-10-26 header.b=VofrIZ4h; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id ay12-v6si3283859plb.139.2018.05.16.13.30.11; Wed, 16 May 2018 13:30:25 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2017-10-26 header.b=VofrIZ4h; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751467AbeEPU2e (ORCPT + 99 others); Wed, 16 May 2018 16:28:34 -0400 Received: from userp2130.oracle.com ([156.151.31.86]:44968 "EHLO userp2130.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750924AbeEPU2c (ORCPT ); Wed, 16 May 2018 16:28:32 -0400 Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w4GKQB2T072316; Wed, 16 May 2018 20:27:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : to : cc : references : from : message-id : date : mime-version : in-reply-to : content-type : content-transfer-encoding; s=corp-2017-10-26; bh=YF/+HDG7lT5pSRYUOIC0I0QHbTU3u9b31tH0WZ4g3+c=; b=VofrIZ4hqN9phugdAGhWZ2wpXO4pLjaVDBJFIEPdAjDgsNPjF+wpAdAyjz1tN6VSbshk 43W2pqgWuPAumkNdHuemFlPAVKtsQDvJNNud0jnNi2RWFRjfIJecb2YJa/QX/TZsK+h/ B/CFupxhykQaTxv22A67QLjKyEF8Y79MNnro44sD45RTC7GqCHwlFkowA+03NVSLiag4 m/mm33S7S2KJOr/qf19mExJdlbnmckVqD7ig4RufFp/yjWLhST6mLhCIPpeKu8sy3GEw XA6OUaD8tCnxKAp3o0+VYnYFfkSwaGVgcvaTtWQCod76BlWtSxI7a9L7b6080pFJTUaQ 8g== Received: from aserv0021.oracle.com (aserv0021.oracle.com [141.146.126.233]) by userp2130.oracle.com with ESMTP id 2hx29wem30-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 16 May 2018 20:27:29 +0000 Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by aserv0021.oracle.com (8.14.4/8.14.4) with ESMTP id w4GKRRPe016462 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 16 May 2018 20:27:27 GMT Received: from abhmp0004.oracle.com (abhmp0004.oracle.com [141.146.116.10]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id w4GKROUO029038; Wed, 16 May 2018 20:27:24 GMT Received: from [10.141.199.39] (/10.141.199.39) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 16 May 2018 13:27:23 -0700 Subject: Re: [PATCH v7 0/7] KVM: x86: Allow Qemu/KVM to use PVH entry point To: x86@kernel.org, xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, pbonzini@redhat.com, jgross@suse.com, hpa@zytor.com, mingo@redhat.com, tglx@linutronix.de Cc: boris.ostrovsky@oracle.com, bp@suse.de, dave.hansen@linux.intel.com, davem@davemloft.net, gregkh@linuxfoundation.org, jpoimboe@redhat.com, kirill.shutemov@linux.intel.com, luto@kernel.org, mchehab@kernel.org, rdunlap@infradead.org, thomas.lendacky@amd.com, hch@infradead.org, roger.pau@citrix.com, rkrcmar@redhat.com References: <1523920175-27287-1-git-send-email-maran.wilson@oracle.com> From: Maran Wilson Organization: Oracle Corporation Message-ID: <505290b7-416f-cc97-35ff-e416ceb532c2@oracle.com> Date: Wed, 16 May 2018 13:27:20 -0700 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <1523920175-27287-1-git-send-email-maran.wilson@oracle.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8895 signatures=668698 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=7 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1805160201 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Friendly ping. I am hopeful one of the x86 and/or KVM maintainers has a few cycles to spare to look this over. And thanks to everyone who has helped thus far by providing valuable feedback and reviewing.    https://lkml.org/lkml/2018/4/16/1002 Thanks, -Maran On 4/16/2018 4:09 PM, Maran Wilson wrote: > For certain applications it is desirable to rapidly boot a KVM virtual > machine. In cases where legacy hardware and software support within the > guest is not needed, Qemu should be able to boot directly into the > uncompressed Linux kernel binary without the need to run firmware. > > There already exists an ABI to allow this for Xen PVH guests and the ABI > is supported by Linux and FreeBSD: > > https://xenbits.xen.org/docs/unstable/misc/pvh.html > > This patch series would enable Qemu to use that same entry point for > booting KVM guests. > > Changes from v6: > > * Addressed issues caught by the kbuild test robot: > - Restored an #include line that had been dropped by mistake (patch 4) > - Removed a pair of #include lines that were no longer needed in a > common code file and causing problems for certain 32-bit configs > (patchs 4 and 7) > > Changes from v5: > > * The interface changes to the x86/HVM start info layout have > now been accepted into the Xen tree. > * Rebase and merge upstream PVH file changes. > * (Patch 6) Synced up to the final version of the header file that was > acked and pulled into the Xen tree. > * (Patch 1) Fixed typo and removed redundant "def_bool n" line. > > Changes from v4: > > Note: I've withheld Juergen's earlier "Reviewed-by" tags from patches > 1 and 7 since there were minor changes (mostly just addition of > CONFIG_KVM_GUEST_PVH as requested) that came afterwards. > > * Changed subject prefix from RFC to PATCH > * Added CONFIG_KVM_GUEST_PVH as suggested > * Relocated the PVH common files to > arch/x86/platform/pvh/{enlighten.c,head.S} > * Realized I also needed to move the objtool override for those files > * Updated a few code comments per reviewer feedback > * Sent out a patch of the hvm_start_info struct changes against the Xen > tree since that is the canonical copy of the header. Discussions on > that thread have resulted in some (non-functional) updates to > start_info.h (patch 6/7) and those changes are reflected here as well > in order to keep the files in sync. The header file has since been > ack'ed for the Xen tree by Jan Beulich. > > Changes from v3: > > * Implemented Juergen's suggestion for refactoring and moving the PVH > code so that CONFIG_XEN is no longer required for booting KVM guests > via the PVH entry point. > Functionally, nothing has changed from V3 really, but the patches > look completely different now because of all the code movement and > refactoring. Some of these patches can be combined, but I've left > them very small in some cases to make the refactoring and code > movement easier to review. > My approach for refactoring has been to create a PVH entry layer that > still has understanding and knowledge about Xen vs non-Xen guest types > so that it can make run time decisions to handle either case, as > opposed to going all the way and re-writing it to be a completely > hypervisor agnostic and architecturally pure layer that is separate > from guest type details. The latter seemed a bit overkill in this > situation. And I've handled the complexity of having to support > Qemu/KVM boot of kernels compiled with or without CONFIG_XEN via a > pair of xen specific __weak routines that can be overridden in kernels > that support Xen guests. Importantly, the __weak routines are for > xen specific code only (not generic "guest type" specific code) so > there is no clashing between xen version of the strong routine and, > say, a KVM version of the same routine. But I'm sure there are many > ways to skin this cat, so I'm open to alternate suggestions if there > is a compelling reason for not using __weak in this situation. > > Changes from v2: > > * All structures (including memory map table entries) are padded and > aligned to an 8 byte boundary. > > * Removed the "packed" attributes and made changes to comments as > suggested by Jan. > > Changes from v1: > > * Adopted Paolo's suggestion for defining a v2 PVH ABI that includes the > e820 map instead of using the second module entry to pass the table. > > * Cleaned things up a bit to reduce the number of xen vs non-xen special > cases. > > > Maran Wilson (7): > xen/pvh: Split CONFIG_XEN_PVH into CONFIG_PVH and CONFIG_XEN_PVH > xen/pvh: Move PVH entry code out of Xen specific tree > xen/pvh: Create a new file for Xen specific PVH code > xen/pvh: Move Xen specific PVH VM initialization out of common file > xen/pvh: Move Xen code for getting mem map via hcall out of common > file > xen/pvh: Add memory map pointer to hvm_start_info struct > KVM: x86: Allow Qemu/KVM to use PVH entry point > > MAINTAINERS | 1 + > arch/x86/Kbuild | 2 + > arch/x86/Kconfig | 14 +++ > arch/x86/kernel/head_64.S | 2 +- > arch/x86/platform/pvh/Makefile | 5 + > arch/x86/platform/pvh/enlighten.c | 136 ++++++++++++++++++++++++ > arch/x86/{xen/xen-pvh.S => platform/pvh/head.S} | 0 > arch/x86/xen/Kconfig | 3 +- > arch/x86/xen/Makefile | 2 - > arch/x86/xen/enlighten_pvh.c | 93 +++------------- > include/xen/interface/hvm/start_info.h | 63 ++++++++++- > 11 files changed, 240 insertions(+), 81 deletions(-) > create mode 100644 arch/x86/platform/pvh/Makefile > create mode 100644 arch/x86/platform/pvh/enlighten.c > rename arch/x86/{xen/xen-pvh.S => platform/pvh/head.S} (100%) >