All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Shaoqin Huang <shahuang@redhat.com>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: Re: [RFC PATCH v1 1/2] KVM: arm64: Allow BT field in ID_AA64PFR1_EL1 writable
Date: Sat, 15 Jun 2024 05:08:37 +0800	[thread overview]
Message-ID: <202406150433.8J5jiWdc-lkp@intel.com> (raw)
In-Reply-To: <20240612023553.127813-2-shahuang@redhat.com>

Hi Shaoqin,

[This is a private test report for your RFC patch.]
kernel test robot noticed the following build errors:

[auto build test ERROR on kvmarm/next]
[also build test ERROR on linus/master v6.10-rc3 next-20240613]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Shaoqin-Huang/KVM-arm64-Allow-BT-field-in-ID_AA64PFR1_EL1-writable/20240612-103828
base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git next
patch link:    https://lore.kernel.org/r/20240612023553.127813-2-shahuang%40redhat.com
patch subject: [RFC PATCH v1 1/2] KVM: arm64: Allow BT field in ID_AA64PFR1_EL1 writable
config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20240615/202406150433.8J5jiWdc-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project 78ee473784e5ef6f0b19ce4cb111fb6e4d23c6b2)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240615/202406150433.8J5jiWdc-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406150433.8J5jiWdc-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from arch/arm64/kvm/sys_regs.c:16:
   In file included from include/linux/kvm_host.h:16:
   In file included from include/linux/mm.h:2208:
   include/linux/vmstat.h:508:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     508 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     509 |                            item];
         |                            ~~~~
   include/linux/vmstat.h:515:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     515 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     516 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:522:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
     522 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
   include/linux/vmstat.h:527:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     527 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     528 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:536:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     536 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     537 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
>> arch/arm64/kvm/sys_regs.c:2309:2: error: pasting formed 'SYS_(', an invalid preprocessing token
    2309 |         ID_WRITABLE(SYS_ID_AA64PFR1_EL1, ID_AA64PFR1_EL1_BT),
         |         ^
   arch/arm64/kvm/sys_regs.c:2121:2: note: expanded from macro 'ID_WRITABLE'
    2121 |         ID_DESC(name),                          \
         |         ^
   arch/arm64/kvm/sys_regs.c:2097:15: note: expanded from macro 'ID_DESC'
    2097 |         SYS_DESC(SYS_##name),                   \
         |                      ^
>> arch/arm64/kvm/sys_regs.c:2309:2: error: call to undeclared function 'SYS_'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
   arch/arm64/kvm/sys_regs.c:2121:2: note: expanded from macro 'ID_WRITABLE'
    2121 |         ID_DESC(name),                          \
         |         ^
   arch/arm64/kvm/sys_regs.c:2097:11: note: expanded from macro 'ID_DESC'
    2097 |         SYS_DESC(SYS_##name),                   \
         |                  ^
   arch/arm64/kvm/sys_regs.c:2097:11: note: expanded from macro 'SYS_'
   arch/arm64/kvm/sys_regs.c:2481:59: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2481 |         { PMU_SYS_REG(PMCR_EL0), .access = access_pmcr, .reset = reset_pmcr,
         |                                                                  ^~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2481:4: note: previous initialization is here
    2481 |         { PMU_SYS_REG(PMCR_EL0), .access = access_pmcr, .reset = reset_pmcr,
         |           ^~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2498:39: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2498 |           .access = access_pmswinc, .reset = NULL },
         |                                              ^~~~
   include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
       8 | #define NULL ((void *)0)
         |              ^~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2496:4: note: previous initialization is here
    2496 |         { PMU_SYS_REG(PMSWINC_EL0),
         |           ^~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2500:38: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2500 |           .access = access_pmselr, .reset = reset_pmselr, .reg = PMSELR_EL0 },
         |                                             ^~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2499:4: note: previous initialization is here
    2499 |         { PMU_SYS_REG(PMSELR_EL0),
         |           ^~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2502:38: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2502 |           .access = access_pmceid, .reset = NULL },
         |                                             ^~~~
   include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
       8 | #define NULL ((void *)0)
         |              ^~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2501:4: note: previous initialization is here
    2501 |         { PMU_SYS_REG(PMCEID0_EL0),
         |           ^~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2504:38: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2504 |           .access = access_pmceid, .reset = NULL },
         |                                             ^~~~
   include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
       8 | #define NULL ((void *)0)
         |              ^~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2503:4: note: previous initialization is here
    2503 |         { PMU_SYS_REG(PMCEID1_EL0),
         |           ^~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2506:42: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2506 |           .access = access_pmu_evcntr, .reset = reset_unknown,
         |                                                 ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2505:4: note: previous initialization is here
    2505 |         { PMU_SYS_REG(PMCCNTR_EL0),
         |           ^~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2509:43: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2509 |           .access = access_pmu_evtyper, .reset = NULL },
         |                                                  ^~~~
   include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
       8 | #define NULL ((void *)0)
         |              ^~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2508:4: note: previous initialization is here
    2508 |         { PMU_SYS_REG(PMXEVTYPER_EL0),
         |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2511:42: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2511 |           .access = access_pmu_evcntr, .reset = NULL },
         |                                                 ^~~~
   include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
       8 | #define NULL ((void *)0)
         |              ^~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2510:4: note: previous initialization is here
    2510 |         { PMU_SYS_REG(PMXEVCNTR_EL0),
         |           ^~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2517:13: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2517 |           .reset = reset_val, .reg = PMUSERENR_EL0, .val = 0 },
         |                    ^~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2516:4: note: previous initialization is here
    2516 |         { PMU_SYS_REG(PMUSERENR_EL0), .access = access_pmuserenr,
         |           ^~~~~~~~~~~~~~~~~~~~~~~~~~
--
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2665:2: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2665 |         PMU_PMEVTYPER_EL0(25),
         |         ^~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1331:13: note: expanded from macro 'PMU_PMEVTYPER_EL0'
    1331 |           .reset = reset_pmevtyper,                                     \
         |                    ^~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2665:2: note: previous initialization is here
    2665 |         PMU_PMEVTYPER_EL0(25),
         |         ^~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1330:4: note: expanded from macro 'PMU_PMEVTYPER_EL0'
    1330 |         { PMU_SYS_REG(PMEVTYPERn_EL0(n)),                               \
         |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2666:2: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2666 |         PMU_PMEVTYPER_EL0(26),
         |         ^~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1331:13: note: expanded from macro 'PMU_PMEVTYPER_EL0'
    1331 |           .reset = reset_pmevtyper,                                     \
         |                    ^~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2666:2: note: previous initialization is here
    2666 |         PMU_PMEVTYPER_EL0(26),
         |         ^~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1330:4: note: expanded from macro 'PMU_PMEVTYPER_EL0'
    1330 |         { PMU_SYS_REG(PMEVTYPERn_EL0(n)),                               \
         |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2667:2: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2667 |         PMU_PMEVTYPER_EL0(27),
         |         ^~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1331:13: note: expanded from macro 'PMU_PMEVTYPER_EL0'
    1331 |           .reset = reset_pmevtyper,                                     \
         |                    ^~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2667:2: note: previous initialization is here
    2667 |         PMU_PMEVTYPER_EL0(27),
         |         ^~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1330:4: note: expanded from macro 'PMU_PMEVTYPER_EL0'
    1330 |         { PMU_SYS_REG(PMEVTYPERn_EL0(n)),                               \
         |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2668:2: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2668 |         PMU_PMEVTYPER_EL0(28),
         |         ^~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1331:13: note: expanded from macro 'PMU_PMEVTYPER_EL0'
    1331 |           .reset = reset_pmevtyper,                                     \
         |                    ^~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2668:2: note: previous initialization is here
    2668 |         PMU_PMEVTYPER_EL0(28),
         |         ^~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1330:4: note: expanded from macro 'PMU_PMEVTYPER_EL0'
    1330 |         { PMU_SYS_REG(PMEVTYPERn_EL0(n)),                               \
         |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2669:2: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2669 |         PMU_PMEVTYPER_EL0(29),
         |         ^~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1331:13: note: expanded from macro 'PMU_PMEVTYPER_EL0'
    1331 |           .reset = reset_pmevtyper,                                     \
         |                    ^~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2669:2: note: previous initialization is here
    2669 |         PMU_PMEVTYPER_EL0(29),
         |         ^~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1330:4: note: expanded from macro 'PMU_PMEVTYPER_EL0'
    1330 |         { PMU_SYS_REG(PMEVTYPERn_EL0(n)),                               \
         |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2670:2: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2670 |         PMU_PMEVTYPER_EL0(30),
         |         ^~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1331:13: note: expanded from macro 'PMU_PMEVTYPER_EL0'
    1331 |           .reset = reset_pmevtyper,                                     \
         |                    ^~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2670:2: note: previous initialization is here
    2670 |         PMU_PMEVTYPER_EL0(30),
         |         ^~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1330:4: note: expanded from macro 'PMU_PMEVTYPER_EL0'
    1330 |         { PMU_SYS_REG(PMEVTYPERn_EL0(n)),                               \
         |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2676:13: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
    2676 |           .reset = reset_val, .reg = PMCCFILTR_EL0, .val = 0 },
         |                    ^~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2675:4: note: previous initialization is here
    2675 |         { PMU_SYS_REG(PMCCFILTR_EL0), .access = access_pmu_evtyper,
         |           ^~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1319:33: note: expanded from macro 'PMU_SYS_REG'
    1319 |         SYS_DESC(SYS_##name), .reset = reset_pmu_reg,                   \
         |                                        ^~~~~~~~~~~~~
>> arch/arm64/kvm/sys_regs.c:2309:2: error: initializer element is not a compile-time constant
    2309 |         ID_WRITABLE(SYS_ID_AA64PFR1_EL1, ID_AA64PFR1_EL1_BT),
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2121:2: note: expanded from macro 'ID_WRITABLE'
    2121 |         ID_DESC(name),                          \
         |         ^~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:2097:2: note: expanded from macro 'ID_DESC'
    2097 |         SYS_DESC(SYS_##name),                   \
         |         ^~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/sys_regs.h:247:6: note: expanded from macro 'SYS_DESC'
     247 |         Op0(sys_reg_Op0(reg)), Op1(sys_reg_Op1(reg)),   \
         |         ~~~~^~~~~~~~~~~~~~~~~
   arch/arm64/include/asm/sysreg.h:46:25: note: expanded from macro 'sys_reg_Op0'
      46 | #define sys_reg_Op0(id) (((id) >> Op0_shift) & Op0_mask)
         |                         ^
   arch/arm64/kvm/sys_regs.h:239:25: note: expanded from macro 'Op0'
     239 | #define Op0(_x)         .Op0 = _x
         |                                ^~
   77 warnings and 3 errors generated.


vim +2309 arch/arm64/kvm/sys_regs.c

  2201	
  2202	/*
  2203	 * Architected system registers.
  2204	 * Important: Must be sorted ascending by Op0, Op1, CRn, CRm, Op2
  2205	 *
  2206	 * Debug handling: We do trap most, if not all debug related system
  2207	 * registers. The implementation is good enough to ensure that a guest
  2208	 * can use these with minimal performance degradation. The drawback is
  2209	 * that we don't implement any of the external debug architecture.
  2210	 * This should be revisited if we ever encounter a more demanding
  2211	 * guest...
  2212	 */
  2213	static const struct sys_reg_desc sys_reg_descs[] = {
  2214		DBG_BCR_BVR_WCR_WVR_EL1(0),
  2215		DBG_BCR_BVR_WCR_WVR_EL1(1),
  2216		{ SYS_DESC(SYS_MDCCINT_EL1), trap_debug_regs, reset_val, MDCCINT_EL1, 0 },
  2217		{ SYS_DESC(SYS_MDSCR_EL1), trap_debug_regs, reset_val, MDSCR_EL1, 0 },
  2218		DBG_BCR_BVR_WCR_WVR_EL1(2),
  2219		DBG_BCR_BVR_WCR_WVR_EL1(3),
  2220		DBG_BCR_BVR_WCR_WVR_EL1(4),
  2221		DBG_BCR_BVR_WCR_WVR_EL1(5),
  2222		DBG_BCR_BVR_WCR_WVR_EL1(6),
  2223		DBG_BCR_BVR_WCR_WVR_EL1(7),
  2224		DBG_BCR_BVR_WCR_WVR_EL1(8),
  2225		DBG_BCR_BVR_WCR_WVR_EL1(9),
  2226		DBG_BCR_BVR_WCR_WVR_EL1(10),
  2227		DBG_BCR_BVR_WCR_WVR_EL1(11),
  2228		DBG_BCR_BVR_WCR_WVR_EL1(12),
  2229		DBG_BCR_BVR_WCR_WVR_EL1(13),
  2230		DBG_BCR_BVR_WCR_WVR_EL1(14),
  2231		DBG_BCR_BVR_WCR_WVR_EL1(15),
  2232	
  2233		{ SYS_DESC(SYS_MDRAR_EL1), trap_raz_wi },
  2234		{ SYS_DESC(SYS_OSLAR_EL1), trap_oslar_el1 },
  2235		{ SYS_DESC(SYS_OSLSR_EL1), trap_oslsr_el1, reset_val, OSLSR_EL1,
  2236			OSLSR_EL1_OSLM_IMPLEMENTED, .set_user = set_oslsr_el1, },
  2237		{ SYS_DESC(SYS_OSDLR_EL1), trap_raz_wi },
  2238		{ SYS_DESC(SYS_DBGPRCR_EL1), trap_raz_wi },
  2239		{ SYS_DESC(SYS_DBGCLAIMSET_EL1), trap_raz_wi },
  2240		{ SYS_DESC(SYS_DBGCLAIMCLR_EL1), trap_raz_wi },
  2241		{ SYS_DESC(SYS_DBGAUTHSTATUS_EL1), trap_dbgauthstatus_el1 },
  2242	
  2243		{ SYS_DESC(SYS_MDCCSR_EL0), trap_raz_wi },
  2244		{ SYS_DESC(SYS_DBGDTR_EL0), trap_raz_wi },
  2245		// DBGDTR[TR]X_EL0 share the same encoding
  2246		{ SYS_DESC(SYS_DBGDTRTX_EL0), trap_raz_wi },
  2247	
  2248		{ SYS_DESC(SYS_DBGVCR32_EL2), trap_undef, reset_val, DBGVCR32_EL2, 0 },
  2249	
  2250		{ SYS_DESC(SYS_MPIDR_EL1), NULL, reset_mpidr, MPIDR_EL1 },
  2251	
  2252		/*
  2253		 * ID regs: all ID_SANITISED() entries here must have corresponding
  2254		 * entries in arm64_ftr_regs[].
  2255		 */
  2256	
  2257		/* AArch64 mappings of the AArch32 ID registers */
  2258		/* CRm=1 */
  2259		AA32_ID_SANITISED(ID_PFR0_EL1),
  2260		AA32_ID_SANITISED(ID_PFR1_EL1),
  2261		{ SYS_DESC(SYS_ID_DFR0_EL1),
  2262		  .access = access_id_reg,
  2263		  .get_user = get_id_reg,
  2264		  .set_user = set_id_dfr0_el1,
  2265		  .visibility = aa32_id_visibility,
  2266		  .reset = read_sanitised_id_dfr0_el1,
  2267		  .val = ID_DFR0_EL1_PerfMon_MASK |
  2268			 ID_DFR0_EL1_CopDbg_MASK, },
  2269		ID_HIDDEN(ID_AFR0_EL1),
  2270		AA32_ID_SANITISED(ID_MMFR0_EL1),
  2271		AA32_ID_SANITISED(ID_MMFR1_EL1),
  2272		AA32_ID_SANITISED(ID_MMFR2_EL1),
  2273		AA32_ID_SANITISED(ID_MMFR3_EL1),
  2274	
  2275		/* CRm=2 */
  2276		AA32_ID_SANITISED(ID_ISAR0_EL1),
  2277		AA32_ID_SANITISED(ID_ISAR1_EL1),
  2278		AA32_ID_SANITISED(ID_ISAR2_EL1),
  2279		AA32_ID_SANITISED(ID_ISAR3_EL1),
  2280		AA32_ID_SANITISED(ID_ISAR4_EL1),
  2281		AA32_ID_SANITISED(ID_ISAR5_EL1),
  2282		AA32_ID_SANITISED(ID_MMFR4_EL1),
  2283		AA32_ID_SANITISED(ID_ISAR6_EL1),
  2284	
  2285		/* CRm=3 */
  2286		AA32_ID_SANITISED(MVFR0_EL1),
  2287		AA32_ID_SANITISED(MVFR1_EL1),
  2288		AA32_ID_SANITISED(MVFR2_EL1),
  2289		ID_UNALLOCATED(3,3),
  2290		AA32_ID_SANITISED(ID_PFR2_EL1),
  2291		ID_HIDDEN(ID_DFR1_EL1),
  2292		AA32_ID_SANITISED(ID_MMFR5_EL1),
  2293		ID_UNALLOCATED(3,7),
  2294	
  2295		/* AArch64 ID registers */
  2296		/* CRm=4 */
  2297		{ SYS_DESC(SYS_ID_AA64PFR0_EL1),
  2298		  .access = access_id_reg,
  2299		  .get_user = get_id_reg,
  2300		  .set_user = set_id_reg,
  2301		  .reset = read_sanitised_id_aa64pfr0_el1,
  2302		  .val = ~(ID_AA64PFR0_EL1_AMU |
  2303			   ID_AA64PFR0_EL1_MPAM |
  2304			   ID_AA64PFR0_EL1_SVE |
  2305			   ID_AA64PFR0_EL1_RAS |
  2306			   ID_AA64PFR0_EL1_GIC |
  2307			   ID_AA64PFR0_EL1_AdvSIMD |
  2308			   ID_AA64PFR0_EL1_FP), },
> 2309		ID_WRITABLE(SYS_ID_AA64PFR1_EL1, ID_AA64PFR1_EL1_BT),
  2310		ID_UNALLOCATED(4,2),
  2311		ID_UNALLOCATED(4,3),
  2312		ID_WRITABLE(ID_AA64ZFR0_EL1, ~ID_AA64ZFR0_EL1_RES0),
  2313		ID_HIDDEN(ID_AA64SMFR0_EL1),
  2314		ID_UNALLOCATED(4,6),
  2315		ID_UNALLOCATED(4,7),
  2316	
  2317		/* CRm=5 */
  2318		{ SYS_DESC(SYS_ID_AA64DFR0_EL1),
  2319		  .access = access_id_reg,
  2320		  .get_user = get_id_reg,
  2321		  .set_user = set_id_aa64dfr0_el1,
  2322		  .reset = read_sanitised_id_aa64dfr0_el1,
  2323		  .val = ID_AA64DFR0_EL1_PMUVer_MASK |
  2324			 ID_AA64DFR0_EL1_DebugVer_MASK, },
  2325		ID_SANITISED(ID_AA64DFR1_EL1),
  2326		ID_UNALLOCATED(5,2),
  2327		ID_UNALLOCATED(5,3),
  2328		ID_HIDDEN(ID_AA64AFR0_EL1),
  2329		ID_HIDDEN(ID_AA64AFR1_EL1),
  2330		ID_UNALLOCATED(5,6),
  2331		ID_UNALLOCATED(5,7),
  2332	
  2333		/* CRm=6 */
  2334		ID_WRITABLE(ID_AA64ISAR0_EL1, ~ID_AA64ISAR0_EL1_RES0),
  2335		ID_WRITABLE(ID_AA64ISAR1_EL1, ~(ID_AA64ISAR1_EL1_GPI |
  2336						ID_AA64ISAR1_EL1_GPA |
  2337						ID_AA64ISAR1_EL1_API |
  2338						ID_AA64ISAR1_EL1_APA)),
  2339		ID_WRITABLE(ID_AA64ISAR2_EL1, ~(ID_AA64ISAR2_EL1_RES0 |
  2340						ID_AA64ISAR2_EL1_APA3 |
  2341						ID_AA64ISAR2_EL1_GPA3)),
  2342		ID_UNALLOCATED(6,3),
  2343		ID_UNALLOCATED(6,4),
  2344		ID_UNALLOCATED(6,5),
  2345		ID_UNALLOCATED(6,6),
  2346		ID_UNALLOCATED(6,7),
  2347	
  2348		/* CRm=7 */
  2349		ID_WRITABLE(ID_AA64MMFR0_EL1, ~(ID_AA64MMFR0_EL1_RES0 |
  2350						ID_AA64MMFR0_EL1_TGRAN4_2 |
  2351						ID_AA64MMFR0_EL1_TGRAN64_2 |
  2352						ID_AA64MMFR0_EL1_TGRAN16_2)),
  2353		ID_WRITABLE(ID_AA64MMFR1_EL1, ~(ID_AA64MMFR1_EL1_RES0 |
  2354						ID_AA64MMFR1_EL1_HCX |
  2355						ID_AA64MMFR1_EL1_TWED |
  2356						ID_AA64MMFR1_EL1_XNX |
  2357						ID_AA64MMFR1_EL1_VH |
  2358						ID_AA64MMFR1_EL1_VMIDBits)),
  2359		ID_WRITABLE(ID_AA64MMFR2_EL1, ~(ID_AA64MMFR2_EL1_RES0 |
  2360						ID_AA64MMFR2_EL1_EVT |
  2361						ID_AA64MMFR2_EL1_FWB |
  2362						ID_AA64MMFR2_EL1_IDS |
  2363						ID_AA64MMFR2_EL1_NV |
  2364						ID_AA64MMFR2_EL1_CCIDX)),
  2365		ID_SANITISED(ID_AA64MMFR3_EL1),
  2366		ID_SANITISED(ID_AA64MMFR4_EL1),
  2367		ID_UNALLOCATED(7,5),
  2368		ID_UNALLOCATED(7,6),
  2369		ID_UNALLOCATED(7,7),
  2370	
  2371		{ SYS_DESC(SYS_SCTLR_EL1), access_vm_reg, reset_val, SCTLR_EL1, 0x00C50078 },
  2372		{ SYS_DESC(SYS_ACTLR_EL1), access_actlr, reset_actlr, ACTLR_EL1 },
  2373		{ SYS_DESC(SYS_CPACR_EL1), NULL, reset_val, CPACR_EL1, 0 },
  2374	
  2375		MTE_REG(RGSR_EL1),
  2376		MTE_REG(GCR_EL1),
  2377	
  2378		{ SYS_DESC(SYS_ZCR_EL1), NULL, reset_val, ZCR_EL1, 0, .visibility = sve_visibility },
  2379		{ SYS_DESC(SYS_TRFCR_EL1), undef_access },
  2380		{ SYS_DESC(SYS_SMPRI_EL1), undef_access },
  2381		{ SYS_DESC(SYS_SMCR_EL1), undef_access },
  2382		{ SYS_DESC(SYS_TTBR0_EL1), access_vm_reg, reset_unknown, TTBR0_EL1 },
  2383		{ SYS_DESC(SYS_TTBR1_EL1), access_vm_reg, reset_unknown, TTBR1_EL1 },
  2384		{ SYS_DESC(SYS_TCR_EL1), access_vm_reg, reset_val, TCR_EL1, 0 },
  2385		{ SYS_DESC(SYS_TCR2_EL1), access_vm_reg, reset_val, TCR2_EL1, 0 },
  2386	
  2387		PTRAUTH_KEY(APIA),
  2388		PTRAUTH_KEY(APIB),
  2389		PTRAUTH_KEY(APDA),
  2390		PTRAUTH_KEY(APDB),
  2391		PTRAUTH_KEY(APGA),
  2392	
  2393		{ SYS_DESC(SYS_SPSR_EL1), access_spsr},
  2394		{ SYS_DESC(SYS_ELR_EL1), access_elr},
  2395	
  2396		{ SYS_DESC(SYS_AFSR0_EL1), access_vm_reg, reset_unknown, AFSR0_EL1 },
  2397		{ SYS_DESC(SYS_AFSR1_EL1), access_vm_reg, reset_unknown, AFSR1_EL1 },
  2398		{ SYS_DESC(SYS_ESR_EL1), access_vm_reg, reset_unknown, ESR_EL1 },
  2399	
  2400		{ SYS_DESC(SYS_ERRIDR_EL1), trap_raz_wi },
  2401		{ SYS_DESC(SYS_ERRSELR_EL1), trap_raz_wi },
  2402		{ SYS_DESC(SYS_ERXFR_EL1), trap_raz_wi },
  2403		{ SYS_DESC(SYS_ERXCTLR_EL1), trap_raz_wi },
  2404		{ SYS_DESC(SYS_ERXSTATUS_EL1), trap_raz_wi },
  2405		{ SYS_DESC(SYS_ERXADDR_EL1), trap_raz_wi },
  2406		{ SYS_DESC(SYS_ERXMISC0_EL1), trap_raz_wi },
  2407		{ SYS_DESC(SYS_ERXMISC1_EL1), trap_raz_wi },
  2408	
  2409		MTE_REG(TFSR_EL1),
  2410		MTE_REG(TFSRE0_EL1),
  2411	
  2412		{ SYS_DESC(SYS_FAR_EL1), access_vm_reg, reset_unknown, FAR_EL1 },
  2413		{ SYS_DESC(SYS_PAR_EL1), NULL, reset_unknown, PAR_EL1 },
  2414	
  2415		{ SYS_DESC(SYS_PMSCR_EL1), undef_access },
  2416		{ SYS_DESC(SYS_PMSNEVFR_EL1), undef_access },
  2417		{ SYS_DESC(SYS_PMSICR_EL1), undef_access },
  2418		{ SYS_DESC(SYS_PMSIRR_EL1), undef_access },
  2419		{ SYS_DESC(SYS_PMSFCR_EL1), undef_access },
  2420		{ SYS_DESC(SYS_PMSEVFR_EL1), undef_access },
  2421		{ SYS_DESC(SYS_PMSLATFR_EL1), undef_access },
  2422		{ SYS_DESC(SYS_PMSIDR_EL1), undef_access },
  2423		{ SYS_DESC(SYS_PMBLIMITR_EL1), undef_access },
  2424		{ SYS_DESC(SYS_PMBPTR_EL1), undef_access },
  2425		{ SYS_DESC(SYS_PMBSR_EL1), undef_access },
  2426		/* PMBIDR_EL1 is not trapped */
  2427	
  2428		{ PMU_SYS_REG(PMINTENSET_EL1),
  2429		  .access = access_pminten, .reg = PMINTENSET_EL1,
  2430		  .get_user = get_pmreg, .set_user = set_pmreg },
  2431		{ PMU_SYS_REG(PMINTENCLR_EL1),
  2432		  .access = access_pminten, .reg = PMINTENSET_EL1,
  2433		  .get_user = get_pmreg, .set_user = set_pmreg },
  2434		{ SYS_DESC(SYS_PMMIR_EL1), trap_raz_wi },
  2435	
  2436		{ SYS_DESC(SYS_MAIR_EL1), access_vm_reg, reset_unknown, MAIR_EL1 },
  2437		{ SYS_DESC(SYS_PIRE0_EL1), NULL, reset_unknown, PIRE0_EL1 },
  2438		{ SYS_DESC(SYS_PIR_EL1), NULL, reset_unknown, PIR_EL1 },
  2439		{ SYS_DESC(SYS_AMAIR_EL1), access_vm_reg, reset_amair_el1, AMAIR_EL1 },
  2440	
  2441		{ SYS_DESC(SYS_LORSA_EL1), trap_loregion },
  2442		{ SYS_DESC(SYS_LOREA_EL1), trap_loregion },
  2443		{ SYS_DESC(SYS_LORN_EL1), trap_loregion },
  2444		{ SYS_DESC(SYS_LORC_EL1), trap_loregion },
  2445		{ SYS_DESC(SYS_LORID_EL1), trap_loregion },
  2446	
  2447		{ SYS_DESC(SYS_VBAR_EL1), access_rw, reset_val, VBAR_EL1, 0 },
  2448		{ SYS_DESC(SYS_DISR_EL1), NULL, reset_val, DISR_EL1, 0 },
  2449	
  2450		{ SYS_DESC(SYS_ICC_IAR0_EL1), write_to_read_only },
  2451		{ SYS_DESC(SYS_ICC_EOIR0_EL1), read_from_write_only },
  2452		{ SYS_DESC(SYS_ICC_HPPIR0_EL1), write_to_read_only },
  2453		{ SYS_DESC(SYS_ICC_DIR_EL1), read_from_write_only },
  2454		{ SYS_DESC(SYS_ICC_RPR_EL1), write_to_read_only },
  2455		{ SYS_DESC(SYS_ICC_SGI1R_EL1), access_gic_sgi },
  2456		{ SYS_DESC(SYS_ICC_ASGI1R_EL1), access_gic_sgi },
  2457		{ SYS_DESC(SYS_ICC_SGI0R_EL1), access_gic_sgi },
  2458		{ SYS_DESC(SYS_ICC_IAR1_EL1), write_to_read_only },
  2459		{ SYS_DESC(SYS_ICC_EOIR1_EL1), read_from_write_only },
  2460		{ SYS_DESC(SYS_ICC_HPPIR1_EL1), write_to_read_only },
  2461		{ SYS_DESC(SYS_ICC_SRE_EL1), access_gic_sre },
  2462	
  2463		{ SYS_DESC(SYS_CONTEXTIDR_EL1), access_vm_reg, reset_val, CONTEXTIDR_EL1, 0 },
  2464		{ SYS_DESC(SYS_TPIDR_EL1), NULL, reset_unknown, TPIDR_EL1 },
  2465	
  2466		{ SYS_DESC(SYS_ACCDATA_EL1), undef_access },
  2467	
  2468		{ SYS_DESC(SYS_SCXTNUM_EL1), undef_access },
  2469	
  2470		{ SYS_DESC(SYS_CNTKCTL_EL1), NULL, reset_val, CNTKCTL_EL1, 0},
  2471	
  2472		{ SYS_DESC(SYS_CCSIDR_EL1), access_ccsidr },
  2473		{ SYS_DESC(SYS_CLIDR_EL1), access_clidr, reset_clidr, CLIDR_EL1,
  2474		  .set_user = set_clidr },
  2475		{ SYS_DESC(SYS_CCSIDR2_EL1), undef_access },
  2476		{ SYS_DESC(SYS_SMIDR_EL1), undef_access },
  2477		{ SYS_DESC(SYS_CSSELR_EL1), access_csselr, reset_unknown, CSSELR_EL1 },
  2478		{ SYS_DESC(SYS_CTR_EL0), access_ctr },
  2479		{ SYS_DESC(SYS_SVCR), undef_access },
  2480	
  2481		{ PMU_SYS_REG(PMCR_EL0), .access = access_pmcr, .reset = reset_pmcr,
  2482		  .reg = PMCR_EL0, .get_user = get_pmcr, .set_user = set_pmcr },
  2483		{ PMU_SYS_REG(PMCNTENSET_EL0),
  2484		  .access = access_pmcnten, .reg = PMCNTENSET_EL0,
  2485		  .get_user = get_pmreg, .set_user = set_pmreg },
  2486		{ PMU_SYS_REG(PMCNTENCLR_EL0),
  2487		  .access = access_pmcnten, .reg = PMCNTENSET_EL0,
  2488		  .get_user = get_pmreg, .set_user = set_pmreg },
  2489		{ PMU_SYS_REG(PMOVSCLR_EL0),
  2490		  .access = access_pmovs, .reg = PMOVSSET_EL0,
  2491		  .get_user = get_pmreg, .set_user = set_pmreg },
  2492		/*
  2493		 * PM_SWINC_EL0 is exposed to userspace as RAZ/WI, as it was
  2494		 * previously (and pointlessly) advertised in the past...
  2495		 */
  2496		{ PMU_SYS_REG(PMSWINC_EL0),
  2497		  .get_user = get_raz_reg, .set_user = set_wi_reg,
  2498		  .access = access_pmswinc, .reset = NULL },
  2499		{ PMU_SYS_REG(PMSELR_EL0),
  2500		  .access = access_pmselr, .reset = reset_pmselr, .reg = PMSELR_EL0 },
  2501		{ PMU_SYS_REG(PMCEID0_EL0),
  2502		  .access = access_pmceid, .reset = NULL },
  2503		{ PMU_SYS_REG(PMCEID1_EL0),
  2504		  .access = access_pmceid, .reset = NULL },
  2505		{ PMU_SYS_REG(PMCCNTR_EL0),
  2506		  .access = access_pmu_evcntr, .reset = reset_unknown,
  2507		  .reg = PMCCNTR_EL0, .get_user = get_pmu_evcntr},
  2508		{ PMU_SYS_REG(PMXEVTYPER_EL0),
  2509		  .access = access_pmu_evtyper, .reset = NULL },
  2510		{ PMU_SYS_REG(PMXEVCNTR_EL0),
  2511		  .access = access_pmu_evcntr, .reset = NULL },
  2512		/*
  2513		 * PMUSERENR_EL0 resets as unknown in 64bit mode while it resets as zero
  2514		 * in 32bit mode. Here we choose to reset it as zero for consistency.
  2515		 */
  2516		{ PMU_SYS_REG(PMUSERENR_EL0), .access = access_pmuserenr,
  2517		  .reset = reset_val, .reg = PMUSERENR_EL0, .val = 0 },
  2518		{ PMU_SYS_REG(PMOVSSET_EL0),
  2519		  .access = access_pmovs, .reg = PMOVSSET_EL0,
  2520		  .get_user = get_pmreg, .set_user = set_pmreg },
  2521	
  2522		{ SYS_DESC(SYS_TPIDR_EL0), NULL, reset_unknown, TPIDR_EL0 },
  2523		{ SYS_DESC(SYS_TPIDRRO_EL0), NULL, reset_unknown, TPIDRRO_EL0 },
  2524		{ SYS_DESC(SYS_TPIDR2_EL0), undef_access },
  2525	
  2526		{ SYS_DESC(SYS_SCXTNUM_EL0), undef_access },
  2527	
  2528		{ SYS_DESC(SYS_AMCR_EL0), undef_access },
  2529		{ SYS_DESC(SYS_AMCFGR_EL0), undef_access },
  2530		{ SYS_DESC(SYS_AMCGCR_EL0), undef_access },
  2531		{ SYS_DESC(SYS_AMUSERENR_EL0), undef_access },
  2532		{ SYS_DESC(SYS_AMCNTENCLR0_EL0), undef_access },
  2533		{ SYS_DESC(SYS_AMCNTENSET0_EL0), undef_access },
  2534		{ SYS_DESC(SYS_AMCNTENCLR1_EL0), undef_access },
  2535		{ SYS_DESC(SYS_AMCNTENSET1_EL0), undef_access },
  2536		AMU_AMEVCNTR0_EL0(0),
  2537		AMU_AMEVCNTR0_EL0(1),
  2538		AMU_AMEVCNTR0_EL0(2),
  2539		AMU_AMEVCNTR0_EL0(3),
  2540		AMU_AMEVCNTR0_EL0(4),
  2541		AMU_AMEVCNTR0_EL0(5),
  2542		AMU_AMEVCNTR0_EL0(6),
  2543		AMU_AMEVCNTR0_EL0(7),
  2544		AMU_AMEVCNTR0_EL0(8),
  2545		AMU_AMEVCNTR0_EL0(9),
  2546		AMU_AMEVCNTR0_EL0(10),
  2547		AMU_AMEVCNTR0_EL0(11),
  2548		AMU_AMEVCNTR0_EL0(12),
  2549		AMU_AMEVCNTR0_EL0(13),
  2550		AMU_AMEVCNTR0_EL0(14),
  2551		AMU_AMEVCNTR0_EL0(15),
  2552		AMU_AMEVTYPER0_EL0(0),
  2553		AMU_AMEVTYPER0_EL0(1),
  2554		AMU_AMEVTYPER0_EL0(2),
  2555		AMU_AMEVTYPER0_EL0(3),
  2556		AMU_AMEVTYPER0_EL0(4),
  2557		AMU_AMEVTYPER0_EL0(5),
  2558		AMU_AMEVTYPER0_EL0(6),
  2559		AMU_AMEVTYPER0_EL0(7),
  2560		AMU_AMEVTYPER0_EL0(8),
  2561		AMU_AMEVTYPER0_EL0(9),
  2562		AMU_AMEVTYPER0_EL0(10),
  2563		AMU_AMEVTYPER0_EL0(11),
  2564		AMU_AMEVTYPER0_EL0(12),
  2565		AMU_AMEVTYPER0_EL0(13),
  2566		AMU_AMEVTYPER0_EL0(14),
  2567		AMU_AMEVTYPER0_EL0(15),
  2568		AMU_AMEVCNTR1_EL0(0),
  2569		AMU_AMEVCNTR1_EL0(1),
  2570		AMU_AMEVCNTR1_EL0(2),
  2571		AMU_AMEVCNTR1_EL0(3),
  2572		AMU_AMEVCNTR1_EL0(4),
  2573		AMU_AMEVCNTR1_EL0(5),
  2574		AMU_AMEVCNTR1_EL0(6),
  2575		AMU_AMEVCNTR1_EL0(7),
  2576		AMU_AMEVCNTR1_EL0(8),
  2577		AMU_AMEVCNTR1_EL0(9),
  2578		AMU_AMEVCNTR1_EL0(10),
  2579		AMU_AMEVCNTR1_EL0(11),
  2580		AMU_AMEVCNTR1_EL0(12),
  2581		AMU_AMEVCNTR1_EL0(13),
  2582		AMU_AMEVCNTR1_EL0(14),
  2583		AMU_AMEVCNTR1_EL0(15),
  2584		AMU_AMEVTYPER1_EL0(0),
  2585		AMU_AMEVTYPER1_EL0(1),
  2586		AMU_AMEVTYPER1_EL0(2),
  2587		AMU_AMEVTYPER1_EL0(3),
  2588		AMU_AMEVTYPER1_EL0(4),
  2589		AMU_AMEVTYPER1_EL0(5),
  2590		AMU_AMEVTYPER1_EL0(6),
  2591		AMU_AMEVTYPER1_EL0(7),
  2592		AMU_AMEVTYPER1_EL0(8),
  2593		AMU_AMEVTYPER1_EL0(9),
  2594		AMU_AMEVTYPER1_EL0(10),
  2595		AMU_AMEVTYPER1_EL0(11),
  2596		AMU_AMEVTYPER1_EL0(12),
  2597		AMU_AMEVTYPER1_EL0(13),
  2598		AMU_AMEVTYPER1_EL0(14),
  2599		AMU_AMEVTYPER1_EL0(15),
  2600	
  2601		{ SYS_DESC(SYS_CNTPCT_EL0), access_arch_timer },
  2602		{ SYS_DESC(SYS_CNTPCTSS_EL0), access_arch_timer },
  2603		{ SYS_DESC(SYS_CNTP_TVAL_EL0), access_arch_timer },
  2604		{ SYS_DESC(SYS_CNTP_CTL_EL0), access_arch_timer },
  2605		{ SYS_DESC(SYS_CNTP_CVAL_EL0), access_arch_timer },
  2606	
  2607		/* PMEVCNTRn_EL0 */
  2608		PMU_PMEVCNTR_EL0(0),
  2609		PMU_PMEVCNTR_EL0(1),
  2610		PMU_PMEVCNTR_EL0(2),
  2611		PMU_PMEVCNTR_EL0(3),
  2612		PMU_PMEVCNTR_EL0(4),
  2613		PMU_PMEVCNTR_EL0(5),
  2614		PMU_PMEVCNTR_EL0(6),
  2615		PMU_PMEVCNTR_EL0(7),
  2616		PMU_PMEVCNTR_EL0(8),
  2617		PMU_PMEVCNTR_EL0(9),
  2618		PMU_PMEVCNTR_EL0(10),
  2619		PMU_PMEVCNTR_EL0(11),
  2620		PMU_PMEVCNTR_EL0(12),
  2621		PMU_PMEVCNTR_EL0(13),
  2622		PMU_PMEVCNTR_EL0(14),
  2623		PMU_PMEVCNTR_EL0(15),
  2624		PMU_PMEVCNTR_EL0(16),
  2625		PMU_PMEVCNTR_EL0(17),
  2626		PMU_PMEVCNTR_EL0(18),
  2627		PMU_PMEVCNTR_EL0(19),
  2628		PMU_PMEVCNTR_EL0(20),
  2629		PMU_PMEVCNTR_EL0(21),
  2630		PMU_PMEVCNTR_EL0(22),
  2631		PMU_PMEVCNTR_EL0(23),
  2632		PMU_PMEVCNTR_EL0(24),
  2633		PMU_PMEVCNTR_EL0(25),
  2634		PMU_PMEVCNTR_EL0(26),
  2635		PMU_PMEVCNTR_EL0(27),
  2636		PMU_PMEVCNTR_EL0(28),
  2637		PMU_PMEVCNTR_EL0(29),
  2638		PMU_PMEVCNTR_EL0(30),
  2639		/* PMEVTYPERn_EL0 */
  2640		PMU_PMEVTYPER_EL0(0),
  2641		PMU_PMEVTYPER_EL0(1),
  2642		PMU_PMEVTYPER_EL0(2),
  2643		PMU_PMEVTYPER_EL0(3),
  2644		PMU_PMEVTYPER_EL0(4),
  2645		PMU_PMEVTYPER_EL0(5),
  2646		PMU_PMEVTYPER_EL0(6),
  2647		PMU_PMEVTYPER_EL0(7),
  2648		PMU_PMEVTYPER_EL0(8),
  2649		PMU_PMEVTYPER_EL0(9),
  2650		PMU_PMEVTYPER_EL0(10),
  2651		PMU_PMEVTYPER_EL0(11),
  2652		PMU_PMEVTYPER_EL0(12),
  2653		PMU_PMEVTYPER_EL0(13),
  2654		PMU_PMEVTYPER_EL0(14),
  2655		PMU_PMEVTYPER_EL0(15),
  2656		PMU_PMEVTYPER_EL0(16),
  2657		PMU_PMEVTYPER_EL0(17),
  2658		PMU_PMEVTYPER_EL0(18),
  2659		PMU_PMEVTYPER_EL0(19),
  2660		PMU_PMEVTYPER_EL0(20),
  2661		PMU_PMEVTYPER_EL0(21),
  2662		PMU_PMEVTYPER_EL0(22),
  2663		PMU_PMEVTYPER_EL0(23),
  2664		PMU_PMEVTYPER_EL0(24),
  2665		PMU_PMEVTYPER_EL0(25),
  2666		PMU_PMEVTYPER_EL0(26),
  2667		PMU_PMEVTYPER_EL0(27),
  2668		PMU_PMEVTYPER_EL0(28),
  2669		PMU_PMEVTYPER_EL0(29),
  2670		PMU_PMEVTYPER_EL0(30),
  2671		/*
  2672		 * PMCCFILTR_EL0 resets as unknown in 64bit mode while it resets as zero
  2673		 * in 32bit mode. Here we choose to reset it as zero for consistency.
  2674		 */
  2675		{ PMU_SYS_REG(PMCCFILTR_EL0), .access = access_pmu_evtyper,
  2676		  .reset = reset_val, .reg = PMCCFILTR_EL0, .val = 0 },
  2677	
  2678		EL2_REG_VNCR(VPIDR_EL2, reset_unknown, 0),
  2679		EL2_REG_VNCR(VMPIDR_EL2, reset_unknown, 0),
  2680		EL2_REG(SCTLR_EL2, access_rw, reset_val, SCTLR_EL2_RES1),
  2681		EL2_REG(ACTLR_EL2, access_rw, reset_val, 0),
  2682		EL2_REG_VNCR(HCR_EL2, reset_hcr, 0),
  2683		EL2_REG(MDCR_EL2, access_rw, reset_val, 0),
  2684		EL2_REG(CPTR_EL2, access_rw, reset_val, CPTR_NVHE_EL2_RES1),
  2685		EL2_REG_VNCR(HSTR_EL2, reset_val, 0),
  2686		EL2_REG_VNCR(HFGRTR_EL2, reset_val, 0),
  2687		EL2_REG_VNCR(HFGWTR_EL2, reset_val, 0),
  2688		EL2_REG_VNCR(HFGITR_EL2, reset_val, 0),
  2689		EL2_REG_VNCR(HACR_EL2, reset_val, 0),
  2690	
  2691		EL2_REG_VNCR(HCRX_EL2, reset_val, 0),
  2692	
  2693		EL2_REG(TTBR0_EL2, access_rw, reset_val, 0),
  2694		EL2_REG(TTBR1_EL2, access_rw, reset_val, 0),
  2695		EL2_REG(TCR_EL2, access_rw, reset_val, TCR_EL2_RES1),
  2696		EL2_REG_VNCR(VTTBR_EL2, reset_val, 0),
  2697		EL2_REG_VNCR(VTCR_EL2, reset_val, 0),
  2698	
  2699		{ SYS_DESC(SYS_DACR32_EL2), trap_undef, reset_unknown, DACR32_EL2 },
  2700		EL2_REG_VNCR(HDFGRTR_EL2, reset_val, 0),
  2701		EL2_REG_VNCR(HDFGWTR_EL2, reset_val, 0),
  2702		EL2_REG_VNCR(HAFGRTR_EL2, reset_val, 0),
  2703		EL2_REG_REDIR(SPSR_EL2, reset_val, 0),
  2704		EL2_REG_REDIR(ELR_EL2, reset_val, 0),
  2705		{ SYS_DESC(SYS_SP_EL1), access_sp_el1},
  2706	
  2707		/* AArch32 SPSR_* are RES0 if trapped from a NV guest */
  2708		{ SYS_DESC(SYS_SPSR_irq), .access = trap_raz_wi,
  2709		  .visibility = hidden_user_visibility },
  2710		{ SYS_DESC(SYS_SPSR_abt), .access = trap_raz_wi,
  2711		  .visibility = hidden_user_visibility },
  2712		{ SYS_DESC(SYS_SPSR_und), .access = trap_raz_wi,
  2713		  .visibility = hidden_user_visibility },
  2714		{ SYS_DESC(SYS_SPSR_fiq), .access = trap_raz_wi,
  2715		  .visibility = hidden_user_visibility },
  2716	
  2717		{ SYS_DESC(SYS_IFSR32_EL2), trap_undef, reset_unknown, IFSR32_EL2 },
  2718		EL2_REG(AFSR0_EL2, access_rw, reset_val, 0),
  2719		EL2_REG(AFSR1_EL2, access_rw, reset_val, 0),
  2720		EL2_REG_REDIR(ESR_EL2, reset_val, 0),
  2721		{ SYS_DESC(SYS_FPEXC32_EL2), trap_undef, reset_val, FPEXC32_EL2, 0x700 },
  2722	
  2723		EL2_REG_REDIR(FAR_EL2, reset_val, 0),
  2724		EL2_REG(HPFAR_EL2, access_rw, reset_val, 0),
  2725	
  2726		EL2_REG(MAIR_EL2, access_rw, reset_val, 0),
  2727		EL2_REG(AMAIR_EL2, access_rw, reset_val, 0),
  2728	
  2729		EL2_REG(VBAR_EL2, access_rw, reset_val, 0),
  2730		EL2_REG(RVBAR_EL2, access_rw, reset_val, 0),
  2731		{ SYS_DESC(SYS_RMR_EL2), trap_undef },
  2732	
  2733		EL2_REG(CONTEXTIDR_EL2, access_rw, reset_val, 0),
  2734		EL2_REG(TPIDR_EL2, access_rw, reset_val, 0),
  2735	
  2736		EL2_REG_VNCR(CNTVOFF_EL2, reset_val, 0),
  2737		EL2_REG(CNTHCTL_EL2, access_rw, reset_val, 0),
  2738	
  2739		EL12_REG(CNTKCTL, access_rw, reset_val, 0),
  2740	
  2741		EL2_REG(SP_EL2, NULL, reset_unknown, 0),
  2742	};
  2743	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

  parent reply	other threads:[~2024-06-14 21:09 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-12  2:35 [RFC PATCH v1 0/2] KVM: arm64: Making BT Field in ID_AA64PFR1_EL1 writable Shaoqin Huang
2024-06-12  2:35 ` [RFC PATCH v1 1/2] KVM: arm64: Allow BT field " Shaoqin Huang
2024-06-12  5:58   ` Oliver Upton
2024-06-12 15:45   ` kernel test robot
2024-06-14 21:08   ` kernel test robot [this message]
2024-06-12  2:35 ` [RFC PATCH v1 2/2] KVM: selftests: aarch64: Add writable test for ID_AA64PFR1_EL1 Shaoqin Huang
2024-06-12  5:30 ` [RFC PATCH v1 0/2] KVM: arm64: Making BT Field in ID_AA64PFR1_EL1 writable Oliver Upton
2024-06-12  9:15   ` Shaoqin Huang
2024-06-12 10:07   ` Marc Zyngier
2024-06-13  8:31     ` Shaoqin Huang
2024-06-13  8:38       ` Oliver Upton
2024-06-13  8:42       ` Marc Zyngier
2024-06-17 12:29         ` Shaoqin Huang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202406150433.8J5jiWdc-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=shahuang@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.