Skip to content

Commit 7f2e8e1

Browse files
rleonmszyprow
authored andcommitted
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: 96ddf2e ("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
1 parent 8f0b4cc commit 7f2e8e1

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

drivers/parisc/sba_iommu.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -578,8 +578,8 @@ sba_io_pdir_entry(__le64 *pdir_ptr, space_t sid, phys_addr_t pba,
578578
pba &= IOVP_MASK;
579579
pba |= (ci >> PAGE_SHIFT) & 0xff; /* move CI (8 bits) into lowest byte */
580580

581-
pba |= SBA_PDIR_VALID_BIT; /* set "valid" bit */
582-
*pdir_ptr = cpu_to_le64(pba); /* swap and store into I/O Pdir */
581+
/* set "valid" bit, swap and store into I/O Pdir */
582+
*pdir_ptr = cpu_to_le64((unsigned long)pba | SBA_PDIR_VALID_BIT);
583583

584584
/*
585585
* If the PDC_MODEL capabilities has Non-coherent IO-PDIR bit set

0 commit comments

Comments
 (0)