From patchwork Thu Dec 22 04:29:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Junaid Shahid X-Patchwork-Id: 9484241 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id AB45E601E4 for ; Thu, 22 Dec 2016 04:29:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9B5862816B for ; Thu, 22 Dec 2016 04:29:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 902DB283FC; Thu, 22 Dec 2016 04:29:49 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 38DA12816B for ; Thu, 22 Dec 2016 04:29:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758087AbcLVE3k (ORCPT ); Wed, 21 Dec 2016 23:29:40 -0500 Received: from mail-pg0-f45.google.com ([74.125.83.45]:34684 "EHLO mail-pg0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755545AbcLVE3h (ORCPT ); Wed, 21 Dec 2016 23:29:37 -0500 Received: by mail-pg0-f45.google.com with SMTP id y62so40858771pgy.1 for ; Wed, 21 Dec 2016 20:29:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Mvinh7zAJCsEyLXLxcJKRq07GZ4q0elj76/HbP53hm4=; b=Uy1luKjgSW4FLKZReAkqjSsvuGGcu0N33lXLJ9S4k64WvL1PxQ/R+ZuQ0lYxJbs/8y 7vXZr/EpgoqmP2qgnt/Vpc0tguu0jS7/boLLs34+h9csKuqIEvNWCauvgdr62Gxvib5G aqFNvRnfYumT30SKwOzAvPEx54pTPfV6PC6drAndTlLsnmVfkvMg3w4xQJMLpPlXp9sv VWI/VOHi9c498Xak9IlvU0HA8EKCddoAOF0Gr4XMSm1voX+j2RDM1fTJD7wnzxuy4/2m 3o3YAwLoip4Q1NG33XUtk4lyR91E4SYhPXfMVj09QrmMd3v9jcTatJMbUscVPPjKdTye IeJw== 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; bh=Mvinh7zAJCsEyLXLxcJKRq07GZ4q0elj76/HbP53hm4=; b=BKXvnO97F7A0026xB2EN8Iu3lHP68t2nLx5CGFtmWJqbrTiuUtWCBdEF8VNm6M5p0d aLR0eMLspvR6u75T5UJr9KpR1jQVqiTTWG+F9BtD6+8LYiGVtUfPub1s4Oo8JdrDf73A txmulhPmt8CcAHrnq9dx6CwY65WNyvKH55kY1TAchoqYhnX1BfjRFLIKw5wabZwpVecA pYsWmCTUJGuqs9QXUEH50Dk9vaHS7u/9rVVW72tPl1MzHTFAVRsSL2bi02VMIPbtdbWQ E/HEH9IUCveu305eyxFdAWGnkl9kp+Cq2qynxH5cJ6CUdGNUj1te9p7NpPPbKofZ4hIM 8X1Q== X-Gm-Message-State: AIkVDXIU0ICZrymoD4U+MIgoX8lpPkCjwFjQk3U45YLB0idqwViCFIwW2qyjnl9sNQ7z2t6Y X-Received: by 10.99.234.21 with SMTP id c21mr13916126pgi.166.1482380976463; Wed, 21 Dec 2016 20:29:36 -0800 (PST) Received: from js-desktop.mtv.corp.google.com ([172.17.128.41]) by smtp.gmail.com with ESMTPSA id c128sm50316655pfc.39.2016.12.21.20.29.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 21 Dec 2016 20:29:36 -0800 (PST) From: Junaid Shahid To: kvm@vger.kernel.org Cc: andreslc@google.com, pfeiner@google.com, pbonzini@redhat.com, guangrong.xiao@linux.intel.com Subject: [PATCH 3/5] kvm: x86: mmu: Move pgtbl walk inside retry loop in fast_page_fault Date: Wed, 21 Dec 2016 20:29:30 -0800 Message-Id: <1482380972-25573-4-git-send-email-junaids@google.com> X-Mailer: git-send-email 2.8.0.rc3.226.g39d4020 In-Reply-To: <1482380972-25573-1-git-send-email-junaids@google.com> References: <1482380972-25573-1-git-send-email-junaids@google.com> Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Redo the page table walk in fast_page_fault when retrying so that we are working on the latest PTE even if the hierarchy changes. Signed-off-by: Junaid Shahid --- arch/x86/kvm/mmu.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index 8707084..76cc911 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -3087,14 +3087,16 @@ static bool fast_page_fault(struct kvm_vcpu *vcpu, gva_t gva, int level, return false; walk_shadow_page_lockless_begin(vcpu); - for_each_shadow_entry_lockless(vcpu, gva, iterator, spte) - if (!is_shadow_present_pte(spte) || iterator.level < level) - break; do { bool remove_write_prot = false; bool remove_acc_track; + for_each_shadow_entry_lockless(vcpu, gva, iterator, spte) + if (!is_shadow_present_pte(spte) || + iterator.level < level) + break; + sp = page_header(__pa(iterator.sptep)); if (!is_last_spte(spte, sp->role.level)) break; @@ -3175,8 +3177,6 @@ static bool fast_page_fault(struct kvm_vcpu *vcpu, gva_t gva, int level, break; } - spte = mmu_spte_get_lockless(iterator.sptep); - } while (true); trace_fast_page_fault(vcpu, gva, error_code, iterator.sptep,