Received: by 10.223.185.116 with SMTP id b49csp1049184wrg; Wed, 21 Feb 2018 11:11:09 -0800 (PST) X-Google-Smtp-Source: AH8x227jCjaf6N5fiL6zlChBvYwe6U47RHv9bpD3vcElcU9HRWEgUfupCjm3V+cynYGme3uhn26s X-Received: by 10.101.78.143 with SMTP id b15mr3541350pgs.229.1519240269527; Wed, 21 Feb 2018 11:11:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519240269; cv=none; d=google.com; s=arc-20160816; b=s7O+SO1YHELdtNo2N7g8h13xniZRSv3UvoyiqZFPzmIVxyJJBBcZmN0wA868BA16v0 fvZMGBwALx9wUwdIo+33JVm7EZxjbeCDAn7MKNoe+q9fT5OwBH1hpHkBFueNoGDk91t1 9UcddWn8XKnid5hYp6Ep6m5HlcDSNBPJ2KIYHbB5d/YPyhKlJqcaNxaDR5EgJaRw74TF rKF0yEG0dFjfWQoJ1xRfEahdaVNEW7tYnGhS/p/BRTcvvCnsRuU8pJJ5+lPQXhZ9ntXn ogW6mV1Tzms95MYrF89OLaOncBYxt3J5eP5n4HCx5nNTRc2NFuvcEd84F8V218+eqTd0 Xiaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=5c8lxyBDyMMkYXM1/1eGIhiUUTS4wDiDeYSDCF+dtiY=; b=lfXsyymCRVZQQZ6EMiCn1idwOX2qC+GCQ8EHjlc8epDYpRnJZ/wYyKm/K9jihD9G5Q uTHrpbegdpGQRhfjgmaDO9R7Odme3yV+oC1YnGJf2bipaFIm1CclTJEgSqb3ef5P4KYq 9fQ9u3hVh9lFHAxqsDOuS0iCVShbsmMwA5Uu+tTjM3GES0mKMGd+o51VsF1xaswG+fuv BrK7E/fzvbtUV/W+0DsHBndTbchwyaEHJ8+1yn2pAadH2xs1D7GAg4Hu0Q9YpdHaBLPF KbsVcyFw3gViqyOc69DR0urGfUpaq8+jaMFAZZsCohGcWiNLz7+U1SzsKZmMc9zUoAv9 ah9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amazon.de header.s=amazon201209 header.b=YJfqjgMV; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a10si152792pgq.154.2018.02.21.11.10.55; Wed, 21 Feb 2018 11:11:09 -0800 (PST) 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=@amazon.de header.s=amazon201209 header.b=YJfqjgMV; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933568AbeBURrl (ORCPT + 99 others); Wed, 21 Feb 2018 12:47:41 -0500 Received: from smtp-fw-33001.amazon.com ([207.171.190.10]:46048 "EHLO smtp-fw-33001.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932228AbeBURri (ORCPT ); Wed, 21 Feb 2018 12:47:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.de; i=@amazon.de; q=dns/txt; s=amazon201209; t=1519235258; x=1550771258; h=from:to:cc:subject:date:message-id; bh=5c8lxyBDyMMkYXM1/1eGIhiUUTS4wDiDeYSDCF+dtiY=; b=YJfqjgMVo2SkfYZ/cn7n1KN/WvaboV5cPH/O+ZVU+cG0s/uzs8h4u3DK 6ne0zVbHJgYvGOCRF9ZDmX175Oih/vh+mli1EPc8rxj5GSoLoxqJ/FVmT fjsWOhJUhaaisMujMHjKNoLsiVKRYE4Kx1+a1rsu0rTqgu1xkdvfd5eKz s=; X-IronPort-AV: E=Sophos;i="5.47,375,1515456000"; d="scan'208";a="720905212" Received: from sea3-co-svc-lb6-vlan2.sea.amazon.com (HELO email-inbound-relay-2a-53356bf6.us-west-2.amazon.com) ([10.47.22.34]) by smtp-border-fw-out-33001.sea14.amazon.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 21 Feb 2018 17:47:36 +0000 Received: from u54e1ad5160425a4b64ea.ant.amazon.com (pdx2-ws-svc-lb17-vlan3.amazon.com [10.247.140.70]) by email-inbound-relay-2a-53356bf6.us-west-2.amazon.com (8.14.7/8.14.7) with ESMTP id w1LHlVFt029313 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 21 Feb 2018 17:47:33 GMT Received: from u54e1ad5160425a4b64ea.ant.amazon.com (localhost [127.0.0.1]) by u54e1ad5160425a4b64ea.ant.amazon.com (8.15.2/8.15.2/Debian-3) with ESMTP id w1LHlUKc006648; Wed, 21 Feb 2018 18:47:30 +0100 Received: (from karahmed@localhost) by u54e1ad5160425a4b64ea.ant.amazon.com (8.15.2/8.15.2/Submit) id w1LHlTai006647; Wed, 21 Feb 2018 18:47:29 +0100 From: KarimAllah Ahmed To: x86@kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: hpa@zytor.com, jmattson@google.com, mingo@redhat.com, pbonzini@redhat.com, rkrcmar@redhat.com, tglx@linutronix.de, KarimAllah Ahmed Subject: [PATCH 00/10] KVM/X86: Handle guest memory that does not have a struct page Date: Wed, 21 Feb 2018 18:47:11 +0100 Message-Id: <1519235241-6500-1-git-send-email-karahmed@amazon.de> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org For the most part, KVM can handle guest memory that does not have a struct page (i.e. not directly managed by the kernel). However, There are a few places in the code, specially in the nested code, that does not support that. Patch 1, 2, and 3 avoid the mapping and unmapping all together and just directly use kvm_guest_read and kvm_guest_write. Patch 4 introduces a new guest mapping interface that encapsulate all the bioler plate code that is needed to map and unmap guest memory. It also supports guest memory without "struct page". Patch 5, 6, 7, 8, 9, and 10 switch most of the offending code in VMX and hyperv to use the new guest mapping API. This patch series is the first set of fixes. Handling SVM and APIC-access page will be handled in a different patch series. KarimAllah Ahmed (10): X86/nVMX: handle_vmon: Read 4 bytes from guest memory instead of map->read->unmap sequence X86/nVMX: handle_vmptrld: Copy the VMCS12 directly from guest memory instead of map->copy->unmap sequence. X86/nVMX: Update the PML table without mapping and unmapping the page KVM: Introduce a new guest mapping API KVM/nVMX: Use kvm_vcpu_map when mapping the L1 MSR bitmap KVM/nVMX: Use kvm_vcpu_map when mapping the virtual APIC page KVM/nVMX: Use kvm_vcpu_map when mapping the posted interrupt descriptor table KVM/X86: Use kvm_vcpu_map in emulator_cmpxchg_emulated KVM/X86: hyperv: Use kvm_vcpu_map in synic_clear_sint_msg_pending KVM/X86: hyperv: Use kvm_vcpu_map in synic_deliver_msg arch/x86/kvm/hyperv.c | 28 ++++----- arch/x86/kvm/vmx.c | 144 +++++++++++++++-------------------------------- arch/x86/kvm/x86.c | 13 ++--- include/linux/kvm_host.h | 15 +++++ virt/kvm/kvm_main.c | 50 ++++++++++++++++ 5 files changed, 129 insertions(+), 121 deletions(-) -- 2.7.4