On Mon, Oct 24, 2022 at 05:26:44PM +0530, Sreekanth Reddy wrote: > This issue is getting observed after having the below patch changes, > 2b9aba0c5d58e141e32bb1bb4c7cd91d19f075b8 scsi: mpt3sas: Fix return > value check of dma_get_required_mask() Looking at this commit it seems odd. dma_get_required_mask() should only be used as an optimization for hardware that actually benefits from a lower DMA Mask. That means either classic PCI that requires DAC cycles, or firmware architectures like aic7xxx that do need additional overhead. I don't think either is the case for mpt3sas, so I think (in addition to fixing up the Xen required mask), mpt3sas should do something like: diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c index 4e981ccaac4163..295942a8989780 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_base.c +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c @@ -2992,8 +2992,7 @@ _base_config_dma_addressing(struct MPT3SAS_ADAPTER *ioc, struct pci_dev *pdev) struct sysinfo s; u64 coherent_dma_mask, dma_mask; - if (ioc->is_mcpu_endpoint || sizeof(dma_addr_t) == 4 || - dma_get_required_mask(&pdev->dev) <= DMA_BIT_MASK(32)) { + if (ioc->is_mcpu_endpoint) { ioc->dma_mask = 32; coherent_dma_mask = dma_mask = DMA_BIT_MASK(32); /* Set 63 bit DMA mask for all SAS3 and SAS35 controllers */