Commit 44fc8433 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull arm64 updates from Catalin Marinas:
 "These are the arm64 updates for 6.19.

  The biggest part is the Arm MPAM driver under drivers/resctrl/.
  There's a patch touching mm/ to handle spurious faults for huge pmd
  (similar to the pte version). The corresponding arm64 part allows us
  to avoid the TLB maintenance if a (huge) page is reused after a write
  fault. There's EFI refactoring to allow runtime services with
  preemption enabled and the rest is the usual perf/PMU updates and
  several cleanups/typos.

  Summary:

  Core features:

   - Basic Arm MPAM (Memory system resource Partitioning And Monitoring)
     driver under drivers/resctrl/ which makes use of the fs/rectrl/ API

  Perf and PMU:

   - Avoid cycle counter on multi-threaded CPUs

   - Extend CSPMU device probing and add additional filtering support
     for NVIDIA implementations

   - Add support for the PMUs on the NoC S3 interconnect

   - Add additional compatible strings for new Cortex and C1 CPUs

   - Add support for data source filtering to the SPE driver

   - Add support for i.MX8QM and "DB" PMU in the imx PMU driver

  Memory managemennt:

   - Avoid broadcast TLBI if page reused in write fault

   - Elide TLB invalidation if the old PTE was not valid

   - Drop redundant cpu_set_*_tcr_t0sz() macros

   - Propagate pgtable_alloc() errors outside of __create_pgd_mapping()

   - Propagate return value from __change_memory_common()

  ACPI and EFI:

   - Call EFI runtime services without disabling preemption

   - Remove unused ACPI function

  Miscellaneous:

   - ptrace support to disable streaming on SME-only systems

   - Improve sysreg generation to include a 'Prefix' descriptor

   - Replace __ASSEMBLY__ with __ASSEMBLER__

   - Align register dumps in the kselftest zt-test

   - Remove some no longer used macros/functions

   - Various spelling corrections"

* tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (94 commits)
  arm64/mm: Document why linear map split failure upon vm_reset_perms is not problematic
  arm64/pageattr: Propagate return value from __change_memory_common
  arm64/sysreg: Remove unused define ARM64_FEATURE_FIELD_BITS
  KVM: arm64: selftests: Consider all 7 possible levels of cache
  KVM: arm64: selftests: Remove ARM64_FEATURE_FIELD_BITS and its last user
  arm64: atomics: lse: Remove unused parameters from ATOMIC_FETCH_OP_AND macros
  Documentation/arm64: Fix the typo of register names
  ACPI: GTDT: Get rid of acpi_arch_timer_mem_init()
  perf: arm_spe: Add support for filtering on data source
  perf: Add perf_event_attr::config4
  perf/imx_ddr: Add support for PMU in DB (system interconnects)
  perf/imx_ddr: Get and enable optional clks
  perf/imx_ddr: Move ida_alloc() from ddr_perf_init() to ddr_perf_probe()
  dt-bindings: perf: fsl-imx-ddr: Add compatible string for i.MX8QM, i.MX8QXP and i.MX8DXL
  arm64: remove duplicate ARCH_HAS_MEM_ENCRYPT
  arm64: mm: use untagged address to calculate page index
  MAINTAINERS: new entry for MPAM Driver
  arm_mpam: Add kunit tests for props_mismatch()
  arm_mpam: Add kunit test for bitmap reset
  arm_mpam: Add helper to reset saved mbwu state
  ...
parents 2547f79b edde0606
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -391,13 +391,13 @@ Before jumping into the kernel, the following conditions must be met:
    - SMCR_EL2.LEN must be initialised to the same value for all CPUs the
      kernel will execute on.

    - HWFGRTR_EL2.nTPIDR2_EL0 (bit 55) must be initialised to 0b01.
    - HFGRTR_EL2.nTPIDR2_EL0 (bit 55) must be initialised to 0b01.

    - HWFGWTR_EL2.nTPIDR2_EL0 (bit 55) must be initialised to 0b01.
    - HFGWTR_EL2.nTPIDR2_EL0 (bit 55) must be initialised to 0b01.

    - HWFGRTR_EL2.nSMPRI_EL1 (bit 54) must be initialised to 0b01.
    - HFGRTR_EL2.nSMPRI_EL1 (bit 54) must be initialised to 0b01.

    - HWFGWTR_EL2.nSMPRI_EL1 (bit 54) must be initialised to 0b01.
    - HFGWTR_EL2.nSMPRI_EL1 (bit 54) must be initialised to 0b01.

  For CPUs with the Scalable Matrix Extension FA64 feature (FEAT_SME_FA64):

+5 −0
Original line number Diff line number Diff line
@@ -402,6 +402,11 @@ The regset data starts with struct user_sve_header, containing:
  streaming mode and any SETREGSET of NT_ARM_SSVE will enter streaming mode
  if the target was not in streaming mode.

* On systems that do not support SVE it is permitted to use SETREGSET to
  write SVE_PT_REGS_FPSIMD formatted data via NT_ARM_SVE, in this case the
  vector length should be specified as 0. This allows streaming mode to be
  disabled on systems with SME but not SVE.

* If any register data is provided along with SVE_PT_VL_ONEXEC then the
  registers data will be interpreted with the current vector length, not
  the vector length configured for use on exec.
+28 −1
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ properties:
    oneOf:
      - enum:
          - fsl,imx8-ddr-pmu
          - fsl,imx8dxl-db-pmu
          - fsl,imx8m-ddr-pmu
          - fsl,imx8mq-ddr-pmu
          - fsl,imx8mm-ddr-pmu
@@ -28,7 +29,10 @@ properties:
              - fsl,imx8mp-ddr-pmu
          - const: fsl,imx8m-ddr-pmu
      - items:
          - const: fsl,imx8dxl-ddr-pmu
          - enum:
              - fsl,imx8dxl-ddr-pmu
              - fsl,imx8qm-ddr-pmu
              - fsl,imx8qxp-ddr-pmu
          - const: fsl,imx8-ddr-pmu
      - items:
          - enum:
@@ -43,6 +47,14 @@ properties:
  interrupts:
    maxItems: 1

  clocks:
    maxItems: 2

  clock-names:
    items:
      - const: ipg
      - const: cnt

required:
  - compatible
  - reg
@@ -50,6 +62,21 @@ required:

additionalProperties: false

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: fsl,imx8dxl-db-pmu
    then:
      required:
        - clocks
        - clock-names
    else:
      properties:
        clocks: false
        clock-names: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
+10 −0
Original line number Diff line number Diff line
@@ -17470,6 +17470,16 @@ S: Maintained
F:	Documentation/devicetree/bindings/leds/backlight/mps,mp3309c.yaml
F:	drivers/video/backlight/mp3309c.c
MPAM DRIVER
M:	James Morse <james.morse@arm.com>
M:	Ben Horgan <ben.horgan@arm.com>
R:	Reinette Chatre <reinette.chatre@intel.com>
R:	Fenghua Yu <fenghuay@nvidia.com>
S:	Maintained
F:	drivers/resctrl/mpam_*
F:	drivers/resctrl/test_mpam_*
F:	include/linux/arm_mpam.h
MPS MP2869 DRIVER
M:	Wensheng Wang <wenswang@yeah.net>
L:	linux-hwmon@vger.kernel.org
+25 −1
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ config ARM64
	select ARCH_HAS_SETUP_DMA_OPS
	select ARCH_HAS_SET_DIRECT_MAP
	select ARCH_HAS_SET_MEMORY
	select ARCH_HAS_MEM_ENCRYPT
	select ARCH_HAS_FORCE_DMA_UNENCRYPTED
	select ARCH_STACKWALK
	select ARCH_HAS_STRICT_KERNEL_RWX
@@ -2023,6 +2022,31 @@ config ARM64_TLB_RANGE
	  ARMv8.4-TLBI provides TLBI invalidation instruction that apply to a
	  range of input addresses.

config ARM64_MPAM
	bool "Enable support for MPAM"
	select ARM64_MPAM_DRIVER if EXPERT	# does nothing yet
	select ACPI_MPAM if ACPI
	help
	  Memory System Resource Partitioning and Monitoring (MPAM) is an
	  optional extension to the Arm architecture that allows each
	  transaction issued to the memory system to be labelled with a
	  Partition identifier (PARTID) and Performance Monitoring Group
	  identifier (PMG).

	  Memory system components, such as the caches, can be configured with
	  policies to control how much of various physical resources (such as
	  memory bandwidth or cache memory) the transactions labelled with each
	  PARTID can consume.  Depending on the capabilities of the hardware,
	  the PARTID and PMG can also be used as filtering criteria to measure
	  the memory system resource consumption of different parts of a
	  workload.

	  Use of this extension requires CPU support, support in the
	  Memory System Components (MSC), and a description from firmware
	  of where the MSCs are in the address space.

	  MPAM is exposed to user-space via the resctrl pseudo filesystem.

endmenu # "ARMv8.4 architectural features"

menu "ARMv8.5 architectural features"
Loading