llvm.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* Re: [RFC PATCH v1 1/2] KVM: arm64: Allow BT field in ID_AA64PFR1_EL1 writable
       [not found] <20240612023553.127813-2-shahuang@redhat.com>
@ 2024-06-14 21:08 ` kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-06-14 21:08 UTC (permalink / raw)
  To: Shaoqin Huang; +Cc: llvm, oe-kbuild-all

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-06-14 21:09 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20240612023553.127813-2-shahuang@redhat.com>
2024-06-14 21:08 ` [RFC PATCH v1 1/2] KVM: arm64: Allow BT field in ID_AA64PFR1_EL1 writable kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).