Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp945893imm; Fri, 11 May 2018 08:43:44 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpj8nn2iRaCgE6ob8WfsHT4L70hd3xCCmjVKK76nPSqTv89+T88oaEWunQHtv8h54xanEbM X-Received: by 2002:a17:902:bb84:: with SMTP id m4-v6mr5930882pls.339.1526053424086; Fri, 11 May 2018 08:43:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526053424; cv=none; d=google.com; s=arc-20160816; b=JLNHNNvH5nZhExts8RFryEaXZPN9G17AeNLqXdXY3Lmsq1sO+Gj3Jt0DWhKBa3hiq+ f1zzR7c2Ob8UrZyAUgTc3DOa3uWn22NoPpFuxcvKq1VT/1/QhbPLiMwncNLJflz9Enwv BQK8wCjwSpvRGwGY4d0IPb0PsOZGYWSMKTFtTBp2XdD0lwFvbKxFStvmOIVUWiNWNX4a HU1h8TAtxLbItwspmGV+MzNphV2K2KVvMDBFnJACDcv1d36slqcM7PCcEc3aABYI/DAL /WZq+deEDqn69hGPNfWv8RhknNyfEthD1uUpheAiLf2HKekwnXeIxG5zx/IyjwhId2+D Vn2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:user-agent :in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:dkim-signature:arc-authentication-results; bh=1ISlBVsFX+3nyV0nKhcPMgoLGrDwxmr/+WSPlOOgMXI=; b=V5AWDpAe5RDurajvLktGr0LmfeJp8aWcLiDPDOHGL0GzJ/l+MY7t2R/+TG24WDG/df 2b6hm4qA99H94NLa8CRH60ObkO/qXY/+fW0MyXICHwOegooVjhCaddyqa7Ph/VTV7Id8 zJL5XLo7f/i33rInZ5uSiDRGIzTxeVCMOBLxTvXMaEiCsH4+D57rM416P0XiQc6/l4bY kWgN4+rHufsHqAAbpuv8BcPf5CPviOw7pZZwaM1gDsZ8Hi+7Zd01HLwWX1+t4BydedNp EcGM71RXXHIimMuqSrTydrLFJRGltVawxLLQrsHti8cmqvt/ZO1CjiAQkWq684raaVl5 ZmsQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2017-10-26 header.b=Q3EOpzW1; 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 bb5-v6si3247272plb.80.2018.05.11.08.43.29; Fri, 11 May 2018 08:43:44 -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=Q3EOpzW1; 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 S1751378AbeEKPnQ (ORCPT + 99 others); Fri, 11 May 2018 11:43:16 -0400 Received: from aserp2120.oracle.com ([141.146.126.78]:57822 "EHLO aserp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751159AbeEKPnO (ORCPT ); Fri, 11 May 2018 11:43:14 -0400 Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w4BFZkBH012261; Fri, 11 May 2018 15:42:49 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : references : mime-version : content-type : in-reply-to : content-transfer-encoding; s=corp-2017-10-26; bh=1ISlBVsFX+3nyV0nKhcPMgoLGrDwxmr/+WSPlOOgMXI=; b=Q3EOpzW1ftgAe42+aJeyR7mD3TxBoUIiZ8KKTXV/3/DkjXMfIraHT6H27U7yT++NM75s 0LapJqhUkro8u3alqMpvsHxREqA4GymlRqwo+qJko4jeKOzm6w8tQUQAubL+xCI6laCh ekb5JOgtvBFHK3r/Sdvhsm5FA6JTXFaJi9Rqchc+Cf0sXB3goZkHZc2dPzeFT1hCZH7d W9WsXNXC+umtq8owN0twVy5Hq5zKimWOG6F3ZaLYqc+uZL6G7oXiI6NIeFAQfeN3KYDP cUi/keHjpgvdjeSteW8W78keXR/w+Calf6hFKFvPNgzysxSlTFaqWHX3GHOjy7hwXRE9 xw== Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by aserp2120.oracle.com with ESMTP id 2hwd7dr7vr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 11 May 2018 15:42:49 +0000 Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserv0022.oracle.com (8.14.4/8.14.4) with ESMTP id w4BFgmJb000605 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 11 May 2018 15:42:49 GMT Received: from abhmp0002.oracle.com (abhmp0002.oracle.com [141.146.116.8]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id w4BFglRW001187; Fri, 11 May 2018 15:42:48 GMT Received: from char.us.oracle.com (/10.137.176.158) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 11 May 2018 08:42:47 -0700 Received: by char.us.oracle.com (Postfix, from userid 1000) id BED056A00C1; Fri, 11 May 2018 11:42:46 -0400 (EDT) Date: Fri, 11 May 2018 11:42:46 -0400 From: Konrad Rzeszutek Wilk To: Wanpeng Li Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini , Radim =?utf-8?B?S3LEjW3DocWZ?= , Tim Shearer , Liran Alon Subject: Re: [PATCH 2/3] KVM: X86: Allow userspace to disable ioport intercept Message-ID: <20180511154246.GH27459@char.us.oracle.com> References: <1523943962-25415-1-git-send-email-wanpengli@tencent.com> <1523943962-25415-3-git-send-email-wanpengli@tencent.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1523943962-25415-3-git-send-email-wanpengli@tencent.com> User-Agent: Mutt/1.8.3 (2017-05-23) Content-Transfer-Encoding: quoted-printable X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8890 signatures=668698 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=708 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1805110148 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Apr 16, 2018 at 10:46:01PM -0700, Wanpeng Li wrote: > From: Wanpeng Li >=20 > Allow to disable ioport intercept by userspace. >=20 > Cc: Paolo Bonzini > Cc: Radim Kr=C4=8Dm=C3=A1=C5=99 > Cc: Tim Shearer > Cc: Liran Alon > Signed-off-by: Wanpeng Li > --- > Documentation/virtual/kvm/api.txt | 11 +++++++++++ > arch/x86/include/asm/kvm_host.h | 2 ++ > arch/x86/kvm/x86.c | 5 +++++ > include/uapi/linux/kvm.h | 1 + > 4 files changed, 19 insertions(+) >=20 > diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/= kvm/api.txt > index 1c7958b..3d0488e 100644 > --- a/Documentation/virtual/kvm/api.txt > +++ b/Documentation/virtual/kvm/api.txt > @@ -4378,6 +4378,17 @@ all such vmexits. > =20 > Do not enable KVM_FEATURE_PV_UNHALT if you disable HLT exits. > =20 > +7.14 KVM_CAP_IOPORT_DISABLE_INTERCEPT > + > +Architectures: x86 > +Parameters: args[0] defines whether ioport intercept "defines whether ioport intercept" -> "defines whether to intercept the p= rovided ioport" > + > +When disable intercept (args[0] =3D=3D 1), some ioports which frequent= ly When args[0] =3D=3D 1 is one, that is disable intercept, some ioports.. > +access will not be intercepted. Why not proide args[1] which will have the ioport in questions? Or an arr= ay of them? > + > +When enable intercept (args[0] =3D=3D 0), behavior is as if this facil= ity > +is unsupported. > + > 8. Other capabilities. > ---------------------- > =20 > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm= _host.h > index c25775f..2f29f64 100644 > --- a/arch/x86/include/asm/kvm_host.h > +++ b/arch/x86/include/asm/kvm_host.h > @@ -808,6 +808,8 @@ struct kvm_arch { > bool hlt_in_guest; > bool pause_in_guest; > =20 > + bool ioport_disable_intercept; > + > unsigned long irq_sources_bitmap; > s64 kvmclock_offset; > raw_spinlock_t tsc_write_lock; > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 51ecd38..044e314 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -2881,6 +2881,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm,= long ext) > case KVM_CAP_SPLIT_IRQCHIP: > case KVM_CAP_IMMEDIATE_EXIT: > case KVM_CAP_GET_MSR_FEATURES: > + case KVM_CAP_IOPORT_DISABLE_INTERCEPT: > r =3D 1; > break; > case KVM_CAP_SYNC_REGS: > @@ -4250,6 +4251,10 @@ static int kvm_vm_ioctl_enable_cap(struct kvm *k= vm, > kvm->arch.pause_in_guest =3D true; > r =3D 0; > break; > + case KVM_CAP_IOPORT_DISABLE_INTERCEPT: > + kvm->arch.ioport_disable_intercept =3D cap->args[0]; > + r =3D 0; > + break; > default: > r =3D -EINVAL; > break; > diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h > index 1065006..92730d8 100644 > --- a/include/uapi/linux/kvm.h > +++ b/include/uapi/linux/kvm.h > @@ -941,6 +941,7 @@ struct kvm_ppc_resize_hpt { > #define KVM_CAP_S390_BPB 152 > #define KVM_CAP_GET_MSR_FEATURES 153 > #define KVM_CAP_HYPERV_EVENTFD 154 > +#define KVM_CAP_IOPORT_DISABLE_INTERCEPT 155 > =20 > #ifdef KVM_CAP_IRQ_ROUTING > =20 > --=20 > 2.7.4 >=20