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=-15.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=unavailable 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 36FBCC07E99 for ; Fri, 9 Jul 2021 04:58:40 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id EA0A161151 for ; Fri, 9 Jul 2021 04:58:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EA0A161151 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=postmarketos.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=P7ph1ub9zx9zoDN4lc7cdJQWns6eSzcCbhOoTuM4HQ8=; b=vP2gvbLpX1YiAbJ4L6oNOOqd/9 gSmFs2UOAVhywDgfPkXbTNXJnk74VkJ7QEleGPbiXjLuue1m5IvhU5Rb+EnNiH7yy7iXmVRZhu8WQ N7WXdJKg0MqNt+m0mhLrjXHPou86Swe5hUbfkVm8sPWahRlNW/obm3fQzJn1YSWs4Tu1qM9RZP/tm epMmhpDvqzmFZi2hMBq+doixwwjZrkedusN8QGhCgueinfH6f9ggSc9V+IVQtVih2OFf0Ufk1X3gL mLY1Bh1xxaRQU+24X8GS/CD0db4LdCIpmk9zSzF7LAK2j9xFO6iGDw/BBseGqBHE08Nvf38t3pXGo +CbuhbRA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m1iZU-000mW2-8M; Fri, 09 Jul 2021 04:57:04 +0000 Received: from vps5.brixit.nl ([192.81.221.234]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1m1iZP-000mVA-Nv for linux-arm-kernel@lists.infradead.org; Fri, 09 Jul 2021 04:57:02 +0000 Received: from [192.168.20.2] (unknown [77.239.252.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by vps5.brixit.nl (Postfix) with ESMTPSA id 94AE560896; Fri, 9 Jul 2021 04:56:39 +0000 (UTC) Subject: Re: [PATCH v3 4/4] arm: extend pfn_valid to take into account freed memory map alignment To: Mike Rapoport , Guenter Roeck Cc: linux-arm-kernel@lists.infradead.org, Andrew Morton , Kefeng Wang , Mike Rapoport , Russell King , Tony Lindgren , linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <20210630071211.21011-1-rppt@kernel.org> <20210630071211.21011-5-rppt@kernel.org> <20210705042236.GA1463419@roeck-us.net> From: Alexey Minnekhanov Message-ID: <5ee73332-ab9e-98ad-eee7-b9bc2375c902@postmarketos.org> Date: Fri, 9 Jul 2021 07:56:38 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210708_215700_104290_E17FC509 X-CRM114-Status: GOOD ( 29.39 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 05.07.2021 10:23, Mike Rapoport wrote: > > I believe this should fix it: > >>>From e2213b7e804daf0d31d47502379916f0542398bb Mon Sep 17 00:00:00 2001 > From: Mike Rapoport > Date: Mon, 5 Jul 2021 08:43:10 +0300 > Subject: [PATCH] arm: ioremap: don't abuse pfn_valid() to check if pfn is in RAM > > The semantics of pfn_valid() is to check presence of the memory map for a > PFN and not whether a PFN is in RAM. The memory map may be present for a > hole in the physical memory and if such hole corresponds to an MMIO range, > __arm_ioremap_pfn_caller() will produce a WARN() and fail: > > [ 2.863406] WARNING: CPU: 0 PID: 1 at arch/arm/mm/ioremap.c:287 __arm_ioremap_pfn_caller+0xf0/0x1dc > [ 2.864812] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.13.0-09882-ga180bd1d7e16 #1 > [ 2.865263] Hardware name: Generic DT based system > [ 2.865711] Backtrace: > [ 2.866063] [<80b07e58>] (dump_backtrace) from [<80b080ac>] (show_stack+0x20/0x24) > [ 2.866633] r7:00000009 r6:0000011f r5:60000153 r4:80ddd1c0 > [ 2.866922] [<80b0808c>] (show_stack) from [<80b18df0>] (dump_stack_lvl+0x58/0x74) > [ 2.867117] [<80b18d98>] (dump_stack_lvl) from [<80b18e20>] (dump_stack+0x14/0x1c) > [ 2.867309] r5:80118cac r4:80dc6774 > [ 2.867404] [<80b18e0c>] (dump_stack) from [<80122fcc>] (__warn+0xe4/0x150) > [ 2.867583] [<80122ee8>] (__warn) from [<80b08850>] (warn_slowpath_fmt+0x88/0xc0) > [ 2.867774] r7:0000011f r6:80dc6774 r5:00000000 r4:814c4000 > [ 2.867917] [<80b087cc>] (warn_slowpath_fmt) from [<80118cac>] (__arm_ioremap_pfn_caller+0xf0/0x1dc) > [ 2.868158] r9:00000001 r8:9ef00000 r7:80e8b0d4 r6:0009ef00 r5:00000000 r4:00100000 > [ 2.868346] [<80118bbc>] (__arm_ioremap_pfn_caller) from [<80118df8>] (__arm_ioremap_caller+0x60/0x68) > [ 2.868581] r9:9ef00000 r8:821b6dc0 r7:00100000 r6:00000000 r5:815d1010 r4:80118d98 > [ 2.868761] [<80118d98>] (__arm_ioremap_caller) from [<80118fcc>] (ioremap+0x28/0x30) > [ 2.868958] [<80118fa4>] (ioremap) from [<8062871c>] (__devm_ioremap_resource+0x154/0x1c8) > [ 2.869169] r5:815d1010 r4:814c5d2c > [ 2.869263] [<806285c8>] (__devm_ioremap_resource) from [<8062899c>] (devm_ioremap_resource+0x14/0x18) > [ 2.869495] r9:9e9f57a0 r8:814c4000 r7:815d1000 r6:815d1010 r5:8177c078 r4:815cf400 > [ 2.869676] [<80628988>] (devm_ioremap_resource) from [<8091c6e4>] (fsi_master_acf_probe+0x1a8/0x5d8) > [ 2.869909] [<8091c53c>] (fsi_master_acf_probe) from [<80723dbc>] (platform_probe+0x68/0xc8) > [ 2.870124] r9:80e9dadc r8:00000000 r7:815d1010 r6:810c1000 r5:815d1010 r4:00000000 > [ 2.870306] [<80723d54>] (platform_probe) from [<80721208>] (really_probe+0x1cc/0x470) > [ 2.870512] r7:815d1010 r6:810c1000 r5:00000000 r4:815d1010 > [ 2.870651] [<8072103c>] (really_probe) from [<807215cc>] (__driver_probe_device+0x120/0x1fc) > [ 2.870872] r7:815d1010 r6:810c1000 r5:810c1000 r4:815d1010 > [ 2.871013] [<807214ac>] (__driver_probe_device) from [<807216e8>] (driver_probe_device+0x40/0xd8) > [ 2.871244] r9:80e9dadc r8:00000000 r7:815d1010 r6:810c1000 r5:812feaa0 r4:812fe994 > [ 2.871428] [<807216a8>] (driver_probe_device) from [<80721a58>] (__driver_attach+0xa8/0x1d4) > [ 2.871647] r9:80e9dadc r8:00000000 r7:00000000 r6:810c1000 r5:815d1054 r4:815d1010 > [ 2.871830] [<807219b0>] (__driver_attach) from [<8071ee8c>] (bus_for_each_dev+0x88/0xc8) > [ 2.872040] r7:00000000 r6:814c4000 r5:807219b0 r4:810c1000 > [ 2.872194] [<8071ee04>] (bus_for_each_dev) from [<80722208>] (driver_attach+0x28/0x30) > [ 2.872418] r7:810a2aa0 r6:00000000 r5:821b6000 r4:810c1000 > [ 2.872570] [<807221e0>] (driver_attach) from [<8071f80c>] (bus_add_driver+0x114/0x200) > [ 2.872788] [<8071f6f8>] (bus_add_driver) from [<80722ec4>] (driver_register+0x98/0x128) > [ 2.873011] r7:81011d0c r6:814c4000 r5:00000000 r4:810c1000 > [ 2.873167] [<80722e2c>] (driver_register) from [<80725240>] (__platform_driver_register+0x2c/0x34) > [ 2.873408] r5:814dcb80 r4:80f2a764 > [ 2.873513] [<80725214>] (__platform_driver_register) from [<80f2a784>] (fsi_master_acf_init+0x20/0x28) > [ 2.873766] [<80f2a764>] (fsi_master_acf_init) from [<80f014a8>] (do_one_initcall+0x108/0x290) > [ 2.874007] [<80f013a0>] (do_one_initcall) from [<80f01840>] (kernel_init_freeable+0x1ac/0x230) > [ 2.874248] r9:80e9dadc r8:80f3987c r7:80f3985c r6:00000007 r5:814dcb80 r4:80f627a4 > [ 2.874456] [<80f01694>] (kernel_init_freeable) from [<80b19f44>] (kernel_init+0x20/0x138) > [ 2.874691] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:80b19f24 > [ 2.874894] r4:00000000 > [ 2.874977] [<80b19f24>] (kernel_init) from [<80100170>] (ret_from_fork+0x14/0x24) > [ 2.875231] Exception stack(0x814c5fb0 to 0x814c5ff8) > [ 2.875535] 5fa0: 00000000 00000000 00000000 00000000 > [ 2.875849] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > [ 2.876133] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 > [ 2.876363] r5:80b19f24 r4:00000000 > [ 2.876683] ---[ end trace b2f74b8536829970 ]--- > [ 2.876911] fsi-master-acf gpio-fsi: ioremap failed for resource [mem 0x9ef00000-0x9effffff] > [ 2.877492] fsi-master-acf gpio-fsi: Error -12 mapping coldfire memory > [ 2.877689] fsi-master-acf: probe of gpio-fsi failed with error -12 > > Use memblock_is_map_memory() instead of pfn_valid() to check if a PFN is in > RAM or not. > > Reported-by: Guenter Roeck > Signed-off-by: Mike Rapoport > --- > arch/arm/mm/ioremap.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c > index 000e8210000b..80fb5a4a5c05 100644 > --- a/arch/arm/mm/ioremap.c > +++ b/arch/arm/mm/ioremap.c > @@ -27,6 +27,7 @@ > #include > #include > #include > +#include > > #include > #include > @@ -284,7 +285,8 @@ static void __iomem * __arm_ioremap_pfn_caller(unsigned long pfn, > * Don't allow RAM to be mapped with mismatched attributes - this > * causes problems with ARMv6+ > */ > - if (WARN_ON(pfn_valid(pfn) && mtype != MT_MEMORY_RW)) > + if (WARN_ON(memblock_is_map_memory(PFN_PHYS(pfn)) && > + mtype != MT_MEMORY_RW)) > return NULL; > > area = get_vm_area_caller(size, VM_IOREMAP, caller); > I got similar stack trace on Qualcomm msm8974-based board [1] and can confirm that the above patch fixes the problem. [1] https://paste.sr.ht/~minlexx/9d1eb96034b85eb8d1d86a46435d111a32e87775 -- Regards Alexey Minnekhanov postmarketOS developer _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel