linux_dsm_epyc7002/include/asm-ppc64
Paul Mackerras 4267292b0f ppc64: Set up PCI tree from Open Firmware device tree
This adds code which gives us the option on ppc64 of instantiating the
PCI tree (the tree of pci_bus and pci_dev structs) from the Open
Firmware device tree rather than by probing PCI configuration space.
The OF device tree has a node for each PCI device and bridge in the
system, with properties that tell us what addresses the firmware has
configured for them and other details.

There are a couple of reasons why this is needed.  First, on systems
with a hypervisor, there is a PCI-PCI bridge per slot under the PCI
host bridges.  These PCI-PCI bridges have special isolation features
for virtualization.  We can't write to their config space, and we are
not supposed to be reading their config space either.  The firmware
tells us about the address ranges that they pass in the OF device
tree.

Secondly, on powermacs, the interrupt controller is in a PCI device
that may be behind a PCI-PCI bridge.  If we happened to take an
interrupt just at the point when the device or a bridge on the path to
it was disabled for probing, we would crash when we try to access the
interrupt controller.

I have implemented a platform-specific function which is called for
each PCI bridge (host or PCI-PCI) to say whether the code should look
in the device tree or use normal PCI probing for the devices under
that bridge.  On pSeries machines we use the device tree if we're
running under a hypervisor, otherwise we use normal probing.  On
powermacs we use normal probing for the AGP bridge, since the device
for the AGP bridge itself isn't shown in the device tree (at least on
my G5), and the device tree for everything else.

This has been tested on a dual G5 powermac, a partition on a POWER5
machine (running under the hypervisor), and a legacy iSeries
partition.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2005-09-12 17:17:36 +10:00
..
iSeries [PATCH] iSeries build with newer assemblers and compilers 2005-08-16 21:06:25 -07:00
a.out.h [PATCH] ppc64: remove unnecessary include 2005-05-01 08:58:46 -07:00
abs_addr.h [PATCH] ppc64: Remove CONFIG_MSCHUNKS 2005-08-29 10:53:37 +10:00
atomic.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
auxvec.h [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
bitops.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bootinfo.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
btext.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bug.h [PATCH] ppc64: Fix issue with gcc 4.0 compiled kernels 2005-08-26 19:37:11 -07:00
byteorder.h [PATCH] headers: enable ppc64 ___arch__swab16 and ___arch__swab32 2005-06-28 21:20:32 -07:00
cache.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cacheflush.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
checksum.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
compat.h [PATCH] compat: be more consistent about [ug]id_t 2005-09-07 16:57:19 -07:00
cputable.h [PATCH] ppc64: Move oprofile_model into cpu feature struct 2005-09-06 16:09:21 +10:00
current.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dbdma.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
delay.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dma-mapping.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dma.h [PATCH] ppc64 iSeries: allow build with no PCI 2005-06-21 18:46:31 -07:00
eeh.h [PATCH] basic iomem annotations (ppc64) 2005-09-09 10:31:57 -07:00
elf.h [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
firmware.h [PATCH] ppc64: introduce FW_FEATURE_ISERIES 2005-08-29 10:53:35 +10:00
floppy.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
futex.h [PATCH] FUTEX_WAKE_OP: pthread_cond_signal() speedup 2005-09-07 16:57:17 -07:00
hardirq.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
hvcall.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
hvconsole.h [PATCH] hvc_console: Register ops when setting up hvc_console 2005-07-07 18:23:39 -07:00
hvcserver.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
hw_irq.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ide.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
imalloc.h [PATCH] Four level pagetables for ppc64 2005-08-29 10:53:31 +10:00
io.h [PATCH] basic iomem annotations (ppc64) 2005-09-09 10:31:57 -07:00
iommu.h [PATCH] ppc64: move iSeries vio iommu init 2005-08-29 10:53:32 +10:00
ipcbuf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq.h [PATCH] CHECK_IRQ_PER_CPU() to avoid dead code in __do_IRQ() 2005-09-07 16:57:29 -07:00
kdebug.h [PATCH] RCU: clean up a few remaining synchronize_kernel() calls 2005-06-25 16:24:38 -07:00
kexec.h [PATCH] ppc64: kexec support for ppc64 2005-06-25 16:24:51 -07:00
keylargo.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
kmap_types.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
kprobes.h [PATCH] kprobes: fix bug when probed on task and isr functions 2005-09-07 16:58:01 -07:00
lmb.h [PATCH] SPARSEMEM EXTREME 2005-09-05 00:05:38 -07:00
lppaca.h [PATCH] ppc64: Add VMX save flag to VPA 2005-09-05 00:06:01 -07:00
machdep.h ppc64: Set up PCI tree from Open Firmware device tree 2005-09-12 17:17:36 +10:00
macio.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
memory.h [PATCH] FUTEX_WAKE_OP: pthread_cond_signal() speedup 2005-09-07 16:57:17 -07:00
mmu_context.h [PATCH] ppc64: pgtable.h and other header cleanups 2005-05-05 16:36:32 -07:00
mmu.h [PATCH] Invert sense of SLB class bit 2005-09-06 16:57:46 +10:00
mmzone.h [PATCH] ppc64: sparsemem memory model 2005-06-23 09:45:06 -07:00
naca.h [PATCH] Remove NACA fixed address constraint 2005-08-29 10:53:33 +10:00
numnodes.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nvram.h [PATCH] ppc64: add a minimal nvram driver 2005-06-23 09:43:31 +10:00
of_device.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
oprofile_impl.h [PATCH] ppc64: Move oprofile_impl.h into include/asm-ppc64 2005-09-06 16:09:21 +10:00
paca.h [PATCH] ppc64: Simplify counting of lpevents, remove lpevent_count from paca 2005-06-30 15:16:09 +10:00
page.h [PATCH] mm: consolidate get_order 2005-09-05 00:05:39 -07:00
parport.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci-bridge.h ppc64: Set up PCI tree from Open Firmware device tree 2005-09-12 17:17:36 +10:00
pci.h [PATCH] Make sparc64 use setup-res.c 2005-09-08 14:57:25 -07:00
pgalloc.h [PATCH] Four level pagetables for ppc64 2005-08-29 10:53:31 +10:00
pgtable.h [PATCH] ppc64: four level pagetables fix 2005-08-30 12:08:10 +10:00
plpar_wrappers.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pmac_feature.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pmac_low_i2c.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pmc.h [PATCH] ppc64: Move ppc64_enable_pmcs() logic into a ppc_md function 2005-08-29 10:53:38 +10:00
posix_types.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ppc32.h [PATCH] compat: introduce compat_time_t 2005-06-23 09:45:32 -07:00
ppc_asm.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ppcdebug.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
processor.h [PATCH] Kprobes: prevent possible race conditions ppc64 changes 2005-09-07 16:58:00 -07:00
prom.h [PATCH] Separate pci bits out of struct device_node 2005-09-09 22:11:38 +10:00
pSeries_reconfig.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ptrace-common.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ptrace.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rtas.h [PATCH] ppc64: pSeries_progress -> rtas_progress 2005-06-23 09:43:28 +10:00
rwsem.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
scatterlist.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
seccomp.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sections.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
semaphore.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
serial.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sigcontext.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
signal.h [PATCH] asm/signal.h unification 2005-05-04 07:33:15 -07:00
smp.h [PATCH] ppc64: add BPA platform type 2005-06-23 09:43:37 +10:00
smu.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sparsemem.h [PATCH] ppc64: sparsemem memory model 2005-06-23 09:45:06 -07:00
spinlock_types.h [PATCH] spinlock consolidation 2005-09-10 10:06:21 -07:00
spinlock.h [PATCH] spinlock consolidation 2005-09-10 10:06:21 -07:00
sstep.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
stat.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
statfs.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
system.h [PATCH] ppc64: speedup cmpxchg 2005-09-06 16:07:53 +10:00
systemcfg.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
thread_info.h [PATCH] streamline preempt_count type across archs 2005-06-23 09:45:19 -07:00
time.h [PATCH] ppc64: consolidate calibrate_decr implementations 2005-06-23 09:43:07 +10:00
tlb.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
tlbflush.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
types.h [PATCH] sab: consolidate kmem_bufctl_t 2005-09-05 00:05:48 -07:00
uaccess.h [PATCH] remove verify_area(): remove verify_area() from various uaccess.h headers 2005-09-07 16:57:35 -07:00
ucontext.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
udbg.h [PATCH] ppc64: Consolidate early console and PPCDBG code 2005-09-06 16:07:37 +10:00
uninorth.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
unistd.h [PATCH] ppc64: inotify syscalls 2005-07-30 10:14:46 -07:00
vdso.h [PATCH] ppc64: Improve mapping of vDSO 2005-04-16 15:24:35 -07:00
vga.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vio.h [PATCH] Make MODULE_DEVICE_TABLE work for vio devices 2005-08-30 13:31:56 +10:00
xics.h [PATCH] ppc64: fix for kexec boot issue 2005-08-04 13:00:55 -07:00