]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
parisc: Set valid bit in high byte of 64‑bit physical address
authorLeon Romanovsky <leonro@nvidia.com>
Thu, 18 Dec 2025 12:08:08 +0000 (14:08 +0200)
committerMarek Szyprowski <m.szyprowski@samsung.com>
Fri, 19 Dec 2025 12:56:17 +0000 (13:56 +0100)
commit7f2e8e1d22f6e28edff3782535c16cfbace30902
treec1e9fda80e1366edfaff09dc72b2fe33c968b519
parent8f0b4cce4481fb22653697cced8d0d04027cb1e8
parisc: Set valid bit in high byte of 64‑bit physical address

On 32‑bit systems, phys_addr_t is defined as u32. However, parisc
expects physical addresses to be 64‑bit values so it can store a
validity bit in the upper byte.

Resolve this mismatch by casting the physical address to unsigned
long, ensuring it is treated as a 64‑bit value where required. This
fixes the failure to start block device drivers on the C3700
platform, as reported by Guenter.

QEMU command line to reproduce the issue (with Debian SID as rootfs):
  qemu-system-hppa -machine C3700 \
-kernel arch/parisc/boot/bzImage \
-append "console=ttyS0 \
root=/dev/sda rw rootwait panic=-1" \
-nographic \
-device lsi53c895a \
-drive file=rootfs-hppa.img,if=none,format=raw,id=hd0 \
-device scsi-hd,drive=hd0

Fixes: 96ddf2ef58ec ("parisc: Convert DMA map_page to map_phys interface")
Reported-by: Guenter Roeck <linux@roeck-us.net>
Closes: https://lore.kernel.org/all/b184f1bf-96dc-4546-8512-9cba5ecb58f7@roeck-us.net/
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Tested-by: Guenter Roeck <linux@roeck-us.net>
[mszyprow: dropped the lpa() macro removal]
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Link: https://lore.kernel.org/r/20251218-fix-parisc-conversion-v1-1-4a04d26b0168@nvidia.com
drivers/parisc/sba_iommu.c