From patchwork Mon Oct 24 09:47:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tong Tiangen X-Patchwork-Id: 8286 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp351991wru; Mon, 24 Oct 2022 02:51:11 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5SZ2Mu1NerQ85yf20/PAkQK8M8RiIuIblnN6Qynkf09rC3dYpD5ej4lp+tA/0GK6lPGupn X-Received: by 2002:a63:90c8:0:b0:46e:cd36:adb3 with SMTP id a191-20020a6390c8000000b0046ecd36adb3mr11458859pge.487.1666605071476; Mon, 24 Oct 2022 02:51:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666605071; cv=none; d=google.com; s=arc-20160816; b=DH5du4pMpZpssa9WCoblw3L8eoru6WnajApnAmgtFMPf2PJGpVd86gj+4rrLJ6lDmn cXC14chEg99WNFEt2kUDrwXIYW/nD+cWBpxsXTuA5Lr1BfPA7h1E8mP0mCdjKN6VCrLE 9cdvek6rpz2SO3o9pZNt2Uz3Ru95sf56s8FtecZPpLkf+EMGfEggWGyl1kkX64482cZn tviioDErsdTCwqSLf4Gj8TlTv3YrNXYEkQ2ngY1OET+LovlIRuJhiLGQP5L5JrzQoRbq uUCAVqqc0j4wWnDbEg7+Ha2kRapFcd0fFWhQb53u0sZrXaPvAQ3XLoCZQRkahL9b8Plr /eKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=WxlvJtokl8CIIx1nHH00BhDjUl5xmlqOmMKx2xT/NS8=; b=V+v4Ohsk8J3rruTiJ9+qUSLgnAX/3T3WYaL0ZVgrhTzPLON/evVR+E22PCrXVZeNJq rvNRSlGNHmuaGEKobaBU+0//olRlGPXSd4MWtqBk4v1Mr7Tl2Dwf0xTZQ/kPWL8+UrS/ mNGqjyLEvCOIviIhBaRs+CaPx7sSIrl/g7L033nwBRuq/V5l/kzgrAxRxYKQukzxXERT JzWiPnji3YN5B9Zbz5RjVSwYHKyImw5zMORLxnCcP7N5KUV3mqxdkqauuuTsiyTLItwj OcbaPFujmzrq6qop4nL98dK1PuAH9RQ/nvCMSwaWqMn8m9uWNNFcChHFImzBp4eg/bEp sqXQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k62-20020a17090a4cc400b00212d5631badsi7848106pjh.55.2022.10.24.02.50.56; Mon, 24 Oct 2022 02:51:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229910AbiJXJVz (ORCPT + 99 others); Mon, 24 Oct 2022 05:21:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51134 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229786AbiJXJVr (ORCPT ); Mon, 24 Oct 2022 05:21:47 -0400 Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1BE5558EBF for ; Mon, 24 Oct 2022 02:21:45 -0700 (PDT) Received: from dggemv711-chm.china.huawei.com (unknown [172.30.72.56]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4MwqJM5NTWzJn9s; Mon, 24 Oct 2022 17:18:59 +0800 (CST) Received: from kwepemm600017.china.huawei.com (7.193.23.234) by dggemv711-chm.china.huawei.com (10.1.198.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Mon, 24 Oct 2022 17:21:44 +0800 Received: from localhost.localdomain (10.175.112.125) by kwepemm600017.china.huawei.com (7.193.23.234) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Mon, 24 Oct 2022 17:21:43 +0800 From: Tong Tiangen To: Paul Walmsley , Palmer Dabbelt , Albert Ou CC: , , "Tong Tiangen" , , Guohanjun Subject: [PATCH -next 1/2] riscv/mm: hugepage's PG_dcache_clean flag is only set in head page Date: Mon, 24 Oct 2022 09:47:24 +0000 Message-ID: <20221024094725.3054311-2-tongtiangen@huawei.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221024094725.3054311-1-tongtiangen@huawei.com> References: <20221024094725.3054311-1-tongtiangen@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.112.125] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemm600017.china.huawei.com (7.193.23.234) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1747562079638592045?= X-GMAIL-MSGID: =?utf-8?q?1747562079638592045?= HugeTLB pages are always fully mapped, so only setting head page's PG_dcache_clean flag is enough. This refers to the following link: https://lore.kernel.org/lkml/20220331065640.5777-2-songmuchun@bytedance.com/ Signed-off-by: Tong Tiangen --- arch/riscv/include/asm/cacheflush.h | 7 +++++++ arch/riscv/mm/cacheflush.c | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/arch/riscv/include/asm/cacheflush.h b/arch/riscv/include/asm/cacheflush.h index 8a5c246b0a21..c172d05de474 100644 --- a/arch/riscv/include/asm/cacheflush.h +++ b/arch/riscv/include/asm/cacheflush.h @@ -17,6 +17,13 @@ static inline void local_flush_icache_all(void) static inline void flush_dcache_page(struct page *page) { + /* + * HugeTLB pages are always fully mapped and only head page will be + * set PG_dcache_clean (see comments in flush_icache_pte()). + */ + if (PageHuge(page)) + page = compound_head(page); + if (test_bit(PG_dcache_clean, &page->flags)) clear_bit(PG_dcache_clean, &page->flags); } diff --git a/arch/riscv/mm/cacheflush.c b/arch/riscv/mm/cacheflush.c index 6cb7d96ad9c7..062559c04fc3 100644 --- a/arch/riscv/mm/cacheflush.c +++ b/arch/riscv/mm/cacheflush.c @@ -82,6 +82,13 @@ void flush_icache_pte(pte_t pte) { struct page *page = pte_page(pte); + /* + * HugeTLB pages are always fully mapped, so only setting head page's + * PG_dcache_clean flag is enough. + */ + if (PageHuge(page)) + page = compound_head(page); + if (!test_and_set_bit(PG_dcache_clean, &page->flags)) flush_icache_all(); } From patchwork Mon Oct 24 09:47:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tong Tiangen X-Patchwork-Id: 8283 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp347139wru; Mon, 24 Oct 2022 02:35:45 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7ax/wO/o3pFjIlqRnfWc4OUGCdKlyVwmmtlIHMs0i+ZryooxR+xWbSjtjlDW0sIV+xAWd5 X-Received: by 2002:a05:6402:2409:b0:456:f97b:3794 with SMTP id t9-20020a056402240900b00456f97b3794mr29925335eda.145.1666604144807; Mon, 24 Oct 2022 02:35:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666604144; cv=none; d=google.com; s=arc-20160816; b=r9PZMvN03F4qUh6tIlm4EmZAf5nikyernGLclZhtyJbsBcv/wDHPTZ3XcaJWAbB7Ki /wfjP82QXW38IgragpAK/UCsXMJxB+jcHOVF55brSWI7oCeXM3EmpOTKDTJc9xQa+Wv2 Qe2vrTW9uL/OojrB94byNaNnCgBauO7vtYfvihNaX8olD4PrayLPWZ+wQVUBcoXxpjNm 3QDxnbe17k+FmR2BrngEg7OgeIYpBFW2xo5jFomTbin2N0R7qy4yn1bhnI53IC5eL98+ HmCh4mJ5+Y/2AY0OkvPSnm8mrO3sFQMAD4/fxRDV5YUri0T2BCegSfOmSJefLrmIh2PD zYCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=OciWBnMB1C06hCEgHQ+7iXgI8Hy5aFrbKEv0CT4cNls=; b=WOcv3VFcSY+/dfVkgKrZc4kduPzOtZHoh+kukk87DvWxWVpT9bAs7OGOkNrQsyEtYq tph0VB/xofYgPYu9o0kC0asp/ZFJD2rMAaSy9SRfy4URKFo7oGC+ifvtDzJmRODlxomS BC0kJjwF7XGAi68VPZqpTCb6YJD788JrRIiiB9o6wHGhuCZTcoWZnFpvLrSWD8XstlXE AGEjQ/hsKoKu1TOMTqFNrktKDEYag3hLh3Jx5hzIJcnguUJ6DVFRtMGDSNq0r2k/uROU c+AVTAnY8qI7BGsCiqjNW9GYyLzv7SwsdD0svtaHJJx+u7HhXW8Re4ggqS1adENP76cj vYHw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c6-20020a05640227c600b00461e3e1a628si1177955ede.110.2022.10.24.02.35.19; Mon, 24 Oct 2022 02:35:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229915AbiJXJV5 (ORCPT + 99 others); Mon, 24 Oct 2022 05:21:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51210 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229816AbiJXJVt (ORCPT ); Mon, 24 Oct 2022 05:21:49 -0400 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DC86F4F1BE for ; Mon, 24 Oct 2022 02:21:47 -0700 (PDT) Received: from dggemv704-chm.china.huawei.com (unknown [172.30.72.54]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4MwqFy2TK7zmVJf; Mon, 24 Oct 2022 17:16:54 +0800 (CST) Received: from kwepemm600017.china.huawei.com (7.193.23.234) by dggemv704-chm.china.huawei.com (10.3.19.47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Mon, 24 Oct 2022 17:21:44 +0800 Received: from localhost.localdomain (10.175.112.125) by kwepemm600017.china.huawei.com (7.193.23.234) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Mon, 24 Oct 2022 17:21:43 +0800 From: Tong Tiangen To: Paul Walmsley , Palmer Dabbelt , Albert Ou CC: , , "Tong Tiangen" , , Guohanjun Subject: [PATCH -next 2/2] riscv/mm: add arch hook arch_clear_hugepage_flags Date: Mon, 24 Oct 2022 09:47:25 +0000 Message-ID: <20221024094725.3054311-3-tongtiangen@huawei.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221024094725.3054311-1-tongtiangen@huawei.com> References: <20221024094725.3054311-1-tongtiangen@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.112.125] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemm600017.china.huawei.com (7.193.23.234) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1747561107742669844?= X-GMAIL-MSGID: =?utf-8?q?1747561107742669844?= With the PG_arch_1 we keep track if the page's data cache is clean, architecture rely on this property to treat new pages as dirty with respect to the data cache and perform the flushing before mapping the pages into userspace. This patch adds a new architecture hook, arch_clear_hugepage_flags,so that architectures which rely on the page flags being in a particular state for fresh allocations can adjust the flags accordingly when a page is freed into the pool. Fixes: 9e953cda5cdf ("riscv: Introduce huge page support for 32/64bit kernel") Signed-off-by: Tong Tiangen --- arch/riscv/include/asm/hugetlb.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/riscv/include/asm/hugetlb.h b/arch/riscv/include/asm/hugetlb.h index a5c2ca1d1cd8..ec19d6afc896 100644 --- a/arch/riscv/include/asm/hugetlb.h +++ b/arch/riscv/include/asm/hugetlb.h @@ -5,4 +5,10 @@ #include #include +static inline void arch_clear_hugepage_flags(struct page *page) +{ + clear_bit(PG_dcache_clean, &page->flags); +} +#define arch_clear_hugepage_flags arch_clear_hugepage_flags + #endif /* _ASM_RISCV_HUGETLB_H */