Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v3.2-rc5 165 lines 4.2 kB view raw
1#ifndef _ASM_X86_PCI_H 2#define _ASM_X86_PCI_H 3 4#include <linux/mm.h> /* for struct page */ 5#include <linux/types.h> 6#include <linux/slab.h> 7#include <linux/string.h> 8#include <asm/scatterlist.h> 9#include <asm/io.h> 10#include <asm/x86_init.h> 11 12#ifdef __KERNEL__ 13 14struct pci_sysdata { 15 int domain; /* PCI domain */ 16 int node; /* NUMA node */ 17#ifdef CONFIG_X86_64 18 void *iommu; /* IOMMU private data */ 19#endif 20}; 21 22extern int pci_routeirq; 23extern int noioapicquirk; 24extern int noioapicreroute; 25 26/* scan a bus after allocating a pci_sysdata for it */ 27extern struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops, 28 int node); 29extern struct pci_bus *pci_scan_bus_with_sysdata(int busno); 30 31#ifdef CONFIG_PCI 32 33#ifdef CONFIG_PCI_DOMAINS 34static inline int pci_domain_nr(struct pci_bus *bus) 35{ 36 struct pci_sysdata *sd = bus->sysdata; 37 return sd->domain; 38} 39 40static inline int pci_proc_domain(struct pci_bus *bus) 41{ 42 return pci_domain_nr(bus); 43} 44#endif 45 46/* Can be used to override the logic in pci_scan_bus for skipping 47 already-configured bus numbers - to be used for buggy BIOSes 48 or architectures with incomplete PCI setup by the loader */ 49 50extern unsigned int pcibios_assign_all_busses(void); 51extern int pci_legacy_init(void); 52# ifdef CONFIG_ACPI 53# define x86_default_pci_init pci_acpi_init 54# else 55# define x86_default_pci_init pci_legacy_init 56# endif 57#else 58# define pcibios_assign_all_busses() 0 59# define x86_default_pci_init NULL 60#endif 61 62extern unsigned long pci_mem_start; 63#define PCIBIOS_MIN_IO 0x1000 64#define PCIBIOS_MIN_MEM (pci_mem_start) 65 66#define PCIBIOS_MIN_CARDBUS_IO 0x4000 67 68extern int pcibios_enabled; 69void pcibios_config_init(void); 70struct pci_bus *pcibios_scan_root(int bus); 71 72void pcibios_set_master(struct pci_dev *dev); 73void pcibios_penalize_isa_irq(int irq, int active); 74struct irq_routing_table *pcibios_get_irq_routing_table(void); 75int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq); 76 77 78#define HAVE_PCI_MMAP 79extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, 80 enum pci_mmap_state mmap_state, 81 int write_combine); 82 83 84#ifdef CONFIG_PCI 85extern void early_quirks(void); 86static inline void pci_dma_burst_advice(struct pci_dev *pdev, 87 enum pci_dma_burst_strategy *strat, 88 unsigned long *strategy_parameter) 89{ 90 *strat = PCI_DMA_BURST_INFINITY; 91 *strategy_parameter = ~0UL; 92} 93#else 94static inline void early_quirks(void) { } 95#endif 96 97extern void pci_iommu_alloc(void); 98 99#ifdef CONFIG_PCI_MSI 100/* MSI arch specific hooks */ 101static inline int x86_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) 102{ 103 return x86_msi.setup_msi_irqs(dev, nvec, type); 104} 105 106static inline void x86_teardown_msi_irqs(struct pci_dev *dev) 107{ 108 x86_msi.teardown_msi_irqs(dev); 109} 110 111static inline void x86_teardown_msi_irq(unsigned int irq) 112{ 113 x86_msi.teardown_msi_irq(irq); 114} 115#define arch_setup_msi_irqs x86_setup_msi_irqs 116#define arch_teardown_msi_irqs x86_teardown_msi_irqs 117#define arch_teardown_msi_irq x86_teardown_msi_irq 118/* implemented in arch/x86/kernel/apic/io_apic. */ 119int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); 120void native_teardown_msi_irq(unsigned int irq); 121/* default to the implementation in drivers/lib/msi.c */ 122#define HAVE_DEFAULT_MSI_TEARDOWN_IRQS 123void default_teardown_msi_irqs(struct pci_dev *dev); 124#else 125#define native_setup_msi_irqs NULL 126#define native_teardown_msi_irq NULL 127#define default_teardown_msi_irqs NULL 128#endif 129 130#define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys) 131 132#endif /* __KERNEL__ */ 133 134#ifdef CONFIG_X86_64 135#include "pci_64.h" 136#endif 137 138/* implement the pci_ DMA API in terms of the generic device dma_ one */ 139#include <asm-generic/pci-dma-compat.h> 140 141/* generic pci stuff */ 142#include <asm-generic/pci.h> 143#define PCIBIOS_MAX_MEM_32 0xffffffff 144 145#ifdef CONFIG_NUMA 146/* Returns the node based on pci bus */ 147static inline int __pcibus_to_node(const struct pci_bus *bus) 148{ 149 const struct pci_sysdata *sd = bus->sysdata; 150 151 return sd->node; 152} 153 154static inline const struct cpumask * 155cpumask_of_pcibus(const struct pci_bus *bus) 156{ 157 int node; 158 159 node = __pcibus_to_node(bus); 160 return (node == -1) ? cpu_online_mask : 161 cpumask_of_node(node); 162} 163#endif 164 165#endif /* _ASM_X86_PCI_H */