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 262A0C5475B for ; Fri, 8 Mar 2024 16:13:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6D51C6B03B2; Fri, 8 Mar 2024 11:13:40 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 685D76B03B3; Fri, 8 Mar 2024 11:13:40 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 575736B03B4; Fri, 8 Mar 2024 11:13:40 -0500 (EST) 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 47AF56B03B2 for ; Fri, 8 Mar 2024 11:13:40 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 0A12F120EC4 for ; Fri, 8 Mar 2024 16:13:40 +0000 (UTC) X-FDA: 81874367400.27.C25BFDA Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf09.hostedemail.com (Postfix) with ESMTP id D94DC140013 for ; Fri, 8 Mar 2024 16:13:37 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=DQW+3eVH; spf=pass (imf09.hostedemail.com: domain of helgaas@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=helgaas@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709914418; 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: in-reply-to:in-reply-to:references:dkim-signature; bh=HRDI/c07twicF6DQaGcknIjieJU16zveHJKdJ9xBxPc=; b=Naytig/QIGJVpM22PQVdA5nELakFnnwp+iEmt6MWTiRbPToTa8oMwg+T6FK7lGDhqVTGzo XfFK6eixwLTjE9oE0VWz5yq8ZLMtYBwh+G7vuMNKH06IbNLZdHZpEZ+eiOfyT80qS/tJkh hMETJ7616lbdskK9xxcBz1NyxIWwX1U= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709914418; a=rsa-sha256; cv=none; b=hXBq17x9P7TKIGF/9KYMOLhmIuE861Mydq6J0K/zLLDhm0OFDPu/8ITkBuIUnDUCVlZ0uK e9TYw0025c+74jrpcuHowCAuX8s/YipveGtXcPAmsi1BHFFT/ojpjhS38YubriJT7/o59P gkoa3gIdLVjCIy8bEaipBDprdOP+ngM= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=DQW+3eVH; spf=pass (imf09.hostedemail.com: domain of helgaas@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=helgaas@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id E4FF4CE2750; Fri, 8 Mar 2024 16:13:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EE693C433F1; Fri, 8 Mar 2024 16:13:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1709914413; bh=HSmK8y4wZfMaF9zPGuPkWTfpEvKg9sCf44pQ9TfKLKI=; h=Date:From:To:Cc:Subject:In-Reply-To:From; b=DQW+3eVHqqURvbqP0/pUlvw8/g5/RvwEORqnou2Y7p0rH5IW97csuPRMsZKHuO8wv JbYEgqXWP5gzgqGWLXQJsPVRu03W4kOTpFVHf/a+NrDqQ6kTt874PTcZM7MaMCX+Wr uwqk01eEt3KoUN/1g87iTSANfDlg7aknbs6mxCbl3CmXp5H2Zju1+EmAJPH+YHyGkV MF1oW8QdquOCla/Ntek6cp7x9wqjh3Pse9h8rT8YwxZ9UK1XleHhpluiUFiHintIx4 EyV28on5q+ldFpjpbqOPwYQJVTbkv3HuKdSRFJ6MUfmv1ou5GxPiC69kjgawJlxE5E EGp/9c1Tx8cfA== Date: Fri, 8 Mar 2024 10:13:31 -0600 From: Bjorn Helgaas To: Alexei Starovoitov Cc: Miguel Ojeda , Christoph Hellwig , Linus Torvalds , linux-mm , Andrew Morton , Catalin Marinas , Will Deacon , Linux ARM , Daniel Borkmann , bpf , Bjorn Helgaas , linux-pci@vger.kernel.org Subject: Re: vm_area at addr ffffffffc0800000 is not marked as VM_IOREMAP Message-ID: <20240308161331.GA682898@bhelgaas> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Stat-Signature: 7sehfhefii4gdn3gg9jjtrnorkkstxaz X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: D94DC140013 X-Rspam-User: X-HE-Tag: 1709914417-128167 X-HE-Meta: U2FsdGVkX18Y8rVOTz33pBCDZGUmH7GmL+y86fUSSx3OQ25EHyEkrBus8jwNEwTLJTAcAtBBSvqFQKtMWyGoE20u/hkmuuDfAbovf4QYIGd5OGNNoRF6Xd9Sc8vvacLsSTIVR+pVOs9VEEAxUMFu/BK4iHnCNlwnXjxA4Q2CZrE1THB670W09mRKqOcoxJ/+pHGhZ4Ea8+f/Uw/n6Kxx3lV5/IpfZTo+4xSqJol8TdUp4LW7OMFudcdlvbtfxriiHTCXalQBK/N4+fUaHX/C6JrShPimQyV7cIB1m5E6V9ZqRVWz/CyWmBaD+2/VSh4rHnZzp747+zq5cAgwTUrAw7NP5lmp3XpHRqy64OOsgkpb8Zw+Ioj8Ll5O6YiNABx4GHI7QHJY/Vc6OeLFpIXzwG47SVuJeHHBAt+XpDPSD57Vroo5K+s48Vc31syWJQEaa19xoCe2LcwuGH60ps6KQQMBDnRurgCIgcZDAsTsdUuckZXNtf0BSP5tMQiXW3xvHjIziSDmC3bYczL4FzJxACUt4AJ5zfJnygR9RNAldnNbQkzav6YzC42AmuLryB80gaHav2R0opRfMpGM/M9vH8uMSXIMRtiY5k9AsxYTiH7jfbLoBG3hgiXQWKJua/XW1nahldengaEiCyt9xbBZV70kh6Z2OpBNkHVy3PMDG2QcFfPII713ffWBrW9hOmMpGJocUg3i1Z2DujaO5wfMoIy9X14hpY7yoiqD2fFOzShyP4Iq2ehy8q3wP533l2IG/37kUuZSvxpNoVk7+fDbh9w9c/o+P9eU70ZcTp3EWU67C7vK8+RSOtLrl6zNNzQcLzB3DZPvtTKUsubkBXmm21mJStkmIOoTtDBrzTPuj2SP7XSaLDQAv62mhdlmfSLn7/0nkQN7OkdELfzWiOfnPQCgmpHutwsst13xbv1xzPMQfEdR2dolPbN8nn0ALdKgtBf9qLcY5J2LbgVq5Pk 1A1ystLN 8OUG8HduSVdp7VjP32x37fvgm5LrqsRV89CKN 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 Thu, Mar 07, 2024 at 07:49:16PM -0800, Alexei Starovoitov wrote: > Ok. I think I figured it out. > Please try the attached patch. > PCI address range is managed independently from vmalloc range. This suggests that the PCI maintainers should be aware of something, but I don't know what this means. Can you elaborate on what PCI address range management this is, e.g., what functions allocate from it? Or how PCI should have been able to avoid this issue? The patch is in a generic area with no obvious connection to PCI and no obvious sign of independent management, which doesn't feel quite right. Maybe this is what Christoph is getting at. > Enforce flags and range in ioremap_page_range() only when > the start address is within vmalloc range allocated by get_vm_area(). > Fixes: 3e49a866c9dc ("mm: Enforce VM_IOREMAP flag and range in ioremap_page_range.") > Signed-off-by: Alexei Starovoitov > --- > mm/vmalloc.c | 23 +++++++++++++---------- > 1 file changed, 13 insertions(+), 10 deletions(-) > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > index e5b8c70950bc..17eb0f974e0f 100644 > --- a/mm/vmalloc.c > +++ b/mm/vmalloc.c > @@ -311,16 +311,19 @@ int ioremap_page_range(unsigned long addr, unsigned long end, > 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; > + if (area) { > + if (!(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); > -- > 2.43.0 >