Commit f3ddc438 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull arm64 fixes from Catalin Marinas:
 "Nothing major, some left-overs from the recent merging window (MTE,
  coco) and some newly found issues like the ptrace() ones.

   - MTE/hugetlbfs:

      - Set VM_MTE_ALLOWED in the arch code and remove it from the core
        code for hugetlbfs mappings

      - Fix copy_highpage() warning when the source is a huge page but
        not MTE tagged, taking the wrong small page path

   - drivers/virt/coco:

      - Add the pKVM and Arm CCA drivers under the arm64 maintainership

      - Fix the pkvm driver to fall back to ioremap() (and warn) if the
        MMIO_GUARD hypercall fails

      - Keep the Arm CCA driver default 'n' rather than 'm'

   - A series of fixes for the arm64 ptrace() implementation,
     potentially leading to the kernel consuming uninitialised stack
     variables when PTRACE_SETREGSET is invoked with a length of 0

   - Fix zone_dma_limit calculation when RAM starts below 4GB and
     ZONE_DMA is capped to this limit

   - Fix early boot warning with CONFIG_DEBUG_VIRTUAL=y triggered by a
     call to page_to_phys() (from patch_map()) which checks pfn_valid()
     before vmemmap has been set up

   - Do not clobber bits 15:8 of the ASID used for TTBR1_EL1 and TLBI
     ops when the kernel assumes 8-bit ASIDs but running under a
     hypervisor on a system that implements 16-bit ASIDs (found running
     Linux under Parallels on Apple M4)

   - ACPI/IORT: Add PMCG platform information for HiSilicon HIP09A as it
     is using the same SMMU PMCG as HIP09 and suffers from the same
     errata

   - Add GCS to cpucap_is_possible(), missed in the recent merge"

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
  arm64: ptrace: fix partial SETREGSET for NT_ARM_GCS
  arm64: ptrace: fix partial SETREGSET for NT_ARM_POE
  arm64: ptrace: fix partial SETREGSET for NT_ARM_FPMR
  arm64: ptrace: fix partial SETREGSET for NT_ARM_TAGGED_ADDR_CTRL
  arm64: cpufeature: Add GCS to cpucap_is_possible()
  coco: virt: arm64: Do not enable cca guest driver by default
  arm64: mte: Fix copy_highpage() warning on hugetlb folios
  arm64: Ensure bits ASID[15:8] are masked out when the kernel uses 8-bit ASIDs
  ACPI/IORT: Add PMCG platform information for HiSilicon HIP09A
  MAINTAINERS: Add CCA and pKVM CoCO guest support to the ARM64 entry
  drivers/virt: pkvm: Don't fail ioremap() call if MMIO_GUARD fails
  arm64: patching: avoid early page_to_phys()
  arm64: mm: Fix zone_dma_limit calculation
  arm64: mte: set VM_MTE_ALLOWED for hugetlbfs at correct place
parents ddfc146e d60624f7
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -255,8 +255,9 @@ stable kernels.
+----------------+-----------------+-----------------+-----------------------------+
| Hisilicon      | Hip08 SMMU PMCG | #162001800      | N/A                         |
+----------------+-----------------+-----------------+-----------------------------+
| Hisilicon      | Hip{08,09,10,10C| #162001900      | N/A                         |
|                | ,11} SMMU PMCG  |                 |                             |
| Hisilicon      | Hip{08,09,09A,10| #162001900      | N/A                         |
|                | ,10C,11}        |                 |                             |
|                | SMMU PMCG       |                 |                             |
+----------------+-----------------+-----------------+-----------------------------+
| Hisilicon      | Hip09           | #162100801      | HISILICON_ERRATUM_162100801 |
+----------------+-----------------+-----------------+-----------------------------+
+2 −0
Original line number Diff line number Diff line
@@ -3376,6 +3376,8 @@ S: Maintained
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git
F:	Documentation/arch/arm64/
F:	arch/arm64/
F:	drivers/virt/coco/arm-cca-guest/
F:	drivers/virt/coco/pkvm-guest/
F:	tools/testing/selftests/arm64/
X:	arch/arm64/boot/dts/
+2 −0
Original line number Diff line number Diff line
@@ -44,6 +44,8 @@ cpucap_is_possible(const unsigned int cap)
		return IS_ENABLED(CONFIG_ARM64_TLB_RANGE);
	case ARM64_HAS_S1POE:
		return IS_ENABLED(CONFIG_ARM64_POE);
	case ARM64_HAS_GCS:
		return IS_ENABLED(CONFIG_ARM64_GCS);
	case ARM64_UNMAP_KERNEL_AT_EL0:
		return IS_ENABLED(CONFIG_UNMAP_KERNEL_AT_EL0);
	case ARM64_WORKAROUND_843419:
+1 −2
Original line number Diff line number Diff line
@@ -847,8 +847,7 @@ static inline bool system_supports_poe(void)

static inline bool system_supports_gcs(void)
{
	return IS_ENABLED(CONFIG_ARM64_GCS) &&
		alternative_has_cap_unlikely(ARM64_HAS_GCS);
	return alternative_has_cap_unlikely(ARM64_HAS_GCS);
}

static inline bool system_supports_haft(void)
+2 −1
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@
#ifndef BUILD_VDSO
#include <linux/compiler.h>
#include <linux/fs.h>
#include <linux/hugetlb.h>
#include <linux/shmem_fs.h>
#include <linux/types.h>

@@ -44,7 +45,7 @@ static inline unsigned long arch_calc_vm_flag_bits(struct file *file,
	if (system_supports_mte()) {
		if (flags & (MAP_ANONYMOUS | MAP_HUGETLB))
			return VM_MTE_ALLOWED;
		if (shmem_file(file))
		if (shmem_file(file) || is_file_hugepages(file))
			return VM_MTE_ALLOWED;
	}

Loading