>From the functionality point of view this series may be split into the
following logic parts:
1. Export ECAM API and add parent device to pci_config_window
2. Add IO resources handling to PCI core code
3. New MCFG driver
4. Cleanups and support for generic domain assignment based on ACPI
5. Implement ARM64 ACPI based PCI host controller driver under arch/arm64/
Patches has been built on top of 4.7-rc2 and can be found here:
git@github.com:semihalf-nowicki-tomasz/linux.git (pci-acpi-v9)
This has been tested on Cavium ThunderX server. Any help in reviewing and
testing is very appreciated.
v8 -> v9
- additional cleanups around generic assignment
- added back MCFG entries cache
- simplified config start address lookup
- fixed leak in pci_acpi_scan_root()
- isolated patch with ACPI RAW accessors implementation
- rebase against 4.7-rc2
v7 -> v8
- move code from drivers/acpi/pci_root_generic.c to arch/arm64/kernel/pci.c
- minor changes around domain assignment
- pci_mcfg.c improvements for parsing MCFG tables and lookup its entries
- rebase against 4.7-rc1
v6 -> v7
- drop quirks handling
- changes for ACPI companion and domain number assignment approach
- implement arch pcibios_{add|remove}_bus and call acpi_pci_{add|remove}_bus from there
- cleanups around nomenclature
- use resources oriented API for ECAM
- fix for based address calculation before mapping ECAM region
- remove useless lock for MCFG lookup
- move MCFG stuff to separated file pci_mcfg.c
- drop MCFG entries caching
- rebase against 4.6-rc7
v5 -> v6
- drop idea of x86 MMCONFIG code refactoring
- integrate JC's patches which introduce new ECAM API:
https://lkml.org/lkml/2016/4/11/907
git: https://github.com/jchandra-brcm/linux/ (arm64-acpi-pci-v3)
- integrate Sinan's fix for releasing IO resources, see patch [06/13]
- added ACPI support for ThunderX ECAM and PEM drivers
- rebase against 4.6-rc2
v4 -> v5
- drop MCFG refactoring group patches 1-6 from series v4 and integrate Jayachandran's patch
https://patchwork.ozlabs.org/patch/575525/
- rewrite PCI legacy IRQs allocation
- squash two patches 11 and 12 from series v4, fixed bisection issue
- changelog improvements
- rebase against 4.5-rc3
v3 -> v4
- drop Jiang's fix http://lkml.iu.edu/hypermail/linux/kernel/1601.1/04318.html
- add Lorenzo's fix patch 19/24
- ACPI PCI bus domain number assigning cleanup
- change resource management, we now claim and reassign resources
- improvements for applying quirks
- drop Matthew's http://www.spinics.net/lists/linux-pci/msg45950.html dependency
- rebase against 4.5-rc1
v2 -> v3
- fix legacy IRQ assigning and IO ports registration
- remove reference to arch specific companion device for ia64
- move ACPI PCI host controller driver to pci_root.c
- drop generic domain assignment for x86 and ia64 as I am not
able to run all necessary test variants
- drop patch which cleaned legacy IRQ assignment since it belongs to
Mathew's series:
https://patchwork.ozlabs.org/patch/557504/
- extend MCFG quirk code
- rebase against 4.4
v1 -> v2
- move non-arch specific piece of code to dirver/acpi/ directory
- fix IO resource handling
- introduce PCI config accessors quirks matching
- moved ACPI_COMPANION_SET to generic code
v1 - https://lkml.org/lkml/2015/10/27/504
v2 - https://lkml.org/lkml/2015/12/16/246
v3 - http://lkml.iu.edu/hypermail/linux/kernel/1601.1/04308.html
v4 - https://lkml.org/lkml/2016/2/4/646
v5 - https://lkml.org/lkml/2016/2/16/426
v6 - https://lkml.org/lkml/2016/4/15/594
v7 - https://lkml.org/lkml/2016/5/10/568
v8 - https://lkml.org/lkml/2016/5/30/468
Jayachandran C (3):
PCI/ECAM: Move ecam.h to linux/include/pci-ecam.h
PCI/ECAM: Add parent device field to pci_config_window
ACPI/PCI: Support IO resources when parsing PCI host bridge resources
Sinan Kaya (1):
PCI: Add new function to unmap IO resources
Tomasz Nowicki (7):
ACPI/PCI: Add generic MCFG table handling
PCI: Refactor generic bus domain assignment
PCI: Factor DT specific pci_bus_find_domain_nr() code out
ARM64/PCI: Add ACPI hook to assign domain number
ARM64/PCI: ACPI support for legacy IRQs parsing and consolidation with
DT code
ARM64/PCI: Implement ACPI low-level calls to access PCI_Config region
from AML
ARM64/PCI: Support for ACPI based PCI host controller
arch/arm64/Kconfig | 2 +
arch/arm64/kernel/pci.c | 146 ++++++++++++++++++++++++++++++++++--
drivers/acpi/Kconfig | 3 +
drivers/acpi/Makefile | 1 +
drivers/acpi/pci_mcfg.c | 92 +++++++++++++++++++++++
drivers/acpi/pci_root.c | 39 ++++++++++
drivers/pci/ecam.c | 6 +-
drivers/pci/ecam.h | 67 -----------------
drivers/pci/host/pci-host-common.c | 3 +-
drivers/pci/host/pci-host-generic.c | 3 +-
drivers/pci/host/pci-thunder-ecam.c | 3 +-
drivers/pci/host/pci-thunder-pem.c | 6 +-
drivers/pci/pci.c | 29 ++++++-
drivers/pci/probe.c | 4 +-
include/linux/pci-acpi.h | 2 +
include/linux/pci-ecam.h | 67 +++++++++++++++++
include/linux/pci.h | 15 ++--
17 files changed, 392 insertions(+), 96 deletions(-)
create mode 100644 drivers/acpi/pci_mcfg.c
delete mode 100644 drivers/pci/ecam.h
create mode 100644 include/linux/pci-ecam.h
--
1.9.1
Quirk handling relies on an idea of matching MCFG OEM ID, TABLE ID and
revision (the ones from standard header of MCFG table).
Static array is used to keep quirk entries. Each entry consist of
metioned MCFG IDs along with custom pci_ops structure and initialization call.
As an example, last patch presents quirk handling mechanism usage for
ThunderX PEM driver.
Tomasz Nowicki (5):
PCI: Embed pci_ecam_ops in pci_config_window structure
PCI/ACPI: Move ACPI ECAM mapping to generic MCFG driver
PCI: Check platform specific ECAM quirks
ARM64/PCI: Start using quirks handling for ACPI based PCI host
controller
PCI: thunder: Add ThunderX PEM MCFG quirk to the list
arch/arm64/kernel/pci.c | 42 +----------------
drivers/acpi/pci_mcfg.c | 40 ++++++++++++++++
drivers/pci/ecam.c | 6 +--
drivers/pci/host/Makefile | 1 +
drivers/pci/host/mcfg-quirks.c | 95 +++++++++++++++++++++++++++++++++++++
drivers/pci/host/mcfg-quirks.h | 24 ++++++++++
drivers/pci/host/pci-thunder-pem.c | 96 ++++++++++++++++++++++++++++++++------
include/linux/pci-acpi.h | 5 ++
include/linux/pci-ecam.h | 2 +-
9 files changed, 254 insertions(+), 57 deletions(-)
create mode 100644 drivers/pci/host/mcfg-quirks.c
create mode 100644 drivers/pci/host/mcfg-quirks.h
--
1.9.1
This series bases on pending ACPI PCI support for ARM64:
https://lkml.org/lkml/2016/5/30/468
Quirk handling relies on an idea of matching MCFG OEM ID and OEM revision
(the ones from standard header of MCFG table). Linker section is used
so that quirks can be registered using special macro (see patches) and
kept self contained.
As an example, last patch presents above mechanism usage for ThunderX PEM driver.
Tomasz Nowicki (3):
pci, acpi: Match PCI config space accessors against platfrom specific
ECAM quirks.
arm64, pci: Start using quirks handling for ACPI based PCI host
controller.
pci, pci-thunder-pem: Add ACPI support for ThunderX PEM.
arch/arm64/kernel/pci.c | 7 +-
drivers/acpi/pci_mcfg.c | 32 +++++++++
drivers/pci/host/pci-thunder-pem.c | 132 +++++++++++++++++++++++++++++++++----
include/asm-generic/vmlinux.lds.h | 7 ++
include/linux/pci-acpi.h | 19 ++++++
5 files changed, 181 insertions(+), 16 deletions(-)
--
1.9.1
From: Fu Wei <fu.wei(a)linaro.org>
This patchset:
(1)Try to fix an issue about min and max timeout validity check:
when max_hw_heartbeat_ms is defined, this check should be skipped.
(2)Use max_hw_heartbeat_ms instead of max_timeout in SBSA watchdog.
(3)Set WDOG_HW_RUNNING, when SBSA watchdog is already running before
it's initialized.
Changelog:
v1: The first formal upstreaming version
RFC: https://lkml.org/lkml/2016/5/3/145
Pratyush Anand (3):
watchdog: skip min and max timeout validity check when
max_hw_heartbeat_ms is defined
sbsa_gwdt: Use max_hw_heartbeat_ms instead of max_timeout
sbsa_gwdt: Set WDOG_HW_RUNNING, when watchdog is already running.
drivers/watchdog/sbsa_gwdt.c | 6 ++++--
drivers/watchdog/watchdog_core.c | 2 +-
2 files changed, 5 insertions(+), 3 deletions(-)
--
2.5.5
From: Fu Wei <fu.wei(a)linaro.org>
This patchset:
(1)Preparation for adding GTDT support in arm_arch_timer
1. Move some enums and marcos to header file
2. Add a new enum for spi type.
3. Improve printk relevant code
(2)Introduce ACPI GTDT parser: drivers/acpi/gtdt.c
Parse all kinds of timer in GTDT table of ACPI:arch timer,
memory-mapped timer and SBSA Generic Watchdog timer.
This driver can help to simplify all the relevant timer drivers,
and separate all the ACPI GTDT knowledge from them.
(3)Simplify ACPI code for arm_arch_timer
(4)Add GTDT support for ARM memory-mapped timer
Changelog:
v6: split the GTDT driver to 4 parts: basic, arch_timer, memory-mapped timer,
and SBSA Generic Watchdog timer
Improve driver by suggestions and example code from Daniel Lezcano
v5: https://lkml.org/lkml/2016/5/24/356
Sorting out all patches, simplify the API of GTDT driver:
GTDT driver just fills the data struct for arm_arch_timer driver.
v4: https://lists.linaro.org/pipermail/linaro-acpi/2016-March/006667.html
Delete the kvm relevant patches
Separate two patches for sorting out the code for arm_arch_timer.
Improve irq info export code to allow missing irq info in GTDT table.
v3: https://lkml.org/lkml/2016/2/1/658
Improve GTDT driver code:
(1)improve pr_* by defining pr_fmt(fmt)
(2)simplify gtdt_sbsa_gwdt_init
(3)improve gtdt_arch_timer_data_init, if table is NULL, it will try
to get GTDT table.
Move enum ppi_nr to arm_arch_timer.h, and add enum spi_nr.
Add arm_arch_timer get ppi from DT and GTDT support for kvm.
v2: https://lkml.org/lkml/2015/12/2/10
Rebase to latest kernel version(4.4-rc3).
Fix the bug about the config problem,
use CONFIG_ACPI_GTDT instead of CONFIG_ACPI in arm_arch_timer.c
v1: The first upstreaming version: https://lkml.org/lkml/2015/10/28/553
Fu Wei (10):
clocksource/drivers/arm_arch_timer: Move enums and defines to header
file
clocksource/drivers/arm_arch_timer: Add a new enum for spi type
clocksource/drivers/arm_arch_timer: Improve printk relevant code
acpi: Add some basic struct and functions in GTDT driver
acpi: Add arch_timer support in GTDT table parse driver
acpi: Add GTDT driver to kernel build system
clocksource/drivers/arm_arch_timer: Simplify ACPI support code.
acpi: Add memory-mapped timer support in GTDT driver
clocksource/drivers/arm_arch_timer: Add GTDT support for memory-mapped
timer
acpi: Add SBSA Generic Watchdog support in GTDT driver
drivers/acpi/Kconfig | 9 +
drivers/acpi/Makefile | 1 +
drivers/acpi/acpi_gtdt.c | 326 +++++++++++++++++++++++++++++++++++
drivers/clocksource/Kconfig | 1 +
drivers/clocksource/arm_arch_timer.c | 227 +++++++++++++++++-------
drivers/watchdog/Kconfig | 1 +
include/clocksource/arm_arch_timer.h | 32 ++++
include/linux/acpi.h | 7 +
8 files changed, 538 insertions(+), 66 deletions(-)
create mode 100644 drivers/acpi/acpi_gtdt.c
--
2.5.5
FWTS 16.06.00 is released.
It is available from:
Tar: http://fwts.ubuntu.com/release/fwts-V16.06.00.tar.gz
PPA:
https://launchpad.net/~firmware-testing-team/+archive/ubuntu/ppa-fwts-stable
Release notes:
https://wiki.ubuntu.com/FirmwareTestSuite/ReleaseNotes/16.06.00
= New Features =
* acpi: method: acpi 6.0 adds USB-C Connection to _UPC
* acpi: method: add _WPP method test (introduced in ACPI 6.1)
* acpi: method: add _WPC method test (introduced in ACPI 6.1)
* ACPICA: Update to version 20160527
* acpi: hest: Add GHESv2 checking (LP: #1587624)
* lib: acpi: Add support for HEST GHESv2
= Fixed Bugs =
* lib: replace hardcoded size=1 in calloc by sizeof(char)
* dmi: dmicheck: remove chassis check with acpi pm_profile
* acpi: method: update _GCP test according to ACPI 6.1
* acpi: einj: erst: update serialization action for ACPI 6.1
* dmi: dmicheck: fix typo: SBMBIOS should be SMBIOS
* Rename fwts_log_*_verbatum to fwts_log_*_verbatim
* lib: fwts_ipmi: don't close a -ve fd on error exit return path
* lib: fwts_ipmi: remove redundant for loop
* lib: fwts_devicetree: fix memory leak on data
* devicetree: dt_base: fix resource leak on error exit paths
* lib: fwts_arch: set len to 1 to ensure space for '\0'
* lib: fwts_args: clean up some scan-build warnings
* devicetree/dt_sysinfo: report FWTS_ERROR on non-null termimated
property
* src/utilities/kernelscan: fix parsing of escaped C strings
* lib: fwts_olog.h: fix include guard
* devicetree/dt_sysinfo: Add OPAL reference compatible checks
* efi_runtime: changing naming convention without p for pointer
* lib: fwts_uefi: update uefi status codes to UEFI 2.6
* uefirtvariable: modify getnextvariablename test for
!VariableNameSize smaller than 2 (LP: #1593597)
= Detail Changelog =
To check /usr/share/doc/fwts/changelog.Debian.gz or
fwts_16.06.00-0ubuntu1.debian.tar.gz from
https://launchpad.net/ubuntu/+source/fwts
Cheers,
Ivan
This series bases on pending ACPI PCI support for ARM64:
https://lkml.org/lkml/2016/6/10/706
Quirk handling relies on an idea of matching MCFG OEM ID and OEM TABLE ID
(the ones from standard header of MCFG table). Linker section is used
so that quirks can be registered using special macro (see patches) and
kept self contained.
v1 -> v2
- use oem_id and oem_table_id to replace oem_id and oem_revision to make
a difference between different platforms.
- change pci_cfg_fixup __mcfg_fixup_##system##dom##bus to
__mcfg_fixup_##oem_id##oem_table_id##dom##bus. With oem_id and oem_table_id
is to ensure that the object is unique.
Tomasz Nowicki (2):
ACPI/PCI: Match PCI config space accessors against platfrom specific
ECAM quirks
ARM64/PCI: Start using quirks handling for ACPI based PCI host
controller
arch/arm64/kernel/pci.c | 7 ++++---
drivers/acpi/pci_mcfg.c | 41 ++++++++++++++++++++++++++++++++++++---
include/asm-generic/vmlinux.lds.h | 7 +++++++
include/linux/pci-acpi.h | 20 +++++++++++++++++++
4 files changed, 69 insertions(+), 6 deletions(-)
--
1.9.1
This is a resend only: Ping? Last ping was 26 May; there has been zero
response since then. Already have one ACK from Lorenzo; another from an
arm64 maintainer would be really helpful.
The ACPI 6.1 specification was recently released at the end of January
2016, but the arm64 kernel documentation for the use of ACPI was written
for the 5.1 version of the spec. There were significant additions to the
spec that had not yet been mentioned -- for example, the 6.0 mechanisms
added to make it easier to define processors and low power idle states,
as well as the 6.1 addition allowing regular interrupts (not just from
GPIO) be used to signal ACPI general purpose events.
This patch reflects going back through and examining the specs in detail
and updating content appropriately. Whilst there, a few odds and ends of
typos were caught as well. This brings the documentation up to date with
ACPI 6.1 for arm64.
Changes for v5:
-- Miscellaneous typos and corrections (Lorenzo Pieralisi)
-- Add linux-acpi@ ML to the distribution list (Alexey Klimov)
-- Corrections to CPPC information (Alexey Klimov)
-- ACK from Lorenzo Pieralisi
-- Updated bibliographic info (Al Stone)
Changes for v4:
-- Clarify that IORT can sometimes be optional (Jon Masters).
-- Remove "Use as needed" descriptions of ACPI objects; they provide
no substantive information and doing so simplifies maintenance of
this document over time. These have been replaced with a simpler
notice that states that unless otherwise noted, do what the ACPI
specification says is needed.
-- Corrected the _OSI object usage recommendation; it described kernel
behavior that does not exist (Al Stone).
Changes for v3:
-- Clarify use of _LPI/_RDI (Vikas Sajjan)
-- Whitespace cleanup as pointed out by checkpatch
Changes for v2:
-- Clean up white space (Harb Abdulhahmid)
-- Clarification on _CCA usage (Harb Abdulhamid)
-- IORT moved to required from recommended (Hanjun Guo)
-- Clarify IORT description (Hanjun Guo)
Al Stone (1):
ARM64: ACPI: Update documentation for latest specification version
Documentation/arm64/acpi_object_usage.txt | 343 ++++++++++++++++--------------
Documentation/arm64/arm-acpi.txt | 40 ++--
2 files changed, 213 insertions(+), 170 deletions(-)
--
2.5.5