Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp1151659ybv; Wed, 5 Feb 2020 22:19:14 -0800 (PST) X-Google-Smtp-Source: APXvYqweVrh27rGCHe9f/KQMce18vyQwbx6dFAj4pEPRpT5Drh/bPIQBFAOtaoS33HHZ3e/s2SeV X-Received: by 2002:a05:6830:1d55:: with SMTP id p21mr29146586oth.145.1580969954070; Wed, 05 Feb 2020 22:19:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580969954; cv=none; d=google.com; s=arc-20160816; b=OyHwNyTGF5iacmVZ1Vc1zf0hs8yP9vVAyYdOSGzwGu2IIjuqHOIRGunrkqYc1UO8uW Tq5KnJDNwCRHMIWLtQp3APbfEeEa02mN4W/7BDtrz9ES/Cu2Lj9rp3fHXY0IBBO5rC0F PUWE55DGsXnFWBH8WV5FBiW21/8JOhIxkwoxRSs08RP1XsrkGxbfmIJuGZbLUBCHlcwS USZACMmkWKJAV5tf/ZE89BY+x4h3y8WrPIQi2j20S+k5RGLjGwF4FIHVX9gJ9CXKdHc1 qbB+qLsgQ5N4NKx+ADCydWGLXwWDm2UM2QgwrjNznJP/rfK5SOKmxXNGnp9hGBLDaanZ tYWA== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature; bh=/zXspG1kSDBchHeXMPNEW4CMohV4cfmd+YhDCREVeRU=; b=kIehmvc9tR74atjvQNn8SWWRff/epa4gpHLIT6llOU/CZhmBlcP4w8EYPLfXPGeQE4 +pi5Ve6c/Fqo3s3jj7Fpw3LRXmADUDx3UXVENfaeFm54UyhQq2I1synTCRoEnEFnCfvu Fkon9dHbHIOFsxffdY/qrdgAqf1zEBDGVUB3LqtLmExu1tJxDPm75U06G0EW2TOya4D6 +p8o/zD+6YLct9a42FdJTXGoBd28SmSRqolSG2gJIq2SNHPWztwLJ3zwGA/5OP0vSpJo eE1OQtOiojLHrrwMRbdoNhbmcz52IKeo2XOOkuJxjEJ/cTubObUQXCuwHDpXUJZrtD5n vFlw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@c-s.fr header.s=mail header.b=IJc3jder; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a194si1641485oib.227.2020.02.05.22.19.00; Wed, 05 Feb 2020 22:19:14 -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=@c-s.fr header.s=mail header.b=IJc3jder; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727779AbgBFGSI (ORCPT + 99 others); Thu, 6 Feb 2020 01:18:08 -0500 Received: from pegase1.c-s.fr ([93.17.236.30]:19642 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725809AbgBFGSI (ORCPT ); Thu, 6 Feb 2020 01:18:08 -0500 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 48CpC01NgvzB09bJ; Thu, 6 Feb 2020 07:18:04 +0100 (CET) Authentication-Results: localhost; dkim=pass reason="1024-bit key; insecure key" header.d=c-s.fr header.i=@c-s.fr header.b=IJc3jder; dkim-adsp=pass; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id Ff_laLB1i3Yt; Thu, 6 Feb 2020 07:18:04 +0100 (CET) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 48CpC008FQzB09bG; Thu, 6 Feb 2020 07:18:04 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=c-s.fr; s=mail; t=1580969884; bh=/zXspG1kSDBchHeXMPNEW4CMohV4cfmd+YhDCREVeRU=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=IJc3jderGna62CaEbuKOvFjwfgtAoqVWDE/KIjuvt5lVBel/amt4R+kH9JR8F0zKw WAex/t5oBpzyaF9Z2SiGAv2B3XAU6NFAGf9SqVrv+8Utda7pe6bWVzA08BRFijg6AW z6fcy7RHCPd0QkreMH9zr+46SWRtxYBXVtnBy+Ug= Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id CCBF78B85E; Thu, 6 Feb 2020 07:18:04 +0100 (CET) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id JUidJKGusZ7Y; Thu, 6 Feb 2020 07:18:04 +0100 (CET) Received: from [192.168.4.90] (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 289C18B776; Thu, 6 Feb 2020 07:18:03 +0100 (CET) Subject: Re: [PATCH v6 07/11] powerpc/kvm/e500: Use functions to track lockless pgtbl walks To: Leonardo Bras , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Arnd Bergmann , Andrew Morton , "Aneesh Kumar K.V" , Nicholas Piggin , Steven Price , Robin Murphy , Mahesh Salgaonkar , Balbir Singh , Reza Arbab , Thomas Gleixner , Allison Randal , Greg Kroah-Hartman , Mike Rapoport , Michal Suchanek Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, kvm-ppc@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org References: <20200206030900.147032-1-leonardo@linux.ibm.com> <20200206030900.147032-8-leonardo@linux.ibm.com> From: Christophe Leroy Message-ID: Date: Thu, 6 Feb 2020 07:18:02 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.4.2 MIME-Version: 1.0 In-Reply-To: <20200206030900.147032-8-leonardo@linux.ibm.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: fr Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le 06/02/2020 à 04:08, Leonardo Bras a écrit : > Applies the new functions used for tracking lockless pgtable walks on > kvmppc_e500_shadow_map(). > > Fixes the place where local_irq_restore() is called: previously, if ptep > was NULL, local_irq_restore() would never be called. > > local_irq_{save,restore} is already inside {begin,end}_lockless_pgtbl_walk, > so there is no need to repeat it here. > > Variable that saves the irq mask was renamed from flags to irq_mask so it > doesn't lose meaning now it's not directly passed to local_irq_* functions. > > Signed-off-by: Leonardo Bras > --- > arch/powerpc/kvm/e500_mmu_host.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/arch/powerpc/kvm/e500_mmu_host.c b/arch/powerpc/kvm/e500_mmu_host.c > index 425d13806645..3dcf11f77256 100644 > --- a/arch/powerpc/kvm/e500_mmu_host.c > +++ b/arch/powerpc/kvm/e500_mmu_host.c > @@ -336,7 +336,7 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500, > pte_t *ptep; > unsigned int wimg = 0; > pgd_t *pgdir; > - unsigned long flags; > + unsigned long irq_mask; > > /* used to check for invalidations in progress */ > mmu_seq = kvm->mmu_notifier_seq; > @@ -473,7 +473,7 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500, > * We are holding kvm->mmu_lock so a notifier invalidate > * can't run hence pfn won't change. > */ > - local_irq_save(flags); > + irq_mask = begin_lockless_pgtbl_walk(); > ptep = find_linux_pte(pgdir, hva, NULL, NULL); > if (ptep) { > pte_t pte = READ_ONCE(*ptep); > @@ -481,15 +481,16 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500, > if (pte_present(pte)) { > wimg = (pte_val(pte) >> PTE_WIMGE_SHIFT) & > MAS2_WIMGE_MASK; > - local_irq_restore(flags); > } else { > - local_irq_restore(flags); > + end_lockless_pgtbl_walk(irq_mask); > pr_err_ratelimited("%s: pte not present: gfn %lx,pfn %lx\n", > __func__, (long)gfn, pfn); > ret = -EINVAL; > goto out; > } > } > + end_lockless_pgtbl_walk(irq_mask); > + I don't really like unbalanced begin/end. Something like the following would be cleaner: begin_lockless_pgtbl_walk() ptep = find() if (ptep) { pte = READ_ONCE() if (pte_present(pte)) wing= else ret = -EINVAL; } end_lockless_pgtbl_walk() if (ret) { pr_err_rate...() goto out; } > kvmppc_e500_ref_setup(ref, gtlbe, pfn, wimg); > > kvmppc_e500_setup_stlbe(&vcpu_e500->vcpu, gtlbe, tsize, > Christophe