This patch set implements Cavium ThunderX SoC support. Patch set rebased on to 4.2-rc5 and overrides patch set v0 so please drop them before applying this one. In case of any issues at build or run-time, please let me know. Al Stone (2): Fix arm64 compilation error in PNP code clocksource: arm_arch_timer: fix system hang Andre Przywara (14): KVM: arm/arm64: VGIC: don't track used LRs in the distributor KVM: arm/arm64: add emulation model specific destroy function KVM: arm/arm64: extend arch CAP checks to allow per-VM capabilities KVM: arm/arm64: make GIC frame address initialization model specific KVM: arm64: Introduce new MMIO region for the ITS base address KVM: arm64: handle ITS related GICv3 redistributor registers KVM: arm64: introduce ITS emulation file with stub functions KVM: arm64: implement basic ITS register handlers KVM: arm64: add data structures to model ITS interrupt translation KVM: arm64: handle pending bit for LPIs in ITS emulation KVM: arm64: sync LPI configuration and pending tables KVM: arm64: implement ITS command queue command handlers KVM: arm64: implement MSI injection in ITS emulation KVM: arm64: enable ITS emulation as a virtual MSI controller Andrew Pinski (5): ARM64:VDSO: Improve gettimeofday, don't use udiv ARM64:VDSO: Improve __do_get_tspec, don't use udiv ARM64:Improve ticked spinlocks for high core count. ARM64:spinlocks: Fix up for WFE and improve performance slightly. ARM64: Improve copy_page for 128 cache line sizes. Craig Magina (1): arm64: optimized copy_to_user and copy_from_user assembly code, part 2 David Daney (5): pci: Add is_pcierc element to struct pci_bus gic-its: Allow pci_requester_id to be overridden. arm64, pci: Allow RC drivers to supply pcibios_add_device() implementation. irqchip: gic-v3: Add gic_get_irq_domain() to get the irqdomain of the GIC. net/mlx4: Remove improper usage of dma_alloc_coherent(). Eric Auger (7): KVM: api: introduce KVM_IRQ_ROUTING_EXTENDED_MSI KVM: kvm_host: add devid in kvm_kernel_irq_routing_entry KVM: irqchip: convey devid to kvm_set_msi KVM: arm/arm64: enable irqchip routing KVM: arm/arm64: build a default routing table KVM: arm/arm64: enable MSI routing KVM: arm: implement kvm_set_msi by gsi direct mapping Feng Kan (1): arm64: optimized copy_to_user and copy_from_user assembly code Graeme Gregory (3): Juno / net: smsc911x add support for probing from ACPI net: smc91x: add ACPI probing support. virtio-mmio: add ACPI probing Naresh Bhat (1): mfd: vexpress-sysreg Add ACPI support for probing to driver Narinder (1): Fixes to get ACPI based kernel booting. Temporary fix to get going. Radha Mohan Chintakuntla (4): net: mdio-octeon: Modify driver to work on both ThunderX and Octeon net: mdio-octeon: Fix octeon_mdiobus_probe function for return values net: thunderx: Select CONFIG_MDIO_OCTEON for ThunderX NIC arm64: gicv3: its: Increase FORCE_MAX_ZONEORDER for Cavium ThunderX Robert Richter (12): Revert "acpi, thuderx, pci: Add MCFG fixup." net: thunderx: Fixes for nicvf_set_rxfh() net: cavium: thunder_bgx/nic: Factor out DT specific code irqchip, gicv3-its: Read typer register outside the loop irqchip, gicv3: Add HW revision detection and configuration irqchip, gicv3: Implement Cavium ThunderX erratum 23154 irqchip, gicv3-its: Implement Cavium ThunderX errata 22375, 24313 arm64: gicv3: its: Add range check for number of allocated pages Revert "mfd: vexpress: Remove non-DT code" net: thunderx: acpi: Get mac address from acpi table acpi, property: Fix EXPORT_SYMBOL_GPL() for acpi_dev_prop_read_single() arm64: topology: Use acpi_disabled for ACPI check Sunil Goutham (2): net: thunderx: Receive hashing HW offload support net: thunderx: Add receive error stats reporting via ethtool TIRUMALESH CHALAMARLA (1): arm64: Increase the max granular size Tirumalesh Chalamarla (3): PCI_ Add host drivers for Cavium ThunderX processors arm64: KVM: Enable minimalistic support for Thunder KVM: extend struct kvm_msi to hold a 32-bit device ID Tomasz Nowicki (24): arm64, acpi: Implement new "GIC version" field of MADT GIC entry. ACPI, GICv3: Allow to map irq for non-hierarchical doamin. GICv3: Refactor gic_of_init() of GICv3 driver to allow for FDT and ACPI initialization. ACPI, GICV3+: Add support for GICv3+ initialization. GICv3, ITS: Isolate FDT related code, extract common functions. ACPI, GICv3, ITS: Add support for ACPI ITS binding. x86, acpi, pci: Reorder logic of pci_mmconfig_insert() function x86, acpi, pci: Move arch-agnostic MMCFG code out of arch/x86/ directory x86, acpi, pci: Move PCI config space accessors. x86, acpi, pci: mmconfig_{32,64}.c code refactoring - remove code duplication. x86, acpi, pci: mmconfig_64.c becomes default implementation for arch agnostic low-level direct PCI config space accessors via MMCONFIG. pci, acpi: Share ACPI PCI config space accessors. arm64, pci, acpi: Let ARM64 to use MMCONFIG PCI config space accessors. arm64, pci: Add PCI ACPI probing for ARM64 net, phy, apci: Allow to initialize Marvell phy in the ACPI way. net, mdio, acpi: Add support for ACPI binding. net, thunder, bgx: Rework driver to support ACPI binding. arm64/acpi/pci: provide hook for MCFG fixups acpi, property: Export acpi_dev_prop_read call to be usable for kernel modules. ARM64 / ACPI: Point KVM to the virtual timer interrupt when booting with ACPI arm64, acpi, pci: Omit OF related IRQ parsing when running with ACPI kernel. pci, acpi, dma: Unify coherency checking logic for PCI devices. ARM64, ACPI, PCI, MSI: I/O Remapping Table (IORT) initial support. Compiler bug workaround!!! Vadim Lomovtsev (1): PCI: ThunderX: fix build issue Documentation/virtual/kvm/api.txt | 46 +- Documentation/virtual/kvm/devices/arm-vgic.txt | 9 + arch/arm/include/asm/kvm_host.h | 4 +- arch/arm/kvm/Kconfig | 3 + arch/arm/kvm/Makefile | 2 +- arch/arm/kvm/arm.c | 2 +- arch/arm64/Kconfig | 4 + arch/arm64/include/asm/acpi.h | 2 + arch/arm64/include/asm/cache.h | 2 +- arch/arm64/include/asm/cputype.h | 3 + arch/arm64/include/asm/kvm_host.h | 3 +- arch/arm64/include/asm/pci.h | 47 + arch/arm64/include/asm/spinlock.h | 36 +- arch/arm64/include/uapi/asm/kvm.h | 5 +- arch/arm64/kernel/Makefile | 1 + arch/arm64/kernel/acpi.c | 33 +- arch/arm64/kernel/pci-acpi.c | 362 +++++++ arch/arm64/kernel/pci.c | 35 +- arch/arm64/kernel/topology.c | 8 + arch/arm64/kernel/vdso/gettimeofday.S | 47 +- arch/arm64/kvm/Kconfig | 3 + arch/arm64/kvm/Makefile | 3 +- arch/arm64/kvm/guest.c | 6 + arch/arm64/kvm/reset.c | 8 +- arch/arm64/kvm/sys_regs_generic_v8.c | 2 + arch/arm64/lib/copy_from_user.S | 87 +- arch/arm64/lib/copy_page.S | 32 + arch/arm64/lib/copy_template.S | 212 ++++ arch/arm64/lib/copy_to_user.S | 57 +- arch/x86/include/asm/pci.h | 42 + arch/x86/include/asm/pci_x86.h | 72 -- arch/x86/pci/Makefile | 5 +- arch/x86/pci/acpi.c | 1 + arch/x86/pci/init.c | 1 + arch/x86/pci/mmconfig-shared.c | 242 +---- arch/x86/pci/mmconfig_32.c | 11 +- arch/x86/pci/mmconfig_64.c | 153 --- drivers/acpi/Kconfig | 3 + drivers/acpi/Makefile | 2 + drivers/acpi/bus.c | 1 + drivers/acpi/iort.c | 272 +++++ drivers/acpi/mmconfig.c | 437 ++++++++ drivers/acpi/property.c | 1 + drivers/clocksource/arm_arch_timer.c | 9 +- drivers/infiniband/hw/mlx4/cq.c | 2 +- drivers/infiniband/hw/mlx4/qp.c | 2 +- drivers/infiniband/hw/mlx4/srq.c | 3 +- drivers/irqchip/Kconfig | 1 + drivers/irqchip/irq-gic-common.c | 11 + drivers/irqchip/irq-gic-common.h | 9 + drivers/irqchip/irq-gic-v3-its.c | 241 +++-- drivers/irqchip/irq-gic-v3.c | 373 ++++++- drivers/mfd/vexpress-sysreg.c | 133 ++- drivers/net/ethernet/cavium/Kconfig | 2 + drivers/net/ethernet/cavium/thunder/nic.h | 36 +- .../net/ethernet/cavium/thunder/nicvf_ethtool.c | 50 +- drivers/net/ethernet/cavium/thunder/nicvf_main.c | 62 +- drivers/net/ethernet/cavium/thunder/nicvf_queues.c | 86 +- drivers/net/ethernet/cavium/thunder/nicvf_queues.h | 41 - drivers/net/ethernet/cavium/thunder/thunder_bgx.c | 175 ++- drivers/net/ethernet/mellanox/mlx4/alloc.c | 104 +- drivers/net/ethernet/mellanox/mlx4/en_cq.c | 9 +- drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 2 +- drivers/net/ethernet/mellanox/mlx4/en_resources.c | 32 - drivers/net/ethernet/mellanox/mlx4/en_rx.c | 11 +- drivers/net/ethernet/mellanox/mlx4/en_tx.c | 14 +- drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 2 - drivers/net/ethernet/mellanox/mlx4/mr.c | 5 +- drivers/net/ethernet/smsc/smc91x.c | 11 +- drivers/net/ethernet/smsc/smsc911x.c | 38 + drivers/net/phy/Kconfig | 9 +- drivers/net/phy/marvell.c | 118 +- drivers/net/phy/mdio-octeon.c | 198 +++- drivers/pci/host/Kconfig | 12 + drivers/pci/host/Makefile | 2 + drivers/pci/host/pcie-thunder-pem.c | 462 ++++++++ drivers/pci/host/pcie-thunder.c | 335 ++++++ drivers/pci/pci-acpi.c | 13 + drivers/pci/pci.c | 98 +- drivers/pci/probe.c | 4 +- drivers/pnp/resource.c | 2 + drivers/tty/n_tty.c | 3 +- drivers/virtio/virtio_mmio.c | 12 +- include/acpi/actbl1.h | 12 +- include/asm-generic/vmlinux.lds.h | 7 + include/kvm/arm_vgic.h | 39 +- include/linux/iort.h | 39 + include/linux/irqchip/arm-gic-acpi.h | 3 + include/linux/irqchip/arm-gic-v3.h | 22 +- include/linux/kvm_host.h | 7 +- include/linux/mlx4/device.h | 11 +- include/linux/mmconfig.h | 86 ++ include/linux/pci-acpi.h | 2 + include/linux/pci.h | 11 +- include/uapi/linux/kvm.h | 11 +- virt/kvm/arm/arch_timer.c | 76 +- virt/kvm/arm/its-emul.c | 1141 ++++++++++++++++++++ virt/kvm/arm/its-emul.h | 55 + virt/kvm/arm/vgic-v2-emul.c | 15 + virt/kvm/arm/vgic-v2.c | 1 + virt/kvm/arm/vgic-v3-emul.c | 105 +- virt/kvm/arm/vgic-v3.c | 1 + virt/kvm/arm/vgic.c | 375 +++++-- virt/kvm/arm/vgic.h | 5 + virt/kvm/eventfd.c | 6 +- virt/kvm/irqchip.c | 12 +- 106 files changed, 5824 insertions(+), 1257 deletions(-) create mode 100644 arch/arm64/kernel/pci-acpi.c create mode 100644 arch/arm64/lib/copy_template.S delete mode 100644 arch/x86/pci/mmconfig_64.c create mode 100644 drivers/acpi/iort.c create mode 100644 drivers/acpi/mmconfig.c create mode 100644 drivers/pci/host/pcie-thunder-pem.c create mode 100644 drivers/pci/host/pcie-thunder.c create mode 100644 include/linux/iort.h create mode 100644 include/linux/mmconfig.h create mode 100644 virt/kvm/arm/its-emul.c create mode 100644 virt/kvm/arm/its-emul.h -- 2.4.3