linux/arch/powerpc/platforms/powernv
Gavin Shan fe7e85c6f5 powerpc/powernv: Override dma_get_required_mask()
The dma_get_required_mask() function is used by some drivers to
query the platform about what DMA mask is needed to cover all of
memory. This is a bit of a strange semantic when we have to choose
between IOMMU translation or bypass, but essentially what it means
is "what DMA mask will give best performances".

Currently, our IOMMU backend always returns a 32-bit mask here, we
don't do anything special to it when we have bypass available. This
causes some drivers to choose a 32-bit mask, thus losing the ability
to use the bypass window, thinking this is more efficient. The problem
was reported from the driver of following device:

0004:03:00.0 0107: 1000:0087 (rev 05)
0004:03:00.0 Serial Attached SCSI controller: LSI Logic / Symbios \
             Logic SAS2308 PCI-Express Fusion-MPT SAS-2 (rev 05)

This patch adds an override of that function in order to, instead,
return a 64-bit mask whenever a bypass window is available in order
for drivers to prefer this configuration.

Reported-by: Murali N. Iyer <mniyer@us.ibm.com>
Suggested-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2014-09-30 17:15:20 +10:00
..
eeh-ioda.c powerpc/powernv: Fetch frozen PE on top level 2014-09-30 17:15:20 +10:00
eeh-powernv.c powerpc/eeh: Introduce eeh_ops::err_inject 2014-09-30 17:15:10 +10:00
Kconfig powerpc/powernv: Enable POWER8 doorbell IPIs 2014-06-11 17:05:12 +10:00
Makefile powerpc/powernv: Invoke opal call to handle hmi. 2014-08-05 16:33:52 +10:00
opal-async.c powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() 2014-07-28 14:11:26 +10:00
opal-dump.c powerpc/powernv: Check OPAL dump calls exist before using 2014-09-25 23:14:36 +10:00
opal-elog.c powerpc/powernv: Check OPAL elog calls exist before using 2014-09-25 23:14:36 +10:00
opal-flash.c powerpc/powernv: Pass buffer size to OPAL validate flash call 2014-06-05 14:54:04 +10:00
opal-hmi.c powerpc: use machine_subsys_initcall() for opal_hmi_handler_init() 2014-09-09 19:02:46 +10:00
opal-lpc.c powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() 2014-07-28 14:11:26 +10:00
opal-memory-errors.c powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() 2014-07-28 14:11:26 +10:00
opal-msglog.c powerpc/powernv: Fix reading of OPAL msglog 2014-06-11 17:03:36 +10:00
opal-nvram.c powerpc/powernv: Make OPAL NVRAM device tree accesses endian safe 2013-10-11 16:48:47 +11:00
opal-rtc.c powerpc/powernv: Check OPAL RTC calls exists before using 2014-09-25 23:14:35 +10:00
opal-sensor.c powerpc/powernv: Fix endian issues with sensor code 2014-04-09 12:52:49 +10:00
opal-sysparam.c powernv: Fix permissions on sysparam sysfs entries 2014-06-11 17:03:15 +10:00
opal-tracepoints.c powerpc/jump_label: use HAVE_JUMP_LABEL? 2014-09-25 23:14:45 +10:00
opal-wrappers.S powerpc/powernv: Sync header with firmware 2014-09-30 17:15:09 +10:00
opal-xscom.c powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() 2014-07-28 14:11:26 +10:00
opal.c powerpc/powernv: Interface to register/unregister opal dump region 2014-08-13 15:13:45 +10:00
pci-ioda.c powerpc/powernv: Override dma_get_required_mask() 2014-09-30 17:15:20 +10:00
pci-p5ioc2.c powerpc/powernv: Add a page size parameter to pnv_pci_setup_iommu_table() 2014-07-11 16:05:53 +10:00
pci.c powerpc/powernv: Override dma_get_required_mask() 2014-09-30 17:15:20 +10:00
pci.h powerpc/powernv: Override dma_get_required_mask() 2014-09-30 17:15:20 +10:00
powernv.h powerpc/powernv: Override dma_get_required_mask() 2014-09-30 17:15:20 +10:00
rng.c powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() 2014-07-28 14:11:26 +10:00
setup.c powerpc/powernv: Override dma_get_required_mask() 2014-09-30 17:15:20 +10:00
smp.c powerpc/powernv: Don't call generic code on offline cpus 2014-09-25 23:14:50 +10:00
subcore-asm.S powerpc/powernv: Add support for POWER8 split core on powernv 2014-05-28 13:35:37 +10:00
subcore.c powerpc: Ensure global functions include their prototype 2014-09-25 23:14:42 +10:00
subcore.h powerpc/powernv: Add support for POWER8 split core on powernv 2014-05-28 13:35:37 +10:00