Enumeration
     - Move pci_ari_enabled() to global header (Alex Williamson)
     - Account for ARI in _PRT lookups (Alex Williamson)
     - Remove unused pci_scan_bus_parented() (Yijing Wang)
 
   Resource management
     - Use host bridge _CRS info on systems with >32 bit addressing (Bjorn Helgaas)
     - Use host bridge _CRS info on Foxconn K8M890-8237A (Bjorn Helgaas)
     - Fix pci_address_to_pio() conversion of CPU address to I/O port (Zhichang Yuan)
     - Add pci_bus_addr_t (Yinghai Lu)
 
   PCI device hotplug
     - Wait for pciehp command completion where necessary (Alex Williamson)
     - Drop pointless ACPI-based "slot detection" check (Rafael J. Wysocki)
     - Check ignore_hotplug for all downstream devices (Rafael J. Wysocki)
     - Propagate the "ignore hotplug" setting to parent (Rafael J. Wysocki)
     - Inline pciehp "handle event" functions into the ISR (Bjorn Helgaas)
     - Clean up pciehp debug logging (Bjorn Helgaas)
 
   Power management
     - Remove redundant PCIe port type checking (Yijing Wang)
     - Add dev->has_secondary_link to track downstream PCIe links (Yijing Wang)
     - Use dev->has_secondary_link to find downstream links for ASPM (Yijing Wang)
     - Drop __pci_disable_link_state() useless "force" parameter (Bjorn Helgaas)
     - Simplify Clock Power Management setting (Bjorn Helgaas)
 
   Virtualization
     - Add ACS quirks for Intel 9-series PCH root ports (Alex Williamson)
     - Add function 1 DMA alias quirk for Marvell 9120 (Sakari Ailus)
 
   MSI
     - Disable MSI at enumeration even if kernel doesn't support MSI (Michael S. Tsirkin)
     - Remove unused pci_msi_off() (Bjorn Helgaas)
     - Rename msi_set_enable(), msix_clear_and_set_ctrl() (Michael S.  Tsirkin)
     - Export pci_msi_set_enable(), pci_msix_clear_and_set_ctrl() (Michael S. Tsirkin)
     - Drop pci_msi_off() calls during probe (Michael S. Tsirkin)
 
   APM X-Gene host bridge driver
     - Add APM X-Gene v1 PCIe MSI/MSIX termination driver (Duc Dang)
     - Add APM X-Gene PCIe MSI DTS nodes (Duc Dang)
     - Disable Configuration Request Retry Status for v1 silicon (Duc Dang)
     - Allow config access to Root Port even when link is down (Duc Dang)
 
   Broadcom iProc host bridge driver
     - Allow override of device tree IRQ mapping function (Hauke Mehrtens)
     - Add BCMA PCIe driver (Hauke Mehrtens)
     - Directly add PCI resources (Hauke Mehrtens)
     - Free resource list after registration (Hauke Mehrtens)
 
   Freescale i.MX6 host bridge driver
     - Add speed change timeout message (Troy Kisky)
     - Rename imx6_pcie_start_link() to imx6_pcie_establish_link() (Bjorn Helgaas)
 
   Freescale Layerscape host bridge driver
     - Use dw_pcie_link_up() consistently (Bjorn Helgaas)
     - Factor out ls_pcie_establish_link() (Bjorn Helgaas)
 
   Marvell MVEBU host bridge driver
     - Remove mvebu_pcie_scan_bus() (Yijing Wang)
 
   NVIDIA Tegra host bridge driver
     - Remove tegra_pcie_scan_bus() (Yijing Wang)
 
   Synopsys DesignWare host bridge driver
     - Consolidate outbound iATU programming functions (Jisheng Zhang)
     - Use iATU0 for cfg and IO, iATU1 for MEM (Jisheng Zhang)
     - Add support for x8 links (Zhou Wang)
     - Wait for link to come up with consistent style (Bjorn Helgaas)
     - Use pci_scan_root_bus() for simplicity (Yijing Wang)
 
   TI DRA7xx host bridge driver
     - Use dw_pcie_link_up() consistently (Bjorn Helgaas)
 
   Miscellaneous
     - Include <linux/pci.h>, not <asm/pci.h> (Bjorn Helgaas)
     - Remove unnecessary #includes of <asm/pci.h> (Bjorn Helgaas)
     - Remove unused pcibios_select_root() (again) (Bjorn Helgaas)
     - Remove unused pci_dma_burst_advice() (Bjorn Helgaas)
     - xen/pcifront: Don't use deprecated function pci_scan_bus_parented() (Arnd Bergmann)
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJViCSWAAoJEFmIoMA60/r8zX8P/1DPNnk+8xSQe3dYjnG8VW3P
 GPxeCqLMkjiF3ffxcLDzsgrHMjZEb8Co67WePs0k5V0lbZevoIwUo48+oO9B5jhc
 H5DuPZHyTHeOvaZv4GUY5vq/1DBh4JXmJc2V/BkaJ6qhXckF+SCam9C+s0p4950o
 QX/ifOjg/VHzmhaiL7wymJOzuniZmIttl+y+nzkl3AUJ+T6ZtQbUhz+8GZ3lj7Ma
 F+7JHhvm9K8Ljajxb6BLWTw4xgHA6ZN5PtYEx+Sl9QBYSsGfL7LnqyYD3KhJ7KV5
 4AHNJGEVhzNwSuyh+VQx1tNm7OHOqkAaTsYdCVUZRow+6CPd8P75QOMtpl+SmPJB
 RV1BAO75OTGqKg0B9IDg855y4Nh+4/dKoZlBPzpp7+cKw3ylaRAsNnaZ9ik5D62v
 RR06CFgWGHwDXSObgbRm4v0HwfAIHWWJzrPqAZmElh2dzb1Lv1I3AbB1SClCN6sl
 fnAu6CAwA47A5GT8xW3L0oQXdcSmdNUdNzZrsfDnOBIQWMsF+zBFKr6sTABVgyxp
 /WEJaNlvx8Zlq0bZlhGDdsGSbFNFzhX4avWZtXhvdcqFzH0KaVghYSayYvJE9Haq
 oakWqS+GZ3x40j+rdrgLg98AWRVraE1MvV1A7N9TIGjuuKqqbZfSP8kvX3QRQQhO
 Z2+X5hMM0s/tdYtADYu/
 =Qw+j
 -----END PGP SIGNATURE-----
Merge tag 'pci-v4.2-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
Pull PCI updates from Bjorn Helgaas:
 "PCI changes for the v4.2 merge window:
  Enumeration
    - Move pci_ari_enabled() to global header (Alex Williamson)
    - Account for ARI in _PRT lookups (Alex Williamson)
    - Remove unused pci_scan_bus_parented() (Yijing Wang)
  Resource management
    - Use host bridge _CRS info on systems with >32 bit addressing (Bjorn Helgaas)
    - Use host bridge _CRS info on Foxconn K8M890-8237A (Bjorn Helgaas)
    - Fix pci_address_to_pio() conversion of CPU address to I/O port (Zhichang Yuan)
    - Add pci_bus_addr_t (Yinghai Lu)
  PCI device hotplug
    - Wait for pciehp command completion where necessary (Alex Williamson)
    - Drop pointless ACPI-based "slot detection" check (Rafael J. Wysocki)
    - Check ignore_hotplug for all downstream devices (Rafael J. Wysocki)
    - Propagate the "ignore hotplug" setting to parent (Rafael J. Wysocki)
    - Inline pciehp "handle event" functions into the ISR (Bjorn Helgaas)
    - Clean up pciehp debug logging (Bjorn Helgaas)
  Power management
    - Remove redundant PCIe port type checking (Yijing Wang)
    - Add dev->has_secondary_link to track downstream PCIe links (Yijing Wang)
    - Use dev->has_secondary_link to find downstream links for ASPM (Yijing Wang)
    - Drop __pci_disable_link_state() useless "force" parameter (Bjorn Helgaas)
    - Simplify Clock Power Management setting (Bjorn Helgaas)
  Virtualization
    - Add ACS quirks for Intel 9-series PCH root ports (Alex Williamson)
    - Add function 1 DMA alias quirk for Marvell 9120 (Sakari Ailus)
  MSI
    - Disable MSI at enumeration even if kernel doesn't support MSI (Michael S. Tsirkin)
    - Remove unused pci_msi_off() (Bjorn Helgaas)
    - Rename msi_set_enable(), msix_clear_and_set_ctrl() (Michael S.  Tsirkin)
    - Export pci_msi_set_enable(), pci_msix_clear_and_set_ctrl() (Michael S. Tsirkin)
    - Drop pci_msi_off() calls during probe (Michael S. Tsirkin)
  APM X-Gene host bridge driver
    - Add APM X-Gene v1 PCIe MSI/MSIX termination driver (Duc Dang)
    - Add APM X-Gene PCIe MSI DTS nodes (Duc Dang)
    - Disable Configuration Request Retry Status for v1 silicon (Duc Dang)
    - Allow config access to Root Port even when link is down (Duc Dang)
  Broadcom iProc host bridge driver
    - Allow override of device tree IRQ mapping function (Hauke Mehrtens)
    - Add BCMA PCIe driver (Hauke Mehrtens)
    - Directly add PCI resources (Hauke Mehrtens)
    - Free resource list after registration (Hauke Mehrtens)
  Freescale i.MX6 host bridge driver
    - Add speed change timeout message (Troy Kisky)
    - Rename imx6_pcie_start_link() to imx6_pcie_establish_link() (Bjorn Helgaas)
  Freescale Layerscape host bridge driver
    - Use dw_pcie_link_up() consistently (Bjorn Helgaas)
    - Factor out ls_pcie_establish_link() (Bjorn Helgaas)
  Marvell MVEBU host bridge driver
    - Remove mvebu_pcie_scan_bus() (Yijing Wang)
  NVIDIA Tegra host bridge driver
    - Remove tegra_pcie_scan_bus() (Yijing Wang)
  Synopsys DesignWare host bridge driver
    - Consolidate outbound iATU programming functions (Jisheng Zhang)
    - Use iATU0 for cfg and IO, iATU1 for MEM (Jisheng Zhang)
    - Add support for x8 links (Zhou Wang)
    - Wait for link to come up with consistent style (Bjorn Helgaas)
    - Use pci_scan_root_bus() for simplicity (Yijing Wang)
  TI DRA7xx host bridge driver
    - Use dw_pcie_link_up() consistently (Bjorn Helgaas)
  Miscellaneous
    - Include <linux/pci.h>, not <asm/pci.h> (Bjorn Helgaas)
    - Remove unnecessary #includes of <asm/pci.h> (Bjorn Helgaas)
    - Remove unused pcibios_select_root() (again) (Bjorn Helgaas)
    - Remove unused pci_dma_burst_advice() (Bjorn Helgaas)
    - xen/pcifront: Don't use deprecated function pci_scan_bus_parented() (Arnd Bergmann)"
* tag 'pci-v4.2-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (58 commits)
  PCI: pciehp: Inline the "handle event" functions into the ISR
  PCI: pciehp: Rename queue_interrupt_event() to pciehp_queue_interrupt_event()
  PCI: pciehp: Make queue_interrupt_event() void
  PCI: xgene: Allow config access to Root Port even when link is down
  PCI: xgene: Disable Configuration Request Retry Status for v1 silicon
  PCI: pciehp: Clean up debug logging
  x86/PCI: Use host bridge _CRS info on systems with >32 bit addressing
  PCI: imx6: Add #define PCIE_RC_LCSR
  PCI: imx6: Use "u32", not "uint32_t"
  PCI: Remove unused pci_scan_bus_parented()
  xen/pcifront: Don't use deprecated function pci_scan_bus_parented()
  PCI: imx6: Add speed change timeout message
  PCI/ASPM: Simplify Clock Power Management setting
  PCI: designware: Wait for link to come up with consistent style
  PCI: layerscape: Factor out ls_pcie_establish_link()
  PCI: layerscape: Use dw_pcie_link_up() consistently
  PCI: dra7xx: Use dw_pcie_link_up() consistently
  x86/PCI: Use host bridge _CRS info on Foxconn K8M890-8237A
  PCI: pciehp: Wait for hotplug command completion where necessary
  PCI: Remove unused pci_dma_burst_advice()
  ...
		
	
			
		
			
				
	
	
		
			143 lines
		
	
	
	
		
			3.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
	
		
			3.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (C) 2009 Thomas Gleixner <tglx@linutronix.de>
 | 
						|
 *
 | 
						|
 *  For licencing details see kernel-base/COPYING
 | 
						|
 */
 | 
						|
#include <linux/init.h>
 | 
						|
#include <linux/ioport.h>
 | 
						|
#include <linux/module.h>
 | 
						|
#include <linux/pci.h>
 | 
						|
 | 
						|
#include <asm/bios_ebda.h>
 | 
						|
#include <asm/paravirt.h>
 | 
						|
#include <asm/pci_x86.h>
 | 
						|
#include <asm/mpspec.h>
 | 
						|
#include <asm/setup.h>
 | 
						|
#include <asm/apic.h>
 | 
						|
#include <asm/e820.h>
 | 
						|
#include <asm/time.h>
 | 
						|
#include <asm/irq.h>
 | 
						|
#include <asm/io_apic.h>
 | 
						|
#include <asm/hpet.h>
 | 
						|
#include <asm/pat.h>
 | 
						|
#include <asm/tsc.h>
 | 
						|
#include <asm/iommu.h>
 | 
						|
#include <asm/mach_traps.h>
 | 
						|
 | 
						|
void x86_init_noop(void) { }
 | 
						|
void __init x86_init_uint_noop(unsigned int unused) { }
 | 
						|
int __init iommu_init_noop(void) { return 0; }
 | 
						|
void iommu_shutdown_noop(void) { }
 | 
						|
 | 
						|
/*
 | 
						|
 * The platform setup functions are preset with the default functions
 | 
						|
 * for standard PC hardware.
 | 
						|
 */
 | 
						|
struct x86_init_ops x86_init __initdata = {
 | 
						|
 | 
						|
	.resources = {
 | 
						|
		.probe_roms		= probe_roms,
 | 
						|
		.reserve_resources	= reserve_standard_io_resources,
 | 
						|
		.memory_setup		= default_machine_specific_memory_setup,
 | 
						|
	},
 | 
						|
 | 
						|
	.mpparse = {
 | 
						|
		.mpc_record		= x86_init_uint_noop,
 | 
						|
		.setup_ioapic_ids	= x86_init_noop,
 | 
						|
		.mpc_apic_id		= default_mpc_apic_id,
 | 
						|
		.smp_read_mpc_oem	= default_smp_read_mpc_oem,
 | 
						|
		.mpc_oem_bus_info	= default_mpc_oem_bus_info,
 | 
						|
		.find_smp_config	= default_find_smp_config,
 | 
						|
		.get_smp_config		= default_get_smp_config,
 | 
						|
	},
 | 
						|
 | 
						|
	.irqs = {
 | 
						|
		.pre_vector_init	= init_ISA_irqs,
 | 
						|
		.intr_init		= native_init_IRQ,
 | 
						|
		.trap_init		= x86_init_noop,
 | 
						|
	},
 | 
						|
 | 
						|
	.oem = {
 | 
						|
		.arch_setup		= x86_init_noop,
 | 
						|
		.banner			= default_banner,
 | 
						|
	},
 | 
						|
 | 
						|
	.paging = {
 | 
						|
		.pagetable_init		= native_pagetable_init,
 | 
						|
	},
 | 
						|
 | 
						|
	.timers = {
 | 
						|
		.setup_percpu_clockev	= setup_boot_APIC_clock,
 | 
						|
		.tsc_pre_init		= x86_init_noop,
 | 
						|
		.timer_init		= hpet_time_init,
 | 
						|
		.wallclock_init		= x86_init_noop,
 | 
						|
	},
 | 
						|
 | 
						|
	.iommu = {
 | 
						|
		.iommu_init		= iommu_init_noop,
 | 
						|
	},
 | 
						|
 | 
						|
	.pci = {
 | 
						|
		.init			= x86_default_pci_init,
 | 
						|
		.init_irq		= x86_default_pci_init_irq,
 | 
						|
		.fixup_irqs		= x86_default_pci_fixup_irqs,
 | 
						|
	},
 | 
						|
};
 | 
						|
 | 
						|
struct x86_cpuinit_ops x86_cpuinit = {
 | 
						|
	.early_percpu_clock_init	= x86_init_noop,
 | 
						|
	.setup_percpu_clockev		= setup_secondary_APIC_clock,
 | 
						|
};
 | 
						|
 | 
						|
static void default_nmi_init(void) { };
 | 
						|
static int default_i8042_detect(void) { return 1; };
 | 
						|
 | 
						|
struct x86_platform_ops x86_platform = {
 | 
						|
	.calibrate_tsc			= native_calibrate_tsc,
 | 
						|
	.get_wallclock			= mach_get_cmos_time,
 | 
						|
	.set_wallclock			= mach_set_rtc_mmss,
 | 
						|
	.iommu_shutdown			= iommu_shutdown_noop,
 | 
						|
	.is_untracked_pat_range		= is_ISA_range,
 | 
						|
	.nmi_init			= default_nmi_init,
 | 
						|
	.get_nmi_reason			= default_get_nmi_reason,
 | 
						|
	.i8042_detect			= default_i8042_detect,
 | 
						|
	.save_sched_clock_state 	= tsc_save_sched_clock_state,
 | 
						|
	.restore_sched_clock_state 	= tsc_restore_sched_clock_state,
 | 
						|
};
 | 
						|
 | 
						|
EXPORT_SYMBOL_GPL(x86_platform);
 | 
						|
 | 
						|
#if defined(CONFIG_PCI_MSI)
 | 
						|
struct x86_msi_ops x86_msi = {
 | 
						|
	.setup_msi_irqs		= native_setup_msi_irqs,
 | 
						|
	.teardown_msi_irq	= native_teardown_msi_irq,
 | 
						|
	.teardown_msi_irqs	= default_teardown_msi_irqs,
 | 
						|
	.restore_msi_irqs	= default_restore_msi_irqs,
 | 
						|
};
 | 
						|
 | 
						|
/* MSI arch specific hooks */
 | 
						|
int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
 | 
						|
{
 | 
						|
	return x86_msi.setup_msi_irqs(dev, nvec, type);
 | 
						|
}
 | 
						|
 | 
						|
void arch_teardown_msi_irqs(struct pci_dev *dev)
 | 
						|
{
 | 
						|
	x86_msi.teardown_msi_irqs(dev);
 | 
						|
}
 | 
						|
 | 
						|
void arch_teardown_msi_irq(unsigned int irq)
 | 
						|
{
 | 
						|
	x86_msi.teardown_msi_irq(irq);
 | 
						|
}
 | 
						|
 | 
						|
void arch_restore_msi_irqs(struct pci_dev *dev)
 | 
						|
{
 | 
						|
	x86_msi.restore_msi_irqs(dev);
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
struct x86_io_apic_ops x86_io_apic_ops = {
 | 
						|
	.read			= native_io_apic_read,
 | 
						|
	.disable		= native_disable_io_apic,
 | 
						|
};
 |