Key: ELF symbol (primary) ELF symbol source (with column ║) frame instruction +variable (range start) -variable (range end) inlining control-flow forwards branch ──>   backwards branch ══>

Compilation unit 00002278 00004eb4 arch/arm64/kvm/hyp/nvhe/switch.c instructions

header .debug_abbrev die abbreviation table .debug_info die tree .debug_line line number info .debug_line evaluated line info simple die tree simple die tree globals simple die tree locals inlined subroutine info inlined subroutine info by range **00002278 <__kvm_vcpu_run>: 00002278 <$x>: + __kvm_vcpu_run params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2278 0x27dc (DW_OP_breg31 0x68) __kvm_vcpu_run:165.0 (switch.c) Sbepe ║{ +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2278 0x27dc (DW_OP_breg31 0x68) __kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:164 +host_ctxt var pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x2278 0x27dc (DW_OP_breg31 0x60) __kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:166 +guest_ctxt var pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x2278 0x27dc (DW_OP_breg31 0x58) __kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:167 +pmu_switch_needed var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2278 0x27dc (DW_OP_breg31 0x54) __kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:168 +exit_code var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2278 0x27dc (DW_OP_breg31 0x48) __kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:169 ~ 00002278: d10783ff sub sp, sp, #0x1e0 <- 0000721c(bl)<__kvm_vcpu_run> ~ 0000227c: a91c7bfd stp x29, x30, [sp, #448] ~ 00002280: f900ebfc str x28, [sp, #464] 00002278 CFA:r31 r28:u r29:u r30:u ~ 00002284: 910703fd add x29, sp, #0x1c0 ~ 00002288: 910263e8 add x8, sp, #0x98 ~ 0000228c: f90037e0 str x0, [sp, #104] ~ 00002290: 52800029 mov w9, #0x1 // #1 ~ 00002294: f90007e8 str x8, [sp, #8] __kvm_vcpu_run:177.6 (switch.c) SbePe if (║system_uses_irq_prio_masking()) { ~ ┌─────────00002298: 35000189 cbnz w9, 22c8 <__kvm_vcpu_run+0x50> ~ │ ┌─0000229c: 14000001 b 22a0 <__kvm_vcpu_run+0x28> <- 00002298(b.cc-succ)<fallthrough> │ │ ~ │ └>000022a0: 52801e08 mov w8, #0xf0 // #240 <- 0000229c(b)<__kvm_vcpu_run+0x28> ~ 000022a4: b9008fe8 str w8, [sp, #140] h: 0x22a8 0x22bc gic_write_pmr inlined from __kvm_vcpu_run:178 (switch.c) <3b9d1>: h gic_write_pmr:114.2 (arch_gicv3.h) Sbepe ║write_sysreg_s(val, SYS_ICC_PMR_EL1); +val param typedef(u32=typedef(__u32=unsigned int (base type, DW_ATE_unsigned size:4))) 0x22a8 0x22bc (DW_OP_breg31 0x8c) gic_write_pmr(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x22a8 0x22bc (DW_OP_breg31 0x80) lexblock:gic_write_pmr(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~h 000022a8: b9408fe8 ldr w8, [sp, #140] ~h 000022ac: 2a0803e9 mov w9, w8 ~h 000022b0: f90043e9 str x9, [sp, #128] ~h 000022b4: f94043e9 ldr x9, [sp, #128] ~h 000022b8: d5184609 msr s3_0_c4_c6_0, x9 -val param typedef(u32=typedef(__u32=unsigned int (base type, DW_ATE_unsigned size:4))) 0x22a8 0x22bc (DW_OP_breg31 0x8c) gic_write_pmr(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x22a8 0x22bc (DW_OP_breg31 0x80) lexblock:gic_write_pmr(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c __kvm_vcpu_run:179.3 (switch.c) Sbepe ║pmr_sync(); ~ │ ┌─000022bc: 14000001 b 22c0 <__kvm_vcpu_run+0x48> │ │ │ │ __kvm_vcpu_run:179.3 (switch.c) sbepe ║pmr_sync(); ~ │ ┌─└>000022c0: 14000001 b 22c4 <__kvm_vcpu_run+0x4c> <- 000022bc(b)<__kvm_vcpu_run+0x48> │ │ │ │ __kvm_vcpu_run:180.2 (switch.c) Sbepe } ~ │ ┌─└──>000022c4: 14000001 b 22c8 <__kvm_vcpu_run+0x50> <- 000022c0(b)<__kvm_vcpu_run+0x4c> │ │ │ │ __kvm_vcpu_run:182.15 (switch.c) Sbepe host_ctxt = &║this_cpu_ptr(&kvm_host_data)->host_ctxt; ~ └>┌─└────>000022c8: 14000001 b 22cc <__kvm_vcpu_run+0x54> <- 00002298(b.cc)<__kvm_vcpu_run+0x50>,000022c4(b)<__kvm_vcpu_run+0x50> ~ └──────>000022cc: aa1f03e8 mov x8, xzr <- 000022c8(b)<__kvm_vcpu_run+0x54> __kvm_vcpu_run:182.15 (switch.c) sbepe host_ctxt = &║this_cpu_ptr(&kvm_host_data)->host_ctxt; +__vpp_verify var pointer(const(no type)) 0x22d0 0x22d8 (DW_OP_breg31 0x40) lexblock:__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:182 ~ 000022d0: f90023e8 str x8, [sp, #64] ~ ┌─000022d4: 14000001 b 22d8 <__kvm_vcpu_run+0x60> -__vpp_verify var pointer(const(no type)) 0x22d0 0x22d8 (DW_OP_breg31 0x40) lexblock:__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:182 __kvm_vcpu_run:182.15 (switch.c) sbepe host_ctxt = &║this_cpu_ptr(&kvm_host_data)->host_ctxt; +__ptr var long unsigned int (base type, DW_ATE_unsigned size:8) 0x22d8 0x2300 (DW_OP_breg31 0x30) lexblock:__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:182 ~ └>000022d8: f00000a8 adrp x8, 19000 <kvm_host_data> <- 000022d4(b)<__kvm_vcpu_run+0x60> ~ 000022dc: 91000108 add x8, x8, #0x0 ~ 000022e0: f9001be8 str x8, [sp, #48] ~ 000022e4: f9401be8 ldr x8, [sp, #48] ~ 000022e8: f90003e8 str x8, [sp] ~ 000022ec: 9400013c bl 27dc <__hyp_my_cpu_offset> ~ 000022f0: f94003e8 ldr x8, [sp] <- 000022ec(bl-succ)<return> ~ 000022f4: 8b000108 add x8, x8, x0 ~ 000022f8: f90017e8 str x8, [sp, #40] ~ 000022fc: f94017e8 ldr x8, [sp, #40] -__ptr var long unsigned int (base type, DW_ATE_unsigned size:8) 0x22d8 0x2300 (DW_OP_breg31 0x30) lexblock:__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:182 __kvm_vcpu_run:182.15 (switch.c) sbepe host_ctxt = &║this_cpu_ptr(&kvm_host_data)->host_ctxt; +__vpp_verify var pointer(const(no type)) 0x2300 0x2304 (DW_OP_breg31 0x40) lexblock:__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:182 ~ 00002300: f9001fe8 str x8, [sp, #56] -__vpp_verify var pointer(const(no type)) 0x2300 0x2304 (DW_OP_breg31 0x40) lexblock:__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:182 __kvm_vcpu_run:182.15 (switch.c) sbepe host_ctxt = &║this_cpu_ptr(&kvm_host_data)->host_ctxt; ~ 00002304: f9401fe8 ldr x8, [sp, #56] __kvm_vcpu_run:182.12 (switch.c) sbepe host_ctxt ║= &this_cpu_ptr(&kvm_host_data)->host_ctxt; ~ 00002308: f90033e8 str x8, [sp, #96] __kvm_vcpu_run:183.34 (switch.c) Sbepe host_ctxt->__hyp_running_vcpu = ║vcpu; ~ 0000230c: f94037e8 ldr x8, [sp, #104] __kvm_vcpu_run:183.2 (switch.c) sbepe ║host_ctxt->__hyp_running_vcpu = vcpu; ~ 00002310: f94033e9 ldr x9, [sp, #96] __kvm_vcpu_run:183.32 (switch.c) sbepe host_ctxt->__hyp_running_vcpu ║= vcpu; ~ 00002314: f9037d28 str x8, [x9, #1784] __kvm_vcpu_run:184.16 (switch.c) Sbepe guest_ctxt = &║vcpu->arch.ctxt; ~ 00002318: f94037e8 ldr x8, [sp, #104] __kvm_vcpu_run:184.22 (switch.c) sbepe guest_ctxt = &vcpu->║arch.ctxt; ~ 0000231c: 91058108 add x8, x8, #0x160 __kvm_vcpu_run:184.13 (switch.c) sbepe guest_ctxt ║= &vcpu->arch.ctxt; ~ 00002320: f9002fe8 str x8, [sp, #88] __kvm_vcpu_run:186.44 (switch.c) Sbepe pmu_switch_needed = __pmu_switch_to_guest(║host_ctxt); ~ 00002324: f94033e0 ldr x0, [sp, #96] __kvm_vcpu_run:186.22 (switch.c) sbepe pmu_switch_needed = ║__pmu_switch_to_guest(host_ctxt); ~ 00002328: 94000135 bl 27fc <__pmu_switch_to_guest> __kvm_vcpu_run:186.20 (switch.c) sbepe pmu_switch_needed ║= __pmu_switch_to_guest(host_ctxt); ~ 0000232c: 1200000a and w10, w0, #0x1 <- 00002328(bl-succ)<return> ~ 00002330: 390153ea strb w10, [sp, #84] __kvm_vcpu_run:188.27 (switch.c) Sbepe __sysreg_save_state_nvhe(║host_ctxt); ~ 00002334: f94033e0 ldr x0, [sp, #96] __kvm_vcpu_run:188.2 (switch.c) sbepe ║__sysreg_save_state_nvhe(host_ctxt); ~ 00002338: 97fff765 bl cc <__sysreg_save_state_nvhe> __kvm_vcpu_run:190.14 (switch.c) Sbepe __adjust_pc(║vcpu); ~ 0000233c: f94037e0 ldr x0, [sp, #104] <- 00002338(bl-succ)<return> __kvm_vcpu_run:190.2 (switch.c) sbepe ║__adjust_pc(vcpu); ~ 00002340: 94000166 bl 28d8 <__adjust_pc> __kvm_vcpu_run:200.27 (switch.c) Sbepe __sysreg32_restore_state(║vcpu); ~ 00002344: f94037e0 ldr x0, [sp, #104] <- 00002340(bl-succ)<return> __kvm_vcpu_run:200.2 (switch.c) sbepe ║__sysreg32_restore_state(vcpu); ~ 00002348: 94000182 bl 2950 <__sysreg32_restore_state> __kvm_vcpu_run:201.30 (switch.c) Sbepe __sysreg_restore_state_nvhe(║guest_ctxt); ~ 0000234c: f9402fe0 ldr x0, [sp, #88] <- 00002348(bl-succ)<return> __kvm_vcpu_run:201.2 (switch.c) sbepe ║__sysreg_restore_state_nvhe(guest_ctxt); ~ 00002350: 97fff86c bl 500 <__sysreg_restore_state_nvhe> __kvm_vcpu_run:203.22 (switch.c) Sbepe __load_guest_stage2(║kern_hyp_va(vcpu->arch.hw_mmu)); ~ 00002354: f94037e8 ldr x8, [sp, #104] <- 00002350(bl-succ)<return> ~ 00002358: f9443908 ldr x8, [x8, #2160] ~ 0000235c: f9004be8 str x8, [sp, #144] i: 0x2360 0x2388 __kern_hyp_va inlined from __kvm_vcpu_run:203 (switch.c) <3ba37>: i __kern_hyp_va:135.2 (kvm_mmu.h) Sbepe ║asm volatile(ALTERNATIVE_CB("and %0, %0, #1\n" +v param long unsigned int (base type, DW_ATE_unsigned size:8) 0x2360 0x2388 (DW_OP_breg31 0x90) __kern_hyp_va(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~i 00002360: f9404be8 ldr x8, [sp, #144] ~i 00002364: 92400108 and x8, x8, #0x1 ~i 00002368: 93c80508 ror x8, x8, #1 ~i 0000236c: 91000108 add x8, x8, #0x0 ~i 00002370: 91400108 add x8, x8, #0x0, lsl #12 ~i 00002374: 93c8fd08 ror x8, x8, #63 ~i 00002378: f9004be8 str x8, [sp, #144] i __kern_hyp_va:142.9 (kvm_mmu.h) Sbepe return v; ~i 0000237c: f9404be8 ldr x8, [sp, #144] ~i 00002380: f94007e9 ldr x9, [sp, #8] ~i 00002384: f9000128 str x8, [x9] -v param long unsigned int (base type, DW_ATE_unsigned size:8) 0x2360 0x2388 (DW_OP_breg31 0x90) __kern_hyp_va(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c j: 0x2388 0x24f4 __load_guest_stage2 inlined from __kvm_vcpu_run:203 (switch.c) <3ba55>: j __load_guest_stage2:363.16 (kvm_mmu.h) Sbepe __load_stage2(║mmu, kern_hyp_va(mmu->arch)->vtcr); +mmu param pointer(struct kvm_s2_mmu<2d002>/<3997d>) 0x2388 0x24f4 (DW_OP_breg31 0x98) __load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~j 00002388: f9400128 ldr x8, [x9] j __load_guest_stage2:363.21 (kvm_mmu.h) sbepe __load_stage2(mmu, ║kern_hyp_va(mmu->arch)->vtcr); ~j 0000238c: f940150b ldr x11, [x8, #40] ~j 00002390: f900052b str x11, [x9, #8] k: 0x2394 0x23b4 __kern_hyp_va inlined from __load_guest_stage2:363 (kvm_mmu.h) <3ba72>:<3ba55>: jk __kern_hyp_va:135.2 (kvm_mmu.h) Sbepe ║asm volatile(ALTERNATIVE_CB("and %0, %0, #1\n" +v param long unsigned int (base type, DW_ATE_unsigned size:8) 0x2394 0x23b4 (DW_OP_breg31 0xa0) __kern_hyp_va(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~jk 00002394: f940052b ldr x11, [x9, #8] ~jk 00002398: 9240016b and x11, x11, #0x1 ~jk 0000239c: 93cb056b ror x11, x11, #1 ~jk 000023a0: 9100016b add x11, x11, #0x0 ~jk 000023a4: 9140016b add x11, x11, #0x0, lsl #12 ~jk 000023a8: 93cbfd6b ror x11, x11, #63 ~jk 000023ac: f900052b str x11, [x9, #8] jk __kern_hyp_va:142.9 (kvm_mmu.h) Sbepe return v; ~jk 000023b0: f940052b ldr x11, [x9, #8] -v param long unsigned int (base type, DW_ATE_unsigned size:8) 0x2394 0x23b4 (DW_OP_breg31 0xa0) __kern_hyp_va(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c j __load_guest_stage2:363.45 (kvm_mmu.h) Sbepe __load_stage2(mmu, kern_hyp_va(mmu->arch)->║vtcr); ~j 000023b4: f940196b ldr x11, [x11, #48] ~j 000023b8: f9001528 str x8, [x9, #40] ~j 000023bc: f900112b str x11, [x9, #32] l: 0x23c0 0x24f4 __load_stage2 inlined from __load_guest_stage2:363 (kvm_mmu.h) <3ba91>:<3ba55>: jl __load_stage2:350.2 (kvm_mmu.h) Sbepe ║write_sysreg(vtcr, vtcr_el2); +mmu param pointer(struct kvm_s2_mmu<2d002>/<3997d>) 0x23c0 0x24f4 (DW_OP_breg31 0xc0) __load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +vtcr param long unsigned int (base type, DW_ATE_unsigned size:8) 0x23c0 0x24f4 (DW_OP_breg31 0xb8) __load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x23c0 0x23d0 (DW_OP_breg31 0xb0) lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~jl 000023c0: f9401128 ldr x8, [x9, #32] ~jl 000023c4: f9000d28 str x8, [x9, #24] ~jl 000023c8: f9400d28 ldr x8, [x9, #24] ~jl 000023cc: d51c2148 msr vtcr_el2, x8 -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x23c0 0x23d0 (DW_OP_breg31 0xb0) lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c jl __load_stage2:351.2 (kvm_mmu.h) Sbepe ║write_sysreg(kvm_get_vttbr(mmu), vttbr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x23d0 0x24f0 (DW_OP_breg31 0xa8) lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~jl 000023d0: f9401528 ldr x8, [x9, #40] ~jl 000023d4: f9002928 str x8, [x9, #80] m: 0x23d8 0x24e4 kvm_get_vttbr inlined from __load_stage2:351 (kvm_mmu.h) <3bae5>:<lexical_block>:<3ba91>:<3ba55>: jlm kvm_get_vttbr:335.27 (kvm_mmu.h) Sbepe struct kvm_vmid *vmid = &║mmu->vmid; +mmu param pointer(struct kvm_s2_mmu<2d002>/<3997d>) 0x23d8 0x24e4 (DW_OP_fbreg -0xd8) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +vmid var pointer(struct kvm_vmid<2d002>/<399c2>) 0x23d8 0x24e4 (DW_OP_breg31 0xe0) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +vmid_field var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x23d8 0x24e4 (DW_OP_breg31 0xd8) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +baddr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x23d8 0x24e4 (DW_OP_breg31 0xd0) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +cnp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x23d8 0x24e4 (DW_OP_breg31 0xc8) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~jlm 000023d8: f9402928 ldr x8, [x9, #80] jlm kvm_get_vttbr:335.19 (kvm_mmu.h) sbepe struct kvm_vmid *║vmid = &mmu->vmid; ~jlm 000023dc: f9002528 str x8, [x9, #72] ~jlm 000023e0: 528001ea mov w10, #0xf // #15 ~jlm 000023e4: b81303aa stur w10, [x29, #-208] n: 0x23e8 0x24ac cpus_have_const_cap inlined from system_supports_cnp:694 (cpufeature.h) <3bb3c>:<3bb27>:<3bae5>:<lexical_block>:<3ba91>:<3ba55>: o: 0x23e8 0x24ac system_supports_cnp inlined from kvm_get_vttbr:337 (kvm_mmu.h) <3bb27>:<3bae5>:<lexical_block>:<3ba91>:<3ba55>: jlmno cpus_have_const_cap:479.30 (cpufeature.h) Sbepe return cpus_have_final_cap(║num); +num param int (base type, DW_ATE_signed size:4) 0x23e8 0x24ac (DW_OP_fbreg -0xd0) cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~jlmno 000023e8: b85303aa ldur w10, [x29, #-208] ~jlmno 000023ec: b81383aa stur w10, [x29, #-200] p: 0x23f0 0x249c cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <3bb5a>:<3bb3c>:<3bb27>:<3bae5>:<lexical_block>:<3ba91>:<3ba55>: q: 0x23f0 0x2418 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <3bb78>:<3bb5a>:<3bb3c>:<3bb27>:<3bae5>:<lexical_block>:<3ba91>:<3ba55>: jlmnopq system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready); +num param int (base type, DW_ATE_signed size:4) 0x23f0 0x249c (DW_OP_fbreg -0xc8) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x23f0 0x2418 (DW_OP_fbreg -0xb4) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~jlmnopq 000023f0: b00000c8 adrp x8, 1b000 <hyp_memory+0x460> ~jlmnopq 000023f4: b947990a ldr w10, [x8, #1944] ~jlmnopq 000023f8: 7100014a subs w10, w10, #0x0 ~jlmnopq 000023fc: 1a9f07ec cset w12, ne // ne = any ~jlmnopq 00002400: 3814c3ac sturb w12, [x29, #-180] jlmnopq system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~jlmnopq 00002404: 3854c3ac ldurb w12, [x29, #-180] ~jlmnopq 00002408: 2a0c03e8 mov w8, w12 ~jlmnopq 0000240c: 92400108 and x8, x8, #0x1 jlmnopq system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~jlmnopq 00002410: f9003528 str x8, [x9, #104] jlmnopq system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~jlmnopq 00002414: f9403528 ldr x8, [x9, #104] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x23f0 0x2418 (DW_OP_fbreg -0xb4) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c jlmnop cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~jlmnop ┌────00002418: b40003a8 cbz x8, 248c <__kvm_vcpu_run+0x214> ~jlmnop │ ┌─0000241c: 14000001 b 2420 <__kvm_vcpu_run+0x1a8> <- 00002418(b.cc-succ)<fallthrough> │ │ jlmnop │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~jlmnop │ └>00002420: b85383a8 ldur w8, [x29, #-200] <- 0000241c(b)<__kvm_vcpu_run+0x1a8> ~jlmnop 00002424: b81603a8 stur w8, [x29, #-160] r: 0x2428 0x248c (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3bba5>:<3bb5a>:<3bb3c>:<3bb27>:<3bae5>:<lexical_block>:<3ba91>:<3ba55>: jlmnopr __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x2428 0x248c (DW_OP_fbreg -0xa0) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~jlmnopr 00002428: b85603a8 ldur w8, [x29, #-160] jlmnopr __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~jlmnopr 0000242c: 7100f508 subs w8, w8, #0x3d ~jlmnopr │ ┌──00002430: 540000ab b.lt 2444 <__kvm_vcpu_run+0x1cc> // b.tstop │ │ ~jlmnopr │ │┌─00002434: 14000001 b 2438 <__kvm_vcpu_run+0x1c0> <- 00002430(b.cc-succ)<fallthrough> │ ││ ~jlmnopr │ │└>00002438: 2a1f03e8 mov w8, wzr <- 00002434(b)<__kvm_vcpu_run+0x1c0> jlmnopr │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~jlmnopr │ │ 0000243c: 381673a8 sturb w8, [x29, #-153] ~jlmnopr │┌┼──00002440: 14000014 b 2490 <__kvm_vcpu_run+0x218> │││ jlmnopr │││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2444 0x247c (DW_OP_fbreg -0xa4) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~jlmnopr ││└─>00002444: b89603a8 ldursw x8, [x29, #-160] <- 00002430(b.cc)<__kvm_vcpu_run+0x1cc> ~jlmnopr ││ 00002448: d37ced08 lsl x8, x8, #4 ~jlmnopr ││ 0000244c: b00000c9 adrp x9, 1b000 <hyp_memory+0x460> ~jlmnopr ││ 00002450: 911e8129 add x9, x9, #0x7a0 ~jlmnopr ││ 00002454: b868692a ldr w10, [x9, x8] ~jlmnopr ││ 00002458: 7100014a subs w10, w10, #0x0 ~jlmnopr ││ 0000245c: 1a9f07eb cset w11, ne // ne = any ~jlmnopr ││ 00002460: 3815c3ab sturb w11, [x29, #-164] jlmnopr ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~jlmnopr ││ 00002464: 3855c3ab ldurb w11, [x29, #-164] ~jlmnopr ││ 00002468: 2a0b03e8 mov w8, w11 ~jlmnopr ││ 0000246c: 92400108 and x8, x8, #0x1 ~jlmnopr ││ 00002470: f94007e9 ldr x9, [sp, #8] jlmnopr ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~jlmnopr ││ 00002474: f9003d28 str x8, [x9, #120] jlmnopr ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~jlmnopr ││ 00002478: f9403d28 ldr x8, [x9, #120] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2444 0x247c (DW_OP_fbreg -0xa4) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c jlmnopr ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~jlmnopr ││ 0000247c: f1000108 subs x8, x8, #0x0 ~jlmnopr ││ 00002480: 1a9f07eb cset w11, ne // ne = any jlmnopr ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~jlmnopr ││ 00002484: 381673ab sturb w11, [x29, #-153] ~jlmnopr ││ ┌─00002488: 14000002 b 2490 <__kvm_vcpu_run+0x218> -num param int (base type, DW_ATE_signed size:4) 0x2428 0x248c (DW_OP_fbreg -0xa0) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ││ │ jlmnop ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~jlmnop └┼─┼>0000248c: d4210000 brk #0x800 <- 00002418(b.cc)<__kvm_vcpu_run+0x214> │ │ s: 0x2490 0x2494 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3bba5>:<3bb5a>:<3bb3c>:<3bb27>:<3bae5>:<lexical_block>:<3ba91>:<3ba55>: jlmnops │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x2490 0x2494 (DW_OP_fbreg -0xa0) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~jlmnops └>└>00002490: 385673a8 ldurb w8, [x29, #-153] <- 00002440(b)<__kvm_vcpu_run+0x218>,00002488(b)<__kvm_vcpu_run+0x218> -num param int (base type, DW_ATE_signed size:4) 0x2490 0x2494 (DW_OP_fbreg -0xa0) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c jlmnop cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~jlmnop 00002494: 3813f3a8 sturb w8, [x29, #-193] jlmnop cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~jlmnop 00002498: 3853f3a8 ldurb w8, [x29, #-193] -num param int (base type, DW_ATE_signed size:4) 0x23f0 0x249c (DW_OP_fbreg -0xc8) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c jlmno cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num); ~jlmno 0000249c: 381373a8 sturb w8, [x29, #-201] jlmno cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║} ~jlmno 000024a0: 385373a8 ldurb w8, [x29, #-201] ~jlmno 000024a4: 2a0803e9 mov w9, w8 ~jlmno 000024a8: f94007ea ldr x10, [sp, #8] -num param int (base type, DW_ATE_signed size:4) 0x23e8 0x24ac (DW_OP_fbreg -0xd0) cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c jlm kvm_get_vttbr:337.6 (kvm_mmu.h) Sbepe u64 ║cnp = system_supports_cnp() ? VTTBR_CNP_BIT : 0; ~jlm 000024ac: f9001949 str x9, [x10, #48] jlm kvm_get_vttbr:339.10 (kvm_mmu.h) Sbepe baddr = ║mmu->pgd_phys; ~jlm 000024b0: f9402949 ldr x9, [x10, #80] jlm kvm_get_vttbr:339.15 (kvm_mmu.h) sbepe baddr = mmu->║pgd_phys; ~jlm 000024b4: f9400929 ldr x9, [x9, #16] jlm kvm_get_vttbr:339.8 (kvm_mmu.h) sbepe baddr ║= mmu->pgd_phys; ~jlm 000024b8: f9001d49 str x9, [x10, #56] jlm kvm_get_vttbr:340.20 (kvm_mmu.h) Sbepe vmid_field = (u64)║vmid->vmid << VTTBR_VMID_SHIFT; ~jlm 000024bc: f9402549 ldr x9, [x10, #72] jlm kvm_get_vttbr:340.15 (kvm_mmu.h) sbepe vmid_field = ║(u64)vmid->vmid << VTTBR_VMID_SHIFT; ~jlm 000024c0: b9400928 ldr w8, [x9, #8] ~jlm 000024c4: 2a0803e9 mov w9, w8 jlm kvm_get_vttbr:340.31 (kvm_mmu.h) sbepe vmid_field = (u64)vmid->vmid ║<< VTTBR_VMID_SHIFT; ~jlm 000024c8: d3503d29 lsl x9, x9, #48 jlm kvm_get_vttbr:340.13 (kvm_mmu.h) sbepe vmid_field ║= (u64)vmid->vmid << VTTBR_VMID_SHIFT; ~jlm 000024cc: f9002149 str x9, [x10, #64] jlm kvm_get_vttbr:341.9 (kvm_mmu.h) Sbepe return ║kvm_phys_to_vttbr(baddr) | vmid_field | cnp; ~jlm 000024d0: f9401d49 ldr x9, [x10, #56] jlm kvm_get_vttbr:341.36 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | ║vmid_field | cnp; ~jlm 000024d4: f940214b ldr x11, [x10, #64] jlm kvm_get_vttbr:341.34 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) ║| vmid_field | cnp; ~jlm 000024d8: aa0b0129 orr x9, x9, x11 jlm kvm_get_vttbr:341.49 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | vmid_field | ║cnp; ~jlm 000024dc: f940194b ldr x11, [x10, #48] jlm kvm_get_vttbr:341.47 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | vmid_field ║| cnp; ~jlm 000024e0: aa0b0129 orr x9, x9, x11 -mmu param pointer(struct kvm_s2_mmu<2d002>/<3997d>) 0x23d8 0x24e4 (DW_OP_fbreg -0xd8) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c -vmid var pointer(struct kvm_vmid<2d002>/<399c2>) 0x23d8 0x24e4 (DW_OP_breg31 0xe0) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c -vmid_field var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x23d8 0x24e4 (DW_OP_breg31 0xd8) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c -baddr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x23d8 0x24e4 (DW_OP_breg31 0xd0) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c -cnp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x23d8 0x24e4 (DW_OP_breg31 0xc8) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c jl __load_stage2:351.2 (kvm_mmu.h) Sbepe ║write_sysreg(kvm_get_vttbr(mmu), vttbr_el2); ~jl 000024e4: f9000949 str x9, [x10, #16] ~jl 000024e8: f9400949 ldr x9, [x10, #16] ~jl 000024ec: d51c2109 msr vttbr_el2, x9 -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x23d0 0x24f0 (DW_OP_breg31 0xa8) lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c jl __load_stage2:358.2 (kvm_mmu.h) Sbepe ║asm(ALTERNATIVE("nop", "isb", ARM64_WORKAROUND_SPECULATIVE_AT)); ~jl 000024f0: d503201f nop -mmu param pointer(struct kvm_s2_mmu<2d002>/<3997d>) 0x2388 0x24f4 (DW_OP_breg31 0x98) __load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c -mmu param pointer(struct kvm_s2_mmu<2d002>/<3997d>) 0x23c0 0x24f4 (DW_OP_breg31 0xc0) __load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c -vtcr param long unsigned int (base type, DW_ATE_unsigned size:8) 0x23c0 0x24f4 (DW_OP_breg31 0xb8) __load_stage2(inlined):__load_guest_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c __kvm_vcpu_run:204.19 (switch.c) Sbepe __activate_traps(║vcpu); ~ 000024f4: f94037e0 ldr x0, [sp, #104] __kvm_vcpu_run:204.2 (switch.c) sbepe ║__activate_traps(vcpu); ~ 000024f8: 9400015c bl 2a68 <__activate_traps> __kvm_vcpu_run:206.27 (switch.c) Sbepe __hyp_vgic_restore_state(║vcpu); ~ 000024fc: f94037e0 ldr x0, [sp, #104] <- 000024f8(bl-succ)<return> __kvm_vcpu_run:206.2 (switch.c) sbepe ║__hyp_vgic_restore_state(vcpu); ~ 00002500: 940001e6 bl 2c98 <__hyp_vgic_restore_state> __kvm_vcpu_run:207.23 (switch.c) Sbepe __timer_enable_traps(║vcpu); ~ 00002504: f94037e0 ldr x0, [sp, #104] <- 00002500(bl-succ)<return> __kvm_vcpu_run:207.2 (switch.c) sbepe ║__timer_enable_traps(vcpu); ~ 00002508: 97fff6db bl 74 <__timer_enable_traps> __kvm_vcpu_run:209.26 (switch.c) Sbepe __debug_switch_to_guest(║vcpu); ~ 0000250c: f94037e0 ldr x0, [sp, #104] <- 00002508(bl-succ)<return> __kvm_vcpu_run:209.2 (switch.c) sbepe ║__debug_switch_to_guest(vcpu); ~ 00002510: 97fff9d2 bl c58 <__debug_switch_to_guest> __kvm_vcpu_run:211.2 (switch.c) Sbepe ║do { ~ ┌─00002514: 14000001 b 2518 <__kvm_vcpu_run+0x2a0> <- 00002510(bl-succ)<return> __kvm_vcpu_run:213.29 (switch.c) Sbepe exit_code = __guest_enter(║vcpu); ~ ╔>└>00002518: f94037e0 ldr x0, [sp, #104] <- 00002514(b)<__kvm_vcpu_run+0x2a0>,v00002534(b.cc)<__kvm_vcpu_run+0x2a0> __kvm_vcpu_run:213.15 (switch.c) sbepe exit_code = ║__guest_enter(vcpu); ~ 0000251c: 940034e7 bl f8b8 <__guest_enter> __kvm_vcpu_run:213.13 (switch.c) sbepe exit_code ║= __guest_enter(vcpu); ~ 00002520: f90027e0 str x0, [sp, #72] <- 0000251c(bl-succ)<return> __kvm_vcpu_run:216.2 (switch.c) Sbepe ║} while (fixup_guest_exit(vcpu, &exit_code)); ~ ║ ┌─00002524: 14000001 b 2528 <__kvm_vcpu_run+0x2b0> ║ │ ║ │ __kvm_vcpu_run:216.28 (switch.c) sbepe } while (fixup_guest_exit(║vcpu, &exit_code)); ~ ║ └>00002528: f94037e0 ldr x0, [sp, #104] <- 00002524(b)<__kvm_vcpu_run+0x2b0> ~ 0000252c: 910123e1 add x1, sp, #0x48 __kvm_vcpu_run:216.11 (switch.c) sbepe } while (║fixup_guest_exit(vcpu, &exit_code)); ~ 00002530: 940001f4 bl 2d00 <fixup_guest_exit> __kvm_vcpu_run:216.2 (switch.c) sbepe ║} while (fixup_guest_exit(vcpu, &exit_code)); ~ ╚═══00002534: 3707ff20 tbnz w0, #0, 2518 <__kvm_vcpu_run+0x2a0> <- 00002530(bl-succ)<return> ~ ┌─00002538: 14000001 b 253c <__kvm_vcpu_run+0x2c4> <- 00002534(b.cc-succ)<fallthrough> __kvm_vcpu_run:218.27 (switch.c) Sbepe __sysreg_save_state_nvhe(║guest_ctxt); ~ └>0000253c: f9402fe0 ldr x0, [sp, #88] <- 00002538(b)<__kvm_vcpu_run+0x2c4> __kvm_vcpu_run:218.2 (switch.c) sbepe ║__sysreg_save_state_nvhe(guest_ctxt); ~ 00002540: 97fff6e3 bl cc <__sysreg_save_state_nvhe> __kvm_vcpu_run:219.24 (switch.c) Sbepe __sysreg32_save_state(║vcpu); ~ 00002544: f94037e0 ldr x0, [sp, #104] <- 00002540(bl-succ)<return> __kvm_vcpu_run:219.2 (switch.c) sbepe ║__sysreg32_save_state(vcpu); ~ 00002548: 94000332 bl 3210 <__sysreg32_save_state> __kvm_vcpu_run:220.24 (switch.c) Sbepe __timer_disable_traps(║vcpu); ~ 0000254c: f94037e0 ldr x0, [sp, #104] <- 00002548(bl-succ)<return> __kvm_vcpu_run:220.2 (switch.c) sbepe ║__timer_disable_traps(vcpu); ~ 00002550: 97fff6b6 bl 28 <__timer_disable_traps> __kvm_vcpu_run:221.24 (switch.c) Sbepe __hyp_vgic_save_state(║vcpu); ~ 00002554: f94037e0 ldr x0, [sp, #104] <- 00002550(bl-succ)<return> __kvm_vcpu_run:221.2 (switch.c) sbepe ║__hyp_vgic_save_state(vcpu); ~ 00002558: 94000374 bl 3328 <__hyp_vgic_save_state> __kvm_vcpu_run:223.21 (switch.c) Sbepe __deactivate_traps(║vcpu); ~ 0000255c: f94037e0 ldr x0, [sp, #104] <- 00002558(bl-succ)<return> __kvm_vcpu_run:223.2 (switch.c) sbepe ║__deactivate_traps(vcpu); ~ 00002560: 9400038c bl 3390 <__deactivate_traps> t: 0x2564 0x2700 __load_host_stage2 inlined from __kvm_vcpu_run:224 (switch.c) <3bbda>: t __load_host_stage2:28.6 (mem_protect.h) Sbepe if (║static_branch_likely(&kvm_protected_mode_initialized)) +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2564 0x2590 (DW_OP_fbreg -0x84) lexblock:__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~t 00002564: b00000c8 adrp x8, 1b000 <hyp_memory+0x460> <- 00002560(bl-succ)<return> ~t 00002568: b9484109 ldr w9, [x8, #2112] ~t 0000256c: 71000129 subs w9, w9, #0x0 ~t 00002570: 1a9f07ea cset w10, ne // ne = any ~t 00002574: 3817c3aa sturb w10, [x29, #-132] t __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized)) ~t 00002578: 3857c3aa ldurb w10, [x29, #-132] ~t 0000257c: 2a0a03e8 mov w8, w10 ~t 00002580: 92400108 and x8, x8, #0x1 ~t 00002584: f94007eb ldr x11, [sp, #8] t __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized)) ~t 00002588: f9004d68 str x8, [x11, #152] t __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized)) ~t 0000258c: f9404d68 ldr x8, [x11, #152] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2564 0x2590 (DW_OP_fbreg -0x84) lexblock:__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c t __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized)) ~t ┌─────00002590: b4000ac8 cbz x8, 26e8 <__kvm_vcpu_run+0x470> ~t │ ┌─00002594: 14000001 b 2598 <__kvm_vcpu_run+0x320> <- 00002590(b.cc-succ)<fallthrough> │ │ t │ │ __load_host_stage2:29.51 (mem_protect.h) Sbepe __load_stage2(&host_kvm.arch.mmu, host_kvm.arch.║vtcr); ~t │ └>00002598: b00000c8 adrp x8, 1b000 <hyp_memory+0x460> <- 00002594(b)<__kvm_vcpu_run+0x320> ~t 0000259c: 910ec108 add x8, x8, #0x3b0 ~t 000025a0: f9401909 ldr x9, [x8, #48] ~t 000025a4: f94007ea ldr x10, [sp, #8] ~t 000025a8: f9006148 str x8, [x10, #192] ~t 000025ac: f9005d49 str x9, [x10, #184] u: 0x25b0 0x26e4 __load_stage2 inlined from __load_host_stage2:29 (mem_protect.h) <3bc05>:<3bbda>: tu __load_stage2:350.2 (kvm_mmu.h) Sbepe ║write_sysreg(vtcr, vtcr_el2); +mmu param pointer(struct kvm_s2_mmu<2d002>/<3997d>) 0x25b0 0x26e4 (DW_OP_fbreg -0x68) __load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +vtcr param long unsigned int (base type, DW_ATE_unsigned size:8) 0x25b0 0x26e4 (DW_OP_fbreg -0x70) __load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x25b0 0x25c0 (DW_OP_fbreg -0x78) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~tu 000025b0: f9405d48 ldr x8, [x10, #184] ~tu 000025b4: f9005948 str x8, [x10, #176] ~tu 000025b8: f9405948 ldr x8, [x10, #176] ~tu 000025bc: d51c2148 msr vtcr_el2, x8 -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x25b0 0x25c0 (DW_OP_fbreg -0x78) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c tu __load_stage2:351.2 (kvm_mmu.h) Sbepe ║write_sysreg(kvm_get_vttbr(mmu), vttbr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x25c0 0x26e0 (DW_OP_fbreg -0x80) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~tu 000025c0: f9406148 ldr x8, [x10, #192] ~tu 000025c4: f9007548 str x8, [x10, #232] v: 0x25c8 0x26d4 kvm_get_vttbr inlined from __load_stage2:351 (kvm_mmu.h) <3bc58>:<lexical_block>:<3bc05>:<3bbda>: tuv kvm_get_vttbr:335.27 (kvm_mmu.h) Sbepe struct kvm_vmid *vmid = &║mmu->vmid; +mmu param pointer(struct kvm_s2_mmu<2d002>/<3997d>) 0x25c8 0x26d4 (DW_OP_fbreg -0x40) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +vmid var pointer(struct kvm_vmid<2d002>/<399c2>) 0x25c8 0x26d4 (DW_OP_fbreg -0x48) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +vmid_field var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x25c8 0x26d4 (DW_OP_fbreg -0x50) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +baddr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x25c8 0x26d4 (DW_OP_fbreg -0x58) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +cnp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x25c8 0x26d4 (DW_OP_fbreg -0x60) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~tuv 000025c8: f9407548 ldr x8, [x10, #232] tuv kvm_get_vttbr:335.19 (kvm_mmu.h) sbepe struct kvm_vmid *║vmid = &mmu->vmid; ~tuv 000025cc: f9007148 str x8, [x10, #224] ~tuv 000025d0: 528001eb mov w11, #0xf // #15 ~tuv 000025d4: b81c83ab stur w11, [x29, #-56] w: 0x25d8 0x269c cpus_have_const_cap inlined from system_supports_cnp:694 (cpufeature.h) <3bcae>:<3bc99>:<3bc58>:<lexical_block>:<3bc05>:<3bbda>: x: 0x25d8 0x269c system_supports_cnp inlined from kvm_get_vttbr:337 (kvm_mmu.h) <3bc99>:<3bc58>:<lexical_block>:<3bc05>:<3bbda>: tuvwx cpus_have_const_cap:479.30 (cpufeature.h) Sbepe return cpus_have_final_cap(║num); +num param int (base type, DW_ATE_signed size:4) 0x25d8 0x269c (DW_OP_fbreg -0x38) cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~tuvwx 000025d8: b85c83ab ldur w11, [x29, #-56] ~tuvwx 000025dc: b81d03ab stur w11, [x29, #-48] y: 0x25e0 0x268c cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <3bccb>:<3bcae>:<3bc99>:<3bc58>:<lexical_block>:<3bc05>:<3bbda>: z: 0x25e0 0x2608 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <3bce8>:<3bccb>:<3bcae>:<3bc99>:<3bc58>:<lexical_block>:<3bc05>:<3bbda>: tuvwxyz system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready); +num param int (base type, DW_ATE_signed size:4) 0x25e0 0x268c (DW_OP_fbreg -0x30) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x25e0 0x2608 (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~tuvwxyz 000025e0: b00000c8 adrp x8, 1b000 <hyp_memory+0x460> ~tuvwxyz 000025e4: b947990b ldr w11, [x8, #1944] ~tuvwxyz 000025e8: 7100016b subs w11, w11, #0x0 ~tuvwxyz 000025ec: 1a9f07ec cset w12, ne // ne = any ~tuvwxyz 000025f0: 381e43ac sturb w12, [x29, #-28] tuvwxyz system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~tuvwxyz 000025f4: 385e43ac ldurb w12, [x29, #-28] ~tuvwxyz 000025f8: 2a0c03e8 mov w8, w12 ~tuvwxyz 000025fc: 92400108 and x8, x8, #0x1 tuvwxyz system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~tuvwxyz 00002600: f9008148 str x8, [x10, #256] tuvwxyz system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~tuvwxyz 00002604: f9408148 ldr x8, [x10, #256] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x25e0 0x2608 (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c tuvwxy cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~tuvwxy │┌────00002608: b40003a8 cbz x8, 267c <__kvm_vcpu_run+0x404> ││ ~tuvwxy ││ ┌─0000260c: 14000001 b 2610 <__kvm_vcpu_run+0x398> <- 00002608(b.cc-succ)<fallthrough> ││ │ tuvwxy ││ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~tuvwxy ││ └>00002610: b85d03a8 ldur w8, [x29, #-48] <- 0000260c(b)<__kvm_vcpu_run+0x398> ~tuvwxy ││ 00002614: b81f83a8 stur w8, [x29, #-8] a: 0x2618 0x267c (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3bd14>:<3bccb>:<3bcae>:<3bc99>:<3bc58>:<lexical_block>:<3bc05>:<3bbda>: tuvwxya ││ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x2618 0x267c (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~tuvwxya ││ 00002618: b85f83a8 ldur w8, [x29, #-8] tuvwxya ││ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~tuvwxya ││ 0000261c: 7100f508 subs w8, w8, #0x3d ~tuvwxya ││ ┌──00002620: 540000ab b.lt 2634 <__kvm_vcpu_run+0x3bc> // b.tstop ││ │ ~tuvwxya ││ │┌─00002624: 14000001 b 2628 <__kvm_vcpu_run+0x3b0> <- 00002620(b.cc-succ)<fallthrough> ││ ││ ~tuvwxya ││ │└>00002628: 2a1f03e8 mov w8, wzr <- 00002624(b)<__kvm_vcpu_run+0x3b0> tuvwxya ││ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~tuvwxya ││ │ 0000262c: 381ff3a8 sturb w8, [x29, #-1] ~tuvwxya ││┌┼──00002630: 14000014 b 2680 <__kvm_vcpu_run+0x408> ││││ tuvwxya ││││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2634 0x266c (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~tuvwxya │││└─>00002634: b89f83a8 ldursw x8, [x29, #-8] <- 00002620(b.cc)<__kvm_vcpu_run+0x3bc> ~tuvwxya │││ 00002638: d37ced08 lsl x8, x8, #4 ~tuvwxya │││ 0000263c: b00000c9 adrp x9, 1b000 <hyp_memory+0x460> ~tuvwxya │││ 00002640: 911e8129 add x9, x9, #0x7a0 ~tuvwxya │││ 00002644: b868692a ldr w10, [x9, x8] ~tuvwxya │││ 00002648: 7100014a subs w10, w10, #0x0 ~tuvwxya │││ 0000264c: 1a9f07eb cset w11, ne // ne = any ~tuvwxya │││ 00002650: 381f43ab sturb w11, [x29, #-12] tuvwxya │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~tuvwxya │││ 00002654: 385f43ab ldurb w11, [x29, #-12] ~tuvwxya │││ 00002658: 2a0b03e8 mov w8, w11 ~tuvwxya │││ 0000265c: 92400108 and x8, x8, #0x1 ~tuvwxya │││ 00002660: f94007e9 ldr x9, [sp, #8] tuvwxya │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~tuvwxya │││ 00002664: f9008928 str x8, [x9, #272] tuvwxya │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~tuvwxya │││ 00002668: f9408928 ldr x8, [x9, #272] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2634 0x266c (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c tuvwxya │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~tuvwxya │││ 0000266c: f1000108 subs x8, x8, #0x0 ~tuvwxya │││ 00002670: 1a9f07eb cset w11, ne // ne = any tuvwxya │││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~tuvwxya │││ 00002674: 381ff3ab sturb w11, [x29, #-1] ~tuvwxya │││ ┌─00002678: 14000002 b 2680 <__kvm_vcpu_run+0x408> -num param int (base type, DW_ATE_signed size:4) 0x2618 0x267c (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c │││ │ tuvwxy │││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~tuvwxy │└┼─┼>0000267c: d4210000 brk #0x800 <- 00002608(b.cc)<__kvm_vcpu_run+0x404> │ │ │ b: 0x2680 0x2684 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3bd14>:<3bccb>:<3bcae>:<3bc99>:<3bc58>:<lexical_block>:<3bc05>:<3bbda>: tuvwxyb │ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x2680 0x2684 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~tuvwxyb │ └>└>00002680: 385ff3a8 ldurb w8, [x29, #-1] <- 00002630(b)<__kvm_vcpu_run+0x408>,00002678(b)<__kvm_vcpu_run+0x408> -num param int (base type, DW_ATE_signed size:4) 0x2680 0x2684 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c tuvwxy cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~tuvwxy 00002684: 381d73a8 sturb w8, [x29, #-41] tuvwxy cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~tuvwxy 00002688: 385d73a8 ldurb w8, [x29, #-41] -num param int (base type, DW_ATE_signed size:4) 0x25e0 0x268c (DW_OP_fbreg -0x30) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c tuvwx cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num); ~tuvwx 0000268c: 381cf3a8 sturb w8, [x29, #-49] tuvwx cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║} ~tuvwx 00002690: 385cf3a8 ldurb w8, [x29, #-49] ~tuvwx 00002694: 2a0803e9 mov w9, w8 ~tuvwx 00002698: f94007ea ldr x10, [sp, #8] -num param int (base type, DW_ATE_signed size:4) 0x25d8 0x269c (DW_OP_fbreg -0x38) cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c tuv kvm_get_vttbr:337.6 (kvm_mmu.h) Sbepe u64 ║cnp = system_supports_cnp() ? VTTBR_CNP_BIT : 0; ~tuv 0000269c: f9006549 str x9, [x10, #200] tuv kvm_get_vttbr:339.10 (kvm_mmu.h) Sbepe baddr = ║mmu->pgd_phys; ~tuv 000026a0: f9407549 ldr x9, [x10, #232] tuv kvm_get_vttbr:339.15 (kvm_mmu.h) sbepe baddr = mmu->║pgd_phys; ~tuv 000026a4: f9400929 ldr x9, [x9, #16] tuv kvm_get_vttbr:339.8 (kvm_mmu.h) sbepe baddr ║= mmu->pgd_phys; ~tuv 000026a8: f9006949 str x9, [x10, #208] tuv kvm_get_vttbr:340.20 (kvm_mmu.h) Sbepe vmid_field = (u64)║vmid->vmid << VTTBR_VMID_SHIFT; ~tuv 000026ac: f9407149 ldr x9, [x10, #224] tuv kvm_get_vttbr:340.15 (kvm_mmu.h) sbepe vmid_field = ║(u64)vmid->vmid << VTTBR_VMID_SHIFT; ~tuv 000026b0: b9400928 ldr w8, [x9, #8] ~tuv 000026b4: 2a0803e9 mov w9, w8 tuv kvm_get_vttbr:340.31 (kvm_mmu.h) sbepe vmid_field = (u64)vmid->vmid ║<< VTTBR_VMID_SHIFT; ~tuv 000026b8: d3503d29 lsl x9, x9, #48 tuv kvm_get_vttbr:340.13 (kvm_mmu.h) sbepe vmid_field ║= (u64)vmid->vmid << VTTBR_VMID_SHIFT; ~tuv 000026bc: f9006d49 str x9, [x10, #216] tuv kvm_get_vttbr:341.9 (kvm_mmu.h) Sbepe return ║kvm_phys_to_vttbr(baddr) | vmid_field | cnp; ~tuv 000026c0: f9406949 ldr x9, [x10, #208] tuv kvm_get_vttbr:341.36 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | ║vmid_field | cnp; ~tuv 000026c4: f9406d4b ldr x11, [x10, #216] tuv kvm_get_vttbr:341.34 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) ║| vmid_field | cnp; ~tuv 000026c8: aa0b0129 orr x9, x9, x11 tuv kvm_get_vttbr:341.49 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | vmid_field | ║cnp; ~tuv 000026cc: f940654b ldr x11, [x10, #200] tuv kvm_get_vttbr:341.47 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | vmid_field ║| cnp; ~tuv 000026d0: aa0b0129 orr x9, x9, x11 -mmu param pointer(struct kvm_s2_mmu<2d002>/<3997d>) 0x25c8 0x26d4 (DW_OP_fbreg -0x40) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c -vmid var pointer(struct kvm_vmid<2d002>/<399c2>) 0x25c8 0x26d4 (DW_OP_fbreg -0x48) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c -vmid_field var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x25c8 0x26d4 (DW_OP_fbreg -0x50) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c -baddr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x25c8 0x26d4 (DW_OP_fbreg -0x58) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c -cnp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x25c8 0x26d4 (DW_OP_fbreg -0x60) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c tu __load_stage2:351.2 (kvm_mmu.h) Sbepe ║write_sysreg(kvm_get_vttbr(mmu), vttbr_el2); ~tu 000026d4: f9005549 str x9, [x10, #168] ~tu 000026d8: f9405549 ldr x9, [x10, #168] ~tu 000026dc: d51c2109 msr vttbr_el2, x9 -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x25c0 0x26e0 (DW_OP_fbreg -0x80) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c tu __load_stage2:358.2 (kvm_mmu.h) Sbepe ║asm(ALTERNATIVE("nop", "isb", ARM64_WORKAROUND_SPECULATIVE_AT)); ~tu 000026e0: d503201f nop -mmu param pointer(struct kvm_s2_mmu<2d002>/<3997d>) 0x25b0 0x26e4 (DW_OP_fbreg -0x68) __load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c -vtcr param long unsigned int (base type, DW_ATE_unsigned size:8) 0x25b0 0x26e4 (DW_OP_fbreg -0x70) __load_stage2(inlined):__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c t __load_host_stage2:29.3 (mem_protect.h) Sbepe ║__load_stage2(&host_kvm.arch.mmu, host_kvm.arch.vtcr); ~t │ ┌───000026e4: 14000007 b 2700 <__kvm_vcpu_run+0x488> │ │ ~t └─┼──>000026e8: aa1f03e8 mov x8, xzr <- 00002590(b.cc)<__kvm_vcpu_run+0x470> ~t 000026ec: f94007e9 ldr x9, [sp, #8] t __load_host_stage2:31.3 (mem_protect.h) Sbepe ║write_sysreg(0, vttbr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x26f0 0x2700 (DW_OP_fbreg -0x98) lexblock:__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~t 000026f0: f9004928 str x8, [x9, #144] ~t 000026f4: f9404928 ldr x8, [x9, #144] ~t 000026f8: d51c2108 msr vttbr_el2, x8 ~t │ ┌─000026fc: 14000001 b 2700 <__kvm_vcpu_run+0x488> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x26f0 0x2700 (DW_OP_fbreg -0x98) lexblock:__load_host_stage2(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c │ │ │ │ __kvm_vcpu_run:226.30 (switch.c) Sbepe __sysreg_restore_state_nvhe(║host_ctxt); ~ └>└>00002700: f94033e0 ldr x0, [sp, #96] <- 000026e4(b)<__kvm_vcpu_run+0x488>,000026fc(b)<__kvm_vcpu_run+0x488> __kvm_vcpu_run:226.2 (switch.c) sbepe ║__sysreg_restore_state_nvhe(host_ctxt); ~ 00002704: 97fff77f bl 500 <__sysreg_restore_state_nvhe> __kvm_vcpu_run:228.6 (switch.c) Sbepe if (║vcpu->arch.flags & KVM_ARM64_FP_ENABLED) ~ 00002708: f94037e8 ldr x8, [sp, #104] <- 00002704(bl-succ)<return> __kvm_vcpu_run:228.6 (switch.c) sbepe if (║vcpu->arch.flags & KVM_ARM64_FP_ENABLED) ~ 0000270c: 3962c109 ldrb w9, [x8, #2224] ~ ┌───00002710: 360800a9 tbz w9, #1, 2724 <__kvm_vcpu_run+0x4ac> ~ │ ┌─00002714: 14000001 b 2718 <__kvm_vcpu_run+0x4a0> <- 00002710(b.cc-succ)<fallthrough> │ │ │ │ __kvm_vcpu_run:229.25 (switch.c) Sbepe __fpsimd_save_fpexc32(║vcpu); ~ │ └>00002718: f94037e0 ldr x0, [sp, #104] <- 00002714(b)<__kvm_vcpu_run+0x4a0> __kvm_vcpu_run:229.3 (switch.c) sbepe ║__fpsimd_save_fpexc32(vcpu); ~ 0000271c: 940003ab bl 35c8 <__fpsimd_save_fpexc32> ~ │ ┌─00002720: 14000001 b 2724 <__kvm_vcpu_run+0x4ac> <- 0000271c(bl-succ)<return> │ │ │ │ __kvm_vcpu_run:235.25 (switch.c) Sbepe __debug_switch_to_host(║vcpu); ~ └>└>00002724: f94037e0 ldr x0, [sp, #104] <- 00002710(b.cc)<__kvm_vcpu_run+0x4ac>,00002720(b)<__kvm_vcpu_run+0x4ac> __kvm_vcpu_run:235.2 (switch.c) sbepe ║__debug_switch_to_host(vcpu); ~ 00002728: 97fff9d7 bl e84 <__debug_switch_to_host> __kvm_vcpu_run:237.6 (switch.c) Sbepe if (║pmu_switch_needed) ~ 0000272c: 394153e8 ldrb w8, [sp, #84] <- 00002728(bl-succ)<return> __kvm_vcpu_run:237.6 (switch.c) sbepe if (║pmu_switch_needed) ~ ┌───00002730: 360000a8 tbz w8, #0, 2744 <__kvm_vcpu_run+0x4cc> ~ │ ┌─00002734: 14000001 b 2738 <__kvm_vcpu_run+0x4c0> <- 00002730(b.cc-succ)<fallthrough> │ │ │ │ __kvm_vcpu_run:238.24 (switch.c) Sbepe __pmu_switch_to_host(║host_ctxt); ~ │ └>00002738: f94033e0 ldr x0, [sp, #96] <- 00002734(b)<__kvm_vcpu_run+0x4c0> __kvm_vcpu_run:238.3 (switch.c) sbepe ║__pmu_switch_to_host(host_ctxt); ~ 0000273c: 940003b6 bl 3614 <__pmu_switch_to_host> ~ │ ┌─00002740: 14000001 b 2744 <__kvm_vcpu_run+0x4cc> <- 0000273c(bl-succ)<return> │ │ ~ └>└>00002744: 52800028 mov w8, #0x1 // #1 <- 00002730(b.cc)<__kvm_vcpu_run+0x4cc>,00002740(b)<__kvm_vcpu_run+0x4cc> __kvm_vcpu_run:241.6 (switch.c) Sbepe if (║system_uses_irq_prio_masking()) ~ ┌────00002748: 350003a8 cbnz w8, 27bc <__kvm_vcpu_run+0x544> ~ │ ┌─0000274c: 14000001 b 2750 <__kvm_vcpu_run+0x4d8> <- 00002748(b.cc-succ)<fallthrough> │ │ ~ │ └>00002750: 52800c08 mov w8, #0x60 // #96 <- 0000274c(b)<__kvm_vcpu_run+0x4d8> __kvm_vcpu_run:242.17 (switch.c) Sbepe gic_write_pmr(║GIC_PRIO_IRQOFF); +__prio var typedef(u8=typedef(__u8=unsigned char (base type, DW_ATE_unsigned_char size:1))) 0x2754 0x27a4 (DW_OP_breg31 0x24) lexblock:__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:242 ~ 00002754: 390093e8 strb w8, [sp, #36] __kvm_vcpu_run:242.17 (switch.c) sbepe gic_write_pmr(║GIC_PRIO_IRQOFF); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2758 0x2780 (DW_OP_breg31 0x20) lexblock:lexblock:__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:242 ~ 00002758: b00000c9 adrp x9, 1b000 <hyp_memory+0x460> ~ 0000275c: b947b928 ldr w8, [x9, #1976] ~ 00002760: 71000108 subs w8, w8, #0x0 ~ 00002764: 1a9f07ea cset w10, ne // ne = any ~ 00002768: 390083ea strb w10, [sp, #32] __kvm_vcpu_run:242.17 (switch.c) sbepe gic_write_pmr(║GIC_PRIO_IRQOFF); ~ 0000276c: 394083ea ldrb w10, [sp, #32] ~ 00002770: 2a0a03e9 mov w9, w10 ~ 00002774: 92400129 and x9, x9, #0x1 __kvm_vcpu_run:242.17 (switch.c) sbepe gic_write_pmr(║GIC_PRIO_IRQOFF); ~ 00002778: f9000fe9 str x9, [sp, #24] __kvm_vcpu_run:242.17 (switch.c) sbepe gic_write_pmr(║GIC_PRIO_IRQOFF); ~ 0000277c: f9400fe9 ldr x9, [sp, #24] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2758 0x2780 (DW_OP_breg31 0x20) lexblock:lexblock:__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:242 __kvm_vcpu_run:242.17 (switch.c) sbepe gic_write_pmr(║GIC_PRIO_IRQOFF); ~ │┌───00002780: b40000a9 cbz x9, 2794 <__kvm_vcpu_run+0x51c> ││ ~ ││ ┌─00002784: 14000001 b 2788 <__kvm_vcpu_run+0x510> <- 00002780(b.cc-succ)<fallthrough> ││ │ ~ ││ └>00002788: 52801408 mov w8, #0xa0 // #160 <- 00002784(b)<__kvm_vcpu_run+0x510> ││ __kvm_vcpu_run:242.17 (switch.c) sbepe gic_write_pmr(║GIC_PRIO_IRQOFF); ~ ││ 0000278c: 390093e8 strb w8, [sp, #36] ~ ││ ┌─00002790: 14000001 b 2794 <__kvm_vcpu_run+0x51c> ││ │ ││ │ __kvm_vcpu_run:242.17 (switch.c) sbepe gic_write_pmr(║GIC_PRIO_IRQOFF); ~ │└>└>00002794: 394093e8 ldrb w8, [sp, #36] <- 00002780(b.cc)<__kvm_vcpu_run+0x51c>,00002790(b)<__kvm_vcpu_run+0x51c> __kvm_vcpu_run:242.17 (switch.c) sbepe gic_write_pmr(║GIC_PRIO_IRQOFF); ~ 00002798: 390053e8 strb w8, [sp, #20] __kvm_vcpu_run:242.17 (switch.c) sbepe gic_write_pmr(║GIC_PRIO_IRQOFF); ~ 0000279c: 394053e8 ldrb w8, [sp, #20] ~ 000027a0: b9007fe8 str w8, [sp, #124] -__prio var typedef(u8=typedef(__u8=unsigned char (base type, DW_ATE_unsigned_char size:1))) 0x2754 0x27a4 (DW_OP_breg31 0x24) lexblock:__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:242 c: 0x27a4 0x27b8 gic_write_pmr inlined from __kvm_vcpu_run:242 (switch.c) <3bd96>: c gic_write_pmr:114.2 (arch_gicv3.h) Sbepe ║write_sysreg_s(val, SYS_ICC_PMR_EL1); +val param typedef(u32=typedef(__u32=unsigned int (base type, DW_ATE_unsigned size:4))) 0x27a4 0x27b8 (DW_OP_breg31 0x7c) gic_write_pmr(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x27a4 0x27b8 (DW_OP_breg31 0x70) lexblock:gic_write_pmr(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c ~c 000027a4: b9407fe8 ldr w8, [sp, #124] ~c 000027a8: 2a0803e9 mov w9, w8 ~c 000027ac: f9003be9 str x9, [sp, #112] ~c 000027b0: f9403be9 ldr x9, [sp, #112] ~c 000027b4: d5184609 msr s3_0_c4_c6_0, x9 -val param typedef(u32=typedef(__u32=unsigned int (base type, DW_ATE_unsigned size:4))) 0x27a4 0x27b8 (DW_OP_breg31 0x7c) gic_write_pmr(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x27a4 0x27b8 (DW_OP_breg31 0x70) lexblock:gic_write_pmr(inlined):__kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c __kvm_vcpu_run:242.3 (switch.c) Sbepe ║gic_write_pmr(GIC_PRIO_IRQOFF); ~ │ ┌─000027b8: 14000001 b 27bc <__kvm_vcpu_run+0x544> │ │ │ │ __kvm_vcpu_run:244.2 (switch.c) Sbepe ║host_ctxt->__hyp_running_vcpu = NULL; ~ └─>└>000027bc: f94033e8 ldr x8, [sp, #96] <- 00002748(b.cc)<__kvm_vcpu_run+0x544>,000027b8(b)<__kvm_vcpu_run+0x544> ~ 000027c0: aa1f03e9 mov x9, xzr __kvm_vcpu_run:244.32 (switch.c) sbepe host_ctxt->__hyp_running_vcpu ║= NULL; ~ 000027c4: f9037d09 str x9, [x8, #1784] __kvm_vcpu_run:246.9 (switch.c) Sbepe return ║exit_code; ~ 000027c8: b9404be0 ldr w0, [sp, #72] __kvm_vcpu_run:246.2 (switch.c) sbepe ║return exit_code; ~ 000027cc: f940ebfc ldr x28, [sp, #464] ~ 000027d0: a95c7bfd ldp x29, x30, [sp, #448] ~ 000027d4: 910783ff add sp, sp, #0x1e0 00002288 CFA:r29+32 r28:c-16 r29:c-32 r30:c-24 ~ 000027d8: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2278 0x27dc (DW_OP_breg31 0x68) __kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:164 -host_ctxt var pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x2278 0x27dc (DW_OP_breg31 0x60) __kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:166 -guest_ctxt var pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x2278 0x27dc (DW_OP_breg31 0x58) __kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:167 -pmu_switch_needed var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2278 0x27dc (DW_OP_breg31 0x54) __kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:168 -exit_code var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2278 0x27dc (DW_OP_breg31 0x48) __kvm_vcpu_run:arch/arm64/kvm/hyp/nvhe/switch.c:169 **000027dc <__hyp_my_cpu_offset>: + __hyp_my_cpu_offset params: none __hyp_my_cpu_offset:23.0 (percpu.h) Sbepe ║{ 000027dc CFA:r31 ~ 000027dc: d10043ff sub sp, sp, #0x10 <- 000022ec(bl)<__hyp_my_cpu_offset>,00002b30(bl)<__hyp_my_cpu_offset>,00003554(bl)<__hyp_my_cpu_offset>,00003754(bl)<__hyp_my_cpu_offset> __hyp_my_cpu_offset:28.9 (percpu.h) SbePe return ║read_sysreg(tpidr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x27e0 0x27f4 (DW_OP_fbreg 0x8) lexblock:__hyp_my_cpu_offset:arch/arm64/kvm/hyp/nvhe/switch.c:28 ~ 000027e0: d53cd048 mrs x8, tpidr_el2 ~ 000027e4: f90007e8 str x8, [sp, #8] ~ 000027e8: f94007e8 ldr x8, [sp, #8] ~ 000027ec: f90003e8 str x8, [sp] ~ 000027f0: f94003e0 ldr x0, [sp] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x27e0 0x27f4 (DW_OP_fbreg 0x8) lexblock:__hyp_my_cpu_offset:arch/arm64/kvm/hyp/nvhe/switch.c:28 __hyp_my_cpu_offset:28.2 (percpu.h) sbepe ║return read_sysreg(tpidr_el2); ~ 000027f4: 910043ff add sp, sp, #0x10 000027e0 CFA:r31+16 ~ 000027f8: d65f03c0 ret **000027fc <__pmu_switch_to_guest>: + __pmu_switch_to_guest params: +host_ctxt param pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x27fc 0x28d8 (DW_OP_fbreg 0x38) __pmu_switch_to_guest:129.0 (switch.c) Sbepe ║{ 000027fc CFA:r31 +host_ctxt param pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x27fc 0x28d8 (DW_OP_fbreg 0x38) __pmu_switch_to_guest:arch/arm64/kvm/hyp/nvhe/switch.c:128 +host var pointer(struct kvm_host_data<2d002>/<2d041>) 0x27fc 0x28d8 (DW_OP_fbreg 0x30) __pmu_switch_to_guest:arch/arm64/kvm/hyp/nvhe/switch.c:130 +pmu var pointer(struct kvm_pmu_events<2d002>/<3b581>) 0x27fc 0x28d8 (DW_OP_fbreg 0x28) __pmu_switch_to_guest:arch/arm64/kvm/hyp/nvhe/switch.c:131 ~ 000027fc: d10103ff sub sp, sp, #0x40 <- 00002328(bl)<__pmu_switch_to_guest> ~ 00002800: f9001fe0 str x0, [sp, #56] __pmu_switch_to_guest:133.9 (switch.c) SbePe host = ║container_of(host_ctxt, struct kvm_host_data, host_ctxt); +__mptr var pointer(no type) 0x2804 0x2820 (DW_OP_fbreg 0x20) lexblock:__pmu_switch_to_guest:arch/arm64/kvm/hyp/nvhe/switch.c:133 ~ 00002804: f9401fe8 ldr x8, [sp, #56] ~ 00002808: f90013e8 str x8, [sp, #32] ~ ┌─0000280c: 14000001 b 2810 <__pmu_switch_to_guest+0x14> __pmu_switch_to_guest:133.9 (switch.c) sbepe host = ║container_of(host_ctxt, struct kvm_host_data, host_ctxt); ~ ┌─└>00002810: 14000001 b 2814 <__pmu_switch_to_guest+0x18> <- 0000280c(b)<__pmu_switch_to_guest+0x14> __pmu_switch_to_guest:133.9 (switch.c) sbepe host = ║container_of(host_ctxt, struct kvm_host_data, host_ctxt); ~ └──>00002814: f94013e8 ldr x8, [sp, #32] <- 00002810(b)<__pmu_switch_to_guest+0x18> __pmu_switch_to_guest:133.9 (switch.c) sbepe host = ║container_of(host_ctxt, struct kvm_host_data, host_ctxt); ~ 00002818: f9000fe8 str x8, [sp, #24] __pmu_switch_to_guest:133.9 (switch.c) sbepe host = ║container_of(host_ctxt, struct kvm_host_data, host_ctxt); ~ 0000281c: f9400fe8 ldr x8, [sp, #24] -__mptr var pointer(no type) 0x2804 0x2820 (DW_OP_fbreg 0x20) lexblock:__pmu_switch_to_guest:arch/arm64/kvm/hyp/nvhe/switch.c:133 __pmu_switch_to_guest:133.7 (switch.c) sbepe host ║= container_of(host_ctxt, struct kvm_host_data, host_ctxt); ~ 00002820: f9001be8 str x8, [sp, #48] __pmu_switch_to_guest:134.9 (switch.c) Sbepe pmu = &║host->pmu_events; ~ 00002824: f9401be8 ldr x8, [sp, #48] __pmu_switch_to_guest:134.15 (switch.c) sbepe pmu = &host->║pmu_events; ~ 00002828: 911c0108 add x8, x8, #0x700 __pmu_switch_to_guest:134.6 (switch.c) sbepe pmu ║= &host->pmu_events; ~ 0000282c: f90017e8 str x8, [sp, #40] __pmu_switch_to_guest:136.6 (switch.c) Sbepe if (║pmu->events_host) ~ 00002830: f94017e8 ldr x8, [sp, #40] __pmu_switch_to_guest:136.11 (switch.c) sbepe if (pmu->║events_host) ~ 00002834: b9400109 ldr w9, [x8] __pmu_switch_to_guest:136.6 (switch.c) sbepe if (║pmu->events_host) ~ ┌─────00002838: 34000169 cbz w9, 2864 <__pmu_switch_to_guest+0x68> ~ │ ┌─0000283c: 14000001 b 2840 <__pmu_switch_to_guest+0x44> <- 00002838(b.cc-succ)<fallthrough> │ │ │ │ __pmu_switch_to_guest:137.3 (switch.c) Sbepe ║write_sysreg(pmu->events_host, pmcntenclr_el0); ~ │ ┌─└>00002840: 14000001 b 2844 <__pmu_switch_to_guest+0x48> <- 0000283c(b)<__pmu_switch_to_guest+0x44> │ │ │ │ __pmu_switch_to_guest:137.3 (switch.c) sbepe ║write_sysreg(pmu->events_host, pmcntenclr_el0); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2844 0x2864 (DW_OP_fbreg 0x10) lexblock:__pmu_switch_to_guest:arch/arm64/kvm/hyp/nvhe/switch.c:137 ~ │ └──>00002844: f94017e8 ldr x8, [sp, #40] <- 00002840(b)<__pmu_switch_to_guest+0x48> ~ 00002848: b9400109 ldr w9, [x8] ~ 0000284c: 2a0903e8 mov w8, w9 ~ 00002850: f9000be8 str x8, [sp, #16] ~ 00002854: f9400be8 ldr x8, [sp, #16] ~ 00002858: d51b9c48 msr pmcntenclr_el0, x8 ~ │ ┌─0000285c: 14000001 b 2860 <__pmu_switch_to_guest+0x64> │ │ ~ │ ┌─└>00002860: 14000001 b 2864 <__pmu_switch_to_guest+0x68> <- 0000285c(b)<__pmu_switch_to_guest+0x64> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2844 0x2864 (DW_OP_fbreg 0x10) lexblock:__pmu_switch_to_guest:arch/arm64/kvm/hyp/nvhe/switch.c:137 │ │ │ │ __pmu_switch_to_guest:139.6 (switch.c) Sbepe if (║pmu->events_guest) ~ └>└──>00002864: f94017e8 ldr x8, [sp, #40] <- 00002838(b.cc)<__pmu_switch_to_guest+0x68>,00002860(b)<__pmu_switch_to_guest+0x68> __pmu_switch_to_guest:139.11 (switch.c) sbepe if (pmu->║events_guest) ~ 00002868: b9400509 ldr w9, [x8, #4] __pmu_switch_to_guest:139.6 (switch.c) sbepe if (║pmu->events_guest) ~ ┌─────0000286c: 34000169 cbz w9, 2898 <__pmu_switch_to_guest+0x9c> ~ │ ┌─00002870: 14000001 b 2874 <__pmu_switch_to_guest+0x78> <- 0000286c(b.cc-succ)<fallthrough> │ │ │ │ __pmu_switch_to_guest:140.3 (switch.c) Sbepe ║write_sysreg(pmu->events_guest, pmcntenset_el0); ~ │ ┌─└>00002874: 14000001 b 2878 <__pmu_switch_to_guest+0x7c> <- 00002870(b)<__pmu_switch_to_guest+0x78> │ │ │ │ __pmu_switch_to_guest:140.3 (switch.c) sbepe ║write_sysreg(pmu->events_guest, pmcntenset_el0); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2878 0x2898 (DW_OP_fbreg 0x8) lexblock:__pmu_switch_to_guest:arch/arm64/kvm/hyp/nvhe/switch.c:140 ~ │ └──>00002878: f94017e8 ldr x8, [sp, #40] <- 00002874(b)<__pmu_switch_to_guest+0x7c> ~ 0000287c: b9400509 ldr w9, [x8, #4] ~ 00002880: 2a0903e8 mov w8, w9 ~ 00002884: f90007e8 str x8, [sp, #8] ~ 00002888: f94007e8 ldr x8, [sp, #8] ~ 0000288c: d51b9c28 msr pmcntenset_el0, x8 ~ │ ┌─00002890: 14000001 b 2894 <__pmu_switch_to_guest+0x98> │ │ ~ │ ┌─└>00002894: 14000001 b 2898 <__pmu_switch_to_guest+0x9c> <- 00002890(b)<__pmu_switch_to_guest+0x98> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2878 0x2898 (DW_OP_fbreg 0x8) lexblock:__pmu_switch_to_guest:arch/arm64/kvm/hyp/nvhe/switch.c:140 │ │ │ │ __pmu_switch_to_guest:142.10 (switch.c) Sbepe return (║pmu->events_host || pmu->events_guest); ~ └>└──>00002898: f94017e8 ldr x8, [sp, #40] <- 0000286c(b.cc)<__pmu_switch_to_guest+0x9c>,00002894(b)<__pmu_switch_to_guest+0x9c> __pmu_switch_to_guest:142.15 (switch.c) sbepe return (pmu->║events_host || pmu->events_guest); ~ 0000289c: b9400109 ldr w9, [x8] ~ 000028a0: 5280002a mov w10, #0x1 // #1 ~ 000028a4: b90007ea str w10, [sp, #4] __pmu_switch_to_guest:142.27 (switch.c) sbepe return (pmu->events_host ║|| pmu->events_guest); ~ ┌───000028a8: 35000109 cbnz w9, 28c8 <__pmu_switch_to_guest+0xcc> ~ │ ┌─000028ac: 14000001 b 28b0 <__pmu_switch_to_guest+0xb4> <- 000028a8(b.cc-succ)<fallthrough> │ │ │ │ __pmu_switch_to_guest:142.30 (switch.c) sbepe return (pmu->events_host || ║pmu->events_guest); ~ │ └>000028b0: f94017e8 ldr x8, [sp, #40] <- 000028ac(b)<__pmu_switch_to_guest+0xb4> __pmu_switch_to_guest:142.35 (switch.c) sbepe return (pmu->events_host || pmu->║events_guest); ~ 000028b4: b9400509 ldr w9, [x8, #4] __pmu_switch_to_guest:142.27 (switch.c) sbepe return (pmu->events_host ║|| pmu->events_guest); ~ 000028b8: 71000129 subs w9, w9, #0x0 ~ 000028bc: 1a9f07ea cset w10, ne // ne = any ~ 000028c0: b90007ea str w10, [sp, #4] ~ │ ┌─000028c4: 14000001 b 28c8 <__pmu_switch_to_guest+0xcc> │ │ ~ └>└>000028c8: b94007e8 ldr w8, [sp, #4] <- 000028a8(b.cc)<__pmu_switch_to_guest+0xcc>,000028c4(b)<__pmu_switch_to_guest+0xcc> __pmu_switch_to_guest:142.2 (switch.c) sbepe ║return (pmu->events_host || pmu->events_guest); ~ 000028cc: 12000100 and w0, w8, #0x1 ~ 000028d0: 910103ff add sp, sp, #0x40 00002800 CFA:r31+64 ~ 000028d4: d65f03c0 ret -host_ctxt param pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x27fc 0x28d8 (DW_OP_fbreg 0x38) __pmu_switch_to_guest:arch/arm64/kvm/hyp/nvhe/switch.c:128 -host var pointer(struct kvm_host_data<2d002>/<2d041>) 0x27fc 0x28d8 (DW_OP_fbreg 0x30) __pmu_switch_to_guest:arch/arm64/kvm/hyp/nvhe/switch.c:130 -pmu var pointer(struct kvm_pmu_events<2d002>/<3b581>) 0x27fc 0x28d8 (DW_OP_fbreg 0x28) __pmu_switch_to_guest:arch/arm64/kvm/hyp/nvhe/switch.c:131 **000028d8 <__adjust_pc>: + __adjust_pc params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x28d8 0x2950 (DW_OP_breg31 0x8) __adjust_pc:51.0 (adjust_pc.h) Sbepe ║{ +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x28d8 0x2950 (DW_OP_breg31 0x8) __adjust_pc:arch/arm64/kvm/hyp/nvhe/switch.c:50 ~ 000028d8: d10083ff sub sp, sp, #0x20 <- 00002340(bl)<__adjust_pc> ~ 000028dc: a9017bfd stp x29, x30, [sp, #16] 000028d8 CFA:r31 r29:u r30:u ~ 000028e0: 910043fd add x29, sp, #0x10 ~ 000028e4: f90007e0 str x0, [sp, #8] __adjust_pc:52.6 (adjust_pc.h) SbePe if (║vcpu->arch.flags & KVM_ARM64_PENDING_EXCEPTION) { ~ 000028e8: f94007e8 ldr x8, [sp, #8] __adjust_pc:52.6 (adjust_pc.h) sbepe if (║vcpu->arch.flags & KVM_ARM64_PENDING_EXCEPTION) { ~ 000028ec: 3962c509 ldrb w9, [x8, #2225] ~ ┌──000028f0: 36000129 tbz w9, #0, 2914 <__adjust_pc+0x3c> ~ │┌─000028f4: 14000001 b 28f8 <__adjust_pc+0x20> <- 000028f0(b.cc-succ)<fallthrough> ││ ││ __adjust_pc:53.24 (adjust_pc.h) Sbepe kvm_inject_exception(║vcpu); ~ │└>000028f8: f94007e0 ldr x0, [sp, #8] <- 000028f4(b)<__adjust_pc+0x20> __adjust_pc:53.3 (adjust_pc.h) sbepe ║kvm_inject_exception(vcpu); ~ 000028fc: 94003fc5 bl 12810 <kvm_inject_exception> __adjust_pc:54.3 (adjust_pc.h) Sbepe ║vcpu->arch.flags &= ~(KVM_ARM64_PENDING_EXCEPTION | ~ 00002900: f94007e8 ldr x8, [sp, #8] <- 000028fc(bl-succ)<return> __adjust_pc:54.20 (adjust_pc.h) sbepe vcpu->arch.flags ║&= ~(KVM_ARM64_PENDING_EXCEPTION | ~ 00002904: f9445909 ldr x9, [x8, #2224] ~ 00002908: 9274ed29 and x9, x9, #0xfffffffffffff0ff ~ 0000290c: f9045909 str x9, [x8, #2224] __adjust_pc:56.2 (adjust_pc.h) Sbepe ║} else if (vcpu->arch.flags & KVM_ARM64_INCREMENT_PC) { ~ ┌───┼──00002910: 1400000d b 2944 <__adjust_pc+0x6c> │ │ │ │ __adjust_pc:56.14 (adjust_pc.h) sbepe } else if (║vcpu->arch.flags & KVM_ARM64_INCREMENT_PC) { ~ │ └─>00002914: f94007e8 ldr x8, [sp, #8] <- 000028f0(b.cc)<__adjust_pc+0x3c> __adjust_pc:56.14 (adjust_pc.h) sbepe } else if (║vcpu->arch.flags & KVM_ARM64_INCREMENT_PC) { ~ 00002918: 3962c509 ldrb w9, [x8, #2225] ~ │┌─────0000291c: 36080129 tbz w9, #1, 2940 <__adjust_pc+0x68> ││ ~ ││ ┌─00002920: 14000001 b 2924 <__adjust_pc+0x4c> <- 0000291c(b.cc-succ)<fallthrough> ││ │ ││ │ __adjust_pc:57.18 (adjust_pc.h) Sbepe kvm_skip_instr(║vcpu); ~ ││ └>00002924: f94007e0 ldr x0, [sp, #8] <- 00002920(b)<__adjust_pc+0x4c> ││ __adjust_pc:57.3 (adjust_pc.h) sbepe ║kvm_skip_instr(vcpu); ~ ││ 00002928: 94000449 bl 3a4c <kvm_skip_instr> ││ ││ __adjust_pc:58.3 (adjust_pc.h) Sbepe ║vcpu->arch.flags &= ~KVM_ARM64_INCREMENT_PC; ~ ││ 0000292c: f94007e8 ldr x8, [sp, #8] <- 00002928(bl-succ)<return> ││ __adjust_pc:58.20 (adjust_pc.h) sbepe vcpu->arch.flags ║&= ~KVM_ARM64_INCREMENT_PC; ~ ││ 00002930: f9445909 ldr x9, [x8, #2224] ~ ││ 00002934: 9276f929 and x9, x9, #0xfffffffffffffdff ~ ││ 00002938: f9045909 str x9, [x8, #2224] ││ __adjust_pc:59.2 (adjust_pc.h) Sbepe } ~ ││ ┌─0000293c: 14000001 b 2940 <__adjust_pc+0x68> ││ │ ~ │└>┌─└>00002940: 14000001 b 2944 <__adjust_pc+0x6c> <- 0000291c(b.cc)<__adjust_pc+0x68>,0000293c(b)<__adjust_pc+0x68> │ │ │ │ __adjust_pc:60.1 (adjust_pc.h) Sbepe ║} ~ └─>└──>00002944: a9417bfd ldp x29, x30, [sp, #16] <- 00002910(b)<__adjust_pc+0x6c>,00002940(b)<__adjust_pc+0x6c> ~ 00002948: 910083ff add sp, sp, #0x20 000028e4 CFA:r29+16 r29:c-16 r30:c-8 ~ 0000294c: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x28d8 0x2950 (DW_OP_breg31 0x8) __adjust_pc:arch/arm64/kvm/hyp/nvhe/switch.c:50 **00002950 <__sysreg32_restore_state>: + __sysreg32_restore_state params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2950 0x2a68 (DW_OP_fbreg 0x38) __sysreg32_restore_state:177.0 (sysreg-sr.h) Sbepe ║{ 00002950 CFA:r31 +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2950 0x2a68 (DW_OP_fbreg 0x38) __sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:176 ~ 00002950: d10143ff sub sp, sp, #0x50 <- 00002348(bl)<__sysreg32_restore_state> ~ 00002954: f9001fe0 str x0, [sp, #56] __sysreg32_restore_state:178.25 (sysreg-sr.h) SbePe if (!vcpu_el1_is_32bit(║vcpu)) ~ 00002958: f9401fe8 ldr x8, [sp, #56] ~ 0000295c: f90023e8 str x8, [sp, #64] d: 0x2960 0x2964 vcpu_el1_is_32bit inlined from __sysreg32_restore_state:178 (sysreg-sr.h) <3bf05>: d vcpu_el1_is_32bit:46.11 (kvm_emulate.h) Sbepe return !(║vcpu->arch.hcr_el2 & HCR_RW); +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2960 0x2964 (DW_OP_fbreg 0x40) vcpu_el1_is_32bit(inlined):__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c ~d 00002960: f94023e8 ldr x8, [sp, #64] -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2960 0x2964 (DW_OP_fbreg 0x40) vcpu_el1_is_32bit(inlined):__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c __sysreg32_restore_state:178.6 (sysreg-sr.h) Sbepe if (║!vcpu_el1_is_32bit(vcpu)) ~ 00002964: 3961ed09 ldrb w9, [x8, #2171] ~ ┌───00002968: 36380069 tbz w9, #7, 2974 <__sysreg32_restore_state+0x24> ~ │ ┌─0000296c: 14000001 b 2970 <__sysreg32_restore_state+0x20> <- 00002968(b.cc-succ)<fallthrough> │ │ │ │ __sysreg32_restore_state:179.3 (sysreg-sr.h) Sbepe ║return; ~ ┌────┼─└>00002970: 1400003c b 2a60 <__sysreg32_restore_state+0x110> <- 0000296c(b)<__sysreg32_restore_state+0x20> │ │ │ │ __sysreg32_restore_state:181.2 (sysreg-sr.h) Sbepe ║write_sysreg(vcpu->arch.ctxt.spsr_abt, spsr_abt); ~ │ └>┌─00002974: 14000001 b 2978 <__sysreg32_restore_state+0x28> <- 00002968(b.cc)<__sysreg32_restore_state+0x24> │ │ │ │ __sysreg32_restore_state:181.2 (sysreg-sr.h) sbepe ║write_sysreg(vcpu->arch.ctxt.spsr_abt, spsr_abt); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2978 0x2990 (DW_OP_fbreg 0x30) lexblock:__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:181 ~ │ └>00002978: f9401fe8 ldr x8, [sp, #56] <- 00002974(b)<__sysreg32_restore_state+0x28> ~ 0000297c: f9413908 ldr x8, [x8, #624] ~ 00002980: f9001be8 str x8, [sp, #48] ~ 00002984: f9401be8 ldr x8, [sp, #48] ~ 00002988: d51c4328 msr spsr_abt, x8 ~ │ ┌─0000298c: 14000001 b 2990 <__sysreg32_restore_state+0x40> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2978 0x2990 (DW_OP_fbreg 0x30) lexblock:__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:181 │ │ │ │ __sysreg32_restore_state:182.2 (sysreg-sr.h) Sbepe ║write_sysreg(vcpu->arch.ctxt.spsr_und, spsr_und); ~ │ ┌─└>00002990: 14000001 b 2994 <__sysreg32_restore_state+0x44> <- 0000298c(b)<__sysreg32_restore_state+0x40> │ │ │ │ __sysreg32_restore_state:182.2 (sysreg-sr.h) sbepe ║write_sysreg(vcpu->arch.ctxt.spsr_und, spsr_und); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2994 0x29ac (DW_OP_fbreg 0x28) lexblock:__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:182 ~ │ └──>00002994: f9401fe8 ldr x8, [sp, #56] <- 00002990(b)<__sysreg32_restore_state+0x44> ~ 00002998: f9413d08 ldr x8, [x8, #632] ~ 0000299c: f90017e8 str x8, [sp, #40] ~ 000029a0: f94017e8 ldr x8, [sp, #40] ~ 000029a4: d51c4348 msr spsr_und, x8 ~ │ ┌─000029a8: 14000001 b 29ac <__sysreg32_restore_state+0x5c> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2994 0x29ac (DW_OP_fbreg 0x28) lexblock:__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:182 │ │ │ │ __sysreg32_restore_state:183.2 (sysreg-sr.h) Sbepe ║write_sysreg(vcpu->arch.ctxt.spsr_irq, spsr_irq); ~ │ ┌─└>000029ac: 14000001 b 29b0 <__sysreg32_restore_state+0x60> <- 000029a8(b)<__sysreg32_restore_state+0x5c> │ │ │ │ __sysreg32_restore_state:183.2 (sysreg-sr.h) sbepe ║write_sysreg(vcpu->arch.ctxt.spsr_irq, spsr_irq); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x29b0 0x29c8 (DW_OP_fbreg 0x20) lexblock:__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:183 ~ │ └──>000029b0: f9401fe8 ldr x8, [sp, #56] <- 000029ac(b)<__sysreg32_restore_state+0x60> ~ 000029b4: f9414108 ldr x8, [x8, #640] ~ 000029b8: f90013e8 str x8, [sp, #32] ~ 000029bc: f94013e8 ldr x8, [sp, #32] ~ 000029c0: d51c4308 msr spsr_irq, x8 ~ │ ┌─000029c4: 14000001 b 29c8 <__sysreg32_restore_state+0x78> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x29b0 0x29c8 (DW_OP_fbreg 0x20) lexblock:__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:183 │ │ │ │ __sysreg32_restore_state:184.2 (sysreg-sr.h) Sbepe ║write_sysreg(vcpu->arch.ctxt.spsr_fiq, spsr_fiq); ~ │ ┌─└>000029c8: 14000001 b 29cc <__sysreg32_restore_state+0x7c> <- 000029c4(b)<__sysreg32_restore_state+0x78> │ │ │ │ __sysreg32_restore_state:184.2 (sysreg-sr.h) sbepe ║write_sysreg(vcpu->arch.ctxt.spsr_fiq, spsr_fiq); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x29cc 0x29e4 (DW_OP_fbreg 0x18) lexblock:__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:184 ~ │ └──>000029cc: f9401fe8 ldr x8, [sp, #56] <- 000029c8(b)<__sysreg32_restore_state+0x7c> ~ 000029d0: f9414508 ldr x8, [x8, #648] ~ 000029d4: f9000fe8 str x8, [sp, #24] ~ 000029d8: f9400fe8 ldr x8, [sp, #24] ~ 000029dc: d51c4368 msr spsr_fiq, x8 ~ │ ┌─000029e0: 14000001 b 29e4 <__sysreg32_restore_state+0x94> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x29cc 0x29e4 (DW_OP_fbreg 0x18) lexblock:__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:184 │ │ │ │ __sysreg32_restore_state:186.2 (sysreg-sr.h) Sbepe ║write_sysreg(__vcpu_sys_reg(vcpu, DACR32_EL2), dacr32_el2); ~ │ ┌─└>000029e4: 14000001 b 29e8 <__sysreg32_restore_state+0x98> <- 000029e0(b)<__sysreg32_restore_state+0x94> │ │ │ │ __sysreg32_restore_state:186.2 (sysreg-sr.h) sbepe ║write_sysreg(__vcpu_sys_reg(vcpu, DACR32_EL2), dacr32_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x29e8 0x2a00 (DW_OP_fbreg 0x10) lexblock:__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:186 ~ │ └──>000029e8: f9401fe8 ldr x8, [sp, #56] <- 000029e4(b)<__sysreg32_restore_state+0x98> ~ 000029ec: f9441d08 ldr x8, [x8, #2104] ~ 000029f0: f9000be8 str x8, [sp, #16] ~ 000029f4: f9400be8 ldr x8, [sp, #16] ~ 000029f8: d51c3008 msr dacr32_el2, x8 ~ │ ┌─000029fc: 14000001 b 2a00 <__sysreg32_restore_state+0xb0> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x29e8 0x2a00 (DW_OP_fbreg 0x10) lexblock:__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:186 │ │ │ │ __sysreg32_restore_state:187.2 (sysreg-sr.h) Sbepe ║write_sysreg(__vcpu_sys_reg(vcpu, IFSR32_EL2), ifsr32_el2); ~ │ ┌─└>00002a00: 14000001 b 2a04 <__sysreg32_restore_state+0xb4> <- 000029fc(b)<__sysreg32_restore_state+0xb0> │ │ │ │ __sysreg32_restore_state:187.2 (sysreg-sr.h) sbepe ║write_sysreg(__vcpu_sys_reg(vcpu, IFSR32_EL2), ifsr32_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2a04 0x2a1c (DW_OP_fbreg 0x8) lexblock:__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:187 ~ │ └──>00002a04: f9401fe8 ldr x8, [sp, #56] <- 00002a00(b)<__sysreg32_restore_state+0xb4> ~ 00002a08: f9442108 ldr x8, [x8, #2112] ~ 00002a0c: f90007e8 str x8, [sp, #8] ~ 00002a10: f94007e8 ldr x8, [sp, #8] ~ 00002a14: d51c5028 msr ifsr32_el2, x8 ~ │ ┌─00002a18: 14000001 b 2a1c <__sysreg32_restore_state+0xcc> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2a04 0x2a1c (DW_OP_fbreg 0x8) lexblock:__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:187 │ │ ~ │ └>00002a1c: 2a1f03e8 mov w8, wzr <- 00002a18(b)<__sysreg32_restore_state+0xcc> e: 0x2a20 0x2a28 has_vhe inlined from __sysreg32_restore_state:189 (sysreg-sr.h) <3bfcb>: e has_vhe:113.3 (virt.h) Sbepe ║return false; ~e 00002a20: 39013fe8 strb w8, [sp, #79] e has_vhe:116.1 (virt.h) Sbepe ║} ~e 00002a24: 39413fe8 ldrb w8, [sp, #79] __sysreg32_restore_state:189.16 (sysreg-sr.h) Sbepe if (has_vhe() ║|| vcpu->arch.flags & KVM_ARM64_DEBUG_DIRTY) ~ │ ┌─────00002a28: 370000c8 tbnz w8, #0, 2a40 <__sysreg32_restore_state+0xf0> │ │ ~ │ │ ┌─00002a2c: 14000001 b 2a30 <__sysreg32_restore_state+0xe0> <- 00002a28(b.cc-succ)<fallthrough> │ │ │ │ │ │ __sysreg32_restore_state:189.19 (sysreg-sr.h) sbepe if (has_vhe() || ║vcpu->arch.flags & KVM_ARM64_DEBUG_DIRTY) ~ │ │ └>00002a30: f9401fe8 ldr x8, [sp, #56] <- 00002a2c(b)<__sysreg32_restore_state+0xe0> │ │ __sysreg32_restore_state:189.6 (sysreg-sr.h) sbepe if (║has_vhe() || vcpu->arch.flags & KVM_ARM64_DEBUG_DIRTY) ~ │ │ 00002a34: 3962c109 ldrb w9, [x8, #2224] ~ │ ┌┼─────00002a38: 36000149 tbz w9, #0, 2a60 <__sysreg32_restore_state+0x110> │ ││ ~ │ ││ ┌─00002a3c: 14000001 b 2a40 <__sysreg32_restore_state+0xf0> <- 00002a38(b.cc-succ)<fallthrough> │ ││ │ │ ││ │ __sysreg32_restore_state:190.3 (sysreg-sr.h) Sbepe ║write_sysreg(__vcpu_sys_reg(vcpu, DBGVCR32_EL2), dbgvcr32_el2); ~ │ │└>┌─└>00002a40: 14000001 b 2a44 <__sysreg32_restore_state+0xf4> <- 00002a28(b.cc)<__sysreg32_restore_state+0xf0>,00002a3c(b)<__sysreg32_restore_state+0xf0> │ │ │ │ │ │ __sysreg32_restore_state:190.3 (sysreg-sr.h) sbepe ║write_sysreg(__vcpu_sys_reg(vcpu, DBGVCR32_EL2), dbgvcr32_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2a44 0x2a60 (DW_OP_fbreg 0x0) lexblock:__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:190 ~ │ │ └──>00002a44: f9401fe8 ldr x8, [sp, #56] <- 00002a40(b)<__sysreg32_restore_state+0xf4> ~ │ │ 00002a48: f9442908 ldr x8, [x8, #2128] ~ │ │ 00002a4c: f90003e8 str x8, [sp] ~ │ │ 00002a50: f94003e8 ldr x8, [sp] ~ │ │ 00002a54: d5140708 msr dbgvcr32_el2, x8 ~ │ │ ┌─00002a58: 14000001 b 2a5c <__sysreg32_restore_state+0x10c> │ │ │ ~ │ │ ┌─└>00002a5c: 14000001 b 2a60 <__sysreg32_restore_state+0x110> <- 00002a58(b)<__sysreg32_restore_state+0x10c> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2a44 0x2a60 (DW_OP_fbreg 0x0) lexblock:__sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:190 │ │ │ │ │ │ __sysreg32_restore_state:191.1 (sysreg-sr.h) Sbepe ║} ~ └>└─>└──>00002a60: 910143ff add sp, sp, #0x50 <- 00002970(b)<__sysreg32_restore_state+0x110>,00002a38(b.cc)<__sysreg32_restore_state+0x110>,00002a5c(b)<__sysreg32_restore_state+0x110> 00002954 CFA:r31+80 ~ 00002a64: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2950 0x2a68 (DW_OP_fbreg 0x38) __sysreg32_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:176 **00002a68 <__activate_traps>: + __activate_traps params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2a68 0x2c98 (DW_OP_fbreg -0x38) __activate_traps:39.0 (switch.c) Sbepe ║{ +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2a68 0x2c98 (DW_OP_fbreg -0x38) __activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:38 +val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2a68 0x2c98 (DW_OP_fbreg -0x40) __activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:40 ~ 00002a68: d10343ff sub sp, sp, #0xd0 <- 000024f8(bl)<__activate_traps> ~ 00002a6c: a90c7bfd stp x29, x30, [sp, #192] 00002a68 CFA:r31 r29:u r30:u ~ 00002a70: 910303fd add x29, sp, #0xc0 ~ 00002a74: f81c83a0 stur x0, [x29, #-56] __activate_traps:42.20 (switch.c) SbePe ___activate_traps(║vcpu); ~ 00002a78: f85c83a0 ldur x0, [x29, #-56] __activate_traps:42.2 (switch.c) sbepe ║___activate_traps(vcpu); ~ 00002a7c: 94000440 bl 3b7c <___activate_traps> __activate_traps:43.26 (switch.c) Sbepe __activate_traps_common(║vcpu); ~ 00002a80: f85c83a0 ldur x0, [x29, #-56] <- 00002a7c(bl-succ)<return> __activate_traps:43.2 (switch.c) sbepe ║__activate_traps_common(vcpu); ~ 00002a84: 940004b8 bl 3d64 <__activate_traps_common> ~ 00002a88: 52865fe8 mov w8, #0x32ff // #13055 <- 00002a84(bl-succ)<return> ~ 00002a8c: 2a0803e9 mov w9, w8 __activate_traps:45.6 (switch.c) Sbepe val ║= CPTR_EL2_DEFAULT; ~ 00002a90: f81c03a9 stur x9, [x29, #-64] __activate_traps:46.6 (switch.c) Sbepe val ║|= CPTR_EL2_TTA | CPTR_EL2_TZ | CPTR_EL2_TAM; ~ 00002a94: f85c03a9 ldur x9, [x29, #-64] ~ 00002a98: 52802008 mov w8, #0x100 // #256 ~ 00002a9c: 72a80208 movk w8, #0x4010, lsl #16 ~ 00002aa0: 2a0803ea mov w10, w8 ~ 00002aa4: aa0a0129 orr x9, x9, x10 ~ 00002aa8: f81c03a9 stur x9, [x29, #-64] __activate_traps:47.25 (switch.c) Sbepe if (!update_fp_enabled(║vcpu)) { ~ 00002aac: f85c83a0 ldur x0, [x29, #-56] __activate_traps:47.7 (switch.c) sbepe if (!║update_fp_enabled(vcpu)) { ~ 00002ab0: 940004cd bl 3de4 <update_fp_enabled> __activate_traps:47.6 (switch.c) sbepe if (║!update_fp_enabled(vcpu)) { ~ ┌─────00002ab4: 37000100 tbnz w0, #0, 2ad4 <__activate_traps+0x6c> <- 00002ab0(bl-succ)<return> ~ │ ┌─00002ab8: 14000001 b 2abc <__activate_traps+0x54> <- 00002ab4(b.cc-succ)<fallthrough> │ │ │ │ __activate_traps:48.7 (switch.c) Sbepe val ║|= CPTR_EL2_TFP; ~ │ └>00002abc: f85c03a8 ldur x8, [x29, #-64] <- 00002ab8(b)<__activate_traps+0x54> ~ 00002ac0: b2760108 orr x8, x8, #0x400 ~ 00002ac4: f81c03a8 stur x8, [x29, #-64] __activate_traps:49.29 (switch.c) Sbepe __activate_traps_fpsimd32(║vcpu); ~ 00002ac8: f85c83a0 ldur x0, [x29, #-56] __activate_traps:49.3 (switch.c) sbepe ║__activate_traps_fpsimd32(vcpu); ~ 00002acc: 94000509 bl 3ef0 <__activate_traps_fpsimd32> __activate_traps:50.2 (switch.c) Sbepe } ~ │ ┌─00002ad0: 14000001 b 2ad4 <__activate_traps+0x6c> <- 00002acc(bl-succ)<return> │ │ │ │ __activate_traps:52.2 (switch.c) Sbepe ║write_sysreg(val, cptr_el2); ~ └>┌─└>00002ad4: 14000001 b 2ad8 <__activate_traps+0x70> <- 00002ab4(b.cc)<__activate_traps+0x6c>,00002ad0(b)<__activate_traps+0x6c> __activate_traps:52.2 (switch.c) sbepe ║write_sysreg(val, cptr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2ad8 0x2aec (DW_OP_fbreg -0x48) lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:52 ~ └──>00002ad8: f85c03a8 ldur x8, [x29, #-64] <- 00002ad4(b)<__activate_traps+0x70> ~ 00002adc: f81b83a8 stur x8, [x29, #-72] ~ 00002ae0: f85b83a8 ldur x8, [x29, #-72] ~ 00002ae4: d51c1148 msr cptr_el2, x8 ~ ┌─00002ae8: 14000001 b 2aec <__activate_traps+0x84> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2ad8 0x2aec (DW_OP_fbreg -0x48) lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:52 __activate_traps:53.2 (switch.c) Sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); ~ ┌─└>00002aec: 14000001 b 2af0 <__activate_traps+0x88> <- 00002ae8(b)<__activate_traps+0x84> __activate_traps:53.2 (switch.c) sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2af0 0x2b80 (DW_OP_fbreg -0x50) lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:53 ~ └──>00002af0: d00000a0 adrp x0, 18000 <cc_map+0x74> <- 00002aec(b)<__activate_traps+0x88> ~ 00002af4: 910e2000 add x0, x0, #0x388 ~ 00002af8: 94000543 bl 4004 <__this_cpu_preempt_check> __activate_traps:53.2 (switch.c) sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); +pscr_ret__ var long unsigned int (base type, DW_ATE_unsigned size:8) 0x2afc 0x2b68 (DW_OP_breg31 0x60) lexblock:lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:53 ~ ┌─00002afc: 14000001 b 2b00 <__activate_traps+0x98> <- 00002af8(bl-succ)<return> ~ └>00002b00: aa1f03e8 mov x8, xzr <- 00002afc(b)<__activate_traps+0x98> __activate_traps:53.2 (switch.c) sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); +__vpp_verify var pointer(const(no type)) 0x2b04 0x2b0c (DW_OP_breg31 0x58) lexblock:lexblock:lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:53 ~ 00002b04: f9002fe8 str x8, [sp, #88] ~ ┌─00002b08: 14000001 b 2b0c <__activate_traps+0xa4> -__vpp_verify var pointer(const(no type)) 0x2b04 0x2b0c (DW_OP_breg31 0x58) lexblock:lexblock:lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:53 __activate_traps:53.2 (switch.c) sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); ~ ┌─└>00002b0c: 14000001 b 2b10 <__activate_traps+0xa8> <- 00002b08(b)<__activate_traps+0xa4> ~ └──>00002b10: aa1f03e8 mov x8, xzr <- 00002b0c(b)<__activate_traps+0xa8> __activate_traps:53.2 (switch.c) sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); +__vpp_verify var pointer(const(no type)) 0x2b14 0x2b1c (DW_OP_breg31 0x48) lexblock:lexblock:lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:53 ~ 00002b14: f90027e8 str x8, [sp, #72] ~ ┌─00002b18: 14000001 b 2b1c <__activate_traps+0xb4> -__vpp_verify var pointer(const(no type)) 0x2b14 0x2b1c (DW_OP_breg31 0x48) lexblock:lexblock:lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:53 __activate_traps:53.2 (switch.c) sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); +__ptr var long unsigned int (base type, DW_ATE_unsigned size:8) 0x2b1c 0x2b44 (DW_OP_breg31 0x38) lexblock:lexblock:lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:53 ~ └>00002b1c: f00000a8 adrp x8, 19000 <kvm_host_data> <- 00002b18(b)<__activate_traps+0xb4> ~ 00002b20: 91384108 add x8, x8, #0xe10 ~ 00002b24: f9001fe8 str x8, [sp, #56] ~ 00002b28: f9401fe8 ldr x8, [sp, #56] ~ 00002b2c: f90007e8 str x8, [sp, #8] ~ 00002b30: 97ffff2b bl 27dc <__hyp_my_cpu_offset> ~ 00002b34: f94007e8 ldr x8, [sp, #8] <- 00002b30(bl-succ)<return> ~ 00002b38: 8b000108 add x8, x8, x0 ~ 00002b3c: f9001be8 str x8, [sp, #48] ~ 00002b40: f9401be8 ldr x8, [sp, #48] -__ptr var long unsigned int (base type, DW_ATE_unsigned size:8) 0x2b1c 0x2b44 (DW_OP_breg31 0x38) lexblock:lexblock:lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:53 __activate_traps:53.2 (switch.c) sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); +__vpp_verify var pointer(const(no type)) 0x2b44 0x2b48 (DW_OP_breg31 0x48) lexblock:lexblock:lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:53 ~ 00002b44: f90023e8 str x8, [sp, #64] -__vpp_verify var pointer(const(no type)) 0x2b44 0x2b48 (DW_OP_breg31 0x48) lexblock:lexblock:lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:53 __activate_traps:53.2 (switch.c) sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); ~ 00002b48: f94023e8 ldr x8, [sp, #64] __activate_traps:53.2 (switch.c) sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); ~ 00002b4c: f9400108 ldr x8, [x8] __activate_traps:53.2 (switch.c) sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); ~ 00002b50: f9002be8 str x8, [sp, #80] __activate_traps:53.2 (switch.c) sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); ~ 00002b54: f9402be8 ldr x8, [sp, #80] __activate_traps:53.2 (switch.c) sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); ~ 00002b58: f90033e8 str x8, [sp, #96] ~ 00002b5c: f94033e8 ldr x8, [sp, #96] ~ 00002b60: f90017e8 str x8, [sp, #40] ~ 00002b64: f94017e8 ldr x8, [sp, #40] -pscr_ret__ var long unsigned int (base type, DW_ATE_unsigned size:8) 0x2afc 0x2b68 (DW_OP_breg31 0x60) lexblock:lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:53 __activate_traps:53.2 (switch.c) sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); ~ 00002b68: f81a83a8 stur x8, [x29, #-88] ~ 00002b6c: f85a83a8 ldur x8, [x29, #-88] __activate_traps:53.2 (switch.c) sbepe ║write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2); ~ 00002b70: f81b03a8 stur x8, [x29, #-80] ~ 00002b74: f85b03a8 ldur x8, [x29, #-80] ~ 00002b78: d51cc008 msr vbar_el2, x8 ~ ┌─00002b7c: 14000001 b 2b80 <__activate_traps+0x118> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2af0 0x2b80 (DW_OP_fbreg -0x50) lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:53 ~ └>00002b80: 528004a8 mov w8, #0x25 // #37 <- 00002b7c(b)<__activate_traps+0x118> ~ 00002b84: b81d03a8 stur w8, [x29, #-48] f: 0x2b88 0x2c30 cpus_have_final_cap inlined from __activate_traps:55 (switch.c) <3c0d2>: g: 0x2b88 0x2bb0 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <3c0ee>:<3c0d2>: fg system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready); +num param int (base type, DW_ATE_signed size:4) 0x2b88 0x2c30 (DW_OP_fbreg -0x30) cpus_have_final_cap(inlined):__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2b88 0x2bb0 (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~fg 00002b88: b00000c9 adrp x9, 1b000 <hyp_memory+0x460> ~fg 00002b8c: b9479928 ldr w8, [x9, #1944] ~fg 00002b90: 71000108 subs w8, w8, #0x0 ~fg 00002b94: 1a9f07ea cset w10, ne // ne = any ~fg 00002b98: 381e43aa sturb w10, [x29, #-28] fg system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~fg 00002b9c: 385e43aa ldurb w10, [x29, #-28] ~fg 00002ba0: 2a0a03e9 mov w9, w10 ~fg 00002ba4: 92400129 and x9, x9, #0x1 fg system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~fg 00002ba8: f81d83a9 stur x9, [x29, #-40] fg system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~fg 00002bac: f85d83a9 ldur x9, [x29, #-40] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2b88 0x2bb0 (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c f cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~f ┌────00002bb0: b4000389 cbz x9, 2c20 <__activate_traps+0x1b8> ~f │ ┌─00002bb4: 14000001 b 2bb8 <__activate_traps+0x150> <- 00002bb0(b.cc-succ)<fallthrough> │ │ f │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~f │ └>00002bb8: b85d03a8 ldur w8, [x29, #-48] <- 00002bb4(b)<__activate_traps+0x150> ~f 00002bbc: b81f83a8 stur w8, [x29, #-8] h: 0x2bc0 0x2c20 (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3c11a>:<3c0d2>: fh __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x2bc0 0x2c20 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~fh 00002bc0: b85f83a8 ldur w8, [x29, #-8] fh __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~fh 00002bc4: 7100f508 subs w8, w8, #0x3d ~fh │ ┌──00002bc8: 540000ab b.lt 2bdc <__activate_traps+0x174> // b.tstop │ │ ~fh │ │┌─00002bcc: 14000001 b 2bd0 <__activate_traps+0x168> <- 00002bc8(b.cc-succ)<fallthrough> │ ││ ~fh │ │└>00002bd0: 2a1f03e8 mov w8, wzr <- 00002bcc(b)<__activate_traps+0x168> fh │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~fh │ │ 00002bd4: 381ff3a8 sturb w8, [x29, #-1] ~fh │┌┼──00002bd8: 14000013 b 2c24 <__activate_traps+0x1bc> │││ fh │││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2bdc 0x2c10 (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~fh ││└─>00002bdc: b89f83a8 ldursw x8, [x29, #-8] <- 00002bc8(b.cc)<__activate_traps+0x174> ~fh ││ 00002be0: d37ced08 lsl x8, x8, #4 ~fh ││ 00002be4: b00000c9 adrp x9, 1b000 <hyp_memory+0x460> ~fh ││ 00002be8: 911e8129 add x9, x9, #0x7a0 ~fh ││ 00002bec: b868692a ldr w10, [x9, x8] ~fh ││ 00002bf0: 7100014a subs w10, w10, #0x0 ~fh ││ 00002bf4: 1a9f07eb cset w11, ne // ne = any ~fh ││ 00002bf8: 381f43ab sturb w11, [x29, #-12] fh ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~fh ││ 00002bfc: 385f43ab ldurb w11, [x29, #-12] ~fh ││ 00002c00: 2a0b03e8 mov w8, w11 ~fh ││ 00002c04: 92400108 and x8, x8, #0x1 fh ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~fh ││ 00002c08: f81e83a8 stur x8, [x29, #-24] fh ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~fh ││ 00002c0c: f85e83a8 ldur x8, [x29, #-24] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2bdc 0x2c10 (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c fh ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~fh ││ 00002c10: f1000108 subs x8, x8, #0x0 ~fh ││ 00002c14: 1a9f07eb cset w11, ne // ne = any fh ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~fh ││ 00002c18: 381ff3ab sturb w11, [x29, #-1] ~fh ││ ┌─00002c1c: 14000002 b 2c24 <__activate_traps+0x1bc> -num param int (base type, DW_ATE_signed size:4) 0x2bc0 0x2c20 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ││ │ f ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~f └┼─┼>00002c20: d4210000 brk #0x800 <- 00002bb0(b.cc)<__activate_traps+0x1b8> │ │ i: 0x2c24 0x2c28 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3c11a>:<3c0d2>: fi │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x2c24 0x2c28 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~fi └>└>00002c24: 385ff3a8 ldurb w8, [x29, #-1] <- 00002bd8(b)<__activate_traps+0x1bc>,00002c1c(b)<__activate_traps+0x1bc> -num param int (base type, DW_ATE_signed size:4) 0x2c24 0x2c28 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c f cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~f 00002c28: 381d73a8 sturb w8, [x29, #-41] f cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~f 00002c2c: 385d73a8 ldurb w8, [x29, #-41] -num param int (base type, DW_ATE_signed size:4) 0x2b88 0x2c30 (DW_OP_fbreg -0x30) cpus_have_final_cap(inlined):__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c __activate_traps:55.6 (switch.c) Sbepe if (║cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) { ~ 00002c30: 71000508 subs w8, w8, #0x1 ~ ┌─────00002c34: 540002c1 b.ne 2c8c <__activate_traps+0x224> // b.any ~ │ ┌─00002c38: 14000001 b 2c3c <__activate_traps+0x1d4> <- 00002c34(b.cc-succ)<fallthrough> │ │ │ │ __activate_traps:56.35 (switch.c) Sbepe struct kvm_cpu_context *ctxt = &║vcpu->arch.ctxt; +ctxt var pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x2c3c 0x2c8c (DW_OP_breg31 0x20) lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:56 ~ │ └>00002c3c: f85c83a8 ldur x8, [x29, #-56] <- 00002c38(b)<__activate_traps+0x1d4> __activate_traps:56.41 (switch.c) sbepe struct kvm_cpu_context *ctxt = &vcpu->║arch.ctxt; ~ 00002c40: 91058108 add x8, x8, #0x160 __activate_traps:56.27 (switch.c) sbepe struct kvm_cpu_context *║ctxt = &vcpu->arch.ctxt; ~ 00002c44: f90013e8 str x8, [sp, #32] __activate_traps:58.3 (switch.c) Sbepe ║isb(); ~ 00002c48: d5033fdf isb __activate_traps:64.3 (switch.c) Sbepe ║write_sysreg_el1(ctxt_sys_reg(ctxt, SCTLR_EL1), SYS_SCTLR); ~ │ ┌─00002c4c: 14000001 b 2c50 <__activate_traps+0x1e8> │ │ │ │ __activate_traps:64.3 (switch.c) sbepe ║write_sysreg_el1(ctxt_sys_reg(ctxt, SCTLR_EL1), SYS_SCTLR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2c50 0x2c68 (DW_OP_breg31 0x18) lexblock:lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:64 ~ │ └>00002c50: f94013e8 ldr x8, [sp, #32] <- 00002c4c(b)<__activate_traps+0x1e8> ~ 00002c54: f941ad08 ldr x8, [x8, #856] ~ 00002c58: f9000fe8 str x8, [sp, #24] ~ 00002c5c: f9400fe8 ldr x8, [sp, #24] ~ 00002c60: d5181008 msr sctlr_el1, x8 ~ │ ┌─00002c64: 14000001 b 2c68 <__activate_traps+0x200> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2c50 0x2c68 (DW_OP_breg31 0x18) lexblock:lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:64 │ │ │ │ __activate_traps:65.3 (switch.c) Sbepe ║isb(); ~ │ └>00002c68: d5033fdf isb <- 00002c64(b)<__activate_traps+0x200> __activate_traps:66.3 (switch.c) Sbepe ║write_sysreg_el1(ctxt_sys_reg(ctxt, TCR_EL1), SYS_TCR); ~ │ ┌─00002c6c: 14000001 b 2c70 <__activate_traps+0x208> │ │ │ │ __activate_traps:66.3 (switch.c) sbepe ║write_sysreg_el1(ctxt_sys_reg(ctxt, TCR_EL1), SYS_TCR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2c70 0x2c88 (DW_OP_breg31 0x10) lexblock:lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:66 ~ │ └>00002c70: f94013e8 ldr x8, [sp, #32] <- 00002c6c(b)<__activate_traps+0x208> ~ 00002c74: f941c508 ldr x8, [x8, #904] ~ 00002c78: f9000be8 str x8, [sp, #16] ~ 00002c7c: f9400be8 ldr x8, [sp, #16] ~ 00002c80: d5182048 msr tcr_el1, x8 ~ │ ┌─00002c84: 14000001 b 2c88 <__activate_traps+0x220> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2c70 0x2c88 (DW_OP_breg31 0x10) lexblock:lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:66 │ │ │ │ __activate_traps:67.2 (switch.c) Sbepe } ~ │ ┌─└>00002c88: 14000001 b 2c8c <__activate_traps+0x224> <- 00002c84(b)<__activate_traps+0x220> -ctxt var pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x2c3c 0x2c8c (DW_OP_breg31 0x20) lexblock:__activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:56 │ │ │ │ __activate_traps:68.1 (switch.c) Sbepe ║} ~ └>└──>00002c8c: a94c7bfd ldp x29, x30, [sp, #192] <- 00002c34(b.cc)<__activate_traps+0x224>,00002c88(b)<__activate_traps+0x224> ~ 00002c90: 910343ff add sp, sp, #0xd0 00002a74 CFA:r29+16 r29:c-16 r30:c-8 ~ 00002c94: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2a68 0x2c98 (DW_OP_fbreg -0x38) __activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:38 -val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2a68 0x2c98 (DW_OP_fbreg -0x40) __activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:40 **00002c98 <__hyp_vgic_restore_state>: + __hyp_vgic_restore_state params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2c98 0x2d00 (DW_OP_fbreg -0x8) __hyp_vgic_restore_state:118.0 (switch.c) Sbepe ║{ +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2c98 0x2d00 (DW_OP_fbreg -0x8) __hyp_vgic_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:117 ~ 00002c98: d100c3ff sub sp, sp, #0x30 <- 00002500(bl)<__hyp_vgic_restore_state> ~ 00002c9c: a9027bfd stp x29, x30, [sp, #32] 00002c98 CFA:r31 r29:u r30:u ~ 00002ca0: 910083fd add x29, sp, #0x20 ~ 00002ca4: f81f83a0 stur x0, [x29, #-8] __hyp_vgic_restore_state:119.6 (switch.c) SbePe if (║static_branch_unlikely(&kvm_vgic_global_state.gicv3_cpuif)) { +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2ca8 0x2cd0 (DW_OP_fbreg -0xc) lexblock:__hyp_vgic_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:119 ~ 00002ca8: b00000c8 adrp x8, 1b000 <hyp_memory+0x460> ~ 00002cac: b947b109 ldr w9, [x8, #1968] ~ 00002cb0: 71000129 subs w9, w9, #0x0 ~ 00002cb4: 1a9f07ea cset w10, ne // ne = any ~ 00002cb8: 381f43aa sturb w10, [x29, #-12] __hyp_vgic_restore_state:119.6 (switch.c) sbepe if (║static_branch_unlikely(&kvm_vgic_global_state.gicv3_cpuif)) { ~ 00002cbc: 385f43aa ldurb w10, [x29, #-12] ~ 00002cc0: 2a0a03e8 mov w8, w10 ~ 00002cc4: 92400108 and x8, x8, #0x1 __hyp_vgic_restore_state:119.6 (switch.c) sbepe if (║static_branch_unlikely(&kvm_vgic_global_state.gicv3_cpuif)) { ~ 00002cc8: f90007e8 str x8, [sp, #8] __hyp_vgic_restore_state:119.6 (switch.c) sbepe if (║static_branch_unlikely(&kvm_vgic_global_state.gicv3_cpuif)) { ~ 00002ccc: f94007e8 ldr x8, [sp, #8] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2ca8 0x2cd0 (DW_OP_fbreg -0xc) lexblock:__hyp_vgic_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:119 __hyp_vgic_restore_state:119.6 (switch.c) sbepe if (║static_branch_unlikely(&kvm_vgic_global_state.gicv3_cpuif)) { ~ ┌───00002cd0: b4000128 cbz x8, 2cf4 <__hyp_vgic_restore_state+0x5c> ~ │ ┌─00002cd4: 14000001 b 2cd8 <__hyp_vgic_restore_state+0x40> <- 00002cd0(b.cc-succ)<fallthrough> │ │ │ │ __hyp_vgic_restore_state:120.29 (switch.c) Sbepe __vgic_v3_activate_traps(&║vcpu->arch.vgic_cpu.vgic_v3); ~ │ └>00002cd8: f85f83a8 ldur x8, [x29, #-8] <- 00002cd4(b)<__hyp_vgic_restore_state+0x40> __hyp_vgic_restore_state:120.40 (switch.c) sbepe __vgic_v3_activate_traps(&vcpu->arch.║vgic_cpu.vgic_v3); ~ 00002cdc: 913b6100 add x0, x8, #0xed8 __hyp_vgic_restore_state:120.3 (switch.c) sbepe ║__vgic_v3_activate_traps(&vcpu->arch.vgic_cpu.vgic_v3); ~ 00002ce0: 940026f9 bl c8c4 <__vgic_v3_activate_traps> __hyp_vgic_restore_state:121.28 (switch.c) Sbepe __vgic_v3_restore_state(&║vcpu->arch.vgic_cpu.vgic_v3); ~ 00002ce4: f85f83a8 ldur x8, [x29, #-8] <- 00002ce0(bl-succ)<return> __hyp_vgic_restore_state:121.39 (switch.c) sbepe __vgic_v3_restore_state(&vcpu->arch.║vgic_cpu.vgic_v3); ~ 00002ce8: 913b6100 add x0, x8, #0xed8 __hyp_vgic_restore_state:121.3 (switch.c) sbepe ║__vgic_v3_restore_state(&vcpu->arch.vgic_cpu.vgic_v3); ~ 00002cec: 940026b8 bl c7cc <__vgic_v3_restore_state> __hyp_vgic_restore_state:122.2 (switch.c) Sbepe } ~ │ ┌─00002cf0: 14000001 b 2cf4 <__hyp_vgic_restore_state+0x5c> <- 00002cec(bl-succ)<return> │ │ │ │ __hyp_vgic_restore_state:123.1 (switch.c) Sbepe ║} ~ └>└>00002cf4: a9427bfd ldp x29, x30, [sp, #32] <- 00002cd0(b.cc)<__hyp_vgic_restore_state+0x5c>,00002cf0(b)<__hyp_vgic_restore_state+0x5c> ~ 00002cf8: 9100c3ff add sp, sp, #0x30 00002ca4 CFA:r29+16 r29:c-16 r30:c-8 ~ 00002cfc: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2c98 0x2d00 (DW_OP_fbreg -0x8) __hyp_vgic_restore_state:arch/arm64/kvm/hyp/nvhe/switch.c:117 **00002d00 <fixup_guest_exit>: + fixup_guest_exit params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2d00 0x3210 (DW_OP_breg31 0x80) +exit_code param pointer(typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x2d00 0x3210 (DW_OP_breg31 0x78) fixup_guest_exit:418.0 (switch.h) Sbepe ║{ +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2d00 0x3210 (DW_OP_breg31 0x80) fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:417 +exit_code param pointer(typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x2d00 0x3210 (DW_OP_breg31 0x78) fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:417 ~ 00002d00: d10603ff sub sp, sp, #0x180 <- 00002530(bl)<fixup_guest_exit> ~ 00002d04: a9167bfd stp x29, x30, [sp, #352] ~ 00002d08: f900bbfc str x28, [sp, #368] 00002d00 CFA:r31 r28:u r29:u r30:u ~ 00002d0c: 910583fd add x29, sp, #0x160 ~ 00002d10: 9102a3e8 add x8, sp, #0xa8 ~ 00002d14: f90043e0 str x0, [sp, #128] ~ 00002d18: f9003fe1 str x1, [sp, #120] fixup_guest_exit:419.6 (switch.h) SbePe if (║ARM_EXCEPTION_CODE(*exit_code) != ARM_EXCEPTION_IRQ) ~ 00002d1c: f9403fe9 ldr x9, [sp, #120] fixup_guest_exit:419.6 (switch.h) sbepe if (║ARM_EXCEPTION_CODE(*exit_code) != ARM_EXCEPTION_IRQ) ~ 00002d20: b940012a ldr w10, [x9] ~ 00002d24: 1200794a and w10, w10, #0x7fffffff ~ 00002d28: f9000be8 str x8, [sp, #16] ~ ┌───00002d2c: 3400014a cbz w10, 2d54 <fixup_guest_exit+0x54> ~ │ ┌─00002d30: 14000001 b 2d34 <fixup_guest_exit+0x34> <- 00002d2c(b.cc-succ)<fallthrough> │ │ +reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2d34 0x2d48 (DW_OP_breg31 0x70) lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:420 ~ │ └>00002d34: d53c5208 mrs x8, esr_el2 <- 00002d30(b)<fixup_guest_exit+0x34> fixup_guest_exit:420.30 (switch.h) Sbepe vcpu->arch.fault.esr_el2 = ║read_sysreg_el2(SYS_ESR); ~ 00002d38: f9003be8 str x8, [sp, #112] ~ 00002d3c: f9403be8 ldr x8, [sp, #112] ~ 00002d40: f90037e8 str x8, [sp, #104] ~ 00002d44: f94037e8 ldr x8, [sp, #104] -reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2d34 0x2d48 (DW_OP_breg31 0x70) lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:420 fixup_guest_exit:420.3 (switch.h) sbepe ║vcpu->arch.fault.esr_el2 = read_sysreg_el2(SYS_ESR); ~ 00002d48: f94043e9 ldr x9, [sp, #128] fixup_guest_exit:420.28 (switch.h) sbepe vcpu->arch.fault.esr_el2 ║= read_sysreg_el2(SYS_ESR); ~ 00002d4c: b9088928 str w8, [x9, #2184] fixup_guest_exit:420.3 (switch.h) sbepe ║vcpu->arch.fault.esr_el2 = read_sysreg_el2(SYS_ESR); ~ │ ┌─00002d50: 14000001 b 2d54 <fixup_guest_exit+0x54> │ │ │ │ fixup_guest_exit:422.6 (switch.h) Sbepe if (║ARM_SERROR_PENDING(*exit_code)) { ~ └>└>00002d54: f9403fe8 ldr x8, [sp, #120] <- 00002d2c(b.cc)<fixup_guest_exit+0x54>,00002d50(b)<fixup_guest_exit+0x54> fixup_guest_exit:422.6 (switch.h) sbepe if (║ARM_SERROR_PENDING(*exit_code)) { ~ 00002d58: 39400d09 ldrb w9, [x8, #3] ~ ┌────────00002d5c: 36380409 tbz w9, #7, 2ddc <fixup_guest_exit+0xdc> ~ │ ┌─00002d60: 14000001 b 2d64 <fixup_guest_exit+0x64> <- 00002d5c(b.cc-succ)<fallthrough> │ │ │ │ fixup_guest_exit:423.39 (switch.h) Sbepe u8 esr_ec = kvm_vcpu_trap_get_class(║vcpu); +esr_ec var typedef(u8=typedef(__u8=unsigned char (base type, DW_ATE_unsigned_char size:1))) 0x2d64 0x2ddc (DW_OP_breg31 0x64) lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:423 ~ │ └>00002d64: f94043e8 ldr x8, [sp, #128] <- 00002d60(b)<fixup_guest_exit+0x64> ~ 00002d68: f9004be8 str x8, [sp, #144] j: 0x2d6c 0x2d84 kvm_vcpu_trap_get_class inlined from fixup_guest_exit:423 (switch.h) <3c32f>:<lexical_block>: j kvm_vcpu_trap_get_class:311.9 (kvm_emulate.h) Sbepe return ║ESR_ELx_EC(kvm_vcpu_get_esr(vcpu)); +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2d6c 0x2d84 (DW_OP_breg31 0x90) kvm_vcpu_trap_get_class(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~j 00002d6c: f9404be8 ldr x8, [sp, #144] ~j 00002d70: f9004fe8 str x8, [sp, #152] k: 0x2d74 0x2d80 kvm_vcpu_get_esr inlined from kvm_vcpu_trap_get_class:311 (kvm_emulate.h) <3c34d>:<3c32f>:<lexical_block>: jk kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2d74 0x2d80 (DW_OP_breg31 0x98) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_class(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~jk 00002d74: f9404fe8 ldr x8, [sp, #152] jk kvm_vcpu_get_esr:224.26 (kvm_emulate.h) sbepe return vcpu->arch.fault.║esr_el2; ~jk 00002d78: b9488909 ldr w9, [x8, #2184] ~jk 00002d7c: 2a0903e8 mov w8, w9 -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2d74 0x2d80 (DW_OP_breg31 0x98) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_class(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c j kvm_vcpu_trap_get_class:311.9 (kvm_emulate.h) Sbepe return ║ESR_ELx_EC(kvm_vcpu_get_esr(vcpu)); ~j 00002d80: d35afd08 lsr x8, x8, #26 -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2d6c 0x2d84 (DW_OP_breg31 0x90) kvm_vcpu_trap_get_class(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c fixup_guest_exit:423.6 (switch.h) Sbepe u8 ║esr_ec = kvm_vcpu_trap_get_class(vcpu); ~ 00002d84: 390193e8 strb w8, [sp, #100] fixup_guest_exit:433.7 (switch.h) Sbepe if (║esr_ec == ESR_ELx_EC_HVC32 || esr_ec == ESR_ELx_EC_HVC64) ~ 00002d88: 394193e8 ldrb w8, [sp, #100] fixup_guest_exit:433.34 (switch.h) sbepe if (esr_ec == ESR_ELx_EC_HVC32 ║|| esr_ec == ESR_ELx_EC_HVC64) ~ 00002d8c: 71004908 subs w8, w8, #0x12 ~ │ ┌─────00002d90: 540000c0 b.eq 2da8 <fixup_guest_exit+0xa8> // b.none │ │ ~ │ │ ┌─00002d94: 14000001 b 2d98 <fixup_guest_exit+0x98> <- 00002d90(b.cc-succ)<fallthrough> │ │ │ │ │ │ fixup_guest_exit:433.37 (switch.h) sbepe if (esr_ec == ESR_ELx_EC_HVC32 || ║esr_ec == ESR_ELx_EC_HVC64) ~ │ │ └>00002d98: 394193e8 ldrb w8, [sp, #100] <- 00002d94(b)<fixup_guest_exit+0x98> │ │ fixup_guest_exit:433.7 (switch.h) sbepe if (║esr_ec == ESR_ELx_EC_HVC32 || esr_ec == ESR_ELx_EC_HVC64) ~ │ │ 00002d9c: 71005908 subs w8, w8, #0x16 ~ │┌─┼─────00002da0: 540001c1 b.ne 2dd8 <fixup_guest_exit+0xd8> // b.any ││ │ ~ ││ │ ┌─00002da4: 14000001 b 2da8 <fixup_guest_exit+0xa8> <- 00002da0(b.cc-succ)<fallthrough> ││ │ │ ││ │ │ fixup_guest_exit:434.4 (switch.h) Sbepe ║write_sysreg_el2(read_sysreg_el2(SYS_ELR) - 4, SYS_ELR); ~ ││ └>┌─└>00002da8: 14000001 b 2dac <fixup_guest_exit+0xac> <- 00002d90(b.cc)<fixup_guest_exit+0xa8>,00002da4(b)<fixup_guest_exit+0xa8> ││ │ +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2dac 0x2dd8 (DW_OP_breg31 0x58) lexblock:lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:434 +reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2dac 0x2dc0 (DW_OP_breg31 0x50) lexblock:lexblock:lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:434 ~ ││ └──>00002dac: d53c4028 mrs x8, elr_el2 <- 00002da8(b)<fixup_guest_exit+0xac> ││ fixup_guest_exit:434.4 (switch.h) sbepe ║write_sysreg_el2(read_sysreg_el2(SYS_ELR) - 4, SYS_ELR); ~ ││ 00002db0: f9002be8 str x8, [sp, #80] ~ ││ 00002db4: f9402be8 ldr x8, [sp, #80] ~ ││ 00002db8: f90027e8 str x8, [sp, #72] ~ ││ 00002dbc: f94027e8 ldr x8, [sp, #72] -reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2dac 0x2dc0 (DW_OP_breg31 0x50) lexblock:lexblock:lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:434 ││ fixup_guest_exit:434.4 (switch.h) sbepe ║write_sysreg_el2(read_sysreg_el2(SYS_ELR) - 4, SYS_ELR); ~ ││ 00002dc0: f1001108 subs x8, x8, #0x4 ~ ││ 00002dc4: f9002fe8 str x8, [sp, #88] ~ ││ 00002dc8: f9402fe8 ldr x8, [sp, #88] ~ ││ 00002dcc: d51c4028 msr elr_el2, x8 ~ ││ ┌─00002dd0: 14000001 b 2dd4 <fixup_guest_exit+0xd4> ││ │ ~ ││ ┌─└>00002dd4: 14000001 b 2dd8 <fixup_guest_exit+0xd8> <- 00002dd0(b)<fixup_guest_exit+0xd4> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x2dac 0x2dd8 (DW_OP_breg31 0x58) lexblock:lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:434 ││ │ ││ │ fixup_guest_exit:435.2 (switch.h) Sbepe } ~ │└>┌─└──>00002dd8: 14000001 b 2ddc <fixup_guest_exit+0xdc> <- 00002da0(b.cc)<fixup_guest_exit+0xd8>,00002dd4(b)<fixup_guest_exit+0xd8> -esr_ec var typedef(u8=typedef(__u8=unsigned char (base type, DW_ATE_unsigned_char size:1))) 0x2d64 0x2ddc (DW_OP_breg31 0x64) lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:423 │ │ │ │ fixup_guest_exit:443.7 (switch.h) Sbepe if (*║exit_code != ARM_EXCEPTION_TRAP) ~ └─>└────>00002ddc: f9403fe8 ldr x8, [sp, #120] <- 00002d5c(b.cc)<fixup_guest_exit+0xdc>,00002dd8(b)<fixup_guest_exit+0xdc> fixup_guest_exit:443.6 (switch.h) sbepe if (║*exit_code != ARM_EXCEPTION_TRAP) ~ 00002de0: f9400108 ldr x8, [x8] fixup_guest_exit:443.6 (switch.h) sbepe if (║*exit_code != ARM_EXCEPTION_TRAP) ~ 00002de4: f1000908 subs x8, x8, #0x2 ~ ┌──00002de8: 54000060 b.eq 2df4 <fixup_guest_exit+0xf4> // b.none ~ │┌─00002dec: 14000001 b 2df0 <fixup_guest_exit+0xf0> <- 00002de8(b.cc-succ)<fallthrough> ││ ││ fixup_guest_exit:444.3 (switch.h) Sbepe ║goto exit; ~ ┌───────────┼└>00002df0: 140000fc b 31e0 <fixup_guest_exit+0x4e0> <- 00002dec(b)<fixup_guest_exit+0xf0> │ │ ~ │ └─>00002df4: 528005a8 mov w8, #0x2d // #45 <- 00002de8(b.cc)<fixup_guest_exit+0xf4> ~ 00002df8: b900a3e8 str w8, [sp, #160] l: 0x2dfc 0x2eac cpus_have_final_cap inlined from fixup_guest_exit:446 (switch.h) <3c3aa>: m: 0x2dfc 0x2e28 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <3c3c8>:<3c3aa>: lm system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready); +num param int (base type, DW_ATE_signed size:4) 0x2dfc 0x2eac (DW_OP_breg31 0xa0) cpus_have_final_cap(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2dfc 0x2e28 (DW_OP_fbreg -0xac) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~lm 00002dfc: b00000c9 adrp x9, 1b000 <hyp_memory+0x460> ~lm 00002e00: b9479928 ldr w8, [x9, #1944] ~lm 00002e04: 71000108 subs w8, w8, #0x0 ~lm 00002e08: 1a9f07ea cset w10, ne // ne = any ~lm 00002e0c: 381543aa sturb w10, [x29, #-172] lm system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~lm 00002e10: 385543aa ldurb w10, [x29, #-172] ~lm 00002e14: 2a0a03e9 mov w9, w10 ~lm 00002e18: 92400129 and x9, x9, #0x1 ~lm 00002e1c: f9400beb ldr x11, [sp, #16] lm system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~lm 00002e20: f9000169 str x9, [x11] lm system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~lm 00002e24: f9400169 ldr x9, [x11] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2dfc 0x2e28 (DW_OP_fbreg -0xac) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c l cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~l │ ┌────00002e28: b40003a9 cbz x9, 2e9c <fixup_guest_exit+0x19c> │ │ ~l │ │ ┌─00002e2c: 14000001 b 2e30 <fixup_guest_exit+0x130> <- 00002e28(b.cc-succ)<fallthrough> │ │ │ l │ │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~l │ │ └>00002e30: b940a3e8 ldr w8, [sp, #160] <- 00002e2c(b)<fixup_guest_exit+0x130> ~l │ │ 00002e34: b81683a8 stur w8, [x29, #-152] n: 0x2e38 0x2e9c (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3c3f5>:<3c3aa>: ln │ │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x2e38 0x2e9c (DW_OP_fbreg -0x98) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~ln │ │ 00002e38: b85683a8 ldur w8, [x29, #-152] ln │ │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~ln │ │ 00002e3c: 7100f508 subs w8, w8, #0x3d ~ln │ │ ┌──00002e40: 540000ab b.lt 2e54 <fixup_guest_exit+0x154> // b.tstop │ │ │ ~ln │ │ │┌─00002e44: 14000001 b 2e48 <fixup_guest_exit+0x148> <- 00002e40(b.cc-succ)<fallthrough> │ │ ││ ~ln │ │ │└>00002e48: 2a1f03e8 mov w8, wzr <- 00002e44(b)<fixup_guest_exit+0x148> ln │ │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~ln │ │ │ 00002e4c: 3816f3a8 sturb w8, [x29, #-145] ~ln │ │┌┼──00002e50: 14000014 b 2ea0 <fixup_guest_exit+0x1a0> │ │││ ln │ │││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2e54 0x2e8c (DW_OP_fbreg -0x9c) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~ln │ ││└─>00002e54: b89683a8 ldursw x8, [x29, #-152] <- 00002e40(b.cc)<fixup_guest_exit+0x154> ~ln │ ││ 00002e58: d37ced08 lsl x8, x8, #4 ~ln │ ││ 00002e5c: b00000c9 adrp x9, 1b000 <hyp_memory+0x460> ~ln │ ││ 00002e60: 911e8129 add x9, x9, #0x7a0 ~ln │ ││ 00002e64: b868692a ldr w10, [x9, x8] ~ln │ ││ 00002e68: 7100014a subs w10, w10, #0x0 ~ln │ ││ 00002e6c: 1a9f07eb cset w11, ne // ne = any ~ln │ ││ 00002e70: 381643ab sturb w11, [x29, #-156] ln │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ln │ ││ 00002e74: 385643ab ldurb w11, [x29, #-156] ~ln │ ││ 00002e78: 2a0b03e8 mov w8, w11 ~ln │ ││ 00002e7c: 92400108 and x8, x8, #0x1 ~ln │ ││ 00002e80: f9400be9 ldr x9, [sp, #16] ln │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ln │ ││ 00002e84: f9000928 str x8, [x9, #16] ln │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ln │ ││ 00002e88: f9400928 ldr x8, [x9, #16] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2e54 0x2e8c (DW_OP_fbreg -0x9c) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ln │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ln │ ││ 00002e8c: f1000108 subs x8, x8, #0x0 ~ln │ ││ 00002e90: 1a9f07eb cset w11, ne // ne = any ln │ ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~ln │ ││ 00002e94: 3816f3ab sturb w11, [x29, #-145] ~ln │ ││ ┌─00002e98: 14000002 b 2ea0 <fixup_guest_exit+0x1a0> -num param int (base type, DW_ATE_signed size:4) 0x2e38 0x2e9c (DW_OP_fbreg -0x98) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c │ ││ │ l │ ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~l │ └┼─┼>00002e9c: d4210000 brk #0x800 <- 00002e28(b.cc)<fixup_guest_exit+0x19c> │ │ │ o: 0x2ea0 0x2ea4 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3c3f5>:<3c3aa>: lo │ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x2ea0 0x2ea4 (DW_OP_fbreg -0x98) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~lo │ └>└>00002ea0: 3856f3a8 ldurb w8, [x29, #-145] <- 00002e50(b)<fixup_guest_exit+0x1a0>,00002e98(b)<fixup_guest_exit+0x1a0> -num param int (base type, DW_ATE_signed size:4) 0x2ea0 0x2ea4 (DW_OP_fbreg -0x98) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c l cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~l 00002ea4: 39029fe8 strb w8, [sp, #167] l cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~l 00002ea8: 39429fe8 ldrb w8, [sp, #167] -num param int (base type, DW_ATE_signed size:4) 0x2dfc 0x2eac (DW_OP_breg31 0xa0) cpus_have_final_cap(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c fixup_guest_exit:446.63 (switch.h) Sbepe if (cpus_have_final_cap(ARM64_WORKAROUND_CAVIUM_TX2_219_TVM) && ~ 00002eac: 71000508 subs w8, w8, #0x1 ~ │ ┌──────00002eb0: 54000261 b.ne 2efc <fixup_guest_exit+0x1fc> // b.any │ │ ~ │ │ ┌─00002eb4: 14000001 b 2eb8 <fixup_guest_exit+0x1b8> <- 00002eb0(b.cc-succ)<fallthrough> │ │ │ │ │ │ fixup_guest_exit:447.30 (switch.h) Sbepe kvm_vcpu_trap_get_class(║vcpu) == ESR_ELx_EC_SYS64 && ~ │ │ └>00002eb8: f94043e8 ldr x8, [sp, #128] <- 00002eb4(b)<fixup_guest_exit+0x1b8> ~ │ │ 00002ebc: f9400be9 ldr x9, [sp, #16] ~ │ │ 00002ec0: f9001528 str x8, [x9, #40] p: 0x2ec4 0x2edc kvm_vcpu_trap_get_class inlined from fixup_guest_exit:447 (switch.h) <3c424>: p │ │ kvm_vcpu_trap_get_class:311.9 (kvm_emulate.h) Sbepe return ║ESR_ELx_EC(kvm_vcpu_get_esr(vcpu)); +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2ec4 0x2edc (DW_OP_fbreg -0x90) kvm_vcpu_trap_get_class(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~p │ │ 00002ec4: f9401528 ldr x8, [x9, #40] ~p │ │ 00002ec8: f9001928 str x8, [x9, #48] q: 0x2ecc 0x2ed8 kvm_vcpu_get_esr inlined from kvm_vcpu_trap_get_class:311 (kvm_emulate.h) <3c442>:<3c424>: pq │ │ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2ecc 0x2ed8 (DW_OP_fbreg -0x88) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_class(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~pq │ │ 00002ecc: f9401928 ldr x8, [x9, #48] pq │ │ kvm_vcpu_get_esr:224.26 (kvm_emulate.h) sbepe return vcpu->arch.fault.║esr_el2; ~pq │ │ 00002ed0: b948890a ldr w10, [x8, #2184] ~pq │ │ 00002ed4: 2a0a03e8 mov w8, w10 -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2ecc 0x2ed8 (DW_OP_fbreg -0x88) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_class(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c p │ │ kvm_vcpu_trap_get_class:311.9 (kvm_emulate.h) Sbepe return ║ESR_ELx_EC(kvm_vcpu_get_esr(vcpu)); ~p │ │ 00002ed8: d35afd08 lsr x8, x8, #26 -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2ec4 0x2edc (DW_OP_fbreg -0x90) kvm_vcpu_trap_get_class(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c │ │ fixup_guest_exit:447.56 (switch.h) Sbepe kvm_vcpu_trap_get_class(vcpu) == ESR_ELx_EC_SYS64 && ~ │ │ 00002edc: 71006108 subs w8, w8, #0x18 ~ │ │ ┌────00002ee0: 540000e1 b.ne 2efc <fixup_guest_exit+0x1fc> // b.any │ │ │ ~ │ │ │ ┌─00002ee4: 14000001 b 2ee8 <fixup_guest_exit+0x1e8> <- 00002ee0(b.cc-succ)<fallthrough> │ │ │ │ │ │ │ │ fixup_guest_exit:448.21 (switch.h) Sbepe handle_tx2_tvm(║vcpu)) ~ │ │ │ └>00002ee8: f94043e0 ldr x0, [sp, #128] <- 00002ee4(b)<fixup_guest_exit+0x1e8> │ │ │ fixup_guest_exit:448.6 (switch.h) sbepe ║handle_tx2_tvm(vcpu)) ~ │ │ │ 00002eec: 9400044a bl 4014 <handle_tx2_tvm> │ │ │ │ │ │ fixup_guest_exit:446.6 (switch.h) Sbepe if (║cpus_have_final_cap(ARM64_WORKAROUND_CAVIUM_TX2_219_TVM) && ~ │ │ │ ┌──00002ef0: 36000060 tbz w0, #0, 2efc <fixup_guest_exit+0x1fc> <- 00002eec(bl-succ)<return> │ │ │ │ ~ │ │ │ │┌─00002ef4: 14000001 b 2ef8 <fixup_guest_exit+0x1f8> <- 00002ef0(b.cc-succ)<fallthrough> │ │ │ ││ │ │ │ ││ fixup_guest_exit:449.3 (switch.h) Sbepe ║goto guest; ~ ┌────┼───────┼─┼─┼└>00002ef8: 140000bd b 31ec <fixup_guest_exit+0x4ec> <- 00002ef4(b)<fixup_guest_exit+0x1f8> │ │ │ │ │ │ │ │ │ │ fixup_guest_exit:458.26 (switch.h) Sbepe if (__hyp_handle_fpsimd(║vcpu)) ~ │ │ └>└>└─>00002efc: f94043e0 ldr x0, [sp, #128] <- 00002eb0(b.cc)<fixup_guest_exit+0x1fc>,00002ee0(b.cc)<fixup_guest_exit+0x1fc>,00002ef0(b.cc)<fixup_guest_exit+0x1fc> │ │ fixup_guest_exit:458.6 (switch.h) sbepe if (║__hyp_handle_fpsimd(vcpu)) ~ │ │ 00002f00: 9400052a bl 43a8 <__hyp_handle_fpsimd> │ │ │ │ fixup_guest_exit:458.6 (switch.h) sbepe if (║__hyp_handle_fpsimd(vcpu)) ~ │ │ ┌──00002f04: 36000060 tbz w0, #0, 2f10 <fixup_guest_exit+0x210> <- 00002f00(bl-succ)<return> │ │ │ ~ │ │ │┌─00002f08: 14000001 b 2f0c <fixup_guest_exit+0x20c> <- 00002f04(b.cc-succ)<fallthrough> │ │ ││ │ │ ││ fixup_guest_exit:459.3 (switch.h) Sbepe ║goto guest; ~ │ ┌──┼───────────┼└>00002f0c: 140000b8 b 31ec <fixup_guest_exit+0x4ec> <- 00002f08(b)<fixup_guest_exit+0x20c> │ │ │ │ │ │ │ │ fixup_guest_exit:461.27 (switch.h) Sbepe if (__hyp_handle_ptrauth(║vcpu)) ~ │ │ │ └─>00002f10: f94043e0 ldr x0, [sp, #128] <- 00002f04(b.cc)<fixup_guest_exit+0x210> │ │ │ fixup_guest_exit:461.6 (switch.h) sbepe if (║__hyp_handle_ptrauth(vcpu)) ~ │ │ │ 00002f14: 94000681 bl 4918 <__hyp_handle_ptrauth> │ │ │ │ │ │ fixup_guest_exit:461.6 (switch.h) sbepe if (║__hyp_handle_ptrauth(vcpu)) ~ │ │ │ ┌──00002f18: 36000060 tbz w0, #0, 2f24 <fixup_guest_exit+0x224> <- 00002f14(bl-succ)<return> │ │ │ │ ~ │ │ │ │┌─00002f1c: 14000001 b 2f20 <fixup_guest_exit+0x220> <- 00002f18(b.cc-succ)<fallthrough> │ │ │ ││ │ │ │ ││ fixup_guest_exit:462.3 (switch.h) Sbepe ║goto guest; ~ │ │ ┌┼───────────┼└>00002f20: 140000b3 b 31ec <fixup_guest_exit+0x4ec> <- 00002f1c(b)<fixup_guest_exit+0x220> │ │ ││ │ │ │ ││ │ fixup_guest_exit:464.29 (switch.h) Sbepe if (!__populate_fault_info(║vcpu)) ~ │ │ ││ └─>00002f24: f94043e0 ldr x0, [sp, #128] <- 00002f18(b.cc)<fixup_guest_exit+0x224> │ │ ││ fixup_guest_exit:464.7 (switch.h) sbepe if (!║__populate_fault_info(vcpu)) ~ │ │ ││ 00002f28: 94000682 bl 4930 <__populate_fault_info> │ │ ││ │ │ ││ fixup_guest_exit:464.6 (switch.h) sbepe if (║!__populate_fault_info(vcpu)) ~ │ │ ││ ┌──00002f2c: 37000060 tbnz w0, #0, 2f38 <fixup_guest_exit+0x238> <- 00002f28(bl-succ)<return> │ │ ││ │ ~ │ │ ││ │┌─00002f30: 14000001 b 2f34 <fixup_guest_exit+0x234> <- 00002f2c(b.cc-succ)<fallthrough> │ │ ││ ││ │ │ ││ ││ fixup_guest_exit:465.3 (switch.h) Sbepe ║goto guest; ~ │ │ ││┌──────────┼└>00002f34: 140000ae b 31ec <fixup_guest_exit+0x4ec> <- 00002f30(b)<fixup_guest_exit+0x234> │ │ │││ │ │ │ │││ │ fixup_guest_exit:467.6 (switch.h) Sbepe if (║static_branch_unlikely(&vgic_v2_cpuif_trap)) { +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2f38 0x2f60 (DW_OP_breg31 0x44) lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:467 ~ │ │ │││ └─>00002f38: b00000c8 adrp x8, 1b000 <hyp_memory+0x460> <- 00002f2c(b.cc)<fixup_guest_exit+0x238> ~ │ │ │││ 00002f3c: b947a909 ldr w9, [x8, #1960] ~ │ │ │││ 00002f40: 71000129 subs w9, w9, #0x0 ~ │ │ │││ 00002f44: 1a9f07ea cset w10, ne // ne = any ~ │ │ │││ 00002f48: 390113ea strb w10, [sp, #68] │ │ │││ fixup_guest_exit:467.6 (switch.h) sbepe if (║static_branch_unlikely(&vgic_v2_cpuif_trap)) { ~ │ │ │││ 00002f4c: 394113ea ldrb w10, [sp, #68] ~ │ │ │││ 00002f50: 2a0a03e8 mov w8, w10 ~ │ │ │││ 00002f54: 92400108 and x8, x8, #0x1 │ │ │││ fixup_guest_exit:467.6 (switch.h) sbepe if (║static_branch_unlikely(&vgic_v2_cpuif_trap)) { ~ │ │ │││ 00002f58: f9001fe8 str x8, [sp, #56] │ │ │││ fixup_guest_exit:467.6 (switch.h) sbepe if (║static_branch_unlikely(&vgic_v2_cpuif_trap)) { ~ │ │ │││ 00002f5c: f9401fe8 ldr x8, [sp, #56] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2f38 0x2f60 (DW_OP_breg31 0x44) lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:467 │ │ │││ fixup_guest_exit:467.6 (switch.h) sbepe if (║static_branch_unlikely(&vgic_v2_cpuif_trap)) { ~ │ │ │││┌────────────00002f60: b4000e48 cbz x8, 3128 <fixup_guest_exit+0x428> │ │ ││││ ~ │ │ ││││ ┌─00002f64: 14000001 b 2f68 <fixup_guest_exit+0x268> <- 00002f60(b.cc-succ)<fallthrough> │ │ ││││ │ │ │ ││││ │ fixup_guest_exit:470.35 (switch.h) Sbepe valid = kvm_vcpu_trap_get_class(║vcpu) == ESR_ELx_EC_DABT_LOW && +valid var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2f68 0x3128 (DW_OP_breg31 0x34) lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:468 ~ │ │ ││││ └>00002f68: f94043e8 ldr x8, [sp, #128] <- 00002f64(b)<fixup_guest_exit+0x268> ~ │ │ ││││ 00002f6c: f9400be9 ldr x9, [sp, #16] ~ │ │ ││││ 00002f70: f9005528 str x8, [x9, #168] r: 0x2f74 0x2f90 kvm_vcpu_trap_get_class inlined from fixup_guest_exit:470 (switch.h) <3c49c>:<lexical_block>: r │ │ ││││ kvm_vcpu_trap_get_class:311.9 (kvm_emulate.h) Sbepe return ║ESR_ELx_EC(kvm_vcpu_get_esr(vcpu)); +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2f74 0x2f90 (DW_OP_fbreg -0x10) kvm_vcpu_trap_get_class(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~r │ │ ││││ 00002f74: f9405528 ldr x8, [x9, #168] ~r │ │ ││││ 00002f78: f9005928 str x8, [x9, #176] s: 0x2f7c 0x2f88 kvm_vcpu_get_esr inlined from kvm_vcpu_trap_get_class:311 (kvm_emulate.h) <3c4b9>:<3c49c>:<lexical_block>: rs │ │ ││││ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2f7c 0x2f88 (DW_OP_fbreg -0x8) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_class(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~rs │ │ ││││ 00002f7c: f9405928 ldr x8, [x9, #176] rs │ │ ││││ kvm_vcpu_get_esr:224.26 (kvm_emulate.h) sbepe return vcpu->arch.fault.║esr_el2; ~rs │ │ ││││ 00002f80: b948890a ldr w10, [x8, #2184] ~rs │ │ ││││ 00002f84: 2a0a03e8 mov w8, w10 -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2f7c 0x2f88 (DW_OP_fbreg -0x8) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_class(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c r │ │ ││││ kvm_vcpu_trap_get_class:311.9 (kvm_emulate.h) Sbepe return ║ESR_ELx_EC(kvm_vcpu_get_esr(vcpu)); ~r │ │ ││││ 00002f88: d35afd08 lsr x8, x8, #26 ~r │ │ ││││ 00002f8c: 2a1f03e0 mov w0, wzr -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2f74 0x2f90 (DW_OP_fbreg -0x10) kvm_vcpu_trap_get_class(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c │ │ ││││ fixup_guest_exit:470.64 (switch.h) Sbepe valid = kvm_vcpu_trap_get_class(vcpu) == ESR_ELx_EC_DABT_LOW && ~ │ │ ││││ 00002f90: 71009108 subs w8, w8, #0x24 ~ │ │ ││││ 00002f94: b9000fe0 str w0, [sp, #12] ~ │ │ ││││┌───────────00002f98: 54000961 b.ne 30c4 <fixup_guest_exit+0x3c4> // b.any │ │ │││││ ~ │ │ │││││ ┌─00002f9c: 14000001 b 2fa0 <fixup_guest_exit+0x2a0> <- 00002f98(b.cc-succ)<fallthrough> │ │ │││││ │ │ │ │││││ │ fixup_guest_exit:471.33 (switch.h) Sbepe kvm_vcpu_trap_get_fault_type(║vcpu) == FSC_FAULT && ~ │ │ │││││ └>00002fa0: f94043e8 ldr x8, [sp, #128] <- 00002f9c(b)<fixup_guest_exit+0x2a0> ~ │ │ │││││ 00002fa4: f9400be9 ldr x9, [sp, #16] ~ │ │ │││││ 00002fa8: f9004d28 str x8, [x9, #152] t: 0x2fac 0x2fc4 kvm_vcpu_trap_get_fault_type inlined from fixup_guest_exit:471 (switch.h) <3c4d8>:<lexical_block>: t │ │ │││││ kvm_vcpu_trap_get_fault_type:331.26 (kvm_emulate.h) Sbepe return kvm_vcpu_get_esr(║vcpu) & ESR_ELx_FSC_TYPE; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2fac 0x2fc4 (DW_OP_fbreg -0x20) kvm_vcpu_trap_get_fault_type(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~t │ │ │││││ 00002fac: f9404d28 ldr x8, [x9, #152] ~t │ │ │││││ 00002fb0: f9005128 str x8, [x9, #160] u: 0x2fb4 0x2fbc kvm_vcpu_get_esr inlined from kvm_vcpu_trap_get_fault_type:331 (kvm_emulate.h) <3c4f5>:<3c4d8>:<lexical_block>: tu │ │ │││││ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2fb4 0x2fbc (DW_OP_fbreg -0x18) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_fault_type(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~tu │ │ │││││ 00002fb4: f9405128 ldr x8, [x9, #160] tu │ │ │││││ kvm_vcpu_get_esr:224.26 (kvm_emulate.h) sbepe return vcpu->arch.fault.║esr_el2; ~tu │ │ │││││ 00002fb8: 3962210a ldrb w10, [x8, #2184] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2fb4 0x2fbc (DW_OP_fbreg -0x18) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_fault_type(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c t │ │ │││││ kvm_vcpu_trap_get_fault_type:331.9 (kvm_emulate.h) Sbepe return ║kvm_vcpu_get_esr(vcpu) & ESR_ELx_FSC_TYPE; ~t │ │ │││││ 00002fbc: 121e0d4a and w10, w10, #0x3c ~t │ │ │││││ 00002fc0: 2a1f03e0 mov w0, wzr -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2fac 0x2fc4 (DW_OP_fbreg -0x20) kvm_vcpu_trap_get_fault_type(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c │ │ │││││ fixup_guest_exit:471.52 (switch.h) Sbepe kvm_vcpu_trap_get_fault_type(vcpu) == FSC_FAULT && ~ │ │ │││││ 00002fc4: 7100114a subs w10, w10, #0x4 ~ │ │ │││││ 00002fc8: b9000fe0 str w0, [sp, #12] ~ │ │ │││││ ┌─────────00002fcc: 540007c1 b.ne 30c4 <fixup_guest_exit+0x3c4> // b.any │ │ │││││ │ ~ │ │ │││││ │ ┌─00002fd0: 14000001 b 2fd4 <fixup_guest_exit+0x2d4> <- 00002fcc(b.cc-succ)<fallthrough> │ │ │││││ │ │ │ │ │││││ │ │ fixup_guest_exit:472.26 (switch.h) Sbepe kvm_vcpu_dabt_isvalid(║vcpu) && ~ │ │ │││││ │ └>00002fd4: f94043e8 ldr x8, [sp, #128] <- 00002fd0(b)<fixup_guest_exit+0x2d4> ~ │ │ │││││ │ 00002fd8: f9400be9 ldr x9, [sp, #16] ~ │ │ │││││ │ 00002fdc: f9004528 str x8, [x9, #136] v: 0x2fe0 0x2ffc kvm_vcpu_dabt_isvalid inlined from fixup_guest_exit:472 (switch.h) <3c514>:<lexical_block>: v │ │ │││││ │ kvm_vcpu_dabt_isvalid:259.29 (kvm_emulate.h) Sbepe return !!(kvm_vcpu_get_esr(║vcpu) & ESR_ELx_ISV); +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2fe0 0x2ffc (DW_OP_fbreg -0x30) kvm_vcpu_dabt_isvalid(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~v │ │ │││││ │ 00002fe0: f9404528 ldr x8, [x9, #136] ~v │ │ │││││ │ 00002fe4: f9004928 str x8, [x9, #144] w: 0x2fe8 0x2fec kvm_vcpu_get_esr inlined from kvm_vcpu_dabt_isvalid:259 (kvm_emulate.h) <3c531>:<3c514>:<lexical_block>: vw │ │ │││││ │ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2fe8 0x2fec (DW_OP_fbreg -0x28) kvm_vcpu_get_esr(inlined):kvm_vcpu_dabt_isvalid(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~vw │ │ │││││ │ 00002fe8: f9404928 ldr x8, [x9, #144] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2fe8 0x2fec (DW_OP_fbreg -0x28) kvm_vcpu_get_esr(inlined):kvm_vcpu_dabt_isvalid(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c v │ │ │││││ │ kvm_vcpu_dabt_isvalid:259.12 (kvm_emulate.h) Sbepe return !!(║kvm_vcpu_get_esr(vcpu) & ESR_ELx_ISV); ~v │ │ │││││ │ 00002fec: b948890a ldr w10, [x8, #2184] ~v │ │ │││││ │ 00002ff0: 2a0a03e0 mov w0, w10 ~v │ │ │││││ │ 00002ff4: 2a1f03e1 mov w1, wzr ~v │ │ │││││ │ 00002ff8: b9000fe1 str w1, [sp, #12] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x2fe0 0x2ffc (DW_OP_fbreg -0x30) kvm_vcpu_dabt_isvalid(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c │ │ │││││ │ fixup_guest_exit:472.32 (switch.h) Sbepe kvm_vcpu_dabt_isvalid(vcpu) && ~ │ │ │││││ │ ┌───────00002ffc: 36c00640 tbz w0, #24, 30c4 <fixup_guest_exit+0x3c4> │ │ │││││ │ │ ~ │ │ │││││ │ │ ┌─00003000: 14000001 b 3004 <fixup_guest_exit+0x304> <- 00002ffc(b.cc-succ)<fallthrough> │ │ │││││ │ │ │ │ │ │││││ │ │ │ fixup_guest_exit:473.24 (switch.h) Sbepe !kvm_vcpu_abt_issea(║vcpu) && ~ │ │ │││││ │ │ └>00003004: f94043e8 ldr x8, [sp, #128] <- 00003000(b)<fixup_guest_exit+0x304> ~ │ │ │││││ │ │ 00003008: f9400be9 ldr x9, [sp, #16] ~ │ │ │││││ │ │ 0000300c: f9003528 str x8, [x9, #104] x: 0x3010 0x308c kvm_vcpu_abt_issea inlined from fixup_guest_exit:473 (switch.h) <3c550>:<lexical_block>: x │ │ │││││ │ │ kvm_vcpu_abt_issea:341.34 (kvm_emulate.h) Sbepe switch (kvm_vcpu_trap_get_fault(║vcpu)) { +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3010 0x308c (DW_OP_fbreg -0x50) kvm_vcpu_abt_issea(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~x │ │ │││││ │ │ 00003010: f9403528 ldr x8, [x9, #104] ~x │ │ │││││ │ │ 00003014: f9003d28 str x8, [x9, #120] y: 0x3018 0x302c kvm_vcpu_trap_get_fault inlined from kvm_vcpu_abt_issea:341 (kvm_emulate.h) <3c56e>:<3c550>:<lexical_block>: xy │ │ │││││ │ │ kvm_vcpu_trap_get_fault:326.26 (kvm_emulate.h) Sbepe return kvm_vcpu_get_esr(║vcpu) & ESR_ELx_FSC; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3018 0x302c (DW_OP_fbreg -0x40) kvm_vcpu_trap_get_fault(inlined):kvm_vcpu_abt_issea(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~xy │ │ │││││ │ │ 00003018: f9403d28 ldr x8, [x9, #120] ~xy │ │ │││││ │ │ 0000301c: f9004128 str x8, [x9, #128] z: 0x3020 0x3028 kvm_vcpu_get_esr inlined from kvm_vcpu_trap_get_fault:326 (kvm_emulate.h) <3c58b>:<3c56e>:<3c550>:<lexical_block>: xyz │ │ │││││ │ │ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3020 0x3028 (DW_OP_fbreg -0x38) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_fault(inlined):kvm_vcpu_abt_issea(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~xyz │ │ │││││ │ │ 00003020: f9404128 ldr x8, [x9, #128] xyz │ │ │││││ │ │ kvm_vcpu_get_esr:224.26 (kvm_emulate.h) sbepe return vcpu->arch.fault.║esr_el2; ~xyz │ │ │││││ │ │ 00003024: b948890a ldr w10, [x8, #2184] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3020 0x3028 (DW_OP_fbreg -0x38) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_fault(inlined):kvm_vcpu_abt_issea(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c xy │ │ │││││ │ │ kvm_vcpu_trap_get_fault:326.32 (kvm_emulate.h) Sbepe return kvm_vcpu_get_esr(vcpu) ║& ESR_ELx_FSC; ~xy │ │ │││││ │ │ 00003028: 1200154a and w10, w10, #0x3f -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3018 0x302c (DW_OP_fbreg -0x40) kvm_vcpu_trap_get_fault(inlined):kvm_vcpu_abt_issea(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c x │ │ │││││ │ │ kvm_vcpu_abt_issea:341.2 (kvm_emulate.h) Sbepe ║switch (kvm_vcpu_trap_get_fault(vcpu)) { ~x │ │ │││││ │ │ 0000302c: 2a0a03eb mov w11, w10 ~x │ │ │││││ │ │ 00003030: 7100414a subs w10, w10, #0x10 ~x │ │ │││││ │ │ 00003034: b9000beb str w11, [sp, #8] ~x │ │ │││││ │ │┌──────00003038: 54000180 b.eq 3068 <fixup_guest_exit+0x368> // b.none │ │ │││││ │ ││ ~x │ │ │││││ │ ││ ┌─0000303c: 14000001 b 3040 <fixup_guest_exit+0x340> <- 00003038(b.cc-succ)<fallthrough> │ │ │││││ │ ││ │ ~x │ │ │││││ │ ││ └>00003040: b9400be8 ldr w8, [sp, #8] <- 0000303c(b)<fixup_guest_exit+0x340> x │ │ │││││ │ ││ kvm_vcpu_abt_issea:341.2 (kvm_emulate.h) sbepe ║switch (kvm_vcpu_trap_get_fault(vcpu)) { ~x │ │ │││││ │ ││ 00003044: 71005109 subs w9, w8, #0x14 ~x │ │ │││││ │ ││ 00003048: 71001529 subs w9, w9, #0x5 ~x │ │ │││││ │ ││ ┌────0000304c: 540000e3 b.cc 3068 <fixup_guest_exit+0x368> // b.lo, b.ul, b.last │ │ │││││ │ ││ │ ~x │ │ │││││ │ ││ │ ┌─00003050: 14000001 b 3054 <fixup_guest_exit+0x354> <- 0000304c(b.cc-succ)<fallthrough> │ │ │││││ │ ││ │ │ ~x │ │ │││││ │ ││ │ └>00003054: b9400be8 ldr w8, [sp, #8] <- 00003050(b)<fixup_guest_exit+0x354> x │ │ │││││ │ ││ │ kvm_vcpu_abt_issea:341.2 (kvm_emulate.h) sbepe ║switch (kvm_vcpu_trap_get_fault(vcpu)) { ~x │ │ │││││ │ ││ │ 00003058: 71007109 subs w9, w8, #0x1c ~x │ │ │││││ │ ││ │ 0000305c: 71000d29 subs w9, w9, #0x3 ~x │ │ │││││ │ ││ │ ┌──00003060: 540000a8 b.hi 3074 <fixup_guest_exit+0x374> // b.pmore │ │ │││││ │ ││ │ │ ~x │ │ │││││ │ ││ │ │┌─00003064: 14000001 b 3068 <fixup_guest_exit+0x368> <- 00003060(b.cc-succ)<fallthrough> │ │ │││││ │ ││ │ ││ ~x │ │ │││││ │ │└>└>│└>00003068: 52800028 mov w8, #0x1 // #1 <- 00003038(b.cc)<fixup_guest_exit+0x368>,0000304c(b.cc)<fixup_guest_exit+0x368>,00003064(b)<fixup_guest_exit+0x368> x │ │ │││││ │ │ │ kvm_vcpu_abt_issea:352.3 (kvm_emulate.h) Sbepe ║return true; ~x │ │ │││││ │ │ │ 0000306c: 381bf3a8 sturb w8, [x29, #-65] ~x │ │ │││││ │ │ ┌┼──00003070: 14000004 b 3080 <fixup_guest_exit+0x380> │ │ │││││ │ │ ││ ~x │ │ │││││ │ │ │└─>00003074: 2a1f03e8 mov w8, wzr <- 00003060(b.cc)<fixup_guest_exit+0x374> x │ │ │││││ │ │ │ kvm_vcpu_abt_issea:354.3 (kvm_emulate.h) Sbepe ║return false; ~x │ │ │││││ │ │ │ 00003078: 381bf3a8 sturb w8, [x29, #-65] ~x │ │ │││││ │ │ │ ┌─0000307c: 14000001 b 3080 <fixup_guest_exit+0x380> │ │ │││││ │ │ │ │ ~x │ │ │││││ │ │ └>└>00003080: 2a1f03e0 mov w0, wzr <- 00003070(b)<fixup_guest_exit+0x380>,0000307c(b)<fixup_guest_exit+0x380> x │ │ │││││ │ │ kvm_vcpu_abt_issea:356.1 (kvm_emulate.h) Sbepe ║} ~x │ │ │││││ │ │ 00003084: 385bf3a8 ldurb w8, [x29, #-65] ~x │ │ │││││ │ │ 00003088: b9000fe0 str w0, [sp, #12] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3010 0x308c (DW_OP_fbreg -0x50) kvm_vcpu_abt_issea(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c │ │ │││││ │ │ fixup_guest_exit:473.30 (switch.h) Sbepe !kvm_vcpu_abt_issea(vcpu) && ~ │ │ │││││ │ │ ┌───0000308c: 370001c8 tbnz w8, #0, 30c4 <fixup_guest_exit+0x3c4> │ │ │││││ │ │ │ ~ │ │ │││││ │ │ │ ┌─00003090: 14000001 b 3094 <fixup_guest_exit+0x394> <- 0000308c(b.cc-succ)<fallthrough> │ │ │││││ │ │ │ │ │ │ │││││ │ │ │ │ fixup_guest_exit:474.25 (switch.h) Sbepe !kvm_vcpu_abt_iss1tw(║vcpu); ~ │ │ │││││ │ │ │ └>00003094: f94043e8 ldr x8, [sp, #128] <- 00003090(b)<fixup_guest_exit+0x394> ~ │ │ │││││ │ │ │ 00003098: f9400be9 ldr x9, [sp, #16] ~ │ │ │││││ │ │ │ 0000309c: f9002d28 str x8, [x9, #88] a: 0x30a0 0x30c4 kvm_vcpu_abt_iss1tw inlined from fixup_guest_exit:474 (switch.h) <3c5ab>:<lexical_block>: a │ │ │││││ │ │ │ kvm_vcpu_abt_iss1tw:284.29 (kvm_emulate.h) Sbepe return !!(kvm_vcpu_get_esr(║vcpu) & ESR_ELx_S1PTW); +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x30a0 0x30c4 (DW_OP_fbreg -0x60) kvm_vcpu_abt_iss1tw(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~a │ │ │││││ │ │ │ 000030a0: f9402d28 ldr x8, [x9, #88] ~a │ │ │││││ │ │ │ 000030a4: f9003128 str x8, [x9, #96] b: 0x30a8 0x30ac kvm_vcpu_get_esr inlined from kvm_vcpu_abt_iss1tw:284 (kvm_emulate.h) <3c5c9>:<3c5ab>:<lexical_block>: ab │ │ │││││ │ │ │ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x30a8 0x30ac (DW_OP_fbreg -0x58) kvm_vcpu_get_esr(inlined):kvm_vcpu_abt_iss1tw(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~ab │ │ │││││ │ │ │ 000030a8: f9403128 ldr x8, [x9, #96] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x30a8 0x30ac (DW_OP_fbreg -0x58) kvm_vcpu_get_esr(inlined):kvm_vcpu_abt_iss1tw(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c a │ │ │││││ │ │ │ kvm_vcpu_abt_iss1tw:284.12 (kvm_emulate.h) Sbepe return !!(║kvm_vcpu_get_esr(vcpu) & ESR_ELx_S1PTW); ~a │ │ │││││ │ │ │ 000030ac: b948890a ldr w10, [x8, #2184] ~a │ │ │││││ │ │ │ 000030b0: 2a0a03e8 mov w8, w10 a │ │ │││││ │ │ │ kvm_vcpu_abt_iss1tw:284.10 (kvm_emulate.h) sbepe return !║!(kvm_vcpu_get_esr(vcpu) & ESR_ELx_S1PTW); ~a │ │ │││││ │ │ │ 000030b4: f2790108 ands x8, x8, #0x80 ~a │ │ │││││ │ │ │ 000030b8: 1a9f17ea cset w10, eq // eq = none ~a │ │ │││││ │ │ │ 000030bc: b9000fea str w10, [sp, #12] ~a │ │ │││││ │ │ │ ┌─000030c0: 14000001 b 30c4 <fixup_guest_exit+0x3c4> -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x30a0 0x30c4 (DW_OP_fbreg -0x60) kvm_vcpu_abt_iss1tw(inlined):lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c │ │ │││││ │ │ │ │ ~ │ │ ││││└>└>└──>└>└>000030c4: b9400fe8 ldr w8, [sp, #12] <- 00002f98(b.cc)<fixup_guest_exit+0x3c4>,00002fcc(b.cc)<fixup_guest_exit+0x3c4>,00002ffc(b.cc)<fixup_guest_exit+0x3c4>,0000308c(b.cc)<fixup_guest_exit+0x3c4>,000030c0(b)<fixup_guest_exit+0x3c4> │ │ ││││ fixup_guest_exit:470.9 (switch.h) Sbepe valid ║= kvm_vcpu_trap_get_class(vcpu) == ESR_ELx_EC_DABT_LOW && ~ │ │ ││││ 000030c8: 12000108 and w8, w8, #0x1 ~ │ │ ││││ 000030cc: 3900d3e8 strb w8, [sp, #52] │ │ ││││ fixup_guest_exit:476.7 (switch.h) Sbepe if (║valid) { ~ │ │ ││││ 000030d0: 3940d3e8 ldrb w8, [sp, #52] │ │ ││││ fixup_guest_exit:476.7 (switch.h) sbepe if (║valid) { ~ │ │ ││││ ┌────000030d4: 36000288 tbz w8, #0, 3124 <fixup_guest_exit+0x424> │ │ ││││ │ ~ │ │ ││││ │ ┌─000030d8: 14000001 b 30dc <fixup_guest_exit+0x3dc> <- 000030d4(b.cc-succ)<fallthrough> │ │ ││││ │ │ │ │ ││││ │ │ fixup_guest_exit:477.45 (switch.h) Sbepe int ret = __vgic_v2_perform_cpuif_access(║vcpu); +ret var int (base type, DW_ATE_signed size:4) 0x30dc 0x3124 (DW_OP_breg31 0x30) lexblock:lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:477 ~ │ │ ││││ │ └>000030dc: f94043e0 ldr x0, [sp, #128] <- 000030d8(b)<fixup_guest_exit+0x3dc> │ │ ││││ │ fixup_guest_exit:477.14 (switch.h) sbepe int ret = ║__vgic_v2_perform_cpuif_access(vcpu); ~ │ │ ││││ │ 000030e0: 940030b8 bl f3c0 <__vgic_v2_perform_cpuif_access> │ │ ││││ │ │ │ ││││ │ fixup_guest_exit:477.8 (switch.h) sbepe int ║ret = __vgic_v2_perform_cpuif_access(vcpu); ~ │ │ ││││ │ 000030e4: b90033e0 str w0, [sp, #48] <- 000030e0(bl-succ)<return> │ │ ││││ │ fixup_guest_exit:479.8 (switch.h) Sbepe if (║ret == 1) ~ │ │ ││││ │ 000030e8: b94033e8 ldr w8, [sp, #48] │ │ ││││ │ fixup_guest_exit:479.8 (switch.h) sbepe if (║ret == 1) ~ │ │ ││││ │ 000030ec: 71000508 subs w8, w8, #0x1 ~ │ │ ││││ │ ┌──000030f0: 54000061 b.ne 30fc <fixup_guest_exit+0x3fc> // b.any │ │ ││││ │ │ ~ │ │ ││││ │ │┌─000030f4: 14000001 b 30f8 <fixup_guest_exit+0x3f8> <- 000030f0(b.cc-succ)<fallthrough> │ │ ││││ │ ││ │ │ ││││ │ ││ fixup_guest_exit:480.5 (switch.h) Sbepe ║goto guest; ~ │ │ ││││ ┌─────┼─┼└>000030f8: 1400003d b 31ec <fixup_guest_exit+0x4ec> <- 000030f4(b)<fixup_guest_exit+0x3f8> │ │ ││││ │ │ │ │ │ ││││ │ │ │ fixup_guest_exit:483.8 (switch.h) Sbepe if (║ret == -1) ~ │ │ ││││ │ │ └─>000030fc: b94033e8 ldr w8, [sp, #48] <- 000030f0(b.cc)<fixup_guest_exit+0x3fc> │ │ ││││ │ │ fixup_guest_exit:483.8 (switch.h) sbepe if (║ret == -1) ~ │ │ ││││ │ │ 00003100: 31000508 adds w8, w8, #0x1 ~ │ │ ││││ │ │┌───00003104: 540000e1 b.ne 3120 <fixup_guest_exit+0x420> // b.any │ │ ││││ │ ││ ~ │ │ ││││ │ ││ ┌─00003108: 14000001 b 310c <fixup_guest_exit+0x40c> <- 00003104(b.cc-succ)<fallthrough> │ │ ││││ │ ││ │ │ │ ││││ │ ││ │ fixup_guest_exit:484.6 (switch.h) Sbepe *║exit_code = ARM_EXCEPTION_EL1_SERROR; ~ │ │ ││││ │ ││ └>0000310c: f9403fe8 ldr x8, [sp, #120] <- 00003108(b)<fixup_guest_exit+0x40c> ~ │ │ ││││ │ ││ 00003110: 52800029 mov w9, #0x1 // #1 ~ │ │ ││││ │ ││ 00003114: 2a0903ea mov w10, w9 │ │ ││││ │ ││ fixup_guest_exit:484.16 (switch.h) sbepe *exit_code ║= ARM_EXCEPTION_EL1_SERROR; ~ │ │ ││││ │ ││ 00003118: f900010a str x10, [x8] │ │ ││││ │ ││ fixup_guest_exit:484.5 (switch.h) sbepe ║*exit_code = ARM_EXCEPTION_EL1_SERROR; ~ │ │ ││││ │ ││ ┌─0000311c: 14000001 b 3120 <fixup_guest_exit+0x420> │ │ ││││ │ ││ │ │ │ ││││ │ ││ │ fixup_guest_exit:486.4 (switch.h) Sbepe ║goto exit; ~ │ │ ││││ │┌────┼└>└>00003120: 14000030 b 31e0 <fixup_guest_exit+0x4e0> <- 00003104(b.cc)<fixup_guest_exit+0x420>,0000311c(b)<fixup_guest_exit+0x420> -ret var int (base type, DW_ATE_signed size:4) 0x30dc 0x3124 (DW_OP_breg31 0x30) lexblock:lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:477 │ │ ││││ ││ │ │ │ ││││ ││ │ fixup_guest_exit:488.2 (switch.h) Sbepe } ~ │ │ ││││ ││ └─>┌─00003124: 14000001 b 3128 <fixup_guest_exit+0x428> <- 000030d4(b.cc)<fixup_guest_exit+0x424> -valid var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x2f68 0x3128 (DW_OP_breg31 0x34) lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:468 │ │ ││││ ││ │ │ │ ││││ ││ │ fixup_guest_exit:490.6 (switch.h) Sbepe if (║static_branch_unlikely(&vgic_v3_cpuif_trap) && +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3128 0x3150 (DW_OP_breg31 0x2c) lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:490 ~ │ │ │││└─┼┼──────>└>00003128: 900000c8 adrp x8, 1b000 <hyp_memory+0x460> <- 00002f60(b.cc)<fixup_guest_exit+0x428>,00003124(b)<fixup_guest_exit+0x428> ~ │ │ │││ ││ 0000312c: b947b109 ldr w9, [x8, #1968] ~ │ │ │││ ││ 00003130: 71000129 subs w9, w9, #0x0 ~ │ │ │││ ││ 00003134: 1a9f07ea cset w10, ne // ne = any ~ │ │ │││ ││ 00003138: 3900b3ea strb w10, [sp, #44] │ │ │││ ││ fixup_guest_exit:490.6 (switch.h) sbepe if (║static_branch_unlikely(&vgic_v3_cpuif_trap) && ~ │ │ │││ ││ 0000313c: 3940b3ea ldrb w10, [sp, #44] ~ │ │ │││ ││ 00003140: 2a0a03e8 mov w8, w10 ~ │ │ │││ ││ 00003144: 92400108 and x8, x8, #0x1 │ │ │││ ││ fixup_guest_exit:490.6 (switch.h) sbepe if (║static_branch_unlikely(&vgic_v3_cpuif_trap) && ~ │ │ │││ ││ 00003148: f90013e8 str x8, [sp, #32] │ │ │││ ││ fixup_guest_exit:490.6 (switch.h) sbepe if (║static_branch_unlikely(&vgic_v3_cpuif_trap) && ~ │ │ │││ ││ 0000314c: f94013e8 ldr x8, [sp, #32] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3128 0x3150 (DW_OP_breg31 0x2c) lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:490 │ │ │││ ││ fixup_guest_exit:490.50 (switch.h) sbepe if (static_branch_unlikely(&vgic_v3_cpuif_trap) && ~ │ │ │││ ││┌────────00003150: b4000468 cbz x8, 31dc <fixup_guest_exit+0x4dc> │ │ │││ │││ ~ │ │ │││ │││ ┌─00003154: 14000001 b 3158 <fixup_guest_exit+0x458> <- 00003150(b.cc-succ)<fallthrough> │ │ │││ │││ │ │ │ │││ │││ │ fixup_guest_exit:491.31 (switch.h) Sbepe (kvm_vcpu_trap_get_class(║vcpu) == ESR_ELx_EC_SYS64 || ~ │ │ │││ │││ └>00003158: f94043e8 ldr x8, [sp, #128] <- 00003154(b)<fixup_guest_exit+0x458> ~ │ │ │││ │││ 0000315c: f9400be9 ldr x9, [sp, #16] ~ │ │ │││ │││ 00003160: f9002528 str x8, [x9, #72] c: 0x3164 0x317c kvm_vcpu_trap_get_class inlined from fixup_guest_exit:491 (switch.h) <3c624>: c │ │ │││ │││ kvm_vcpu_trap_get_class:311.9 (kvm_emulate.h) Sbepe return ║ESR_ELx_EC(kvm_vcpu_get_esr(vcpu)); +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3164 0x317c (DW_OP_fbreg -0x70) kvm_vcpu_trap_get_class(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~c │ │ │││ │││ 00003164: f9402528 ldr x8, [x9, #72] ~c │ │ │││ │││ 00003168: f9002928 str x8, [x9, #80] d: 0x316c 0x3178 kvm_vcpu_get_esr inlined from kvm_vcpu_trap_get_class:311 (kvm_emulate.h) <3c642>:<3c624>: cd │ │ │││ │││ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x316c 0x3178 (DW_OP_fbreg -0x68) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_class(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~cd │ │ │││ │││ 0000316c: f9402928 ldr x8, [x9, #80] cd │ │ │││ │││ kvm_vcpu_get_esr:224.26 (kvm_emulate.h) sbepe return vcpu->arch.fault.║esr_el2; ~cd │ │ │││ │││ 00003170: b948890a ldr w10, [x8, #2184] ~cd │ │ │││ │││ 00003174: 2a0a03e8 mov w8, w10 -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x316c 0x3178 (DW_OP_fbreg -0x68) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_class(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c c │ │ │││ │││ kvm_vcpu_trap_get_class:311.9 (kvm_emulate.h) Sbepe return ║ESR_ELx_EC(kvm_vcpu_get_esr(vcpu)); ~c │ │ │││ │││ 00003178: d35afd08 lsr x8, x8, #26 -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3164 0x317c (DW_OP_fbreg -0x70) kvm_vcpu_trap_get_class(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c │ │ │││ │││ fixup_guest_exit:491.57 (switch.h) Sbepe (kvm_vcpu_trap_get_class(vcpu) == ESR_ELx_EC_SYS64 || ~ │ │ │││ │││ 0000317c: 71006108 subs w8, w8, #0x18 ~ │ │ │││ │││ ┌───00003180: 540001c0 b.eq 31b8 <fixup_guest_exit+0x4b8> // b.none │ │ │││ │││ │ ~ │ │ │││ │││ │ ┌─00003184: 14000001 b 3188 <fixup_guest_exit+0x488> <- 00003180(b.cc-succ)<fallthrough> │ │ │││ │││ │ │ │ │ │││ │││ │ │ fixup_guest_exit:492.31 (switch.h) Sbepe kvm_vcpu_trap_get_class(║vcpu) == ESR_ELx_EC_CP15_32)) { ~ │ │ │││ │││ │ └>00003188: f94043e8 ldr x8, [sp, #128] <- 00003184(b)<fixup_guest_exit+0x488> ~ │ │ │││ │││ │ 0000318c: f9400be9 ldr x9, [sp, #16] ~ │ │ │││ │││ │ 00003190: f9001d28 str x8, [x9, #56] e: 0x3194 0x31ac kvm_vcpu_trap_get_class inlined from fixup_guest_exit:492 (switch.h) <3c662>: e │ │ │││ │││ │ kvm_vcpu_trap_get_class:311.9 (kvm_emulate.h) Sbepe return ║ESR_ELx_EC(kvm_vcpu_get_esr(vcpu)); +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3194 0x31ac (DW_OP_fbreg -0x80) kvm_vcpu_trap_get_class(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~e │ │ │││ │││ │ 00003194: f9401d28 ldr x8, [x9, #56] ~e │ │ │││ │││ │ 00003198: f9002128 str x8, [x9, #64] f: 0x319c 0x31a8 kvm_vcpu_get_esr inlined from kvm_vcpu_trap_get_class:311 (kvm_emulate.h) <3c680>:<3c662>: ef │ │ │││ │││ │ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x319c 0x31a8 (DW_OP_fbreg -0x78) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_class(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c ~ef │ │ │││ │││ │ 0000319c: f9402128 ldr x8, [x9, #64] ef │ │ │││ │││ │ kvm_vcpu_get_esr:224.26 (kvm_emulate.h) sbepe return vcpu->arch.fault.║esr_el2; ~ef │ │ │││ │││ │ 000031a0: b948890a ldr w10, [x8, #2184] ~ef │ │ │││ │││ │ 000031a4: 2a0a03e8 mov w8, w10 -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x319c 0x31a8 (DW_OP_fbreg -0x78) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_class(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c e │ │ │││ │││ │ kvm_vcpu_trap_get_class:311.9 (kvm_emulate.h) Sbepe return ║ESR_ELx_EC(kvm_vcpu_get_esr(vcpu)); ~e │ │ │││ │││ │ 000031a8: d35afd08 lsr x8, x8, #26 -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3194 0x31ac (DW_OP_fbreg -0x80) kvm_vcpu_trap_get_class(inlined):fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c │ │ │││ │││ │ fixup_guest_exit:490.6 (switch.h) Sbepe if (║static_branch_unlikely(&vgic_v3_cpuif_trap) && ~ │ │ │││ │││ │ 000031ac: 71000d08 subs w8, w8, #0x3 ~ │ │ │││ │││ ┌──┼───000031b0: 54000161 b.ne 31dc <fixup_guest_exit+0x4dc> // b.any │ │ │││ │││ │ │ ~ │ │ │││ │││ │ │ ┌─000031b4: 14000001 b 31b8 <fixup_guest_exit+0x4b8> <- 000031b0(b.cc-succ)<fallthrough> │ │ │││ │││ │ │ │ │ │ │││ │││ │ │ │ fixup_guest_exit:493.44 (switch.h) Sbepe int ret = __vgic_v3_perform_cpuif_access(║vcpu); +ret var int (base type, DW_ATE_signed size:4) 0x31b8 0x31dc (DW_OP_breg31 0x1c) lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:493 ~ │ │ │││ │││ │ └>└>000031b8: f94043e0 ldr x0, [sp, #128] <- 00003180(b.cc)<fixup_guest_exit+0x4b8>,000031b4(b)<fixup_guest_exit+0x4b8> │ │ │││ │││ │ fixup_guest_exit:493.13 (switch.h) sbepe int ret = ║__vgic_v3_perform_cpuif_access(vcpu); ~ │ │ │││ │││ │ 000031bc: 940027d5 bl d110 <__vgic_v3_perform_cpuif_access> │ │ │││ │││ │ │ │ │││ │││ │ fixup_guest_exit:493.7 (switch.h) sbepe int ║ret = __vgic_v3_perform_cpuif_access(vcpu); ~ │ │ │││ │││ │ 000031c0: b9001fe0 str w0, [sp, #28] <- 000031bc(bl-succ)<return> │ │ │││ │││ │ fixup_guest_exit:495.7 (switch.h) Sbepe if (║ret == 1) ~ │ │ │││ │││ │ 000031c4: b9401fe8 ldr w8, [sp, #28] │ │ │││ │││ │ fixup_guest_exit:495.7 (switch.h) sbepe if (║ret == 1) ~ │ │ │││ │││ │ 000031c8: 71000508 subs w8, w8, #0x1 ~ │ │ │││ │││ │ ┌───000031cc: 54000061 b.ne 31d8 <fixup_guest_exit+0x4d8> // b.any │ │ │││ │││ │ │ ~ │ │ │││ │││ │ │ ┌─000031d0: 14000001 b 31d4 <fixup_guest_exit+0x4d4> <- 000031cc(b.cc-succ)<fallthrough> │ │ │││ │││ │ │ │ │ │ │││ │││ │ │ │ fixup_guest_exit:496.4 (switch.h) Sbepe ║goto guest; ~ │ │ │││ │││ │ ┌┼─└>000031d4: 14000006 b 31ec <fixup_guest_exit+0x4ec> <- 000031d0(b)<fixup_guest_exit+0x4d4> │ │ │││ │││ │ ││ │ │ │││ │││ │ ││ fixup_guest_exit:497.2 (switch.h) Sbepe } ~ │ │ │││ │││ │ │└>┌─000031d8: 14000001 b 31dc <fixup_guest_exit+0x4dc> <- 000031cc(b.cc)<fixup_guest_exit+0x4d8> -ret var int (base type, DW_ATE_signed size:4) 0x31b8 0x31dc (DW_OP_breg31 0x1c) lexblock:fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:493 │ │ │││ │││ │ │ │ │ │ │││ │││ │ │ │ fixup_guest_exit:492.58 (switch.h) Sbepe kvm_vcpu_trap_get_class(vcpu) == ESR_ELx_EC_CP15_32║)) { ~ │ │ │││ ││└>└>│┌─└>000031dc: 14000001 b 31e0 <fixup_guest_exit+0x4e0> <- 00003150(b.cc)<fixup_guest_exit+0x4dc>,000031b0(b.cc)<fixup_guest_exit+0x4dc>,000031d8(b)<fixup_guest_exit+0x4dc> │ │ │││ ││ ││ ~ │ │ │└┼─>│└───>│└──>000031e0: 2a1f03e8 mov w8, wzr <- 00002df0(b)<fixup_guest_exit+0x4e0>,00003120(b)<fixup_guest_exit+0x4e0>,000031dc(b)<fixup_guest_exit+0x4e0> │ │ │ │ │ │ fixup_guest_exit:501.2 (switch.h) Sbepe ║return false; ~ │ │ │ │ │ │ 000031e4: 39023fe8 strb w8, [sp, #143] ~ │ │ │ │ │ │┌───000031e8: 14000005 b 31fc <fixup_guest_exit+0x4fc> │ │ │ │ │ ││ │ │ │ │ │ ││ fixup_guest_exit:505.2 (switch.h) Sbepe ║asm(ALTERNATIVE("nop", "dmb sy", ARM64_WORKAROUND_1508412)); ~ └>└>└>└─>└────>└┼──>000031ec: d503201f nop <- 00002ef8(b)<fixup_guest_exit+0x4ec>,00002f0c(b)<fixup_guest_exit+0x4ec>,00002f20(b)<fixup_guest_exit+0x4ec>,00002f34(b)<fixup_guest_exit+0x4ec>,000030f8(b)<fixup_guest_exit+0x4ec>,000031d4(b)<fixup_guest_exit+0x4ec> ~ 000031f0: 52800028 mov w8, #0x1 // #1 fixup_guest_exit:506.2 (switch.h) Sbepe ║return true; ~ 000031f4: 39023fe8 strb w8, [sp, #143] ~ │ ┌─000031f8: 14000001 b 31fc <fixup_guest_exit+0x4fc> │ │ │ │ fixup_guest_exit:507.1 (switch.h) Sbepe ║} ~ └>└>000031fc: 39423fe0 ldrb w0, [sp, #143] <- 000031e8(b)<fixup_guest_exit+0x4fc>,000031f8(b)<fixup_guest_exit+0x4fc> ~ 00003200: f940bbfc ldr x28, [sp, #368] ~ 00003204: a9567bfd ldp x29, x30, [sp, #352] ~ 00003208: 910603ff add sp, sp, #0x180 00002d10 CFA:r29+32 r28:c-16 r29:c-32 r30:c-24 ~ 0000320c: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x2d00 0x3210 (DW_OP_breg31 0x80) fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:417 -exit_code param pointer(typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x2d00 0x3210 (DW_OP_breg31 0x78) fixup_guest_exit:arch/arm64/kvm/hyp/nvhe/switch.c:417 **00003210 <__sysreg32_save_state>: + __sysreg32_save_state params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3210 0x3328 (DW_OP_fbreg 0x78) __sysreg32_save_state:160.0 (sysreg-sr.h) Sbepe ║{ 00003210 CFA:r31 +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3210 0x3328 (DW_OP_fbreg 0x78) __sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:159 ~ 00003210: d10243ff sub sp, sp, #0x90 <- 00002548(bl)<__sysreg32_save_state> ~ 00003214: f9003fe0 str x0, [sp, #120] __sysreg32_save_state:161.25 (sysreg-sr.h) SbePe if (!vcpu_el1_is_32bit(║vcpu)) ~ 00003218: f9403fe8 ldr x8, [sp, #120] ~ 0000321c: f90043e8 str x8, [sp, #128] g: 0x3220 0x3224 vcpu_el1_is_32bit inlined from __sysreg32_save_state:161 (sysreg-sr.h) <3c6e2>: g vcpu_el1_is_32bit:46.11 (kvm_emulate.h) Sbepe return !(║vcpu->arch.hcr_el2 & HCR_RW); +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3220 0x3224 (DW_OP_fbreg 0x80) vcpu_el1_is_32bit(inlined):__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c ~g 00003220: f94043e8 ldr x8, [sp, #128] -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3220 0x3224 (DW_OP_fbreg 0x80) vcpu_el1_is_32bit(inlined):__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c __sysreg32_save_state:161.6 (sysreg-sr.h) Sbepe if (║!vcpu_el1_is_32bit(vcpu)) ~ 00003224: 3961ed09 ldrb w9, [x8, #2171] ~ ┌──00003228: 36380069 tbz w9, #7, 3234 <__sysreg32_save_state+0x24> ~ │┌─0000322c: 14000001 b 3230 <__sysreg32_save_state+0x20> <- 00003228(b.cc-succ)<fallthrough> ││ ││ __sysreg32_save_state:162.3 (sysreg-sr.h) Sbepe ║return; ~ ┌───┼└>00003230: 1400003c b 3320 <__sysreg32_save_state+0x110> <- 0000322c(b)<__sysreg32_save_state+0x20> │ │ │ │ __sysreg32_save_state:164.29 (sysreg-sr.h) Sbepe vcpu->arch.ctxt.spsr_abt = ║read_sysreg(spsr_abt); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3234 0x3248 (DW_OP_fbreg 0x70) lexblock:__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:164 ~ │ └─>00003234: d53c4328 mrs x8, spsr_abt <- 00003228(b.cc)<__sysreg32_save_state+0x24> ~ 00003238: f9003be8 str x8, [sp, #112] ~ 0000323c: f9403be8 ldr x8, [sp, #112] ~ 00003240: f90037e8 str x8, [sp, #104] ~ 00003244: f94037e8 ldr x8, [sp, #104] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3234 0x3248 (DW_OP_fbreg 0x70) lexblock:__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:164 __sysreg32_save_state:164.2 (sysreg-sr.h) sbepe ║vcpu->arch.ctxt.spsr_abt = read_sysreg(spsr_abt); ~ 00003248: f9403fe9 ldr x9, [sp, #120] __sysreg32_save_state:164.27 (sysreg-sr.h) sbepe vcpu->arch.ctxt.spsr_abt ║= read_sysreg(spsr_abt); ~ 0000324c: f9013928 str x8, [x9, #624] __sysreg32_save_state:165.29 (sysreg-sr.h) Sbepe vcpu->arch.ctxt.spsr_und = ║read_sysreg(spsr_und); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3250 0x3264 (DW_OP_fbreg 0x60) lexblock:__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:165 ~ 00003250: d53c4348 mrs x8, spsr_und ~ 00003254: f90033e8 str x8, [sp, #96] ~ 00003258: f94033e8 ldr x8, [sp, #96] ~ 0000325c: f9002fe8 str x8, [sp, #88] ~ 00003260: f9402fe8 ldr x8, [sp, #88] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3250 0x3264 (DW_OP_fbreg 0x60) lexblock:__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:165 __sysreg32_save_state:165.2 (sysreg-sr.h) sbepe ║vcpu->arch.ctxt.spsr_und = read_sysreg(spsr_und); ~ 00003264: f9403fe9 ldr x9, [sp, #120] __sysreg32_save_state:165.27 (sysreg-sr.h) sbepe vcpu->arch.ctxt.spsr_und ║= read_sysreg(spsr_und); ~ 00003268: f9013d28 str x8, [x9, #632] __sysreg32_save_state:166.29 (sysreg-sr.h) Sbepe vcpu->arch.ctxt.spsr_irq = ║read_sysreg(spsr_irq); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x326c 0x3280 (DW_OP_fbreg 0x50) lexblock:__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:166 ~ 0000326c: d53c4308 mrs x8, spsr_irq ~ 00003270: f9002be8 str x8, [sp, #80] ~ 00003274: f9402be8 ldr x8, [sp, #80] ~ 00003278: f90027e8 str x8, [sp, #72] ~ 0000327c: f94027e8 ldr x8, [sp, #72] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x326c 0x3280 (DW_OP_fbreg 0x50) lexblock:__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:166 __sysreg32_save_state:166.2 (sysreg-sr.h) sbepe ║vcpu->arch.ctxt.spsr_irq = read_sysreg(spsr_irq); ~ 00003280: f9403fe9 ldr x9, [sp, #120] __sysreg32_save_state:166.27 (sysreg-sr.h) sbepe vcpu->arch.ctxt.spsr_irq ║= read_sysreg(spsr_irq); ~ 00003284: f9014128 str x8, [x9, #640] __sysreg32_save_state:167.29 (sysreg-sr.h) Sbepe vcpu->arch.ctxt.spsr_fiq = ║read_sysreg(spsr_fiq); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3288 0x329c (DW_OP_fbreg 0x40) lexblock:__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:167 ~ 00003288: d53c4368 mrs x8, spsr_fiq ~ 0000328c: f90023e8 str x8, [sp, #64] ~ 00003290: f94023e8 ldr x8, [sp, #64] ~ 00003294: f9001fe8 str x8, [sp, #56] ~ 00003298: f9401fe8 ldr x8, [sp, #56] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3288 0x329c (DW_OP_fbreg 0x40) lexblock:__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:167 __sysreg32_save_state:167.2 (sysreg-sr.h) sbepe ║vcpu->arch.ctxt.spsr_fiq = read_sysreg(spsr_fiq); ~ 0000329c: f9403fe9 ldr x9, [sp, #120] __sysreg32_save_state:167.27 (sysreg-sr.h) sbepe vcpu->arch.ctxt.spsr_fiq ║= read_sysreg(spsr_fiq); ~ 000032a0: f9014528 str x8, [x9, #648] __sysreg32_save_state:169.37 (sysreg-sr.h) Sbepe __vcpu_sys_reg(vcpu, DACR32_EL2) = ║read_sysreg(dacr32_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x32a4 0x32b8 (DW_OP_fbreg 0x30) lexblock:__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:169 ~ 000032a4: d53c3008 mrs x8, dacr32_el2 ~ 000032a8: f9001be8 str x8, [sp, #48] ~ 000032ac: f9401be8 ldr x8, [sp, #48] ~ 000032b0: f90017e8 str x8, [sp, #40] ~ 000032b4: f94017e8 ldr x8, [sp, #40] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x32a4 0x32b8 (DW_OP_fbreg 0x30) lexblock:__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:169 __sysreg32_save_state:169.2 (sysreg-sr.h) sbepe ║__vcpu_sys_reg(vcpu, DACR32_EL2) = read_sysreg(dacr32_el2); ~ 000032b8: f9403fe9 ldr x9, [sp, #120] __sysreg32_save_state:169.35 (sysreg-sr.h) sbepe __vcpu_sys_reg(vcpu, DACR32_EL2) ║= read_sysreg(dacr32_el2); ~ 000032bc: f9041d28 str x8, [x9, #2104] __sysreg32_save_state:170.37 (sysreg-sr.h) Sbepe __vcpu_sys_reg(vcpu, IFSR32_EL2) = ║read_sysreg(ifsr32_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x32c0 0x32d4 (DW_OP_fbreg 0x20) lexblock:__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:170 ~ 000032c0: d53c5028 mrs x8, ifsr32_el2 ~ 000032c4: f90013e8 str x8, [sp, #32] ~ 000032c8: f94013e8 ldr x8, [sp, #32] ~ 000032cc: f9000fe8 str x8, [sp, #24] ~ 000032d0: f9400fe8 ldr x8, [sp, #24] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x32c0 0x32d4 (DW_OP_fbreg 0x20) lexblock:__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:170 __sysreg32_save_state:170.2 (sysreg-sr.h) sbepe ║__vcpu_sys_reg(vcpu, IFSR32_EL2) = read_sysreg(ifsr32_el2); ~ 000032d4: f9403fe9 ldr x9, [sp, #120] __sysreg32_save_state:170.35 (sysreg-sr.h) sbepe __vcpu_sys_reg(vcpu, IFSR32_EL2) ║= read_sysreg(ifsr32_el2); ~ 000032d8: f9042128 str x8, [x9, #2112] ~ 000032dc: 2a1f03ea mov w10, wzr h: 0x32e0 0x32e8 has_vhe inlined from __sysreg32_save_state:172 (sysreg-sr.h) <3c7ac>: h has_vhe:113.3 (virt.h) Sbepe ║return false; ~h 000032e0: 39023fea strb w10, [sp, #143] h has_vhe:116.1 (virt.h) Sbepe ║} ~h 000032e4: 39423fea ldrb w10, [sp, #143] __sysreg32_save_state:172.16 (sysreg-sr.h) Sbepe if (has_vhe() ║|| vcpu->arch.flags & KVM_ARM64_DEBUG_DIRTY) ~ │ ┌───000032e8: 370000ca tbnz w10, #0, 3300 <__sysreg32_save_state+0xf0> │ │ ~ │ │ ┌─000032ec: 14000001 b 32f0 <__sysreg32_save_state+0xe0> <- 000032e8(b.cc-succ)<fallthrough> │ │ │ │ │ │ __sysreg32_save_state:172.19 (sysreg-sr.h) sbepe if (has_vhe() || ║vcpu->arch.flags & KVM_ARM64_DEBUG_DIRTY) ~ │ │ └>000032f0: f9403fe8 ldr x8, [sp, #120] <- 000032ec(b)<__sysreg32_save_state+0xe0> │ │ __sysreg32_save_state:172.6 (sysreg-sr.h) sbepe if (║has_vhe() || vcpu->arch.flags & KVM_ARM64_DEBUG_DIRTY) ~ │ │ 000032f4: 3962c109 ldrb w9, [x8, #2224] ~ │ ┌┼───000032f8: 36000149 tbz w9, #0, 3320 <__sysreg32_save_state+0x110> │ ││ ~ │ ││ ┌─000032fc: 14000001 b 3300 <__sysreg32_save_state+0xf0> <- 000032f8(b.cc-succ)<fallthrough> │ ││ │ │ ││ │ __sysreg32_save_state:173.40 (sysreg-sr.h) Sbepe __vcpu_sys_reg(vcpu, DBGVCR32_EL2) = ║read_sysreg(dbgvcr32_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3300 0x3314 (DW_OP_fbreg 0x10) lexblock:__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:173 ~ │ │└>└>00003300: d5340708 mrs x8, dbgvcr32_el2 <- 000032e8(b.cc)<__sysreg32_save_state+0xf0>,000032fc(b)<__sysreg32_save_state+0xf0> ~ │ │ 00003304: f9000be8 str x8, [sp, #16] ~ │ │ 00003308: f9400be8 ldr x8, [sp, #16] ~ │ │ 0000330c: f90007e8 str x8, [sp, #8] ~ │ │ 00003310: f94007e8 ldr x8, [sp, #8] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3300 0x3314 (DW_OP_fbreg 0x10) lexblock:__sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:173 │ │ __sysreg32_save_state:173.3 (sysreg-sr.h) sbepe ║__vcpu_sys_reg(vcpu, DBGVCR32_EL2) = read_sysreg(dbgvcr32_el2); ~ │ │ 00003314: f9403fe9 ldr x9, [sp, #120] │ │ __sysreg32_save_state:173.38 (sysreg-sr.h) sbepe __vcpu_sys_reg(vcpu, DBGVCR32_EL2) ║= read_sysreg(dbgvcr32_el2); ~ │ │ 00003318: f9042928 str x8, [x9, #2128] │ │ __sysreg32_save_state:173.3 (sysreg-sr.h) sbepe ║__vcpu_sys_reg(vcpu, DBGVCR32_EL2) = read_sysreg(dbgvcr32_el2); ~ │ │ ┌─0000331c: 14000001 b 3320 <__sysreg32_save_state+0x110> │ │ │ │ │ │ __sysreg32_save_state:174.1 (sysreg-sr.h) Sbepe ║} ~ └>└─>└>00003320: 910243ff add sp, sp, #0x90 <- 00003230(b)<__sysreg32_save_state+0x110>,000032f8(b.cc)<__sysreg32_save_state+0x110>,0000331c(b)<__sysreg32_save_state+0x110> 00003214 CFA:r31+144 ~ 00003324: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3210 0x3328 (DW_OP_fbreg 0x78) __sysreg32_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:159 **00003328 <__hyp_vgic_save_state>: + __hyp_vgic_save_state params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3328 0x3390 (DW_OP_fbreg -0x8) __hyp_vgic_save_state:109.0 (switch.c) Sbepe ║{ +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3328 0x3390 (DW_OP_fbreg -0x8) __hyp_vgic_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:108 ~ 00003328: d100c3ff sub sp, sp, #0x30 <- 00002558(bl)<__hyp_vgic_save_state> ~ 0000332c: a9027bfd stp x29, x30, [sp, #32] 00003328 CFA:r31 r29:u r30:u ~ 00003330: 910083fd add x29, sp, #0x20 ~ 00003334: f81f83a0 stur x0, [x29, #-8] __hyp_vgic_save_state:110.6 (switch.c) SbePe if (║static_branch_unlikely(&kvm_vgic_global_state.gicv3_cpuif)) { +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3338 0x3360 (DW_OP_fbreg -0xc) lexblock:__hyp_vgic_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:110 ~ 00003338: 900000c8 adrp x8, 1b000 <hyp_memory+0x460> ~ 0000333c: b947b109 ldr w9, [x8, #1968] ~ 00003340: 71000129 subs w9, w9, #0x0 ~ 00003344: 1a9f07ea cset w10, ne // ne = any ~ 00003348: 381f43aa sturb w10, [x29, #-12] __hyp_vgic_save_state:110.6 (switch.c) sbepe if (║static_branch_unlikely(&kvm_vgic_global_state.gicv3_cpuif)) { ~ 0000334c: 385f43aa ldurb w10, [x29, #-12] ~ 00003350: 2a0a03e8 mov w8, w10 ~ 00003354: 92400108 and x8, x8, #0x1 __hyp_vgic_save_state:110.6 (switch.c) sbepe if (║static_branch_unlikely(&kvm_vgic_global_state.gicv3_cpuif)) { ~ 00003358: f90007e8 str x8, [sp, #8] __hyp_vgic_save_state:110.6 (switch.c) sbepe if (║static_branch_unlikely(&kvm_vgic_global_state.gicv3_cpuif)) { ~ 0000335c: f94007e8 ldr x8, [sp, #8] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3338 0x3360 (DW_OP_fbreg -0xc) lexblock:__hyp_vgic_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:110 __hyp_vgic_save_state:110.6 (switch.c) sbepe if (║static_branch_unlikely(&kvm_vgic_global_state.gicv3_cpuif)) { ~ ┌───00003360: b4000128 cbz x8, 3384 <__hyp_vgic_save_state+0x5c> ~ │ ┌─00003364: 14000001 b 3368 <__hyp_vgic_save_state+0x40> <- 00003360(b.cc-succ)<fallthrough> │ │ │ │ __hyp_vgic_save_state:111.25 (switch.c) Sbepe __vgic_v3_save_state(&║vcpu->arch.vgic_cpu.vgic_v3); ~ │ └>00003368: f85f83a8 ldur x8, [x29, #-8] <- 00003364(b)<__hyp_vgic_save_state+0x40> __hyp_vgic_save_state:111.36 (switch.c) sbepe __vgic_v3_save_state(&vcpu->arch.║vgic_cpu.vgic_v3); ~ 0000336c: 913b6100 add x0, x8, #0xed8 __hyp_vgic_save_state:111.3 (switch.c) sbepe ║__vgic_v3_save_state(&vcpu->arch.vgic_cpu.vgic_v3); ~ 00003370: 940023ba bl c258 <__vgic_v3_save_state> __hyp_vgic_save_state:112.31 (switch.c) Sbepe __vgic_v3_deactivate_traps(&║vcpu->arch.vgic_cpu.vgic_v3); ~ 00003374: f85f83a8 ldur x8, [x29, #-8] <- 00003370(bl-succ)<return> __hyp_vgic_save_state:112.42 (switch.c) sbepe __vgic_v3_deactivate_traps(&vcpu->arch.║vgic_cpu.vgic_v3); ~ 00003378: 913b6100 add x0, x8, #0xed8 __hyp_vgic_save_state:112.3 (switch.c) sbepe ║__vgic_v3_deactivate_traps(&vcpu->arch.vgic_cpu.vgic_v3); ~ 0000337c: 94002597 bl c9d8 <__vgic_v3_deactivate_traps> __hyp_vgic_save_state:113.2 (switch.c) Sbepe } ~ │ ┌─00003380: 14000001 b 3384 <__hyp_vgic_save_state+0x5c> <- 0000337c(bl-succ)<return> │ │ │ │ __hyp_vgic_save_state:114.1 (switch.c) Sbepe ║} ~ └>└>00003384: a9427bfd ldp x29, x30, [sp, #32] <- 00003360(b.cc)<__hyp_vgic_save_state+0x5c>,00003380(b)<__hyp_vgic_save_state+0x5c> ~ 00003388: 9100c3ff add sp, sp, #0x30 00003334 CFA:r29+16 r29:c-16 r30:c-8 ~ 0000338c: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3328 0x3390 (DW_OP_fbreg -0x8) __hyp_vgic_save_state:arch/arm64/kvm/hyp/nvhe/switch.c:108 **00003390 <__deactivate_traps>: + __deactivate_traps params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3390 0x35c8 (DW_OP_fbreg -0x38) __deactivate_traps:71.0 (switch.c) Sbepe ║{ +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3390 0x35c8 (DW_OP_fbreg -0x38) __deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:70 +mdcr_el2 var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3390 0x35c8 (DW_OP_fbreg -0x40) __deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:73 ~ 00003390: d10383ff sub sp, sp, #0xe0 <- 00002560(bl)<__deactivate_traps>,00003798(bl)<__deactivate_traps> ~ 00003394: a90d7bfd stp x29, x30, [sp, #208] 00003390 CFA:r31 r29:u r30:u ~ 00003398: 910343fd add x29, sp, #0xd0 ~ 0000339c: f81c83a0 stur x0, [x29, #-56] __deactivate_traps:75.22 (switch.c) SbePe ___deactivate_traps(║vcpu); ~ 000033a0: f85c83a0 ldur x0, [x29, #-56] __deactivate_traps:75.2 (switch.c) sbepe ║___deactivate_traps(vcpu); ~ 000033a4: 94000679 bl 4d88 <___deactivate_traps> __deactivate_traps:77.13 (switch.c) Sbepe mdcr_el2 = ║read_sysreg(mdcr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x33a8 0x33bc (DW_OP_fbreg -0x48) lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:77 ~ 000033a8: d53c1128 mrs x8, mdcr_el2 <- 000033a4(bl-succ)<return> ~ 000033ac: f81b83a8 stur x8, [x29, #-72] ~ 000033b0: f85b83a8 ldur x8, [x29, #-72] ~ 000033b4: f81b03a8 stur x8, [x29, #-80] ~ 000033b8: f85b03a8 ldur x8, [x29, #-80] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x33a8 0x33bc (DW_OP_fbreg -0x48) lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:77 __deactivate_traps:77.11 (switch.c) sbepe mdcr_el2 ║= read_sysreg(mdcr_el2); ~ 000033bc: f81c03a8 stur x8, [x29, #-64] ~ 000033c0: 528004a9 mov w9, #0x25 // #37 ~ 000033c4: b81d03a9 stur w9, [x29, #-48] i: 0x33c8 0x3470 cpus_have_final_cap inlined from __deactivate_traps:79 (switch.c) <3c86b>: j: 0x33c8 0x33f0 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <3c887>:<3c86b>: ij system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready); +num param int (base type, DW_ATE_signed size:4) 0x33c8 0x3470 (DW_OP_fbreg -0x30) cpus_have_final_cap(inlined):__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x33c8 0x33f0 (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~ij 000033c8: 900000c8 adrp x8, 1b000 <hyp_memory+0x460> ~ij 000033cc: b9479909 ldr w9, [x8, #1944] ~ij 000033d0: 71000129 subs w9, w9, #0x0 ~ij 000033d4: 1a9f07ea cset w10, ne // ne = any ~ij 000033d8: 381e43aa sturb w10, [x29, #-28] ij system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~ij 000033dc: 385e43aa ldurb w10, [x29, #-28] ~ij 000033e0: 2a0a03e8 mov w8, w10 ~ij 000033e4: 92400108 and x8, x8, #0x1 ij system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~ij 000033e8: f81d83a8 stur x8, [x29, #-40] ij system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~ij 000033ec: f85d83a8 ldur x8, [x29, #-40] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x33c8 0x33f0 (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c i cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~i ┌────000033f0: b4000388 cbz x8, 3460 <__deactivate_traps+0xd0> ~i │ ┌─000033f4: 14000001 b 33f8 <__deactivate_traps+0x68> <- 000033f0(b.cc-succ)<fallthrough> │ │ i │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~i │ └>000033f8: b85d03a8 ldur w8, [x29, #-48] <- 000033f4(b)<__deactivate_traps+0x68> ~i 000033fc: b81f83a8 stur w8, [x29, #-8] k: 0x3400 0x3460 (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3c8b3>:<3c86b>: ik __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x3400 0x3460 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~ik 00003400: b85f83a8 ldur w8, [x29, #-8] ik __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~ik 00003404: 7100f508 subs w8, w8, #0x3d ~ik │ ┌──00003408: 540000ab b.lt 341c <__deactivate_traps+0x8c> // b.tstop │ │ ~ik │ │┌─0000340c: 14000001 b 3410 <__deactivate_traps+0x80> <- 00003408(b.cc-succ)<fallthrough> │ ││ ~ik │ │└>00003410: 2a1f03e8 mov w8, wzr <- 0000340c(b)<__deactivate_traps+0x80> ik │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~ik │ │ 00003414: 381ff3a8 sturb w8, [x29, #-1] ~ik │┌┼──00003418: 14000013 b 3464 <__deactivate_traps+0xd4> │││ ik │││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x341c 0x3450 (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~ik ││└─>0000341c: b89f83a8 ldursw x8, [x29, #-8] <- 00003408(b.cc)<__deactivate_traps+0x8c> ~ik ││ 00003420: d37ced08 lsl x8, x8, #4 ~ik ││ 00003424: 900000c9 adrp x9, 1b000 <hyp_memory+0x460> ~ik ││ 00003428: 911e8129 add x9, x9, #0x7a0 ~ik ││ 0000342c: b868692a ldr w10, [x9, x8] ~ik ││ 00003430: 7100014a subs w10, w10, #0x0 ~ik ││ 00003434: 1a9f07eb cset w11, ne // ne = any ~ik ││ 00003438: 381f43ab sturb w11, [x29, #-12] ik ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ik ││ 0000343c: 385f43ab ldurb w11, [x29, #-12] ~ik ││ 00003440: 2a0b03e8 mov w8, w11 ~ik ││ 00003444: 92400108 and x8, x8, #0x1 ik ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ik ││ 00003448: f81e83a8 stur x8, [x29, #-24] ik ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ik ││ 0000344c: f85e83a8 ldur x8, [x29, #-24] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x341c 0x3450 (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ik ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ik ││ 00003450: f1000108 subs x8, x8, #0x0 ~ik ││ 00003454: 1a9f07eb cset w11, ne // ne = any ik ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~ik ││ 00003458: 381ff3ab sturb w11, [x29, #-1] ~ik ││ ┌─0000345c: 14000002 b 3464 <__deactivate_traps+0xd4> -num param int (base type, DW_ATE_signed size:4) 0x3400 0x3460 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ││ │ i ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~i └┼─┼>00003460: d4210000 brk #0x800 <- 000033f0(b.cc)<__deactivate_traps+0xd0> │ │ l: 0x3464 0x3468 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3c8b3>:<3c86b>: il │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x3464 0x3468 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~il └>└>00003464: 385ff3a8 ldurb w8, [x29, #-1] <- 00003418(b)<__deactivate_traps+0xd4>,0000345c(b)<__deactivate_traps+0xd4> -num param int (base type, DW_ATE_signed size:4) 0x3464 0x3468 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c i cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~i 00003468: 381d73a8 sturb w8, [x29, #-41] i cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~i 0000346c: 385d73a8 ldurb w8, [x29, #-41] -num param int (base type, DW_ATE_signed size:4) 0x33c8 0x3470 (DW_OP_fbreg -0x30) cpus_have_final_cap(inlined):__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c __deactivate_traps:79.6 (switch.c) Sbepe if (║cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) { ~ 00003470: 71000508 subs w8, w8, #0x1 ~ ┌───00003474: 54000421 b.ne 34f8 <__deactivate_traps+0x168> // b.any ~ │ ┌─00003478: 14000001 b 347c <__deactivate_traps+0xec> <- 00003474(b.cc-succ)<fallthrough> │ │ +val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x347c 0x34f8 (DW_OP_fbreg -0x58) lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:80 +reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x347c 0x3490 (DW_OP_fbreg -0x60) lexblock:lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:88 ~ │ └>0000347c: d5382048 mrs x8, tcr_el1 <- 00003478(b)<__deactivate_traps+0xec> __deactivate_traps:88.9 (switch.c) Sbepe val = ║read_sysreg_el1(SYS_TCR); ~ 00003480: f81a03a8 stur x8, [x29, #-96] ~ 00003484: f85a03a8 ldur x8, [x29, #-96] ~ 00003488: f90037e8 str x8, [sp, #104] ~ 0000348c: f94037e8 ldr x8, [sp, #104] -reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x347c 0x3490 (DW_OP_fbreg -0x60) lexblock:lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:88 __deactivate_traps:88.7 (switch.c) sbepe val ║= read_sysreg_el1(SYS_TCR); ~ 00003490: f81a83a8 stur x8, [x29, #-88] __deactivate_traps:89.3 (switch.c) Sbepe ║write_sysreg_el1(val | TCR_EPD1_MASK | TCR_EPD0_MASK, SYS_TCR); ~ │ ┌─00003494: 14000001 b 3498 <__deactivate_traps+0x108> │ │ │ │ __deactivate_traps:89.3 (switch.c) sbepe ║write_sysreg_el1(val | TCR_EPD1_MASK | TCR_EPD0_MASK, SYS_TCR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3498 0x34b8 (DW_OP_breg31 0x60) lexblock:lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:89 ~ │ └>00003498: f85a83a8 ldur x8, [x29, #-88] <- 00003494(b)<__deactivate_traps+0x108> ~ 0000349c: 320983e9 mov w9, #0x800080 // #8388736 ~ 000034a0: 2a0903ea mov w10, w9 ~ 000034a4: aa0a0108 orr x8, x8, x10 ~ 000034a8: f90033e8 str x8, [sp, #96] ~ 000034ac: f94033e8 ldr x8, [sp, #96] ~ 000034b0: d5182048 msr tcr_el1, x8 ~ │ ┌─000034b4: 14000001 b 34b8 <__deactivate_traps+0x128> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3498 0x34b8 (DW_OP_breg31 0x60) lexblock:lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:89 │ │ │ │ __deactivate_traps:90.3 (switch.c) Sbepe ║isb(); ~ │ └>000034b8: d5033fdf isb <- 000034b4(b)<__deactivate_traps+0x128> +reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x34bc 0x34d0 (DW_OP_breg31 0x58) lexblock:lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:91 ~ 000034bc: d5381008 mrs x8, sctlr_el1 __deactivate_traps:91.9 (switch.c) Sbepe val = ║read_sysreg_el1(SYS_SCTLR); ~ 000034c0: f9002fe8 str x8, [sp, #88] ~ 000034c4: f9402fe8 ldr x8, [sp, #88] ~ 000034c8: f9002be8 str x8, [sp, #80] ~ 000034cc: f9402be8 ldr x8, [sp, #80] -reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x34bc 0x34d0 (DW_OP_breg31 0x58) lexblock:lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:91 __deactivate_traps:91.7 (switch.c) sbepe val ║= read_sysreg_el1(SYS_SCTLR); ~ 000034d0: f81a83a8 stur x8, [x29, #-88] __deactivate_traps:92.3 (switch.c) Sbepe ║write_sysreg_el1(val | SCTLR_ELx_M, SYS_SCTLR); ~ │ ┌─000034d4: 14000001 b 34d8 <__deactivate_traps+0x148> │ │ │ │ __deactivate_traps:92.3 (switch.c) sbepe ║write_sysreg_el1(val | SCTLR_ELx_M, SYS_SCTLR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x34d8 0x34f0 (DW_OP_breg31 0x48) lexblock:lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:92 ~ │ └>000034d8: f85a83a8 ldur x8, [x29, #-88] <- 000034d4(b)<__deactivate_traps+0x148> ~ 000034dc: b2400108 orr x8, x8, #0x1 ~ 000034e0: f90027e8 str x8, [sp, #72] ~ 000034e4: f94027e8 ldr x8, [sp, #72] ~ 000034e8: d5181008 msr sctlr_el1, x8 ~ │ ┌─000034ec: 14000001 b 34f0 <__deactivate_traps+0x160> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x34d8 0x34f0 (DW_OP_breg31 0x48) lexblock:lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:92 │ │ │ │ __deactivate_traps:93.3 (switch.c) Sbepe ║isb(); ~ │ └>000034f0: d5033fdf isb <- 000034ec(b)<__deactivate_traps+0x160> __deactivate_traps:94.2 (switch.c) Sbepe } ~ │ ┌─000034f4: 14000001 b 34f8 <__deactivate_traps+0x168> -val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x347c 0x34f8 (DW_OP_fbreg -0x58) lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:80 │ │ │ │ __deactivate_traps:96.2 (switch.c) Sbepe ║__deactivate_traps_common(); ~ └>└>000034f8: 9400063b bl 4de4 <__deactivate_traps_common> <- 00003474(b.cc)<__deactivate_traps+0x168>,000034f4(b)<__deactivate_traps+0x168> __deactivate_traps:98.11 (switch.c) Sbepe mdcr_el2 ║&= MDCR_EL2_HPMN_MASK; ~ 000034fc: f85c03a8 ldur x8, [x29, #-64] <- 000034f8(bl-succ)<return> ~ 00003500: 92401108 and x8, x8, #0x1f ~ 00003504: f81c03a8 stur x8, [x29, #-64] __deactivate_traps:99.11 (switch.c) Sbepe mdcr_el2 ║|= MDCR_EL2_E2PB_MASK << MDCR_EL2_E2PB_SHIFT; ~ 00003508: f85c03a8 ldur x8, [x29, #-64] ~ 0000350c: b2740508 orr x8, x8, #0x3000 ~ 00003510: f81c03a8 stur x8, [x29, #-64] __deactivate_traps:101.2 (switch.c) Sbepe ║write_sysreg(mdcr_el2, mdcr_el2); ~ ┌─00003514: 14000001 b 3518 <__deactivate_traps+0x188> __deactivate_traps:101.2 (switch.c) sbepe ║write_sysreg(mdcr_el2, mdcr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3518 0x352c (DW_OP_breg31 0x40) lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:101 ~ └>00003518: f85c03a8 ldur x8, [x29, #-64] <- 00003514(b)<__deactivate_traps+0x188> ~ 0000351c: f90023e8 str x8, [sp, #64] ~ 00003520: f94023e8 ldr x8, [sp, #64] ~ 00003524: d51c1128 msr mdcr_el2, x8 ~ ┌─00003528: 14000001 b 352c <__deactivate_traps+0x19c> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3518 0x352c (DW_OP_breg31 0x40) lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:101 __deactivate_traps:102.2 (switch.c) Sbepe ║write_sysreg(this_cpu_ptr(&kvm_init_params)->hcr_el2, hcr_el2); ~ ┌─└>0000352c: 14000001 b 3530 <__deactivate_traps+0x1a0> <- 00003528(b)<__deactivate_traps+0x19c> __deactivate_traps:102.2 (switch.c) sbepe ║write_sysreg(this_cpu_ptr(&kvm_init_params)->hcr_el2, hcr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3530 0x3584 (DW_OP_breg31 0x38) lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:102 ~ ┌─└──>00003530: 14000001 b 3534 <__deactivate_traps+0x1a4> <- 0000352c(b)<__deactivate_traps+0x1a0> ~ └────>00003534: aa1f03e8 mov x8, xzr <- 00003530(b)<__deactivate_traps+0x1a4> __deactivate_traps:102.2 (switch.c) sbepe ║write_sysreg(this_cpu_ptr(&kvm_init_params)->hcr_el2, hcr_el2); +__vpp_verify var pointer(const(no type)) 0x3538 0x3540 (DW_OP_breg31 0x30) lexblock:lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:102 ~ 00003538: f9001be8 str x8, [sp, #48] ~ ┌─0000353c: 14000001 b 3540 <__deactivate_traps+0x1b0> -__vpp_verify var pointer(const(no type)) 0x3538 0x3540 (DW_OP_breg31 0x30) lexblock:lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:102 __deactivate_traps:102.2 (switch.c) sbepe ║write_sysreg(this_cpu_ptr(&kvm_init_params)->hcr_el2, hcr_el2); +__ptr var long unsigned int (base type, DW_ATE_unsigned size:8) 0x3540 0x3568 (DW_OP_breg31 0x20) lexblock:lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:102 ~ └>00003540: d00000a8 adrp x8, 19000 <kvm_host_data> <- 0000353c(b)<__deactivate_traps+0x1b0> ~ 00003544: 91386108 add x8, x8, #0xe18 ~ 00003548: f90013e8 str x8, [sp, #32] ~ 0000354c: f94013e8 ldr x8, [sp, #32] ~ 00003550: f90003e8 str x8, [sp] ~ 00003554: 97fffca2 bl 27dc <__hyp_my_cpu_offset> ~ 00003558: f94003e8 ldr x8, [sp] <- 00003554(bl-succ)<return> ~ 0000355c: 8b000108 add x8, x8, x0 ~ 00003560: f9000fe8 str x8, [sp, #24] ~ 00003564: f9400fe8 ldr x8, [sp, #24] -__ptr var long unsigned int (base type, DW_ATE_unsigned size:8) 0x3540 0x3568 (DW_OP_breg31 0x20) lexblock:lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:102 __deactivate_traps:102.2 (switch.c) sbepe ║write_sysreg(this_cpu_ptr(&kvm_init_params)->hcr_el2, hcr_el2); +__vpp_verify var pointer(const(no type)) 0x3568 0x356c (DW_OP_breg31 0x30) lexblock:lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:102 ~ 00003568: f90017e8 str x8, [sp, #40] -__vpp_verify var pointer(const(no type)) 0x3568 0x356c (DW_OP_breg31 0x30) lexblock:lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:102 __deactivate_traps:102.2 (switch.c) sbepe ║write_sysreg(this_cpu_ptr(&kvm_init_params)->hcr_el2, hcr_el2); ~ 0000356c: f94017e8 ldr x8, [sp, #40] __deactivate_traps:102.2 (switch.c) sbepe ║write_sysreg(this_cpu_ptr(&kvm_init_params)->hcr_el2, hcr_el2); ~ 00003570: f9401508 ldr x8, [x8, #40] ~ 00003574: f9001fe8 str x8, [sp, #56] ~ 00003578: f9401fe8 ldr x8, [sp, #56] ~ 0000357c: d51c1108 msr hcr_el2, x8 ~ ┌─00003580: 14000001 b 3584 <__deactivate_traps+0x1f4> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3530 0x3584 (DW_OP_breg31 0x38) lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:102 __deactivate_traps:103.2 (switch.c) Sbepe ║write_sysreg(CPTR_EL2_DEFAULT, cptr_el2); ~ ┌─└>00003584: 14000001 b 3588 <__deactivate_traps+0x1f8> <- 00003580(b)<__deactivate_traps+0x1f4> ~ └──>00003588: 52865fe8 mov w8, #0x32ff // #13055 <- 00003584(b)<__deactivate_traps+0x1f8> ~ 0000358c: 2a0803e9 mov w9, w8 __deactivate_traps:103.2 (switch.c) sbepe ║write_sysreg(CPTR_EL2_DEFAULT, cptr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3590 0x35a0 (DW_OP_breg31 0x10) lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:103 ~ 00003590: f9000be9 str x9, [sp, #16] ~ 00003594: f9400be9 ldr x9, [sp, #16] ~ 00003598: d51c1149 msr cptr_el2, x9 ~ ┌─0000359c: 14000001 b 35a0 <__deactivate_traps+0x210> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3590 0x35a0 (DW_OP_breg31 0x10) lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:103 __deactivate_traps:104.2 (switch.c) Sbepe ║write_sysreg(__kvm_hyp_host_vector, vbar_el2); ~ ┌─└>000035a0: 14000001 b 35a4 <__deactivate_traps+0x214> <- 0000359c(b)<__deactivate_traps+0x210> __deactivate_traps:104.2 (switch.c) sbepe ║write_sysreg(__kvm_hyp_host_vector, vbar_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x35a4 0x35bc (DW_OP_breg31 0x8) lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:104 ~ └──>000035a4: f0000008 adrp x8, 6000 <__host_exit> <- 000035a0(b)<__deactivate_traps+0x214> ~ 000035a8: 91200108 add x8, x8, #0x800 ~ 000035ac: f90007e8 str x8, [sp, #8] ~ 000035b0: f94007e8 ldr x8, [sp, #8] ~ 000035b4: d51cc008 msr vbar_el2, x8 ~ ┌─000035b8: 14000001 b 35bc <__deactivate_traps+0x22c> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x35a4 0x35bc (DW_OP_breg31 0x8) lexblock:__deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:104 __deactivate_traps:105.1 (switch.c) Sbepe ║} ~ └>000035bc: a94d7bfd ldp x29, x30, [sp, #208] <- 000035b8(b)<__deactivate_traps+0x22c> ~ 000035c0: 910383ff add sp, sp, #0xe0 0000339c CFA:r29+16 r29:c-16 r30:c-8 ~ 000035c4: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3390 0x35c8 (DW_OP_fbreg -0x38) __deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:70 -mdcr_el2 var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3390 0x35c8 (DW_OP_fbreg -0x40) __deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:73 **000035c8 <__fpsimd_save_fpexc32>: + __fpsimd_save_fpexc32 params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x35c8 0x3614 (DW_OP_fbreg 0x10) __fpsimd_save_fpexc32:58.0 (switch.h) Sbepe ║{ 000035c8 CFA:r31 +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x35c8 0x3614 (DW_OP_fbreg 0x10) __fpsimd_save_fpexc32:arch/arm64/kvm/hyp/nvhe/switch.c:57 ~ 000035c8: d10083ff sub sp, sp, #0x20 <- 0000271c(bl)<__fpsimd_save_fpexc32> ~ 000035cc: f9000be0 str x0, [sp, #16] __fpsimd_save_fpexc32:59.25 (switch.h) SbePe if (!vcpu_el1_is_32bit(║vcpu)) ~ 000035d0: f9400be8 ldr x8, [sp, #16] ~ 000035d4: f9000fe8 str x8, [sp, #24] m: 0x35d8 0x35dc vcpu_el1_is_32bit inlined from __fpsimd_save_fpexc32:59 (switch.h) <3ca36>: m vcpu_el1_is_32bit:46.11 (kvm_emulate.h) Sbepe return !(║vcpu->arch.hcr_el2 & HCR_RW); +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x35d8 0x35dc (DW_OP_fbreg 0x18) vcpu_el1_is_32bit(inlined):__fpsimd_save_fpexc32:arch/arm64/kvm/hyp/nvhe/switch.c ~m 000035d8: f9400fe8 ldr x8, [sp, #24] -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x35d8 0x35dc (DW_OP_fbreg 0x18) vcpu_el1_is_32bit(inlined):__fpsimd_save_fpexc32:arch/arm64/kvm/hyp/nvhe/switch.c __fpsimd_save_fpexc32:59.6 (switch.h) Sbepe if (║!vcpu_el1_is_32bit(vcpu)) ~ 000035dc: 3961ed09 ldrb w9, [x8, #2171] ~ ┌──000035e0: 36380069 tbz w9, #7, 35ec <__fpsimd_save_fpexc32+0x24> ~ │┌─000035e4: 14000001 b 35e8 <__fpsimd_save_fpexc32+0x20> <- 000035e0(b.cc-succ)<fallthrough> ││ ││ __fpsimd_save_fpexc32:60.3 (switch.h) Sbepe ║return; ~ ┌┼└>000035e8: 14000009 b 360c <__fpsimd_save_fpexc32+0x44> <- 000035e4(b)<__fpsimd_save_fpexc32+0x20> ││ ││ __fpsimd_save_fpexc32:62.38 (switch.h) Sbepe __vcpu_sys_reg(vcpu, FPEXC32_EL2) = ║read_sysreg(fpexc32_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x35ec 0x3600 (DW_OP_fbreg 0x8) lexblock:__fpsimd_save_fpexc32:arch/arm64/kvm/hyp/nvhe/switch.c:62 ~ │└─>000035ec: d53c5308 mrs x8, fpexc32_el2 <- 000035e0(b.cc)<__fpsimd_save_fpexc32+0x24> ~ 000035f0: f90007e8 str x8, [sp, #8] ~ 000035f4: f94007e8 ldr x8, [sp, #8] ~ 000035f8: f90003e8 str x8, [sp] ~ 000035fc: f94003e8 ldr x8, [sp] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x35ec 0x3600 (DW_OP_fbreg 0x8) lexblock:__fpsimd_save_fpexc32:arch/arm64/kvm/hyp/nvhe/switch.c:62 __fpsimd_save_fpexc32:62.2 (switch.h) sbepe ║__vcpu_sys_reg(vcpu, FPEXC32_EL2) = read_sysreg(fpexc32_el2); ~ 00003600: f9400be9 ldr x9, [sp, #16] __fpsimd_save_fpexc32:62.36 (switch.h) sbepe __vcpu_sys_reg(vcpu, FPEXC32_EL2) ║= read_sysreg(fpexc32_el2); ~ 00003604: f9042528 str x8, [x9, #2120] __fpsimd_save_fpexc32:63.1 (switch.h) Sbepe ║} ~ │ ┌─00003608: 14000001 b 360c <__fpsimd_save_fpexc32+0x44> │ │ ~ └>└>0000360c: 910083ff add sp, sp, #0x20 <- 000035e8(b)<__fpsimd_save_fpexc32+0x44>,00003608(b)<__fpsimd_save_fpexc32+0x44> 000035cc CFA:r31+32 ~ 00003610: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x35c8 0x3614 (DW_OP_fbreg 0x10) __fpsimd_save_fpexc32:arch/arm64/kvm/hyp/nvhe/switch.c:57 **00003614 <__pmu_switch_to_host>: + __pmu_switch_to_host params: +host_ctxt param pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x3614 0x36b8 (DW_OP_fbreg 0x38) __pmu_switch_to_host:149.0 (switch.c) Sbepe ║{ 00003614 CFA:r31 +host_ctxt param pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x3614 0x36b8 (DW_OP_fbreg 0x38) __pmu_switch_to_host:arch/arm64/kvm/hyp/nvhe/switch.c:148 +host var pointer(struct kvm_host_data<2d002>/<2d041>) 0x3614 0x36b8 (DW_OP_fbreg 0x30) __pmu_switch_to_host:arch/arm64/kvm/hyp/nvhe/switch.c:150 +pmu var pointer(struct kvm_pmu_events<2d002>/<3b581>) 0x3614 0x36b8 (DW_OP_fbreg 0x28) __pmu_switch_to_host:arch/arm64/kvm/hyp/nvhe/switch.c:151 ~ 00003614: d10103ff sub sp, sp, #0x40 <- 0000273c(bl)<__pmu_switch_to_host> ~ 00003618: f9001fe0 str x0, [sp, #56] __pmu_switch_to_host:153.9 (switch.c) SbePe host = ║container_of(host_ctxt, struct kvm_host_data, host_ctxt); +__mptr var pointer(no type) 0x361c 0x3638 (DW_OP_fbreg 0x20) lexblock:__pmu_switch_to_host:arch/arm64/kvm/hyp/nvhe/switch.c:153 ~ 0000361c: f9401fe8 ldr x8, [sp, #56] ~ 00003620: f90013e8 str x8, [sp, #32] ~ ┌─00003624: 14000001 b 3628 <__pmu_switch_to_host+0x14> __pmu_switch_to_host:153.9 (switch.c) sbepe host = ║container_of(host_ctxt, struct kvm_host_data, host_ctxt); ~ ┌─└>00003628: 14000001 b 362c <__pmu_switch_to_host+0x18> <- 00003624(b)<__pmu_switch_to_host+0x14> __pmu_switch_to_host:153.9 (switch.c) sbepe host = ║container_of(host_ctxt, struct kvm_host_data, host_ctxt); ~ └──>0000362c: f94013e8 ldr x8, [sp, #32] <- 00003628(b)<__pmu_switch_to_host+0x18> __pmu_switch_to_host:153.9 (switch.c) sbepe host = ║container_of(host_ctxt, struct kvm_host_data, host_ctxt); ~ 00003630: f9000fe8 str x8, [sp, #24] __pmu_switch_to_host:153.9 (switch.c) sbepe host = ║container_of(host_ctxt, struct kvm_host_data, host_ctxt); ~ 00003634: f9400fe8 ldr x8, [sp, #24] -__mptr var pointer(no type) 0x361c 0x3638 (DW_OP_fbreg 0x20) lexblock:__pmu_switch_to_host:arch/arm64/kvm/hyp/nvhe/switch.c:153 __pmu_switch_to_host:153.7 (switch.c) sbepe host ║= container_of(host_ctxt, struct kvm_host_data, host_ctxt); ~ 00003638: f9001be8 str x8, [sp, #48] __pmu_switch_to_host:154.9 (switch.c) Sbepe pmu = &║host->pmu_events; ~ 0000363c: f9401be8 ldr x8, [sp, #48] __pmu_switch_to_host:154.15 (switch.c) sbepe pmu = &host->║pmu_events; ~ 00003640: 911c0108 add x8, x8, #0x700 __pmu_switch_to_host:154.6 (switch.c) sbepe pmu ║= &host->pmu_events; ~ 00003644: f90017e8 str x8, [sp, #40] __pmu_switch_to_host:156.6 (switch.c) Sbepe if (║pmu->events_guest) ~ 00003648: f94017e8 ldr x8, [sp, #40] __pmu_switch_to_host:156.11 (switch.c) sbepe if (pmu->║events_guest) ~ 0000364c: b9400509 ldr w9, [x8, #4] __pmu_switch_to_host:156.6 (switch.c) sbepe if (║pmu->events_guest) ~ ┌─────00003650: 34000169 cbz w9, 367c <__pmu_switch_to_host+0x68> ~ │ ┌─00003654: 14000001 b 3658 <__pmu_switch_to_host+0x44> <- 00003650(b.cc-succ)<fallthrough> │ │ │ │ __pmu_switch_to_host:157.3 (switch.c) Sbepe ║write_sysreg(pmu->events_guest, pmcntenclr_el0); ~ │ ┌─└>00003658: 14000001 b 365c <__pmu_switch_to_host+0x48> <- 00003654(b)<__pmu_switch_to_host+0x44> │ │ │ │ __pmu_switch_to_host:157.3 (switch.c) sbepe ║write_sysreg(pmu->events_guest, pmcntenclr_el0); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x365c 0x367c (DW_OP_fbreg 0x10) lexblock:__pmu_switch_to_host:arch/arm64/kvm/hyp/nvhe/switch.c:157 ~ │ └──>0000365c: f94017e8 ldr x8, [sp, #40] <- 00003658(b)<__pmu_switch_to_host+0x48> ~ 00003660: b9400509 ldr w9, [x8, #4] ~ 00003664: 2a0903e8 mov w8, w9 ~ 00003668: f9000be8 str x8, [sp, #16] ~ 0000366c: f9400be8 ldr x8, [sp, #16] ~ 00003670: d51b9c48 msr pmcntenclr_el0, x8 ~ │ ┌─00003674: 14000001 b 3678 <__pmu_switch_to_host+0x64> │ │ ~ │ ┌─└>00003678: 14000001 b 367c <__pmu_switch_to_host+0x68> <- 00003674(b)<__pmu_switch_to_host+0x64> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x365c 0x367c (DW_OP_fbreg 0x10) lexblock:__pmu_switch_to_host:arch/arm64/kvm/hyp/nvhe/switch.c:157 │ │ │ │ __pmu_switch_to_host:159.6 (switch.c) Sbepe if (║pmu->events_host) ~ └>└──>0000367c: f94017e8 ldr x8, [sp, #40] <- 00003650(b.cc)<__pmu_switch_to_host+0x68>,00003678(b)<__pmu_switch_to_host+0x68> __pmu_switch_to_host:159.11 (switch.c) sbepe if (pmu->║events_host) ~ 00003680: b9400109 ldr w9, [x8] __pmu_switch_to_host:159.6 (switch.c) sbepe if (║pmu->events_host) ~ ┌─────00003684: 34000169 cbz w9, 36b0 <__pmu_switch_to_host+0x9c> ~ │ ┌─00003688: 14000001 b 368c <__pmu_switch_to_host+0x78> <- 00003684(b.cc-succ)<fallthrough> │ │ │ │ __pmu_switch_to_host:160.3 (switch.c) Sbepe ║write_sysreg(pmu->events_host, pmcntenset_el0); ~ │ ┌─└>0000368c: 14000001 b 3690 <__pmu_switch_to_host+0x7c> <- 00003688(b)<__pmu_switch_to_host+0x78> │ │ │ │ __pmu_switch_to_host:160.3 (switch.c) sbepe ║write_sysreg(pmu->events_host, pmcntenset_el0); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3690 0x36b0 (DW_OP_fbreg 0x8) lexblock:__pmu_switch_to_host:arch/arm64/kvm/hyp/nvhe/switch.c:160 ~ │ └──>00003690: f94017e8 ldr x8, [sp, #40] <- 0000368c(b)<__pmu_switch_to_host+0x7c> ~ 00003694: b9400109 ldr w9, [x8] ~ 00003698: 2a0903e8 mov w8, w9 ~ 0000369c: f90007e8 str x8, [sp, #8] ~ 000036a0: f94007e8 ldr x8, [sp, #8] ~ 000036a4: d51b9c28 msr pmcntenset_el0, x8 ~ │ ┌─000036a8: 14000001 b 36ac <__pmu_switch_to_host+0x98> │ │ ~ │ ┌─└>000036ac: 14000001 b 36b0 <__pmu_switch_to_host+0x9c> <- 000036a8(b)<__pmu_switch_to_host+0x98> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3690 0x36b0 (DW_OP_fbreg 0x8) lexblock:__pmu_switch_to_host:arch/arm64/kvm/hyp/nvhe/switch.c:160 │ │ │ │ __pmu_switch_to_host:161.1 (switch.c) Sbepe ║} ~ └>└──>000036b0: 910103ff add sp, sp, #0x40 <- 00003684(b.cc)<__pmu_switch_to_host+0x9c>,000036ac(b)<__pmu_switch_to_host+0x9c> 00003618 CFA:r31+64 ~ 000036b4: d65f03c0 ret -host_ctxt param pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x3614 0x36b8 (DW_OP_fbreg 0x38) __pmu_switch_to_host:arch/arm64/kvm/hyp/nvhe/switch.c:148 -host var pointer(struct kvm_host_data<2d002>/<2d041>) 0x3614 0x36b8 (DW_OP_fbreg 0x30) __pmu_switch_to_host:arch/arm64/kvm/hyp/nvhe/switch.c:150 -pmu var pointer(struct kvm_pmu_events<2d002>/<3b581>) 0x3614 0x36b8 (DW_OP_fbreg 0x28) __pmu_switch_to_host:arch/arm64/kvm/hyp/nvhe/switch.c:151 **000036b8 <hyp_panic>: + hyp_panic params: none hyp_panic:250.0 (switch.c) Sbepe ║{ +spsr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x36b8 0x3948 (DW_OP_breg31 0x90) hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:251 +elr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x36b8 0x3948 (DW_OP_breg31 0x78) hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:252 +par var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x36b8 0x3948 (DW_OP_breg31 0x60) hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:253 +restore_host var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x36b8 0x3948 (DW_OP_breg31 0x3c) hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:254 +host_ctxt var pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x36b8 0x3948 (DW_OP_breg31 0x30) hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:255 +vcpu var pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x36b8 0x3948 (DW_OP_breg31 0x28) hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:256 ~ ╔══════════════>╔>╔>╔>╔>╔>╔>╔>╔═════════════════════════>000036b8: d10543ff sub sp, sp, #0x150 <- v00006820(b)<hyp_panic>,v000068a0(b)<hyp_panic>,v00006920(b)<hyp_panic>,v000069a0(b)<hyp_panic>,v00006a20(b)<hyp_panic>,v00006aa0(b)<hyp_panic>,v00006b20(b)<hyp_panic>,v00006ba0(b)<hyp_panic>,0000708c(bl)<hyp_panic>,00007764(bl)<hyp_panic>,000077a8(bl)<hyp_panic>,00008b88(bl)<hyp_panic>,00008f64(bl)<hyp_panic>,0000b564(bl)<hyp_panic>,0000b5a4(bl)<hyp_panic>,v0000f984(b.cc)<hyp_panic> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036bc: a9137bfd stp x29, x30, [sp, #304] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036c0: f900a3fc str x28, [sp, #320] ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036b8 CFA:r31 r28:u r29:u r30:u ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036c4: 9104c3fd add x29, sp, #0x130 +reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x36c8 0x36dc (DW_OP_breg31 0x88) lexblock:hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:251 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036c8: d53c4008 mrs x8, spsr_el2 ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:251.13 (switch.c) SbePe u64 spsr = ║read_sysreg_el2(SYS_SPSR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036cc: f90047e8 str x8, [sp, #136] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036d0: f94047e8 ldr x8, [sp, #136] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036d4: f90043e8 str x8, [sp, #128] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036d8: f94043e8 ldr x8, [sp, #128] -reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x36c8 0x36dc (DW_OP_breg31 0x88) lexblock:hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:251 ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:251.6 (switch.c) sbepe u64 ║spsr = read_sysreg_el2(SYS_SPSR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036dc: f9004be8 str x8, [sp, #144] +reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x36e0 0x36f4 (DW_OP_breg31 0x70) lexblock:hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:252 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036e0: d53c4028 mrs x8, elr_el2 ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:252.12 (switch.c) Sbepe u64 elr = ║read_sysreg_el2(SYS_ELR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036e4: f9003be8 str x8, [sp, #112] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036e8: f9403be8 ldr x8, [sp, #112] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036ec: f90037e8 str x8, [sp, #104] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036f0: f94037e8 ldr x8, [sp, #104] -reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x36e0 0x36f4 (DW_OP_breg31 0x70) lexblock:hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:252 ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:252.6 (switch.c) sbepe u64 ║elr = read_sysreg_el2(SYS_ELR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036f4: f9003fe8 str x8, [sp, #120] ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:253.12 (switch.c) Sbepe u64 par = ║read_sysreg_par(); +par var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x36f8 0x3724 (DW_OP_breg31 0x58) lexblock:hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:253 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036f8: d503201f nop ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:253.12 (switch.c) sbepe u64 par = ║read_sysreg_par(); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x36fc 0x3710 (DW_OP_breg31 0x50) lexblock:lexblock:hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:253 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036fc: d5387408 mrs x8, par_el1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003700: f9002be8 str x8, [sp, #80] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003704: f9402be8 ldr x8, [sp, #80] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003708: f90027e8 str x8, [sp, #72] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000370c: f94027e8 ldr x8, [sp, #72] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x36fc 0x3710 (DW_OP_breg31 0x50) lexblock:lexblock:hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:253 ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:253.12 (switch.c) sbepe u64 par = ║read_sysreg_par(); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003710: f9002fe8 str x8, [sp, #88] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003714: d503201f nop ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003718: f9402fe8 ldr x8, [sp, #88] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000371c: f90023e8 str x8, [sp, #64] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003720: f94023e8 ldr x8, [sp, #64] -par var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x36f8 0x3724 (DW_OP_breg31 0x58) lexblock:hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:253 ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:253.6 (switch.c) sbepe u64 ║par = read_sysreg_par(); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003724: f90033e8 str x8, [sp, #96] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003728: 52800029 mov w9, #0x1 // #1 ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:254.7 (switch.c) Sbepe bool ║restore_host = true; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000372c: 3900f3e9 strb w9, [sp, #60] ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:258.15 (switch.c) Sbepe host_ctxt = &║this_cpu_ptr(&kvm_host_data)->host_ctxt; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00003730: 14000001 b 3734 <hyp_panic+0x7c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>00003734: aa1f03e8 mov x8, xzr <- 00003730(b)<hyp_panic+0x7c> ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:258.15 (switch.c) sbepe host_ctxt = &║this_cpu_ptr(&kvm_host_data)->host_ctxt; +__vpp_verify var pointer(const(no type)) 0x3738 0x3740 (DW_OP_breg31 0x20) lexblock:hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:258 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003738: f90013e8 str x8, [sp, #32] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─0000373c: 14000001 b 3740 <hyp_panic+0x88> -__vpp_verify var pointer(const(no type)) 0x3738 0x3740 (DW_OP_breg31 0x20) lexblock:hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:258 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ hyp_panic:258.15 (switch.c) sbepe host_ctxt = &║this_cpu_ptr(&kvm_host_data)->host_ctxt; +__ptr var long unsigned int (base type, DW_ATE_unsigned size:8) 0x3740 0x3768 (DW_OP_breg31 0x10) lexblock:hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:258 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>00003740: d00000a8 adrp x8, 19000 <kvm_host_data> <- 0000373c(b)<hyp_panic+0x88> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003744: 91000108 add x8, x8, #0x0 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003748: f9000be8 str x8, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000374c: f9400be8 ldr x8, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003750: f90003e8 str x8, [sp] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003754: 97fffc22 bl 27dc <__hyp_my_cpu_offset> ║ ║ ║ ║ ║ ║ ║ ║ ║ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003758: f94003e8 ldr x8, [sp] <- 00003754(bl-succ)<return> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000375c: 8b000108 add x8, x8, x0 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003760: f90007e8 str x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003764: f94007e8 ldr x8, [sp, #8] -__ptr var long unsigned int (base type, DW_ATE_unsigned size:8) 0x3740 0x3768 (DW_OP_breg31 0x10) lexblock:hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:258 ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:258.15 (switch.c) sbepe host_ctxt = &║this_cpu_ptr(&kvm_host_data)->host_ctxt; +__vpp_verify var pointer(const(no type)) 0x3768 0x376c (DW_OP_breg31 0x20) lexblock:hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:258 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003768: f9000fe8 str x8, [sp, #24] -__vpp_verify var pointer(const(no type)) 0x3768 0x376c (DW_OP_breg31 0x20) lexblock:hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:258 ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:258.15 (switch.c) sbepe host_ctxt = &║this_cpu_ptr(&kvm_host_data)->host_ctxt; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000376c: f9400fe8 ldr x8, [sp, #24] ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:258.12 (switch.c) sbepe host_ctxt ║= &this_cpu_ptr(&kvm_host_data)->host_ctxt; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003770: f9001be8 str x8, [sp, #48] ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:259.9 (switch.c) Sbepe vcpu = ║host_ctxt->__hyp_running_vcpu; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003774: f9401be8 ldr x8, [sp, #48] ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:259.20 (switch.c) sbepe vcpu = host_ctxt->║__hyp_running_vcpu; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003778: f9437d08 ldr x8, [x8, #1784] ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:259.7 (switch.c) sbepe vcpu ║= host_ctxt->__hyp_running_vcpu; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000377c: f90017e8 str x8, [sp, #40] ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:261.6 (switch.c) Sbepe if (║vcpu) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003780: f94017e8 ldr x8, [sp, #40] ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:261.6 (switch.c) sbepe if (║vcpu) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌──────00003784: b4000d68 cbz x8, 3930 <hyp_panic+0x278> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00003788: 14000001 b 378c <hyp_panic+0xd4> <- 00003784(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ hyp_panic:262.25 (switch.c) Sbepe __timer_disable_traps(║vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>0000378c: f94017e0 ldr x0, [sp, #40] <- 00003788(b)<hyp_panic+0xd4> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ hyp_panic:262.3 (switch.c) sbepe ║__timer_disable_traps(vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003790: 97fff226 bl 28 <__timer_disable_traps> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ hyp_panic:263.22 (switch.c) Sbepe __deactivate_traps(║vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003794: f94017e0 ldr x0, [sp, #40] <- 00003790(bl-succ)<return> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ hyp_panic:263.3 (switch.c) sbepe ║__deactivate_traps(vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003798: 97fffefe bl 3390 <__deactivate_traps> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ n: 0x379c 0x3924 __load_host_stage2 inlined from hyp_panic:264 (switch.c) <3cc17>: n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __load_host_stage2:28.6 (mem_protect.h) Sbepe if (║static_branch_likely(&kvm_protected_mode_initialized)) +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x379c 0x37c4 (DW_OP_fbreg -0x84) lexblock:__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 0000379c: 900000c8 adrp x8, 1b000 <hyp_memory+0x460> <- 00003798(bl-succ)<return> ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000037a0: b9484109 ldr w9, [x8, #2112] ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000037a4: 71000129 subs w9, w9, #0x0 ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000037a8: 1a9f07ea cset w10, ne // ne = any ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000037ac: 3817c3aa sturb w10, [x29, #-132] n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized)) ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000037b0: 3857c3aa ldurb w10, [x29, #-132] ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000037b4: 2a0a03e8 mov w8, w10 ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000037b8: 92400108 and x8, x8, #0x1 n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized)) ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000037bc: f81703a8 stur x8, [x29, #-144] n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized)) ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000037c0: f85703a8 ldur x8, [x29, #-144] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x379c 0x37c4 (DW_OP_fbreg -0x84) lexblock:__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized)) ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │┌─────000037c4: b4000a68 cbz x8, 3910 <hyp_panic+0x258> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ┌─000037c8: 14000001 b 37cc <hyp_panic+0x114> <- 000037c4(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ n ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ __load_host_stage2:29.51 (mem_protect.h) Sbepe __load_stage2(&host_kvm.arch.mmu, host_kvm.arch.║vtcr); ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ └>000037cc: 900000c8 adrp x8, 1b000 <hyp_memory+0x460> <- 000037c8(b)<hyp_panic+0x114> ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000037d0: 910ec108 add x8, x8, #0x3b0 ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000037d4: f9401909 ldr x9, [x8, #48] ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000037d8: f81983a8 stur x8, [x29, #-104] ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000037dc: f81903a9 stur x9, [x29, #-112] o: 0x37e0 0x390c __load_stage2 inlined from __load_host_stage2:29 (mem_protect.h) <3cc43>:<3cc17>: no ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __load_stage2:350.2 (kvm_mmu.h) Sbepe ║write_sysreg(vtcr, vtcr_el2); +mmu param pointer(struct kvm_s2_mmu<2d002>/<3997d>) 0x37e0 0x390c (DW_OP_fbreg -0x68) __load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c +vtcr param long unsigned int (base type, DW_ATE_unsigned size:8) 0x37e0 0x390c (DW_OP_fbreg -0x70) __load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x37e0 0x37f0 (DW_OP_fbreg -0x78) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c ~no ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000037e0: f85903a8 ldur x8, [x29, #-112] ~no ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000037e4: f81883a8 stur x8, [x29, #-120] ~no ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000037e8: f85883a8 ldur x8, [x29, #-120] ~no ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000037ec: d51c2148 msr vtcr_el2, x8 -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x37e0 0x37f0 (DW_OP_fbreg -0x78) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c no ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __load_stage2:351.2 (kvm_mmu.h) Sbepe ║write_sysreg(kvm_get_vttbr(mmu), vttbr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x37f0 0x3908 (DW_OP_fbreg -0x80) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c ~no ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000037f0: f85983a8 ldur x8, [x29, #-104] ~no ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000037f4: f81c03a8 stur x8, [x29, #-64] p: 0x37f8 0x38fc kvm_get_vttbr inlined from __load_stage2:351 (kvm_mmu.h) <3cc96>:<lexical_block>:<3cc43>:<3cc17>: nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:335.27 (kvm_mmu.h) Sbepe struct kvm_vmid *vmid = &║mmu->vmid; +mmu param pointer(struct kvm_s2_mmu<2d002>/<3997d>) 0x37f8 0x38fc (DW_OP_fbreg -0x40) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c +vmid var pointer(struct kvm_vmid<2d002>/<399c2>) 0x37f8 0x38fc (DW_OP_fbreg -0x48) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c +vmid_field var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x37f8 0x38fc (DW_OP_fbreg -0x50) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c +baddr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x37f8 0x38fc (DW_OP_fbreg -0x58) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c +cnp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x37f8 0x38fc (DW_OP_fbreg -0x60) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000037f8: f85c03a8 ldur x8, [x29, #-64] nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:335.19 (kvm_mmu.h) sbepe struct kvm_vmid *║vmid = &mmu->vmid; ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000037fc: f81b83a8 stur x8, [x29, #-72] ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003800: 528001ea mov w10, #0xf // #15 ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003804: b81c83aa stur w10, [x29, #-56] q: 0x3808 0x38c4 cpus_have_const_cap inlined from system_supports_cnp:694 (cpufeature.h) <3ccec>:<3ccd7>:<3cc96>:<lexical_block>:<3cc43>:<3cc17>: r: 0x3808 0x38c4 system_supports_cnp inlined from kvm_get_vttbr:337 (kvm_mmu.h) <3ccd7>:<3cc96>:<lexical_block>:<3cc43>:<3cc17>: nopqr ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ cpus_have_const_cap:479.30 (cpufeature.h) Sbepe return cpus_have_final_cap(║num); +num param int (base type, DW_ATE_signed size:4) 0x3808 0x38c4 (DW_OP_fbreg -0x38) cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c ~nopqr ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003808: b85c83aa ldur w10, [x29, #-56] ~nopqr ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 0000380c: b81d03aa stur w10, [x29, #-48] s: 0x3810 0x38b8 cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <3cd09>:<3ccec>:<3ccd7>:<3cc96>:<lexical_block>:<3cc43>:<3cc17>: t: 0x3810 0x3838 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <3cd26>:<3cd09>:<3ccec>:<3ccd7>:<3cc96>:<lexical_block>:<3cc43>:<3cc17>: nopqrst ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready); +num param int (base type, DW_ATE_signed size:4) 0x3810 0x38b8 (DW_OP_fbreg -0x30) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3810 0x3838 (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c ~nopqrst ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003810: 900000c8 adrp x8, 1b000 <hyp_memory+0x460> ~nopqrst ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003814: b947990a ldr w10, [x8, #1944] ~nopqrst ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003818: 7100014a subs w10, w10, #0x0 ~nopqrst ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 0000381c: 1a9f07eb cset w11, ne // ne = any ~nopqrst ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003820: 381e43ab sturb w11, [x29, #-28] nopqrst ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~nopqrst ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003824: 385e43ab ldurb w11, [x29, #-28] ~nopqrst ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003828: 2a0b03e8 mov w8, w11 ~nopqrst ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 0000382c: 92400108 and x8, x8, #0x1 nopqrst ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~nopqrst ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003830: f81d83a8 stur x8, [x29, #-40] nopqrst ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~nopqrst ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003834: f85d83a8 ldur x8, [x29, #-40] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3810 0x3838 (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c nopqrs ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~nopqrs ║ ║ ║ ║ ║ ║ ║ ║ ║ ││┌────00003838: b4000388 cbz x8, 38a8 <hyp_panic+0x1f0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ ~nopqrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ ┌─0000383c: 14000001 b 3840 <hyp_panic+0x188> <- 00003838(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ │ nopqrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~nopqrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ └>00003840: b85d03a8 ldur w8, [x29, #-48] <- 0000383c(b)<hyp_panic+0x188> ~nopqrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ 00003844: b81f83a8 stur w8, [x29, #-8] u: 0x3848 0x38a8 (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3cd52>:<3cd09>:<3ccec>:<3ccd7>:<3cc96>:<lexical_block>:<3cc43>:<3cc17>: nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x3848 0x38a8 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ 00003848: b85f83a8 ldur w8, [x29, #-8] nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ 0000384c: 7100f508 subs w8, w8, #0x3d ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ ┌──00003850: 540000ab b.lt 3864 <hyp_panic+0x1ac> // b.tstop ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ │ ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ │┌─00003854: 14000001 b 3858 <hyp_panic+0x1a0> <- 00003850(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ ││ ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ │└>00003858: 2a1f03e8 mov w8, wzr <- 00003854(b)<hyp_panic+0x1a0> nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ │ 0000385c: 381ff3a8 sturb w8, [x29, #-1] ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │││┌┼──00003860: 14000013 b 38ac <hyp_panic+0x1f4> ║ ║ ║ ║ ║ ║ ║ ║ ║ │││││ nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │││││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3864 0x3898 (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││└─>00003864: b89f83a8 ldursw x8, [x29, #-8] <- 00003850(b.cc)<hyp_panic+0x1ac> ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 00003868: d37ced08 lsl x8, x8, #4 ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 0000386c: 900000c9 adrp x9, 1b000 <hyp_memory+0x460> ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 00003870: 911e8129 add x9, x9, #0x7a0 ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 00003874: b868692a ldr w10, [x9, x8] ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 00003878: 7100014a subs w10, w10, #0x0 ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 0000387c: 1a9f07eb cset w11, ne // ne = any ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 00003880: 381f43ab sturb w11, [x29, #-12] nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 00003884: 385f43ab ldurb w11, [x29, #-12] ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 00003888: 2a0b03e8 mov w8, w11 ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 0000388c: 92400108 and x8, x8, #0x1 nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 00003890: f81e83a8 stur x8, [x29, #-24] nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 00003894: f85e83a8 ldur x8, [x29, #-24] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3864 0x3898 (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 00003898: f1000108 subs x8, x8, #0x0 ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 0000389c: 1a9f07eb cset w11, ne // ne = any nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ 000038a0: 381ff3ab sturb w11, [x29, #-1] ~nopqrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ ┌─000038a4: 14000002 b 38ac <hyp_panic+0x1f4> -num param int (base type, DW_ATE_signed size:4) 0x3848 0x38a8 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ │ nopqrs ║ ║ ║ ║ ║ ║ ║ ║ ║ ││││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~nopqrs ║ ║ ║ ║ ║ ║ ║ ║ ║ ││└┼─┼>000038a8: d4210000 brk #0x800 <- 00003838(b.cc)<hyp_panic+0x1f0> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ │ v: 0x38ac 0x38b0 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3cd52>:<3cd09>:<3ccec>:<3ccd7>:<3cc96>:<lexical_block>:<3cc43>:<3cc17>: nopqrsv ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x38ac 0x38b0 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c ~nopqrsv ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ └>└>000038ac: 385ff3a8 ldurb w8, [x29, #-1] <- 00003860(b)<hyp_panic+0x1f4>,000038a4(b)<hyp_panic+0x1f4> -num param int (base type, DW_ATE_signed size:4) 0x38ac 0x38b0 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c nopqrs ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~nopqrs ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038b0: 381d73a8 sturb w8, [x29, #-41] nopqrs ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~nopqrs ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038b4: 385d73a8 ldurb w8, [x29, #-41] -num param int (base type, DW_ATE_signed size:4) 0x3810 0x38b8 (DW_OP_fbreg -0x30) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c nopqr ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num); ~nopqr ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038b8: 381cf3a8 sturb w8, [x29, #-49] nopqr ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║} ~nopqr ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038bc: 385cf3a8 ldurb w8, [x29, #-49] ~nopqr ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038c0: 2a0803e9 mov w9, w8 -num param int (base type, DW_ATE_signed size:4) 0x3808 0x38c4 (DW_OP_fbreg -0x38) cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:337.6 (kvm_mmu.h) Sbepe u64 ║cnp = system_supports_cnp() ? VTTBR_CNP_BIT : 0; ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038c4: f81a03a9 stur x9, [x29, #-96] nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:339.10 (kvm_mmu.h) Sbepe baddr = ║mmu->pgd_phys; ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038c8: f85c03a9 ldur x9, [x29, #-64] nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:339.15 (kvm_mmu.h) sbepe baddr = mmu->║pgd_phys; ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038cc: f9400929 ldr x9, [x9, #16] nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:339.8 (kvm_mmu.h) sbepe baddr ║= mmu->pgd_phys; ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038d0: f81a83a9 stur x9, [x29, #-88] nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:340.20 (kvm_mmu.h) Sbepe vmid_field = (u64)║vmid->vmid << VTTBR_VMID_SHIFT; ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038d4: f85b83a9 ldur x9, [x29, #-72] nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:340.15 (kvm_mmu.h) sbepe vmid_field = ║(u64)vmid->vmid << VTTBR_VMID_SHIFT; ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038d8: b9400928 ldr w8, [x9, #8] ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038dc: 2a0803e9 mov w9, w8 nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:340.31 (kvm_mmu.h) sbepe vmid_field = (u64)vmid->vmid ║<< VTTBR_VMID_SHIFT; ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038e0: d3503d29 lsl x9, x9, #48 nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:340.13 (kvm_mmu.h) sbepe vmid_field ║= (u64)vmid->vmid << VTTBR_VMID_SHIFT; ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038e4: f81b03a9 stur x9, [x29, #-80] nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:341.9 (kvm_mmu.h) Sbepe return ║kvm_phys_to_vttbr(baddr) | vmid_field | cnp; ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038e8: f85a83a9 ldur x9, [x29, #-88] nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:341.36 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | ║vmid_field | cnp; ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038ec: f85b03aa ldur x10, [x29, #-80] nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:341.34 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) ║| vmid_field | cnp; ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038f0: aa0a0129 orr x9, x9, x10 nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:341.49 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | vmid_field | ║cnp; ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038f4: f85a03aa ldur x10, [x29, #-96] nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_get_vttbr:341.47 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | vmid_field ║| cnp; ~nop ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038f8: aa0a0129 orr x9, x9, x10 -mmu param pointer(struct kvm_s2_mmu<2d002>/<3997d>) 0x37f8 0x38fc (DW_OP_fbreg -0x40) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c -vmid var pointer(struct kvm_vmid<2d002>/<399c2>) 0x37f8 0x38fc (DW_OP_fbreg -0x48) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c -vmid_field var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x37f8 0x38fc (DW_OP_fbreg -0x50) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c -baddr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x37f8 0x38fc (DW_OP_fbreg -0x58) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c -cnp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x37f8 0x38fc (DW_OP_fbreg -0x60) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c no ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __load_stage2:351.2 (kvm_mmu.h) Sbepe ║write_sysreg(kvm_get_vttbr(mmu), vttbr_el2); ~no ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 000038fc: f81803a9 stur x9, [x29, #-128] ~no ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003900: f85803a9 ldur x9, [x29, #-128] ~no ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003904: d51c2109 msr vttbr_el2, x9 -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x37f0 0x3908 (DW_OP_fbreg -0x80) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c no ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __load_stage2:358.2 (kvm_mmu.h) Sbepe ║asm(ALTERNATIVE("nop", "isb", ARM64_WORKAROUND_SPECULATIVE_AT)); ~no ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003908: d503201f nop -mmu param pointer(struct kvm_s2_mmu<2d002>/<3997d>) 0x37e0 0x390c (DW_OP_fbreg -0x68) __load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c -vtcr param long unsigned int (base type, DW_ATE_unsigned size:8) 0x37e0 0x390c (DW_OP_fbreg -0x70) __load_stage2(inlined):__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c n ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __load_host_stage2:29.3 (mem_protect.h) Sbepe ║__load_stage2(&host_kvm.arch.mmu, host_kvm.arch.vtcr); ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ┌───0000390c: 14000006 b 3924 <hyp_panic+0x26c> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │└─┼──>00003910: aa1f03e8 mov x8, xzr <- 000037c4(b.cc)<hyp_panic+0x258> n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __load_host_stage2:31.3 (mem_protect.h) Sbepe ║write_sysreg(0, vttbr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3914 0x3924 (DW_OP_breg31 0x98) lexblock:__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003914: f9004fe8 str x8, [sp, #152] ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003918: f9404fe8 ldr x8, [sp, #152] ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 0000391c: d51c2108 msr vttbr_el2, x8 ~n ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─00003920: 14000001 b 3924 <hyp_panic+0x26c> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3914 0x3924 (DW_OP_breg31 0x98) lexblock:__load_host_stage2(inlined):hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ hyp_panic:265.31 (switch.c) Sbepe __sysreg_restore_state_nvhe(║host_ctxt); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>└>00003924: f9401be0 ldr x0, [sp, #48] <- 0000390c(b)<hyp_panic+0x26c>,00003920(b)<hyp_panic+0x26c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ hyp_panic:265.3 (switch.c) sbepe ║__sysreg_restore_state_nvhe(host_ctxt); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003928: 97fff2f6 bl 500 <__sysreg_restore_state_nvhe> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ hyp_panic:266.2 (switch.c) Sbepe } ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─0000392c: 14000001 b 3930 <hyp_panic+0x278> <- 00003928(bl-succ)<return> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ hyp_panic:268.31 (switch.c) Sbepe __hyp_do_panic(restore_host, ║spsr, elr, par); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └───>└>00003930: f9404be1 ldr x1, [sp, #144] <- 00003784(b.cc)<hyp_panic+0x278>,0000392c(b)<hyp_panic+0x278> ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:268.37 (switch.c) sbepe __hyp_do_panic(restore_host, spsr, ║elr, par); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003934: f9403fe2 ldr x2, [sp, #120] ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:268.42 (switch.c) sbepe __hyp_do_panic(restore_host, spsr, elr, ║par); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003938: f94033e3 ldr x3, [sp, #96] ║ ║ ║ ║ ║ ║ ║ ║ ║ hyp_panic:268.2 (switch.c) sbepe ║__hyp_do_panic(restore_host, spsr, elr, par); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000393c: 3940f3e8 ldrb w8, [sp, #60] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003940: 12000100 and w0, w8, #0x1 ║ ║ ║ ║ ║ ║ ║ ║ ║ 000036c8 CFA:r29+32 r28:c-16 r29:c-32 r30:c-24 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003944: 940009dc bl 60b4 <__hyp_do_panic> -spsr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x36b8 0x3948 (DW_OP_breg31 0x90) hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:251 -elr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x36b8 0x3948 (DW_OP_breg31 0x78) hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:252 -par var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x36b8 0x3948 (DW_OP_breg31 0x60) hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:253 -restore_host var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x36b8 0x3948 (DW_OP_breg31 0x3c) hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:254 -host_ctxt var pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x36b8 0x3948 (DW_OP_breg31 0x30) hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:255 -vcpu var pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x36b8 0x3948 (DW_OP_breg31 0x28) hyp_panic:arch/arm64/kvm/hyp/nvhe/switch.c:256 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00003948 <kvm_unexpected_el2_exception>: + kvm_unexpected_el2_exception params: none ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_unexpected_el2_exception:273.0 (switch.c) Sbepe ║{ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003948: a9bf7bfd stp x29, x30, [sp, #-16]! <- 00003944(bl-succ)<return>,000100c8(bl)<kvm_unexpected_el2_exception>,0001013c(bl)<kvm_unexpected_el2_exception> ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003948 CFA:r31 r29:u r30:u ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000394c: 910003fd mov x29, sp ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_unexpected_el2_exception:274.9 (switch.c) SbePe return ║__kvm_unexpected_el2_exception(); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003950: 94000003 bl 395c <__kvm_unexpected_el2_exception> ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_unexpected_el2_exception:274.2 (switch.c) sbepe ║return __kvm_unexpected_el2_exception(); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003954: a8c17bfd ldp x29, x30, [sp], #16 <- 00003950(bl-succ)<return> ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003950 CFA:r29+16 r29:c-16 r30:c-8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003958: d65f03c0 ret ║ ║ ║ ║ ║ ║ ║ ║ ║ **0000395c <__kvm_unexpected_el2_exception>: + __kvm_unexpected_el2_exception params: none ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_unexpected_el2_exception:510.0 (switch.h) Sbepe ║{ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000395c CFA:r31 +addr var long unsigned int (base type, DW_ATE_unsigned size:8) 0x395c 0x3a4c (DW_OP_fbreg 0x68) __kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:512 +fixup var long unsigned int (base type, DW_ATE_unsigned size:8) 0x395c 0x3a4c (DW_OP_fbreg 0x60) __kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:512 +entry var pointer(struct exception_table_entry<2d002>/<37882>) 0x395c 0x3a4c (DW_OP_fbreg 0x58) __kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:513 +end var pointer(struct exception_table_entry<2d002>/<37882>) 0x395c 0x3a4c (DW_OP_fbreg 0x50) __kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:513 +elr_el2 var long unsigned int (base type, DW_ATE_unsigned size:8) 0x395c 0x3a4c (DW_OP_fbreg 0x48) __kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:514 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000395c: d101c3ff sub sp, sp, #0x70 <- 00003950(bl)<__kvm_unexpected_el2_exception> ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_unexpected_el2_exception:514.26 (switch.h) SbePe unsigned long elr_el2 = ║read_sysreg(elr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3960 0x3974 (DW_OP_fbreg 0x40) lexblock:__kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:514 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003960: d53c4028 mrs x8, elr_el2 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003964: f90023e8 str x8, [sp, #64] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003968: f94023e8 ldr x8, [sp, #64] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000396c: f9001fe8 str x8, [sp, #56] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003970: f9401fe8 ldr x8, [sp, #56] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3960 0x3974 (DW_OP_fbreg 0x40) lexblock:__kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:514 ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_unexpected_el2_exception:514.16 (switch.h) sbepe unsigned long ║elr_el2 = read_sysreg(elr_el2); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003974: f90027e8 str x8, [sp, #72] ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_unexpected_el2_exception:516.10 (switch.h) Sbepe entry = ║hyp_symbol_addr(__start___kvm_ex_table); +addr var pointer(struct exception_table_entry<2d002>/<37882>) 0x3978 0x3990 (DW_OP_fbreg 0x30) lexblock:__kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:516 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003978: 900000c8 adrp x8, 1b000 <hyp_memory+0x460> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000397c: 911f0108 add x8, x8, #0x7c0 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003980: f9001be8 str x8, [sp, #48] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003984: f9401be8 ldr x8, [sp, #48] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003988: f90017e8 str x8, [sp, #40] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000398c: f94017e8 ldr x8, [sp, #40] -addr var pointer(struct exception_table_entry<2d002>/<37882>) 0x3978 0x3990 (DW_OP_fbreg 0x30) lexblock:__kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:516 ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_unexpected_el2_exception:516.8 (switch.h) sbepe entry ║= hyp_symbol_addr(__start___kvm_ex_table); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003990: f9002fe8 str x8, [sp, #88] ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_unexpected_el2_exception:517.8 (switch.h) Sbepe end = ║hyp_symbol_addr(__stop___kvm_ex_table); +addr var pointer(struct exception_table_entry<2d002>/<37882>) 0x3994 0x39ac (DW_OP_fbreg 0x20) lexblock:__kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:517 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003994: 900000c8 adrp x8, 1b000 <hyp_memory+0x460> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003998: 911f2108 add x8, x8, #0x7c8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000399c: f90013e8 str x8, [sp, #32] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000039a0: f94013e8 ldr x8, [sp, #32] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000039a4: f9000fe8 str x8, [sp, #24] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000039a8: f9400fe8 ldr x8, [sp, #24] -addr var pointer(struct exception_table_entry<2d002>/<37882>) 0x3994 0x39ac (DW_OP_fbreg 0x20) lexblock:__kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:517 ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_unexpected_el2_exception:517.6 (switch.h) sbepe end ║= hyp_symbol_addr(__stop___kvm_ex_table); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000039ac: f9002be8 str x8, [sp, #80] ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_unexpected_el2_exception:519.2 (switch.h) Sbepe ║while (entry < end) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─000039b0: 14000001 b 39b4 <__kvm_unexpected_el2_exception+0x58> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __kvm_unexpected_el2_exception:519.9 (switch.h) sbepe while (║entry < end) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╔═>└>000039b4: f9402fe8 ldr x8, [sp, #88] <- 000039b0(b)<__kvm_unexpected_el2_exception+0x58>,v00003a08(b)<__kvm_unexpected_el2_exception+0x58> ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_unexpected_el2_exception:519.17 (switch.h) sbepe while (entry < ║end) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000039b8: f9402be9 ldr x9, [sp, #80] ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_unexpected_el2_exception:519.2 (switch.h) sbepe ║while (entry < end) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000039bc: eb090108 subs x8, x8, x9 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌╫────000039c0: 54000342 b.cs 3a28 <__kvm_unexpected_el2_exception+0xcc> // b.hs, b.nlast ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ ┌─000039c4: 14000001 b 39c8 <__kvm_unexpected_el2_exception+0x6c> <- 000039c0(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ │ __kvm_unexpected_el2_exception:520.26 (switch.h) Sbepe addr = (unsigned long)&║entry->insn + entry->insn; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ └>000039c8: f9402fe8 ldr x8, [sp, #88] <- 000039c4(b)<__kvm_unexpected_el2_exception+0x6c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ __kvm_unexpected_el2_exception:520.47 (switch.h) sbepe addr = (unsigned long)&entry->insn + entry->║insn; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ 000039cc: b9800109 ldrsw x9, [x8] ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ __kvm_unexpected_el2_exception:520.38 (switch.h) sbepe addr = (unsigned long)&entry->insn ║+ entry->insn; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ 000039d0: 8b090108 add x8, x8, x9 ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ __kvm_unexpected_el2_exception:520.8 (switch.h) sbepe addr ║= (unsigned long)&entry->insn + entry->insn; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ 000039d4: f90037e8 str x8, [sp, #104] ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ __kvm_unexpected_el2_exception:521.27 (switch.h) Sbepe fixup = (unsigned long)&║entry->fixup + entry->fixup; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ 000039d8: f9402fe8 ldr x8, [sp, #88] ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ __kvm_unexpected_el2_exception:521.49 (switch.h) sbepe fixup = (unsigned long)&entry->fixup + entry->║fixup; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ 000039dc: b8804d09 ldrsw x9, [x8, #4]! ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ __kvm_unexpected_el2_exception:521.40 (switch.h) sbepe fixup = (unsigned long)&entry->fixup ║+ entry->fixup; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ 000039e0: 8b090108 add x8, x8, x9 ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ __kvm_unexpected_el2_exception:521.9 (switch.h) sbepe fixup ║= (unsigned long)&entry->fixup + entry->fixup; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ 000039e4: f90033e8 str x8, [sp, #96] ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ __kvm_unexpected_el2_exception:523.7 (switch.h) Sbepe if (║addr != elr_el2) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ 000039e8: f94037e8 ldr x8, [sp, #104] ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ __kvm_unexpected_el2_exception:523.15 (switch.h) sbepe if (addr != ║elr_el2) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ 000039ec: f94027e9 ldr x9, [sp, #72] ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ __kvm_unexpected_el2_exception:523.7 (switch.h) sbepe if (║addr != elr_el2) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║ 000039f0: eb090108 subs x8, x8, x9 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║┌───000039f4: 540000c0 b.eq 3a0c <__kvm_unexpected_el2_exception+0xb0> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║ │║│ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║│ ┌─000039f8: 14000001 b 39fc <__kvm_unexpected_el2_exception+0xa0> <- 000039f4(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │║│ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║│ │ __kvm_unexpected_el2_exception:524.9 (switch.h) Sbepe entry║++; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║│ └>000039fc: f9402fe8 ldr x8, [sp, #88] <- 000039f8(b)<__kvm_unexpected_el2_exception+0xa0> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║│ 00003a00: 91002108 add x8, x8, #0x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │║│ 00003a04: f9002fe8 str x8, [sp, #88] ║ ║ ║ ║ ║ ║ ║ ║ ║ │║│ __kvm_unexpected_el2_exception:525.4 (switch.h) Sbepe ║continue; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │╚╪═══00003a08: 17ffffeb b 39b4 <__kvm_unexpected_el2_exception+0x58> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __kvm_unexpected_el2_exception:528.3 (switch.h) Sbepe ║write_sysreg(fixup, elr_el2); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>┌─00003a0c: 14000001 b 3a10 <__kvm_unexpected_el2_exception+0xb4> <- 000039f4(b.cc)<__kvm_unexpected_el2_exception+0xb0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __kvm_unexpected_el2_exception:528.3 (switch.h) sbepe ║write_sysreg(fixup, elr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3a10 0x3a24 (DW_OP_fbreg 0x10) lexblock:__kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:528 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>00003a10: f94033e8 ldr x8, [sp, #96] <- 00003a0c(b)<__kvm_unexpected_el2_exception+0xb4> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003a14: f9000be8 str x8, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003a18: f9400be8 ldr x8, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003a1c: d51c4028 msr elr_el2, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00003a20: 14000001 b 3a24 <__kvm_unexpected_el2_exception+0xc8> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3a10 0x3a24 (DW_OP_fbreg 0x10) lexblock:__kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:528 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __kvm_unexpected_el2_exception:529.3 (switch.h) Sbepe ║return; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─└>00003a24: 14000008 b 3a44 <__kvm_unexpected_el2_exception+0xe8> <- 00003a20(b)<__kvm_unexpected_el2_exception+0xc8> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __kvm_unexpected_el2_exception:533.2 (switch.h) Sbepe ║write_sysreg(__guest_exit_panic, elr_el2); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └─┼>┌─00003a28: 14000001 b 3a2c <__kvm_unexpected_el2_exception+0xd0> <- 000039c0(b.cc)<__kvm_unexpected_el2_exception+0xcc> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __kvm_unexpected_el2_exception:533.2 (switch.h) sbepe ║write_sysreg(__guest_exit_panic, elr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3a2c 0x3a44 (DW_OP_fbreg 0x8) lexblock:__kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:533 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>00003a2c: 90000068 adrp x8, f000 <__vgic_v3_write_apxrn+0x24> <- 00003a28(b)<__kvm_unexpected_el2_exception+0xd0> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003a30: 9125c108 add x8, x8, #0x970 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003a34: f90007e8 str x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003a38: f94007e8 ldr x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003a3c: d51c4028 msr elr_el2, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00003a40: 14000001 b 3a44 <__kvm_unexpected_el2_exception+0xe8> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3a2c 0x3a44 (DW_OP_fbreg 0x8) lexblock:__kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:533 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __kvm_unexpected_el2_exception:534.1 (switch.h) Sbepe ║} ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└>00003a44: 9101c3ff add sp, sp, #0x70 <- 00003a24(b)<__kvm_unexpected_el2_exception+0xe8>,00003a40(b)<__kvm_unexpected_el2_exception+0xe8> ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003960 CFA:r31+112 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003a48: d65f03c0 ret -addr var long unsigned int (base type, DW_ATE_unsigned size:8) 0x395c 0x3a4c (DW_OP_fbreg 0x68) __kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:512 -fixup var long unsigned int (base type, DW_ATE_unsigned size:8) 0x395c 0x3a4c (DW_OP_fbreg 0x60) __kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:512 -entry var pointer(struct exception_table_entry<2d002>/<37882>) 0x395c 0x3a4c (DW_OP_fbreg 0x58) __kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:513 -end var pointer(struct exception_table_entry<2d002>/<37882>) 0x395c 0x3a4c (DW_OP_fbreg 0x50) __kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:513 -elr_el2 var long unsigned int (base type, DW_ATE_unsigned size:8) 0x395c 0x3a4c (DW_OP_fbreg 0x48) __kvm_unexpected_el2_exception:arch/arm64/kvm/hyp/nvhe/switch.c:514 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00003a4c <kvm_skip_instr>: ║ ║ ║ ║ ║ ║ + kvm_skip_instr params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3a4c 0x3ae0 (DW_OP_breg31 0x0) ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_skip_instr:19.0 (adjust_pc.h) Sbepe ║{ +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3a4c 0x3ae0 (DW_OP_breg31 0x0) kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c:18 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003a4c: d10103ff sub sp, sp, #0x40 <- 00002928(bl)<kvm_skip_instr>,00004a34(bl)<kvm_skip_instr> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003a50: a9037bfd stp x29, x30, [sp, #48] ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003a4c CFA:r31 r29:u r30:u ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003a54: 9100c3fd add x29, sp, #0x30 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003a58: f90003e0 str x0, [sp] ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_skip_instr:20.25 (adjust_pc.h) SbePe if (vcpu_mode_is_32bit(║vcpu)) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003a5c: f94003e8 ldr x8, [sp] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003a60: f90007e8 str x8, [sp, #8] w: 0x3a64 0x3a70 vcpu_mode_is_32bit inlined from kvm_skip_instr:20 (adjust_pc.h) <3cf17>: w ║ ║ ║ ║ ║ ║ ║ ║ ║ vcpu_mode_is_32bit:142.23 (kvm_emulate.h) Sbepe return !!(*vcpu_cpsr(║vcpu) & PSR_MODE32_BIT); +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3a64 0x3a70 (DW_OP_breg31 0x8) vcpu_mode_is_32bit(inlined):kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c ~w ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003a64: f94007e8 ldr x8, [sp, #8] ~w ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003a68: f9000be8 str x8, [sp, #16] x: 0x3a6c 0x3a70 vcpu_cpsr inlined from vcpu_mode_is_32bit:142 (kvm_emulate.h) <3cf33>:<3cf17>: wx ║ ║ ║ ║ ║ ║ ║ ║ ║ vcpu_cpsr:137.27 (kvm_emulate.h) Sbepe return (unsigned long *)&║vcpu_gp_regs(vcpu)->pstate; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3a6c 0x3a70 (DW_OP_breg31 0x10) vcpu_cpsr(inlined):vcpu_mode_is_32bit(inlined):kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c ~wx ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003a6c: f9400be8 ldr x8, [sp, #16] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3a64 0x3a70 (DW_OP_breg31 0x8) vcpu_mode_is_32bit(inlined):kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3a6c 0x3a70 (DW_OP_breg31 0x10) vcpu_cpsr(inlined):vcpu_mode_is_32bit(inlined):kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_skip_instr:20.6 (adjust_pc.h) Sbepe if (║vcpu_mode_is_32bit(vcpu)) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003a70: 3949a109 ldrb w9, [x8, #616] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌──00003a74: 362000a9 tbz w9, #4, 3a88 <kvm_skip_instr+0x3c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │┌─00003a78: 14000001 b 3a7c <kvm_skip_instr+0x30> <- 00003a74(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_skip_instr:21.20 (adjust_pc.h) Sbepe kvm_skip_instr32(║vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │└>00003a7c: f94003e0 ldr x0, [sp] <- 00003a78(b)<kvm_skip_instr+0x30> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ kvm_skip_instr:21.3 (adjust_pc.h) sbepe ║kvm_skip_instr32(vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003a80: 94002dd8 bl f1e0 <kvm_skip_instr32> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ kvm_skip_instr:22.2 (adjust_pc.h) Sbepe ║} else { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌┼──00003a84: 1400000e b 3abc <kvm_skip_instr+0x70> <- 00003a80(bl-succ)<return> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ kvm_skip_instr:23.12 (adjust_pc.h) Sbepe *vcpu_pc(║vcpu) += 4; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │└─>00003a88: f94003e8 ldr x8, [sp] <- 00003a74(b.cc)<kvm_skip_instr+0x3c> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003a8c: f81f83a8 stur x8, [x29, #-8] y: 0x3a90 0x3a94 vcpu_pc inlined from kvm_skip_instr:23 (adjust_pc.h) <3cf51>: y ║ ║ ║ ║ ║ ║ ║ ║ ║ │ vcpu_pc:132.27 (kvm_emulate.h) Sbepe return (unsigned long *)&║vcpu_gp_regs(vcpu)->pc; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3a90 0x3a94 (DW_OP_fbreg -0x8) vcpu_pc(inlined):kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c ~y ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003a90: f85f83a8 ldur x8, [x29, #-8] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3a90 0x3a94 (DW_OP_fbreg -0x8) vcpu_pc(inlined):kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ kvm_skip_instr:23.18 (adjust_pc.h) Sbepe *vcpu_pc(vcpu) ║+= 4; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003a94: f9413109 ldr x9, [x8, #608] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003a98: 91001129 add x9, x9, #0x4 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003a9c: f9013109 str x9, [x8, #608] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ kvm_skip_instr:24.14 (adjust_pc.h) Sbepe *vcpu_cpsr(║vcpu) &= ~PSR_BTYPE_MASK; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003aa0: f94003e8 ldr x8, [sp] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003aa4: f81f03a8 stur x8, [x29, #-16] z: 0x3aa8 0x3aac vcpu_cpsr inlined from kvm_skip_instr:24 (adjust_pc.h) <3cf6e>: z ║ ║ ║ ║ ║ ║ ║ ║ ║ │ vcpu_cpsr:137.27 (kvm_emulate.h) Sbepe return (unsigned long *)&║vcpu_gp_regs(vcpu)->pstate; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3aa8 0x3aac (DW_OP_fbreg -0x10) vcpu_cpsr(inlined):kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c ~z ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003aa8: f85f03a8 ldur x8, [x29, #-16] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3aa8 0x3aac (DW_OP_fbreg -0x10) vcpu_cpsr(inlined):kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ kvm_skip_instr:24.20 (adjust_pc.h) Sbepe *vcpu_cpsr(vcpu) ║&= ~PSR_BTYPE_MASK; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003aac: f9413509 ldr x9, [x8, #616] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003ab0: 9274f529 and x9, x9, #0xfffffffffffff3ff ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003ab4: f9013509 str x9, [x8, #616] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00003ab8: 14000001 b 3abc <kvm_skip_instr+0x70> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ kvm_skip_instr:28.13 (adjust_pc.h) Sbepe *vcpu_cpsr(║vcpu) &= ~DBG_SPSR_SS; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└>00003abc: f94003e8 ldr x8, [sp] <- 00003a84(b)<kvm_skip_instr+0x70>,00003ab8(b)<kvm_skip_instr+0x70> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ac0: f9000fe8 str x8, [sp, #24] a: 0x3ac4 0x3ac8 vcpu_cpsr inlined from kvm_skip_instr:28 (adjust_pc.h) <3cf8b>: a ║ ║ ║ ║ ║ ║ ║ ║ ║ vcpu_cpsr:137.27 (kvm_emulate.h) Sbepe return (unsigned long *)&║vcpu_gp_regs(vcpu)->pstate; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3ac4 0x3ac8 (DW_OP_breg31 0x18) vcpu_cpsr(inlined):kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c ~a ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ac4: f9400fe8 ldr x8, [sp, #24] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x3ac4 0x3ac8 (DW_OP_breg31 0x18) vcpu_cpsr(inlined):kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_skip_instr:28.19 (adjust_pc.h) Sbepe *vcpu_cpsr(vcpu) ║&= ~DBG_SPSR_SS; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ac8: f9413509 ldr x9, [x8, #616] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003acc: 926af929 and x9, x9, #0xffffffffffdfffff ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ad0: f9013509 str x9, [x8, #616] ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_skip_instr:29.1 (adjust_pc.h) Sbepe ║} ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ad4: a9437bfd ldp x29, x30, [sp, #48] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ad8: 910103ff add sp, sp, #0x40 ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003a58 CFA:r29+16 r29:c-16 r30:c-8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003adc: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3a4c 0x3ae0 (DW_OP_breg31 0x0) kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c:18 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00003ae0 <cpus_have_cap>:║ ║ ║ ║ ║ ║ ║ + cpus_have_cap params: +num param unsigned int (base type, DW_ATE_unsigned size:4) 0x3ae0 0x3b3c (DW_OP_breg31 0x8) ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_cap:428.0 (cpufeature.h) Sbepe ║{ +num param unsigned int (base type, DW_ATE_unsigned size:4) 0x3ae0 0x3b3c (DW_OP_breg31 0x8) cpus_have_cap:arch/arm64/kvm/hyp/nvhe/switch.c:427 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ae0: d10083ff sub sp, sp, #0x20 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ae4: a9017bfd stp x29, x30, [sp, #16] ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ae0 CFA:r31 r29:u r30:u ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ae8: 910043fd add x29, sp, #0x10 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003aec: b9000be0 str w0, [sp, #8] ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_cap:429.6 (cpufeature.h) SbePe if (║num >= ARM64_NCAPS) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003af0: b9400be8 ldr w8, [sp, #8] ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_cap:429.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003af4: 7100f508 subs w8, w8, #0x3d ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌──00003af8: 540000a3 b.cc 3b0c <cpus_have_cap+0x2c> // b.lo, b.ul, b.last ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │┌─00003afc: 14000001 b 3b00 <cpus_have_cap+0x20> <- 00003af8(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │└>00003b00: 2a1f03e8 mov w8, wzr <- 00003afc(b)<cpus_have_cap+0x20> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ cpus_have_cap:430.3 (cpufeature.h) Sbepe ║return false; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003b04: 381ff3a8 sturb w8, [x29, #-1] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌┼──00003b08: 14000009 b 3b2c <cpus_have_cap+0x4c> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ cpus_have_cap:431.18 (cpufeature.h) Sbepe return test_bit(║num, cpu_hwcaps); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │└─>00003b0c: b9400be0 ldr w0, [sp, #8] <- 00003af8(b.cc)<cpus_have_cap+0x2c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ cpus_have_cap:431.9 (cpufeature.h) sbepe return ║test_bit(num, cpu_hwcaps); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003b10: 900000c1 adrp x1, 1b000 <hyp_memory+0x460> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003b14: 91218021 add x1, x1, #0x860 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003b18: 94000009 bl 3b3c <test_bit> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003b1c: 71000008 subs w8, w0, #0x0 <- 00003b18(bl-succ)<return> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003b20: 1a9f07e9 cset w9, ne // ne = any ║ ║ ║ ║ ║ ║ ║ ║ ║ │ cpus_have_cap:431.2 (cpufeature.h) sbepe ║return test_bit(num, cpu_hwcaps); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003b24: 381ff3a9 sturb w9, [x29, #-1] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00003b28: 14000001 b 3b2c <cpus_have_cap+0x4c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ cpus_have_cap:432.1 (cpufeature.h) Sbepe ║} ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└>00003b2c: 385ff3a0 ldurb w0, [x29, #-1] <- 00003b08(b)<cpus_have_cap+0x4c>,00003b28(b)<cpus_have_cap+0x4c> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b30: a9417bfd ldp x29, x30, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b34: 910083ff add sp, sp, #0x20 ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003aec CFA:r29+16 r29:c-16 r30:c-8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b38: d65f03c0 ret -num param unsigned int (base type, DW_ATE_unsigned size:4) 0x3ae0 0x3b3c (DW_OP_breg31 0x8) cpus_have_cap:arch/arm64/kvm/hyp/nvhe/switch.c:427 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00003b3c <test_bit>: ║ ║ ║ ║ ║ ║ ║ ║ + test_bit params: +nr param int (base type, DW_ATE_signed size:4) 0x3b3c 0x3b7c (DW_OP_fbreg 0xc) +addr param pointer(const(volatile(long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x3b3c 0x3b7c (DW_OP_fbreg 0x0) ║ ║ ║ ║ ║ ║ ║ ║ ║ test_bit:105.0 (non-atomic.h) Sbepe ║{ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b3c CFA:r31 +nr param int (base type, DW_ATE_signed size:4) 0x3b3c 0x3b7c (DW_OP_fbreg 0xc) test_bit:arch/arm64/kvm/hyp/nvhe/switch.c:104 +addr param pointer(const(volatile(long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x3b3c 0x3b7c (DW_OP_fbreg 0x0) test_bit:arch/arm64/kvm/hyp/nvhe/switch.c:104 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b3c: d10043ff sub sp, sp, #0x10 <- 00003b18(bl)<test_bit> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b40: b9000fe0 str w0, [sp, #12] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b44: f90003e1 str x1, [sp] ║ ║ ║ ║ ║ ║ ║ ║ ║ test_bit:106.16 (non-atomic.h) SbePe return 1UL & (║addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b48: f94003e8 ldr x8, [sp] ║ ║ ║ ║ ║ ║ ║ ║ ║ test_bit:106.21 (non-atomic.h) sbepe return 1UL & (addr[║BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b4c: b9400fe9 ldr w9, [sp, #12] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b50: 1100fd2a add w10, w9, #0x3f ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b54: 7100012b subs w11, w9, #0x0 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b58: 1a89b149 csel w9, w10, w9, lt // lt = tstop ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b5c: 13067d29 asr w9, w9, #6 ║ ║ ║ ║ ║ ║ ║ ║ ║ test_bit:106.16 (non-atomic.h) sbepe return 1UL & (║addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b60: f869d908 ldr x8, [x8, w9, sxtw #3] ║ ║ ║ ║ ║ ║ ║ ║ ║ test_bit:106.39 (non-atomic.h) sbepe return 1UL & (addr[BIT_WORD(nr)] >> (║nr & (BITS_PER_LONG-1))); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b64: b9400fe9 ldr w9, [sp, #12] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b68: 2a0903ec mov w12, w9 ║ ║ ║ ║ ║ ║ ║ ║ ║ test_bit:106.35 (non-atomic.h) sbepe return 1UL & (addr[BIT_WORD(nr)] ║>> (nr & (BITS_PER_LONG-1))); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b6c: 9acc2508 lsr x8, x8, x12 ║ ║ ║ ║ ║ ║ ║ ║ ║ test_bit:106.13 (non-atomic.h) sbepe return 1UL ║& (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b70: 12000100 and w0, w8, #0x1 ║ ║ ║ ║ ║ ║ ║ ║ ║ test_bit:106.2 (non-atomic.h) sbepe ║return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b74: 910043ff add sp, sp, #0x10 ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b40 CFA:r31+16 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b78: d65f03c0 ret -nr param int (base type, DW_ATE_signed size:4) 0x3b3c 0x3b7c (DW_OP_fbreg 0xc) test_bit:arch/arm64/kvm/hyp/nvhe/switch.c:104 -addr param pointer(const(volatile(long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x3b3c 0x3b7c (DW_OP_fbreg 0x0) test_bit:arch/arm64/kvm/hyp/nvhe/switch.c:104 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00003b7c <___activate_traps>:║ ║ ║ ║ ║ + ___activate_traps params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3b7c 0x3d64 (DW_OP_fbreg 0x18) ║ ║ ║ ║ ║ ║ ║ ║ ║ ___activate_traps:105.0 (switch.h) Sbepe ║{ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b7c CFA:r31 +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3b7c 0x3d64 (DW_OP_fbreg 0x18) ___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:104 +hcr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3b7c 0x3d64 (DW_OP_fbreg 0x10) ___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:106 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b7c: d10203ff sub sp, sp, #0x80 <- 00002a7c(bl)<___activate_traps> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b80: f9000fe0 str x0, [sp, #24] ║ ║ ║ ║ ║ ║ ║ ║ ║ ___activate_traps:106.12 (switch.h) SbePe u64 hcr = ║vcpu->arch.hcr_el2; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b84: f9400fe8 ldr x8, [sp, #24] ║ ║ ║ ║ ║ ║ ║ ║ ║ ___activate_traps:106.23 (switch.h) sbepe u64 hcr = vcpu->arch.║hcr_el2; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b88: f9443d08 ldr x8, [x8, #2168] ║ ║ ║ ║ ║ ║ ║ ║ ║ ___activate_traps:106.6 (switch.h) sbepe u64 ║hcr = vcpu->arch.hcr_el2; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b8c: f9000be8 str x8, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b90: 528005a9 mov w9, #0x2d // #45 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b94: b90023e9 str w9, [sp, #32] b: 0x3b98 0x3c40 cpus_have_final_cap inlined from ___activate_traps:108 (switch.h) <3d03a>: c: 0x3b98 0x3bc0 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <3d056>:<3d03a>: bc ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready); +num param int (base type, DW_ATE_signed size:4) 0x3b98 0x3c40 (DW_OP_fbreg 0x20) cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3b98 0x3bc0 (DW_OP_fbreg 0x34) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~bc ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b98: 900000c8 adrp x8, 1b000 <hyp_memory+0x460> ~bc ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b9c: b9479909 ldr w9, [x8, #1944] ~bc ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ba0: 71000129 subs w9, w9, #0x0 ~bc ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ba4: 1a9f07ea cset w10, ne // ne = any ~bc ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ba8: 3900d3ea strb w10, [sp, #52] bc ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~bc ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003bac: 3940d3ea ldrb w10, [sp, #52] ~bc ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003bb0: 2a0a03e8 mov w8, w10 ~bc ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003bb4: 92400108 and x8, x8, #0x1 bc ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~bc ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003bb8: f90017e8 str x8, [sp, #40] bc ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~bc ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003bbc: f94017e8 ldr x8, [sp, #40] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3b98 0x3bc0 (DW_OP_fbreg 0x34) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c b ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~b ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌────00003bc0: b4000388 cbz x8, 3c30 <___activate_traps+0xb4> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~b ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00003bc4: 14000001 b 3bc8 <___activate_traps+0x4c> <- 00003bc0(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ b ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~b ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>00003bc8: b94023e8 ldr w8, [sp, #32] <- 00003bc4(b)<___activate_traps+0x4c> ~b ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003bcc: b9004be8 str w8, [sp, #72] d: 0x3bd0 0x3c30 (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3d082>:<3d03a>: bd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x3bd0 0x3c30 (DW_OP_fbreg 0x48) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003bd0: b9404be8 ldr w8, [sp, #72] bd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003bd4: 7100f508 subs w8, w8, #0x3d ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌──00003bd8: 540000ab b.lt 3bec <___activate_traps+0x70> // b.tstop ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │┌─00003bdc: 14000001 b 3be0 <___activate_traps+0x64> <- 00003bd8(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │└>00003be0: 2a1f03e8 mov w8, wzr <- 00003bdc(b)<___activate_traps+0x64> bd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003be4: 39013fe8 strb w8, [sp, #79] ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ │┌┼──00003be8: 14000013 b 3c34 <___activate_traps+0xb8> ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ bd ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3bec 0x3c20 (DW_OP_fbreg 0x44) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││└─>00003bec: b9804be8 ldrsw x8, [sp, #72] <- 00003bd8(b.cc)<___activate_traps+0x70> ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003bf0: d37ced08 lsl x8, x8, #4 ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003bf4: 900000c9 adrp x9, 1b000 <hyp_memory+0x460> ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003bf8: 911e8129 add x9, x9, #0x7a0 ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003bfc: b868692a ldr w10, [x9, x8] ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003c00: 7100014a subs w10, w10, #0x0 ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003c04: 1a9f07eb cset w11, ne // ne = any ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003c08: 390113eb strb w11, [sp, #68] bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003c0c: 394113eb ldrb w11, [sp, #68] ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003c10: 2a0b03e8 mov w8, w11 ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003c14: 92400108 and x8, x8, #0x1 bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003c18: f9001fe8 str x8, [sp, #56] bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003c1c: f9401fe8 ldr x8, [sp, #56] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3bec 0x3c20 (DW_OP_fbreg 0x44) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003c20: f1000108 subs x8, x8, #0x0 ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003c24: 1a9f07eb cset w11, ne // ne = any bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003c28: 39013feb strb w11, [sp, #79] ~bd ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ┌─00003c2c: 14000002 b 3c34 <___activate_traps+0xb8> -num param int (base type, DW_ATE_signed size:4) 0x3bd0 0x3c30 (DW_OP_fbreg 0x48) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ b ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~b ║ ║ ║ ║ ║ ║ ║ ║ ║ └┼─┼>00003c30: d4210000 brk #0x800 <- 00003bc0(b.cc)<___activate_traps+0xb4> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ e: 0x3c34 0x3c38 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3d082>:<3d03a>: be ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x3c34 0x3c38 (DW_OP_fbreg 0x48) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~be ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└>00003c34: 39413fe8 ldrb w8, [sp, #79] <- 00003be8(b)<___activate_traps+0xb8>,00003c2c(b)<___activate_traps+0xb8> -num param int (base type, DW_ATE_signed size:4) 0x3c34 0x3c38 (DW_OP_fbreg 0x48) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c b ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~b ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c38: 39009fe8 strb w8, [sp, #39] b ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~b ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c3c: 39409fe8 ldrb w8, [sp, #39] -num param int (base type, DW_ATE_signed size:4) 0x3b98 0x3c40 (DW_OP_fbreg 0x20) cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ ___activate_traps:108.6 (switch.h) Sbepe if (║cpus_have_final_cap(ARM64_WORKAROUND_CAVIUM_TX2_219_TVM)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c40: 71000508 subs w8, w8, #0x1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─────00003c44: 540000c1 b.ne 3c5c <___activate_traps+0xe0> // b.any ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00003c48: 14000001 b 3c4c <___activate_traps+0xd0> <- 00003c44(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ___activate_traps:109.7 (switch.h) Sbepe hcr ║|= HCR_TVM; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>00003c4c: f9400be8 ldr x8, [sp, #16] <- 00003c48(b)<___activate_traps+0xd0> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003c50: b2660108 orr x8, x8, #0x4000000 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003c54: f9000be8 str x8, [sp, #16] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ___activate_traps:109.3 (switch.h) sbepe ║hcr |= HCR_TVM; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00003c58: 14000001 b 3c5c <___activate_traps+0xe0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ___activate_traps:111.2 (switch.h) Sbepe ║write_sysreg(hcr, hcr_el2); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>┌─└>00003c5c: 14000001 b 3c60 <___activate_traps+0xe4> <- 00003c44(b.cc)<___activate_traps+0xe0>,00003c58(b)<___activate_traps+0xe0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ___activate_traps:111.2 (switch.h) sbepe ║write_sysreg(hcr, hcr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3c60 0x3c74 (DW_OP_fbreg 0x8) lexblock:___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:111 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └──>00003c60: f9400be8 ldr x8, [sp, #16] <- 00003c5c(b)<___activate_traps+0xe4> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c64: f90007e8 str x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c68: f94007e8 ldr x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c6c: d51c1108 msr hcr_el2, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00003c70: 14000001 b 3c74 <___activate_traps+0xf8> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3c60 0x3c74 (DW_OP_fbreg 0x8) lexblock:___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:111 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>00003c74: 52800328 mov w8, #0x19 // #25 <- 00003c70(b)<___activate_traps+0xf8> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c78: b90053e8 str w8, [sp, #80] f: 0x3c7c 0x3d24 cpus_have_final_cap inlined from ___activate_traps:113 (switch.h) <3d0cd>: g: 0x3c7c 0x3ca4 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <3d0ea>:<3d0cd>: fg ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready); +num param int (base type, DW_ATE_signed size:4) 0x3c7c 0x3d24 (DW_OP_fbreg 0x50) cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3c7c 0x3ca4 (DW_OP_fbreg 0x64) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~fg ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c7c: 900000c9 adrp x9, 1b000 <hyp_memory+0x460> ~fg ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c80: b9479928 ldr w8, [x9, #1944] ~fg ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c84: 71000108 subs w8, w8, #0x0 ~fg ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c88: 1a9f07ea cset w10, ne // ne = any ~fg ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c8c: 390193ea strb w10, [sp, #100] fg ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~fg ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c90: 394193ea ldrb w10, [sp, #100] ~fg ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c94: 2a0a03e9 mov w9, w10 ~fg ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c98: 92400129 and x9, x9, #0x1 fg ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~fg ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003c9c: f9002fe9 str x9, [sp, #88] fg ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~fg ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ca0: f9402fe9 ldr x9, [sp, #88] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3c7c 0x3ca4 (DW_OP_fbreg 0x64) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c f ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~f ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌────00003ca4: b4000389 cbz x9, 3d14 <___activate_traps+0x198> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~f ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00003ca8: 14000001 b 3cac <___activate_traps+0x130> <- 00003ca4(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ f ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~f ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>00003cac: b94053e8 ldr w8, [sp, #80] <- 00003ca8(b)<___activate_traps+0x130> ~f ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003cb0: b9007be8 str w8, [sp, #120] h: 0x3cb4 0x3d14 (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3d117>:<3d0cd>: fh ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x3cb4 0x3d14 (DW_OP_fbreg 0x78) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003cb4: b9407be8 ldr w8, [sp, #120] fh ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003cb8: 7100f508 subs w8, w8, #0x3d ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌──00003cbc: 540000ab b.lt 3cd0 <___activate_traps+0x154> // b.tstop ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │┌─00003cc0: 14000001 b 3cc4 <___activate_traps+0x148> <- 00003cbc(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │└>00003cc4: 2a1f03e8 mov w8, wzr <- 00003cc0(b)<___activate_traps+0x148> fh ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003cc8: 3901ffe8 strb w8, [sp, #127] ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ │┌┼──00003ccc: 14000013 b 3d18 <___activate_traps+0x19c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ fh ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3cd0 0x3d04 (DW_OP_fbreg 0x74) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││└─>00003cd0: b9807be8 ldrsw x8, [sp, #120] <- 00003cbc(b.cc)<___activate_traps+0x154> ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003cd4: d37ced08 lsl x8, x8, #4 ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003cd8: 900000c9 adrp x9, 1b000 <hyp_memory+0x460> ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003cdc: 911e8129 add x9, x9, #0x7a0 ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003ce0: b868692a ldr w10, [x9, x8] ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003ce4: 7100014a subs w10, w10, #0x0 ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003ce8: 1a9f07eb cset w11, ne // ne = any ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003cec: 3901d3eb strb w11, [sp, #116] fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003cf0: 3941d3eb ldrb w11, [sp, #116] ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003cf4: 2a0b03e8 mov w8, w11 ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003cf8: 92400108 and x8, x8, #0x1 fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003cfc: f90037e8 str x8, [sp, #104] fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003d00: f94037e8 ldr x8, [sp, #104] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3cd0 0x3d04 (DW_OP_fbreg 0x74) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003d04: f1000108 subs x8, x8, #0x0 ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003d08: 1a9f07eb cset w11, ne // ne = any fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003d0c: 3901ffeb strb w11, [sp, #127] ~fh ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ┌─00003d10: 14000002 b 3d18 <___activate_traps+0x19c> -num param int (base type, DW_ATE_signed size:4) 0x3cb4 0x3d14 (DW_OP_fbreg 0x78) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ f ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~f ║ ║ ║ ║ ║ ║ ║ ║ ║ └┼─┼>00003d14: d4210000 brk #0x800 <- 00003ca4(b.cc)<___activate_traps+0x198> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ i: 0x3d18 0x3d1c (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3d117>:<3d0cd>: fi ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x3d18 0x3d1c (DW_OP_fbreg 0x78) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ~fi ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└>00003d18: 3941ffe8 ldrb w8, [sp, #127] <- 00003ccc(b)<___activate_traps+0x19c>,00003d10(b)<___activate_traps+0x19c> -num param int (base type, DW_ATE_signed size:4) 0x3d18 0x3d1c (DW_OP_fbreg 0x78) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c f ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~f ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d1c: 39015fe8 strb w8, [sp, #87] f ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~f ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d20: 39415fe8 ldrb w8, [sp, #87] -num param int (base type, DW_ATE_signed size:4) 0x3c7c 0x3d24 (DW_OP_fbreg 0x50) cpus_have_final_cap(inlined):___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ ___activate_traps:113.46 (switch.h) Sbepe if (cpus_have_final_cap(ARM64_HAS_RAS_EXTN) ║&& (hcr & HCR_VSE)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d24: 71000508 subs w8, w8, #0x1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌───────00003d28: 540001a1 b.ne 3d5c <___activate_traps+0x1e0> // b.any ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00003d2c: 14000001 b 3d30 <___activate_traps+0x1b4> <- 00003d28(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ___activate_traps:113.6 (switch.h) sbepe if (║cpus_have_final_cap(ARM64_HAS_RAS_EXTN) && (hcr & HCR_VSE)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>00003d30: 394047e8 ldrb w8, [sp, #17] <- 00003d2c(b)<___activate_traps+0x1b4> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─────00003d34: 36000148 tbz w8, #0, 3d5c <___activate_traps+0x1e0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─00003d38: 14000001 b 3d3c <___activate_traps+0x1c0> <- 00003d34(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ___activate_traps:114.3 (switch.h) Sbepe ║write_sysreg_s(vcpu->arch.vsesr_el2, SYS_VSESR_EL2); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─└>00003d3c: 14000001 b 3d40 <___activate_traps+0x1c4> <- 00003d38(b)<___activate_traps+0x1c0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ___activate_traps:114.3 (switch.h) sbepe ║write_sysreg_s(vcpu->arch.vsesr_el2, SYS_VSESR_EL2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3d40 0x3d5c (DW_OP_fbreg 0x0) lexblock:___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:114 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ └──>00003d40: f9400fe8 ldr x8, [sp, #24] <- 00003d3c(b)<___activate_traps+0x1c4> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003d44: f9518d08 ldr x8, [x8, #8984] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003d48: f90003e8 str x8, [sp] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003d4c: f94003e8 ldr x8, [sp] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003d50: d51c5268 msr vsesr_el2, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─00003d54: 14000001 b 3d58 <___activate_traps+0x1dc> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─└>00003d58: 14000001 b 3d5c <___activate_traps+0x1e0> <- 00003d54(b)<___activate_traps+0x1dc> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3d40 0x3d5c (DW_OP_fbreg 0x0) lexblock:___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:114 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ___activate_traps:115.1 (switch.h) Sbepe ║} ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└>└──>00003d5c: 910203ff add sp, sp, #0x80 <- 00003d28(b.cc)<___activate_traps+0x1e0>,00003d34(b.cc)<___activate_traps+0x1e0>,00003d58(b)<___activate_traps+0x1e0> ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003b80 CFA:r31+128 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d60: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3b7c 0x3d64 (DW_OP_fbreg 0x18) ___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:104 -hcr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3b7c 0x3d64 (DW_OP_fbreg 0x10) ___activate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:106 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00003d64 <__activate_traps_common>:║ ║ + __activate_traps_common params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3d64 0x3de4 (DW_OP_fbreg 0x28) ║ ║ ║ ║ ║ ║ ║ ║ ║ __activate_traps_common:83.0 (switch.h) Sbepe ║{ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d64 CFA:r31 +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3d64 0x3de4 (DW_OP_fbreg 0x28) __activate_traps_common:arch/arm64/kvm/hyp/nvhe/switch.c:82 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d64: d100c3ff sub sp, sp, #0x30 <- 00002a84(bl)<__activate_traps_common> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d68: f90017e0 str x0, [sp, #40] ║ ║ ║ ║ ║ ║ ║ ║ ║ __activate_traps_common:85.2 (switch.h) SbePe ║write_sysreg(1 << 15, hstr_el2); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00003d6c: 14000001 b 3d70 <__activate_traps_common+0xc> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>00003d70: 52900008 mov w8, #0x8000 // #32768 <- 00003d6c(b)<__activate_traps_common+0xc> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d74: 2a0803e9 mov w9, w8 ║ ║ ║ ║ ║ ║ ║ ║ ║ __activate_traps_common:85.2 (switch.h) sbepe ║write_sysreg(1 << 15, hstr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3d78 0x3d88 (DW_OP_fbreg 0x20) lexblock:__activate_traps_common:arch/arm64/kvm/hyp/nvhe/switch.c:85 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d78: f90013e9 str x9, [sp, #32] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d7c: f94013e9 ldr x9, [sp, #32] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d80: d51c1169 msr hstr_el2, x9 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00003d84: 14000001 b 3d88 <__activate_traps_common+0x24> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3d78 0x3d88 (DW_OP_fbreg 0x20) lexblock:__activate_traps_common:arch/arm64/kvm/hyp/nvhe/switch.c:85 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __activate_traps_common:93.2 (switch.h) Sbepe ║write_sysreg(0, pmselr_el0); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─└>00003d88: 14000001 b 3d8c <__activate_traps_common+0x28> <- 00003d84(b)<__activate_traps_common+0x24> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └──>00003d8c: aa1f03e8 mov x8, xzr <- 00003d88(b)<__activate_traps_common+0x28> ║ ║ ║ ║ ║ ║ ║ ║ ║ __activate_traps_common:93.2 (switch.h) sbepe ║write_sysreg(0, pmselr_el0); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3d90 0x3da0 (DW_OP_fbreg 0x18) lexblock:__activate_traps_common:arch/arm64/kvm/hyp/nvhe/switch.c:93 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d90: f9000fe8 str x8, [sp, #24] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d94: f9400fe8 ldr x8, [sp, #24] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d98: d51b9ca8 msr pmselr_el0, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00003d9c: 14000001 b 3da0 <__activate_traps_common+0x3c> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3d90 0x3da0 (DW_OP_fbreg 0x18) lexblock:__activate_traps_common:arch/arm64/kvm/hyp/nvhe/switch.c:93 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __activate_traps_common:94.2 (switch.h) Sbepe ║write_sysreg(ARMV8_PMU_USERENR_MASK, pmuserenr_el0); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─└>00003da0: 14000001 b 3da4 <__activate_traps_common+0x40> <- 00003d9c(b)<__activate_traps_common+0x3c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └──>00003da4: 528001e8 mov w8, #0xf // #15 <- 00003da0(b)<__activate_traps_common+0x40> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003da8: 2a0803e9 mov w9, w8 ║ ║ ║ ║ ║ ║ ║ ║ ║ __activate_traps_common:94.2 (switch.h) sbepe ║write_sysreg(ARMV8_PMU_USERENR_MASK, pmuserenr_el0); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3dac 0x3dbc (DW_OP_fbreg 0x10) lexblock:__activate_traps_common:arch/arm64/kvm/hyp/nvhe/switch.c:94 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003dac: f9000be9 str x9, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003db0: f9400be9 ldr x9, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003db4: d51b9e09 msr pmuserenr_el0, x9 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00003db8: 14000001 b 3dbc <__activate_traps_common+0x58> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3dac 0x3dbc (DW_OP_fbreg 0x10) lexblock:__activate_traps_common:arch/arm64/kvm/hyp/nvhe/switch.c:94 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __activate_traps_common:95.2 (switch.h) Sbepe ║write_sysreg(vcpu->arch.mdcr_el2, mdcr_el2); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─└>00003dbc: 14000001 b 3dc0 <__activate_traps_common+0x5c> <- 00003db8(b)<__activate_traps_common+0x58> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __activate_traps_common:95.2 (switch.h) sbepe ║write_sysreg(vcpu->arch.mdcr_el2, mdcr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3dc0 0x3ddc (DW_OP_fbreg 0x8) lexblock:__activate_traps_common:arch/arm64/kvm/hyp/nvhe/switch.c:95 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └──>00003dc0: f94017e8 ldr x8, [sp, #40] <- 00003dbc(b)<__activate_traps_common+0x5c> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003dc4: b9488109 ldr w9, [x8, #2176] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003dc8: 2a0903e8 mov w8, w9 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003dcc: f90007e8 str x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003dd0: f94007e8 ldr x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003dd4: d51c1128 msr mdcr_el2, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00003dd8: 14000001 b 3ddc <__activate_traps_common+0x78> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3dc0 0x3ddc (DW_OP_fbreg 0x8) lexblock:__activate_traps_common:arch/arm64/kvm/hyp/nvhe/switch.c:95 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __activate_traps_common:96.1 (switch.h) Sbepe ║} ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>00003ddc: 9100c3ff add sp, sp, #0x30 <- 00003dd8(b)<__activate_traps_common+0x78> ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003d68 CFA:r31+48 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003de0: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3d64 0x3de4 (DW_OP_fbreg 0x28) __activate_traps_common:arch/arm64/kvm/hyp/nvhe/switch.c:82 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00003de4 <update_fp_enabled>:║ ║ ║ ║ ║ + update_fp_enabled params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3de4 0x3ef0 (DW_OP_fbreg 0x0) ║ ║ ║ ║ ║ ║ ║ ║ ║ update_fp_enabled:40.0 (switch.h) Sbepe ║{ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003de4 CFA:r31 +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3de4 0x3ef0 (DW_OP_fbreg 0x0) update_fp_enabled:arch/arm64/kvm/hyp/nvhe/switch.c:39 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003de4: d10103ff sub sp, sp, #0x40 <- 00002ab0(bl)<update_fp_enabled> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003de8: f90003e0 str x0, [sp] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003dec: 52800208 mov w8, #0x10 // #16 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003df0: b9000be8 str w8, [sp, #8] j: 0x3df4 0x3eac cpus_have_const_cap inlined from system_supports_fpsimd:670 (cpufeature.h) <3d23f>:<3d22b>: k: 0x3df4 0x3eac system_supports_fpsimd inlined from update_fp_enabled:48 (switch.h) <3d22b>: jk ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_const_cap:479.30 (cpufeature.h) SbePe return cpus_have_final_cap(║num); +num param int (base type, DW_ATE_signed size:4) 0x3df4 0x3eac (DW_OP_fbreg 0x8) cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):update_fp_enabled:arch/arm64/kvm/hyp/nvhe/switch.c ~jk ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003df4: b9400be8 ldr w8, [sp, #8] ~jk ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003df8: b90013e8 str w8, [sp, #16] l: 0x3dfc 0x3ea4 cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <3d25c>:<3d23f>:<3d22b>: m: 0x3dfc 0x3e24 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <3d279>:<3d25c>:<3d23f>:<3d22b>: jklm ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready); +num param int (base type, DW_ATE_signed size:4) 0x3dfc 0x3ea4 (DW_OP_fbreg 0x10) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):update_fp_enabled:arch/arm64/kvm/hyp/nvhe/switch.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3dfc 0x3e24 (DW_OP_fbreg 0x24) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):update_fp_enabled:arch/arm64/kvm/hyp/nvhe/switch.c ~jklm ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003dfc: 900000c9 adrp x9, 1b000 <hyp_memory+0x460> ~jklm ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003e00: b9479928 ldr w8, [x9, #1944] ~jklm ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003e04: 71000108 subs w8, w8, #0x0 ~jklm ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003e08: 1a9f07ea cset w10, ne // ne = any ~jklm ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003e0c: 390093ea strb w10, [sp, #36] jklm ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~jklm ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003e10: 394093ea ldrb w10, [sp, #36] ~jklm ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003e14: 2a0a03e9 mov w9, w10 ~jklm ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003e18: 92400129 and x9, x9, #0x1 jklm ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~jklm ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003e1c: f9000fe9 str x9, [sp, #24] jklm ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~jklm ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003e20: f9400fe9 ldr x9, [sp, #24] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3dfc 0x3e24 (DW_OP_fbreg 0x24) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):update_fp_enabled:arch/arm64/kvm/hyp/nvhe/switch.c jkl ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~jkl ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌────00003e24: b4000389 cbz x9, 3e94 <update_fp_enabled+0xb0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~jkl ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00003e28: 14000001 b 3e2c <update_fp_enabled+0x48> <- 00003e24(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ jkl ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~jkl ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>00003e2c: b94013e8 ldr w8, [sp, #16] <- 00003e28(b)<update_fp_enabled+0x48> ~jkl ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003e30: b9003be8 str w8, [sp, #56] n: 0x3e34 0x3e94 (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3d2a5>:<3d25c>:<3d23f>:<3d22b>: jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x3e34 0x3e94 (DW_OP_fbreg 0x38) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):update_fp_enabled:arch/arm64/kvm/hyp/nvhe/switch.c ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003e34: b9403be8 ldr w8, [sp, #56] jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003e38: 7100f508 subs w8, w8, #0x3d ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌──00003e3c: 540000ab b.lt 3e50 <update_fp_enabled+0x6c> // b.tstop ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │┌─00003e40: 14000001 b 3e44 <update_fp_enabled+0x60> <- 00003e3c(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │└>00003e44: 2a1f03e8 mov w8, wzr <- 00003e40(b)<update_fp_enabled+0x60> jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003e48: 3900ffe8 strb w8, [sp, #63] ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ │┌┼──00003e4c: 14000013 b 3e98 <update_fp_enabled+0xb4> ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3e50 0x3e84 (DW_OP_fbreg 0x34) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):update_fp_enabled:arch/arm64/kvm/hyp/nvhe/switch.c ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││└─>00003e50: b9803be8 ldrsw x8, [sp, #56] <- 00003e3c(b.cc)<update_fp_enabled+0x6c> ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e54: d37ced08 lsl x8, x8, #4 ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e58: 900000c9 adrp x9, 1b000 <hyp_memory+0x460> ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e5c: 911e8129 add x9, x9, #0x7a0 ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e60: b868692a ldr w10, [x9, x8] ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e64: 7100014a subs w10, w10, #0x0 ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e68: 1a9f07eb cset w11, ne // ne = any ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e6c: 3900d3eb strb w11, [sp, #52] jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e70: 3940d3eb ldrb w11, [sp, #52] ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e74: 2a0b03e8 mov w8, w11 ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e78: 92400108 and x8, x8, #0x1 jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e7c: f90017e8 str x8, [sp, #40] jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e80: f94017e8 ldr x8, [sp, #40] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3e50 0x3e84 (DW_OP_fbreg 0x34) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):update_fp_enabled:arch/arm64/kvm/hyp/nvhe/switch.c jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e84: f1000108 subs x8, x8, #0x0 ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e88: 1a9f07eb cset w11, ne // ne = any jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00003e8c: 3900ffeb strb w11, [sp, #63] ~jkln ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ┌─00003e90: 14000002 b 3e98 <update_fp_enabled+0xb4> -num param int (base type, DW_ATE_signed size:4) 0x3e34 0x3e94 (DW_OP_fbreg 0x38) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):update_fp_enabled:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ jkl ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~jkl ║ ║ ║ ║ ║ ║ ║ ║ ║ └┼─┼>00003e94: d4210000 brk #0x800 <- 00003e24(b.cc)<update_fp_enabled+0xb0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ o: 0x3e98 0x3e9c (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3d2a5>:<3d25c>:<3d23f>:<3d22b>: jklo ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x3e98 0x3e9c (DW_OP_fbreg 0x38) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):update_fp_enabled:arch/arm64/kvm/hyp/nvhe/switch.c ~jklo ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└>00003e98: 3940ffe8 ldrb w8, [sp, #63] <- 00003e4c(b)<update_fp_enabled+0xb4>,00003e90(b)<update_fp_enabled+0xb4> -num param int (base type, DW_ATE_signed size:4) 0x3e98 0x3e9c (DW_OP_fbreg 0x38) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):update_fp_enabled:arch/arm64/kvm/hyp/nvhe/switch.c jkl ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~jkl ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003e9c: 39005fe8 strb w8, [sp, #23] jkl ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~jkl ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ea0: 39405fe8 ldrb w8, [sp, #23] -num param int (base type, DW_ATE_signed size:4) 0x3dfc 0x3ea4 (DW_OP_fbreg 0x10) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):update_fp_enabled:arch/arm64/kvm/hyp/nvhe/switch.c jk ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num); ~jk ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ea4: 39003fe8 strb w8, [sp, #15] jk ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║} ~jk ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ea8: 39403fe8 ldrb w8, [sp, #15] -num param int (base type, DW_ATE_signed size:4) 0x3df4 0x3eac (DW_OP_fbreg 0x8) cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):update_fp_enabled:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ update_fp_enabled:48.32 (switch.h) Sbepe if (!system_supports_fpsimd() || ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌───00003eac: 370000e8 tbnz w8, #0, 3ec8 <update_fp_enabled+0xe4> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00003eb0: 14000001 b 3eb4 <update_fp_enabled+0xd0> <- 00003eac(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ update_fp_enabled:49.6 (switch.h) Sbepe ║vcpu->arch.host_thread_info->flags & _TIF_FOREIGN_FPSTATE) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>00003eb4: f94003e8 ldr x8, [sp] <- 00003eb0(b)<update_fp_enabled+0xd0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ update_fp_enabled:49.17 (switch.h) sbepe vcpu->arch.║host_thread_info->flags & _TIF_FOREIGN_FPSTATE) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003eb8: f9466108 ldr x8, [x8, #3264] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ update_fp_enabled:48.6 (switch.h) Sbepe if (║!system_supports_fpsimd() || ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003ebc: 39400109 ldrb w9, [x8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌┼───00003ec0: 361800e9 tbz w9, #3, 3edc <update_fp_enabled+0xf8> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ┌─00003ec4: 14000001 b 3ec8 <update_fp_enabled+0xe4> <- 00003ec0(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ update_fp_enabled:50.3 (switch.h) Sbepe ║vcpu->arch.flags &= ~(KVM_ARM64_FP_ENABLED | ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │└>└>00003ec8: f94003e8 ldr x8, [sp] <- 00003eac(b.cc)<update_fp_enabled+0xe4>,00003ec4(b)<update_fp_enabled+0xe4> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ update_fp_enabled:50.20 (switch.h) sbepe vcpu->arch.flags ║&= ~(KVM_ARM64_FP_ENABLED | ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003ecc: f9445909 ldr x9, [x8, #2224] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003ed0: 927df529 and x9, x9, #0xfffffffffffffff9 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003ed4: f9045909 str x9, [x8, #2224] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ update_fp_enabled:50.3 (switch.h) sbepe ║vcpu->arch.flags &= ~(KVM_ARM64_FP_ENABLED | ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00003ed8: 14000001 b 3edc <update_fp_enabled+0xf8> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ update_fp_enabled:53.12 (switch.h) Sbepe return !!(║vcpu->arch.flags & KVM_ARM64_FP_ENABLED); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └─>└>00003edc: f94003e8 ldr x8, [sp] <- 00003ec0(b.cc)<update_fp_enabled+0xf8>,00003ed8(b)<update_fp_enabled+0xf8> ║ ║ ║ ║ ║ ║ ║ ║ ║ update_fp_enabled:53.10 (switch.h) sbepe return !║!(vcpu->arch.flags & KVM_ARM64_FP_ENABLED); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ee0: 3962c109 ldrb w9, [x8, #2224] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ee4: 53010520 ubfx w0, w9, #1, #1 ║ ║ ║ ║ ║ ║ ║ ║ ║ update_fp_enabled:53.2 (switch.h) sbepe ║return !!(vcpu->arch.flags & KVM_ARM64_FP_ENABLED); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ee8: 910103ff add sp, sp, #0x40 ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003de8 CFA:r31+64 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003eec: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3de4 0x3ef0 (DW_OP_fbreg 0x0) update_fp_enabled:arch/arm64/kvm/hyp/nvhe/switch.c:39 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00003ef0 <__activate_traps_fpsimd32>: + __activate_traps_fpsimd32 params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3ef0 0x4004 (DW_OP_fbreg 0x8) ║ ║ ║ ║ ║ ║ ║ ║ ║ __activate_traps_fpsimd32:66.0 (switch.h) Sbepe ║{ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ef0 CFA:r31 +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3ef0 0x4004 (DW_OP_fbreg 0x8) __activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c:65 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ef0: d10143ff sub sp, sp, #0x50 <- 00002acc(bl)<__activate_traps_fpsimd32> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ef4: f90007e0 str x0, [sp, #8] ║ ║ ║ ║ ║ ║ ║ ║ ║ __activate_traps_fpsimd32:76.24 (switch.h) SbePe if (vcpu_el1_is_32bit(║vcpu) && system_supports_fpsimd()) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ef8: f94007e8 ldr x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003efc: f9000be8 str x8, [sp, #16] p: 0x3f00 0x3f04 vcpu_el1_is_32bit inlined from __activate_traps_fpsimd32:76 (switch.h) <3d2f8>: p ║ ║ ║ ║ ║ ║ ║ ║ ║ vcpu_el1_is_32bit:46.11 (kvm_emulate.h) Sbepe return !(║vcpu->arch.hcr_el2 & HCR_RW); +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3f00 0x3f04 (DW_OP_fbreg 0x10) vcpu_el1_is_32bit(inlined):__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c ~p ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003f00: f9400be8 ldr x8, [sp, #16] -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3f00 0x3f04 (DW_OP_fbreg 0x10) vcpu_el1_is_32bit(inlined):__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ __activate_traps_fpsimd32:76.30 (switch.h) Sbepe if (vcpu_el1_is_32bit(vcpu) ║&& system_supports_fpsimd()) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003f04: 3961ed09 ldrb w9, [x8, #2171] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌──────00003f08: 373807a9 tbnz w9, #7, 3ffc <__activate_traps_fpsimd32+0x10c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00003f0c: 14000001 b 3f10 <__activate_traps_fpsimd32+0x20> <- 00003f08(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>00003f10: 52800208 mov w8, #0x10 // #16 <- 00003f0c(b)<__activate_traps_fpsimd32+0x20> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003f14: b9001be8 str w8, [sp, #24] q: 0x3f18 0x3fd0 cpus_have_const_cap inlined from system_supports_fpsimd:670 (cpufeature.h) <3d329>:<3d315>: r: 0x3f18 0x3fd0 system_supports_fpsimd inlined from __activate_traps_fpsimd32:76 (switch.h) <3d315>: qr ║ ║ ║ ║ ║ ║ ║ ║ ║ │ cpus_have_const_cap:479.30 (cpufeature.h) Sbepe return cpus_have_final_cap(║num); +num param int (base type, DW_ATE_signed size:4) 0x3f18 0x3fd0 (DW_OP_fbreg 0x18) cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c ~qr ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003f18: b9401be8 ldr w8, [sp, #24] ~qr ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003f1c: b90023e8 str w8, [sp, #32] s: 0x3f20 0x3fc8 cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <3d346>:<3d329>:<3d315>: t: 0x3f20 0x3f48 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <3d363>:<3d346>:<3d329>:<3d315>: qrst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready); +num param int (base type, DW_ATE_signed size:4) 0x3f20 0x3fc8 (DW_OP_fbreg 0x20) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3f20 0x3f48 (DW_OP_fbreg 0x34) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c ~qrst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003f20: 900000c9 adrp x9, 1b000 <hyp_memory+0x460> ~qrst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003f24: b9479928 ldr w8, [x9, #1944] ~qrst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003f28: 71000108 subs w8, w8, #0x0 ~qrst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003f2c: 1a9f07ea cset w10, ne // ne = any ~qrst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003f30: 3900d3ea strb w10, [sp, #52] qrst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~qrst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003f34: 3940d3ea ldrb w10, [sp, #52] ~qrst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003f38: 2a0a03e9 mov w9, w10 ~qrst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003f3c: 92400129 and x9, x9, #0x1 qrst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~qrst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003f40: f90017e9 str x9, [sp, #40] qrst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~qrst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003f44: f94017e9 ldr x9, [sp, #40] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3f20 0x3f48 (DW_OP_fbreg 0x34) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c qrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~qrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌────00003f48: b4000389 cbz x9, 3fb8 <__activate_traps_fpsimd32+0xc8> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~qrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─00003f4c: 14000001 b 3f50 <__activate_traps_fpsimd32+0x60> <- 00003f48(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ qrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~qrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ └>00003f50: b94023e8 ldr w8, [sp, #32] <- 00003f4c(b)<__activate_traps_fpsimd32+0x60> ~qrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003f54: b9004be8 str w8, [sp, #72] u: 0x3f58 0x3fb8 (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3d38f>:<3d346>:<3d329>:<3d315>: qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x3f58 0x3fb8 (DW_OP_fbreg 0x48) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003f58: b9404be8 ldr w8, [sp, #72] qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003f5c: 7100f508 subs w8, w8, #0x3d ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌──00003f60: 540000ab b.lt 3f74 <__activate_traps_fpsimd32+0x84> // b.tstop ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │┌─00003f64: 14000001 b 3f68 <__activate_traps_fpsimd32+0x78> <- 00003f60(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │└>00003f68: 2a1f03e8 mov w8, wzr <- 00003f64(b)<__activate_traps_fpsimd32+0x78> qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00003f6c: 39013fe8 strb w8, [sp, #79] ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │┌┼──00003f70: 14000013 b 3fbc <__activate_traps_fpsimd32+0xcc> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │││ qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3f74 0x3fa8 (DW_OP_fbreg 0x44) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││└─>00003f74: b9804be8 ldrsw x8, [sp, #72] <- 00003f60(b.cc)<__activate_traps_fpsimd32+0x84> ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003f78: d37ced08 lsl x8, x8, #4 ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003f7c: 900000c9 adrp x9, 1b000 <hyp_memory+0x460> ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003f80: 911e8129 add x9, x9, #0x7a0 ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003f84: b868692a ldr w10, [x9, x8] ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003f88: 7100014a subs w10, w10, #0x0 ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003f8c: 1a9f07eb cset w11, ne // ne = any ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003f90: 390113eb strb w11, [sp, #68] qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003f94: 394113eb ldrb w11, [sp, #68] ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003f98: 2a0b03e8 mov w8, w11 ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003f9c: 92400108 and x8, x8, #0x1 qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003fa0: f9001fe8 str x8, [sp, #56] qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003fa4: f9401fe8 ldr x8, [sp, #56] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x3f74 0x3fa8 (DW_OP_fbreg 0x44) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003fa8: f1000108 subs x8, x8, #0x0 ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003fac: 1a9f07eb cset w11, ne // ne = any qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00003fb0: 39013feb strb w11, [sp, #79] ~qrsu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ ┌─00003fb4: 14000002 b 3fbc <__activate_traps_fpsimd32+0xcc> -num param int (base type, DW_ATE_signed size:4) 0x3f58 0x3fb8 (DW_OP_fbreg 0x48) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ │ qrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~qrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └┼─┼>00003fb8: d4210000 brk #0x800 <- 00003f48(b.cc)<__activate_traps_fpsimd32+0xc8> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ v: 0x3fbc 0x3fc0 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3d38f>:<3d346>:<3d329>:<3d315>: qrsv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x3fbc 0x3fc0 (DW_OP_fbreg 0x48) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c ~qrsv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>└>00003fbc: 39413fe8 ldrb w8, [sp, #79] <- 00003f70(b)<__activate_traps_fpsimd32+0xcc>,00003fb4(b)<__activate_traps_fpsimd32+0xcc> -num param int (base type, DW_ATE_signed size:4) 0x3fbc 0x3fc0 (DW_OP_fbreg 0x48) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c qrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~qrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003fc0: 39009fe8 strb w8, [sp, #39] qrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~qrs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003fc4: 39409fe8 ldrb w8, [sp, #39] -num param int (base type, DW_ATE_signed size:4) 0x3f20 0x3fc8 (DW_OP_fbreg 0x20) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c qr ║ ║ ║ ║ ║ ║ ║ ║ ║ │ cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num); ~qr ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003fc8: 39007fe8 strb w8, [sp, #31] qr ║ ║ ║ ║ ║ ║ ║ ║ ║ │ cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║} ~qr ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00003fcc: 39407fe8 ldrb w8, [sp, #31] -num param int (base type, DW_ATE_signed size:4) 0x3f18 0x3fd0 (DW_OP_fbreg 0x18) cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __activate_traps_fpsimd32:76.6 (switch.h) Sbepe if (║vcpu_el1_is_32bit(vcpu) && system_supports_fpsimd()) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌────00003fd0: 37000168 tbnz w8, #0, 3ffc <__activate_traps_fpsimd32+0x10c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─00003fd4: 14000001 b 3fd8 <__activate_traps_fpsimd32+0xe8> <- 00003fd0(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __activate_traps_fpsimd32:77.3 (switch.h) Sbepe ║write_sysreg(1 << 30, fpexc32_el2); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │┌─└>00003fd8: 14000001 b 3fdc <__activate_traps_fpsimd32+0xec> <- 00003fd4(b)<__activate_traps_fpsimd32+0xe8> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │└──>00003fdc: 52a80008 mov w8, #0x40000000 // #1073741824 <- 00003fd8(b)<__activate_traps_fpsimd32+0xec> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003fe0: 2a0803e9 mov w9, w8 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __activate_traps_fpsimd32:77.3 (switch.h) sbepe ║write_sysreg(1 << 30, fpexc32_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3fe4 0x3ff4 (DW_OP_fbreg 0x0) lexblock:__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c:77 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003fe4: f90003e9 str x9, [sp] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003fe8: f94003e9 ldr x9, [sp] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00003fec: d51c5309 msr fpexc32_el2, x9 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─00003ff0: 14000001 b 3ff4 <__activate_traps_fpsimd32+0x104> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x3fe4 0x3ff4 (DW_OP_fbreg 0x0) lexblock:__activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c:77 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __activate_traps_fpsimd32:78.3 (switch.h) Sbepe ║isb(); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ └>00003ff4: d5033fdf isb <- 00003ff0(b)<__activate_traps_fpsimd32+0x104> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __activate_traps_fpsimd32:79.2 (switch.h) Sbepe } ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─00003ff8: 14000001 b 3ffc <__activate_traps_fpsimd32+0x10c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __activate_traps_fpsimd32:80.1 (switch.h) Sbepe ║} ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└─>└>00003ffc: 910143ff add sp, sp, #0x50 <- 00003f08(b.cc)<__activate_traps_fpsimd32+0x10c>,00003fd0(b.cc)<__activate_traps_fpsimd32+0x10c>,00003ff8(b)<__activate_traps_fpsimd32+0x10c> ║ ║ ║ ║ ║ ║ ║ ║ ║ 00003ef4 CFA:r31+80 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004000: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x3ef0 0x4004 (DW_OP_fbreg 0x8) __activate_traps_fpsimd32:arch/arm64/kvm/hyp/nvhe/switch.c:65 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00004004 <__this_cpu_preempt_check>: + __this_cpu_preempt_check params: +op param pointer(const(char (base type, DW_ATE_unsigned_char size:1))) 0x4004 0x4014 (DW_OP_fbreg 0x8) ║ ║ ║ ║ ║ ║ ║ ║ ║ __this_cpu_preempt_check:313.0 (percpu-defs.h) Sbepe ║static inline void __this_cpu_preempt_check(const char *op) { } ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004004 CFA:r31 +op param pointer(const(char (base type, DW_ATE_unsigned_char size:1))) 0x4004 0x4014 (DW_OP_fbreg 0x8) __this_cpu_preempt_check:arch/arm64/kvm/hyp/nvhe/switch.c:313 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004004: d10043ff sub sp, sp, #0x10 <- 00002af8(bl)<__this_cpu_preempt_check> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004008: f90007e0 str x0, [sp, #8] ║ ║ ║ ║ ║ ║ ║ ║ ║ __this_cpu_preempt_check:313.63 (percpu-defs.h) SbePe static inline void __this_cpu_preempt_check(const char *op) { } ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000400c: 910043ff add sp, sp, #0x10 ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004008 CFA:r31+16 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004010: d65f03c0 ret -op param pointer(const(char (base type, DW_ATE_unsigned_char size:1))) 0x4004 0x4014 (DW_OP_fbreg 0x8) __this_cpu_preempt_check:arch/arm64/kvm/hyp/nvhe/switch.c:313 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00004014 <handle_tx2_tvm>: ║ ║ ║ ║ ║ ║ + handle_tx2_tvm params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x4014 0x43a8 (DW_OP_fbreg -0x60) ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:295.0 (switch.h) Sbepe ║{ +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x4014 0x43a8 (DW_OP_fbreg -0x60) handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:294 +sysreg var typedef(u32=typedef(__u32=unsigned int (base type, DW_ATE_unsigned size:4))) 0x4014 0x43a8 (DW_OP_fbreg -0x64) handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:296 +rt var int (base type, DW_ATE_signed size:4) 0x4014 0x43a8 (DW_OP_fbreg -0x68) handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:297 +val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4014 0x43a8 (DW_OP_breg31 0x70) handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:298 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004014: d103c3ff sub sp, sp, #0xf0 <- 00002eec(bl)<handle_tx2_tvm> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004018: a90e7bfd stp x29, x30, [sp, #224] ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004014 CFA:r31 r29:u r30:u ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000401c: 910383fd add x29, sp, #0xe0 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004020: f81a03a0 stur x0, [x29, #-96] ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:296.15 (switch.h) SbePe u32 sysreg = ║esr_sys64_to_sysreg(kvm_vcpu_get_esr(vcpu)); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004024: f85a03a8 ldur x8, [x29, #-96] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004028: f81b03a8 stur x8, [x29, #-80] w: 0x402c 0x4030 kvm_vcpu_get_esr inlined from handle_tx2_tvm:296 (switch.h) <3d4a6>: w ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x402c 0x4030 (DW_OP_fbreg -0x50) kvm_vcpu_get_esr(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ~w ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000402c: f85b03a8 ldur x8, [x29, #-80] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x402c 0x4030 (DW_OP_fbreg -0x50) kvm_vcpu_get_esr(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:296.15 (switch.h) Sbepe u32 sysreg = ║esr_sys64_to_sysreg(kvm_vcpu_get_esr(vcpu)); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004030: b9488909 ldr w9, [x8, #2184] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004034: 2a0903e8 mov w8, w9 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004038: d3545508 ubfx x8, x8, #20, #2 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000403c: f85a03aa ldur x10, [x29, #-96] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004040: f81b83aa stur x10, [x29, #-72] x: 0x4044 0x4048 kvm_vcpu_get_esr inlined from handle_tx2_tvm:296 (switch.h) <3d4c5>: x ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x4044 0x4048 (DW_OP_fbreg -0x48) kvm_vcpu_get_esr(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ~x ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004044: f85b83aa ldur x10, [x29, #-72] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x4044 0x4048 (DW_OP_fbreg -0x48) kvm_vcpu_get_esr(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:296.15 (switch.h) Sbepe u32 sysreg = ║esr_sys64_to_sysreg(kvm_vcpu_get_esr(vcpu)); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004048: b9488949 ldr w9, [x10, #2184] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000404c: 12120929 and w9, w9, #0x1c000 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004050: 531e7529 lsl w9, w9, #2 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004054: 330d0509 bfi w9, w8, #19, #2 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004058: f85a03aa ldur x10, [x29, #-96] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000405c: f81c03aa stur x10, [x29, #-64] y: 0x4060 0x4068 kvm_vcpu_get_esr inlined from handle_tx2_tvm:296 (switch.h) <3d4e4>: y ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x4060 0x4068 (DW_OP_fbreg -0x40) kvm_vcpu_get_esr(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ~y ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004060: f85c03aa ldur x10, [x29, #-64] y ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_vcpu_get_esr:224.26 (kvm_emulate.h) sbepe return vcpu->arch.fault.║esr_el2; ~y ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004064: b9488948 ldr w8, [x10, #2184] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x4060 0x4068 (DW_OP_fbreg -0x40) kvm_vcpu_get_esr(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:296.15 (switch.h) Sbepe u32 sysreg = ║esr_sys64_to_sysreg(kvm_vcpu_get_esr(vcpu)); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004068: 12160d08 and w8, w8, #0x3c00 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000406c: 530a7d08 lsr w8, w8, #10 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004070: 33140d09 bfi w9, w8, #12, #4 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004074: f85a03aa ldur x10, [x29, #-96] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004078: f81c83aa stur x10, [x29, #-56] z: 0x407c 0x4084 kvm_vcpu_get_esr inlined from handle_tx2_tvm:296 (switch.h) <3d502>: z ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x407c 0x4084 (DW_OP_fbreg -0x38) kvm_vcpu_get_esr(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ~z ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000407c: f85c83aa ldur x10, [x29, #-56] z ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_vcpu_get_esr:224.26 (kvm_emulate.h) sbepe return vcpu->arch.fault.║esr_el2; ~z ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004080: b9488948 ldr w8, [x10, #2184] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x407c 0x4084 (DW_OP_fbreg -0x38) kvm_vcpu_get_esr(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:296.15 (switch.h) Sbepe u32 sysreg = ║esr_sys64_to_sysreg(kvm_vcpu_get_esr(vcpu)); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004084: 121f0d08 and w8, w8, #0x1e ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004088: 53017d08 lsr w8, w8, #1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000408c: 33180d09 bfi w9, w8, #8, #4 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004090: f85a03aa ldur x10, [x29, #-96] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004094: f81d03aa stur x10, [x29, #-48] a: 0x4098 0x409c kvm_vcpu_get_esr inlined from handle_tx2_tvm:296 (switch.h) <3d520>: a ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x4098 0x409c (DW_OP_fbreg -0x30) kvm_vcpu_get_esr(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ~a ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004098: f85d03aa ldur x10, [x29, #-48] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x4098 0x409c (DW_OP_fbreg -0x30) kvm_vcpu_get_esr(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:296.15 (switch.h) Sbepe u32 sysreg = ║esr_sys64_to_sysreg(kvm_vcpu_get_esr(vcpu)); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000409c: b9488948 ldr w8, [x10, #2184] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040a0: 2a0803ea mov w10, w8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040a4: d3514d4a ubfx x10, x10, #17, #3 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040a8: 331b0949 bfi w9, w10, #5, #3 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040ac: 2a0903e0 mov w0, w9 ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:296.6 (switch.h) sbepe u32 ║sysreg = esr_sys64_to_sysreg(kvm_vcpu_get_esr(vcpu)); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040b0: b819c3a0 stur w0, [x29, #-100] ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:297.31 (switch.h) Sbepe int rt = kvm_vcpu_sys_get_rt(║vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040b4: f85a03ab ldur x11, [x29, #-96] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040b8: f81e03ab stur x11, [x29, #-32] b: 0x40bc 0x40dc kvm_vcpu_sys_get_rt inlined from handle_tx2_tvm:297 (switch.h) <3d53e>: b ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_vcpu_sys_get_rt:360.29 (kvm_emulate.h) Sbepe u32 esr = kvm_vcpu_get_esr(║vcpu); +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x40bc 0x40dc (DW_OP_fbreg -0x20) kvm_vcpu_sys_get_rt(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c +esr var typedef(u32=typedef(__u32=unsigned int (base type, DW_ATE_unsigned size:4))) 0x40bc 0x40dc (DW_OP_fbreg -0x24) kvm_vcpu_sys_get_rt(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ~b ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040bc: f85e03ab ldur x11, [x29, #-32] ~b ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040c0: f81e83ab stur x11, [x29, #-24] c: 0x40c4 0x40cc kvm_vcpu_get_esr inlined from kvm_vcpu_sys_get_rt:360 (kvm_emulate.h) <3d563>:<3d53e>: bc ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x40c4 0x40cc (DW_OP_fbreg -0x18) kvm_vcpu_get_esr(inlined):kvm_vcpu_sys_get_rt(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ~bc ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040c4: f85e83ab ldur x11, [x29, #-24] bc ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_vcpu_get_esr:224.26 (kvm_emulate.h) sbepe return vcpu->arch.fault.║esr_el2; ~bc ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040c8: b9488968 ldr w8, [x11, #2184] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x40c4 0x40cc (DW_OP_fbreg -0x18) kvm_vcpu_get_esr(inlined):kvm_vcpu_sys_get_rt(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c b ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_vcpu_sys_get_rt:360.6 (kvm_emulate.h) Sbepe u32 ║esr = kvm_vcpu_get_esr(vcpu); ~b ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040cc: b81dc3a8 stur w8, [x29, #-36] b ║ ║ ║ ║ ║ ║ ║ ║ ║ kvm_vcpu_sys_get_rt:361.9 (kvm_emulate.h) Sbepe return ║ESR_ELx_SYS64_ISS_RT(esr); ~b ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040d0: b85dc3a8 ldur w8, [x29, #-36] ~b ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040d4: 2a0803eb mov w11, w8 ~b ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040d8: d345256b ubfx x11, x11, #5, #5 -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x40bc 0x40dc (DW_OP_fbreg -0x20) kvm_vcpu_sys_get_rt(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c -esr var typedef(u32=typedef(__u32=unsigned int (base type, DW_ATE_unsigned size:4))) 0x40bc 0x40dc (DW_OP_fbreg -0x24) kvm_vcpu_sys_get_rt(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:297.6 (switch.h) Sbepe int ║rt = kvm_vcpu_sys_get_rt(vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040dc: b81983ab stur w11, [x29, #-104] ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:298.25 (switch.h) Sbepe u64 val = vcpu_get_reg(║vcpu, rt); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040e0: f85a03ac ldur x12, [x29, #-96] ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:298.31 (switch.h) sbepe u64 val = vcpu_get_reg(vcpu, ║rt); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040e4: b85983a8 ldur w8, [x29, #-104] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040e8: f81f83ac stur x12, [x29, #-8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040ec: 381f43a8 sturb w8, [x29, #-12] d: 0x40f0 0x4128 vcpu_get_reg inlined from handle_tx2_tvm:298 (switch.h) <3d582>: d ║ ║ ║ ║ ║ ║ ║ ║ ║ vcpu_get_reg:166.10 (kvm_emulate.h) Sbepe return (║reg_num == 31) ? 0 : vcpu_gp_regs(vcpu)->regs[reg_num]; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x40f0 0x4128 (DW_OP_fbreg -0x8) vcpu_get_reg(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c +reg_num param typedef(u8=typedef(__u8=unsigned char (base type, DW_ATE_unsigned_char size:1))) 0x40f0 0x4128 (DW_OP_fbreg -0xc) vcpu_get_reg(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ~d ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040f0: 385f43a8 ldurb w8, [x29, #-12] d ║ ║ ║ ║ ║ ║ ║ ║ ║ vcpu_get_reg:166.9 (kvm_emulate.h) sbepe return ║(reg_num == 31) ? 0 : vcpu_gp_regs(vcpu)->regs[reg_num]; ~d ║ ║ ║ ║ ║ ║ ║ ║ ║ 000040f4: 71007d08 subs w8, w8, #0x1f ~d ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌──000040f8: 540000a1 b.ne 410c <handle_tx2_tvm+0xf8> // b.any ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~d ║ ║ ║ ║ ║ ║ ║ ║ ║ │┌─000040fc: 14000001 b 4100 <handle_tx2_tvm+0xec> <- 000040f8(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ~d ║ ║ ║ ║ ║ ║ ║ ║ ║ │└>00004100: aa1f03e0 mov x0, xzr <- 000040fc(b)<handle_tx2_tvm+0xec> ~d ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004104: f9000be0 str x0, [sp, #16] d ║ ║ ║ ║ ║ ║ ║ ║ ║ │ vcpu_get_reg:166.9 (kvm_emulate.h) sbepe return ║(reg_num == 31) ? 0 : vcpu_gp_regs(vcpu)->regs[reg_num]; ~d ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌┼──00004108: 14000008 b 4128 <handle_tx2_tvm+0x114> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ d ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ vcpu_get_reg:166.31 (kvm_emulate.h) sbepe return (reg_num == 31) ? 0 : ║vcpu_gp_regs(vcpu)->regs[reg_num]; ~d ║ ║ ║ ║ ║ ║ ║ ║ ║ │└─>0000410c: f85f83a8 ldur x8, [x29, #-8] <- 000040f8(b.cc)<handle_tx2_tvm+0xf8> d ║ ║ ║ ║ ║ ║ ║ ║ ║ │ vcpu_get_reg:166.56 (kvm_emulate.h) sbepe return (reg_num == 31) ? 0 : vcpu_gp_regs(vcpu)->regs[║reg_num]; ~d ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004110: 385f43a9 ldurb w9, [x29, #-12] ~d ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004114: 2a0903ea mov w10, w9 d ║ ║ ║ ║ ║ ║ ║ ║ ║ │ vcpu_get_reg:166.31 (kvm_emulate.h) sbepe return (reg_num == 31) ? 0 : ║vcpu_gp_regs(vcpu)->regs[reg_num]; ~d ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004118: 8b0a0d08 add x8, x8, x10, lsl #3 ~d ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 0000411c: f940b108 ldr x8, [x8, #352] ~d ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004120: f9000be8 str x8, [sp, #16] d ║ ║ ║ ║ ║ ║ ║ ║ ║ │ vcpu_get_reg:166.9 (kvm_emulate.h) sbepe return ║(reg_num == 31) ? 0 : vcpu_gp_regs(vcpu)->regs[reg_num]; ~d ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00004124: 14000001 b 4128 <handle_tx2_tvm+0x114> -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x40f0 0x4128 (DW_OP_fbreg -0x8) vcpu_get_reg(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c -reg_num param typedef(u8=typedef(__u8=unsigned char (base type, DW_ATE_unsigned_char size:1))) 0x40f0 0x4128 (DW_OP_fbreg -0xc) vcpu_get_reg(inlined):handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└>00004128: f9400be8 ldr x8, [sp, #16] <- 00004108(b)<handle_tx2_tvm+0x114>,00004124(b)<handle_tx2_tvm+0x114> ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:298.6 (switch.h) Sbepe u64 ║val = vcpu_get_reg(vcpu, rt); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000412c: f9003be8 str x8, [sp, #112] ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:304.6 (switch.h) Sbepe if (║vcpu->arch.hcr_el2 & HCR_TVM) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004130: f85a03a8 ldur x8, [x29, #-96] ║ ║ ║ ║ ║ ║ ║ ║ ║ handle_tx2_tvm:304.6 (switch.h) sbepe if (║vcpu->arch.hcr_el2 & HCR_TVM) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004134: 3961ed09 ldrb w9, [x8, #2171] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌──00004138: 361000a9 tbz w9, #2, 414c <handle_tx2_tvm+0x138> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │┌─0000413c: 14000001 b 4140 <handle_tx2_tvm+0x12c> <- 00004138(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │└>00004140: 2a1f03e8 mov w8, wzr <- 0000413c(b)<handle_tx2_tvm+0x12c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ handle_tx2_tvm:305.3 (switch.h) Sbepe ║return false; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004144: 381af3a8 sturb w8, [x29, #-81] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║┌──────────────────────┼──00004148: 14000094 b 4398 <handle_tx2_tvm+0x384> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ handle_tx2_tvm:307.10 (switch.h) Sbepe switch (║sysreg) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ └─>0000414c: b859c3a8 ldur w8, [x29, #-100] <- 00004138(b.cc)<handle_tx2_tvm+0x138> ║ ║ ║ ║ ║ ║ ║ ║ ║│ handle_tx2_tvm:307.2 (switch.h) sbepe ║switch (sysreg) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ 00004150: 2a0803e9 mov w9, w8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ 00004154: 71460508 subs w8, w8, #0x181, lsl #12 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ 00004158: b9000fe9 str w9, [sp, #12] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ┌─────0000415c: 54000740 b.eq 4244 <handle_tx2_tvm+0x230> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ┌─00004160: 14000001 b 4164 <handle_tx2_tvm+0x150> <- 0000415c(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ └>00004164: b9400fe8 ldr w8, [sp, #12] <- 00004160(b)<handle_tx2_tvm+0x150> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ handle_tx2_tvm:307.2 (switch.h) sbepe ║switch (sysreg) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ 00004168: 71460909 subs w9, w8, #0x182, lsl #12 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ┌┼─────0000416c: 540007a0 b.eq 4260 <handle_tx2_tvm+0x24c> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││ ┌─00004170: 14000001 b 4174 <handle_tx2_tvm+0x160> <- 0000416c(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││ └>00004174: 52840408 mov w8, #0x2020 // #8224 <- 00004170(b)<handle_tx2_tvm+0x160> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││ 00004178: 72a00308 movk w8, #0x18, lsl #16 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││ 0000417c: b9400fe9 ldr w9, [sp, #12] ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││ handle_tx2_tvm:307.2 (switch.h) sbepe ║switch (sysreg) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││ 00004180: 6b080128 subs w8, w9, w8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ┌┼┼─────00004184: 540007c0 b.eq 427c <handle_tx2_tvm+0x268> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║│ │││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │││ ┌─00004188: 14000001 b 418c <handle_tx2_tvm+0x178> <- 00004184(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │││ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │││ └>0000418c: 52840808 mov w8, #0x2040 // #8256 <- 00004188(b)<handle_tx2_tvm+0x178> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │││ 00004190: 72a00308 movk w8, #0x18, lsl #16 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │││ 00004194: b9400fe9 ldr w9, [sp, #12] ║ ║ ║ ║ ║ ║ ║ ║ ║│ │││ handle_tx2_tvm:307.2 (switch.h) sbepe ║switch (sysreg) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │││ 00004198: 6b080128 subs w8, w9, w8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ┌┼┼┼─────0000419c: 540007e0 b.eq 4298 <handle_tx2_tvm+0x284> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││││ ┌─000041a0: 14000001 b 41a4 <handle_tx2_tvm+0x190> <- 0000419c(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││││ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││││ └>000041a4: 528a2008 mov w8, #0x5100 // #20736 <- 000041a0(b)<handle_tx2_tvm+0x190> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││││ 000041a8: 72a00308 movk w8, #0x18, lsl #16 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││││ 000041ac: b9400fe9 ldr w9, [sp, #12] ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││││ handle_tx2_tvm:307.2 (switch.h) sbepe ║switch (sysreg) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ││││ 000041b0: 6b080128 subs w8, w9, w8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ┌─┼┼┼┼─────000041b4: 540009c0 b.eq 42ec <handle_tx2_tvm+0x2d8> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││ ┌─000041b8: 14000001 b 41bc <handle_tx2_tvm+0x1a8> <- 000041b4(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││ └>000041bc: 528a2408 mov w8, #0x5120 // #20768 <- 000041b8(b)<handle_tx2_tvm+0x1a8> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││ 000041c0: 72a00308 movk w8, #0x18, lsl #16 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││ 000041c4: b9400fe9 ldr w9, [sp, #12] ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││ handle_tx2_tvm:307.2 (switch.h) sbepe ║switch (sysreg) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││ 000041c8: 6b080128 subs w8, w9, w8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ ┌──────┼─┼┼┼┼─────000041cc: 540009e0 b.eq 4308 <handle_tx2_tvm+0x2f4> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ ┌─000041d0: 14000001 b 41d4 <handle_tx2_tvm+0x1c0> <- 000041cc(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ └>000041d4: 528a4008 mov w8, #0x5200 // #20992 <- 000041d0(b)<handle_tx2_tvm+0x1c0> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ 000041d8: 72a00308 movk w8, #0x18, lsl #16 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ 000041dc: b9400fe9 ldr w9, [sp, #12] ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ handle_tx2_tvm:307.2 (switch.h) sbepe ║switch (sysreg) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ 000041e0: 6b080128 subs w8, w9, w8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ ┌───000041e4: 54000680 b.eq 42b4 <handle_tx2_tvm+0x2a0> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ │ ┌─000041e8: 14000001 b 41ec <handle_tx2_tvm+0x1d8> <- 000041e4(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ │ └>000041ec: b9400fe8 ldr w8, [sp, #12] <- 000041e8(b)<handle_tx2_tvm+0x1d8> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ │ handle_tx2_tvm:307.2 (switch.h) sbepe ║switch (sysreg) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││ │ 000041f0: 71461909 subs w9, w8, #0x186, lsl #12 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││┌┼───000041f4: 540006e0 b.eq 42d0 <handle_tx2_tvm+0x2bc> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││││ ┌─000041f8: 14000001 b 41fc <handle_tx2_tvm+0x1e8> <- 000041f4(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││││ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││││ └>000041fc: 52944008 mov w8, #0xa200 // #41472 <- 000041f8(b)<handle_tx2_tvm+0x1e8> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││││ 00004200: 72a00308 movk w8, #0x18, lsl #16 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││││ 00004204: b9400fe9 ldr w9, [sp, #12] ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││││ handle_tx2_tvm:307.2 (switch.h) sbepe ║switch (sysreg) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ││││││ 00004208: 6b080128 subs w8, w9, w8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │┌┼┼┼┼┼┼───0000420c: 540008c0 b.eq 4324 <handle_tx2_tvm+0x310> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││││││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││││││ ┌─00004210: 14000001 b 4214 <handle_tx2_tvm+0x200> <- 0000420c(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││││││ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││││││ └>00004214: 52946008 mov w8, #0xa300 // #41728 <- 00004210(b)<handle_tx2_tvm+0x200> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││││││ 00004218: 72a00308 movk w8, #0x18, lsl #16 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││││││ 0000421c: b9400fe9 ldr w9, [sp, #12] ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││││││ handle_tx2_tvm:307.2 (switch.h) sbepe ║switch (sysreg) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ││││││││ 00004220: 6b080128 subs w8, w9, w8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ┌┼┼┼┼┼┼┼┼───00004224: 540008e0 b.eq 4340 <handle_tx2_tvm+0x32c> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │││││││││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │││││││││ ┌─00004228: 14000001 b 422c <handle_tx2_tvm+0x218> <- 00004224(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │││││││││ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │││││││││ └>0000422c: 529a0408 mov w8, #0xd020 // #53280 <- 00004228(b)<handle_tx2_tvm+0x218> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │││││││││ 00004230: 72a00308 movk w8, #0x18, lsl #16 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │││││││││ 00004234: b9400fe9 ldr w9, [sp, #12] ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │││││││││ handle_tx2_tvm:307.2 (switch.h) sbepe ║switch (sysreg) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │││││││││ 00004238: 6b080128 subs w8, w9, w8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ┌─┼┼┼┼┼┼┼┼┼───0000423c: 54000900 b.eq 435c <handle_tx2_tvm+0x348> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ │││││││││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ┌─┼─┼┼┼┼┼┼┼┼┼───00004240: 1400004e b 4378 <handle_tx2_tvm+0x364> <- 0000423c(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ │ │││││││││ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ │ │││││││││ handle_tx2_tvm:309.3 (switch.h) Sbepe ║write_sysreg_el1(val, SYS_SCTLR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ │ ││││││└┼┼>┌─00004244: 14000001 b 4248 <handle_tx2_tvm+0x234> <- 0000415c(b.cc)<handle_tx2_tvm+0x230> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ │ ││││││ ││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ │ ││││││ ││ │ handle_tx2_tvm:309.3 (switch.h) sbepe ║write_sysreg_el1(val, SYS_SCTLR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4248 0x425c (DW_OP_breg31 0x68) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:309 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ │ ││││││ ││ └>00004248: f9403be8 ldr x8, [sp, #112] <- 00004244(b)<handle_tx2_tvm+0x234> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ │ ││││││ ││ 0000424c: f90037e8 str x8, [sp, #104] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ │ ││││││ ││ 00004250: f94037e8 ldr x8, [sp, #104] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ │ ││││││ ││ 00004254: d5181008 msr sctlr_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ │ ││││││ ││ ┌─00004258: 14000001 b 425c <handle_tx2_tvm+0x248> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4248 0x425c (DW_OP_breg31 0x68) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:309 ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ │ ││││││ ││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ │ ││││││ ││ │ handle_tx2_tvm:310.3 (switch.h) Sbepe ║break; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│┌──────┼─┼─┼─┼┼┼┼┼┼─┼┼─└>0000425c: 1400004a b 4384 <handle_tx2_tvm+0x370> <- 00004258(b)<handle_tx2_tvm+0x248> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ ││││││ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ ││││││ ││ handle_tx2_tvm:312.3 (switch.h) Sbepe ║write_sysreg_el1(val, SYS_TTBR0); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││└─┼┼>┌─00004260: 14000001 b 4264 <handle_tx2_tvm+0x250> <- 0000416c(b.cc)<handle_tx2_tvm+0x24c> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ ││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ ││ │ handle_tx2_tvm:312.3 (switch.h) sbepe ║write_sysreg_el1(val, SYS_TTBR0); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4264 0x4278 (DW_OP_breg31 0x60) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:312 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ ││ └>00004264: f9403be8 ldr x8, [sp, #112] <- 00004260(b)<handle_tx2_tvm+0x250> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ ││ 00004268: f90033e8 str x8, [sp, #96] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ ││ 0000426c: f94033e8 ldr x8, [sp, #96] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ ││ 00004270: d5182008 msr ttbr0_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ ││ ┌─00004274: 14000001 b 4278 <handle_tx2_tvm+0x264> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4264 0x4278 (DW_OP_breg31 0x60) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:312 ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ ││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ ││ │ handle_tx2_tvm:313.3 (switch.h) Sbepe ║break; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ ┌────┼─┼─┼─┼┼┼┼┼──┼┼─└>00004278: 14000043 b 4384 <handle_tx2_tvm+0x370> <- 00004274(b)<handle_tx2_tvm+0x264> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │││││ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │││││ ││ handle_tx2_tvm:315.3 (switch.h) Sbepe ║write_sysreg_el1(val, SYS_TTBR1); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ ││││└──┼┼>┌─0000427c: 14000001 b 4280 <handle_tx2_tvm+0x26c> <- 00004184(b.cc)<handle_tx2_tvm+0x268> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ ││││ ││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ ││││ ││ │ handle_tx2_tvm:315.3 (switch.h) sbepe ║write_sysreg_el1(val, SYS_TTBR1); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4280 0x4294 (DW_OP_breg31 0x58) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:315 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ ││││ ││ └>00004280: f9403be8 ldr x8, [sp, #112] <- 0000427c(b)<handle_tx2_tvm+0x26c> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ ││││ ││ 00004284: f9002fe8 str x8, [sp, #88] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ ││││ ││ 00004288: f9402fe8 ldr x8, [sp, #88] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ ││││ ││ 0000428c: d5182028 msr ttbr1_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ ││││ ││ ┌─00004290: 14000001 b 4294 <handle_tx2_tvm+0x280> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4280 0x4294 (DW_OP_breg31 0x58) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:315 ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ ││││ ││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ ││││ ││ │ handle_tx2_tvm:316.3 (switch.h) Sbepe ║break; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ ┌──┼─┼─┼─┼┼┼┼───┼┼─└>00004294: 1400003c b 4384 <handle_tx2_tvm+0x370> <- 00004290(b)<handle_tx2_tvm+0x280> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ ││││ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ ││││ ││ handle_tx2_tvm:318.3 (switch.h) Sbepe ║write_sysreg_el1(val, SYS_TCR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │││└───┼┼>┌─00004298: 14000001 b 429c <handle_tx2_tvm+0x288> <- 0000419c(b.cc)<handle_tx2_tvm+0x284> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │││ ││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │││ ││ │ handle_tx2_tvm:318.3 (switch.h) sbepe ║write_sysreg_el1(val, SYS_TCR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x429c 0x42b0 (DW_OP_breg31 0x50) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:318 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │││ ││ └>0000429c: f9403be8 ldr x8, [sp, #112] <- 00004298(b)<handle_tx2_tvm+0x288> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │││ ││ 000042a0: f9002be8 str x8, [sp, #80] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │││ ││ 000042a4: f9402be8 ldr x8, [sp, #80] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │││ ││ 000042a8: d5182048 msr tcr_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │││ ││ ┌─000042ac: 14000001 b 42b0 <handle_tx2_tvm+0x29c> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x429c 0x42b0 (DW_OP_breg31 0x50) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:318 ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │││ ││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │││ ││ │ handle_tx2_tvm:319.3 (switch.h) Sbepe ║break; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ┌┼─┼─┼─┼┼┼────┼┼─└>000042b0: 14000035 b 4384 <handle_tx2_tvm+0x370> <- 000042ac(b)<handle_tx2_tvm+0x29c> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││ │ │ │││ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││ │ │ │││ ││ handle_tx2_tvm:321.3 (switch.h) Sbepe ║write_sysreg_el1(val, SYS_ESR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││ │ │ │││ │└>┌─000042b4: 14000001 b 42b8 <handle_tx2_tvm+0x2a4> <- 000041e4(b.cc)<handle_tx2_tvm+0x2a0> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││ │ │ │││ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││ │ │ │││ │ │ handle_tx2_tvm:321.3 (switch.h) sbepe ║write_sysreg_el1(val, SYS_ESR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x42b8 0x42cc (DW_OP_breg31 0x48) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:321 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││ │ │ │││ │ └>000042b8: f9403be8 ldr x8, [sp, #112] <- 000042b4(b)<handle_tx2_tvm+0x2a4> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││ │ │ │││ │ 000042bc: f90027e8 str x8, [sp, #72] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││ │ │ │││ │ 000042c0: f94027e8 ldr x8, [sp, #72] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││ │ │ │││ │ 000042c4: d5185208 msr esr_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││ │ │ │││ │ ┌─000042c8: 14000001 b 42cc <handle_tx2_tvm+0x2b8> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x42b8 0x42cc (DW_OP_breg31 0x48) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:321 ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││ │ │ │││ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││ │ │ │││ │ │ handle_tx2_tvm:322.3 (switch.h) Sbepe ║break; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││┌┼─┼─┼┼┼────┼──└>000042cc: 1400002e b 4384 <handle_tx2_tvm+0x370> <- 000042c8(b)<handle_tx2_tvm+0x2b8> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││ │ │││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││ │ │││ │ handle_tx2_tvm:324.3 (switch.h) Sbepe ║write_sysreg_el1(val, SYS_FAR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││ │ │││ └─>┌─000042d0: 14000001 b 42d4 <handle_tx2_tvm+0x2c0> <- 000041f4(b.cc)<handle_tx2_tvm+0x2bc> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││ │ │││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││ │ │││ │ handle_tx2_tvm:324.3 (switch.h) sbepe ║write_sysreg_el1(val, SYS_FAR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x42d4 0x42e8 (DW_OP_breg31 0x40) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:324 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││ │ │││ └>000042d4: f9403be8 ldr x8, [sp, #112] <- 000042d0(b)<handle_tx2_tvm+0x2c0> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││ │ │││ 000042d8: f90023e8 str x8, [sp, #64] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││ │ │││ 000042dc: f94023e8 ldr x8, [sp, #64] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││ │ │││ 000042e0: d5186008 msr far_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││ │ │││ ┌─000042e4: 14000001 b 42e8 <handle_tx2_tvm+0x2d4> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x42d4 0x42e8 (DW_OP_breg31 0x40) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:324 ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││ │ │││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││ │ │││ │ handle_tx2_tvm:325.3 (switch.h) Sbepe ║break; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││┌┼─┼┼┼───────└>000042e8: 14000027 b 4384 <handle_tx2_tvm+0x370> <- 000042e4(b)<handle_tx2_tvm+0x2d4> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││ │││ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││ │││ handle_tx2_tvm:327.3 (switch.h) Sbepe ║write_sysreg_el1(val, SYS_AFSR0); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││ │└┼──────>┌─000042ec: 14000001 b 42f0 <handle_tx2_tvm+0x2dc> <- 000041b4(b.cc)<handle_tx2_tvm+0x2d8> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││ │ │ │ handle_tx2_tvm:327.3 (switch.h) sbepe ║write_sysreg_el1(val, SYS_AFSR0); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x42f0 0x4304 (DW_OP_breg31 0x38) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:327 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││ │ │ └>000042f0: f9403be8 ldr x8, [sp, #112] <- 000042ec(b)<handle_tx2_tvm+0x2dc> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││ │ │ 000042f4: f9001fe8 str x8, [sp, #56] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││ │ │ 000042f8: f9401fe8 ldr x8, [sp, #56] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││ │ │ 000042fc: d5185108 msr afsr0_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││ │ │ ┌─00004300: 14000001 b 4304 <handle_tx2_tvm+0x2f0> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x42f0 0x4304 (DW_OP_breg31 0x38) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:327 ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││ │ │ │ handle_tx2_tvm:328.3 (switch.h) Sbepe ║break; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││┌┼─┼───────└>00004304: 14000020 b 4384 <handle_tx2_tvm+0x370> <- 00004300(b)<handle_tx2_tvm+0x2f0> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ ││││││││ │ handle_tx2_tvm:330.3 (switch.h) Sbepe ║write_sysreg_el1(val, SYS_AFSR1); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │└┼┼┼┼┼┼─┼──────>┌─00004308: 14000001 b 430c <handle_tx2_tvm+0x2f8> <- 000041cc(b.cc)<handle_tx2_tvm+0x2f4> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ ││││││ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ ││││││ │ │ handle_tx2_tvm:330.3 (switch.h) sbepe ║write_sysreg_el1(val, SYS_AFSR1); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x430c 0x4320 (DW_OP_breg31 0x30) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:330 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ ││││││ │ └>0000430c: f9403be8 ldr x8, [sp, #112] <- 00004308(b)<handle_tx2_tvm+0x2f8> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ ││││││ │ 00004310: f9001be8 str x8, [sp, #48] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ ││││││ │ 00004314: f9401be8 ldr x8, [sp, #48] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ ││││││ │ 00004318: d5185128 msr afsr1_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ ││││││ │ ┌─0000431c: 14000001 b 4320 <handle_tx2_tvm+0x30c> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x430c 0x4320 (DW_OP_breg31 0x30) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:330 ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ ││││││ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ ││││││ │ │ handle_tx2_tvm:331.3 (switch.h) Sbepe ║break; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ ││││││┌┼───────└>00004320: 14000019 b 4384 <handle_tx2_tvm+0x370> <- 0000431c(b)<handle_tx2_tvm+0x30c> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ ││││││││ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ ││││││││ handle_tx2_tvm:333.3 (switch.h) Sbepe ║write_sysreg_el1(val, SYS_MAIR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││││└──────>┌─00004324: 14000001 b 4328 <handle_tx2_tvm+0x314> <- 0000420c(b.cc)<handle_tx2_tvm+0x310> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││││ │ handle_tx2_tvm:333.3 (switch.h) sbepe ║write_sysreg_el1(val, SYS_MAIR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4328 0x433c (DW_OP_breg31 0x28) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:333 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││││ └>00004328: f9403be8 ldr x8, [sp, #112] <- 00004324(b)<handle_tx2_tvm+0x314> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││││ 0000432c: f90017e8 str x8, [sp, #40] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││││ 00004330: f94017e8 ldr x8, [sp, #40] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││││ 00004334: d518a208 msr mair_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││││ ┌─00004338: 14000001 b 433c <handle_tx2_tvm+0x328> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4328 0x433c (DW_OP_breg31 0x28) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:333 ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││││ │ handle_tx2_tvm:334.3 (switch.h) Sbepe ║break; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││││ ┌──────└>0000433c: 14000012 b 4384 <handle_tx2_tvm+0x370> <- 00004338(b)<handle_tx2_tvm+0x328> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││││ │ handle_tx2_tvm:336.3 (switch.h) Sbepe ║write_sysreg_el1(val, SYS_AMAIR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││└┼─┼─────>┌─00004340: 14000001 b 4344 <handle_tx2_tvm+0x330> <- 00004224(b.cc)<handle_tx2_tvm+0x32c> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ │ │ │ handle_tx2_tvm:336.3 (switch.h) sbepe ║write_sysreg_el1(val, SYS_AMAIR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4344 0x4358 (DW_OP_breg31 0x20) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:336 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ │ │ └>00004344: f9403be8 ldr x8, [sp, #112] <- 00004340(b)<handle_tx2_tvm+0x330> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ │ │ 00004348: f90013e8 str x8, [sp, #32] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ │ │ 0000434c: f94013e8 ldr x8, [sp, #32] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ │ │ 00004350: d518a308 msr amair_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ │ │ ┌─00004354: 14000001 b 4358 <handle_tx2_tvm+0x344> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4344 0x4358 (DW_OP_breg31 0x20) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:336 ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ │ │ │ handle_tx2_tvm:337.3 (switch.h) Sbepe ║break; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ │ │ ┌────└>00004358: 1400000b b 4384 <handle_tx2_tvm+0x370> <- 00004354(b)<handle_tx2_tvm+0x344> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││││ │ │ │ handle_tx2_tvm:339.3 (switch.h) Sbepe ║write_sysreg_el1(val, SYS_CONTEXTIDR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││└┼─┼─┼─┼───>┌─0000435c: 14000001 b 4360 <handle_tx2_tvm+0x34c> <- 0000423c(b.cc)<handle_tx2_tvm+0x348> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││ │ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││ │ │ │ │ │ handle_tx2_tvm:339.3 (switch.h) sbepe ║write_sysreg_el1(val, SYS_CONTEXTIDR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4360 0x4374 (DW_OP_breg31 0x18) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:339 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││ │ │ │ │ └>00004360: f9403be8 ldr x8, [sp, #112] <- 0000435c(b)<handle_tx2_tvm+0x34c> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││ │ │ │ │ 00004364: f9000fe8 str x8, [sp, #24] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││ │ │ │ │ 00004368: f9400fe8 ldr x8, [sp, #24] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││ │ │ │ │ 0000436c: d518d028 msr contextidr_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││ │ │ │ │ ┌─00004370: 14000001 b 4374 <handle_tx2_tvm+0x360> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4360 0x4374 (DW_OP_breg31 0x18) lexblock:handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:339 ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││ │ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││ │ │ │ │ │ handle_tx2_tvm:340.3 (switch.h) Sbepe ║break; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││ │ │ │ │ ┌─└>00004374: 14000004 b 4384 <handle_tx2_tvm+0x370> <- 00004370(b)<handle_tx2_tvm+0x360> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │││ │ │ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │└┼─┼─┼─┼─┼──┼──>00004378: 2a1f03e8 mov w8, wzr <- 00004240(b)<handle_tx2_tvm+0x364> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │ │ │ │ │ handle_tx2_tvm:342.3 (switch.h) Sbepe ║return false; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │ │ │ │ │ 0000437c: 381af3a8 sturb w8, [x29, #-81] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │ │ │ │ ┌┼───00004380: 14000006 b 4398 <handle_tx2_tvm+0x384> ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │ │ │ │ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║││ │ │ │ │ │ │ │ │ │ ││ handle_tx2_tvm:345.19 (switch.h) Sbepe __kvm_skip_instr(║vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│└>└>└>└>└>└>└>└>└>└>│└──>00004384: f85a03a0 ldur x0, [x29, #-96] <- 0000425c(b)<handle_tx2_tvm+0x370>,00004278(b)<handle_tx2_tvm+0x370>,00004294(b)<handle_tx2_tvm+0x370>,000042b0(b)<handle_tx2_tvm+0x370>,000042cc(b)<handle_tx2_tvm+0x370>,000042e8(b)<handle_tx2_tvm+0x370>,00004304(b)<handle_tx2_tvm+0x370>,00004320(b)<handle_tx2_tvm+0x370>,0000433c(b)<handle_tx2_tvm+0x370>,00004358(b)<handle_tx2_tvm+0x370>,00004374(b)<handle_tx2_tvm+0x370> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ handle_tx2_tvm:345.2 (switch.h) sbepe ║__kvm_skip_instr(vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ 00004388: 94000196 bl 49e0 <__kvm_skip_instr> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ 0000438c: 52800028 mov w8, #0x1 // #1 <- 00004388(bl-succ)<return> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ handle_tx2_tvm:346.2 (switch.h) Sbepe ║return true; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ 00004390: 381af3a8 sturb w8, [x29, #-81] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ ┌─00004394: 14000001 b 4398 <handle_tx2_tvm+0x384> ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║│ │ │ handle_tx2_tvm:347.1 (switch.h) Sbepe ║} ~ ║ ║ ║ ║ ║ ║ ║ ║ ║└───────────────────>└─>└>00004398: 385af3a0 ldurb w0, [x29, #-81] <- 00004148(b)<handle_tx2_tvm+0x384>,00004380(b)<handle_tx2_tvm+0x384>,00004394(b)<handle_tx2_tvm+0x384> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000439c: a94e7bfd ldp x29, x30, [sp, #224] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043a0: 9103c3ff add sp, sp, #0xf0 ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004020 CFA:r29+16 r29:c-16 r30:c-8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043a4: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x4014 0x43a8 (DW_OP_fbreg -0x60) handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:294 -sysreg var typedef(u32=typedef(__u32=unsigned int (base type, DW_ATE_unsigned size:4))) 0x4014 0x43a8 (DW_OP_fbreg -0x64) handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:296 -rt var int (base type, DW_ATE_signed size:4) 0x4014 0x43a8 (DW_OP_fbreg -0x68) handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:297 -val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4014 0x43a8 (DW_OP_breg31 0x70) handle_tx2_tvm:arch/arm64/kvm/hyp/nvhe/switch.c:298 ║ ║ ║ ║ ║ ║ ║ ║ ║ **000043a8 <__hyp_handle_fpsimd>:║ ║ ║ ║ + __hyp_handle_fpsimd params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x43a8 0x4918 (DW_OP_breg31 0x98) ║ ║ ║ ║ ║ ║ ║ ║ ║ __hyp_handle_fpsimd:209.0 (switch.h) Sbepe ║{ +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x43a8 0x4918 (DW_OP_breg31 0x98) __hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:208 +vhe var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x43a8 0x4918 (DW_OP_breg31 0x94) __hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:210 +sve_guest var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x43a8 0x4918 (DW_OP_breg31 0x90) __hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:210 +sve_host var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x43a8 0x4918 (DW_OP_breg31 0x8c) __hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:210 +esr_ec var typedef(u8=typedef(__u8=unsigned char (base type, DW_ATE_unsigned_char size:1))) 0x43a8 0x4918 (DW_OP_breg31 0x88) __hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:211 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043a8: d10603ff sub sp, sp, #0x180 <- 00002f00(bl)<__hyp_handle_fpsimd> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043ac: a9167bfd stp x29, x30, [sp, #352] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043b0: f900bbfc str x28, [sp, #368] ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043a8 CFA:r31 r28:u r29:u r30:u ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043b4: 910583fd add x29, sp, #0x160 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043b8: f9004fe0 str x0, [sp, #152] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043bc: 52800208 mov w8, #0x10 // #16 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043c0: b900abe8 str w8, [sp, #168] e: 0x43c4 0x447c cpus_have_const_cap inlined from system_supports_fpsimd:670 (cpufeature.h) <3d773>:<3d75f>: f: 0x43c4 0x447c system_supports_fpsimd inlined from __hyp_handle_fpsimd:213 (switch.h) <3d75f>: ef ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_const_cap:479.30 (cpufeature.h) SbePe return cpus_have_final_cap(║num); +num param int (base type, DW_ATE_signed size:4) 0x43c4 0x447c (DW_OP_breg31 0xa8) cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~ef ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043c4: b940abe8 ldr w8, [sp, #168] ~ef ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043c8: b900b3e8 str w8, [sp, #176] g: 0x43cc 0x4474 cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <3d791>:<3d773>:<3d75f>: h: 0x43cc 0x43f4 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <3d7af>:<3d791>:<3d773>:<3d75f>: efgh ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready); +num param int (base type, DW_ATE_signed size:4) 0x43cc 0x4474 (DW_OP_breg31 0xb0) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x43cc 0x43f4 (DW_OP_fbreg -0x9c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~efgh ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043cc: f00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~efgh ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043d0: b9479928 ldr w8, [x9, #1944] ~efgh ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043d4: 71000108 subs w8, w8, #0x0 ~efgh ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043d8: 1a9f07ea cset w10, ne // ne = any ~efgh ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043dc: 381643aa sturb w10, [x29, #-156] efgh ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~efgh ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043e0: 385643aa ldurb w10, [x29, #-156] ~efgh ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043e4: 2a0a03e9 mov w9, w10 ~efgh ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043e8: 92400129 and x9, x9, #0x1 efgh ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~efgh ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043ec: f81583a9 stur x9, [x29, #-168] efgh ║ ║ ║ ║ ║ ║ ║ ║ ║ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~efgh ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043f0: f85583a9 ldur x9, [x29, #-168] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x43cc 0x43f4 (DW_OP_fbreg -0x9c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c efg ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~efg ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌────000043f4: b4000389 cbz x9, 4464 <__hyp_handle_fpsimd+0xbc> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~efg ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─000043f8: 14000001 b 43fc <__hyp_handle_fpsimd+0x54> <- 000043f4(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ efg ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~efg ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>000043fc: b940b3e8 ldr w8, [sp, #176] <- 000043f8(b)<__hyp_handle_fpsimd+0x54> ~efg ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004400: b81783a8 stur w8, [x29, #-136] i: 0x4404 0x4464 (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3d7dc>:<3d791>:<3d773>:<3d75f>: efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x4404 0x4464 (DW_OP_fbreg -0x88) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004404: b85783a8 ldur w8, [x29, #-136] efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004408: 7100f508 subs w8, w8, #0x3d ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌──0000440c: 540000ab b.lt 4420 <__hyp_handle_fpsimd+0x78> // b.tstop ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │┌─00004410: 14000001 b 4414 <__hyp_handle_fpsimd+0x6c> <- 0000440c(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │└>00004414: 2a1f03e8 mov w8, wzr <- 00004410(b)<__hyp_handle_fpsimd+0x6c> efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004418: 3817e3a8 sturb w8, [x29, #-130] ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ │┌┼──0000441c: 14000013 b 4468 <__hyp_handle_fpsimd+0xc0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ │││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4420 0x4454 (DW_OP_fbreg -0x8c) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││└─>00004420: b89783a8 ldursw x8, [x29, #-136] <- 0000440c(b.cc)<__hyp_handle_fpsimd+0x78> ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004424: d37ced08 lsl x8, x8, #4 ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004428: f00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 0000442c: 911e8129 add x9, x9, #0x7a0 ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004430: b868692a ldr w10, [x9, x8] ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004434: 7100014a subs w10, w10, #0x0 ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004438: 1a9f07eb cset w11, ne // ne = any ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 0000443c: 381743ab sturb w11, [x29, #-140] efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004440: 385743ab ldurb w11, [x29, #-140] ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004444: 2a0b03e8 mov w8, w11 ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004448: 92400108 and x8, x8, #0x1 efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 0000444c: f81683a8 stur x8, [x29, #-152] efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004450: f85683a8 ldur x8, [x29, #-152] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4420 0x4454 (DW_OP_fbreg -0x8c) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004454: f1000108 subs x8, x8, #0x0 ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004458: 1a9f07eb cset w11, ne // ne = any efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 0000445c: 3817e3ab sturb w11, [x29, #-130] ~efgi ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ┌─00004460: 14000002 b 4468 <__hyp_handle_fpsimd+0xc0> -num param int (base type, DW_ATE_signed size:4) 0x4404 0x4464 (DW_OP_fbreg -0x88) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ efg ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~efg ║ ║ ║ ║ ║ ║ ║ ║ ║ └┼─┼>00004464: d4210000 brk #0x800 <- 000043f4(b.cc)<__hyp_handle_fpsimd+0xbc> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ j: 0x4468 0x446c (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3d7dc>:<3d791>:<3d773>:<3d75f>: efgj ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x4468 0x446c (DW_OP_fbreg -0x88) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~efgj ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└>00004468: 3857e3a8 ldurb w8, [x29, #-130] <- 0000441c(b)<__hyp_handle_fpsimd+0xc0>,00004460(b)<__hyp_handle_fpsimd+0xc0> -num param int (base type, DW_ATE_signed size:4) 0x4468 0x446c (DW_OP_fbreg -0x88) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c efg ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~efg ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000446c: 381573a8 sturb w8, [x29, #-169] efg ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~efg ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004470: 385573a8 ldurb w8, [x29, #-169] -num param int (base type, DW_ATE_signed size:4) 0x43cc 0x4474 (DW_OP_breg31 0xb0) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ef ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num); ~ef ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004474: 3902bfe8 strb w8, [sp, #175] ef ║ ║ ║ ║ ║ ║ ║ ║ ║ cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║} ~ef ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004478: 3942bfe8 ldrb w8, [sp, #175] -num param int (base type, DW_ATE_signed size:4) 0x43c4 0x447c (DW_OP_breg31 0xa8) cpus_have_const_cap(inlined):system_supports_fpsimd(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ __hyp_handle_fpsimd:213.6 (switch.h) Sbepe if (║!system_supports_fpsimd()) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000447c: 71000508 subs w8, w8, #0x1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌──00004480: 540000a1 b.ne 4494 <__hyp_handle_fpsimd+0xec> // b.any ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │┌─00004484: 14000001 b 4488 <__hyp_handle_fpsimd+0xe0> <- 00004480(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │└>00004488: 2a1f03e8 mov w8, wzr <- 00004484(b)<__hyp_handle_fpsimd+0xe0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __hyp_handle_fpsimd:214.3 (switch.h) Sbepe ║return false; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 0000448c: 39029fe8 strb w8, [sp, #167] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌────────┼──00004490: 1400011d b 4904 <__hyp_handle_fpsimd+0x55c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └─>00004494: 2a1f03e8 mov w8, wzr <- 00004480(b.cc)<__hyp_handle_fpsimd+0xec> k: 0x4498 0x44a0 has_vhe inlined from __hyp_handle_fpsimd:221 (switch.h) <3d80d>: k ║ ║ ║ ║ ║ ║ ║ ║ ║ │ has_vhe:113.3 (virt.h) Sbepe ║return false; ~k ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004498: 3817f3a8 sturb w8, [x29, #-129] k ║ ║ ║ ║ ║ ║ ║ ║ ║ │ has_vhe:116.1 (virt.h) Sbepe ║} ~k ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 0000449c: 3857f3a8 ldurb w8, [x29, #-129] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __hyp_handle_fpsimd:221.16 (switch.h) Sbepe if (has_vhe() ║&& system_supports_sve()) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000044a0: 71000508 subs w8, w8, #0x1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌───────000044a4: 54000f21 b.ne 4688 <__hyp_handle_fpsimd+0x2e0> // b.any ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─000044a8: 14000001 b 44ac <__hyp_handle_fpsimd+0x104> <- 000044a4(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ └>000044ac: 528002c8 mov w8, #0x16 // #22 <- 000044a8(b)<__hyp_handle_fpsimd+0x104> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000044b0: b81803a8 stur w8, [x29, #-128] l: 0x44b4 0x456c cpus_have_const_cap inlined from system_supports_sve:688 (cpufeature.h) <3d835>:<3d821>: m: 0x44b4 0x456c system_supports_sve inlined from __hyp_handle_fpsimd:221 (switch.h) <3d821>: lm ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ cpus_have_const_cap:479.30 (cpufeature.h) Sbepe return cpus_have_final_cap(║num); +num param int (base type, DW_ATE_signed size:4) 0x44b4 0x456c (DW_OP_fbreg -0x80) cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~lm ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000044b4: b85803a8 ldur w8, [x29, #-128] ~lm ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000044b8: b81883a8 stur w8, [x29, #-120] n: 0x44bc 0x4564 cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <3d853>:<3d835>:<3d821>: o: 0x44bc 0x44e4 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <3d871>:<3d853>:<3d835>:<3d821>: lmno ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready); +num param int (base type, DW_ATE_signed size:4) 0x44bc 0x4564 (DW_OP_fbreg -0x78) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x44bc 0x44e4 (DW_OP_fbreg -0x64) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~lmno ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000044bc: f00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~lmno ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000044c0: b9479928 ldr w8, [x9, #1944] ~lmno ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000044c4: 71000108 subs w8, w8, #0x0 ~lmno ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000044c8: 1a9f07ea cset w10, ne // ne = any ~lmno ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000044cc: 3819c3aa sturb w10, [x29, #-100] lmno ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~lmno ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000044d0: 3859c3aa ldurb w10, [x29, #-100] ~lmno ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000044d4: 2a0a03e9 mov w9, w10 ~lmno ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000044d8: 92400129 and x9, x9, #0x1 lmno ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~lmno ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000044dc: f81903a9 stur x9, [x29, #-112] lmno ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~lmno ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000044e0: f85903a9 ldur x9, [x29, #-112] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x44bc 0x44e4 (DW_OP_fbreg -0x64) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c lmn ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~lmn ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌────000044e4: b4000389 cbz x9, 4554 <__hyp_handle_fpsimd+0x1ac> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ~lmn ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ┌─000044e8: 14000001 b 44ec <__hyp_handle_fpsimd+0x144> <- 000044e4(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ lmn ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~lmn ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ └>000044ec: b85883a8 ldur w8, [x29, #-120] <- 000044e8(b)<__hyp_handle_fpsimd+0x144> ~lmn ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000044f0: b81b03a8 stur w8, [x29, #-80] p: 0x44f4 0x4554 (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3d89e>:<3d853>:<3d835>:<3d821>: lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x44f4 0x4554 (DW_OP_fbreg -0x50) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000044f4: b85b03a8 ldur w8, [x29, #-80] lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000044f8: 7100f508 subs w8, w8, #0x3d ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ┌──000044fc: 540000ab b.lt 4510 <__hyp_handle_fpsimd+0x168> // b.tstop ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │┌─00004500: 14000001 b 4504 <__hyp_handle_fpsimd+0x15c> <- 000044fc(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │└>00004504: 2a1f03e8 mov w8, wzr <- 00004500(b)<__hyp_handle_fpsimd+0x15c> lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004508: 381b73a8 sturb w8, [x29, #-73] ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │┌┼──0000450c: 14000013 b 4558 <__hyp_handle_fpsimd+0x1b0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4510 0x4544 (DW_OP_fbreg -0x54) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││└─>00004510: b89b03a8 ldursw x8, [x29, #-80] <- 000044fc(b.cc)<__hyp_handle_fpsimd+0x168> ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004514: d37ced08 lsl x8, x8, #4 ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004518: f00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 0000451c: 911e8129 add x9, x9, #0x7a0 ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004520: b868692a ldr w10, [x9, x8] ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004524: 7100014a subs w10, w10, #0x0 ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004528: 1a9f07eb cset w11, ne // ne = any ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 0000452c: 381ac3ab sturb w11, [x29, #-84] lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004530: 385ac3ab ldurb w11, [x29, #-84] ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004534: 2a0b03e8 mov w8, w11 ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004538: 92400108 and x8, x8, #0x1 lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 0000453c: f81a03a8 stur x8, [x29, #-96] lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004540: f85a03a8 ldur x8, [x29, #-96] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4510 0x4544 (DW_OP_fbreg -0x54) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004544: f1000108 subs x8, x8, #0x0 ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004548: 1a9f07eb cset w11, ne // ne = any lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 0000454c: 381b73ab sturb w11, [x29, #-73] ~lmnp ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ┌─00004550: 14000002 b 4558 <__hyp_handle_fpsimd+0x1b0> -num param int (base type, DW_ATE_signed size:4) 0x44f4 0x4554 (DW_OP_fbreg -0x50) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │ lmn ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~lmn ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ └┼─┼>00004554: d4210000 brk #0x800 <- 000044e4(b.cc)<__hyp_handle_fpsimd+0x1ac> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ q: 0x4558 0x455c (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3d89e>:<3d853>:<3d835>:<3d821>: lmnq ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x4558 0x455c (DW_OP_fbreg -0x50) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~lmnq ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ └>└>00004558: 385b73a8 ldurb w8, [x29, #-73] <- 0000450c(b)<__hyp_handle_fpsimd+0x1b0>,00004550(b)<__hyp_handle_fpsimd+0x1b0> -num param int (base type, DW_ATE_signed size:4) 0x4558 0x455c (DW_OP_fbreg -0x50) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c lmn ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~lmn ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 0000455c: 3818f3a8 sturb w8, [x29, #-113] lmn ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~lmn ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004560: 3858f3a8 ldurb w8, [x29, #-113] -num param int (base type, DW_ATE_signed size:4) 0x44bc 0x4564 (DW_OP_fbreg -0x78) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c lm ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num); ~lm ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004564: 381873a8 sturb w8, [x29, #-121] lm ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║} ~lm ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004568: 385873a8 ldurb w8, [x29, #-121] -num param int (base type, DW_ATE_signed size:4) 0x44b4 0x456c (DW_OP_fbreg -0x80) cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __hyp_handle_fpsimd:221.6 (switch.h) Sbepe if (║has_vhe() && system_supports_sve()) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 0000456c: 71000508 subs w8, w8, #0x1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─────00004570: 540008c1 b.ne 4688 <__hyp_handle_fpsimd+0x2e0> // b.any ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ┌─00004574: 14000001 b 4578 <__hyp_handle_fpsimd+0x1d0> <- 00004570(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ └>00004578: 528002c8 mov w8, #0x16 // #22 <- 00004574(b)<__hyp_handle_fpsimd+0x1d0> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 0000457c: b81b83a8 stur w8, [x29, #-72] r: 0x4580 0x463c cpus_have_const_cap inlined from system_supports_sve:688 (cpufeature.h) <3d8e3>:<3d8cf>: s: 0x4580 0x463c system_supports_sve inlined from __hyp_handle_fpsimd:222 (switch.h) <3d8cf>: rs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ cpus_have_const_cap:479.30 (cpufeature.h) Sbepe return cpus_have_final_cap(║num); +num param int (base type, DW_ATE_signed size:4) 0x4580 0x463c (DW_OP_fbreg -0x48) cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~rs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004580: b85b83a8 ldur w8, [x29, #-72] ~rs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004584: b81c03a8 stur w8, [x29, #-64] t: 0x4588 0x4630 cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <3d901>:<3d8e3>:<3d8cf>: u: 0x4588 0x45b0 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <3d91e>:<3d901>:<3d8e3>:<3d8cf>: rstu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready); +num param int (base type, DW_ATE_signed size:4) 0x4588 0x4630 (DW_OP_fbreg -0x40) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4588 0x45b0 (DW_OP_fbreg -0x2c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~rstu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004588: f00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~rstu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 0000458c: b9479928 ldr w8, [x9, #1944] ~rstu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004590: 71000108 subs w8, w8, #0x0 ~rstu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004594: 1a9f07ea cset w10, ne // ne = any ~rstu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004598: 381d43aa sturb w10, [x29, #-44] rstu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~rstu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 0000459c: 385d43aa ldurb w10, [x29, #-44] ~rstu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000045a0: 2a0a03e9 mov w9, w10 ~rstu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000045a4: 92400129 and x9, x9, #0x1 rstu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~rstu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000045a8: f81c83a9 stur x9, [x29, #-56] rstu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~rstu ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000045ac: f85c83a9 ldur x9, [x29, #-56] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4588 0x45b0 (DW_OP_fbreg -0x2c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c rst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~rst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │┌────000045b0: b4000389 cbz x9, 4620 <__hyp_handle_fpsimd+0x278> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ~rst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ┌─000045b4: 14000001 b 45b8 <__hyp_handle_fpsimd+0x210> <- 000045b0(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │ rst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~rst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ └>000045b8: b85c03a8 ldur w8, [x29, #-64] <- 000045b4(b)<__hyp_handle_fpsimd+0x210> ~rst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 000045bc: b81e83a8 stur w8, [x29, #-24] v: 0x45c0 0x4620 (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3d94a>:<3d901>:<3d8e3>:<3d8cf>: rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x45c0 0x4620 (DW_OP_fbreg -0x18) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 000045c0: b85e83a8 ldur w8, [x29, #-24] rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 000045c4: 7100f508 subs w8, w8, #0x3d ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ┌──000045c8: 540000ab b.lt 45dc <__hyp_handle_fpsimd+0x234> // b.tstop ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │ ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │┌─000045cc: 14000001 b 45d0 <__hyp_handle_fpsimd+0x228> <- 000045c8(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ││ ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │└>000045d0: 2a1f03e8 mov w8, wzr <- 000045cc(b)<__hyp_handle_fpsimd+0x228> rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │ 000045d4: 381ee3a8 sturb w8, [x29, #-18] ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││┌┼──000045d8: 14000013 b 4624 <__hyp_handle_fpsimd+0x27c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││││ rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x45dc 0x4610 (DW_OP_fbreg -0x1c) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││└─>000045dc: b89e83a8 ldursw x8, [x29, #-24] <- 000045c8(b.cc)<__hyp_handle_fpsimd+0x234> ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 000045e0: d37ced08 lsl x8, x8, #4 ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 000045e4: f00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 000045e8: 911e8129 add x9, x9, #0x7a0 ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 000045ec: b868692a ldr w10, [x9, x8] ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 000045f0: 7100014a subs w10, w10, #0x0 ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 000045f4: 1a9f07eb cset w11, ne // ne = any ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 000045f8: 381e43ab sturb w11, [x29, #-28] rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 000045fc: 385e43ab ldurb w11, [x29, #-28] ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 00004600: 2a0b03e8 mov w8, w11 ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 00004604: 92400108 and x8, x8, #0x1 rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 00004608: f81d83a8 stur x8, [x29, #-40] rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 0000460c: f85d83a8 ldur x8, [x29, #-40] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x45dc 0x4610 (DW_OP_fbreg -0x1c) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 00004610: f1000108 subs x8, x8, #0x0 ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 00004614: 1a9f07eb cset w11, ne // ne = any rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 00004618: 381ee3ab sturb w11, [x29, #-18] ~rstv ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ ┌─0000461c: 14000002 b 4624 <__hyp_handle_fpsimd+0x27c> -num param int (base type, DW_ATE_signed size:4) 0x45c0 0x4620 (DW_OP_fbreg -0x18) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ │ rst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~rst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │└┼─┼>00004620: d4210000 brk #0x800 <- 000045b0(b.cc)<__hyp_handle_fpsimd+0x278> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ w: 0x4624 0x4628 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3d94a>:<3d901>:<3d8e3>:<3d8cf>: rstw ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x4624 0x4628 (DW_OP_fbreg -0x18) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~rstw ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ └>└>00004624: 385ee3a8 ldurb w8, [x29, #-18] <- 000045d8(b)<__hyp_handle_fpsimd+0x27c>,0000461c(b)<__hyp_handle_fpsimd+0x27c> -num param int (base type, DW_ATE_signed size:4) 0x4624 0x4628 (DW_OP_fbreg -0x18) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c rst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~rst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004628: 381c73a8 sturb w8, [x29, #-57] rst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~rst ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 0000462c: 385c73a8 ldurb w8, [x29, #-57] -num param int (base type, DW_ATE_signed size:4) 0x4588 0x4630 (DW_OP_fbreg -0x40) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c rs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num); ~rs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004630: 381bf3a8 sturb w8, [x29, #-65] ~rs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004634: 2a1f03e0 mov w0, wzr rs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║} ~rs ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004638: 385bf3a8 ldurb w8, [x29, #-65] -num param int (base type, DW_ATE_signed size:4) 0x4580 0x463c (DW_OP_fbreg -0x48) cpus_have_const_cap(inlined):system_supports_sve(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:222.15 (switch.h) Sbepe sve_guest = ║vcpu_has_sve(vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 0000463c: 71000508 subs w8, w8, #0x1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004640: b90017e0 str w0, [sp, #20] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ┌───00004644: 540000e1 b.ne 4660 <__hyp_handle_fpsimd+0x2b8> // b.any ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ┌─00004648: 14000001 b 464c <__hyp_handle_fpsimd+0x2a4> <- 00004644(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ └>0000464c: f9404fe8 ldr x8, [sp, #152] <- 00004648(b)<__hyp_handle_fpsimd+0x2a4> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004650: 3962c109 ldrb w9, [x8, #2224] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004654: 53051529 ubfx w9, w9, #5, #1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004658: b90017e9 str w9, [sp, #20] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ┌─0000465c: 14000001 b 4660 <__hyp_handle_fpsimd+0x2b8> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ └>└>00004660: b94017e8 ldr w8, [sp, #20] <- 00004644(b.cc)<__hyp_handle_fpsimd+0x2b8>,0000465c(b)<__hyp_handle_fpsimd+0x2b8> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:222.13 (switch.h) sbepe sve_guest ║= vcpu_has_sve(vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004664: 12000108 and w8, w8, #0x1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004668: 390243e8 strb w8, [sp, #144] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:223.14 (switch.h) Sbepe sve_host = ║vcpu->arch.flags & KVM_ARM64_HOST_SVE_IN_USE; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 0000466c: f9404fe9 ldr x9, [sp, #152] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:223.25 (switch.h) sbepe sve_host = vcpu->arch.║flags & KVM_ARM64_HOST_SVE_IN_USE; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004670: b948b128 ldr w8, [x9, #2224] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:223.14 (switch.h) sbepe sve_host = ║vcpu->arch.flags & KVM_ARM64_HOST_SVE_IN_USE; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004674: 53030d08 ubfx w8, w8, #3, #1 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:223.12 (switch.h) sbepe sve_host ║= vcpu->arch.flags & KVM_ARM64_HOST_SVE_IN_USE; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004678: 390233e8 strb w8, [sp, #140] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 0000467c: 52800028 mov w8, #0x1 // #1 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:224.7 (switch.h) Sbepe vhe ║= true; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004680: 390253e8 strb w8, [sp, #148] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:225.2 (switch.h) Sbepe ║} else { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ┌───00004684: 14000008 b 46a4 <__hyp_handle_fpsimd+0x2fc> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>└─┼──>00004688: 2a1f03e8 mov w8, wzr <- 000044a4(b.cc)<__hyp_handle_fpsimd+0x2e0>,00004570(b.cc)<__hyp_handle_fpsimd+0x2e0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __hyp_handle_fpsimd:226.13 (switch.h) Sbepe sve_guest ║= false; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 0000468c: 390243e8 strb w8, [sp, #144] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __hyp_handle_fpsimd:227.12 (switch.h) Sbepe sve_host ║= false; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004690: 390233e8 strb w8, [sp, #140] x: 0x4694 0x469c has_vhe inlined from __hyp_handle_fpsimd:228 (switch.h) <3d979>: x ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ has_vhe:113.3 (virt.h) Sbepe ║return false; ~x ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004694: 381ef3a8 sturb w8, [x29, #-17] x ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ has_vhe:116.1 (virt.h) Sbepe ║} ~x ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004698: 385ef3a8 ldurb w8, [x29, #-17] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __hyp_handle_fpsimd:228.7 (switch.h) Sbepe vhe ║= has_vhe(); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 0000469c: 390253e8 strb w8, [sp, #148] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─000046a0: 14000001 b 46a4 <__hyp_handle_fpsimd+0x2fc> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:231.35 (switch.h) Sbepe esr_ec = kvm_vcpu_trap_get_class(║vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>└>000046a4: f9404fe8 ldr x8, [sp, #152] <- 00004684(b)<__hyp_handle_fpsimd+0x2fc>,000046a0(b)<__hyp_handle_fpsimd+0x2fc> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000046a8: f81f03a8 stur x8, [x29, #-16] y: 0x46ac 0x46c4 kvm_vcpu_trap_get_class inlined from __hyp_handle_fpsimd:231 (switch.h) <3d98d>: y ║ ║ ║ ║ ║ ║ ║ ║ ║ │ kvm_vcpu_trap_get_class:311.9 (kvm_emulate.h) Sbepe return ║ESR_ELx_EC(kvm_vcpu_get_esr(vcpu)); +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x46ac 0x46c4 (DW_OP_fbreg -0x10) kvm_vcpu_trap_get_class(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~y ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000046ac: f85f03a8 ldur x8, [x29, #-16] ~y ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000046b0: f81f83a8 stur x8, [x29, #-8] z: 0x46b4 0x46c0 kvm_vcpu_get_esr inlined from kvm_vcpu_trap_get_class:311 (kvm_emulate.h) <3d9a9>:<3d98d>: yz ║ ║ ║ ║ ║ ║ ║ ║ ║ │ kvm_vcpu_get_esr:224.9 (kvm_emulate.h) Sbepe return ║vcpu->arch.fault.esr_el2; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x46b4 0x46c0 (DW_OP_fbreg -0x8) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_class(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ~yz ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000046b4: f85f83a8 ldur x8, [x29, #-8] yz ║ ║ ║ ║ ║ ║ ║ ║ ║ │ kvm_vcpu_get_esr:224.26 (kvm_emulate.h) sbepe return vcpu->arch.fault.║esr_el2; ~yz ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000046b8: b9488909 ldr w9, [x8, #2184] ~yz ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000046bc: 2a0903e8 mov w8, w9 -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x46b4 0x46c0 (DW_OP_fbreg -0x8) kvm_vcpu_get_esr(inlined):kvm_vcpu_trap_get_class(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c y ║ ║ ║ ║ ║ ║ ║ ║ ║ │ kvm_vcpu_trap_get_class:311.9 (kvm_emulate.h) Sbepe return ║ESR_ELx_EC(kvm_vcpu_get_esr(vcpu)); ~y ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000046c0: d35afd08 lsr x8, x8, #26 -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x46ac 0x46c4 (DW_OP_fbreg -0x10) kvm_vcpu_trap_get_class(inlined):__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __hyp_handle_fpsimd:231.9 (switch.h) Sbepe esr_ec ║= kvm_vcpu_trap_get_class(vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000046c4: 390223e8 strb w8, [sp, #136] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __hyp_handle_fpsimd:232.6 (switch.h) Sbepe if (║esr_ec != ESR_ELx_EC_FP_ASIMD && ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000046c8: 394223e8 ldrb w8, [sp, #136] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __hyp_handle_fpsimd:232.36 (switch.h) sbepe if (esr_ec != ESR_ELx_EC_FP_ASIMD && ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 000046cc: 71001d08 subs w8, w8, #0x7 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌────000046d0: 54000120 b.eq 46f4 <__hyp_handle_fpsimd+0x34c> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─000046d4: 14000001 b 46d8 <__hyp_handle_fpsimd+0x330> <- 000046d0(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:233.6 (switch.h) Sbepe ║esr_ec != ESR_ELx_EC_SVE) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ └>000046d8: 394223e8 ldrb w8, [sp, #136] <- 000046d4(b)<__hyp_handle_fpsimd+0x330> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __hyp_handle_fpsimd:232.6 (switch.h) Sbepe if (║esr_ec != ESR_ELx_EC_FP_ASIMD && ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000046dc: 71006508 subs w8, w8, #0x19 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌──000046e0: 540000a0 b.eq 46f4 <__hyp_handle_fpsimd+0x34c> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │┌─000046e4: 14000001 b 46e8 <__hyp_handle_fpsimd+0x340> <- 000046e0(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │└>000046e8: 2a1f03e8 mov w8, wzr <- 000046e4(b)<__hyp_handle_fpsimd+0x340> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:234.3 (switch.h) Sbepe ║return false; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000046ec: 39029fe8 strb w8, [sp, #167] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌────┼─┼──000046f0: 14000085 b 4904 <__hyp_handle_fpsimd+0x55c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:237.7 (switch.h) Sbepe if (!║sve_guest) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ └>└─>000046f4: 394243e8 ldrb w8, [sp, #144] <- 000046d0(b.cc)<__hyp_handle_fpsimd+0x34c>,000046e0(b.cc)<__hyp_handle_fpsimd+0x34c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __hyp_handle_fpsimd:237.6 (switch.h) sbepe if (║!sve_guest) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌────000046f8: 37000148 tbnz w8, #0, 4720 <__hyp_handle_fpsimd+0x378> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ┌─000046fc: 14000001 b 4700 <__hyp_handle_fpsimd+0x358> <- 000046f8(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:238.7 (switch.h) Sbepe if (║esr_ec != ESR_ELx_EC_FP_ASIMD) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ └>00004700: 394223e8 ldrb w8, [sp, #136] <- 000046fc(b)<__hyp_handle_fpsimd+0x358> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:238.7 (switch.h) sbepe if (║esr_ec != ESR_ELx_EC_FP_ASIMD) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004704: 71001d08 subs w8, w8, #0x7 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │┌───00004708: 540000a0 b.eq 471c <__hyp_handle_fpsimd+0x374> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ┌─0000470c: 14000001 b 4710 <__hyp_handle_fpsimd+0x368> <- 00004708(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ └>00004710: 2a1f03e8 mov w8, wzr <- 0000470c(b)<__hyp_handle_fpsimd+0x368> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ __hyp_handle_fpsimd:239.4 (switch.h) Sbepe ║return false; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004714: 39029fe8 strb w8, [sp, #167] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌──┼┼───00004718: 1400007b b 4904 <__hyp_handle_fpsimd+0x55c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ __hyp_handle_fpsimd:238.17 (switch.h) Sbepe if (esr_ec != ║ESR_ELx_EC_FP_ASIMD) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │└>┌─0000471c: 14000001 b 4720 <__hyp_handle_fpsimd+0x378> <- 00004708(b.cc)<__hyp_handle_fpsimd+0x374> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:243.6 (switch.h) Sbepe if (║vhe) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ └─>└>00004720: 394253e8 ldrb w8, [sp, #148] <- 000046f8(b.cc)<__hyp_handle_fpsimd+0x378>,0000471c(b)<__hyp_handle_fpsimd+0x378> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:243.6 (switch.h) sbepe if (║vhe) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │┌──────00004724: 360002e8 tbz w8, #0, 4780 <__hyp_handle_fpsimd+0x3d8> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ┌─00004728: 14000001 b 472c <__hyp_handle_fpsimd+0x384> <- 00004724(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │ __hyp_handle_fpsimd:244.13 (switch.h) Sbepe u64 reg = ║read_sysreg(cpacr_el1) | CPACR_EL1_FPEN; +reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x472c 0x4780 (DW_OP_breg31 0x80) lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:244 +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x472c 0x4740 (DW_OP_breg31 0x78) lexblock:lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:244 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ └>0000472c: d5381048 mrs x8, cpacr_el1 <- 00004728(b)<__hyp_handle_fpsimd+0x384> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004730: f9003fe8 str x8, [sp, #120] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004734: f9403fe8 ldr x8, [sp, #120] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004738: f9003be8 str x8, [sp, #112] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 0000473c: f9403be8 ldr x8, [sp, #112] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x472c 0x4740 (DW_OP_breg31 0x78) lexblock:lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:244 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ __hyp_handle_fpsimd:244.36 (switch.h) sbepe u64 reg = read_sysreg(cpacr_el1) ║| CPACR_EL1_FPEN; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004740: b26c0508 orr x8, x8, #0x300000 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ __hyp_handle_fpsimd:244.7 (switch.h) sbepe u64 ║reg = read_sysreg(cpacr_el1) | CPACR_EL1_FPEN; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004744: f90043e8 str x8, [sp, #128] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ __hyp_handle_fpsimd:246.7 (switch.h) Sbepe if (║sve_guest) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004748: 394243e9 ldrb w9, [sp, #144] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ __hyp_handle_fpsimd:246.7 (switch.h) sbepe if (║sve_guest) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││┌─────0000474c: 360000c9 tbz w9, #0, 4764 <__hyp_handle_fpsimd+0x3bc> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ ┌─00004750: 14000001 b 4754 <__hyp_handle_fpsimd+0x3ac> <- 0000474c(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ │ __hyp_handle_fpsimd:247.8 (switch.h) Sbepe reg ║|= CPACR_EL1_ZEN; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ └>00004754: f94043e8 ldr x8, [sp, #128] <- 00004750(b)<__hyp_handle_fpsimd+0x3ac> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 00004758: b2700508 orr x8, x8, #0x30000 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ 0000475c: f90043e8 str x8, [sp, #128] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ __hyp_handle_fpsimd:247.4 (switch.h) sbepe ║reg |= CPACR_EL1_ZEN; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ ┌─00004760: 14000001 b 4764 <__hyp_handle_fpsimd+0x3bc> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ │ __hyp_handle_fpsimd:249.3 (switch.h) Sbepe ║write_sysreg(reg, cpacr_el1); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││└>┌─└>00004764: 14000001 b 4768 <__hyp_handle_fpsimd+0x3c0> <- 0000474c(b.cc)<__hyp_handle_fpsimd+0x3bc>,00004760(b)<__hyp_handle_fpsimd+0x3bc> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │ __hyp_handle_fpsimd:249.3 (switch.h) sbepe ║write_sysreg(reg, cpacr_el1); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4768 0x477c (DW_OP_breg31 0x68) lexblock:lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:249 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ └──>00004768: f94043e8 ldr x8, [sp, #128] <- 00004764(b)<__hyp_handle_fpsimd+0x3c0> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 0000476c: f90037e8 str x8, [sp, #104] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004770: f94037e8 ldr x8, [sp, #104] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ 00004774: d5181048 msr cpacr_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ┌─00004778: 14000001 b 477c <__hyp_handle_fpsimd+0x3d4> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4768 0x477c (DW_OP_breg31 0x68) lexblock:lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:249 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ │ __hyp_handle_fpsimd:250.2 (switch.h) Sbepe ║} else { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││┌───└>0000477c: 1400000d b 47b0 <__hyp_handle_fpsimd+0x408> <- 00004778(b)<__hyp_handle_fpsimd+0x3d4> -reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x472c 0x4780 (DW_OP_breg31 0x80) lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:244 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │││ __hyp_handle_fpsimd:251.3 (switch.h) Sbepe ║write_sysreg(read_sysreg(cptr_el2) & ~(u64)CPTR_EL2_TFP, ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │└┼──>┌─00004780: 14000001 b 4784 <__hyp_handle_fpsimd+0x3dc> <- 00004724(b.cc)<__hyp_handle_fpsimd+0x3d8> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:251.3 (switch.h) sbepe ║write_sysreg(read_sysreg(cptr_el2) & ~(u64)CPTR_EL2_TFP, +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4784 0x47ac (DW_OP_breg31 0x60) lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:251 +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4784 0x4798 (DW_OP_breg31 0x58) lexblock:lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:251 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ └>00004784: d53c1148 mrs x8, cptr_el2 <- 00004780(b)<__hyp_handle_fpsimd+0x3dc> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004788: f9002fe8 str x8, [sp, #88] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 0000478c: f9402fe8 ldr x8, [sp, #88] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004790: f9002be8 str x8, [sp, #80] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004794: f9402be8 ldr x8, [sp, #80] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4784 0x4798 (DW_OP_breg31 0x58) lexblock:lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:251 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:251.3 (switch.h) sbepe ║write_sysreg(read_sysreg(cptr_el2) & ~(u64)CPTR_EL2_TFP, ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004798: 9275f908 and x8, x8, #0xfffffffffffffbff ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 0000479c: f90033e8 str x8, [sp, #96] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 000047a0: f94033e8 ldr x8, [sp, #96] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 000047a4: d51c1148 msr cptr_el2, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ┌─000047a8: 14000001 b 47ac <__hyp_handle_fpsimd+0x404> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4784 0x47ac (DW_OP_breg31 0x60) lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:251 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ┌─└>000047ac: 14000001 b 47b0 <__hyp_handle_fpsimd+0x408> <- 000047a8(b)<__hyp_handle_fpsimd+0x404> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:255.2 (switch.h) Sbepe ║isb(); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ └>└──>000047b0: d5033fdf isb <- 0000477c(b)<__hyp_handle_fpsimd+0x408>,000047ac(b)<__hyp_handle_fpsimd+0x408> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:257.6 (switch.h) Sbepe if (║vcpu->arch.flags & KVM_ARM64_FP_HOST) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000047b4: f9404fe8 ldr x8, [sp, #152] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:257.6 (switch.h) sbepe if (║vcpu->arch.flags & KVM_ARM64_FP_HOST) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000047b8: 3962c109 ldrb w9, [x8, #2224] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ┌────000047bc: 361003e9 tbz w9, #2, 4838 <__hyp_handle_fpsimd+0x490> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ┌─000047c0: 14000001 b 47c4 <__hyp_handle_fpsimd+0x41c> <- 000047bc(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:262.7 (switch.h) Sbepe if (║sve_host) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ └>000047c4: 394233e8 ldrb w8, [sp, #140] <- 000047c0(b)<__hyp_handle_fpsimd+0x41c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:262.7 (switch.h) sbepe if (║sve_host) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ┌──000047c8: 36000268 tbz w8, #0, 4814 <__hyp_handle_fpsimd+0x46c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │┌─000047cc: 14000001 b 47d0 <__hyp_handle_fpsimd+0x428> <- 000047c8(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ││ __hyp_handle_fpsimd:263.35 (switch.h) Sbepe struct thread_struct *thread = ║container_of( +thread var pointer(struct thread_struct<2d002>/<37328>) 0x47d0 0x4814 (DW_OP_breg31 0x48) lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:263 +__mptr var pointer(no type) 0x47d0 0x47f4 (DW_OP_breg31 0x40) lexblock:lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:263 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │└>000047d0: f9404fe8 ldr x8, [sp, #152] <- 000047cc(b)<__hyp_handle_fpsimd+0x428> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ 000047d4: f9466508 ldr x8, [x8, #3272] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ 000047d8: f90023e8 str x8, [sp, #64] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │┌─000047dc: 14000001 b 47e0 <__hyp_handle_fpsimd+0x438> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ││ __hyp_handle_fpsimd:263.35 (switch.h) sbepe struct thread_struct *thread = ║container_of( ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │┌┼└>000047e0: 14000001 b 47e4 <__hyp_handle_fpsimd+0x43c> <- 000047dc(b)<__hyp_handle_fpsimd+0x438> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │││ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │││ __hyp_handle_fpsimd:263.35 (switch.h) sbepe struct thread_struct *thread = ║container_of( ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │└┼─>000047e4: f94023e8 ldr x8, [sp, #64] <- 000047e0(b)<__hyp_handle_fpsimd+0x43c> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ 000047e8: f1020108 subs x8, x8, #0x80 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:263.35 (switch.h) sbepe struct thread_struct *thread = ║container_of( ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ 000047ec: f9001fe8 str x8, [sp, #56] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:263.35 (switch.h) sbepe struct thread_struct *thread = ║container_of( ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ 000047f0: f9401fe8 ldr x8, [sp, #56] -__mptr var pointer(no type) 0x47d0 0x47f4 (DW_OP_breg31 0x40) lexblock:lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:263 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:263.26 (switch.h) sbepe struct thread_struct *║thread = container_of( ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ 000047f4: f90027e8 str x8, [sp, #72] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:267.28 (switch.h) Sbepe sve_save_state(sve_pffr(║thread), ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ 000047f8: f94027e0 ldr x0, [sp, #72] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:267.19 (switch.h) sbepe sve_save_state(║sve_pffr(thread), ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ 000047fc: 940000a2 bl 4a84 <sve_pffr> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:268.13 (switch.h) Sbepe &║vcpu->arch.host_fpsimd_state->fpsr); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ 00004800: f9404fe8 ldr x8, [sp, #152] <- 000047fc(bl-succ)<return> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:268.24 (switch.h) sbepe &vcpu->arch.║host_fpsimd_state->fpsr); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ 00004804: f9466508 ldr x8, [x8, #3272] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:268.43 (switch.h) sbepe &vcpu->arch.host_fpsimd_state->║fpsr); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ 00004808: 91080101 add x1, x8, #0x200 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:267.4 (switch.h) Sbepe ║sve_save_state(sve_pffr(thread), ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ 0000480c: 94005c13 bl 1b858 <sve_save_state> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:269.3 (switch.h) Sbepe ║} else { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │┌┼──00004810: 14000005 b 4824 <__hyp_handle_fpsimd+0x47c> <- 0000480c(bl-succ)<return> -thread var pointer(struct thread_struct<2d002>/<37328>) 0x47d0 0x4814 (DW_OP_breg31 0x48) lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:263 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │││ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │││ __hyp_handle_fpsimd:270.24 (switch.h) Sbepe __fpsimd_save_state(║vcpu->arch.host_fpsimd_state); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││└─>00004814: f9404fe8 ldr x8, [sp, #152] <- 000047c8(b.cc)<__hyp_handle_fpsimd+0x46c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ __hyp_handle_fpsimd:270.35 (switch.h) sbepe __fpsimd_save_state(vcpu->arch.║host_fpsimd_state); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ 00004818: f9466500 ldr x0, [x8, #3272] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ __hyp_handle_fpsimd:270.4 (switch.h) sbepe ║__fpsimd_save_state(vcpu->arch.host_fpsimd_state); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ 0000481c: 94002cae bl fad4 <__fpsimd_save_state> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ ┌─00004820: 14000001 b 4824 <__hyp_handle_fpsimd+0x47c> <- 0000481c(bl-succ)<return> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ │ __hyp_handle_fpsimd:273.3 (switch.h) Sbepe ║vcpu->arch.flags &= ~KVM_ARM64_FP_HOST; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │└>└>00004824: f9404fe8 ldr x8, [sp, #152] <- 00004810(b)<__hyp_handle_fpsimd+0x47c>,00004820(b)<__hyp_handle_fpsimd+0x47c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:273.20 (switch.h) sbepe vcpu->arch.flags ║&= ~KVM_ARM64_FP_HOST; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004828: f9445909 ldr x9, [x8, #2224] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 0000482c: 927df929 and x9, x9, #0xfffffffffffffffb ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004830: f9045909 str x9, [x8, #2224] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:274.2 (switch.h) Sbepe } ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ┌─00004834: 14000001 b 4838 <__hyp_handle_fpsimd+0x490> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:276.6 (switch.h) Sbepe if (║sve_guest) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ └─>└>00004838: 394243e8 ldrb w8, [sp, #144] <- 000047bc(b.cc)<__hyp_handle_fpsimd+0x490>,00004834(b)<__hyp_handle_fpsimd+0x490> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:276.6 (switch.h) sbepe if (║sve_guest) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ┌──0000483c: 36000308 tbz w8, #0, 489c <__hyp_handle_fpsimd+0x4f4> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │┌─00004840: 14000001 b 4844 <__hyp_handle_fpsimd+0x49c> <- 0000483c(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ __hyp_handle_fpsimd:277.18 (switch.h) Sbepe sve_load_state(║vcpu_sve_pffr(vcpu), ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │└>00004844: f9404fe8 ldr x8, [sp, #152] <- 00004840(b)<__hyp_handle_fpsimd+0x49c> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004848: f9443109 ldr x9, [x8, #2144] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 0000484c: b9486900 ldr w0, [x8, #2152] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004850: f90007e9 str x9, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004854: 9400009a bl 4abc <sve_ffr_offset> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004858: f94007e8 ldr x8, [sp, #8] <- 00004854(bl-succ)<return> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 0000485c: 8b000100 add x0, x8, x0 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:278.12 (switch.h) Sbepe &║vcpu->arch.ctxt.fp_regs.fpsr, ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004860: f9404fe8 ldr x8, [sp, #152] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:278.36 (switch.h) sbepe &vcpu->arch.ctxt.fp_regs.║fpsr, ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004864: 91124101 add x1, x8, #0x490 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:279.11 (switch.h) Sbepe ║sve_vq_from_vl(vcpu->arch.sve_max_vl) - 1); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004868: b948690a ldr w10, [x8, #2152] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 0000486c: 53047d4a lsr w10, w10, #4 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:279.49 (switch.h) sbepe sve_vq_from_vl(vcpu->arch.sve_max_vl) ║- 1); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004870: 7100054a subs w10, w10, #0x1 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:279.11 (switch.h) sbepe ║sve_vq_from_vl(vcpu->arch.sve_max_vl) - 1); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004874: 2a0a03e2 mov w2, w10 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:277.3 (switch.h) Sbepe ║sve_load_state(vcpu_sve_pffr(vcpu), ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004878: 94005bf6 bl 1b850 <sve_load_state> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:280.3 (switch.h) Sbepe ║write_sysreg_s(__vcpu_sys_reg(vcpu, ZCR_EL1), SYS_ZCR_EL12); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │┌─0000487c: 14000001 b 4880 <__hyp_handle_fpsimd+0x4d8> <- 00004878(bl-succ)<return> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ __hyp_handle_fpsimd:280.3 (switch.h) sbepe ║write_sysreg_s(__vcpu_sys_reg(vcpu, ZCR_EL1), SYS_ZCR_EL12); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4880 0x4898 (DW_OP_breg31 0x30) lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:280 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │└>00004880: f9404fe8 ldr x8, [sp, #152] <- 0000487c(b)<__hyp_handle_fpsimd+0x4d8> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004884: f9426908 ldr x8, [x8, #1232] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004888: f9001be8 str x8, [sp, #48] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 0000488c: f9401be8 ldr x8, [sp, #48] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 00004890: d51d1208 msr zcr_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │┌─00004894: 14000001 b 4898 <__hyp_handle_fpsimd+0x4f0> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4880 0x4898 (DW_OP_breg31 0x30) lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:280 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ __hyp_handle_fpsimd:281.2 (switch.h) Sbepe ║} else { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ┌┼└>00004898: 14000005 b 48ac <__hyp_handle_fpsimd+0x504> <- 00004894(b)<__hyp_handle_fpsimd+0x4f0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ││ __hyp_handle_fpsimd:282.27 (switch.h) Sbepe __fpsimd_restore_state(&║vcpu->arch.ctxt.fp_regs); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │└─>0000489c: f9404fe8 ldr x8, [sp, #152] <- 0000483c(b.cc)<__hyp_handle_fpsimd+0x4f4> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:282.43 (switch.h) sbepe __fpsimd_restore_state(&vcpu->arch.ctxt.║fp_regs); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 000048a0: 910a4100 add x0, x8, #0x290 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:282.3 (switch.h) sbepe ║__fpsimd_restore_state(&vcpu->arch.ctxt.fp_regs); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 000048a4: 94002ca1 bl fb28 <__fpsimd_restore_state> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ┌─000048a8: 14000001 b 48ac <__hyp_handle_fpsimd+0x504> <- 000048a4(bl-succ)<return> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:286.8 (switch.h) Sbepe if (!(║read_sysreg(hcr_el2) & HCR_RW)) +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x48ac 0x48bc (DW_OP_breg31 0x28) lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:286 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ └>└>000048ac: d53c1108 mrs x8, hcr_el2 <- 00004898(b)<__hyp_handle_fpsimd+0x504>,000048a8(b)<__hyp_handle_fpsimd+0x504> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000048b0: f90017e8 str x8, [sp, #40] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000048b4: f94017e8 ldr x8, [sp, #40] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000048b8: f90013e8 str x8, [sp, #32] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x48ac 0x48bc (DW_OP_breg31 0x28) lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:286 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:286.6 (switch.h) sbepe if (║!(read_sysreg(hcr_el2) & HCR_RW)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000048bc: 39408fe9 ldrb w9, [sp, #35] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ┌─────000048c0: 37380149 tbnz w9, #7, 48e8 <__hyp_handle_fpsimd+0x540> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ┌─000048c4: 14000001 b 48c8 <__hyp_handle_fpsimd+0x520> <- 000048c0(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:287.3 (switch.h) Sbepe ║write_sysreg(__vcpu_sys_reg(vcpu, FPEXC32_EL2), fpexc32_el2); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ┌─└>000048c8: 14000001 b 48cc <__hyp_handle_fpsimd+0x524> <- 000048c4(b)<__hyp_handle_fpsimd+0x520> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:287.3 (switch.h) sbepe ║write_sysreg(__vcpu_sys_reg(vcpu, FPEXC32_EL2), fpexc32_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x48cc 0x48e8 (DW_OP_breg31 0x18) lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:287 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ └──>000048cc: f9404fe8 ldr x8, [sp, #152] <- 000048c8(b)<__hyp_handle_fpsimd+0x524> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 000048d0: f9442508 ldr x8, [x8, #2120] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 000048d4: f9000fe8 str x8, [sp, #24] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 000048d8: f9400fe8 ldr x8, [sp, #24] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ 000048dc: d51c5308 msr fpexc32_el2, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ┌─000048e0: 14000001 b 48e4 <__hyp_handle_fpsimd+0x53c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ┌─└>000048e4: 14000001 b 48e8 <__hyp_handle_fpsimd+0x540> <- 000048e0(b)<__hyp_handle_fpsimd+0x53c> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x48cc 0x48e8 (DW_OP_breg31 0x18) lexblock:__hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:287 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ │ __hyp_handle_fpsimd:289.2 (switch.h) Sbepe ║vcpu->arch.flags |= KVM_ARM64_FP_ENABLED; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ └>└──>000048e8: f9404fe8 ldr x8, [sp, #152] <- 000048c0(b.cc)<__hyp_handle_fpsimd+0x540>,000048e4(b)<__hyp_handle_fpsimd+0x540> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:289.19 (switch.h) sbepe vcpu->arch.flags ║|= KVM_ARM64_FP_ENABLED; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000048ec: f9445909 ldr x9, [x8, #2224] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000048f0: b27f0129 orr x9, x9, #0x2 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000048f4: f9045909 str x9, [x8, #2224] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000048f8: 5280002a mov w10, #0x1 // #1 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __hyp_handle_fpsimd:291.2 (switch.h) Sbepe ║return true; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 000048fc: 39029fea strb w10, [sp, #167] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ┌─00004900: 14000001 b 4904 <__hyp_handle_fpsimd+0x55c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __hyp_handle_fpsimd:292.1 (switch.h) Sbepe ║} ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└>└────>└>00004904: 39429fe0 ldrb w0, [sp, #167] <- 00004490(b)<__hyp_handle_fpsimd+0x55c>,000046f0(b)<__hyp_handle_fpsimd+0x55c>,00004718(b)<__hyp_handle_fpsimd+0x55c>,00004900(b)<__hyp_handle_fpsimd+0x55c> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004908: f940bbfc ldr x28, [sp, #368] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000490c: a9567bfd ldp x29, x30, [sp, #352] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004910: 910603ff add sp, sp, #0x180 ║ ║ ║ ║ ║ ║ ║ ║ ║ 000043b8 CFA:r29+32 r28:c-16 r29:c-32 r30:c-24 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004914: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x43a8 0x4918 (DW_OP_breg31 0x98) __hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:208 -vhe var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x43a8 0x4918 (DW_OP_breg31 0x94) __hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:210 -sve_guest var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x43a8 0x4918 (DW_OP_breg31 0x90) __hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:210 -sve_host var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x43a8 0x4918 (DW_OP_breg31 0x8c) __hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:210 -esr_ec var typedef(u8=typedef(__u8=unsigned char (base type, DW_ATE_unsigned_char size:1))) 0x43a8 0x4918 (DW_OP_breg31 0x88) __hyp_handle_fpsimd:arch/arm64/kvm/hyp/nvhe/switch.c:211 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00004918 <__hyp_handle_ptrauth>: ║ ║ ║ + __hyp_handle_ptrauth params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x4918 0x4930 (DW_OP_fbreg 0x18) ║ ║ ║ ║ ║ ║ ║ ║ ║ __hyp_handle_ptrauth:388.0 (switch.h) Sbepe ║{ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004918 CFA:r31 +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x4918 0x4930 (DW_OP_fbreg 0x18) __hyp_handle_ptrauth:arch/arm64/kvm/hyp/nvhe/switch.c:387 +ctxt var pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x4918 0x4930 (DW_OP_fbreg 0x10) __hyp_handle_ptrauth:arch/arm64/kvm/hyp/nvhe/switch.c:389 +val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4918 0x4930 (DW_OP_fbreg 0x8) __hyp_handle_ptrauth:arch/arm64/kvm/hyp/nvhe/switch.c:390 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004918: d10083ff sub sp, sp, #0x20 <- 00002f14(bl)<__hyp_handle_ptrauth> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000491c: f9000fe0 str x0, [sp, #24] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004920: 2a1f03e1 mov w1, wzr ║ ║ ║ ║ ║ ║ ║ ║ ║ __hyp_handle_ptrauth:394.3 (switch.h) SbePe ║return false; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004924: 2a0103e0 mov w0, w1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004928: 910083ff add sp, sp, #0x20 ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000491c CFA:r31+32 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000492c: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x4918 0x4930 (DW_OP_fbreg 0x18) __hyp_handle_ptrauth:arch/arm64/kvm/hyp/nvhe/switch.c:387 -ctxt var pointer(struct kvm_cpu_context<2d002>/<2d064>) 0x4918 0x4930 (DW_OP_fbreg 0x10) __hyp_handle_ptrauth:arch/arm64/kvm/hyp/nvhe/switch.c:389 -val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4918 0x4930 (DW_OP_fbreg 0x8) __hyp_handle_ptrauth:arch/arm64/kvm/hyp/nvhe/switch.c:390 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00004930 <__populate_fault_info>:║ ║ ║ + __populate_fault_info params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x4930 0x49e0 (DW_OP_fbreg -0x10) ║ ║ ║ ║ ║ ║ ║ ║ ║ __populate_fault_info:188.0 (switch.h) Sbepe ║{ +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x4930 0x49e0 (DW_OP_fbreg -0x10) __populate_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:187 +ec var typedef(u8=typedef(__u8=unsigned char (base type, DW_ATE_unsigned_char size:1))) 0x4930 0x49e0 (DW_OP_fbreg -0x14) __populate_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:189 +esr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4930 0x49e0 (DW_OP_breg31 0x10) __populate_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:190 +hpfar var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4930 0x49e0 (DW_OP_breg31 0x8) __populate_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:191 +far var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4930 0x49e0 (DW_OP_breg31 0x0) __populate_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:191 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004930: d10103ff sub sp, sp, #0x40 <- 00002f28(bl)<__populate_fault_info> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004934: a9037bfd stp x29, x30, [sp, #48] ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004930 CFA:r31 r29:u r30:u ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004938: 9100c3fd add x29, sp, #0x30 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000493c: f81f03a0 stur x0, [x29, #-16] ║ ║ ║ ║ ║ ║ ║ ║ ║ __populate_fault_info:193.8 (switch.h) SbePe esr = ║vcpu->arch.fault.esr_el2; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004940: f85f03a8 ldur x8, [x29, #-16] ║ ║ ║ ║ ║ ║ ║ ║ ║ __populate_fault_info:193.25 (switch.h) sbepe esr = vcpu->arch.fault.║esr_el2; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004944: b9488909 ldr w9, [x8, #2184] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004948: 2a0903e8 mov w8, w9 ║ ║ ║ ║ ║ ║ ║ ║ ║ __populate_fault_info:193.6 (switch.h) sbepe esr ║= vcpu->arch.fault.esr_el2; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000494c: f9000be8 str x8, [sp, #16] ║ ║ ║ ║ ║ ║ ║ ║ ║ __populate_fault_info:194.7 (switch.h) Sbepe ec = ║ESR_ELx_EC(esr); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004950: f9400be8 ldr x8, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004954: d35a7d08 ubfx x8, x8, #26, #6 ║ ║ ║ ║ ║ ║ ║ ║ ║ __populate_fault_info:194.5 (switch.h) sbepe ec ║= ESR_ELx_EC(esr); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004958: 381ec3a8 sturb w8, [x29, #-20] ║ ║ ║ ║ ║ ║ ║ ║ ║ __populate_fault_info:196.6 (switch.h) Sbepe if (║ec != ESR_ELx_EC_DABT_LOW && ec != ESR_ELx_EC_IABT_LOW) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000495c: 385ec3a8 ldurb w8, [x29, #-20] ║ ║ ║ ║ ║ ║ ║ ║ ║ __populate_fault_info:196.32 (switch.h) sbepe if (ec != ESR_ELx_EC_DABT_LOW ║&& ec != ESR_ELx_EC_IABT_LOW) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004960: 71009108 subs w8, w8, #0x24 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌────00004964: 54000120 b.eq 4988 <__populate_fault_info+0x58> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00004968: 14000001 b 496c <__populate_fault_info+0x3c> <- 00004964(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __populate_fault_info:196.35 (switch.h) sbepe if (ec != ESR_ELx_EC_DABT_LOW && ║ec != ESR_ELx_EC_IABT_LOW) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>0000496c: 385ec3a8 ldurb w8, [x29, #-20] <- 00004968(b)<__populate_fault_info+0x3c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __populate_fault_info:196.6 (switch.h) sbepe if (║ec != ESR_ELx_EC_DABT_LOW && ec != ESR_ELx_EC_IABT_LOW) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004970: 71008108 subs w8, w8, #0x20 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌──00004974: 540000a0 b.eq 4988 <__populate_fault_info+0x58> // b.none ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │┌─00004978: 14000001 b 497c <__populate_fault_info+0x4c> <- 00004974(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │└>0000497c: 52800028 mov w8, #0x1 // #1 <- 00004978(b)<__populate_fault_info+0x4c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __populate_fault_info:197.3 (switch.h) Sbepe ║return true; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004980: 381ff3a8 sturb w8, [x29, #-1] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌┼─┼──00004984: 14000013 b 49d0 <__populate_fault_info+0xa0> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ __populate_fault_info:199.24 (switch.h) Sbepe if (!__get_fault_info(║esr, &far, &hpfar)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │└>└─>00004988: f9400be0 ldr x0, [sp, #16] <- 00004964(b.cc)<__populate_fault_info+0x58>,00004974(b.cc)<__populate_fault_info+0x58> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 0000498c: 910003e1 mov x1, sp ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004990: 910023e2 add x2, sp, #0x8 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __populate_fault_info:199.7 (switch.h) sbepe if (!║__get_fault_info(esr, &far, &hpfar)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004994: 94000056 bl 4aec <__get_fault_info> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __populate_fault_info:199.6 (switch.h) sbepe if (║!__get_fault_info(esr, &far, &hpfar)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌──00004998: 370000a0 tbnz w0, #0, 49ac <__populate_fault_info+0x7c> <- 00004994(bl-succ)<return> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │┌─0000499c: 14000001 b 49a0 <__populate_fault_info+0x70> <- 00004998(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │└>000049a0: 2a1f03e8 mov w8, wzr <- 0000499c(b)<__populate_fault_info+0x70> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __populate_fault_info:200.3 (switch.h) Sbepe ║return false; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000049a4: 381ff3a8 sturb w8, [x29, #-1] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌┼──000049a8: 1400000a b 49d0 <__populate_fault_info+0xa0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ __populate_fault_info:202.29 (switch.h) Sbepe vcpu->arch.fault.far_el2 = ║far; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │└─>000049ac: f94003e8 ldr x8, [sp] <- 00004998(b.cc)<__populate_fault_info+0x7c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __populate_fault_info:202.2 (switch.h) sbepe ║vcpu->arch.fault.far_el2 = far; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000049b0: f85f03a9 ldur x9, [x29, #-16] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __populate_fault_info:202.27 (switch.h) sbepe vcpu->arch.fault.far_el2 ║= far; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000049b4: f9044928 str x8, [x9, #2192] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __populate_fault_info:203.31 (switch.h) Sbepe vcpu->arch.fault.hpfar_el2 = ║hpfar; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000049b8: f94007e8 ldr x8, [sp, #8] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __populate_fault_info:203.2 (switch.h) sbepe ║vcpu->arch.fault.hpfar_el2 = hpfar; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000049bc: f85f03a9 ldur x9, [x29, #-16] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __populate_fault_info:203.29 (switch.h) sbepe vcpu->arch.fault.hpfar_el2 ║= hpfar; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000049c0: f9044d28 str x8, [x9, #2200] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000049c4: 5280002a mov w10, #0x1 // #1 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __populate_fault_info:204.2 (switch.h) Sbepe ║return true; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 000049c8: 381ff3aa sturb w10, [x29, #-1] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─000049cc: 14000001 b 49d0 <__populate_fault_info+0xa0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __populate_fault_info:205.1 (switch.h) Sbepe ║} ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└>└>000049d0: 385ff3a0 ldurb w0, [x29, #-1] <- 00004984(b)<__populate_fault_info+0xa0>,000049a8(b)<__populate_fault_info+0xa0>,000049cc(b)<__populate_fault_info+0xa0> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000049d4: a9437bfd ldp x29, x30, [sp, #48] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000049d8: 910103ff add sp, sp, #0x40 ║ ║ ║ ║ ║ ║ ║ ║ ║ 0000493c CFA:r29+16 r29:c-16 r30:c-8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000049dc: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x4930 0x49e0 (DW_OP_fbreg -0x10) __populate_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:187 -ec var typedef(u8=typedef(__u8=unsigned char (base type, DW_ATE_unsigned_char size:1))) 0x4930 0x49e0 (DW_OP_fbreg -0x14) __populate_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:189 -esr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4930 0x49e0 (DW_OP_breg31 0x10) __populate_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:190 -hpfar var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4930 0x49e0 (DW_OP_breg31 0x8) __populate_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:191 -far var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4930 0x49e0 (DW_OP_breg31 0x0) __populate_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:191 ║ ║ ║ ║ ║ ║ ║ ║ ║ **000049e0 <__kvm_skip_instr>: ║ ║ ║ ║ ║ + __kvm_skip_instr params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x49e0 0x4a84 (DW_OP_fbreg -0x18) ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_skip_instr:36.0 (adjust_pc.h) Sbepe ║{ +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x49e0 0x4a84 (DW_OP_fbreg -0x18) __kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c:35 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000049e0: d10183ff sub sp, sp, #0x60 <- 00004388(bl)<__kvm_skip_instr> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000049e4: a9057bfd stp x29, x30, [sp, #80] ║ ║ ║ ║ ║ ║ ║ ║ ║ 000049e0 CFA:r31 r29:u r30:u ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000049e8: 910143fd add x29, sp, #0x50 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000049ec: f81e83a0 stur x0, [x29, #-24] +reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x49f0 0x4a04 (DW_OP_fbreg -0x20) lexblock:__kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c:37 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000049f0: d53c4028 mrs x8, elr_el2 ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_skip_instr:37.19 (adjust_pc.h) SbePe *vcpu_pc(vcpu) = ║read_sysreg_el2(SYS_ELR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000049f4: f81e03a8 stur x8, [x29, #-32] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000049f8: f85e03a8 ldur x8, [x29, #-32] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 000049fc: f90017e8 str x8, [sp, #40] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a00: f94017e8 ldr x8, [sp, #40] -reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x49f0 0x4a04 (DW_OP_fbreg -0x20) lexblock:__kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c:37 ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_skip_instr:37.11 (adjust_pc.h) sbepe *vcpu_pc(║vcpu) = read_sysreg_el2(SYS_ELR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a04: f85e83a9 ldur x9, [x29, #-24] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a08: f81f03a9 stur x9, [x29, #-16] a: 0x4a0c 0x4a10 vcpu_pc inlined from __kvm_skip_instr:37 (adjust_pc.h) <3dbd4>: a ║ ║ ║ ║ ║ ║ ║ ║ ║ vcpu_pc:132.27 (kvm_emulate.h) Sbepe return (unsigned long *)&║vcpu_gp_regs(vcpu)->pc; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x4a0c 0x4a10 (DW_OP_fbreg -0x10) vcpu_pc(inlined):__kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c ~a ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a0c: f85f03a9 ldur x9, [x29, #-16] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x4a0c 0x4a10 (DW_OP_fbreg -0x10) vcpu_pc(inlined):__kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_skip_instr:37.17 (adjust_pc.h) Sbepe *vcpu_pc(vcpu) ║= read_sysreg_el2(SYS_ELR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a10: f9013128 str x8, [x9, #608] +reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4a14 0x4a28 (DW_OP_breg31 0x20) lexblock:__kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c:38 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a14: d53c4008 mrs x8, spsr_el2 ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_skip_instr:38.31 (adjust_pc.h) Sbepe vcpu_gp_regs(vcpu)->pstate = ║read_sysreg_el2(SYS_SPSR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a18: f90013e8 str x8, [sp, #32] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a1c: f94013e8 ldr x8, [sp, #32] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a20: f9000fe8 str x8, [sp, #24] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a24: f9400fe8 ldr x8, [sp, #24] -reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4a14 0x4a28 (DW_OP_breg31 0x20) lexblock:__kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c:38 ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_skip_instr:38.2 (adjust_pc.h) sbepe ║vcpu_gp_regs(vcpu)->pstate = read_sysreg_el2(SYS_SPSR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a28: f85e83a9 ldur x9, [x29, #-24] ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_skip_instr:38.29 (adjust_pc.h) sbepe vcpu_gp_regs(vcpu)->pstate ║= read_sysreg_el2(SYS_SPSR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a2c: f9013528 str x8, [x9, #616] ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_skip_instr:40.17 (adjust_pc.h) Sbepe kvm_skip_instr(║vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a30: f85e83a0 ldur x0, [x29, #-24] ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_skip_instr:40.2 (adjust_pc.h) sbepe ║kvm_skip_instr(vcpu); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a34: 97fffc06 bl 3a4c <kvm_skip_instr> ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_skip_instr:42.2 (adjust_pc.h) Sbepe ║write_sysreg_el2(vcpu_gp_regs(vcpu)->pstate, SYS_SPSR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00004a38: 14000001 b 4a3c <__kvm_skip_instr+0x5c> <- 00004a34(bl-succ)<return> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __kvm_skip_instr:42.2 (adjust_pc.h) sbepe ║write_sysreg_el2(vcpu_gp_regs(vcpu)->pstate, SYS_SPSR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4a3c 0x4a54 (DW_OP_breg31 0x10) lexblock:__kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c:42 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>00004a3c: f85e83a8 ldur x8, [x29, #-24] <- 00004a38(b)<__kvm_skip_instr+0x5c> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a40: f9413508 ldr x8, [x8, #616] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a44: f9000be8 str x8, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a48: f9400be8 ldr x8, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a4c: d51c4008 msr spsr_el2, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00004a50: 14000001 b 4a54 <__kvm_skip_instr+0x74> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4a3c 0x4a54 (DW_OP_breg31 0x10) lexblock:__kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c:42 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __kvm_skip_instr:43.2 (adjust_pc.h) Sbepe ║write_sysreg_el2(*vcpu_pc(vcpu), SYS_ELR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─└>00004a54: 14000001 b 4a58 <__kvm_skip_instr+0x78> <- 00004a50(b)<__kvm_skip_instr+0x74> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __kvm_skip_instr:43.2 (adjust_pc.h) sbepe ║write_sysreg_el2(*vcpu_pc(vcpu), SYS_ELR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4a58 0x4a78 (DW_OP_breg31 0x8) lexblock:__kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c:43 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └──>00004a58: f85e83a8 ldur x8, [x29, #-24] <- 00004a54(b)<__kvm_skip_instr+0x78> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a5c: f81f83a8 stur x8, [x29, #-8] b: 0x4a60 0x4a64 vcpu_pc inlined from __kvm_skip_instr:43 (adjust_pc.h) <3dc44>:<lexical_block>: b ║ ║ ║ ║ ║ ║ ║ ║ ║ vcpu_pc:132.27 (kvm_emulate.h) Sbepe return (unsigned long *)&║vcpu_gp_regs(vcpu)->pc; +vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x4a60 0x4a64 (DW_OP_fbreg -0x8) vcpu_pc(inlined):lexblock:__kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c ~b ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a60: f85f83a8 ldur x8, [x29, #-8] -vcpu param pointer(const(struct kvm_vcpu<2d002>/<2d1c9>)) 0x4a60 0x4a64 (DW_OP_fbreg -0x8) vcpu_pc(inlined):lexblock:__kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ __kvm_skip_instr:43.2 (adjust_pc.h) Sbepe ║write_sysreg_el2(*vcpu_pc(vcpu), SYS_ELR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a64: f9413108 ldr x8, [x8, #608] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a68: f90007e8 str x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a6c: f94007e8 ldr x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a70: d51c4028 msr elr_el2, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00004a74: 14000001 b 4a78 <__kvm_skip_instr+0x98> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4a58 0x4a78 (DW_OP_breg31 0x8) lexblock:__kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c:43 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __kvm_skip_instr:44.1 (adjust_pc.h) Sbepe ║} ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>00004a78: a9457bfd ldp x29, x30, [sp, #80] <- 00004a74(b)<__kvm_skip_instr+0x98> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a7c: 910183ff add sp, sp, #0x60 ║ ║ ║ ║ ║ ║ ║ ║ ║ 000049ec CFA:r29+16 r29:c-16 r30:c-8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a80: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x49e0 0x4a84 (DW_OP_fbreg -0x18) __kvm_skip_instr:arch/arm64/kvm/hyp/nvhe/switch.c:35 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00004a84 <sve_pffr>: ║ ║ ║ ║ ║ ║ ║ ║ + sve_pffr params: +thread param pointer(struct thread_struct<2d002>/<37328>) 0x4a84 0x4abc (DW_OP_breg31 0x8) ║ ║ ║ ║ ║ ║ ║ ║ ║ sve_pffr:65.0 (fpsimd.h) Sbepe ║{ +thread param pointer(struct thread_struct<2d002>/<37328>) 0x4a84 0x4abc (DW_OP_breg31 0x8) sve_pffr:arch/arm64/kvm/hyp/nvhe/switch.c:64 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a84: d10083ff sub sp, sp, #0x20 <- 000047fc(bl)<sve_pffr> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a88: a9017bfd stp x29, x30, [sp, #16] ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a84 CFA:r31 r29:u r30:u ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a8c: 910043fd add x29, sp, #0x10 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a90: f90007e0 str x0, [sp, #8] ║ ║ ║ ║ ║ ║ ║ ║ ║ sve_pffr:66.17 (fpsimd.h) SbePe return (char *)║thread->sve_state + sve_ffr_offset(thread->sve_vl); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a94: f94007e8 ldr x8, [sp, #8] ║ ║ ║ ║ ║ ║ ║ ║ ║ sve_pffr:66.25 (fpsimd.h) sbepe return (char *)thread->║sve_state + sve_ffr_offset(thread->sve_vl); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a98: f9414d09 ldr x9, [x8, #664] ║ ║ ║ ║ ║ ║ ║ ║ ║ sve_pffr:66.60 (fpsimd.h) sbepe return (char *)thread->sve_state + sve_ffr_offset(thread->║sve_vl); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a9c: b942a100 ldr w0, [x8, #672] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004aa0: f90003e9 str x9, [sp] ║ ║ ║ ║ ║ ║ ║ ║ ║ sve_pffr:66.37 (fpsimd.h) sbepe return (char *)thread->sve_state + ║sve_ffr_offset(thread->sve_vl); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004aa4: 94000006 bl 4abc <sve_ffr_offset> ║ ║ ║ ║ ║ ║ ║ ║ ║ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004aa8: f94003e8 ldr x8, [sp] <- 00004aa4(bl-succ)<return> ║ ║ ║ ║ ║ ║ ║ ║ ║ sve_pffr:66.35 (fpsimd.h) sbepe return (char *)thread->sve_state ║+ sve_ffr_offset(thread->sve_vl); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004aac: 8b000100 add x0, x8, x0 ║ ║ ║ ║ ║ ║ ║ ║ ║ sve_pffr:66.2 (fpsimd.h) sbepe ║return (char *)thread->sve_state + sve_ffr_offset(thread->sve_vl); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ab0: a9417bfd ldp x29, x30, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ab4: 910083ff add sp, sp, #0x20 ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004a90 CFA:r29+16 r29:c-16 r30:c-8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ab8: d65f03c0 ret -thread param pointer(struct thread_struct<2d002>/<37328>) 0x4a84 0x4abc (DW_OP_breg31 0x8) sve_pffr:arch/arm64/kvm/hyp/nvhe/switch.c:64 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00004abc <sve_ffr_offset>: ║ ║ ║ ║ ║ ║ + sve_ffr_offset params: +vl param int (base type, DW_ATE_signed size:4) 0x4abc 0x4aec (DW_OP_fbreg 0xc) ║ ║ ║ ║ ║ ║ ║ ║ ║ sve_ffr_offset:60.0 (fpsimd.h) Sbepe ║{ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004abc CFA:r31 +vl param int (base type, DW_ATE_signed size:4) 0x4abc 0x4aec (DW_OP_fbreg 0xc) sve_ffr_offset:arch/arm64/kvm/hyp/nvhe/switch.c:59 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004abc: d10043ff sub sp, sp, #0x10 <- 00004854(bl)<sve_ffr_offset>,00004aa4(bl)<sve_ffr_offset> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ac0: b9000fe0 str w0, [sp, #12] ║ ║ ║ ║ ║ ║ ║ ║ ║ sve_ffr_offset:61.9 (fpsimd.h) SbePe return ║SVE_SIG_FFR_OFFSET(sve_vq_from_vl(vl)) - SVE_SIG_REGS_OFFSET; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ac4: b9400fe8 ldr w8, [sp, #12] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ac8: 11003d09 add w9, w8, #0xf ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004acc: 7100010a subs w10, w8, #0x0 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ad0: 1a88b128 csel w8, w9, w8, lt // lt = tstop ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ad4: 13047d08 asr w8, w8, #4 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ad8: 53175909 lsl w9, w8, #9 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004adc: 0b081528 add w8, w9, w8, lsl #5 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ae0: 2a0803e0 mov w0, w8 ║ ║ ║ ║ ║ ║ ║ ║ ║ sve_ffr_offset:61.2 (fpsimd.h) sbepe ║return SVE_SIG_FFR_OFFSET(sve_vq_from_vl(vl)) - SVE_SIG_REGS_OFFSET; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ae4: 910043ff add sp, sp, #0x10 ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ac0 CFA:r31+16 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ae8: d65f03c0 ret -vl param int (base type, DW_ATE_signed size:4) 0x4abc 0x4aec (DW_OP_fbreg 0xc) sve_ffr_offset:arch/arm64/kvm/hyp/nvhe/switch.c:59 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00004aec <__get_fault_info>: ║ ║ ║ ║ ║ + __get_fault_info params: +esr param typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4aec 0x4c5c (DW_OP_breg31 0x30) +far param pointer(typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4aec 0x4c5c (DW_OP_breg31 0x28) +hpfar param pointer(typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4aec 0x4c5c (DW_OP_breg31 0x20) ║ ║ ║ ║ ║ ║ ║ ║ ║ __get_fault_info:161.0 (switch.h) Sbepe ║{ +esr param typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4aec 0x4c5c (DW_OP_breg31 0x30) __get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:160 +far param pointer(typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4aec 0x4c5c (DW_OP_breg31 0x28) __get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:160 +hpfar param pointer(typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4aec 0x4c5c (DW_OP_breg31 0x20) __get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:160 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004aec: d10203ff sub sp, sp, #0x80 <- 00004994(bl)<__get_fault_info> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004af0: a9077bfd stp x29, x30, [sp, #112] ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004aec CFA:r31 r29:u r30:u ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004af4: 9101c3fd add x29, sp, #0x70 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004af8: f9001be0 str x0, [sp, #48] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004afc: f90017e1 str x1, [sp, #40] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004b00: f90013e2 str x2, [sp, #32] +reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4b04 0x4b18 (DW_OP_breg31 0x18) lexblock:__get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:162 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004b04: d53c6008 mrs x8, far_el2 ║ ║ ║ ║ ║ ║ ║ ║ ║ __get_fault_info:162.9 (switch.h) SbePe *far = ║read_sysreg_el2(SYS_FAR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004b08: f9000fe8 str x8, [sp, #24] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004b0c: f9400fe8 ldr x8, [sp, #24] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004b10: f9000be8 str x8, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004b14: f9400be8 ldr x8, [sp, #16] -reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4b04 0x4b18 (DW_OP_breg31 0x18) lexblock:__get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:162 ║ ║ ║ ║ ║ ║ ║ ║ ║ __get_fault_info:162.3 (switch.h) sbepe *║far = read_sysreg_el2(SYS_FAR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004b18: f94017e9 ldr x9, [sp, #40] ║ ║ ║ ║ ║ ║ ║ ║ ║ __get_fault_info:162.7 (switch.h) sbepe *far ║= read_sysreg_el2(SYS_FAR); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004b1c: f9000128 str x8, [x9] ║ ║ ║ ║ ║ ║ ║ ║ ║ __get_fault_info:175.29 (switch.h) Sbepe if (!(esr & ESR_ELx_S1PTW) && ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004b20: 3940c3ea ldrb w10, [sp, #48] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌───────00004b24: 373807ea tbnz w10, #7, 4c20 <__get_fault_info+0x134> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00004b28: 14000001 b 4b2c <__get_fault_info+0x40> <- 00004b24(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>00004b2c: 528000e8 mov w8, #0x7 // #7 <- 00004b28(b)<__get_fault_info+0x40> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004b30: b81d03a8 stur w8, [x29, #-48] c: 0x4b34 0x4bdc cpus_have_final_cap inlined from __get_fault_info:176 (switch.h) <3dd12>: d: 0x4b34 0x4b5c system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <3dd2e>:<3dd12>: cd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready); +num param int (base type, DW_ATE_signed size:4) 0x4b34 0x4bdc (DW_OP_fbreg -0x30) cpus_have_final_cap(inlined):__get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4b34 0x4b5c (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):__get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c ~cd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004b34: f00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~cd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004b38: b9479928 ldr w8, [x9, #1944] ~cd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004b3c: 71000108 subs w8, w8, #0x0 ~cd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004b40: 1a9f07ea cset w10, ne // ne = any ~cd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004b44: 381e43aa sturb w10, [x29, #-28] cd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~cd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004b48: 385e43aa ldurb w10, [x29, #-28] ~cd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004b4c: 2a0a03e9 mov w9, w10 ~cd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004b50: 92400129 and x9, x9, #0x1 cd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~cd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004b54: f81d83a9 stur x9, [x29, #-40] cd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~cd ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004b58: f85d83a9 ldur x9, [x29, #-40] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4b34 0x4b5c (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):__get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌────00004b5c: b4000389 cbz x9, 4bcc <__get_fault_info+0xe0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─00004b60: 14000001 b 4b64 <__get_fault_info+0x78> <- 00004b5c(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ └>00004b64: b85d03a8 ldur w8, [x29, #-48] <- 00004b60(b)<__get_fault_info+0x78> ~c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004b68: b81f83a8 stur w8, [x29, #-8] e: 0x4b6c 0x4bcc (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3dd5a>:<3dd12>: ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x4b6c 0x4bcc (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004b6c: b85f83a8 ldur w8, [x29, #-8] ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004b70: 7100f508 subs w8, w8, #0x3d ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌──00004b74: 540000ab b.lt 4b88 <__get_fault_info+0x9c> // b.tstop ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │┌─00004b78: 14000001 b 4b7c <__get_fault_info+0x90> <- 00004b74(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │└>00004b7c: 2a1f03e8 mov w8, wzr <- 00004b78(b)<__get_fault_info+0x90> ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004b80: 381ff3a8 sturb w8, [x29, #-1] ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │┌┼──00004b84: 14000013 b 4bd0 <__get_fault_info+0xe4> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │││ ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4b88 0x4bbc (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││└─>00004b88: b89f83a8 ldursw x8, [x29, #-8] <- 00004b74(b.cc)<__get_fault_info+0x9c> ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004b8c: d37ced08 lsl x8, x8, #4 ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004b90: f00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004b94: 911e8129 add x9, x9, #0x7a0 ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004b98: b868692a ldr w10, [x9, x8] ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004b9c: 7100014a subs w10, w10, #0x0 ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004ba0: 1a9f07eb cset w11, ne // ne = any ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004ba4: 381f43ab sturb w11, [x29, #-12] ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004ba8: 385f43ab ldurb w11, [x29, #-12] ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004bac: 2a0b03e8 mov w8, w11 ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004bb0: 92400108 and x8, x8, #0x1 ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004bb4: f81e83a8 stur x8, [x29, #-24] ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004bb8: f85e83a8 ldur x8, [x29, #-24] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4b88 0x4bbc (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004bbc: f1000108 subs x8, x8, #0x0 ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004bc0: 1a9f07eb cset w11, ne // ne = any ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ 00004bc4: 381ff3ab sturb w11, [x29, #-1] ~ce ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ ┌─00004bc8: 14000002 b 4bd0 <__get_fault_info+0xe4> -num param int (base type, DW_ATE_signed size:4) 0x4b6c 0x4bcc (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ │ c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └┼─┼>00004bcc: d4210000 brk #0x800 <- 00004b5c(b.cc)<__get_fault_info+0xe0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ f: 0x4bd0 0x4bd4 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <3dd5a>:<3dd12>: cf ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x4bd0 0x4bd4 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c ~cf ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>└>00004bd0: 385ff3a8 ldurb w8, [x29, #-1] <- 00004b84(b)<__get_fault_info+0xe4>,00004bc8(b)<__get_fault_info+0xe4> -num param int (base type, DW_ATE_signed size:4) 0x4bd0 0x4bd4 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004bd4: 381d73a8 sturb w8, [x29, #-41] c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004bd8: 385d73a8 ldurb w8, [x29, #-41] -num param int (base type, DW_ATE_signed size:4) 0x4b34 0x4bdc (DW_OP_fbreg -0x30) cpus_have_final_cap(inlined):__get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __get_fault_info:176.52 (switch.h) Sbepe (cpus_have_final_cap(ARM64_WORKAROUND_834220) || ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌───00004bdc: 370000e8 tbnz w8, #0, 4bf8 <__get_fault_info+0x10c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌─00004be0: 14000001 b 4be4 <__get_fault_info+0xf8> <- 00004bdc(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __get_fault_info:177.8 (switch.h) Sbepe (║esr & ESR_ELx_FSC_TYPE) == FSC_PERM)) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ └>00004be4: f9401be8 ldr x8, [sp, #48] <- 00004be0(b)<__get_fault_info+0xf8> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __get_fault_info:177.12 (switch.h) sbepe (esr ║& ESR_ELx_FSC_TYPE) == FSC_PERM)) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004be8: 927e0d08 and x8, x8, #0x3c ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __get_fault_info:175.6 (switch.h) Sbepe if (║!(esr & ESR_ELx_S1PTW) && ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004bec: f1003108 subs x8, x8, #0xc ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─┼───00004bf0: 54000181 b.ne 4c20 <__get_fault_info+0x134> // b.any ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ┌─00004bf4: 14000001 b 4bf8 <__get_fault_info+0x10c> <- 00004bf0(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ │ __get_fault_info:178.34 (switch.h) Sbepe if (!__translate_far_to_hpfar(*║far, hpfar)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ └>└>00004bf8: f94017e8 ldr x8, [sp, #40] <- 00004bdc(b.cc)<__get_fault_info+0x10c>,00004bf4(b)<__get_fault_info+0x10c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __get_fault_info:178.33 (switch.h) sbepe if (!__translate_far_to_hpfar(║*far, hpfar)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004bfc: f9400100 ldr x0, [x8] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __get_fault_info:178.39 (switch.h) sbepe if (!__translate_far_to_hpfar(*far, ║hpfar)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004c00: f94013e1 ldr x1, [sp, #32] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __get_fault_info:178.8 (switch.h) sbepe if (!║__translate_far_to_hpfar(*far, hpfar)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ 00004c04: 94000016 bl 4c5c <__translate_far_to_hpfar> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __get_fault_info:178.7 (switch.h) sbepe if (║!__translate_far_to_hpfar(*far, hpfar)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌──00004c08: 370000a0 tbnz w0, #0, 4c1c <__get_fault_info+0x130> <- 00004c04(bl-succ)<return> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │┌─00004c0c: 14000001 b 4c10 <__get_fault_info+0x124> <- 00004c08(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │└>00004c10: 2a1f03e8 mov w8, wzr <- 00004c0c(b)<__get_fault_info+0x124> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ __get_fault_info:179.4 (switch.h) Sbepe ║return false; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ │ 00004c14: 381cf3a8 sturb w8, [x29, #-49] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ┌┼──00004c18: 1400000d b 4c4c <__get_fault_info+0x160> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ││ __get_fault_info:180.2 (switch.h) Sbepe ║} else { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │┌┼└─>00004c1c: 14000009 b 4c40 <__get_fault_info+0x154> <- 00004c08(b.cc)<__get_fault_info+0x130> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │││ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │││ __get_fault_info:181.12 (switch.h) Sbepe *hpfar = ║read_sysreg(hpfar_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c20 0x4c34 (DW_OP_breg31 0x8) lexblock:__get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:181 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└┼┼──>00004c20: d53c6088 mrs x8, hpfar_el2 <- 00004b24(b.cc)<__get_fault_info+0x134>,00004bf0(b.cc)<__get_fault_info+0x134> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004c24: f90007e8 str x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004c28: f94007e8 ldr x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004c2c: f90003e8 str x8, [sp] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004c30: f94003e8 ldr x8, [sp] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c20 0x4c34 (DW_OP_breg31 0x8) lexblock:__get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:181 ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __get_fault_info:181.4 (switch.h) sbepe *║hpfar = read_sysreg(hpfar_el2); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004c34: f94013e9 ldr x9, [sp, #32] ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __get_fault_info:181.10 (switch.h) sbepe *hpfar ║= read_sysreg(hpfar_el2); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ 00004c38: f9000128 str x8, [x9] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ┌─00004c3c: 14000001 b 4c40 <__get_fault_info+0x154> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └┼>└>00004c40: 52800028 mov w8, #0x1 // #1 <- 00004c1c(b)<__get_fault_info+0x154>,00004c3c(b)<__get_fault_info+0x154> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __get_fault_info:184.2 (switch.h) Sbepe ║return true; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004c44: 381cf3a8 sturb w8, [x29, #-49] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00004c48: 14000001 b 4c4c <__get_fault_info+0x160> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __get_fault_info:185.1 (switch.h) Sbepe ║} ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└>00004c4c: 385cf3a0 ldurb w0, [x29, #-49] <- 00004c18(b)<__get_fault_info+0x160>,00004c48(b)<__get_fault_info+0x160> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c50: a9477bfd ldp x29, x30, [sp, #112] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c54: 910203ff add sp, sp, #0x80 ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004af8 CFA:r29+16 r29:c-16 r30:c-8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c58: d65f03c0 ret -esr param typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4aec 0x4c5c (DW_OP_breg31 0x30) __get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:160 -far param pointer(typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4aec 0x4c5c (DW_OP_breg31 0x28) __get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:160 -hpfar param pointer(typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4aec 0x4c5c (DW_OP_breg31 0x20) __get_fault_info:arch/arm64/kvm/hyp/nvhe/switch.c:160 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00004c5c <__translate_far_to_hpfar>: + __translate_far_to_hpfar params: +far param typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c5c 0x4d88 (DW_OP_fbreg 0x80) +hpfar param pointer(typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4c5c 0x4d88 (DW_OP_fbreg 0x78) ║ ║ ║ ║ ║ ║ ║ ║ ║ __translate_far_to_hpfar:132.0 (switch.h) Sbepe ║{ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c5c CFA:r31 +far param typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c5c 0x4d88 (DW_OP_fbreg 0x80) __translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:131 +hpfar param pointer(typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4c5c 0x4d88 (DW_OP_fbreg 0x78) __translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:131 +par var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c5c 0x4d88 (DW_OP_fbreg 0x70) __translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:133 +tmp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c5c 0x4d88 (DW_OP_fbreg 0x68) __translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:133 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c5c: d10243ff sub sp, sp, #0x90 <- 00004c04(bl)<__translate_far_to_hpfar> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c60: f90043e0 str x0, [sp, #128] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c64: f9003fe1 str x1, [sp, #120] ║ ║ ║ ║ ║ ║ ║ ║ ║ __translate_far_to_hpfar:145.8 (switch.h) SbePe par = ║read_sysreg_par(); +par var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c68 0x4c94 (DW_OP_fbreg 0x60) lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:145 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c68: d503201f nop ║ ║ ║ ║ ║ ║ ║ ║ ║ __translate_far_to_hpfar:145.8 (switch.h) sbepe par = ║read_sysreg_par(); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c6c 0x4c80 (DW_OP_fbreg 0x58) lexblock:lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:145 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c6c: d5387408 mrs x8, par_el1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c70: f9002fe8 str x8, [sp, #88] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c74: f9402fe8 ldr x8, [sp, #88] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c78: f9002be8 str x8, [sp, #80] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c7c: f9402be8 ldr x8, [sp, #80] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c6c 0x4c80 (DW_OP_fbreg 0x58) lexblock:lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:145 ║ ║ ║ ║ ║ ║ ║ ║ ║ __translate_far_to_hpfar:145.8 (switch.h) sbepe par = ║read_sysreg_par(); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c80: f90033e8 str x8, [sp, #96] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c84: d503201f nop ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c88: f94033e8 ldr x8, [sp, #96] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c8c: f90027e8 str x8, [sp, #72] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c90: f94027e8 ldr x8, [sp, #72] -par var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c68 0x4c94 (DW_OP_fbreg 0x60) lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:145 ║ ║ ║ ║ ║ ║ ║ ║ ║ __translate_far_to_hpfar:145.6 (switch.h) sbepe par ║= read_sysreg_par(); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c94: f9003be8 str x8, [sp, #112] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c98: 2a1f03e9 mov w9, wzr ║ ║ ║ ║ ║ ║ ║ ║ ║ __translate_far_to_hpfar:146.7 (switch.h) Sbepe if (!║__kvm_at("s1e1r", far)) +__kvm_at_err var int (base type, DW_ATE_signed size:4) 0x4c9c 0x4ce0 (DW_OP_fbreg 0x44) lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:146 +spsr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c9c 0x4ce0 (DW_OP_fbreg 0x38) lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:146 +elr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c9c 0x4ce0 (DW_OP_fbreg 0x30) lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:146 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c9c: b90047e9 str w9, [sp, #68] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ca0: b94047e9 ldr w9, [sp, #68] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ca4: f94043e8 ldr x8, [sp, #128] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ca8: d53c400a mrs x10, spsr_el2 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004cac: d53c402b mrs x11, elr_el2 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004cb0: d5087808 at s1e1r, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004cb4: d5033fdf isb ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00004cb8: 14000004 b 4cc8 <__translate_far_to_hpfar+0x6c> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004cbc: d51c400a msr spsr_el2, x10 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004cc0: d51c402b msr elr_el2, x11 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004cc4: 128001a9 mov w9, #0xfffffff2 // #-14 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>00004cc8: b90047e9 str w9, [sp, #68] <- 00004cb8(b)<__translate_far_to_hpfar+0x6c> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ccc: f9001fea str x10, [sp, #56] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004cd0: f9001beb str x11, [sp, #48] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004cd4: b94047e9 ldr w9, [sp, #68] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004cd8: b9002fe9 str w9, [sp, #44] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004cdc: b9402fe9 ldr w9, [sp, #44] -__kvm_at_err var int (base type, DW_ATE_signed size:4) 0x4c9c 0x4ce0 (DW_OP_fbreg 0x44) lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:146 -spsr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c9c 0x4ce0 (DW_OP_fbreg 0x38) lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:146 -elr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c9c 0x4ce0 (DW_OP_fbreg 0x30) lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:146 ║ ║ ║ ║ ║ ║ ║ ║ ║ __translate_far_to_hpfar:146.6 (switch.h) sbepe if (║!__kvm_at("s1e1r", far)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌──00004ce0: 350001e9 cbnz w9, 4d1c <__translate_far_to_hpfar+0xc0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │┌─00004ce4: 14000001 b 4ce8 <__translate_far_to_hpfar+0x8c> <- 00004ce0(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __translate_far_to_hpfar:147.9 (switch.h) Sbepe tmp = ║read_sysreg_par(); +par var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4ce8 0x4d14 (DW_OP_fbreg 0x20) lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:147 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │└>00004ce8: d503201f nop <- 00004ce4(b)<__translate_far_to_hpfar+0x8c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __translate_far_to_hpfar:147.9 (switch.h) sbepe tmp = ║read_sysreg_par(); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4cec 0x4d00 (DW_OP_fbreg 0x18) lexblock:lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:147 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004cec: d5387408 mrs x8, par_el1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004cf0: f9000fe8 str x8, [sp, #24] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004cf4: f9400fe8 ldr x8, [sp, #24] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004cf8: f9000be8 str x8, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004cfc: f9400be8 ldr x8, [sp, #16] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4cec 0x4d00 (DW_OP_fbreg 0x18) lexblock:lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:147 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __translate_far_to_hpfar:147.9 (switch.h) sbepe tmp = ║read_sysreg_par(); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d00: f90013e8 str x8, [sp, #32] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d04: d503201f nop ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d08: f94013e8 ldr x8, [sp, #32] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d0c: f90007e8 str x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d10: f94007e8 ldr x8, [sp, #8] -par var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4ce8 0x4d14 (DW_OP_fbreg 0x20) lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:147 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __translate_far_to_hpfar:147.7 (switch.h) sbepe tmp ║= read_sysreg_par(); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d14: f90037e8 str x8, [sp, #104] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __translate_far_to_hpfar:147.3 (switch.h) sbepe ║tmp = read_sysreg_par(); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌──┼──00004d18: 14000005 b 4d2c <__translate_far_to_hpfar+0xd0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └─>00004d1c: 52800028 mov w8, #0x1 // #1 <- 00004ce0(b.cc)<__translate_far_to_hpfar+0xc0> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d20: 2a0803e9 mov w9, w8 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __translate_far_to_hpfar:149.7 (switch.h) Sbepe tmp ║= SYS_PAR_EL1_F; /* back to the guest */ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d24: f90037e9 str x9, [sp, #104] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00004d28: 14000001 b 4d2c <__translate_far_to_hpfar+0xd0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __translate_far_to_hpfar:150.2 (switch.h) Sbepe ║write_sysreg(par, par_el1); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>┌─└>00004d2c: 14000001 b 4d30 <__translate_far_to_hpfar+0xd4> <- 00004d18(b)<__translate_far_to_hpfar+0xd0>,00004d28(b)<__translate_far_to_hpfar+0xd0> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __translate_far_to_hpfar:150.2 (switch.h) sbepe ║write_sysreg(par, par_el1); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4d30 0x4d44 (DW_OP_fbreg 0x0) lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:150 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └──>00004d30: f9403be8 ldr x8, [sp, #112] <- 00004d2c(b)<__translate_far_to_hpfar+0xd4> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004d34: f90003e8 str x8, [sp] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004d38: f94003e8 ldr x8, [sp] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004d3c: d5187408 msr par_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00004d40: 14000001 b 4d44 <__translate_far_to_hpfar+0xe8> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4d30 0x4d44 (DW_OP_fbreg 0x0) lexblock:__translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:150 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __translate_far_to_hpfar:152.6 (switch.h) Sbepe if (║unlikely(tmp & SYS_PAR_EL1_F)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>00004d44: 3941a3e8 ldrb w8, [sp, #104] <- 00004d40(b)<__translate_far_to_hpfar+0xe8> ║ ║ ║ ║ ║ ║ ║ ║ ║ __translate_far_to_hpfar:152.6 (switch.h) sbepe if (║unlikely(tmp & SYS_PAR_EL1_F)) ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌──00004d48: 360000a8 tbz w8, #0, 4d5c <__translate_far_to_hpfar+0x100> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │┌─00004d4c: 14000001 b 4d50 <__translate_far_to_hpfar+0xf4> <- 00004d48(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │└>00004d50: 2a1f03e8 mov w8, wzr <- 00004d4c(b)<__translate_far_to_hpfar+0xf4> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __translate_far_to_hpfar:153.3 (switch.h) Sbepe ║return false; /* Translation failed, back to guest */ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d54: 39023fe8 strb w8, [sp, #143] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌┼──00004d58: 14000009 b 4d7c <__translate_far_to_hpfar+0x120> ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ ║ ║ ║ ║ ║ ║ ║ ║ ║ ││ __translate_far_to_hpfar:156.11 (switch.h) Sbepe *hpfar = ║PAR_TO_HPFAR(tmp); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │└─>00004d5c: f94037e8 ldr x8, [sp, #104] <- 00004d48(b.cc)<__translate_far_to_hpfar+0x100> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d60: 92748d08 and x8, x8, #0xfffffffff000 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d64: d348fd08 lsr x8, x8, #8 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __translate_far_to_hpfar:156.3 (switch.h) sbepe *║hpfar = PAR_TO_HPFAR(tmp); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d68: f9403fe9 ldr x9, [sp, #120] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __translate_far_to_hpfar:156.9 (switch.h) sbepe *hpfar ║= PAR_TO_HPFAR(tmp); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d6c: f9000128 str x8, [x9] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d70: 5280002a mov w10, #0x1 // #1 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __translate_far_to_hpfar:157.2 (switch.h) Sbepe ║return true; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004d74: 39023fea strb w10, [sp, #143] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00004d78: 14000001 b 4d7c <__translate_far_to_hpfar+0x120> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ __translate_far_to_hpfar:158.1 (switch.h) Sbepe ║} ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└>00004d7c: 39423fe0 ldrb w0, [sp, #143] <- 00004d58(b)<__translate_far_to_hpfar+0x120>,00004d78(b)<__translate_far_to_hpfar+0x120> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004d80: 910243ff add sp, sp, #0x90 ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004c60 CFA:r31+144 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004d84: d65f03c0 ret -far param typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c5c 0x4d88 (DW_OP_fbreg 0x80) __translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:131 -hpfar param pointer(typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4c5c 0x4d88 (DW_OP_fbreg 0x78) __translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:131 -par var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c5c 0x4d88 (DW_OP_fbreg 0x70) __translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:133 -tmp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4c5c 0x4d88 (DW_OP_fbreg 0x68) __translate_far_to_hpfar:arch/arm64/kvm/hyp/nvhe/switch.c:133 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00004d88 <___deactivate_traps>:║ ║ ║ ║ + ___deactivate_traps params: +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x4d88 0x4de4 (DW_OP_fbreg 0x18) ║ ║ ║ ║ ║ ║ ║ ║ ║ ___deactivate_traps:118.0 (switch.h) Sbepe ║{ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004d88 CFA:r31 +vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x4d88 0x4de4 (DW_OP_fbreg 0x18) ___deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:117 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004d88: d10083ff sub sp, sp, #0x20 <- 000033a4(bl)<___deactivate_traps> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004d8c: f9000fe0 str x0, [sp, #24] ║ ║ ║ ║ ║ ║ ║ ║ ║ ___deactivate_traps:125.6 (switch.h) SbePe if (║vcpu->arch.hcr_el2 & HCR_VSE) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004d90: f9400fe8 ldr x8, [sp, #24] ║ ║ ║ ║ ║ ║ ║ ║ ║ ___deactivate_traps:125.6 (switch.h) sbepe if (║vcpu->arch.hcr_el2 & HCR_VSE) { ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004d94: 3961e509 ldrb w9, [x8, #2169] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌───00004d98: 36000229 tbz w9, #0, 4ddc <___deactivate_traps+0x54> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00004d9c: 14000001 b 4da0 <___deactivate_traps+0x18> <- 00004d98(b.cc-succ)<fallthrough> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ___deactivate_traps:126.3 (switch.h) Sbepe ║vcpu->arch.hcr_el2 &= ~HCR_VSE; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ └>00004da0: f9400fe8 ldr x8, [sp, #24] <- 00004d9c(b)<___deactivate_traps+0x18> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ___deactivate_traps:126.22 (switch.h) sbepe vcpu->arch.hcr_el2 ║&= ~HCR_VSE; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004da4: f9443d09 ldr x9, [x8, #2168] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004da8: 9277f929 and x9, x9, #0xfffffffffffffeff ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004dac: f9043d09 str x9, [x8, #2168] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ___deactivate_traps:127.25 (switch.h) Sbepe vcpu->arch.hcr_el2 |= ║read_sysreg(hcr_el2) & HCR_VSE; +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4db0 0x4dc4 (DW_OP_fbreg 0x10) lexblock:___deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:127 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004db0: d53c1108 mrs x8, hcr_el2 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004db4: f9000be8 str x8, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004db8: f9400be8 ldr x8, [sp, #16] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004dbc: f90007e8 str x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004dc0: f94007e8 ldr x8, [sp, #8] -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4db0 0x4dc4 (DW_OP_fbreg 0x10) lexblock:___deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:127 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ___deactivate_traps:127.46 (switch.h) sbepe vcpu->arch.hcr_el2 |= read_sysreg(hcr_el2) ║& HCR_VSE; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004dc4: 92780108 and x8, x8, #0x100 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ___deactivate_traps:127.3 (switch.h) sbepe ║vcpu->arch.hcr_el2 |= read_sysreg(hcr_el2) & HCR_VSE; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004dc8: f9400fe9 ldr x9, [sp, #24] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ___deactivate_traps:127.22 (switch.h) sbepe vcpu->arch.hcr_el2 ║|= read_sysreg(hcr_el2) & HCR_VSE; ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004dcc: f9443d2a ldr x10, [x9, #2168] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004dd0: aa080148 orr x8, x10, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ 00004dd4: f9043d28 str x8, [x9, #2168] ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ___deactivate_traps:128.2 (switch.h) Sbepe } ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ┌─00004dd8: 14000001 b 4ddc <___deactivate_traps+0x54> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ │ ___deactivate_traps:129.1 (switch.h) Sbepe ║} ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>└>00004ddc: 910083ff add sp, sp, #0x20 <- 00004d98(b.cc)<___deactivate_traps+0x54>,00004dd8(b)<___deactivate_traps+0x54> ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004d8c CFA:r31+32 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004de0: d65f03c0 ret -vcpu param pointer(struct kvm_vcpu<2d002>/<2d1c9>) 0x4d88 0x4de4 (DW_OP_fbreg 0x18) ___deactivate_traps:arch/arm64/kvm/hyp/nvhe/switch.c:117 ║ ║ ║ ║ ║ ║ ║ ║ ║ **00004de4 <__deactivate_traps_common>: + __deactivate_traps_common params: none ║ ║ ║ ║ ║ ║ ║ ║ ║ __deactivate_traps_common:99.0 (switch.h) Sbepe ║{ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004de4 CFA:r31 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004de4: d10043ff sub sp, sp, #0x10 <- 000034f8(bl)<__deactivate_traps_common> ║ ║ ║ ║ ║ ║ ║ ║ ║ __deactivate_traps_common:100.2 (switch.h) SbePe ║write_sysreg(0, hstr_el2); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00004de8: 14000001 b 4dec <__deactivate_traps_common+0x8> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>00004dec: aa1f03e8 mov x8, xzr <- 00004de8(b)<__deactivate_traps_common+0x8> ║ ║ ║ ║ ║ ║ ║ ║ ║ __deactivate_traps_common:100.2 (switch.h) sbepe ║write_sysreg(0, hstr_el2); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4df0 0x4e00 (DW_OP_fbreg 0x8) lexblock:__deactivate_traps_common:arch/arm64/kvm/hyp/nvhe/switch.c:100 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004df0: f90007e8 str x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004df4: f94007e8 ldr x8, [sp, #8] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004df8: d51c1168 msr hstr_el2, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00004dfc: 14000001 b 4e00 <__deactivate_traps_common+0x1c> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4df0 0x4e00 (DW_OP_fbreg 0x8) lexblock:__deactivate_traps_common:arch/arm64/kvm/hyp/nvhe/switch.c:100 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __deactivate_traps_common:101.2 (switch.h) Sbepe ║write_sysreg(0, pmuserenr_el0); ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─└>00004e00: 14000001 b 4e04 <__deactivate_traps_common+0x20> <- 00004dfc(b)<__deactivate_traps_common+0x1c> ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └──>00004e04: aa1f03e8 mov x8, xzr <- 00004e00(b)<__deactivate_traps_common+0x20> ║ ║ ║ ║ ║ ║ ║ ║ ║ __deactivate_traps_common:101.2 (switch.h) sbepe ║write_sysreg(0, pmuserenr_el0); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4e08 0x4e18 (DW_OP_fbreg 0x0) lexblock:__deactivate_traps_common:arch/arm64/kvm/hyp/nvhe/switch.c:101 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e08: f90003e8 str x8, [sp] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e0c: f94003e8 ldr x8, [sp] ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e10: d51b9e08 msr pmuserenr_el0, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ ┌─00004e14: 14000001 b 4e18 <__deactivate_traps_common+0x34> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4e08 0x4e18 (DW_OP_fbreg 0x0) lexblock:__deactivate_traps_common:arch/arm64/kvm/hyp/nvhe/switch.c:101 ║ ║ ║ ║ ║ ║ ║ ║ ║ │ ║ ║ ║ ║ ║ ║ ║ ║ ║ │ __deactivate_traps_common:102.1 (switch.h) Sbepe ║} ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ └>00004e18: 910043ff add sp, sp, #0x10 <- 00004e14(b)<__deactivate_traps_common+0x34> ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e1c: d65f03c0 ret ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e20: d5033fdf isb ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e24: d5033fdf isb ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e28: d51d1008 msr sctlr_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e2c: d51d2048 msr tcr_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e30: d5385208 mrs x8, esr_el1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e34: d5384028 mrs x8, elr_el1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e38: d5184028 msr elr_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e3c: d5033fbf dmb sy ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e40: d53d2048 mrs x8, tcr_el12 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e44: d51d2048 msr tcr_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e48: d53d1008 mrs x8, sctlr_el12 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e4c: d51d1008 msr sctlr_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e50: d5384008 mrs x8, spsr_el1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e54: d5384028 mrs x8, elr_el1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e58: d5033fbf dmb sy ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e5c: d5033fbf dmb sy ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e60: d5033fdf isb ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e64: d51d1008 msr sctlr_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e68: d51d2008 msr ttbr0_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e6c: d51d2028 msr ttbr1_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e70: d51d2048 msr tcr_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e74: d51d5208 msr esr_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e78: d51d6008 msr far_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e7c: d51d5108 msr afsr0_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e80: d51d5128 msr afsr1_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e84: d51da208 msr mair_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e88: d51da308 msr amair_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e8c: d51dd028 msr contextidr_el12, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e90: d5384028 mrs x8, elr_el1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e94: d5384008 mrs x8, spsr_el1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e98: d5184008 msr spsr_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004e9c: d5184028 msr elr_el1, x8 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ea0: d5386008 mrs x8, far_el1 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ea4: d5033fbf dmb sy ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004ea8: d5033fbf dmb sy ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004eac: d5033fbf dmb sy ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004de8 CFA:r31+16 ~ ║ ║ ║ ║ ║ ║ ║ ║ ║ 00004eb0: d5033fbf dmb sy