From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC670C0015E for ; Tue, 25 Jul 2023 07:39:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 075E56B0071; Tue, 25 Jul 2023 03:39:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0260A8E0001; Tue, 25 Jul 2023 03:39:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E576C6B0075; Tue, 25 Jul 2023 03:39:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id D77116B0071 for ; Tue, 25 Jul 2023 03:39:14 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 97D0E140C55 for ; Tue, 25 Jul 2023 07:39:14 +0000 (UTC) X-FDA: 81049333428.15.3E776FF Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf02.hostedemail.com (Postfix) with ESMTP id 88BE080019 for ; Tue, 25 Jul 2023 07:39:12 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Zx0mGrx5; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf02.hostedemail.com: domain of chenhuacai@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=chenhuacai@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690270752; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=sEHcsGYIXyfMK1lecIsR9+QVH9TullIDbpkeYECcxtk=; b=pF0LGYqJ+3mAOAiub6lXItchj3BwoNzUpRZWNNIkDUZ6YHthxMrT/Pnkeq00EiBCQK56rY fQkyD/U+MmYJ3WMAHfcwpLeB/GyBDZzl5g3oH9nxyDErA6IxRsrZ9ocRMDXnUF0Kb3bca3 QMZJZmILR7sFQ33fKTyADrgbrdhZrBg= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Zx0mGrx5; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf02.hostedemail.com: domain of chenhuacai@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=chenhuacai@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690270752; a=rsa-sha256; cv=none; b=fA2zZRBDWdSKmNhS+7a1WtXE9ZYNI2a4VydSaxueRTxGXfweWyOGS74XnOyt8fDm4UR6ZG ugK4XejQdnY/EYAhM04F2f0rvXXHPWVa5/EbovEYSXHmgcJ8S7y5N3Nze0wBZZIWgkEdzx 5hESjNpziqSOD7l4pBbwE72Ff5i6G9E= Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 6D7906120F for ; Tue, 25 Jul 2023 07:39:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CF1A3C433CA for ; Tue, 25 Jul 2023 07:39:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1690270750; bh=yCZDIdxMjNkX9lOuzDqn+3Yh/GccWI0M6b3O0aS8Dnk=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=Zx0mGrx5lLFOHOubu3kmvBw5iso+CgZlqhi0zdgLXgkchl8wzm7yeU+fOZ5DHrFUr ZeeVb9VUOL2pmKVFgjL4+yHps/WO4c8620PSoURm0mA0z36SzppYyYvGPN0u/Nps+W uRTAcgU+h+wjbsGZq4Sb/moiKn8HVhhPz6m92gJ3dYErPpqbKSz2wkUGjiF5cN+xUS qW/r2GqomC9D6/hkecwIbWA3I1sV8CwVJUVL8Yl4yzXFRDk48X4mVI4OpoBCoFQzdv Lf7jZ/Ks96cAE+uxDN+4AlaUbNfc3JTdlji3fOyX1hZnSEZagAxVnv5f1qE1sGBBjg L+DIQv+O8dGVA== Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-51d95aed33aso7390255a12.3 for ; Tue, 25 Jul 2023 00:39:10 -0700 (PDT) X-Gm-Message-State: ABy/qLZftJ4lrBLjhRzRfwW1NirfHs4eDuT8K2RXoGyettIh84Gj3s7D IjbP0wlW2okySsjsuERqQtABkvMc12o8kc6eNOI= X-Google-Smtp-Source: APBJJlGfOeA/cNCsfW7zqUu1/yyOkDp8wAPMr94iW/szwgNAVeCIhoD332p4Ry20VaewkC8s6jDmdOz9dAg6W3S6XAw= X-Received: by 2002:aa7:c394:0:b0:521:a740:29b7 with SMTP id k20-20020aa7c394000000b00521a74029b7mr10427977edq.36.1690270748946; Tue, 25 Jul 2023 00:39:08 -0700 (PDT) MIME-Version: 1.0 References: <20230725061451.1231480-1-lienze@kylinos.cn> <20230725061451.1231480-2-lienze@kylinos.cn> In-Reply-To: <20230725061451.1231480-2-lienze@kylinos.cn> From: Huacai Chen Date: Tue, 25 Jul 2023 15:38:56 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 1/4 v2] LoongArch: mm: Add page table mapped mode support To: Enze Li Cc: kernel@xen0n.name, loongarch@lists.linux.dev, glider@google.com, elver@google.com, akpm@linux-foundation.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, zhangqing@loongson.cn, yangtiezhu@loongson.cn, dvyukov@google.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 88BE080019 X-Stat-Signature: 5p4pwckpeh86ii58sz6d1rqspt3uhb6d X-Rspam-User: X-HE-Tag: 1690270752-573998 X-HE-Meta: U2FsdGVkX1/t5MKCbTU3tF1zx8zS9yFQWYEGO4CncmXsF1usiwV98zVwuEwyBGqc2q7LVxZuxP0Iqsczy1PSccsFlLKfzYGJzZYSiM9B3hdM8PPBEvXFkxRQfXtTS/FjcUkddMVeA8mHYTgSclrMEMHLQfNms6VZRc9H1gAjoCmemT5/HmPiWTjoMc06mlzem0+skYKfXW6vwWbXMGrjFyMDYIy8q54S7iKfYbrUhqz1/zrh30qfzcKvchuHKRNvFKdTqJv+zCS8IJMZNEswpF0uQ+LR3LxoVZce3q+8ajQKvXEKxAyNMR3Q5O6geB030qks44rOs644yuBB0j+unlsN2Q+6ZWOpqn9sd7kyCeVebtFvzxnlv2KbKeuldjrP5Pb2ZVLZ7q8SmWCKzYMwavjo5KYZ29t/5BGMCLWeirhU+jzOLiqrhvKRBXwQj40ctpAiiyJYVG+wnb6oo72Jf90T65sJvuG85686ky2XUa0tKQEfu1PcUwFEhkLaLTP6MweceAyNwcWvwLAPuR/3MBY/bl1zeWN+St9d4eGwcUaWLQVy391uoMhk4/HvJsBluL3+UIPuy1Bh1Lp4t2wdeirNVRWkrSW7gwoAHOfAkR6ljivLrIifE5ZL4g3smvO02KiRusNOU0G881zf3f/mEke1s6534clgVInCMbPDDhuN9uqz9Z263NUuVRys085F88mk/yxYpjfK/xK7YBrx/SOzpC1yH2i3i8/8GM9Sh9/HPujd4LzpNzRc2QbhItCjdjMfT6MVLqXc/qhau6ZepqxOLVsQ+jXNpxMHOweNdz1KV9V2nGMleLqAHy1PucZ4NX4qA7aOKPPkEMhCaes7+07W0VldywH3n7Sz5lViSnyhtPwbcyCGxi5sU1d+vhgWX7rmrh8Urxi8n3kVRe3vB0f+meMzdmx96AXr4pqOtRVNk9yS1Vw76ZdTHBT3bonLS9jklw5sTCaCU0FV0VB QHQOx4mO 0vCoQbHfX3tWHvEFq9iez+hercZLWEEVGrh+EOFo5BmO7M2w4sj7a8Apw2RtFM0Kwo+8xI/Z1+164Eu9AwP6NGXRD6JnGj0dXIHcmmaVzEQDiYgUe2BazNbPuIUEKbQN1Pxc2tNU/A5CDB/UVkoe0C4pxvpIFDe1tYLcTjEs1hVstHvam8rpzT7hDfWetulPslzgYJ2u9i1+K35wDY7w7wo+OiGSl3o7+NjnbqF4E0/WcPa0f3WIjOQ5Rl5Nikcni5J0DSxnU+XZzhq8qBV2YLPaVtEg/7iLLbmK7qlK/6TxwFCshIWilyoXFGkApNVooZp599hbhjqnxPl6lpdmJSGHCyoYo0GYz6Mu+/w8mQg+4tk5PIFfsP01A4A0OzHCeVc8mWH/CnGDbHJEK6ASrkYJBPw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Hi, Enze, On Tue, Jul 25, 2023 at 2:15=E2=80=AFPM Enze Li wrote: > > According to LoongArch documentation online, there are two types of addre= ss > translation modes: direct mapped address translation mode (direct mapped = mode) > and page table mapped address translation mode (page table mapped mode). > > Currently, the upstream kernel only supports direct mapped mode. > This patch adds a function that determines whether page table mapped > mode should be used, and also adds the corresponding handler functions > for both modes. > > For more details on the two modes, see [1]. > > [1] https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.= html#virtual-address-space-and-address-translation-mode > > Signed-off-by: Enze Li > --- > arch/loongarch/include/asm/page.h | 19 ++++++++++++++++++- > arch/loongarch/include/asm/pgtable.h | 2 ++ > arch/loongarch/mm/pgtable.c | 6 ++++++ > 3 files changed, 26 insertions(+), 1 deletion(-) > > diff --git a/arch/loongarch/include/asm/page.h b/arch/loongarch/include/a= sm/page.h > index 26e8dccb6619..e43a2385b2cd 100644 > --- a/arch/loongarch/include/asm/page.h > +++ b/arch/loongarch/include/asm/page.h > @@ -32,6 +32,7 @@ > > #include > #include > +#include > > /* > * It's normally defined only for FLATMEM config but it's > @@ -84,7 +85,23 @@ typedef struct { unsigned long pgprot; } pgprot_t; > #define sym_to_pfn(x) __phys_to_pfn(__pa_symbol(x)) > > #define virt_to_pfn(kaddr) PFN_DOWN(PHYSADDR(kaddr)) > -#define virt_to_page(kaddr) pfn_to_page(virt_to_pfn(kaddr)) > + > +static inline bool is_tlb_addr(unsigned long kaddr) > +{ > + if (unlikely((kaddr & GENMASK(BITS_PER_LONG - 1, cpu_vabits)) =3D= =3D > + GENMASK(BITS_PER_LONG - 1, cpu_vabits))) > + return true; > + return false; I think this helper can simply "return (kaddr >=3D vm_map_base)"? If so, we can even remove this helper and use the simple condition in virt_to_page(). > +} > + > +#define dwm_virt_to_page(kaddr) pfn_to_page(virt_to_pfn(kaddr)) This should be "dmw", not "dwm", and since tlb_virt_to_page is in .c file, this one should also be there. Huacai > + > +#define virt_to_page(kaddr) \ > +({ \ > + is_tlb_addr((unsigned long)kaddr) ? \ > + tlb_virt_to_page((unsigned long)kaddr) : \ > + dwm_virt_to_page((unsigned long)kaddr); \ > +}) > > extern int __virt_addr_valid(volatile void *kaddr); > #define virt_addr_valid(kaddr) __virt_addr_valid((volatile void *)(kaddr= )) > diff --git a/arch/loongarch/include/asm/pgtable.h b/arch/loongarch/includ= e/asm/pgtable.h > index 38afeb7dd58b..98a0c98de9d1 100644 > --- a/arch/loongarch/include/asm/pgtable.h > +++ b/arch/loongarch/include/asm/pgtable.h > @@ -353,6 +353,8 @@ static inline void pte_clear(struct mm_struct *mm, un= signed long addr, pte_t *pt > #define PMD_T_LOG2 (__builtin_ffs(sizeof(pmd_t)) - 1) > #define PTE_T_LOG2 (__builtin_ffs(sizeof(pte_t)) - 1) > > +inline struct page *tlb_virt_to_page(unsigned long kaddr); > + > extern pgd_t swapper_pg_dir[]; > extern pgd_t invalid_pg_dir[]; > > diff --git a/arch/loongarch/mm/pgtable.c b/arch/loongarch/mm/pgtable.c > index 36a6dc0148ae..20e7425d235d 100644 > --- a/arch/loongarch/mm/pgtable.c > +++ b/arch/loongarch/mm/pgtable.c > @@ -9,6 +9,12 @@ > #include > #include > > +inline struct page *tlb_virt_to_page(unsigned long kaddr) > +{ > + return pte_page(*virt_to_kpte(kaddr)); > +} > +EXPORT_SYMBOL_GPL(tlb_virt_to_page); > + > pgd_t *pgd_alloc(struct mm_struct *mm) > { > pgd_t *ret, *init; > -- > 2.34.1 > >