Received: by 10.223.185.116 with SMTP id b49csp1026570wrg; Wed, 21 Feb 2018 10:48:03 -0800 (PST) X-Google-Smtp-Source: AH8x226V/X5Ny77VDYyTzLN2DCYE1uFbYvskddCtiUiZ55EHjk7QW3eowUfEIW4QseQMr1iIJYpT X-Received: by 2002:a17:902:bd04:: with SMTP id p4-v6mr3931788pls.253.1519238883825; Wed, 21 Feb 2018 10:48:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519238883; cv=none; d=google.com; s=arc-20160816; b=zsezzdJV6duAwXWCHHZQVfALpAMzczNVOi2yCan53kkAFJkmGno4wzE/JLQWfN4wSL cxx9qcW0qG7MbdYsBInvthkYRq7rt6F5Cm00bGAnz2gRMlbsahJyxAwx35RmGrAii6l7 Wnv+JOfawrSoOvQVPdgvreJ3NTv8jNBIAxJXlgJDu5p61G1VNmdLo3kqeNVXGpPlyhsF 1mBQMPbrzDJOquM3vkIFhCFu5WpFHcq7Sn0IoS1caq7Urlt6/d/GyUm4O4vcRIfxgZQ0 P0at+qHA7ikH+iM/3uIFMqGKgOLVLYm3GOD+j5CXBpElD/Js47JfloNyRBD9oF1kYMqr 9f5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=Tmtg4hSx2XtMK/NM3+s0JgfRNQN4oLoQTVP5ssb/dYs=; b=UIKicNZUmqdA+fF6gWI9xOw5BTrsZ1aknl1/icWafpcDE4CjZ/JzO2lpRx2QjFvMsB EcybqFXM3Jj2m0t0mRdJoTHQtnimhnx9x+OxiskzcfP+rNVvK2hQpP7s2AtwTe3MF9PS js0mxpxwbOoT3r01NUs2j+B9M4GNSgATgtGMi6CuSA9+DP2LO0R/7243GzpacEH8U0wH P6+67TFFiU/BvAFhaLRTpjFQs+SK7klbGBvJ8a5KBXtLHVzxMHpTGHkeqcev+b6ZFPvC 4TiWJlO6RdLGX9vsw9mWPXrWFrdoHnIr4ajHajdA8QB3MNS31LPbgCudly/+OosV73vz eqQw== ARC-Authentication-Results: i=1; mx.google.com; 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 n13si1511872pgq.674.2018.02.21.10.47.49; Wed, 21 Feb 2018 10:48:03 -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; 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 S937238AbeBUNwa (ORCPT + 99 others); Wed, 21 Feb 2018 08:52:30 -0500 Received: from mout.gmx.net ([212.227.17.22]:49263 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933394AbeBUNw1 (ORCPT ); Wed, 21 Feb 2018 08:52:27 -0500 Received: from latitude ([88.153.6.211]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LsfrR-1edFLv25ST-012Fd5; Wed, 21 Feb 2018 14:51:22 +0100 Date: Wed, 21 Feb 2018 14:51:19 +0100 From: Jonathan =?utf-8?Q?Neusch=C3=A4fer?= To: christophe leroy Cc: Jonathan =?utf-8?Q?Neusch=C3=A4fer?= , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Michael Ellerman , linux-mm@kvack.org, Joel Stanley , Benjamin Herrenschmidt , Paul Mackerras , Balbir Singh , Guenter Roeck Subject: Re: [PATCH 1/6] powerpc/mm/32: Use pfn_valid to check if pointer is in RAM Message-ID: <20180221135119.d3qgvdck5yruomi7@latitude> References: <20180220161424.5421-1-j.neuschaefer@gmx.net> <20180220161424.5421-2-j.neuschaefer@gmx.net> <0d14cb2c-dd00-d258-cb15-302b2a9d684f@c-s.fr> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="jgd5mu54dmgravdc" Content-Disposition: inline In-Reply-To: <0d14cb2c-dd00-d258-cb15-302b2a9d684f@c-s.fr> User-Agent: NeoMutt/20170113 (1.7.2) X-Provags-ID: V03:K0:aGGx3HXz8pic4j5Gky7WY4nzPyKMN1qjh+8Mmgb+rEu4a6fl9eI fS0UpJ0kY07Q8qCpR2VsD8E8rvQUUo3BJIz1JWu5POIsISVYliQ24jSNhaVMoEcnRyKNn43 TyeIy+cqTH1Fm5MJOZ9wcSDNx2DFpRA1GZ3gRgZ3YVZZUJBjv4qclqp0NjmWzvdoPaXmuYf +SdlLETsUKuxZdnxgoALQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:LetMlMBMcxM=:r7rpxHrBK0dX0dhZSgm8kD S/yPC4A2cAN4S/PYNsPiig3FHXlBUr9EkttxLbYpEKkWpBhyA+o2oztOad+v4OgLzmwCf4lhY PcheYp68HxoxtiQ/yo29XdLbvrR6NnCXYW/0XKP+9anHGL8IzhI+vCIN3ENkDLYxmU3k9hkEV qOlPSKFWt+9Ek4ykcgPAsDWmfVRJvMrhVekXr5IkJM3KX8ZC6XrffbOd5RAxVZh2EIMxJ4p70 TW3W8ZUpvkg7nTspmn3kslzM7oV5GTqQlMtNctEhIXy+DmRi+tAJoS2FBvigsvCR5L+1WOxRn wGSNqV7MbMfY5fJ3I5zdBNKUh+SGSCV3EeD2qtThinzo0GY6Eholdq0votPVyKAPpZRnMdXdf HOsAs5pembjql3f/DZQsj2BC6TfW+Gy8yGweXZ3I8LNYKkIR8mv+fMYlN7eZ4CXMPiFPJ/3Zx ih7mcjWZjZnD7wO9LJ6SaRAuDth/HpS3hUh4izt7zrDxfgdS2syZNYz7EzsHFx1wsZgMLvnmj QFBB6hCB0pDgGmORTYCDJaEE0Bo+FtV2vkP4tUPZYTM1PeHZQDdmxlGLikbbsihrGnFD2rqZp TNc8oZjn2386b9uvY0RGqr/RmGlAph4wFgXc7GFYIS0Xd1L7v+GqVnXDGHjth35k8b/v25Gen 0FvITucKpN5kuEj5+SSyRs2aUJ4TBempF4dxATO51V2xD3NDcdI8j+C4F8VTNeBqjgn/WSBPk k9vPa4f+oE5ViL3jkk5M6UbiBc5FqNo/br58JseUGdu0TPTVEBlXoJj00HoKA/U7ncq+2diRH CtXY9dffuFLQhduN8e8zpEFWbr0LA== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --jgd5mu54dmgravdc Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hello Christophe, On Tue, Feb 20, 2018 at 06:45:09PM +0100, christophe leroy wrote: [...] > > - if (slab_is_available() && (p < virt_to_phys(high_memory)) && > > + if (slab_is_available() && pfn_valid(__phys_to_pfn(p)) && >=20 > I'm not sure this is equivalent: >=20 > high_memory =3D (void *) __va(max_low_pfn * PAGE_SIZE); > #define ARCH_PFN_OFFSET ((unsigned long)(MEMORY_START >> PAGE_SHIFT)) > #define pfn_valid(pfn) ((pfn) >=3D ARCH_PFN_OFFSET && (pfn) < max_mapnr) > set_max_mapnr(max_pfn); >=20 > So in the current implementation it checks against max_low_pfn while your > patch checks against max_pfn >=20 > max_low_pfn =3D max_pfn =3D memblock_end_of_DRAM() >> PAGE_SHIFT; > #ifdef CONFIG_HIGHMEM > max_low_pfn =3D lowmem_end_addr >> PAGE_SHIFT; > #endif Good point, I haven't considered CONFIG_HIGHMEM before. As far as I understand it, in the non-CONFIG_HIGHMEM case: - max_low_pfn is set to the same value as max_pfn, so the ioremap check should detect the same PFNs as RAM. and with CONFIG_HIGHMEM: - max_low_pfn is set to lowmem_end_addr >> PAGE_SHIFT - but max_pfn isn't So, I think you're right. While looking through arch/powerpc/mm, I noticed that there's a page_is_ram function, which simply uses the memblocks directly, on PPC32. It seems like a good candidate for the RAM check in __ioremap_caller, except that there's this code, which apparently trashes memblock 0 completely on non-CONFIG_NEED_MULTIPLE_NODES: https://elixir.bootlin.com/linux/v4.16-rc2/source/arch/powerpc/mm/mem.c#L= 223 Thanks, Jonathan Neusch=C3=A4fer --jgd5mu54dmgravdc Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJajXlOAAoJEAgwRJqO81/bA04P/A5eYOetCVfwe5i8CzVCzswi syAI04l5dw0ka8DJ6Vn3mGtDFbw+uDpOmZ4bwyebvvmr4nMnbJP6DLrYgOfs6Jz1 aczZBbk1Jf/bO28zSvfZtrq1cfw5YI1RF54d6mJsjzC+oDpdCvTAwB03Feq1MbAu QYO6tilAaCnJyQ8vvxRL309oh1/jiYSfXga0pyH3KkjxWlPYAK7BrSW4IuWsp8Yw 7mDJFnWuhiVxRMBgnvlXt4ykz6GLACM/mKaT/mWGtsvh/mTt2r+jk07QnnqX+Tvb V9iiXMof5TAM+nLlI8oLgxsXTFbu//QJMiNa6s6NWv6WMA3/Dq2HlWf8X4lj6TXx dmNNrcGWkVdCGdZKliwS+jAU0kMZ3cz2VCcLQH+rWJgCutQpbpF1I+J9Lv3vg7cH 0lcRcsmfnBF5JGKScvjaHjCqH2M98JDSER5xU9B2ff9dZn5db6zeN/804OD7htX3 nS//MoDImnbeur7ryfthSLgrVv5te78mv1aA/PLclGnveo5C/lrxWU1DjmBEmxW/ h6o5JU6hV1To0teV47Cu9QLPPebpmM0iVR45TK4Y9u5DjdmvpYLYgnTsxtgXJGkW LX5tE060VtbeKZIA0N2VxKpwp+t+osCRPch+bPLlVjlS6Bo/gTtAHO5w9ldqDqf/ UGnCm3zfS2X0jWMdxvRc =afR/ -----END PGP SIGNATURE----- --jgd5mu54dmgravdc--