linux/arch/powerpc/platforms/powernv
Daniel Axtens 763d2d8df1 powerpc/powernv: Move dma_set_mask() from pnv_phb to pci_controller_ops
Previously, dma_set_mask() on powernv was convoluted:
 0) Call dma_set_mask() (a/p/kernel/dma.c)
 1) In dma_set_mask(), ppc_md.dma_set_mask() exists, so call it.
 2) On powernv, that function pointer is pnv_dma_set_mask().
    In pnv_dma_set_mask(), the device is pci, so call pnv_pci_dma_set_mask().
 3) In pnv_pci_dma_set_mask(), call pnv_phb->set_dma_mask() if it exists.
 4) It only exists in the ioda case, where it points to
    pnv_pci_ioda_dma_set_mask(), which is the final function.

So the call chain is:
 dma_set_mask() ->
  pnv_dma_set_mask() ->
   pnv_pci_dma_set_mask() ->
    pnv_pci_ioda_dma_set_mask()

Both ppc_md and pnv_phb function pointers are used.

Rip out the ppc_md call, pnv_dma_set_mask() and pnv_pci_dma_set_mask().

Instead:
 0) Call dma_set_mask() (a/p/kernel/dma.c)
 1) In dma_set_mask(), the device is pci, and pci_controller_ops.dma_set_mask()
    exists, so call pci_controller_ops.dma_set_mask()
 2) In the ioda case, that points to pnv_pci_ioda_dma_set_mask().

The new call chain is
 dma_set_mask() ->
  pnv_pci_ioda_dma_set_mask()

Now only the pci_controller_ops function pointer is used.

The fallback paths for p5ioc2 are the same.

Previously, pnv_pci_dma_set_mask() would find no pnv_phb->set_dma_mask()
function, to it would call __set_dma_mask().

Now, dma_set_mask() finds no ppc_md call or pci_controller_ops call,
so it calls __set_dma_mask().

Signed-off-by: Daniel Axtens <dja@axtens.net>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2015-06-02 13:18:49 +10:00
..
eeh-powernv.c powernv/eeh: Update the EEH code to use the opal irq domain 2015-05-22 15:14:38 +10:00
idle.c powerpc/powernv: Introduce sysfs control for fastsleep workaround behavior 2015-05-22 15:12:30 +10:00
Kconfig powerpc/powernv: Remove powernv RTAS support 2015-04-07 17:15:12 +10:00
Makefile powerpc/powernv: Add a virtual irqchip for opal events 2015-05-22 15:14:37 +10:00
opal-async.c powerpc/powernv: Reorder OPAL subsystem initialisation 2015-05-22 15:14:37 +10:00
opal-dump.c powernv/opal-dump: Convert to irq domain 2015-05-22 15:14:38 +10:00
opal-elog.c powernv/elog: Convert elog to opal irq domain 2015-05-22 15:14:38 +10:00
opal-flash.c powerpc/powernv: Add interfaces for flash device access 2015-04-11 20:49:21 +10:00
opal-hmi.c powerpc/powernv: Reorder OPAL subsystem initialisation 2015-05-22 15:14:37 +10:00
opal-irqchip.c opal: Remove events notifier 2015-05-22 15:14:38 +10:00
opal-lpc.c powerpc/powernv: Properly fix LPC debugfs endianness 2014-10-31 17:09:04 +11:00
opal-memory-errors.c powerpc/powernv: Reorder OPAL subsystem initialisation 2015-05-22 15:14:37 +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: Add pstore support on powernv 2015-03-23 14:06:10 +11:00
opal-power.c powerpc/powernv: reboot when requested by firmware 2015-04-15 16:35:23 -07:00
opal-rtc.c rtc/tpo: Driver to support rtc and wakeup on PowerNV platform 2014-11-17 18:04:01 +11:00
opal-sensor.c powerpc/powernv: Reorder OPAL subsystem initialisation 2015-05-22 15:14:37 +10:00
opal-sysparam.c powerpc/powernv: Silence SYSPARAM warning on boot 2015-05-11 20:26:42 +10:00
opal-tracepoints.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
opal-wrappers.S powerpc/powernv: Introduce sysfs control for fastsleep workaround behavior 2015-05-22 15:12:30 +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 opal: Remove events notifier 2015-05-22 15:14:38 +10:00
pci-ioda.c powerpc/powernv: Move dma_set_mask() from pnv_phb to pci_controller_ops 2015-06-02 13:18:49 +10:00
pci-p5ioc2.c powerpc/powernv: Specialise pci_controller_ops for each controller type 2015-06-02 13:18:49 +10:00
pci.c powerpc/powernv: Move dma_set_mask() from pnv_phb to pci_controller_ops 2015-06-02 13:18:49 +10:00
pci.h powerpc/powernv: Move dma_set_mask() from pnv_phb to pci_controller_ops 2015-06-02 13:18:49 +10:00
powernv.h powerpc/powernv: Move dma_set_mask() from pnv_phb to pci_controller_ops 2015-06-02 13:18:49 +10:00
rng.c KVM: PPC: Book3S HV: Add fast real-mode H_RANDOM implementation. 2015-04-21 15:21:29 +02:00
setup.c powerpc/powernv: Move dma_set_mask() from pnv_phb to pci_controller_ops 2015-06-02 13:18:49 +10:00
smp.c powerpc updates for 4.1 2015-04-16 13:53:32 -05:00
subcore-asm.S powerpc/powernv: Add support for POWER8 split core on powernv 2014-05-28 13:35:37 +10:00
subcore.c powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
subcore.h powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00