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 56280C54E4A for ; Fri, 8 Mar 2024 17:14:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CAFE86B03CA; Fri, 8 Mar 2024 12:14:29 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C5EFA6B03CB; Fri, 8 Mar 2024 12:14:29 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AD9336B03CC; Fri, 8 Mar 2024 12:14:29 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 9D7786B03CA for ; Fri, 8 Mar 2024 12:14:29 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 677D340223 for ; Fri, 8 Mar 2024 17:14:29 +0000 (UTC) X-FDA: 81874520658.07.C739926 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by imf29.hostedemail.com (Postfix) with ESMTP id 3CC75120009 for ; Fri, 8 Mar 2024 17:14:26 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=c9Xdc3MH; dmarc=pass (policy=none) header.from=samsung.com; spf=pass (imf29.hostedemail.com: domain of m.szyprowski@samsung.com designates 210.118.77.11 as permitted sender) smtp.mailfrom=m.szyprowski@samsung.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709918067; 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=DSDacrVBnLQUXSKvLn3/E67RoDPwbljmlkbfkQl9jbw=; b=MpgHgOYkDB4U81HOxnFpC/Gt8PQH9hR2pvgzYVK3t98tSDCFPgr88+fDPcY3T0YnpzKCDm cdCQtaJkVb8k01jJiYo18TwrLMgt2d+W7qGPtQkK8dK/fQ2UGsHQvHX95IU8MmJmU4lO1D y4trcN+4C90dlagdQtsGHp5XK4QPt0M= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=c9Xdc3MH; dmarc=pass (policy=none) header.from=samsung.com; spf=pass (imf29.hostedemail.com: domain of m.szyprowski@samsung.com designates 210.118.77.11 as permitted sender) smtp.mailfrom=m.szyprowski@samsung.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709918067; a=rsa-sha256; cv=none; b=cPPNephiYQB1PVGlD/Gh4FHZh3RS2xKgQpX3IBdrvhPXOynYV+r/IKRrGjBjn7OkZXpyPr 6WT7wBBiyZsRA8DFnk9CsVXVSmd52a1AI9yOHzfFhpJQAFrz9WHPbiACgQcy/dwJcveBMS aaegsDAo/yq8zLTASPjYJjNEWu5F2Wo= Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20240308171423euoutp015fa2297b52e45436a29e050b6c6c60a8~62WtkS-g30736907369euoutp01I for ; Fri, 8 Mar 2024 17:14:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20240308171423euoutp015fa2297b52e45436a29e050b6c6c60a8~62WtkS-g30736907369euoutp01I DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1709918063; bh=DSDacrVBnLQUXSKvLn3/E67RoDPwbljmlkbfkQl9jbw=; h=Date:Subject:To:Cc:From:In-Reply-To:References:From; b=c9Xdc3MH/xVf6+dULK54d9bPJDYmO7KLujMYxCNxfOcZcvVDqr8/dd7163R7/ZzL1 Ap5hL6uI8DFKeOqH8jhDEbyJLQ955dLiCyVsA5dfOENtXhUu3TrDktjjb33dXu6Ja2 RSYL6IamUWzMUdlJ3NuP5ynIy1s0n41r1uV2fplQ= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20240308171423eucas1p2371311a5b08d9706eaf93179362c94a4~62WtQk0AA1558315583eucas1p2a; Fri, 8 Mar 2024 17:14:23 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id D8.9D.09552.F674BE56; Fri, 8 Mar 2024 17:14:23 +0000 (GMT) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20240308171422eucas1p293895be469655aa618535cf199b0c43a~62WsXkhLx1558115581eucas1p2O; Fri, 8 Mar 2024 17:14:22 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20240308171422eusmtrp24638ab6298336da4c1c0e8a41a4a64fc~62WsW41FF2621526215eusmtrp2E; Fri, 8 Mar 2024 17:14:22 +0000 (GMT) X-AuditID: cbfec7f5-853ff70000002550-40-65eb476faf57 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 02.2F.09146.E674BE56; Fri, 8 Mar 2024 17:14:22 +0000 (GMT) Received: from [106.210.134.192] (unknown [106.210.134.192]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20240308171421eusmtip21f5afb8678a08bd51cca727cfeea567f~62WrRSVaA2266422664eusmtip2R; Fri, 8 Mar 2024 17:14:21 +0000 (GMT) Message-ID: <1f49d568-24f9-4003-b222-515f33a99cf2@samsung.com> Date: Fri, 8 Mar 2024 18:14:21 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 bpf-next 1/2] mm: Enforce VM_IOREMAP flag and range in ioremap_page_range. Content-Language: en-US To: Alexei Starovoitov , bpf@vger.kernel.org Cc: daniel@iogearbox.net, andrii@kernel.org, torvalds@linux-foundation.org, brho@google.com, hannes@cmpxchg.org, lstoakes@gmail.com, akpm@linux-foundation.org, urezki@gmail.com, hch@infradead.org, rppt@kernel.org, boris.ostrovsky@oracle.com, sstabellini@kernel.org, jgross@suse.com, linux-mm@kvack.org, xen-devel@lists.xenproject.org, kernel-team@fb.com From: Marek Szyprowski In-Reply-To: <20240305030516.41519-2-alexei.starovoitov@gmail.com> Content-Transfer-Encoding: 8bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrOKsWRmVeSWpSXmKPExsWy7djP87r57q9TDVadFLGYs34Nm0XD4w5W i++/ZzNbXJzeymLx+chxNourPZ9ZLBYv/MZssXqTr8XpCYuYLObcNLI41vee1eLemv+sFne+ zWO3OLJ+O5PF6nXxFo/63rJbrL7IYvF9y2QmByGPw2/eM3tMbH7H7rFz1l12jwWbSj02r9Dy 6Lpxidlj06pONo9Nnyaxe5yY8ZvF4/CHKyweH5/eYvFYv+Uqi8fnTXIBvFFcNimpOZllqUX6 dglcGScWzWMsOKdc8WzdWfYGxslyXYwcHBICJhLrbiZ2MXJxCAmsYJRY2DOFGcL5wijRM+kd I4TzmVHi768zQA4nWMfaqU1MEInljBL37/+GqvrIKPFm01VmkCpeATuJbQ8XM4HYLAIqEn/a H7NDxAUlTs58wgJiiwrIS9y/NQMsLiyQLHH57wUwm1lAXOLWk/lgvSICXhJ3t7axQMRfM0ns vloBYrMJGEp0ve1iA7E5BZwk9j56zApRIy/RvHU22A8SAvc4Je5u+80GcbaLxP7tk6BeEJZ4 dXwLO4QtI/F/53wmiIZ2RokFv+9DORMYJRqe34LqsJa4c+4XGyjImAU0Jdbv0ocIO0pM6XjH BAlJPokbbwUhjuCTmLRtOjNEmFeio00IolpNYtbxdXBrD164xDyBUWkWUrDMQvL+LCTvzELY u4CRZRWjeGppcW56arFxXmq5XnFibnFpXrpecn7uJkZg2jz97/jXHYwrXn3UO8TIxMF4iFGC g1lJhJfF4mWqEG9KYmVValF+fFFpTmrxIUZpDhYlcV7VFPlUIYH0xJLU7NTUgtQimCwTB6dU A5M4z6VXBs4R515kOB54fal0Y0Pt2Vcr1E8F7tRgiGmPWXjm1I50i/5bTc1Ho4O5e1I4A393 xxQun3b1I3d7eN6uHlezg2L/vm8yZolO04iZo75cYbf46Sw17fTkztWT+1Z9tn20/cS2D6+s 1+s62rydEf6t8fQ7xRvvL2/ylnr590JUoWJN2Y/b/EwLayesOprhzNd16/ESry9Xipcv+lw6 g4HJOsFBYuebx7btx0Krzz+RuZellpA86a7z9I27vDQePjNITNQ/foyv7c6Mp+tj8oKWf9q6 aSbH1nfVEj/a1f+d1BZ7PWVh8T2m3fvPyac3PJQ/cOCm6mnHskXTNfS1YupdGhQkDylV+aXr M2crsRRnJBpqMRcVJwIA1gwiTQoEAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupileLIzCtJLcpLzFFi42I5/e/4Pd0899epBq3bpSzmrF/DZtHwuIPV 4vvv2cwWF6e3slh8PnKczeJqz2cWi8ULvzFbrN7ka3F6wiImizk3jSyO9b1ntbi35j+rxZ1v 89gtjqzfzmSxel28xaO+t+wWqy+yWHzfMpnJQcjj8Jv3zB4Tm9+xe+ycdZfdY8GmUo/NK7Q8 um5cYvbYtKqTzWPTp0nsHidm/GbxOPzhCovHx6e3WDzWb7nK4vF5k1wAb5SeTVF+aUmqQkZ+ cYmtUrShhZGeoaWFnpGJpZ6hsXmslZGpkr6dTUpqTmZZapG+XYJexolF8xgLzilXPFt3lr2B cbJcFyMnh4SAicTaqU1MXYxcHEICSxklXsx/wwqRkJE4Oa0ByhaW+HOtiw2i6D2jxN5zrewg CV4BO4ltDxczgdgsAioSf9ofQ8UFJU7OfMICYosKyEvcvzUDLC4skCzx8uUjsKHMAuISt57M B+sVEfCSuLu1jQVkAbPAayaJ+0tbGEESQgKVEu/Xd4M1sAkYSnS9BbmCk4NTwEli76PHUIPM JLq2djFC2PISzVtnM09gFJqF5I5ZSPbNQtIyC0nLAkaWVYwiqaXFuem5xYZ6xYm5xaV56XrJ +bmbGIGJYtuxn5t3MM579VHvECMTB+MhRgkOZiURXhaLl6lCvCmJlVWpRfnxRaU5qcWHGE2B gTGRWUo0OR+YqvJK4g3NDEwNTcwsDUwtzYyVxHk9CzoShQTSE0tSs1NTC1KLYPqYODilGpic Js67+29/Ar8Dd3hCoWv05FdBc6SCp88z5RXlWbfmaZLzIUmn6K4wgZaFff9d/LeaLOZ71FQ+ fYHrg46rc44eutZkl3zj9VEbmYmv5zembVjNVnvVs8LT/tOBW09ZV9vY37OZxxzP/qNUcMIW UbeCaVN/eT14l8ms73Ks2aZKdEYAX/3Ry5sNE0ymGcT6faybv4XjX29B80bLr32RFssm+Nfy 7+5zqWirdOY6q7xsQdVjL+b2CxKeuXPT5P5KP9Lgklq/7vo6qalaLTYzvRTmSnreXS5+4Lzg kUTv73YCfQFn351dEH6l0sCXK0BVRok7QTvU3u3iuvnaFTyM899oXvptySbxcubJKuGl4kos xRmJhlrMRcWJAJJePS+dAwAA X-CMS-MailID: 20240308171422eucas1p293895be469655aa618535cf199b0c43a X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20240308171422eucas1p293895be469655aa618535cf199b0c43a X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20240308171422eucas1p293895be469655aa618535cf199b0c43a References: <20240305030516.41519-1-alexei.starovoitov@gmail.com> <20240305030516.41519-2-alexei.starovoitov@gmail.com> X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 3CC75120009 X-Stat-Signature: kr84ftituuitao871iym6u8wmpirttkf X-HE-Tag: 1709918065-847361 X-HE-Meta: U2FsdGVkX18r+92PNyljrXJLxEKJvykjuCgumjYfLr/D08BgIjQ2noEkiPfskgIRC6Y3pAHiO2Ewhh1qturxbvHapFDESsOAheK7ANar9fTOKF3ekjS2StcvqAKxkgXIOdCPx6myRYEBEoDE37zF4ZtLZkR6RTNVQ2telyyQX27pQ3fXB6X69jZb+2yeUo6W2gJC+WkNVf3QKQ7AhF57Vo2JhtM1VpzqJkbQiZuHhDDVMSG/p8fn/dfj+4Er9y7yltWOsY84nT6xMFsrlbhS9JqGhAj3rEreulmSuKQdpcU65uWIsnqN3F5GFkgRXWFdRIQ7rkTNPTQHEtwOxRGrvEa8MSG6NJ4uZCTtxkKnDEcgB6Q406IEW30PcVtKwYPENRTk5hk0wBOSOIKF41TCUTRrdl/4s1szDpQ8uSfrFl04demGjpQCcju5dTT0U1jxYkmP082XD1EsrYh/Rdl5kB+6BkbhxOAV5CTQZ7vNuE/85w5PkkrKDj8ETKjcVDmrjvRPj3KK1tGIrfwP3CHpljBJQxPnS90k6ka3HWs3moQjFiNCCuIBTMaBaUC2M+2oFOnhVhtmNuTI9MnHk+iTofWmvpghfQCz8GqXry+AoWC1iC6Eh6lFnFYnL4wbuADZNkjnfuNfuIuHGTVWRL9obDkEZZK865KQFCIUxlbQjXLx6h0NMuH/oA86M7uKRXe3hVFyWGcQtglvhjvkrbG6xGr9ttzySUziX8HTygZxUtJrZhUaP+iF1SBtQitnFp16lpZ0gBfBhki5Swseq+PH/JLy9/SSR4evEeeOffM2gheoBxrtXOOeZB859mdjkqZz0KKu03F19nSHbtf4NC1iDxUVFaOiOTrL2zlnYsMSDRYEXfelB0XZ4qrLRNUYA3r6/i/aIgnutj3hqCzzIxit2abkd+LOiwvIhhkUk2jZfxLroLQ/iOovQEx7cX7L2MTIDLKKXBrXrvHqNfv06rI eKjO051P O1O0RKGTN1rJWGtc6+rDuLgP3qM4xnKyH98ajaApJwcvgCtH+nMEEG/8Lrlgr2/z8FkJYoOu66XzI/yEx05HSsZGV5RR8W7nAxH02AEOTSK3d8p0mqe8JO+mnzOJCf2PAUL7Ip1sfUWxbwWKAjhCWy00xQDWBFsT6osvivhPoCE5FScOyhGyuIpqiowpBQvZyKagH5keLidkEAvopdAF/diMq9ZVedW+abiH1n1TUGqdkN2/OAHLkR8kF0A== 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: List-Subscribe: List-Unsubscribe: On 05.03.2024 04:05, Alexei Starovoitov wrote: > From: Alexei Starovoitov > > There are various users of get_vm_area() + ioremap_page_range() APIs. > Enforce that get_vm_area() was requested as VM_IOREMAP type and range > passed to ioremap_page_range() matches created vm_area to avoid > accidentally ioremap-ing into wrong address range. > > Reviewed-by: Christoph Hellwig > Signed-off-by: Alexei Starovoitov > --- This patch landed in today's linux-next as commit 3e49a866c9dc ("mm: Enforce VM_IOREMAP flag and range in ioremap_page_range."). Unfortunately it triggers the following warning on all my test machines with PCI bridges. Here is an example reproduced with QEMU and ARM64 'virt' machine: pci-host-generic 4010000000.pcie: host bridge /pcie@10000000 ranges: pci-host-generic 4010000000.pcie:       IO 0x003eff0000..0x003effffff -> 0x0000000000 pci-host-generic 4010000000.pcie:      MEM 0x0010000000..0x003efeffff -> 0x0010000000 pci-host-generic 4010000000.pcie:      MEM 0x8000000000..0xffffffffff -> 0x8000000000 ------------[ cut here ]------------ vm_area at addr fffffbfffe800000 is not marked as VM_IOREMAP WARNING: CPU: 0 PID: 1 at mm/vmalloc.c:315 ioremap_page_range+0x8c/0x174 Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.8.0-rc6+ #14694 Hardware name: linux,dummy-virt (DT) pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : ioremap_page_range+0x8c/0x174 lr : ioremap_page_range+0x8c/0x174 sp : ffff800083faba10 ... Call trace:  ioremap_page_range+0x8c/0x174  pci_remap_iospace+0x74/0x88  devm_pci_remap_iospace+0x54/0xac  devm_of_pci_bridge_init+0x160/0x1fc  devm_pci_alloc_host_bridge+0xb4/0xd0  pci_host_common_probe+0x44/0x1a0  platform_probe+0x68/0xd8  really_probe+0x148/0x2b4  __driver_probe_device+0x78/0x12c  driver_probe_device+0xdc/0x164  __driver_attach+0x9c/0x1ac  bus_for_each_dev+0x74/0xd4  driver_attach+0x24/0x30  bus_add_driver+0xe4/0x1e8  driver_register+0x60/0x128  __platform_driver_register+0x28/0x34  gen_pci_driver_init+0x1c/0x28  do_one_initcall+0x74/0x2f4  kernel_init_freeable+0x28c/0x4dc  kernel_init+0x24/0x1dc  ret_from_fork+0x10/0x20 irq event stamp: 74360 hardirqs last  enabled at (74359): [] console_unlock+0x120/0x12c hardirqs last disabled at (74360): [] el1_dbg+0x24/0x8c softirqs last  enabled at (71258): [] __do_softirq+0x4a0/0x4e8 softirqs last disabled at (71245): [] ____do_softirq+0x10/0x1c ---[ end trace 0000000000000000 ]--- pci-host-generic 4010000000.pcie: error -22: failed to map resource [io  0x0000-0xffff] pci-host-generic 4010000000.pcie: Memory resource size exceeds max for 32 bits pci-host-generic 4010000000.pcie: ECAM at [mem 0x4010000000-0x401fffffff] for [bus 00-ff] pci-host-generic 4010000000.pcie: PCI host bridge to bus 0000:00 pci_bus 0000:00: root bus resource [bus 00-ff] pci_bus 0000:00: root bus resource [mem 0x10000000-0x3efeffff] pci_bus 0000:00: root bus resource [mem 0x8000000000-0xffffffffff] pci 0000:00:00.0: [1b36:0008] type 00 class 0x060000 conventional PCI endpoint It looks that PCI related code must be somehow adjusted for this change. > mm/vmalloc.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > index d12a17fc0c17..f42f98a127d5 100644 > --- a/mm/vmalloc.c > +++ b/mm/vmalloc.c > @@ -307,8 +307,21 @@ static int vmap_range_noflush(unsigned long addr, unsigned long end, > int ioremap_page_range(unsigned long addr, unsigned long end, > phys_addr_t phys_addr, pgprot_t prot) > { > + struct vm_struct *area; > int err; > > + area = find_vm_area((void *)addr); > + if (!area || !(area->flags & VM_IOREMAP)) { > + WARN_ONCE(1, "vm_area at addr %lx is not marked as VM_IOREMAP\n", addr); > + return -EINVAL; > + } > + if (addr != (unsigned long)area->addr || > + (void *)end != area->addr + get_vm_area_size(area)) { > + WARN_ONCE(1, "ioremap request [%lx,%lx) doesn't match vm_area [%lx, %lx)\n", > + addr, end, (long)area->addr, > + (long)area->addr + get_vm_area_size(area)); > + return -ERANGE; > + } > err = vmap_range_noflush(addr, end, phys_addr, pgprot_nx(prot), > ioremap_max_page_shift); > flush_cache_vmap(addr, end); Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland