Changes in V2: Fixed compilation error on i386
This series introduces changes to reduce the time required to send a frequency
transition requests to the platform while using the cppc-cpufreq driver.
With these changes we see significant improvement in the average time to send
freq. transition request to the platform. Profiling on an ARM platform showed
that the average transaction time per request reduced from 200us to under 20us.
Ashwin Chaugule (1):
ACPI / CPPC: Optimize PCC Read Write operations
Prashanth Prakash (3):
acpi: cppc: optimized cpc_read and cpc_write
mailbox: pcc: optimized pcc_send_data
acpi: cppc: replace writeX/readX to PCC with relaxed version
drivers/acpi/cppc_acpi.c | 186 +++++++++++++++++++++++++++++++++++------------
drivers/mailbox/pcc.c | 111 ++++++++++++++++++++++++++--
2 files changed, 244 insertions(+), 53 deletions(-)
--
Qualcomm Technologies, Inc. on behalf
of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc.
is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
>From the functionality point of view this series might be split into the
following logic parts:
1. Make MMCONFIG code arch-agnostic which allows all architectures to collect
PCI config regions and used when necessary.
2. Move non-arch specific bits to the core code.
3. Use MMCONFIG code and implement generic ACPI based PCI host controller driver.
4. Enable above driver on ARM64
Patches has been built on top of 4.4 and can be found here:
git@github.com:semihalf-nowicki-tomasz/linux.git (pci-acpi-v3)
NOTE, this patch set depends on Matthew's patches:
http://www.spinics.net/lists/linux-pci/msg45950.htmlhttps://github.com/Vality/linux/tree/pci-fixes
This has been tested on Cavium ThunderX server and QEMU.
Any help in reviewing and testing is very appreciated.
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
- rebased to 4.4
v1 -> v2
- moved non-arch specific piece of code to dirver/acpi/ directory
- fixed IO resource handling
- introduced PCI config accessors quirks matching
- moved ACPI_COMPANION_SET to generic code
Liu Jiang (1):
ACPI, PCI: Refine the way to handle translation_offset for ACPI
resources
Tomasz Nowicki (20):
x86, pci: Reorder logic of pci_mmconfig_insert() function
x86, pci, acpi: Move arch-agnostic MMCONFIG (aka ECAM) and ACPI code
out of arch/x86/ directory
pci, acpi, mcfg: Provide generic implementation of MCFG code
initialization.
x86, pci: mmconfig_{32,64}.c code refactoring - remove code
duplication.
x86, pci, ecam: mmconfig_64.c becomes default implementation for ECAM
driver.
XEN / PCI: Remove the dependence on arch x86 when PCI_MMCONFIG=y
pci, acpi, mcfg: Provide default RAW ACPI PCI config space accessors.
arm64, acpi: Use empty PCI config space accessors from mcfg.c file.
pci, acpi, ecam: Add flag to indicate whether ECAM region was hot
added or not.
x86, pci: Cleanup platform specific MCFG data using previously added
ECAM hot_added flag.
pci, acpi: Move ACPI host bridge device companion assignment to core
code.
x86, ia64, pci: Remove ACPI companion device from platform specific
data.
pci, acpi: Provide generic way to assign bus domain number.
x86, ia64: Include acpi_pci_{add|remove}_bus to the default
pcibios_{add|remove}_bus implementation.
acpi, mcfg: Implement two calls that might be used to inject/remove
MCFG region.
x86, acpi, pci: Use equivalent function introduced in previous patch.
acpi, mcfg: Add default PCI config accessors implementation and
initial support for related quirks.
pci, acpi: Support for ACPI based generic PCI host controller init
pci, acpi: Match PCI config space accessors against platfrom specific
quirks.
arm64, pci, acpi: Start using ACPI based PCI host bridge driver for
ARM64.
arch/arm64/Kconfig | 7 ++
arch/arm64/kernel/pci.c | 25 ----
arch/ia64/hp/common/sba_iommu.c | 2 +-
arch/ia64/include/asm/pci.h | 1 -
arch/ia64/pci/pci.c | 52 +++-----
arch/ia64/sn/kernel/io_acpi_init.c | 4 +-
arch/x86/Kconfig | 4 +
arch/x86/include/asm/pci.h | 3 -
arch/x86/include/asm/pci_x86.h | 28 +----
arch/x86/pci/acpi.c | 41 ++----
arch/x86/pci/common.c | 10 --
arch/x86/pci/irq.c | 10 --
arch/x86/pci/mmconfig-shared.c | 250 ++++++-------------------------------
arch/x86/pci/mmconfig_32.c | 11 +-
arch/x86/pci/mmconfig_64.c | 67 +---------
arch/x86/pci/numachip.c | 1 +
drivers/acpi/Kconfig | 5 +
drivers/acpi/Makefile | 1 +
drivers/acpi/mcfg.c | 201 +++++++++++++++++++++++++++++
drivers/acpi/pci_root.c | 136 +++++++++++++++++++-
drivers/acpi/resource.c | 12 +-
drivers/pci/Kconfig | 10 ++
drivers/pci/Makefile | 5 +
drivers/pci/ecam.c | 234 ++++++++++++++++++++++++++++++++++
drivers/pci/pci.c | 29 ++++-
drivers/pci/probe.c | 5 +
drivers/xen/pci.c | 7 +-
include/acpi/acpi_bus.h | 1 +
include/asm-generic/vmlinux.lds.h | 7 ++
include/linux/acpi.h | 2 +
include/linux/ecam.h | 62 +++++++++
include/linux/pci-acpi.h | 17 +++
32 files changed, 802 insertions(+), 448 deletions(-)
create mode 100644 drivers/acpi/mcfg.c
create mode 100644 drivers/pci/ecam.c
create mode 100644 include/linux/ecam.h
--
1.9.1
Add in several tests that extend the testing done on the RSDP. If these
tests are all passed, the RSDP being examined should be compliant with
the ACPI 6.0 spec.
As part of that, when creating a dummy RSDP to substitute for one that
cannot be read or found, use either RsdtAddress or XsdtAddress as described
in the spec. For non-arm64, either can be used, but for arm64, only the
XsdtAddress is to be used.
Finally, update the regression tests for RSDP.
Al Stone (5):
RSDP: minor cleanups to rsdp.c for checkpatch issues
utilities: add a helper function for printing out architecture names
ACPI tables: when bodging up an RSDP, do the right thing for the arch
ACPI RSDP: flesh out the tests to check for full spec compliance.
Update regression test rsdp-0001/test-0001.sh
fwts-test/rsdp-0001/rsdp.log | 16 ++++-
src/acpi/rsdp/rsdp.c | 139 ++++++++++++++++++++++++++++++++++++-----
src/lib/include/fwts_arch.h | 1 +
src/lib/src/fwts_acpi_tables.c | 19 +++---
src/lib/src/fwts_arch.c | 18 ++++++
5 files changed, 169 insertions(+), 24 deletions(-)
--
2.5.0
I should have added these earlier, but I did not. So, here
they are: the updates to the regression tests affected by
adding the --arch parameter, and by updating the MADT tests.
Al Stone (7):
Update the regression test arg-help-0001/test-0001.sh
Update regression test for arg-help-0001/test-0002.sh
Update regression test for arg-show-tests-0001/test-0001.sh
Update regression test arg-show-tests-full-0001/test-0001.sh
Update the regression test arg-table-path-0001/test-0001.sh
Update the regression test madt-0001/test-0001.sh
Update the regression test madt-0001/test-0002.sh
fwts-test/arg-help-0001/arg-help-0001.log | 4 +
fwts-test/arg-help-0001/arg-help-0002.log | 4 +
.../arg-show-tests-0001/arg-show-tests-0001.log | 8 +-
.../arg-show-tests-full-0001.log | 26 +-
fwts-test/arg-table-path-0001/acpidump-0001.log | 741 +++++++++------------
fwts-test/madt-0001/madt-0001.log | 10 +-
fwts-test/madt-0001/madt-0002.log | 33 +-
7 files changed, 344 insertions(+), 482 deletions(-)
--
2.5.0
This patch series adds in specific ACPI compliance testing for the MADT
and all of its various subtables (16, currently).
The first three patches add in the idea of host and target architectures --
host being the arch that FWTS is running on, and target the arch whose
firmware is being tested. This is needed later in the MADT tests since what
is proper changes based on the architecture the firmware supports.
The fourth patch adds the detailed tests for the MADT and all but one of the
subtables currently defined in ACPI 6.0. The last two patches add in the
relatively new GIC ITS subtable and compliance tests for it.
There are still multiple TODOs in the compliance checks; these will be
added as clarification of the spec becomes available.
Changes for v3:
-- Add in support for the --arch=<name> parameter to specify the arch
for the target firmware (default is that host == target).
-- Add in the fwts_architecture typedef plus some helper functions so that
tests in the future can adapt their behavior as needed, and so that the
MADT tests can set themselves up properly.
-- Instead of creating a new sourc file src/acpi/compliance/madt.c, replace
the existing src/acpi/madt/madt.c tests since we're providing a superset.
-- Various minor style and syntax corrections (from Ian Colin King)
Changes for v2:
-- Clean up the white space problems
-- Fix errors found by checkpatch (minor syntax things)
-- Fix one logic error: while MADT and FADT table revisions *should* be
in sync, they seldom are, so report this as a test failure and continue
to test as much as possible instead of aborting completely, in some of
those cases.
Al Stone (6):
Start defining FWTS architectures as variables
Define some utility functions for using the fwts_architecture enum
Add mechanism to tell FWTS what architecture is being tested
ACPI: MADT: add in compliance tests for the MADT and subtables
ACPI: Add in MADT subtable description for GIC ITS subtable
ACPI: MADT: add in compliance checks for the GIC ITS subtable
src/acpi/madt/madt.c | 1551 +++++++++++++++++++++++++++++++-------
src/lib/include/fwts.h | 1 +
src/lib/include/fwts_acpi.h | 10 +
src/lib/include/fwts_arch.h | 41 +
src/lib/include/fwts_framework.h | 3 +
src/lib/src/Makefile.am | 1 +
src/lib/src/fwts_arch.c | 88 +++
src/lib/src/fwts_framework.c | 25 +
8 files changed, 1460 insertions(+), 260 deletions(-)
create mode 100644 src/lib/include/fwts_arch.h
create mode 100644 src/lib/src/fwts_arch.c
--
2.5.0
This series introduces changes to reduce the time required to send a frequency
transition requests to the platform while using the cppc-cpufreq driver.
With these changes we see significant improvement in the average time to send
freq. transition request to the platform. Profiling on an ARM platform showed
that the average transaction time per request reduced from 200us to under 20us.
Ashwin Chaugule (1):
ACPI / CPPC: Optimize PCC Read Write operations
Prashanth Prakash (3):
acpi: cppc: optimized cpc_read and cpc_write
mailbox: pcc: optimized pcc_send_data
acpi: cppc: replace writeX/readX to PCC with relaxed version
drivers/acpi/cppc_acpi.c | 184 +++++++++++++++++++++++++++++++++++------------
drivers/mailbox/pcc.c | 110 ++++++++++++++++++++++++++--
2 files changed, 241 insertions(+), 53 deletions(-)
--
Qualcomm Technologies, Inc. on behalf
of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc.
is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
Update the fwts man page to include some new parameters.
Al Stone (2):
Documentation: add --acpicompliance to man page
Documentation: add --arch to the man page
doc/fwts.1 | 11 +++++++++++
1 file changed, 11 insertions(+)
--
2.5.0