Received: by 10.192.165.156 with SMTP id m28csp1459907imm; Mon, 16 Apr 2018 22:48:23 -0700 (PDT) X-Google-Smtp-Source: AIpwx49/mrum0bGFo17kNyzKICXoCZNMotNNLfEWLtyQiUSVM++JFK7gkYjGVS3ggQNxpCh7zkTI X-Received: by 10.99.1.133 with SMTP id 127mr713296pgb.24.1523944102938; Mon, 16 Apr 2018 22:48:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523944102; cv=none; d=google.com; s=arc-20160816; b=pm+QA9CJbYeqgcRJW0Kj3eqqJed69fsHwOVZZou2ZilUR0Csdg73TSRdRqjT6ZgK+d zAQKKq6w2y4jIkbhxSuYJE1zve6uARq8Qs1IQGXb8ByHZBbwvV3vTo1QRfJGVCWCCufI rabonoWJ+2UhNSM/1RESxdLfT6q6ItpUfLucBnVoXZK3k5G0uQoZBnAIoPpdnaum9tFw L1SQ3gFSnkq1WnKSn4clozPv8Sswl3UpMTaA+dwenrY5eCVLckQfc1d+HqGt57Y68d0G FHLgt6h+zQHyUBZLHE//pGPmRrqzzRDtYTtON+fQfW9uwDEmwsUKXg2D2nKNYBoZynay LN0g== 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:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=CbiZi++Mzmkg1+Bh3rcel2qg7KhKDOhhd3ZEzKooL1I=; b=rOyG7TsRjArU9UsDPvnrYJsS0nx4PBCWkh4imfuJou3+hbQ+Liu1lf2/+lKVO/191B NxZnhsCvwfhcmT3+3WZyrpUN4feXQ/svb3eFivsRv7on6b4oHpvSDCCqgcgiR9ei15Jy UcZDUEkIL71JA6ahZUgU88dLa0tusDwQGNoqLMFrw2nJnrXhsWIbrq9QHKyD2uC1zNlt OipCBHM36NCo5qgc7BaNSPT9h3aXrIzOpM5NZLVp5E0h0qbTsf5NLDyGK8mpLP6jNDZs ertZ2WVf91XT75o6TvQmkpOxYKxf5FCELwaSFppyniIbx7BoZRqHM6UfGs1VPEWescBS vmuA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=sUq4jHU9; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x24-v6si13969353pll.25.2018.04.16.22.48.09; Mon, 16 Apr 2018 22:48:22 -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=@gmail.com header.s=20161025 header.b=sUq4jHU9; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752027AbeDQFrE (ORCPT + 99 others); Tue, 17 Apr 2018 01:47:04 -0400 Received: from mail-pg0-f68.google.com ([74.125.83.68]:37997 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751238AbeDQFrA (ORCPT ); Tue, 17 Apr 2018 01:47:00 -0400 Received: by mail-pg0-f68.google.com with SMTP id b5so3812364pgv.5; Mon, 16 Apr 2018 22:47:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CbiZi++Mzmkg1+Bh3rcel2qg7KhKDOhhd3ZEzKooL1I=; b=sUq4jHU9A76cET9aRSvLZwVn7CvDGbpKhnRsbDvgpOt7/EtDguqCk4ZfaMiSmKb/fB UyW2HkVhLwKEqROcE+BGAW+7Uek4m4OirxQ5mi+JImNnIutM7ZL4Hstj+ln51NXRASC1 rrAZ6KC1rXib4sOblZiGLk572nEHZIIXwu4U5I6Qn6xzqwDWvWYoVexVBrficFmfJS6P oex9dizw1cOsi71s3fz6VCuB+txT+4GWgFLA6ywVWFmys53D0XMeZi/b8v/HLIVInS3N B6dhuIFi3fpf4tt3tMmqgFGhh2AqFW2Y5JEa0Hg+HqSNkkT/UKyAvpDfVNESGK53fK3T EBlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CbiZi++Mzmkg1+Bh3rcel2qg7KhKDOhhd3ZEzKooL1I=; b=c/TXDN7uTxVBpYkZm/pPJJgufRlf2iY3Y2r9qlAYo4xXGrkFN4LdI+UzG/LSbUlNeh eSg9N/dovixCeYG/m2nlgw5VaE9B+vaMROVk0jVi70tzs9VUcaankh0YVYF7f5e9D5E+ d7jfeZMBFmXeaoFEGTPrz7TEGLeXLOd1cCKuPI8OVQys6P5UtbUnScmB4EgdntIy1yt0 GX2TdWOv+OTMtiI5jiO+sKDmjHzf/LJ6MXP0BVh1hutrqqmLvUUhj7Ed2Sxj7Tu3KBmw SoAS20WloC3tbZJ7gj76lwSPEH9VCRsjhB1UCcQ2AgvSGgl2DYmDU5OutbwpfO9+AUZX vK7g== X-Gm-Message-State: ALQs6tBf4Duf07voHja+v/b6CmdWdqQyjpB6nk60jNe6S5RMZHZu2UzS WN5zE6xBL5thqZlrWlrdeNAy6w== X-Received: by 10.99.183.15 with SMTP id t15mr678003pgf.416.1523944019784; Mon, 16 Apr 2018 22:46:59 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.123]) by smtp.googlemail.com with ESMTPSA id p71sm31429205pfl.89.2018.04.16.22.46.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 16 Apr 2018 22:46:59 -0700 (PDT) From: Wanpeng Li X-Google-Original-From: Wanpeng Li To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Tim Shearer , Liran Alon Subject: [PATCH 3/3] KVM: VMX: Allow I/O port 0x80 bypass when userspace prefer Date: Mon, 16 Apr 2018 22:46:02 -0700 Message-Id: <1523943962-25415-4-git-send-email-wanpengli@tencent.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1523943962-25415-1-git-send-email-wanpengli@tencent.com> References: <1523943962-25415-1-git-send-email-wanpengli@tencent.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wanpeng Li Tim Shearer reported that "There is a guest which is running a packet forwarding app based on the DPDK (dpdk.org). The packet receive routine writes to 0xc070 using glibc's "outw_p" function which does an additional write to I/O port 80. It does this write for every packet that's received, causing a flood of KVM userspace context switches". He uses mpstat to observe a CPU performing L2 packet forwarding on a pinned guest vCPU, the guest time is 95 percent when allowing I/O port 0x80 bypass, however, it is 65.78 percent when I/O port 0x80 bypss is disabled. This patch allows I/O port 0x80 bypass when userspace prefer. Cc: Paolo Bonzini Cc: Radim Krčmář Cc: Tim Shearer Cc: Liran Alon Signed-off-by: Wanpeng Li --- arch/x86/kvm/vmx.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index ebf1140..d3e5fef 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -10118,6 +10118,13 @@ static int vmx_vm_init(struct kvm *kvm) goto out; memset(kvm_vmx->vmx_io_bitmap[i], 0xff, PAGE_SIZE); } + if (kvm->arch.ioport_disable_intercept) { + /* + * Allow direct access to the PC debug port (it is often used for I/O + * delays, but the vmexits simply slow things down). + */ + clear_bit(0x80, kvm_vmx->vmx_io_bitmap[VMX_IO_BITMAP_A]); + } return 0; out: -- 2.7.4