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 X-Spam-Level: X-Spam-Status: No, score=-8.4 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9AC46C10DCE for ; Wed, 11 Mar 2020 02:10:14 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 5489820674 for ; Wed, 11 Mar 2020 02:10:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=nvidia.com header.i=@nvidia.com header.b="BXtRs1Yz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5489820674 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nvidia.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id CDE236B0003; Tue, 10 Mar 2020 22:10:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C8DC06B0006; Tue, 10 Mar 2020 22:10:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B7C266B0007; Tue, 10 Mar 2020 22:10:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0223.hostedemail.com [216.40.44.223]) by kanga.kvack.org (Postfix) with ESMTP id A07436B0003 for ; Tue, 10 Mar 2020 22:10:13 -0400 (EDT) Received: from smtpin03.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 6096F824999B for ; Wed, 11 Mar 2020 02:10:13 +0000 (UTC) X-FDA: 76581451506.03.wing58_592cc98540735 X-HE-Tag: wing58_592cc98540735 X-Filterd-Recvd-Size: 4969 Received: from hqnvemgate24.nvidia.com (hqnvemgate24.nvidia.com [216.228.121.143]) by imf31.hostedemail.com (Postfix) with ESMTP for ; Wed, 11 Mar 2020 02:10:12 +0000 (UTC) Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate24.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Tue, 10 Mar 2020 19:08:40 -0700 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Tue, 10 Mar 2020 19:10:11 -0700 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Tue, 10 Mar 2020 19:10:11 -0700 Received: from [10.110.48.28] (10.124.1.5) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 11 Mar 2020 02:10:10 +0000 Subject: Re: [RESEND PATCH] mm/sparsemem: use wrapped macros instead of open-coding To: , CC: , chenqiwu References: <1583489966-16390-1-git-send-email-qiwuchen55@gmail.com> From: John Hubbard X-Nvconfidentiality: public Message-ID: Date: Tue, 10 Mar 2020 19:10:10 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 MIME-Version: 1.0 In-Reply-To: <1583489966-16390-1-git-send-email-qiwuchen55@gmail.com> X-Originating-IP: [10.124.1.5] X-ClientProxiedBy: HQMAIL105.nvidia.com (172.20.187.12) To HQMAIL107.nvidia.com (172.20.187.13) Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1583892520; bh=/NeoK2jOkmYtjDiYA8ZOCGrV/KDLUbmxqZkFurFW3Jo=; h=X-PGP-Universal:Subject:To:CC:References:From:X-Nvconfidentiality: Message-ID:Date:User-Agent:MIME-Version:In-Reply-To: X-Originating-IP:X-ClientProxiedBy:Content-Type:Content-Language: Content-Transfer-Encoding; b=BXtRs1YzY+WRw6sVO5lu1yoKdZN9Tb1B8UYivoSs51v+C6HPzDlbmNeXeomlkz+9s zykaKkdyYc6Z2dj/3COaBB6Y/LHNkJFlSrZX23EnhUD5nqT32cTl2uq9wV/3UiLQAh rN0WZC13h63t+Ek4jZGow5/NcY4tCBxiS5P2rXBLwmVXwKXIbIIkUVv6TWgsJQe2Ir sz3WSQrRlQk3dwU5bB6ICSmE9npZe2lxF+atw6eKlPZdTTUiY+7W9dLfYGG9EoFmEi ilcXobVekBXA/YDmjwCb5hkMQWaAosNaRl7mqmRm06Hg6VF1qgKaDn5c7XMI3nAwJo HX7O3HhZL2L0g== 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: On 3/6/20 2:19 AM, qiwuchen55@gmail.com wrote: > From: chenqiwu >=20 > Use wrapped macros instead of open-coding for better code > readability. >=20 > Signed-off-by: chenqiwu This breaks my x86 (64-bit) build: mm/sparse.c: In function =E2=80=98check_usemap_section_nr=E2=80=99: mm/sparse.c:389:33: error: implicit declaration of function =E2=80=98virt_t= o_pfn=E2=80=99; did you mean =E2=80=98virt_to_phys=E2=80=99? [-Werror=3Dimp= licit-function-declaration] 389 | usemap_snr =3D pfn_to_section_nr(virt_to_pfn(usage)); | ^~~~~~~~~~~ | virt_to_phys ...and I think the reason is that the arch/x86/include/asm/page.h does not have virt_to_pfn(). For that reason, I'm concerned that the following fix,= =20 which fixes up x86, may not completely correct for the patch. Here's a compile-tested (only, and only on x86 64-bit) fix: diff --git a/arch/x86/include/asm/page.h b/arch/x86/include/asm/page.h index 7555b48803a8..982bc76bf13c 100644 --- a/arch/x86/include/asm/page.h +++ b/arch/x86/include/asm/page.h @@ -62,6 +62,9 @@ static inline void copy_user_page(void *to, void *from, u= nsigned long vaddr, #define __boot_va(x) __va(x) #define __boot_pa(x) __pa(x) =20 +#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT) +#define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT) + /* * virt_to_page(kaddr) returns a valid pointer if and only if * virt_addr_valid(kaddr) returns true. thanks, --=20 John Hubbard NVIDIA > --- > mm/sparse.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) >=20 > diff --git a/mm/sparse.c b/mm/sparse.c > index 42c18a3..9b14164 100644 > --- a/mm/sparse.c > +++ b/mm/sparse.c > @@ -385,8 +385,8 @@ static void __init check_usemap_section_nr(int nid, > old_pgdat_snr =3D NR_MEM_SECTIONS; > } > =20 > - usemap_snr =3D pfn_to_section_nr(__pa(usage) >> PAGE_SHIFT); > - pgdat_snr =3D pfn_to_section_nr(__pa(pgdat) >> PAGE_SHIFT); > + usemap_snr =3D pfn_to_section_nr(virt_to_pfn(usage)); > + pgdat_snr =3D pfn_to_section_nr(virt_to_pfn(pgdat)); > if (usemap_snr =3D=3D pgdat_snr) > return; > =20 > @@ -677,7 +677,7 @@ struct page * __meminit populate_section_memmap(unsig= ned long pfn, > =20 > return NULL; > got_map_page: > - ret =3D (struct page *)pfn_to_kaddr(page_to_pfn(page)); > + ret =3D (struct page *)page_to_virt(page); > got_map_ptr: > =20 > return ret; >=20