Subject: Re: linux-next: boot failure after merge of the dma-mapping tree

From: Leon Romanovsky <[email-masked]>
Date: Wed, 9 Jul 2025 21:16:31 +0300

On Wed, Jul 09, 2025 at 11:39:53PM +1000, Stephen Rothwell wrote:
> Hi all,
> 
> After merging the dma-mapping tree, today's linux-next qemu boot test
> (powerpc pseries_le_defconfig) failed like this:
> 
> [    0.219439][    T1] ibmvscsi 71000003: SRP_VERSION: 16.a
> [    0.219472][    T1] ibmvscsi 71000003: Error -4 opening adapter
> [    0.219507][    T1] ibmvscsi 71000003: couldn't initialize crq. rc=-1
> [    0.221963][    T1] ibmvscsi 71000003: probe with driver ibmvscsi failed with error -1
> 
> The normal output is:
> 
> [    0.221208][    T1] ibmvscsi 71000003: SRP_VERSION: 16.a
> [    0.221272][    T1] ibmvscsi 71000003: Maximum ID: 64 Maximum LUN: 32 Maximum Channel: 3
> [    0.221310][    T1] scsi host0: IBM POWER Virtual SCSI Adapter 1.5.9
> [    0.221653][    C0] ibmvscsi 71000003: partner initialization complete
> [    0.221696][    C0] ibmvscsi 71000003: host srp version: 16.a, host partition qemu (0), OS 2, max io 2097152
> [    0.221752][    C0] ibmvscsi 71000003: sent SRP login
> [    0.221778][    C0] ibmvscsi 71000003: SRP_LOGIN succeeded
> [    0.223269][    T1] scsi 0:0:2:0: CD-ROM            QEMU     QEMU CD-ROM      2.5+ PQ: 0 ANSI: 5
> [    0.239389][   T28] Freeing initrd memory: 1844K
> [    0.302192][    C0] sr 0:0:2:0: Power-on or device reset occurred
> [    0.302411][    T1] sr 0:0:2:0: [sr0] scsi3-mmc drive: 16x/50x cd/rw xa/form2 cdda tray
> [    0.302450][    T1] cdrom: Uniform CD-ROM driver Revision: 3.20
> [    0.302800][    T1] sr 0:0:2:0: Attached scsi generic sg0 type 5
> 
> Bisectd to commit
> 
>   ec7352735abf ("dma-mapping: export new dma_*map_phys() interface")
> 
> And reverting that commit, and the following one, in today's linux-next
> release, fixes the problem.

I assume that this will fix the issue:

diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c
index 29e8594a725a..cb8936e4ffab 100644
--- a/kernel/dma/mapping.c
+++ b/kernel/dma/mapping.c
@@ -157,7 +157,7 @@ dma_addr_t dma_map_phys(struct device *dev, phys_addr_t phys, size_t size,
 {
 	const struct dma_map_ops *ops = get_dma_ops(dev);
 	struct page *page = phys_to_page(phys);
-	size_t offset = offset_in_page(page);
+	size_t offset = offset_in_page(phys);
 	bool is_pfn_valid = true;
 	dma_addr_t addr;

> -- 
> Cheers,
> Stephen Rothwell