Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp3821392pxu; Mon, 12 Oct 2020 01:56:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxSpAlqahVwr5ZpYn6Vh+gaOn4PhO3skNK7hSnIpRZvIvz5iN25yst73mJTPJ58t3SStZO6 X-Received: by 2002:a50:e3c4:: with SMTP id c4mr13341227edm.90.1602493004857; Mon, 12 Oct 2020 01:56:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602493004; cv=none; d=google.com; s=arc-20160816; b=lrqhOcASV93dJ+EtdqF6o3WEpEo3gsUn7xwaMD2i2yYi8j/XS0Wty1Ks/f33VXB1xr TYIgS3DNyZT0oOaoc2V3dgDqXntre+Xskon1ciiYTAKjOi3v2UYeLJv9ya/VTZGKUnJ/ Hiu42mZ6a019jHGukJ1XnE70sWRVEGo1r3RxuK2hXHdg/v1j6/Hju5jzxVE5DOTYCDf4 UfzDyWrgaXyMW5SbLBfvZzn3+aVFyyD74tWG57PvkcM5hkLQpkQksROUmGRxKWqZzYPI HRujxPUIf3tBvPS6rwHuNHO0lm9Mu0dKOpueJGsLOLRXHvYahtdF5eWjCdDaDZxsSd89 u6Ig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:cc:to:subject:from:message-id; bh=BOnYNTx5PoTvxyUy6ffOfpTgBQHzA8vvSTiexgB2VQA=; b=RawhTuM/6fU5wRFzwz8L3E3e6K7jdNmXzVZUo9PdGF4NVK2D9j0g8IIpHLX6YoiCB/ iHtNLj6x75r7lwF3qgzUn3/hLHMMuXXub80WWr0fL+zXXoPMDPjIndlk7xE7fZTG8zk3 WhfOHuydo9mIrxZb8se2OTX/y+wQQDHYCLuWe21wQ4lmukg2RY4FrTHz8m4nhy+5Q3DY hOXfKnfoI5oV3Glx2ZPx1ZkM8UES8RgWg2FZ5GMd20JENpGEDau6hJZ4Av1VCWZBj8Dx W7hxvdqmcZ/J4CRunRT/WsTrYTMHVS25qC704R5VdMbZWP3OQRzwDWwwlVP7cWDKCqu6 NYHw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q16si2555046ejr.545.2020.10.12.01.56.20; Mon, 12 Oct 2020 01:56:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728489AbgJLIyh (ORCPT + 99 others); Mon, 12 Oct 2020 04:54:37 -0400 Received: from pegase1.c-s.fr ([93.17.236.30]:31489 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726104AbgJLIyg (ORCPT ); Mon, 12 Oct 2020 04:54:36 -0400 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 4C8stX0ccLz9tyQ8; Mon, 12 Oct 2020 10:54:28 +0200 (CEST) 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 Ialckm9zXcR1; Mon, 12 Oct 2020 10:54:28 +0200 (CEST) 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 4C8stW4QBYz9tyQ9; Mon, 12 Oct 2020 10:54:27 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 613FC8B783; Mon, 12 Oct 2020 10:54:32 +0200 (CEST) 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 p8ERK12fs8Fg; Mon, 12 Oct 2020 10:54:32 +0200 (CEST) Received: from po17688vm.idsi0.si.c-s.fr (po15451.idsi0.si.c-s.fr [172.25.230.100]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 0B03B8B788; Mon, 12 Oct 2020 10:54:32 +0200 (CEST) Received: by po17688vm.idsi0.si.c-s.fr (Postfix, from userid 0) id F278166441; Mon, 12 Oct 2020 08:54:31 +0000 (UTC) Message-Id: From: Christophe Leroy Subject: [PATCH v2 1/2] powerpc/8xx: Always fault when _PAGE_ACCESSED is not set To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Date: Mon, 12 Oct 2020 08:54:31 +0000 (UTC) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The kernel expects pte_young() to work regardless of CONFIG_SWAP. Make sure a minor fault is taken to set _PAGE_ACCESSED when it is not already set, regardless of the selection of CONFIG_SWAP. This adds at least 3 instructions to the TLB miss exception handlers fast path. Following patch will reduce this overhead. Also update the rotation instruction to the correct number of bits to reflect all changes done to _PAGE_ACCESSED over time. Fixes: d069cb4373fe ("powerpc/8xx: Don't touch ACCESSED when no SWAP.") Fixes: 5f356497c384 ("powerpc/8xx: remove unused _PAGE_WRITETHRU") Fixes: e0a8e0d90a9f ("powerpc/8xx: Handle PAGE_USER via APG bits") Fixes: 5b2753fc3e8a ("powerpc/8xx: Implementation of PAGE_EXEC") Fixes: a891c43b97d3 ("powerpc/8xx: Prepare handlers for _PAGE_HUGE for 512k pages.") Cc: stable@vger.kernel.org Signed-off-by: Christophe Leroy --- v2: Backporting to stable will have to be done manually. Squashed the first 3 patches in order to ease that backporting. --- arch/powerpc/kernel/head_8xx.S | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S index 9f359d3fba74..6f3799a04121 100644 --- a/arch/powerpc/kernel/head_8xx.S +++ b/arch/powerpc/kernel/head_8xx.S @@ -202,9 +202,7 @@ SystemCall: InstructionTLBMiss: mtspr SPRN_SPRG_SCRATCH0, r10 -#if defined(ITLB_MISS_KERNEL) || defined(CONFIG_SWAP) || defined(CONFIG_HUGETLBFS) mtspr SPRN_SPRG_SCRATCH1, r11 -#endif /* If we are faulting a kernel address, we have to use the * kernel page tables. @@ -238,11 +236,9 @@ InstructionTLBMiss: rlwimi r11, r10, 32 - 9, _PMD_PAGE_512K mtspr SPRN_MI_TWC, r11 #endif -#ifdef CONFIG_SWAP - rlwinm r11, r10, 32-5, _PAGE_PRESENT + rlwinm r11, r10, 32-7, _PAGE_PRESENT and r11, r11, r10 rlwimi r10, r11, 0, _PAGE_PRESENT -#endif /* The Linux PTE won't go exactly into the MMU TLB. * Software indicator bits 20 and 23 must be clear. * Software indicator bits 22, 24, 25, 26, and 27 must be @@ -256,9 +252,7 @@ InstructionTLBMiss: /* Restore registers */ 0: mfspr r10, SPRN_SPRG_SCRATCH0 -#if defined(ITLB_MISS_KERNEL) || defined(CONFIG_SWAP) || defined(CONFIG_HUGETLBFS) mfspr r11, SPRN_SPRG_SCRATCH1 -#endif rfi patch_site 0b, patch__itlbmiss_exit_1 @@ -268,9 +262,7 @@ InstructionTLBMiss: addi r10, r10, 1 stw r10, (itlb_miss_counter - PAGE_OFFSET)@l(0) mfspr r10, SPRN_SPRG_SCRATCH0 -#if defined(ITLB_MISS_KERNEL) || defined(CONFIG_SWAP) mfspr r11, SPRN_SPRG_SCRATCH1 -#endif rfi #endif @@ -316,11 +308,9 @@ DataStoreTLBMiss: * r11 = ((r10 & PRESENT) & ((r10 & ACCESSED) >> 5)); * r10 = (r10 & ~PRESENT) | r11; */ -#ifdef CONFIG_SWAP - rlwinm r11, r10, 32-5, _PAGE_PRESENT + rlwinm r11, r10, 32-7, _PAGE_PRESENT and r11, r11, r10 rlwimi r10, r11, 0, _PAGE_PRESENT -#endif /* The Linux PTE won't go exactly into the MMU TLB. * Software indicator bits 24, 25, 26, and 27 must be * set. All other Linux PTE bits control the behavior -- 2.25.0