Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp1540053ybi; Wed, 3 Jul 2019 18:19:14 -0700 (PDT) X-Google-Smtp-Source: APXvYqyj+DDTlGQ0LJK365RwW/LdZBTP6gr3tQj2g+n0+whUfOgxxLgGYB/PG4UaD4P3y8v96daF X-Received: by 2002:a17:902:f095:: with SMTP id go21mr46779561plb.58.1562203154335; Wed, 03 Jul 2019 18:19:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562203154; cv=none; d=google.com; s=arc-20160816; b=JQeqWi4FPk+kXph+m5DmB7lnDpmbdTBsxWYhcu59dfdkHoom6Zm8qvtoAJ8+kC4d23 nzhADV+GlktXMpz0Brkd/m0/dmwa1Sgxw5dRhdeYU57E2xQ9fdQB/p5EGpz43bkj6nnK dNzVjufsY3067fYwKpbZDln6sejey2C7rMFGAvXhOVn7YRYfZIPrIdx34LnLLt4kXVHK lRui4SK6e02YxNh4rjWsOI2MpvhIz2F8l6JUcL2v8luQml5URzukbwW5Nt5RLYgvbSMZ cpASa6HynqfCgRsBrayb9k9zAKxbEWnLZksFZ95Q4NbcnuSnYzAeDCt3wwn91j/qMlWW kdFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=HhKAAWVPipFLRo00kLa1NJDWOLc4M9riT3RNfy4Uozs=; b=fGhTvDcALuA3+4xKV/2KFjXhjdvgiE6bkpQ0C890EZVlgwQuS+I60aYedVGvJHdJwG qkewwjRhjR+aDpfWrpAGc9iXAJ7JKF7HJtrz7B6V/mJTmjZq5EGYMzwatvRIdWnGNgn6 CsLZ3I2dyyT/pZtLOdPXQgCEaIq6mxWipjhGFml6XeE0FT3BdS28ZdfyQGPjP57+07nM f2mQcQMIdOE5Uz4/cwNb5WFLrekPfYzn/uB7TEjqmnXre8rk1CNVx/nO0rNmwmPFybAV splxFB8rAx0RwOcGtf0XDD9gt4vGGsB4cVJUML0vNUUjP1+6Z+XJ3kCs7h3oFct1vbeE niUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2018-07-02 header.b=wb7MTWSe; 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 k71si3418133pje.29.2019.07.03.18.18.58; Wed, 03 Jul 2019 18:19:14 -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-2018-07-02 header.b=wb7MTWSe; 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 S1727148AbfGDBQq (ORCPT + 99 others); Wed, 3 Jul 2019 21:16:46 -0400 Received: from aserp2120.oracle.com ([141.146.126.78]:35310 "EHLO aserp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726656AbfGDBQq (ORCPT ); Wed, 3 Jul 2019 21:16:46 -0400 Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x641Efot123673; Thu, 4 Jul 2019 01:16:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references; s=corp-2018-07-02; bh=HhKAAWVPipFLRo00kLa1NJDWOLc4M9riT3RNfy4Uozs=; b=wb7MTWSeBsklCUBYPP99Z2BcF022Vw3ID16E/qh0bdF7nB7k1tlNEWUtZO2/cS8lP0ZD yNCz1L07vjhGc0qoJRLasQyOaDbHgOCxOdEXyd54gcfMQIk7DUjJ3oOfVdOfV8Q8vQ5g i8oAQpk7tKiO5Ms8vco8jiuHzpem2VPS3mxsJ8bKszx6U4gRSOvfPaUZPpUoY5CD+HiG lWK79YzScafjJjT6ivE7ICnc8TpIky7TSX3WmnIewaloynLkKNq42lBpqed0havaSTxq fhQ8TDFt8aDTFi2RL3MIclgIj8jVEMcu8L4Bn73q+IsNVF5vPoKkE9TKh9lQsAxuvw0M GA== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by aserp2120.oracle.com with ESMTP id 2te5tbv6s2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 04 Jul 2019 01:16:08 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x641Cceh089845; Thu, 4 Jul 2019 01:16:07 GMT Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by aserp3020.oracle.com with ESMTP id 2tebkv5tdj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 04 Jul 2019 01:16:07 +0000 Received: from abhmp0004.oracle.com (abhmp0004.oracle.com [141.146.116.10]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id x641G7tj010700; Thu, 4 Jul 2019 01:16:07 GMT Received: from z2.cn.oracle.com (/10.182.69.87) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 03 Jul 2019 18:16:07 -0700 From: Zhenzhong Duan To: linux-kernel@vger.kernel.org Cc: xen-devel@lists.xenproject.org, boris.ostrovsky@oracle.com, jgross@suse.com, sstabellini@kernel.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, Zhenzhong Duan Subject: [PATCH v5 4/4] x86/xen: Add "nopv" support for HVM guest Date: Wed, 3 Jul 2019 09:19:38 +0800 Message-Id: <1562116778-5846-5-git-send-email-zhenzhong.duan@oracle.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1562116778-5846-1-git-send-email-zhenzhong.duan@oracle.com> References: <1562116778-5846-1-git-send-email-zhenzhong.duan@oracle.com> X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9307 signatures=668688 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=1 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-1810050000 definitions=main-1907040013 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9307 signatures=668688 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1907040014 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PVH guest needs PV extentions to work, so "nopv" parameter should be ignored for PVH but not for HVM guest. If PVH guest boots up via the Xen-PVH boot entry, xen_pvh is set early, we know it's PVH guest and ignore "nopv" parameter directly. If PVH guest boots up via the normal boot entry same as HVM guest, it's hard to distinguish PVH and HVM guest at that time. To handle that case, add a new function xen_hvm_nopv_guest_late_init() to detect PVH at a late time and panic itself if nopv enabled for a PVH guest. Signed-off-by: Zhenzhong Duan Cc: Boris Ostrovsky Cc: Juergen Gross Cc: Stefano Stabellini Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov --- arch/x86/xen/enlighten_hvm.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/arch/x86/xen/enlighten_hvm.c b/arch/x86/xen/enlighten_hvm.c index 1756cf7..09a010a 100644 --- a/arch/x86/xen/enlighten_hvm.c +++ b/arch/x86/xen/enlighten_hvm.c @@ -231,11 +231,37 @@ bool __init xen_hvm_need_lapic(void) return true; } +static __init void xen_hvm_nopv_guest_late_init(void) +{ +#ifdef CONFIG_XEN_PVH + if (x86_platform.legacy.rtc || !x86_platform.legacy.no_vga) + return; + + /* PVH detected. */ + xen_pvh = true; + + panic("\"nopv\" and \"xen_nopv\" parameters are unsupported in PVH guest."); +#endif +} + + static uint32_t __init xen_platform_hvm(void) { if (xen_pv_domain()) return 0; + if (xen_pvh_domain() && nopv) { + /* Guest booting via the Xen-PVH boot entry goes here */ + pr_info("\"nopv\" parameter is ignored in PVH guest\n"); + nopv = false; + } else if (nopv) { + /* + * Guest booting via normal boot entry (like via grub2) goes + * here. + */ + x86_init.hyper.guest_late_init = xen_hvm_nopv_guest_late_init; + return 0; + } return xen_cpuid_base(); } @@ -268,4 +294,5 @@ static __init void xen_hvm_guest_late_init(void) .init.init_mem_mapping = xen_hvm_init_mem_mapping, .init.guest_late_init = xen_hvm_guest_late_init, .runtime.pin_vcpu = xen_pin_vcpu, + .ignore_nopv = true, }; -- 1.8.3.1