From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 22492330D23 for ; Fri, 10 Apr 2026 11:35:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775820913; cv=none; b=Km8jKpDlziEYr8Q9TzThdADdJoGdhdkWeH9ZnXK6eK5s4Ue2oLIq+ufUCd8+RIQZZ1BGpp/8AIVczwjkSZ4M9PmyqIqrfPKUDMR7UmTl1D0xLak1g4Xp4I3hA4HecYi0l+nn8TrKMYIKB4m+QTRf4tDhXTVC7UHd79dB5TOwiAg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775820913; c=relaxed/simple; bh=5s1rWQJ+Z2lDryIw+56RWZIO1a5iRfqeMXiOHFNPVzw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=o0lKWV+MBPXwvt9VQo+C7Ul3Dgua7OM8wqboCR8Y5BUuWdg8QuFjEQnllVduT3mq2+ASezpn9qy5GvpOKPvgob7Isyu+FZJTFZOkdHJkNN37zfynSBH2oOi8qWfx3N/DkwhGBJnCxqJrhKc0l4PN/byf2VEz1bC7hWUo+ljr00E= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=KIljmRgy; arc=none smtp.client-ip=209.85.221.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="KIljmRgy" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-43cf7190580so100168f8f.0 for ; Fri, 10 Apr 2026 04:35:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1775820910; x=1776425710; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=H+enkRwOXc8U3SwUhbI4xZhsqayARL5qS8xyrN2qP60=; b=KIljmRgy/LhuiFe+89NcAXlpmtiUsOIqS29P3toI4f8s+sNbfN5NkjNwEU3POj0DtB rZ7CFKZsXK1tOLjsHeZq+4zqHLiyogtwmu7SBEl6OaOJoaTaZYlLrVlyqKrnkmOfoCVZ iTpM4VabIN2VAT3E2GiW6SORLTBO/X/2uHrwx/CvgkMaOViUNxecJYaYndgtEZikuFI3 IIk9aLVhWYMKPX0HX5rBy+HCc60Ww7ZjSK2z8ITKcHzrjl6HDzXDcwwOkWUT+e5YxrRC kQJtiQRolRT6dIk6STRzdt4IFYegVj1F3wC9nRYisYjcITWR4Hvn9nVM2GZ7mjNYgYtw p/kQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775820910; x=1776425710; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=H+enkRwOXc8U3SwUhbI4xZhsqayARL5qS8xyrN2qP60=; b=kWaexdP4YTzavsWe10hDCsYp2u69bAHAbVwHiG8D7Mz7lOnSJNlSQLFN1azDLFLYxC 10t142ZPZw72GuFQ5t3ieE8ffut6bS4WwLjRpAdNVIDxowkOXpT9rF2lv/WjZUq+84ox Wxg98fEAbAzp6c+1XesV0bEqs5l+Xrihb57YYuCSeIKNwpka9KWN5HI/kXTQMOzL7CZ5 DwTy+3jId+ObhrcCfK5tcZYjda5Oav1rK6FdX7BJ6TYiIrB2tomXMLCWhKPnoxeSaHIT U21IM6dg4dPzmtoMjRElEIkKUhqILnmPVnO2yZdx6p9tGcyOraOtwZdbSvWZR5AXA9W4 gy9g== X-Forwarded-Encrypted: i=1; AJvYcCVFYuvn6v0+BeQqAtghsdgHPIb3kS6FY1KReBE3Ga3cHb8hYZY1U7sbT73VCq2En1Fn6SPHp0ZaOcwPFjI=@vger.kernel.org X-Gm-Message-State: AOJu0YwyiLeNPyiIQKhw1HejsAv1QNpYs3XN7sMRGQXSqLtaTYd4D41E NSq77OgczaaLjo/QSJ49ANj4KEyKrgBd9hLoool3xeyfu+ehaJug7tdU6/E3VPNGZhg= X-Gm-Gg: AeBDietJVaJJbvL4jg9h/g3mLg5iH1INjrzlDWbcAyH8POSxsXOaHw6hO6kJcZPCmE5 y7vOJCkT+9weiplML8YeCTwXw3eoPj999Q4hpktdZA2TQX4xIdb1e6xlIqFjFIP+NR2GirjURTQ 1fqnGYDpbY8omzJyfQVXTaGLF3vb4Kx59tQNZVomVlxPJ48hu6bNshsgHhD57qQ5Ya9dWyn8iTo vjTWdGjMCymR3bUvv8VpT5f/CyrAIqGfGsO2yAz57SIO2ENKNnIT40mYSSXQ2chqX7OoIUWf2Us TWaRAUKEfphyjKUhaHHy4wLX0R7qeoxheeLfoB+W63ABTGq3C9EFfacCI81DuB4RMGUHZuwa3XW o7854WcmZfz6uHGl0A8XiiUDpqVg0Bcj1m8mGo+HdO2dFFf86rSZUZOGj7YTk4Ozw8O4e9NMJgX K3POBiCOAeHxoSFTxG2+I9ntgZaTO6LVn2RzD6Xi4fKHW/Erk3VVdHscrSdFtQ5395B6B70yFpK 3+hx9nZhGUkp6NMLfjpoiLPX/ZZ X-Received: by 2002:a05:600c:1c06:b0:485:c456:5e4f with SMTP id 5b1f17b1804b1-488d7e21466mr17700085e9.0.1775820910015; Fri, 10 Apr 2026 04:35:10 -0700 (PDT) Received: from localhost (dynamic-2a00-1028-83b8-1e7a-3010-3bd6-8521-caf1.ipv6.o2.cz. [2a00:1028:83b8:1e7a:3010:3bd6:8521:caf1]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488d5b3c597sm62850165e9.12.2026.04.10.04.35.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Apr 2026 04:35:09 -0700 (PDT) From: Petr Tesarik To: Marek Szyprowski , Robin Murphy Cc: iommu@lists.linux.dev, linux-kernel@vger.kernel.org, Petr Tesarik Subject: [PATCH 1/1] dma-direct: fix use of max_pfn Date: Fri, 10 Apr 2026 13:35:06 +0200 Message-ID: <20260410113506.262579-1-ptesarik@suse.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Calculate the correct physical address of the last byte of memory. Since max_pfn is in fact "the PFN of the first page after the highest system RAM in physical address space", the highest address that might be used for a DMA buffer is one byte below max_pfn << PAGE_SHIFT. This fix is unlikely to make any difference in practice. It's just that the current formula is slightly confusing. Signed-off-by: Petr Tesarik --- kernel/dma/direct.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c index 8f43a930716d4..fefa6c4ac467f 100644 --- a/kernel/dma/direct.c +++ b/kernel/dma/direct.c @@ -39,7 +39,7 @@ static inline struct page *dma_direct_to_page(struct device *dev, u64 dma_direct_get_required_mask(struct device *dev) { - phys_addr_t phys = (phys_addr_t)(max_pfn - 1) << PAGE_SHIFT; + phys_addr_t phys = ((phys_addr_t)max_pfn << PAGE_SHIFT) - 1; u64 max_dma = phys_to_dma_direct(dev, phys); return (1ULL << (fls64(max_dma) - 1)) * 2 - 1; @@ -540,7 +540,7 @@ int dma_direct_mmap(struct device *dev, struct vm_area_struct *vma, int dma_direct_supported(struct device *dev, u64 mask) { - u64 min_mask = (max_pfn - 1) << PAGE_SHIFT; + u64 min_mask = ((u64)max_pfn << PAGE_SHIFT) - 1; /* * Because 32-bit DMA masks are so common we expect every architecture -- 2.53.0