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 00004eb4 00006000 arch/arm64/kvm/hyp/nvhe/tlb.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 **00004eb4 <__kvm_tlb_flush_vmid_ipa>: 00004eb4 <$x>: + __kvm_tlb_flush_vmid_ipa params: +mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x4eb4 0x5178 (DW_OP_breg31 0x38) +ipa param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4eb4 0x5178 (DW_OP_breg31 0x30) +level param int (base type, DW_ATE_signed size:4) 0x4eb4 0x5178 (DW_OP_breg31 0x2c) __kvm_tlb_flush_vmid_ipa:60.0 (tlb.c) Sbepe ║{ +mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x4eb4 0x5178 (DW_OP_breg31 0x38) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:58 +ipa param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4eb4 0x5178 (DW_OP_breg31 0x30) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:59 +level param int (base type, DW_ATE_signed size:4) 0x4eb4 0x5178 (DW_OP_breg31 0x2c) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:59 +cxt var struct tlb_inv_context<3df69>/<4cded> 0x4eb4 0x5178 (DW_OP_breg31 0x20) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:61 ~ 00004eb4: d10303ff sub sp, sp, #0xc0 <- 000072c0(bl)<__kvm_tlb_flush_vmid_ipa>,000144a8(bl)<__kvm_tlb_flush_vmid_ipa>,0001485c(bl)<__kvm_tlb_flush_vmid_ipa>,00015910(bl)<__kvm_tlb_flush_vmid_ipa>,00015b60(bl)<__kvm_tlb_flush_vmid_ipa> ~ 00004eb8: a90b7bfd stp x29, x30, [sp, #176] 00004eb4 CFA:r31 r29:u r30:u ~ 00004ebc: 9102c3fd add x29, sp, #0xb0 ~ 00004ec0: f9001fe0 str x0, [sp, #56] ~ 00004ec4: f9001be1 str x1, [sp, #48] ~ 00004ec8: b9002fe2 str w2, [sp, #44] __kvm_tlb_flush_vmid_ipa:63.2 (tlb.c) SbePe ║dsb(ishst); ~ 00004ecc: d5033a9f dsb ishst __kvm_tlb_flush_vmid_ipa:66.24 (tlb.c) Sbepe __tlb_switch_to_guest(║mmu, &cxt); ~ 00004ed0: f9401fe0 ldr x0, [sp, #56] ~ 00004ed4: 910083e1 add x1, sp, #0x20 __kvm_tlb_flush_vmid_ipa:66.2 (tlb.c) sbepe ║__tlb_switch_to_guest(mmu, &cxt); ~ 00004ed8: 940000a8 bl 5178 <__tlb_switch_to_guest> __kvm_tlb_flush_vmid_ipa:73.6 (tlb.c) Sbepe ipa ║>>= 12; ~ 00004edc: f9401be8 ldr x8, [sp, #48] <- 00004ed8(bl-succ)<return> ~ 00004ee0: d34cfd08 lsr x8, x8, #12 ~ 00004ee4: f9001be8 str x8, [sp, #48] __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) Sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ ┌─00004ee8: 14000001 b 4eec <__kvm_tlb_flush_vmid_ipa+0x38> __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); +arg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4eec 0x5054 (DW_OP_breg31 0x18) lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:74 ~ └>00004eec: f9401be8 ldr x8, [sp, #48] <- 00004ee8(b)<__kvm_tlb_flush_vmid_ipa+0x38> ~ 00004ef0: f9000fe8 str x8, [sp, #24] ~ 00004ef4: 528006e9 mov w9, #0x37 // #55 ~ 00004ef8: b90043e9 str w9, [sp, #64] g: 0x4efc 0x4fb4 cpus_have_const_cap inlined from __kvm_tlb_flush_vmid_ipa:74 (tlb.c) <4c5c8>:<lexical_block>: g 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) 0x4efc 0x4fb4 (DW_OP_breg31 0x40) cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c ~g 00004efc: b94043e9 ldr w9, [sp, #64] ~g 00004f00: b9004be9 str w9, [sp, #72] h: 0x4f04 0x4fac cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <4c5e5>:<4c5c8>:<lexical_block>: i: 0x4f04 0x4f2c system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <4c603>:<4c5e5>:<4c5c8>:<lexical_block>: ghi 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) 0x4f04 0x4fac (DW_OP_breg31 0x48) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4f04 0x4f2c (DW_OP_fbreg -0x54) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c ~ghi 00004f04: f00000a8 adrp x8, 1b000 <hyp_memory+0x460> ~ghi 00004f08: b9479909 ldr w9, [x8, #1944] ~ghi 00004f0c: 71000129 subs w9, w9, #0x0 ~ghi 00004f10: 1a9f07ea cset w10, ne // ne = any ~ghi 00004f14: 381ac3aa sturb w10, [x29, #-84] ghi system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~ghi 00004f18: 385ac3aa ldurb w10, [x29, #-84] ~ghi 00004f1c: 2a0a03e8 mov w8, w10 ~ghi 00004f20: 92400108 and x8, x8, #0x1 ghi system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~ghi 00004f24: f9002be8 str x8, [sp, #80] ghi system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~ghi 00004f28: f9402be8 ldr x8, [sp, #80] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4f04 0x4f2c (DW_OP_fbreg -0x54) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c gh cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~gh ┌────00004f2c: b4000388 cbz x8, 4f9c <__kvm_tlb_flush_vmid_ipa+0xe8> ~gh │ ┌─00004f30: 14000001 b 4f34 <__kvm_tlb_flush_vmid_ipa+0x80> <- 00004f2c(b.cc-succ)<fallthrough> │ │ gh │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~gh │ └>00004f34: b9404be8 ldr w8, [sp, #72] <- 00004f30(b)<__kvm_tlb_flush_vmid_ipa+0x80> ~gh 00004f38: b81c03a8 stur w8, [x29, #-64] j: 0x4f3c 0x4f9c (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4c630>:<4c5e5>:<4c5c8>:<lexical_block>: ghj __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x4f3c 0x4f9c (DW_OP_fbreg -0x40) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c ~ghj 00004f3c: b85c03a8 ldur w8, [x29, #-64] ghj __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~ghj 00004f40: 7100f508 subs w8, w8, #0x3d ~ghj │ ┌──00004f44: 540000ab b.lt 4f58 <__kvm_tlb_flush_vmid_ipa+0xa4> // b.tstop │ │ ~ghj │ │┌─00004f48: 14000001 b 4f4c <__kvm_tlb_flush_vmid_ipa+0x98> <- 00004f44(b.cc-succ)<fallthrough> │ ││ ~ghj │ │└>00004f4c: 2a1f03e8 mov w8, wzr <- 00004f48(b)<__kvm_tlb_flush_vmid_ipa+0x98> ghj │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~ghj │ │ 00004f50: 381c73a8 sturb w8, [x29, #-57] ~ghj │┌┼──00004f54: 14000013 b 4fa0 <__kvm_tlb_flush_vmid_ipa+0xec> │││ ghj │││ __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)) 0x4f58 0x4f8c (DW_OP_fbreg -0x44) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c ~ghj ││└─>00004f58: b89c03a8 ldursw x8, [x29, #-64] <- 00004f44(b.cc)<__kvm_tlb_flush_vmid_ipa+0xa4> ~ghj ││ 00004f5c: d37ced08 lsl x8, x8, #4 ~ghj ││ 00004f60: f00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~ghj ││ 00004f64: 911e8129 add x9, x9, #0x7a0 ~ghj ││ 00004f68: b868692a ldr w10, [x9, x8] ~ghj ││ 00004f6c: 7100014a subs w10, w10, #0x0 ~ghj ││ 00004f70: 1a9f07eb cset w11, ne // ne = any ~ghj ││ 00004f74: 381bc3ab sturb w11, [x29, #-68] ghj ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ghj ││ 00004f78: 385bc3ab ldurb w11, [x29, #-68] ~ghj ││ 00004f7c: 2a0b03e8 mov w8, w11 ~ghj ││ 00004f80: 92400108 and x8, x8, #0x1 ghj ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ghj ││ 00004f84: f81b03a8 stur x8, [x29, #-80] ghj ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ghj ││ 00004f88: f85b03a8 ldur x8, [x29, #-80] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4f58 0x4f8c (DW_OP_fbreg -0x44) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c ghj ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ghj ││ 00004f8c: f1000108 subs x8, x8, #0x0 ~ghj ││ 00004f90: 1a9f07eb cset w11, ne // ne = any ghj ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~ghj ││ 00004f94: 381c73ab sturb w11, [x29, #-57] ~ghj ││ ┌─00004f98: 14000002 b 4fa0 <__kvm_tlb_flush_vmid_ipa+0xec> -num param int (base type, DW_ATE_signed size:4) 0x4f3c 0x4f9c (DW_OP_fbreg -0x40) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c ││ │ gh ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~gh └┼─┼>00004f9c: d4210000 brk #0x800 <- 00004f2c(b.cc)<__kvm_tlb_flush_vmid_ipa+0xe8> │ │ k: 0x4fa0 0x4fa4 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4c630>:<4c5e5>:<4c5c8>:<lexical_block>: ghk │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x4fa0 0x4fa4 (DW_OP_fbreg -0x40) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c ~ghk └>└>00004fa0: 385c73a8 ldurb w8, [x29, #-57] <- 00004f54(b)<__kvm_tlb_flush_vmid_ipa+0xec>,00004f98(b)<__kvm_tlb_flush_vmid_ipa+0xec> -num param int (base type, DW_ATE_signed size:4) 0x4fa0 0x4fa4 (DW_OP_fbreg -0x40) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c gh cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~gh 00004fa4: 39013fe8 strb w8, [sp, #79] gh cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~gh 00004fa8: 39413fe8 ldrb w8, [sp, #79] -num param int (base type, DW_ATE_signed size:4) 0x4f04 0x4fac (DW_OP_breg31 0x48) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c g cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num); ~g 00004fac: 39011fe8 strb w8, [sp, #71] g cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║} ~g 00004fb0: 39411fe8 ldrb w8, [sp, #71] -num param int (base type, DW_ATE_signed size:4) 0x4efc 0x4fb4 (DW_OP_breg31 0x40) cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) Sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ 00004fb4: 71000508 subs w8, w8, #0x1 ~ ┌──────00004fb8: 54000441 b.ne 5040 <__kvm_tlb_flush_vmid_ipa+0x18c> // b.any ~ │ ┌─00004fbc: 14000001 b 4fc0 <__kvm_tlb_flush_vmid_ipa+0x10c> <- 00004fb8(b.cc-succ)<fallthrough> │ │ ~ │ └>00004fc0: b9402fe8 ldr w8, [sp, #44] <- 00004fbc(b)<__kvm_tlb_flush_vmid_ipa+0x10c> __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ │ ┌────00004fc4: 340003e8 cbz w8, 5040 <__kvm_tlb_flush_vmid_ipa+0x18c> │ │ ~ │ │ ┌─00004fc8: 14000001 b 4fcc <__kvm_tlb_flush_vmid_ipa+0x118> <- 00004fc4(b.cc-succ)<fallthrough> │ │ │ │ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); +ttl var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4fcc 0x5040 (DW_OP_breg31 0x10) lexblock:lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:74 ~ │ │ └>00004fcc: b9402fe8 ldr w8, [sp, #44] <- 00004fc8(b)<__kvm_tlb_flush_vmid_ipa+0x118> ~ │ │ 00004fd0: 2a0803e9 mov w9, w8 ~ │ │ 00004fd4: 92400529 and x9, x9, #0x3 ~ │ │ 00004fd8: f9000be9 str x9, [sp, #16] ~ │ │ 00004fdc: 9400010c bl 540c <get_trans_granule> │ │ ~ │ │ 00004fe0: f9400be9 ldr x9, [sp, #16] <- 00004fdc(bl-succ)<return> ~ │ │ 00004fe4: aa000929 orr x9, x9, x0, lsl #2 ~ │ │ 00004fe8: f9000be9 str x9, [sp, #16] ~ │ │ 00004fec: f9400fe9 ldr x9, [sp, #24] ~ │ │ 00004ff0: 9250ed29 and x9, x9, #0xffff0fffffffffff ~ │ │ 00004ff4: f9000fe9 str x9, [sp, #24] │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ │ │ ┌─00004ff8: 14000001 b 4ffc <__kvm_tlb_flush_vmid_ipa+0x148> │ │ │ │ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ │ │┌─└>00004ffc: 14000001 b 5000 <__kvm_tlb_flush_vmid_ipa+0x14c> <- 00004ff8(b)<__kvm_tlb_flush_vmid_ipa+0x148> │ ││ │ ││ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ │┌┼└──>00005000: 14000001 b 5004 <__kvm_tlb_flush_vmid_ipa+0x150> <- 00004ffc(b)<__kvm_tlb_flush_vmid_ipa+0x14c> │││ │││ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ ┌┼└┼───>00005004: 14000001 b 5008 <__kvm_tlb_flush_vmid_ipa+0x154> <- 00005000(b)<__kvm_tlb_flush_vmid_ipa+0x150> ││ │ ││ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ ┌─└┼─┼───>00005008: 14000001 b 500c <__kvm_tlb_flush_vmid_ipa+0x158> <- 00005004(b)<__kvm_tlb_flush_vmid_ipa+0x154> │ │ │ │ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ ┌─└──┼─┼───>0000500c: 14000001 b 5010 <__kvm_tlb_flush_vmid_ipa+0x15c> <- 00005008(b)<__kvm_tlb_flush_vmid_ipa+0x158> │ │ │ │ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ ┌─└────┼─┼───>00005010: 14000001 b 5014 <__kvm_tlb_flush_vmid_ipa+0x160> <- 0000500c(b)<__kvm_tlb_flush_vmid_ipa+0x15c> │ │ │ │ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ ┌─└──────┼─┼───>00005014: 14000001 b 5018 <__kvm_tlb_flush_vmid_ipa+0x164> <- 00005010(b)<__kvm_tlb_flush_vmid_ipa+0x160> │ │ │ │ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ ┌─└────────┼─┼───>00005018: 14000001 b 501c <__kvm_tlb_flush_vmid_ipa+0x168> <- 00005014(b)<__kvm_tlb_flush_vmid_ipa+0x164> │ │ │ │ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ ┌─└──────────┼─┼───>0000501c: 14000001 b 5020 <__kvm_tlb_flush_vmid_ipa+0x16c> <- 00005018(b)<__kvm_tlb_flush_vmid_ipa+0x168> │ │ │ │ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ └────────────┼─┼───>00005020: f9400be8 ldr x8, [sp, #16] <- 0000501c(b)<__kvm_tlb_flush_vmid_ipa+0x16c> ~ │ │ 00005024: d3540d08 ubfiz x8, x8, #44, #4 ~ │ │ 00005028: f90007e8 str x8, [sp, #8] ~ │ │ 0000502c: f94007e8 ldr x8, [sp, #8] │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ │ │ 00005030: f9400fe9 ldr x9, [sp, #24] ~ │ │ 00005034: aa080128 orr x8, x9, x8 ~ │ │ 00005038: f9000fe8 str x8, [sp, #24] ~ │ │ ┌─0000503c: 14000001 b 5040 <__kvm_tlb_flush_vmid_ipa+0x18c> -ttl var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4fcc 0x5040 (DW_OP_breg31 0x10) lexblock:lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:74 │ │ │ │ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level); ~ └>└─>└>00005040: f9400fe8 ldr x8, [sp, #24] <- 00004fb8(b.cc)<__kvm_tlb_flush_vmid_ipa+0x18c>,00004fc4(b.cc)<__kvm_tlb_flush_vmid_ipa+0x18c>,0000503c(b)<__kvm_tlb_flush_vmid_ipa+0x18c> ~ 00005044: d50c8028 tlbi ipas2e1is, x8 ~ 00005048: d503201f nop ~ 0000504c: d503201f nop ~ ┌─00005050: 14000001 b 5054 <__kvm_tlb_flush_vmid_ipa+0x1a0> -arg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4eec 0x5054 (DW_OP_breg31 0x18) lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:74 __kvm_tlb_flush_vmid_ipa:82.2 (tlb.c) Sbepe ║dsb(ish); ~ └>00005054: d5033b9f dsb ish <- 00005050(b)<__kvm_tlb_flush_vmid_ipa+0x1a0> __kvm_tlb_flush_vmid_ipa:83.2 (tlb.c) Sbepe ║__tlbi(vmalle1is); ~ 00005058: d508831f tlbi vmalle1is ~ 0000505c: d503201f nop ~ 00005060: d503201f nop __kvm_tlb_flush_vmid_ipa:84.2 (tlb.c) Sbepe ║dsb(ish); ~ 00005064: d5033b9f dsb ish __kvm_tlb_flush_vmid_ipa:85.2 (tlb.c) Sbepe ║isb(); ~ 00005068: d5033fdf isb l: 0x506c 0x507c icache_is_vpipt inlined from __kvm_tlb_flush_vmid_ipa:106 (tlb.c) <4c67c>: l icache_is_vpipt:78.9 (cache.h) Sbepe return ║test_bit(ICACHEF_VPIPT, &__icache_flags); ~l 0000506c: d00000a1 adrp x1, 1b000 <hyp_memory+0x460> ~l 00005070: 911e4021 add x1, x1, #0x790 ~l 00005074: 52800020 mov w0, #0x1 // #1 ~l 00005078: 940001d5 bl 57cc <test_bit> __kvm_tlb_flush_vmid_ipa:106.6 (tlb.c) Sbepe if (║icache_is_vpipt()) ~ ┌──────0000507c: 34000740 cbz w0, 5164 <__kvm_tlb_flush_vmid_ipa+0x2b0> <- 00005078(bl-succ)<return> ~ │ ┌─00005080: 14000001 b 5084 <__kvm_tlb_flush_vmid_ipa+0x1d0> <- 0000507c(b.cc-succ)<fallthrough> │ │ ~ │ └>00005084: 52800388 mov w8, #0x1c // #28 <- 00005080(b)<__kvm_tlb_flush_vmid_ipa+0x1d0> ~ 00005088: b81c83a8 stur w8, [x29, #-56] m: 0x508c 0x5160 __flush_icache_all inlined from __kvm_tlb_flush_vmid_ipa:107 (tlb.c) <4c690>: n: 0x508c 0x5144 cpus_have_const_cap inlined from __flush_icache_all:132 (cacheflush.h) <4c6a4>:<4c690>: mn 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) 0x508c 0x5144 (DW_OP_fbreg -0x38) cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c ~mn 0000508c: b85c83a8 ldur w8, [x29, #-56] ~mn 00005090: b81d03a8 stur w8, [x29, #-48] o: 0x5094 0x513c cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <4c6c0>:<4c6a4>:<4c690>: p: 0x5094 0x50bc system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <4c6dd>:<4c6c0>:<4c6a4>:<4c690>: mnop 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) 0x5094 0x513c (DW_OP_fbreg -0x30) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5094 0x50bc (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c ~mnop 00005094: d00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~mnop 00005098: b9479928 ldr w8, [x9, #1944] ~mnop 0000509c: 71000108 subs w8, w8, #0x0 ~mnop 000050a0: 1a9f07ea cset w10, ne // ne = any ~mnop 000050a4: 381e43aa sturb w10, [x29, #-28] mnop system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~mnop 000050a8: 385e43aa ldurb w10, [x29, #-28] ~mnop 000050ac: 2a0a03e9 mov w9, w10 ~mnop 000050b0: 92400129 and x9, x9, #0x1 mnop system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~mnop 000050b4: f81d83a9 stur x9, [x29, #-40] mnop system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~mnop 000050b8: f85d83a9 ldur x9, [x29, #-40] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5094 0x50bc (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c mno cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~mno │ ┌────000050bc: b4000389 cbz x9, 512c <__kvm_tlb_flush_vmid_ipa+0x278> │ │ ~mno │ │ ┌─000050c0: 14000001 b 50c4 <__kvm_tlb_flush_vmid_ipa+0x210> <- 000050bc(b.cc-succ)<fallthrough> │ │ │ mno │ │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~mno │ │ └>000050c4: b85d03a8 ldur w8, [x29, #-48] <- 000050c0(b)<__kvm_tlb_flush_vmid_ipa+0x210> ~mno │ │ 000050c8: b81f83a8 stur w8, [x29, #-8] q: 0x50cc 0x512c (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4c709>:<4c6c0>:<4c6a4>:<4c690>: mnoq │ │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x50cc 0x512c (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c ~mnoq │ │ 000050cc: b85f83a8 ldur w8, [x29, #-8] mnoq │ │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~mnoq │ │ 000050d0: 7100f508 subs w8, w8, #0x3d ~mnoq │ │ ┌──000050d4: 540000ab b.lt 50e8 <__kvm_tlb_flush_vmid_ipa+0x234> // b.tstop │ │ │ ~mnoq │ │ │┌─000050d8: 14000001 b 50dc <__kvm_tlb_flush_vmid_ipa+0x228> <- 000050d4(b.cc-succ)<fallthrough> │ │ ││ ~mnoq │ │ │└>000050dc: 2a1f03e8 mov w8, wzr <- 000050d8(b)<__kvm_tlb_flush_vmid_ipa+0x228> mnoq │ │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~mnoq │ │ │ 000050e0: 381ff3a8 sturb w8, [x29, #-1] ~mnoq │ │┌┼──000050e4: 14000013 b 5130 <__kvm_tlb_flush_vmid_ipa+0x27c> │ │││ mnoq │ │││ __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)) 0x50e8 0x511c (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c ~mnoq │ ││└─>000050e8: b89f83a8 ldursw x8, [x29, #-8] <- 000050d4(b.cc)<__kvm_tlb_flush_vmid_ipa+0x234> ~mnoq │ ││ 000050ec: d37ced08 lsl x8, x8, #4 ~mnoq │ ││ 000050f0: d00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~mnoq │ ││ 000050f4: 911e8129 add x9, x9, #0x7a0 ~mnoq │ ││ 000050f8: b868692a ldr w10, [x9, x8] ~mnoq │ ││ 000050fc: 7100014a subs w10, w10, #0x0 ~mnoq │ ││ 00005100: 1a9f07eb cset w11, ne // ne = any ~mnoq │ ││ 00005104: 381f43ab sturb w11, [x29, #-12] mnoq │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~mnoq │ ││ 00005108: 385f43ab ldurb w11, [x29, #-12] ~mnoq │ ││ 0000510c: 2a0b03e8 mov w8, w11 ~mnoq │ ││ 00005110: 92400108 and x8, x8, #0x1 mnoq │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~mnoq │ ││ 00005114: f81e83a8 stur x8, [x29, #-24] mnoq │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~mnoq │ ││ 00005118: f85e83a8 ldur x8, [x29, #-24] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x50e8 0x511c (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c mnoq │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~mnoq │ ││ 0000511c: f1000108 subs x8, x8, #0x0 ~mnoq │ ││ 00005120: 1a9f07eb cset w11, ne // ne = any mnoq │ ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~mnoq │ ││ 00005124: 381ff3ab sturb w11, [x29, #-1] ~mnoq │ ││ ┌─00005128: 14000002 b 5130 <__kvm_tlb_flush_vmid_ipa+0x27c> -num param int (base type, DW_ATE_signed size:4) 0x50cc 0x512c (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c │ ││ │ mno │ ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~mno │ └┼─┼>0000512c: d4210000 brk #0x800 <- 000050bc(b.cc)<__kvm_tlb_flush_vmid_ipa+0x278> │ │ │ r: 0x5130 0x5134 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4c709>:<4c6c0>:<4c6a4>:<4c690>: mnor │ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x5130 0x5134 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c ~mnor │ └>└>00005130: 385ff3a8 ldurb w8, [x29, #-1] <- 000050e4(b)<__kvm_tlb_flush_vmid_ipa+0x27c>,00005128(b)<__kvm_tlb_flush_vmid_ipa+0x27c> -num param int (base type, DW_ATE_signed size:4) 0x5130 0x5134 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c mno cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~mno 00005134: 381d73a8 sturb w8, [x29, #-41] mno cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~mno 00005138: 385d73a8 ldurb w8, [x29, #-41] -num param int (base type, DW_ATE_signed size:4) 0x5094 0x513c (DW_OP_fbreg -0x30) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c mn cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num); ~mn 0000513c: 381cf3a8 sturb w8, [x29, #-49] mn cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║} ~mn 00005140: 385cf3a8 ldurb w8, [x29, #-49] -num param int (base type, DW_ATE_signed size:4) 0x508c 0x5144 (DW_OP_fbreg -0x38) cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c m __flush_icache_all:132.6 (cacheflush.h) Sbepe if (║cpus_have_const_cap(ARM64_HAS_CACHE_DIC)) ~m 00005144: 71000508 subs w8, w8, #0x1 ~m │ ┌──00005148: 54000061 b.ne 5154 <__kvm_tlb_flush_vmid_ipa+0x2a0> // b.any │ │ ~m │ │┌─0000514c: 14000001 b 5150 <__kvm_tlb_flush_vmid_ipa+0x29c> <- 00005148(b.cc-succ)<fallthrough> │ ││ m │ ││ __flush_icache_all:133.3 (cacheflush.h) Sbepe ║return; ~m │┌──┼└>00005150: 14000004 b 5160 <__kvm_tlb_flush_vmid_ipa+0x2ac> <- 0000514c(b)<__kvm_tlb_flush_vmid_ipa+0x29c> ││ │ m ││ │ __flush_icache_all:135.2 (cacheflush.h) Sbepe ║asm("ic ialluis"); ~m ││ └─>00005154: d508711f ic ialluis <- 00005148(b.cc)<__kvm_tlb_flush_vmid_ipa+0x2a0> m ││ __flush_icache_all:136.2 (cacheflush.h) Sbepe ║dsb(ish); ~m ││ 00005158: d5033b9f dsb ish m ││ __flush_icache_all:137.1 (cacheflush.h) Sbepe ║} ~m ││ ┌─0000515c: 14000001 b 5160 <__kvm_tlb_flush_vmid_ipa+0x2ac> ││ │ ││ │ __kvm_tlb_flush_vmid_ipa:107.3 (tlb.c) Sbepe ║__flush_icache_all(); ~ │└>┌─└>00005160: 14000001 b 5164 <__kvm_tlb_flush_vmid_ipa+0x2b0> <- 00005150(b)<__kvm_tlb_flush_vmid_ipa+0x2ac>,0000515c(b)<__kvm_tlb_flush_vmid_ipa+0x2ac> │ │ ~ └─>└──>00005164: 910083e0 add x0, sp, #0x20 <- 0000507c(b.cc)<__kvm_tlb_flush_vmid_ipa+0x2b0>,00005160(b)<__kvm_tlb_flush_vmid_ipa+0x2b0> __kvm_tlb_flush_vmid_ipa:109.2 (tlb.c) Sbepe ║__tlb_switch_to_host(&cxt); ~ 00005168: 940000ac bl 5418 <__tlb_switch_to_host> __kvm_tlb_flush_vmid_ipa:110.1 (tlb.c) Sbepe ║} ~ 0000516c: a94b7bfd ldp x29, x30, [sp, #176] <- 00005168(bl-succ)<return> ~ 00005170: 910303ff add sp, sp, #0xc0 00004ec0 CFA:r29+16 r29:c-16 r30:c-8 ~ 00005174: d65f03c0 ret -mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x4eb4 0x5178 (DW_OP_breg31 0x38) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:58 -ipa param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4eb4 0x5178 (DW_OP_breg31 0x30) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:59 -level param int (base type, DW_ATE_signed size:4) 0x4eb4 0x5178 (DW_OP_breg31 0x2c) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:59 -cxt var struct tlb_inv_context<3df69>/<4cded> 0x4eb4 0x5178 (DW_OP_breg31 0x20) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:61 **00005178 <__tlb_switch_to_guest>: + __tlb_switch_to_guest params: +mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5178 0x540c (DW_OP_fbreg 0x28) +cxt param pointer(struct tlb_inv_context<3df69>/<4cded>) 0x5178 0x540c (DW_OP_fbreg 0x20) __tlb_switch_to_guest:19.0 (tlb.c) Sbepe ║{ 00005178 CFA:r31 +mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5178 0x540c (DW_OP_fbreg 0x28) __tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:17 +cxt param pointer(struct tlb_inv_context<3df69>/<4cded>) 0x5178 0x540c (DW_OP_fbreg 0x20) __tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:18 ~ 00005178: d103c3ff sub sp, sp, #0xf0 <- 00004ed8(bl)<__tlb_switch_to_guest>,000056b4(bl)<__tlb_switch_to_guest>,00005700(bl)<__tlb_switch_to_guest> ~ 0000517c: f90017e0 str x0, [sp, #40] ~ 00005180: f90013e1 str x1, [sp, #32] ~ 00005184: 528004a8 mov w8, #0x25 // #37 ~ 00005188: b90033e8 str w8, [sp, #48] s: 0x518c 0x5234 cpus_have_final_cap inlined from __tlb_switch_to_guest:20 (tlb.c) <4c832>: t: 0x518c 0x51b4 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <4c84e>:<4c832>: st 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) 0x518c 0x5234 (DW_OP_fbreg 0x30) cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x518c 0x51b4 (DW_OP_fbreg 0x44) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ~st 0000518c: d00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~st 00005190: b9479928 ldr w8, [x9, #1944] ~st 00005194: 71000108 subs w8, w8, #0x0 ~st 00005198: 1a9f07ea cset w10, ne // ne = any ~st 0000519c: 390113ea strb w10, [sp, #68] st system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~st 000051a0: 394113ea ldrb w10, [sp, #68] ~st 000051a4: 2a0a03e9 mov w9, w10 ~st 000051a8: 92400129 and x9, x9, #0x1 st system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~st 000051ac: f9001fe9 str x9, [sp, #56] st system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~st 000051b0: f9401fe9 ldr x9, [sp, #56] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x518c 0x51b4 (DW_OP_fbreg 0x44) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c s cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~s ┌────000051b4: b4000389 cbz x9, 5224 <__tlb_switch_to_guest+0xac> ~s │ ┌─000051b8: 14000001 b 51bc <__tlb_switch_to_guest+0x44> <- 000051b4(b.cc-succ)<fallthrough> │ │ s │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~s │ └>000051bc: b94033e8 ldr w8, [sp, #48] <- 000051b8(b)<__tlb_switch_to_guest+0x44> ~s 000051c0: b9005be8 str w8, [sp, #88] u: 0x51c4 0x5224 (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4c87b>:<4c832>: su __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x51c4 0x5224 (DW_OP_fbreg 0x58) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ~su 000051c4: b9405be8 ldr w8, [sp, #88] su __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~su 000051c8: 7100f508 subs w8, w8, #0x3d ~su │ ┌──000051cc: 540000ab b.lt 51e0 <__tlb_switch_to_guest+0x68> // b.tstop │ │ ~su │ │┌─000051d0: 14000001 b 51d4 <__tlb_switch_to_guest+0x5c> <- 000051cc(b.cc-succ)<fallthrough> │ ││ ~su │ │└>000051d4: 2a1f03e8 mov w8, wzr <- 000051d0(b)<__tlb_switch_to_guest+0x5c> su │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~su │ │ 000051d8: 39017fe8 strb w8, [sp, #95] ~su │┌┼──000051dc: 14000013 b 5228 <__tlb_switch_to_guest+0xb0> │││ su │││ __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)) 0x51e0 0x5214 (DW_OP_fbreg 0x54) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ~su ││└─>000051e0: b9805be8 ldrsw x8, [sp, #88] <- 000051cc(b.cc)<__tlb_switch_to_guest+0x68> ~su ││ 000051e4: d37ced08 lsl x8, x8, #4 ~su ││ 000051e8: d00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~su ││ 000051ec: 911e8129 add x9, x9, #0x7a0 ~su ││ 000051f0: b868692a ldr w10, [x9, x8] ~su ││ 000051f4: 7100014a subs w10, w10, #0x0 ~su ││ 000051f8: 1a9f07eb cset w11, ne // ne = any ~su ││ 000051fc: 390153eb strb w11, [sp, #84] su ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~su ││ 00005200: 394153eb ldrb w11, [sp, #84] ~su ││ 00005204: 2a0b03e8 mov w8, w11 ~su ││ 00005208: 92400108 and x8, x8, #0x1 su ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~su ││ 0000520c: f90027e8 str x8, [sp, #72] su ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~su ││ 00005210: f94027e8 ldr x8, [sp, #72] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x51e0 0x5214 (DW_OP_fbreg 0x54) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c su ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~su ││ 00005214: f1000108 subs x8, x8, #0x0 ~su ││ 00005218: 1a9f07eb cset w11, ne // ne = any su ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~su ││ 0000521c: 39017feb strb w11, [sp, #95] ~su ││ ┌─00005220: 14000002 b 5228 <__tlb_switch_to_guest+0xb0> -num param int (base type, DW_ATE_signed size:4) 0x51c4 0x5224 (DW_OP_fbreg 0x58) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ││ │ s ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~s └┼─┼>00005224: d4210000 brk #0x800 <- 000051b4(b.cc)<__tlb_switch_to_guest+0xac> │ │ v: 0x5228 0x522c (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4c87b>:<4c832>: sv │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x5228 0x522c (DW_OP_fbreg 0x58) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ~sv └>└>00005228: 39417fe8 ldrb w8, [sp, #95] <- 000051dc(b)<__tlb_switch_to_guest+0xb0>,00005220(b)<__tlb_switch_to_guest+0xb0> -num param int (base type, DW_ATE_signed size:4) 0x5228 0x522c (DW_OP_fbreg 0x58) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c s cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~s 0000522c: 3900dfe8 strb w8, [sp, #55] s cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~s 00005230: 3940dfe8 ldrb w8, [sp, #55] -num param int (base type, DW_ATE_signed size:4) 0x518c 0x5234 (DW_OP_fbreg 0x30) cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c __tlb_switch_to_guest:20.6 (tlb.c) Sbepe if (║cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) { ~ 00005234: 71000508 subs w8, w8, #0x1 ~ ┌───00005238: 540002e1 b.ne 5294 <__tlb_switch_to_guest+0x11c> // b.any ~ │ ┌─0000523c: 14000001 b 5240 <__tlb_switch_to_guest+0xc8> <- 00005238(b.cc-succ)<fallthrough> │ │ +val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5240 0x5294 (DW_OP_fbreg 0x18) lexblock:__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:21 +reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5240 0x5254 (DW_OP_fbreg 0x10) lexblock:lexblock:__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:30 ~ │ └>00005240: d5382048 mrs x8, tcr_el1 <- 0000523c(b)<__tlb_switch_to_guest+0xc8> __tlb_switch_to_guest:30.20 (tlb.c) Sbepe val = cxt->tcr = ║read_sysreg_el1(SYS_TCR); ~ 00005244: f9000be8 str x8, [sp, #16] ~ 00005248: f9400be8 ldr x8, [sp, #16] ~ 0000524c: f90007e8 str x8, [sp, #8] ~ 00005250: f94007e8 ldr x8, [sp, #8] -reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5240 0x5254 (DW_OP_fbreg 0x10) lexblock:lexblock:__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:30 __tlb_switch_to_guest:30.9 (tlb.c) sbepe val = ║cxt->tcr = read_sysreg_el1(SYS_TCR); ~ 00005254: f94013e9 ldr x9, [sp, #32] __tlb_switch_to_guest:30.18 (tlb.c) sbepe val = cxt->tcr ║= read_sysreg_el1(SYS_TCR); ~ 00005258: f9000128 str x8, [x9] __tlb_switch_to_guest:30.7 (tlb.c) sbepe val ║= cxt->tcr = read_sysreg_el1(SYS_TCR); ~ 0000525c: f9000fe8 str x8, [sp, #24] __tlb_switch_to_guest:31.7 (tlb.c) Sbepe val ║|= TCR_EPD1_MASK | TCR_EPD0_MASK; ~ 00005260: f9400fe8 ldr x8, [sp, #24] ~ 00005264: 320983ea mov w10, #0x800080 // #8388736 ~ 00005268: 2a0a03e9 mov w9, w10 ~ 0000526c: aa090108 orr x8, x8, x9 ~ 00005270: f9000fe8 str x8, [sp, #24] __tlb_switch_to_guest:32.3 (tlb.c) Sbepe ║write_sysreg_el1(val, SYS_TCR); ~ │ ┌─00005274: 14000001 b 5278 <__tlb_switch_to_guest+0x100> │ │ │ │ __tlb_switch_to_guest:32.3 (tlb.c) sbepe ║write_sysreg_el1(val, SYS_TCR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5278 0x528c (DW_OP_fbreg 0x0) lexblock:lexblock:__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:32 ~ │ └>00005278: f9400fe8 ldr x8, [sp, #24] <- 00005274(b)<__tlb_switch_to_guest+0x100> ~ 0000527c: f90003e8 str x8, [sp] ~ 00005280: f94003e8 ldr x8, [sp] ~ 00005284: d5182048 msr tcr_el1, x8 ~ │ ┌─00005288: 14000001 b 528c <__tlb_switch_to_guest+0x114> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5278 0x528c (DW_OP_fbreg 0x0) lexblock:lexblock:__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:32 │ │ │ │ __tlb_switch_to_guest:33.3 (tlb.c) Sbepe ║isb(); ~ │ └>0000528c: d5033fdf isb <- 00005288(b)<__tlb_switch_to_guest+0x114> __tlb_switch_to_guest:34.2 (tlb.c) Sbepe } ~ │ ┌─00005290: 14000001 b 5294 <__tlb_switch_to_guest+0x11c> -val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5240 0x5294 (DW_OP_fbreg 0x18) lexblock:__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:21 │ │ │ │ __tlb_switch_to_guest:42.22 (tlb.c) Sbepe __load_guest_stage2(║mmu); ~ └>└>00005294: f94017e8 ldr x8, [sp, #40] <- 00005238(b.cc)<__tlb_switch_to_guest+0x11c>,00005290(b)<__tlb_switch_to_guest+0x11c> ~ 00005298: f90033e8 str x8, [sp, #96] w: 0x529c 0x5400 __load_guest_stage2 inlined from __tlb_switch_to_guest:42 (tlb.c) <4c8fe>: w __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<3df69>/<3e32a>) 0x529c 0x5400 (DW_OP_fbreg 0x60) __load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ~w 0000529c: f94033e8 ldr x8, [sp, #96] w __load_guest_stage2:363.21 (kvm_mmu.h) sbepe __load_stage2(mmu, ║kern_hyp_va(mmu->arch)->vtcr); ~w 000052a0: f9401509 ldr x9, [x8, #40] ~w 000052a4: f90037e9 str x9, [sp, #104] x: 0x52a8 0x52c8 __kern_hyp_va inlined from __load_guest_stage2:363 (kvm_mmu.h) <4c91b>:<4c8fe>: wx __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) 0x52a8 0x52c8 (DW_OP_fbreg 0x68) __kern_hyp_va(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ~wx 000052a8: f94037e9 ldr x9, [sp, #104] ~wx 000052ac: 92400129 and x9, x9, #0x1 ~wx 000052b0: 93c90529 ror x9, x9, #1 ~wx 000052b4: 91000129 add x9, x9, #0x0 ~wx 000052b8: 91400129 add x9, x9, #0x0, lsl #12 ~wx 000052bc: 93c9fd29 ror x9, x9, #63 ~wx 000052c0: f90037e9 str x9, [sp, #104] wx __kern_hyp_va:142.9 (kvm_mmu.h) Sbepe return v; ~wx 000052c4: f94037e9 ldr x9, [sp, #104] -v param long unsigned int (base type, DW_ATE_unsigned size:8) 0x52a8 0x52c8 (DW_OP_fbreg 0x68) __kern_hyp_va(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c w __load_guest_stage2:363.45 (kvm_mmu.h) Sbepe __load_stage2(mmu, kern_hyp_va(mmu->arch)->║vtcr); ~w 000052c8: f9401929 ldr x9, [x9, #48] ~w 000052cc: f90047e8 str x8, [sp, #136] ~w 000052d0: f90043e9 str x9, [sp, #128] y: 0x52d4 0x5400 __load_stage2 inlined from __load_guest_stage2:363 (kvm_mmu.h) <4c93a>:<4c8fe>: wy __load_stage2:350.2 (kvm_mmu.h) Sbepe ║write_sysreg(vtcr, vtcr_el2); +mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x52d4 0x5400 (DW_OP_fbreg 0x88) __load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c +vtcr param long unsigned int (base type, DW_ATE_unsigned size:8) 0x52d4 0x5400 (DW_OP_fbreg 0x80) __load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52d4 0x52e4 (DW_OP_fbreg 0x78) lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ~wy 000052d4: f94043e8 ldr x8, [sp, #128] ~wy 000052d8: f9003fe8 str x8, [sp, #120] ~wy 000052dc: f9403fe8 ldr x8, [sp, #120] ~wy 000052e0: d51c2148 msr vtcr_el2, x8 -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52d4 0x52e4 (DW_OP_fbreg 0x78) lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c wy __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))) 0x52e4 0x53fc (DW_OP_fbreg 0x70) lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ~wy 000052e4: f94047e8 ldr x8, [sp, #136] ~wy 000052e8: f9005be8 str x8, [sp, #176] z: 0x52ec 0x53f0 kvm_get_vttbr inlined from __load_stage2:351 (kvm_mmu.h) <4c98e>:<lexical_block>:<4c93a>:<4c8fe>: wyz kvm_get_vttbr:335.27 (kvm_mmu.h) Sbepe struct kvm_vmid *vmid = &║mmu->vmid; +mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x52ec 0x53f0 (DW_OP_fbreg 0xb0) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c +vmid var pointer(struct kvm_vmid<3df69>/<3e36f>) 0x52ec 0x53f0 (DW_OP_fbreg 0xa8) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c +vmid_field var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52ec 0x53f0 (DW_OP_fbreg 0xa0) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c +baddr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52ec 0x53f0 (DW_OP_fbreg 0x98) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c +cnp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52ec 0x53f0 (DW_OP_fbreg 0x90) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ~wyz 000052ec: f9405be8 ldr x8, [sp, #176] wyz kvm_get_vttbr:335.19 (kvm_mmu.h) sbepe struct kvm_vmid *║vmid = &mmu->vmid; ~wyz 000052f0: f90057e8 str x8, [sp, #168] ~wyz 000052f4: 528001ea mov w10, #0xf // #15 ~wyz 000052f8: b900bbea str w10, [sp, #184] a: 0x52fc 0x53b8 cpus_have_const_cap inlined from system_supports_cnp:694 (cpufeature.h) <4c9e5>:<4c9d0>:<4c98e>:<lexical_block>:<4c93a>:<4c8fe>: b: 0x52fc 0x53b8 system_supports_cnp inlined from kvm_get_vttbr:337 (kvm_mmu.h) <4c9d0>:<4c98e>:<lexical_block>:<4c93a>:<4c8fe>: wyzab 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) 0x52fc 0x53b8 (DW_OP_fbreg 0xb8) cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ~wyzab 000052fc: b940bbea ldr w10, [sp, #184] ~wyzab 00005300: b900c3ea str w10, [sp, #192] c: 0x5304 0x53ac cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <4ca03>:<4c9e5>:<4c9d0>:<4c98e>:<lexical_block>:<4c93a>:<4c8fe>: d: 0x5304 0x532c system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <4ca21>:<4ca03>:<4c9e5>:<4c9d0>:<4c98e>:<lexical_block>:<4c93a>:<4c8fe>: wyzabcd 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) 0x5304 0x53ac (DW_OP_fbreg 0xc0) 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):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5304 0x532c (DW_OP_fbreg 0xd4) 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):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ~wyzabcd 00005304: d00000a8 adrp x8, 1b000 <hyp_memory+0x460> ~wyzabcd 00005308: b947990a ldr w10, [x8, #1944] ~wyzabcd 0000530c: 7100014a subs w10, w10, #0x0 ~wyzabcd 00005310: 1a9f07eb cset w11, ne // ne = any ~wyzabcd 00005314: 390353eb strb w11, [sp, #212] wyzabcd system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~wyzabcd 00005318: 394353eb ldrb w11, [sp, #212] ~wyzabcd 0000531c: 2a0b03e8 mov w8, w11 ~wyzabcd 00005320: 92400108 and x8, x8, #0x1 wyzabcd system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~wyzabcd 00005324: f90067e8 str x8, [sp, #200] wyzabcd system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~wyzabcd 00005328: f94067e8 ldr x8, [sp, #200] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5304 0x532c (DW_OP_fbreg 0xd4) 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):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c wyzabc cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~wyzabc ┌────0000532c: b4000388 cbz x8, 539c <__tlb_switch_to_guest+0x224> ~wyzabc │ ┌─00005330: 14000001 b 5334 <__tlb_switch_to_guest+0x1bc> <- 0000532c(b.cc-succ)<fallthrough> │ │ wyzabc │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~wyzabc │ └>00005334: b940c3e8 ldr w8, [sp, #192] <- 00005330(b)<__tlb_switch_to_guest+0x1bc> ~wyzabc 00005338: b900ebe8 str w8, [sp, #232] e: 0x533c 0x539c (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4ca4e>:<4ca03>:<4c9e5>:<4c9d0>:<4c98e>:<lexical_block>:<4c93a>:<4c8fe>: wyzabce __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x533c 0x539c (DW_OP_fbreg 0xe8) __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):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ~wyzabce 0000533c: b940ebe8 ldr w8, [sp, #232] wyzabce __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~wyzabce 00005340: 7100f508 subs w8, w8, #0x3d ~wyzabce │ ┌──00005344: 540000ab b.lt 5358 <__tlb_switch_to_guest+0x1e0> // b.tstop │ │ ~wyzabce │ │┌─00005348: 14000001 b 534c <__tlb_switch_to_guest+0x1d4> <- 00005344(b.cc-succ)<fallthrough> │ ││ ~wyzabce │ │└>0000534c: 2a1f03e8 mov w8, wzr <- 00005348(b)<__tlb_switch_to_guest+0x1d4> wyzabce │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~wyzabce │ │ 00005350: 3903bfe8 strb w8, [sp, #239] ~wyzabce │┌┼──00005354: 14000013 b 53a0 <__tlb_switch_to_guest+0x228> │││ wyzabce │││ __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)) 0x5358 0x538c (DW_OP_fbreg 0xe4) 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):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ~wyzabce ││└─>00005358: b980ebe8 ldrsw x8, [sp, #232] <- 00005344(b.cc)<__tlb_switch_to_guest+0x1e0> ~wyzabce ││ 0000535c: d37ced08 lsl x8, x8, #4 ~wyzabce ││ 00005360: d00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~wyzabce ││ 00005364: 911e8129 add x9, x9, #0x7a0 ~wyzabce ││ 00005368: b868692a ldr w10, [x9, x8] ~wyzabce ││ 0000536c: 7100014a subs w10, w10, #0x0 ~wyzabce ││ 00005370: 1a9f07eb cset w11, ne // ne = any ~wyzabce ││ 00005374: 390393eb strb w11, [sp, #228] wyzabce ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~wyzabce ││ 00005378: 394393eb ldrb w11, [sp, #228] ~wyzabce ││ 0000537c: 2a0b03e8 mov w8, w11 ~wyzabce ││ 00005380: 92400108 and x8, x8, #0x1 wyzabce ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~wyzabce ││ 00005384: f9006fe8 str x8, [sp, #216] wyzabce ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~wyzabce ││ 00005388: f9406fe8 ldr x8, [sp, #216] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5358 0x538c (DW_OP_fbreg 0xe4) 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):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c wyzabce ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~wyzabce ││ 0000538c: f1000108 subs x8, x8, #0x0 ~wyzabce ││ 00005390: 1a9f07eb cset w11, ne // ne = any wyzabce ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~wyzabce ││ 00005394: 3903bfeb strb w11, [sp, #239] ~wyzabce ││ ┌─00005398: 14000002 b 53a0 <__tlb_switch_to_guest+0x228> -num param int (base type, DW_ATE_signed size:4) 0x533c 0x539c (DW_OP_fbreg 0xe8) __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):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ││ │ wyzabc ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~wyzabc └┼─┼>0000539c: d4210000 brk #0x800 <- 0000532c(b.cc)<__tlb_switch_to_guest+0x224> │ │ f: 0x53a0 0x53a4 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4ca4e>:<4ca03>:<4c9e5>:<4c9d0>:<4c98e>:<lexical_block>:<4c93a>:<4c8fe>: wyzabcf │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x53a0 0x53a4 (DW_OP_fbreg 0xe8) __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):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c ~wyzabcf └>└>000053a0: 3943bfe8 ldrb w8, [sp, #239] <- 00005354(b)<__tlb_switch_to_guest+0x228>,00005398(b)<__tlb_switch_to_guest+0x228> -num param int (base type, DW_ATE_signed size:4) 0x53a0 0x53a4 (DW_OP_fbreg 0xe8) __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):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c wyzabc cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~wyzabc 000053a4: 39031fe8 strb w8, [sp, #199] wyzabc cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~wyzabc 000053a8: 39431fe8 ldrb w8, [sp, #199] -num param int (base type, DW_ATE_signed size:4) 0x5304 0x53ac (DW_OP_fbreg 0xc0) 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):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c wyzab cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num); ~wyzab 000053ac: 3902ffe8 strb w8, [sp, #191] wyzab cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║} ~wyzab 000053b0: 3942ffe8 ldrb w8, [sp, #191] ~wyzab 000053b4: 2a0803e9 mov w9, w8 -num param int (base type, DW_ATE_signed size:4) 0x52fc 0x53b8 (DW_OP_fbreg 0xb8) cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c wyz kvm_get_vttbr:337.6 (kvm_mmu.h) Sbepe u64 ║cnp = system_supports_cnp() ? VTTBR_CNP_BIT : 0; ~wyz 000053b8: f9004be9 str x9, [sp, #144] wyz kvm_get_vttbr:339.10 (kvm_mmu.h) Sbepe baddr = ║mmu->pgd_phys; ~wyz 000053bc: f9405be9 ldr x9, [sp, #176] wyz kvm_get_vttbr:339.15 (kvm_mmu.h) sbepe baddr = mmu->║pgd_phys; ~wyz 000053c0: f9400929 ldr x9, [x9, #16] wyz kvm_get_vttbr:339.8 (kvm_mmu.h) sbepe baddr ║= mmu->pgd_phys; ~wyz 000053c4: f9004fe9 str x9, [sp, #152] wyz kvm_get_vttbr:340.20 (kvm_mmu.h) Sbepe vmid_field = (u64)║vmid->vmid << VTTBR_VMID_SHIFT; ~wyz 000053c8: f94057e9 ldr x9, [sp, #168] wyz kvm_get_vttbr:340.15 (kvm_mmu.h) sbepe vmid_field = ║(u64)vmid->vmid << VTTBR_VMID_SHIFT; ~wyz 000053cc: b9400928 ldr w8, [x9, #8] ~wyz 000053d0: 2a0803e9 mov w9, w8 wyz kvm_get_vttbr:340.31 (kvm_mmu.h) sbepe vmid_field = (u64)vmid->vmid ║<< VTTBR_VMID_SHIFT; ~wyz 000053d4: d3503d29 lsl x9, x9, #48 wyz kvm_get_vttbr:340.13 (kvm_mmu.h) sbepe vmid_field ║= (u64)vmid->vmid << VTTBR_VMID_SHIFT; ~wyz 000053d8: f90053e9 str x9, [sp, #160] wyz kvm_get_vttbr:341.9 (kvm_mmu.h) Sbepe return ║kvm_phys_to_vttbr(baddr) | vmid_field | cnp; ~wyz 000053dc: f9404fe9 ldr x9, [sp, #152] wyz kvm_get_vttbr:341.36 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | ║vmid_field | cnp; ~wyz 000053e0: f94053ea ldr x10, [sp, #160] wyz kvm_get_vttbr:341.34 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) ║| vmid_field | cnp; ~wyz 000053e4: aa0a0129 orr x9, x9, x10 wyz kvm_get_vttbr:341.49 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | vmid_field | ║cnp; ~wyz 000053e8: f9404bea ldr x10, [sp, #144] wyz kvm_get_vttbr:341.47 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | vmid_field ║| cnp; ~wyz 000053ec: aa0a0129 orr x9, x9, x10 -mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x52ec 0x53f0 (DW_OP_fbreg 0xb0) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c -vmid var pointer(struct kvm_vmid<3df69>/<3e36f>) 0x52ec 0x53f0 (DW_OP_fbreg 0xa8) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c -vmid_field var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52ec 0x53f0 (DW_OP_fbreg 0xa0) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c -baddr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52ec 0x53f0 (DW_OP_fbreg 0x98) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c -cnp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52ec 0x53f0 (DW_OP_fbreg 0x90) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c wy __load_stage2:351.2 (kvm_mmu.h) Sbepe ║write_sysreg(kvm_get_vttbr(mmu), vttbr_el2); ~wy 000053f0: f9003be9 str x9, [sp, #112] ~wy 000053f4: f9403be9 ldr x9, [sp, #112] ~wy 000053f8: d51c2109 msr vttbr_el2, x9 -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52e4 0x53fc (DW_OP_fbreg 0x70) lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c wy __load_stage2:358.2 (kvm_mmu.h) Sbepe ║asm(ALTERNATIVE("nop", "isb", ARM64_WORKAROUND_SPECULATIVE_AT)); ~wy 000053fc: d503201f nop -mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x529c 0x5400 (DW_OP_fbreg 0x60) __load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c -mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x52d4 0x5400 (DW_OP_fbreg 0x88) __load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c -vtcr param long unsigned int (base type, DW_ATE_unsigned size:8) 0x52d4 0x5400 (DW_OP_fbreg 0x80) __load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c __tlb_switch_to_guest:43.2 (tlb.c) Sbepe ║asm(ALTERNATIVE("isb", "nop", ARM64_WORKAROUND_SPECULATIVE_AT)); ~ 00005400: d5033fdf isb __tlb_switch_to_guest:44.1 (tlb.c) Sbepe ║} ~ 00005404: 9103c3ff add sp, sp, #0xf0 0000517c CFA:r31+240 ~ 00005408: d65f03c0 ret -mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5178 0x540c (DW_OP_fbreg 0x28) __tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:17 -cxt param pointer(struct tlb_inv_context<3df69>/<4cded>) 0x5178 0x540c (DW_OP_fbreg 0x20) __tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:18 **0000540c <get_trans_granule>: + get_trans_granule params: none get_trans_granule:77.0 (tlbflush.h) Sbepe ║{ ~ 0000540c: 52800028 mov w8, #0x1 // #1 <- 00004fdc(bl)<get_trans_granule> ~ 00005410: 2a0803e0 mov w0, w8 get_trans_granule:80.3 (tlbflush.h) SbePe ║return TLBI_TTL_TG_4K; 0000540c CFA:r31 ~ 00005414: d65f03c0 ret **00005418 <__tlb_switch_to_host>: + __tlb_switch_to_host params: +cxt param pointer(struct tlb_inv_context<3df69>/<4cded>) 0x5418 0x5690 (DW_OP_fbreg 0x10) __tlb_switch_to_host:47.0 (tlb.c) Sbepe ║{ 00005418 CFA:r31 +cxt param pointer(struct tlb_inv_context<3df69>/<4cded>) 0x5418 0x5690 (DW_OP_fbreg 0x10) __tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c:46 ~ 00005418: d10383ff sub sp, sp, #0xe0 <- 00005168(bl)<__tlb_switch_to_host>,000056d0(bl)<__tlb_switch_to_host>,0000571c(bl)<__tlb_switch_to_host> ~ 0000541c: f9000be0 str x0, [sp, #16] g: 0x5420 0x55a8 __load_host_stage2 inlined from __tlb_switch_to_host:48 (tlb.c) <4cae3>: g __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)) 0x5420 0x5448 (DW_OP_fbreg 0x2c) lexblock:__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ~g 00005420: d00000a8 adrp x8, 1b000 <hyp_memory+0x460> ~g 00005424: b9484109 ldr w9, [x8, #2112] ~g 00005428: 71000129 subs w9, w9, #0x0 ~g 0000542c: 1a9f07ea cset w10, ne // ne = any ~g 00005430: 3900b3ea strb w10, [sp, #44] g __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized)) ~g 00005434: 3940b3ea ldrb w10, [sp, #44] ~g 00005438: 2a0a03e8 mov w8, w10 ~g 0000543c: 92400108 and x8, x8, #0x1 g __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized)) ~g 00005440: f90013e8 str x8, [sp, #32] g __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized)) ~g 00005444: f94013e8 ldr x8, [sp, #32] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5420 0x5448 (DW_OP_fbreg 0x2c) lexblock:__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c g __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized)) ~g ┌─────00005448: b4000a68 cbz x8, 5594 <__tlb_switch_to_host+0x17c> ~g │ ┌─0000544c: 14000001 b 5450 <__tlb_switch_to_host+0x38> <- 00005448(b.cc-succ)<fallthrough> │ │ g │ │ __load_host_stage2:29.51 (mem_protect.h) Sbepe __load_stage2(&host_kvm.arch.mmu, host_kvm.arch.║vtcr); ~g │ └>00005450: d00000a8 adrp x8, 1b000 <hyp_memory+0x460> <- 0000544c(b)<__tlb_switch_to_host+0x38> ~g 00005454: 910ec108 add x8, x8, #0x3b0 ~g 00005458: f9401909 ldr x9, [x8, #48] ~g 0000545c: f90027e8 str x8, [sp, #72] ~g 00005460: f90023e9 str x9, [sp, #64] h: 0x5464 0x5590 __load_stage2 inlined from __load_host_stage2:29 (mem_protect.h) <4cb0d>:<4cae3>: gh __load_stage2:350.2 (kvm_mmu.h) Sbepe ║write_sysreg(vtcr, vtcr_el2); +mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5464 0x5590 (DW_OP_fbreg 0x48) __load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c +vtcr param long unsigned int (base type, DW_ATE_unsigned size:8) 0x5464 0x5590 (DW_OP_fbreg 0x40) __load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5464 0x5474 (DW_OP_fbreg 0x38) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ~gh 00005464: f94023e8 ldr x8, [sp, #64] ~gh 00005468: f9001fe8 str x8, [sp, #56] ~gh 0000546c: f9401fe8 ldr x8, [sp, #56] ~gh 00005470: d51c2148 msr vtcr_el2, x8 -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5464 0x5474 (DW_OP_fbreg 0x38) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c gh __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))) 0x5474 0x558c (DW_OP_fbreg 0x30) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ~gh 00005474: f94027e8 ldr x8, [sp, #72] ~gh 00005478: f9003be8 str x8, [sp, #112] i: 0x547c 0x5580 kvm_get_vttbr inlined from __load_stage2:351 (kvm_mmu.h) <4cb5e>:<lexical_block>:<4cb0d>:<4cae3>: ghi kvm_get_vttbr:335.27 (kvm_mmu.h) Sbepe struct kvm_vmid *vmid = &║mmu->vmid; +mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x547c 0x5580 (DW_OP_fbreg 0x70) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c +vmid var pointer(struct kvm_vmid<3df69>/<3e36f>) 0x547c 0x5580 (DW_OP_fbreg 0x68) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c +vmid_field var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x547c 0x5580 (DW_OP_fbreg 0x60) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c +baddr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x547c 0x5580 (DW_OP_fbreg 0x58) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c +cnp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x547c 0x5580 (DW_OP_fbreg 0x50) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ~ghi 0000547c: f9403be8 ldr x8, [sp, #112] ghi kvm_get_vttbr:335.19 (kvm_mmu.h) sbepe struct kvm_vmid *║vmid = &mmu->vmid; ~ghi 00005480: f90037e8 str x8, [sp, #104] ~ghi 00005484: 528001ea mov w10, #0xf // #15 ~ghi 00005488: b9007bea str w10, [sp, #120] j: 0x548c 0x5548 cpus_have_const_cap inlined from system_supports_cnp:694 (cpufeature.h) <4cbb5>:<4cba0>:<4cb5e>:<lexical_block>:<4cb0d>:<4cae3>: k: 0x548c 0x5548 system_supports_cnp inlined from kvm_get_vttbr:337 (kvm_mmu.h) <4cba0>:<4cb5e>:<lexical_block>:<4cb0d>:<4cae3>: ghijk 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) 0x548c 0x5548 (DW_OP_fbreg 0x78) cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ~ghijk 0000548c: b9407bea ldr w10, [sp, #120] ~ghijk 00005490: b90083ea str w10, [sp, #128] l: 0x5494 0x553c cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <4cbd3>:<4cbb5>:<4cba0>:<4cb5e>:<lexical_block>:<4cb0d>:<4cae3>: m: 0x5494 0x54bc system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <4cbf1>:<4cbd3>:<4cbb5>:<4cba0>:<4cb5e>:<lexical_block>:<4cb0d>:<4cae3>: ghijklm 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) 0x5494 0x553c (DW_OP_fbreg 0x80) 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):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5494 0x54bc (DW_OP_fbreg 0x94) 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):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ~ghijklm 00005494: d00000a8 adrp x8, 1b000 <hyp_memory+0x460> ~ghijklm 00005498: b947990a ldr w10, [x8, #1944] ~ghijklm 0000549c: 7100014a subs w10, w10, #0x0 ~ghijklm 000054a0: 1a9f07eb cset w11, ne // ne = any ~ghijklm 000054a4: 390253eb strb w11, [sp, #148] ghijklm system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~ghijklm 000054a8: 394253eb ldrb w11, [sp, #148] ~ghijklm 000054ac: 2a0b03e8 mov w8, w11 ~ghijklm 000054b0: 92400108 and x8, x8, #0x1 ghijklm system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~ghijklm 000054b4: f90047e8 str x8, [sp, #136] ghijklm system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~ghijklm 000054b8: f94047e8 ldr x8, [sp, #136] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5494 0x54bc (DW_OP_fbreg 0x94) 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):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ghijkl cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~ghijkl │┌────000054bc: b4000388 cbz x8, 552c <__tlb_switch_to_host+0x114> ││ ~ghijkl ││ ┌─000054c0: 14000001 b 54c4 <__tlb_switch_to_host+0xac> <- 000054bc(b.cc-succ)<fallthrough> ││ │ ghijkl ││ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~ghijkl ││ └>000054c4: b94083e8 ldr w8, [sp, #128] <- 000054c0(b)<__tlb_switch_to_host+0xac> ~ghijkl ││ 000054c8: b900abe8 str w8, [sp, #168] n: 0x54cc 0x552c (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4cc1e>:<4cbd3>:<4cbb5>:<4cba0>:<4cb5e>:<lexical_block>:<4cb0d>:<4cae3>: ghijkln ││ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x54cc 0x552c (DW_OP_fbreg 0xa8) __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):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ~ghijkln ││ 000054cc: b940abe8 ldr w8, [sp, #168] ghijkln ││ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~ghijkln ││ 000054d0: 7100f508 subs w8, w8, #0x3d ~ghijkln ││ ┌──000054d4: 540000ab b.lt 54e8 <__tlb_switch_to_host+0xd0> // b.tstop ││ │ ~ghijkln ││ │┌─000054d8: 14000001 b 54dc <__tlb_switch_to_host+0xc4> <- 000054d4(b.cc-succ)<fallthrough> ││ ││ ~ghijkln ││ │└>000054dc: 2a1f03e8 mov w8, wzr <- 000054d8(b)<__tlb_switch_to_host+0xc4> ghijkln ││ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~ghijkln ││ │ 000054e0: 3902bfe8 strb w8, [sp, #175] ~ghijkln ││┌┼──000054e4: 14000013 b 5530 <__tlb_switch_to_host+0x118> ││││ ghijkln ││││ __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)) 0x54e8 0x551c (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_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ~ghijkln │││└─>000054e8: b980abe8 ldrsw x8, [sp, #168] <- 000054d4(b.cc)<__tlb_switch_to_host+0xd0> ~ghijkln │││ 000054ec: d37ced08 lsl x8, x8, #4 ~ghijkln │││ 000054f0: d00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~ghijkln │││ 000054f4: 911e8129 add x9, x9, #0x7a0 ~ghijkln │││ 000054f8: b868692a ldr w10, [x9, x8] ~ghijkln │││ 000054fc: 7100014a subs w10, w10, #0x0 ~ghijkln │││ 00005500: 1a9f07eb cset w11, ne // ne = any ~ghijkln │││ 00005504: 390293eb strb w11, [sp, #164] ghijkln │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ghijkln │││ 00005508: 394293eb ldrb w11, [sp, #164] ~ghijkln │││ 0000550c: 2a0b03e8 mov w8, w11 ~ghijkln │││ 00005510: 92400108 and x8, x8, #0x1 ghijkln │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ghijkln │││ 00005514: f9004fe8 str x8, [sp, #152] ghijkln │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ghijkln │││ 00005518: f9404fe8 ldr x8, [sp, #152] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x54e8 0x551c (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_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ghijkln │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~ghijkln │││ 0000551c: f1000108 subs x8, x8, #0x0 ~ghijkln │││ 00005520: 1a9f07eb cset w11, ne // ne = any ghijkln │││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~ghijkln │││ 00005524: 3902bfeb strb w11, [sp, #175] ~ghijkln │││ ┌─00005528: 14000002 b 5530 <__tlb_switch_to_host+0x118> -num param int (base type, DW_ATE_signed size:4) 0x54cc 0x552c (DW_OP_fbreg 0xa8) __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):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c │││ │ ghijkl │││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~ghijkl │└┼─┼>0000552c: d4210000 brk #0x800 <- 000054bc(b.cc)<__tlb_switch_to_host+0x114> │ │ │ o: 0x5530 0x5534 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4cc1e>:<4cbd3>:<4cbb5>:<4cba0>:<4cb5e>:<lexical_block>:<4cb0d>:<4cae3>: ghijklo │ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x5530 0x5534 (DW_OP_fbreg 0xa8) __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):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ~ghijklo │ └>└>00005530: 3942bfe8 ldrb w8, [sp, #175] <- 000054e4(b)<__tlb_switch_to_host+0x118>,00005528(b)<__tlb_switch_to_host+0x118> -num param int (base type, DW_ATE_signed size:4) 0x5530 0x5534 (DW_OP_fbreg 0xa8) __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):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ghijkl cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~ghijkl 00005534: 39021fe8 strb w8, [sp, #135] ghijkl cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~ghijkl 00005538: 39421fe8 ldrb w8, [sp, #135] -num param int (base type, DW_ATE_signed size:4) 0x5494 0x553c (DW_OP_fbreg 0x80) 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):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ghijk cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num); ~ghijk 0000553c: 3901ffe8 strb w8, [sp, #127] ghijk cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║} ~ghijk 00005540: 3941ffe8 ldrb w8, [sp, #127] ~ghijk 00005544: 2a0803e9 mov w9, w8 -num param int (base type, DW_ATE_signed size:4) 0x548c 0x5548 (DW_OP_fbreg 0x78) cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ghi kvm_get_vttbr:337.6 (kvm_mmu.h) Sbepe u64 ║cnp = system_supports_cnp() ? VTTBR_CNP_BIT : 0; ~ghi 00005548: f9002be9 str x9, [sp, #80] ghi kvm_get_vttbr:339.10 (kvm_mmu.h) Sbepe baddr = ║mmu->pgd_phys; ~ghi 0000554c: f9403be9 ldr x9, [sp, #112] ghi kvm_get_vttbr:339.15 (kvm_mmu.h) sbepe baddr = mmu->║pgd_phys; ~ghi 00005550: f9400929 ldr x9, [x9, #16] ghi kvm_get_vttbr:339.8 (kvm_mmu.h) sbepe baddr ║= mmu->pgd_phys; ~ghi 00005554: f9002fe9 str x9, [sp, #88] ghi kvm_get_vttbr:340.20 (kvm_mmu.h) Sbepe vmid_field = (u64)║vmid->vmid << VTTBR_VMID_SHIFT; ~ghi 00005558: f94037e9 ldr x9, [sp, #104] ghi kvm_get_vttbr:340.15 (kvm_mmu.h) sbepe vmid_field = ║(u64)vmid->vmid << VTTBR_VMID_SHIFT; ~ghi 0000555c: b9400928 ldr w8, [x9, #8] ~ghi 00005560: 2a0803e9 mov w9, w8 ghi kvm_get_vttbr:340.31 (kvm_mmu.h) sbepe vmid_field = (u64)vmid->vmid ║<< VTTBR_VMID_SHIFT; ~ghi 00005564: d3503d29 lsl x9, x9, #48 ghi kvm_get_vttbr:340.13 (kvm_mmu.h) sbepe vmid_field ║= (u64)vmid->vmid << VTTBR_VMID_SHIFT; ~ghi 00005568: f90033e9 str x9, [sp, #96] ghi kvm_get_vttbr:341.9 (kvm_mmu.h) Sbepe return ║kvm_phys_to_vttbr(baddr) | vmid_field | cnp; ~ghi 0000556c: f9402fe9 ldr x9, [sp, #88] ghi kvm_get_vttbr:341.36 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | ║vmid_field | cnp; ~ghi 00005570: f94033ea ldr x10, [sp, #96] ghi kvm_get_vttbr:341.34 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) ║| vmid_field | cnp; ~ghi 00005574: aa0a0129 orr x9, x9, x10 ghi kvm_get_vttbr:341.49 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | vmid_field | ║cnp; ~ghi 00005578: f9402bea ldr x10, [sp, #80] ghi kvm_get_vttbr:341.47 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | vmid_field ║| cnp; ~ghi 0000557c: aa0a0129 orr x9, x9, x10 -mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x547c 0x5580 (DW_OP_fbreg 0x70) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c -vmid var pointer(struct kvm_vmid<3df69>/<3e36f>) 0x547c 0x5580 (DW_OP_fbreg 0x68) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c -vmid_field var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x547c 0x5580 (DW_OP_fbreg 0x60) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c -baddr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x547c 0x5580 (DW_OP_fbreg 0x58) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c -cnp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x547c 0x5580 (DW_OP_fbreg 0x50) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c gh __load_stage2:351.2 (kvm_mmu.h) Sbepe ║write_sysreg(kvm_get_vttbr(mmu), vttbr_el2); ~gh 00005580: f9001be9 str x9, [sp, #48] ~gh 00005584: f9401be9 ldr x9, [sp, #48] ~gh 00005588: d51c2109 msr vttbr_el2, x9 -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5474 0x558c (DW_OP_fbreg 0x30) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c gh __load_stage2:358.2 (kvm_mmu.h) Sbepe ║asm(ALTERNATIVE("nop", "isb", ARM64_WORKAROUND_SPECULATIVE_AT)); ~gh 0000558c: d503201f nop -mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5464 0x5590 (DW_OP_fbreg 0x48) __load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c -vtcr param long unsigned int (base type, DW_ATE_unsigned size:8) 0x5464 0x5590 (DW_OP_fbreg 0x40) __load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c g __load_host_stage2:29.3 (mem_protect.h) Sbepe ║__load_stage2(&host_kvm.arch.mmu, host_kvm.arch.vtcr); ~g │ ┌───00005590: 14000006 b 55a8 <__tlb_switch_to_host+0x190> │ │ ~g └─┼──>00005594: aa1f03e8 mov x8, xzr <- 00005448(b.cc)<__tlb_switch_to_host+0x17c> g __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))) 0x5598 0x55a8 (DW_OP_fbreg 0x18) lexblock:__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ~g 00005598: f9000fe8 str x8, [sp, #24] ~g 0000559c: f9400fe8 ldr x8, [sp, #24] ~g 000055a0: d51c2108 msr vttbr_el2, x8 ~g │ ┌─000055a4: 14000001 b 55a8 <__tlb_switch_to_host+0x190> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5598 0x55a8 (DW_OP_fbreg 0x18) lexblock:__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c │ │ ~ └>└>000055a8: 528004a8 mov w8, #0x25 // #37 <- 00005590(b)<__tlb_switch_to_host+0x190>,000055a4(b)<__tlb_switch_to_host+0x190> ~ 000055ac: b900b3e8 str w8, [sp, #176] p: 0x55b0 0x5658 cpus_have_final_cap inlined from __tlb_switch_to_host:50 (tlb.c) <4cc69>: q: 0x55b0 0x55d8 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <4cc86>:<4cc69>: pq 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) 0x55b0 0x5658 (DW_OP_fbreg 0xb0) cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c +branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x55b0 0x55d8 (DW_OP_fbreg 0xc4) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ~pq 000055b0: d00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~pq 000055b4: b9479928 ldr w8, [x9, #1944] ~pq 000055b8: 71000108 subs w8, w8, #0x0 ~pq 000055bc: 1a9f07ea cset w10, ne // ne = any ~pq 000055c0: 390313ea strb w10, [sp, #196] pq system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~pq 000055c4: 394313ea ldrb w10, [sp, #196] ~pq 000055c8: 2a0a03e9 mov w9, w10 ~pq 000055cc: 92400129 and x9, x9, #0x1 pq system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~pq 000055d0: f9005fe9 str x9, [sp, #184] pq system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready); ~pq 000055d4: f9405fe9 ldr x9, [sp, #184] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x55b0 0x55d8 (DW_OP_fbreg 0xc4) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c p cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized()) ~p ┌────000055d8: b4000389 cbz x9, 5648 <__tlb_switch_to_host+0x230> ~p │ ┌─000055dc: 14000001 b 55e0 <__tlb_switch_to_host+0x1c8> <- 000055d8(b.cc-succ)<fallthrough> │ │ p │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num); ~p │ └>000055e0: b940b3e8 ldr w8, [sp, #176] <- 000055dc(b)<__tlb_switch_to_host+0x1c8> ~p 000055e4: b900dbe8 str w8, [sp, #216] r: 0x55e8 0x5648 (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4ccb3>:<4cc69>: pr __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS) +num param int (base type, DW_ATE_signed size:4) 0x55e8 0x5648 (DW_OP_fbreg 0xd8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ~pr 000055e8: b940dbe8 ldr w8, [sp, #216] pr __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~pr 000055ec: 7100f508 subs w8, w8, #0x3d ~pr │ ┌──000055f0: 540000ab b.lt 5604 <__tlb_switch_to_host+0x1ec> // b.tstop │ │ ~pr │ │┌─000055f4: 14000001 b 55f8 <__tlb_switch_to_host+0x1e0> <- 000055f0(b.cc-succ)<fallthrough> │ ││ ~pr │ │└>000055f8: 2a1f03e8 mov w8, wzr <- 000055f4(b)<__tlb_switch_to_host+0x1e0> pr │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false; ~pr │ │ 000055fc: 39037fe8 strb w8, [sp, #223] ~pr │┌┼──00005600: 14000013 b 564c <__tlb_switch_to_host+0x234> │││ pr │││ __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)) 0x5604 0x5638 (DW_OP_fbreg 0xd4) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ~pr ││└─>00005604: b980dbe8 ldrsw x8, [sp, #216] <- 000055f0(b.cc)<__tlb_switch_to_host+0x1ec> ~pr ││ 00005608: d37ced08 lsl x8, x8, #4 ~pr ││ 0000560c: d00000a9 adrp x9, 1b000 <hyp_memory+0x460> ~pr ││ 00005610: 911e8129 add x9, x9, #0x7a0 ~pr ││ 00005614: b868692a ldr w10, [x9, x8] ~pr ││ 00005618: 7100014a subs w10, w10, #0x0 ~pr ││ 0000561c: 1a9f07eb cset w11, ne // ne = any ~pr ││ 00005620: 390353eb strb w11, [sp, #212] pr ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~pr ││ 00005624: 394353eb ldrb w11, [sp, #212] ~pr ││ 00005628: 2a0b03e8 mov w8, w11 ~pr ││ 0000562c: 92400108 and x8, x8, #0x1 pr ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~pr ││ 00005630: f90067e8 str x8, [sp, #200] pr ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~pr ││ 00005634: f94067e8 ldr x8, [sp, #200] -branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5604 0x5638 (DW_OP_fbreg 0xd4) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c pr ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]); ~pr ││ 00005638: f1000108 subs x8, x8, #0x0 ~pr ││ 0000563c: 1a9f07eb cset w11, ne // ne = any pr ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]); ~pr ││ 00005640: 39037feb strb w11, [sp, #223] ~pr ││ ┌─00005644: 14000002 b 564c <__tlb_switch_to_host+0x234> -num param int (base type, DW_ATE_signed size:4) 0x55e8 0x5648 (DW_OP_fbreg 0xd8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ││ │ p ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG(); ~p └┼─┼>00005648: d4210000 brk #0x800 <- 000055d8(b.cc)<__tlb_switch_to_host+0x230> │ │ s: 0x564c 0x5650 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4ccb3>:<4cc69>: ps │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║} +num param int (base type, DW_ATE_signed size:4) 0x564c 0x5650 (DW_OP_fbreg 0xd8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c ~ps └>└>0000564c: 39437fe8 ldrb w8, [sp, #223] <- 00005600(b)<__tlb_switch_to_host+0x234>,00005644(b)<__tlb_switch_to_host+0x234> -num param int (base type, DW_ATE_signed size:4) 0x564c 0x5650 (DW_OP_fbreg 0xd8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c p cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num); ~p 00005650: 3902dfe8 strb w8, [sp, #183] p cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║} ~p 00005654: 3942dfe8 ldrb w8, [sp, #183] -num param int (base type, DW_ATE_signed size:4) 0x55b0 0x5658 (DW_OP_fbreg 0xb0) cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c __tlb_switch_to_host:50.6 (tlb.c) Sbepe if (║cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) { ~ 00005658: 71000508 subs w8, w8, #0x1 ~ ┌─────0000565c: 54000161 b.ne 5688 <__tlb_switch_to_host+0x270> // b.any ~ │ ┌─00005660: 14000001 b 5664 <__tlb_switch_to_host+0x24c> <- 0000565c(b.cc-succ)<fallthrough> │ │ │ │ __tlb_switch_to_host:52.3 (tlb.c) Sbepe ║isb(); ~ │ └>00005664: d5033fdf isb <- 00005660(b)<__tlb_switch_to_host+0x24c> __tlb_switch_to_host:54.3 (tlb.c) Sbepe ║write_sysreg_el1(cxt->tcr, SYS_TCR); ~ │ ┌─00005668: 14000001 b 566c <__tlb_switch_to_host+0x254> │ │ │ │ __tlb_switch_to_host:54.3 (tlb.c) sbepe ║write_sysreg_el1(cxt->tcr, SYS_TCR); +__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x566c 0x5684 (DW_OP_fbreg 0x8) lexblock:__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c:54 ~ │ └>0000566c: f9400be8 ldr x8, [sp, #16] <- 00005668(b)<__tlb_switch_to_host+0x254> ~ 00005670: f9400108 ldr x8, [x8] ~ 00005674: f90007e8 str x8, [sp, #8] ~ 00005678: f94007e8 ldr x8, [sp, #8] ~ 0000567c: d5182048 msr tcr_el1, x8 ~ │ ┌─00005680: 14000001 b 5684 <__tlb_switch_to_host+0x26c> -__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x566c 0x5684 (DW_OP_fbreg 0x8) lexblock:__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c:54 │ │ │ │ __tlb_switch_to_host:55.2 (tlb.c) Sbepe } ~ │ ┌─└>00005684: 14000001 b 5688 <__tlb_switch_to_host+0x270> <- 00005680(b)<__tlb_switch_to_host+0x26c> │ │ │ │ __tlb_switch_to_host:56.1 (tlb.c) Sbepe ║} ~ └>└──>00005688: 910383ff add sp, sp, #0xe0 <- 0000565c(b.cc)<__tlb_switch_to_host+0x270>,00005684(b)<__tlb_switch_to_host+0x270> 0000541c CFA:r31+224 ~ 0000568c: d65f03c0 ret -cxt param pointer(struct tlb_inv_context<3df69>/<4cded>) 0x5418 0x5690 (DW_OP_fbreg 0x10) __tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c:46 **00005690 <__kvm_tlb_flush_vmid>: + __kvm_tlb_flush_vmid params: +mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5690 0x56e0 (DW_OP_fbreg -0x8) __kvm_tlb_flush_vmid:113.0 (tlb.c) Sbepe ║{ +mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5690 0x56e0 (DW_OP_fbreg -0x8) __kvm_tlb_flush_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:112 +cxt var struct tlb_inv_context<3df69>/<4cded> 0x5690 0x56e0 (DW_OP_breg31 0x10) __kvm_tlb_flush_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:114 ~ 00005690: d100c3ff sub sp, sp, #0x30 <- 00007314(bl)<__kvm_tlb_flush_vmid>,00015784(bl)<__kvm_tlb_flush_vmid> ~ 00005694: a9027bfd stp x29, x30, [sp, #32] 00005690 CFA:r31 r29:u r30:u ~ 00005698: 910083fd add x29, sp, #0x20 ~ 0000569c: f81f83a0 stur x0, [x29, #-8] __kvm_tlb_flush_vmid:116.2 (tlb.c) SbePe ║dsb(ishst); ~ 000056a0: d5033a9f dsb ishst __kvm_tlb_flush_vmid:119.24 (tlb.c) Sbepe __tlb_switch_to_guest(║mmu, &cxt); ~ 000056a4: f85f83a0 ldur x0, [x29, #-8] ~ 000056a8: 910043e8 add x8, sp, #0x10 __kvm_tlb_flush_vmid:119.2 (tlb.c) sbepe ║__tlb_switch_to_guest(mmu, &cxt); ~ 000056ac: aa0803e1 mov x1, x8 ~ 000056b0: f90007e8 str x8, [sp, #8] ~ 000056b4: 97fffeb1 bl 5178 <__tlb_switch_to_guest> __kvm_tlb_flush_vmid:121.2 (tlb.c) Sbepe ║__tlbi(vmalls12e1is); ~ 000056b8: d50c83df tlbi vmalls12e1is <- 000056b4(bl-succ)<return> ~ 000056bc: d503201f nop ~ 000056c0: d503201f nop __kvm_tlb_flush_vmid:122.2 (tlb.c) Sbepe ║dsb(ish); ~ 000056c4: d5033b9f dsb ish __kvm_tlb_flush_vmid:123.2 (tlb.c) Sbepe ║isb(); ~ 000056c8: d5033fdf isb ~ 000056cc: f94007e0 ldr x0, [sp, #8] __kvm_tlb_flush_vmid:125.2 (tlb.c) Sbepe ║__tlb_switch_to_host(&cxt); ~ 000056d0: 97ffff52 bl 5418 <__tlb_switch_to_host> __kvm_tlb_flush_vmid:126.1 (tlb.c) Sbepe ║} ~ 000056d4: a9427bfd ldp x29, x30, [sp, #32] <- 000056d0(bl-succ)<return> ~ 000056d8: 9100c3ff add sp, sp, #0x30 0000569c CFA:r29+16 r29:c-16 r30:c-8 ~ 000056dc: d65f03c0 ret -mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5690 0x56e0 (DW_OP_fbreg -0x8) __kvm_tlb_flush_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:112 -cxt var struct tlb_inv_context<3df69>/<4cded> 0x5690 0x56e0 (DW_OP_breg31 0x10) __kvm_tlb_flush_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:114 **000056e0 <__kvm_tlb_flush_local_vmid>: + __kvm_tlb_flush_local_vmid params: +mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x56e0 0x572c (DW_OP_fbreg -0x8) __kvm_tlb_flush_local_vmid:129.0 (tlb.c) Sbepe ║{ +mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x56e0 0x572c (DW_OP_fbreg -0x8) __kvm_tlb_flush_local_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:128 +cxt var struct tlb_inv_context<3df69>/<4cded> 0x56e0 0x572c (DW_OP_breg31 0x10) __kvm_tlb_flush_local_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:130 ~ 000056e0: d100c3ff sub sp, sp, #0x30 <- 00007368(bl)<__kvm_tlb_flush_local_vmid> ~ 000056e4: a9027bfd stp x29, x30, [sp, #32] 000056e0 CFA:r31 r29:u r30:u ~ 000056e8: 910083fd add x29, sp, #0x20 ~ 000056ec: f81f83a0 stur x0, [x29, #-8] __kvm_tlb_flush_local_vmid:133.24 (tlb.c) SbePe __tlb_switch_to_guest(║mmu, &cxt); ~ 000056f0: f85f83a0 ldur x0, [x29, #-8] ~ 000056f4: 910043e8 add x8, sp, #0x10 __kvm_tlb_flush_local_vmid:133.2 (tlb.c) sbepe ║__tlb_switch_to_guest(mmu, &cxt); ~ 000056f8: aa0803e1 mov x1, x8 ~ 000056fc: f90007e8 str x8, [sp, #8] ~ 00005700: 97fffe9e bl 5178 <__tlb_switch_to_guest> __kvm_tlb_flush_local_vmid:135.2 (tlb.c) Sbepe ║__tlbi(vmalle1); ~ 00005704: d508871f tlbi vmalle1 <- 00005700(bl-succ)<return> ~ 00005708: d503201f nop ~ 0000570c: d503201f nop __kvm_tlb_flush_local_vmid:136.2 (tlb.c) Sbepe ║dsb(nsh); ~ 00005710: d503379f dsb nsh __kvm_tlb_flush_local_vmid:137.2 (tlb.c) Sbepe ║isb(); ~ 00005714: d5033fdf isb ~ 00005718: f94007e0 ldr x0, [sp, #8] __kvm_tlb_flush_local_vmid:139.2 (tlb.c) Sbepe ║__tlb_switch_to_host(&cxt); ~ 0000571c: 97ffff3f bl 5418 <__tlb_switch_to_host> __kvm_tlb_flush_local_vmid:140.1 (tlb.c) Sbepe ║} ~ 00005720: a9427bfd ldp x29, x30, [sp, #32] <- 0000571c(bl-succ)<return> ~ 00005724: 9100c3ff add sp, sp, #0x30 000056ec CFA:r29+16 r29:c-16 r30:c-8 ~ 00005728: d65f03c0 ret -mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x56e0 0x572c (DW_OP_fbreg -0x8) __kvm_tlb_flush_local_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:128 -cxt var struct tlb_inv_context<3df69>/<4cded> 0x56e0 0x572c (DW_OP_breg31 0x10) __kvm_tlb_flush_local_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:130 **0000572c <__kvm_flush_vm_context>: + __kvm_flush_vm_context params: none __kvm_flush_vm_context:143.0 (tlb.c) Sbepe ║{ ~ 0000572c: a9bf7bfd stp x29, x30, [sp, #-16]! <- 0000724c(bl)<__kvm_flush_vm_context> 0000572c CFA:r31 r29:u r30:u ~ 00005730: 910003fd mov x29, sp __kvm_flush_vm_context:144.2 (tlb.c) SbePe ║dsb(ishst); ~ 00005734: d5033a9f dsb ishst __kvm_flush_vm_context:145.2 (tlb.c) Sbepe ║__tlbi(alle1is); ~ 00005738: d50c839f tlbi alle1is ~ 0000573c: d503201f nop ~ 00005740: d503201f nop t: 0x5744 0x5754 icache_is_vpipt inlined from __kvm_flush_vm_context:156 (tlb.c) <4cd78>: t icache_is_vpipt:78.9 (cache.h) Sbepe return ║test_bit(ICACHEF_VPIPT, &__icache_flags); ~t 00005744: d00000a1 adrp x1, 1b000 <hyp_memory+0x460> ~t 00005748: 911e4021 add x1, x1, #0x790 ~t 0000574c: 52800020 mov w0, #0x1 // #1 ~t 00005750: 9400001f bl 57cc <test_bit> __kvm_flush_vm_context:156.6 (tlb.c) Sbepe if (║icache_is_vpipt()) ~ ┌───00005754: 34000080 cbz w0, 5764 <__kvm_flush_vm_context+0x38> <- 00005750(bl-succ)<return> ~ │ ┌─00005758: 14000001 b 575c <__kvm_flush_vm_context+0x30> <- 00005754(b.cc-succ)<fallthrough> │ │ │ │ __kvm_flush_vm_context:157.3 (tlb.c) Sbepe ║asm volatile("ic ialluis"); ~ │ └>0000575c: d508711f ic ialluis <- 00005758(b)<__kvm_flush_vm_context+0x30> ~ │ ┌─00005760: 14000001 b 5764 <__kvm_flush_vm_context+0x38> │ │ │ │ __kvm_flush_vm_context:159.2 (tlb.c) Sbepe ║dsb(ish); ~ └>└>00005764: d5033b9f dsb ish <- 00005754(b.cc)<__kvm_flush_vm_context+0x38>,00005760(b)<__kvm_flush_vm_context+0x38> __kvm_flush_vm_context:160.1 (tlb.c) Sbepe ║} ~ 00005768: a8c17bfd ldp x29, x30, [sp], #16 00005734 CFA:r29+16 r29:c-16 r30:c-8 ~ 0000576c: d65f03c0 ret **00005770 <cpus_have_cap>: + cpus_have_cap params: +num param unsigned int (base type, DW_ATE_unsigned size:4) 0x5770 0x57cc (DW_OP_breg31 0x8) cpus_have_cap:428.0 (cpufeature.h) Sbepe ║{ +num param unsigned int (base type, DW_ATE_unsigned size:4) 0x5770 0x57cc (DW_OP_breg31 0x8) cpus_have_cap:arch/arm64/kvm/hyp/nvhe/tlb.c:427 ~ 00005770: d10083ff sub sp, sp, #0x20 ~ 00005774: a9017bfd stp x29, x30, [sp, #16] 00005770 CFA:r31 r29:u r30:u ~ 00005778: 910043fd add x29, sp, #0x10 ~ 0000577c: b9000be0 str w0, [sp, #8] cpus_have_cap:429.6 (cpufeature.h) SbePe if (║num >= ARM64_NCAPS) ~ 00005780: b9400be8 ldr w8, [sp, #8] cpus_have_cap:429.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS) ~ 00005784: 7100f508 subs w8, w8, #0x3d ~ ┌──00005788: 540000a3 b.cc 579c <cpus_have_cap+0x2c> // b.lo, b.ul, b.last ~ │┌─0000578c: 14000001 b 5790 <cpus_have_cap+0x20> <- 00005788(b.cc-succ)<fallthrough> ││ ~ │└>00005790: 2a1f03e8 mov w8, wzr <- 0000578c(b)<cpus_have_cap+0x20> cpus_have_cap:430.3 (cpufeature.h) Sbepe ║return false; ~ 00005794: 381ff3a8 sturb w8, [x29, #-1] ~ ┌┼──00005798: 14000009 b 57bc <cpus_have_cap+0x4c> ││ ││ cpus_have_cap:431.18 (cpufeature.h) Sbepe return test_bit(║num, cpu_hwcaps); ~ │└─>0000579c: b9400be0 ldr w0, [sp, #8] <- 00005788(b.cc)<cpus_have_cap+0x2c> cpus_have_cap:431.9 (cpufeature.h) sbepe return ║test_bit(num, cpu_hwcaps); ~ 000057a0: d00000a1 adrp x1, 1b000 <hyp_memory+0x460> ~ 000057a4: 91218021 add x1, x1, #0x860 ~ 000057a8: 94000009 bl 57cc <test_bit> ~ 000057ac: 71000008 subs w8, w0, #0x0 <- 000057a8(bl-succ)<return> ~ 000057b0: 1a9f07e9 cset w9, ne // ne = any cpus_have_cap:431.2 (cpufeature.h) sbepe ║return test_bit(num, cpu_hwcaps); ~ 000057b4: 381ff3a9 sturb w9, [x29, #-1] ~ │ ┌─000057b8: 14000001 b 57bc <cpus_have_cap+0x4c> │ │ │ │ cpus_have_cap:432.1 (cpufeature.h) Sbepe ║} ~ └>└>000057bc: 385ff3a0 ldurb w0, [x29, #-1] <- 00005798(b)<cpus_have_cap+0x4c>,000057b8(b)<cpus_have_cap+0x4c> ~ 000057c0: a9417bfd ldp x29, x30, [sp, #16] ~ 000057c4: 910083ff add sp, sp, #0x20 0000577c CFA:r29+16 r29:c-16 r30:c-8 ~ 000057c8: d65f03c0 ret -num param unsigned int (base type, DW_ATE_unsigned size:4) 0x5770 0x57cc (DW_OP_breg31 0x8) cpus_have_cap:arch/arm64/kvm/hyp/nvhe/tlb.c:427 **000057cc <test_bit>: + test_bit params: +nr param int (base type, DW_ATE_signed size:4) 0x57cc 0x580c (DW_OP_fbreg 0xc) +addr param pointer(const(volatile(long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x57cc 0x580c (DW_OP_fbreg 0x0) test_bit:105.0 (non-atomic.h) Sbepe ║{ 000057cc CFA:r31 +nr param int (base type, DW_ATE_signed size:4) 0x57cc 0x580c (DW_OP_fbreg 0xc) test_bit:arch/arm64/kvm/hyp/nvhe/tlb.c:104 +addr param pointer(const(volatile(long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x57cc 0x580c (DW_OP_fbreg 0x0) test_bit:arch/arm64/kvm/hyp/nvhe/tlb.c:104 ~ 000057cc: d10043ff sub sp, sp, #0x10 <- 00005078(bl)<test_bit>,00005750(bl)<test_bit>,000057a8(bl)<test_bit> ~ 000057d0: b9000fe0 str w0, [sp, #12] ~ 000057d4: f90003e1 str x1, [sp] test_bit:106.16 (non-atomic.h) SbePe return 1UL & (║addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ~ 000057d8: f94003e8 ldr x8, [sp] test_bit:106.21 (non-atomic.h) sbepe return 1UL & (addr[║BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ~ 000057dc: b9400fe9 ldr w9, [sp, #12] ~ 000057e0: 1100fd2a add w10, w9, #0x3f ~ 000057e4: 7100012b subs w11, w9, #0x0 ~ 000057e8: 1a89b149 csel w9, w10, w9, lt // lt = tstop ~ 000057ec: 13067d29 asr w9, w9, #6 test_bit:106.16 (non-atomic.h) sbepe return 1UL & (║addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ~ 000057f0: 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))); ~ 000057f4: b9400fe9 ldr w9, [sp, #12] ~ 000057f8: 2a0903ec mov w12, w9 test_bit:106.35 (non-atomic.h) sbepe return 1UL & (addr[BIT_WORD(nr)] ║>> (nr & (BITS_PER_LONG-1))); ~ 000057fc: 9acc2508 lsr x8, x8, x12 test_bit:106.13 (non-atomic.h) sbepe return 1UL ║& (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ~ 00005800: 12000100 and w0, w8, #0x1 test_bit:106.2 (non-atomic.h) sbepe ║return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ~ 00005804: 910043ff add sp, sp, #0x10 ~ 00005808: d65f03c0 ret -nr param int (base type, DW_ATE_signed size:4) 0x57cc 0x580c (DW_OP_fbreg 0xc) test_bit:arch/arm64/kvm/hyp/nvhe/tlb.c:104 -addr param pointer(const(volatile(long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x57cc 0x580c (DW_OP_fbreg 0x0) test_bit:arch/arm64/kvm/hyp/nvhe/tlb.c:104 ~ 0000580c: d5033b9f dsb ish ~ 00005810: d50c8028 tlbi ipas2e1is, x8 ~ 00005814: d5033b9f dsb ish ~ 00005818: d508831f tlbi vmalle1is ~ 0000581c: d53d2048 mrs x8, tcr_el12 ~ 00005820: d51d2048 msr tcr_el12, x8 ~ 00005824: d5033fdf isb ~ 00005828: d503201f nop ~ 0000582c: d5033fdf isb ~ 00005830: d51d2048 msr tcr_el12, x8 ~ 00005834: d5033b9f dsb ish ~ 00005838: d50c83df tlbi vmalls12e1is ~ 0000583c: d5033b9f dsb ish ~ 00005840: d508871f tlbi vmalle1 ~ 00005844: d5033b9f dsb ish ~ 00005848: d50c839f tlbi alle1is ~ 0000584c: missing ~ 00005850: missing ~ 00005854: missing ~ 00005858: missing ~ 0000585c: missing ~ 00005860: missing ~ 00005864: missing ~ 00005868: missing ~ 0000586c: missing ~ 00005870: missing ~ 00005874: missing ~ 00005878: missing ~ 0000587c: missing ~ 00005880: missing ~ 00005884: missing ~ 00005888: missing ~ 0000588c: missing ~ 00005890: missing ~ 00005894: missing ~ 00005898: missing ~ 0000589c: missing ~ 000058a0: missing ~ 000058a4: missing ~ 000058a8: missing ~ 000058ac: missing ~ 000058b0: missing ~ 000058b4: missing ~ 000058b8: missing ~ 000058bc: missing ~ 000058c0: missing ~ 000058c4: missing ~ 000058c8: missing ~ 000058cc: missing ~ 000058d0: missing ~ 000058d4: missing ~ 000058d8: missing ~ 000058dc: missing ~ 000058e0: missing ~ 000058e4: missing ~ 000058e8: missing ~ 000058ec: missing ~ 000058f0: missing ~ 000058f4: missing ~ 000058f8: missing ~ 000058fc: missing ~ 00005900: missing ~ 00005904: missing ~ 00005908: missing ~ 0000590c: missing ~ 00005910: missing ~ 00005914: missing ~ 00005918: missing ~ 0000591c: missing ~ 00005920: missing ~ 00005924: missing ~ 00005928: missing ~ 0000592c: missing ~ 00005930: missing ~ 00005934: missing ~ 00005938: missing ~ 0000593c: missing ~ 00005940: missing ~ 00005944: missing ~ 00005948: missing ~ 0000594c: missing ~ 00005950: missing ~ 00005954: missing ~ 00005958: missing ~ 0000595c: missing ~ 00005960: missing ~ 00005964: missing ~ 00005968: missing ~ 0000596c: missing ~ 00005970: missing ~ 00005974: missing ~ 00005978: missing ~ 0000597c: missing ~ 00005980: missing ~ 00005984: missing ~ 00005988: missing ~ 0000598c: missing ~ 00005990: missing ~ 00005994: missing ~ 00005998: missing ~ 0000599c: missing ~ 000059a0: missing ~ 000059a4: missing ~ 000059a8: missing ~ 000059ac: missing ~ 000059b0: missing ~ 000059b4: missing ~ 000059b8: missing ~ 000059bc: missing ~ 000059c0: missing ~ 000059c4: missing ~ 000059c8: missing ~ 000059cc: missing ~ 000059d0: missing ~ 000059d4: missing ~ 000059d8: missing ~ 000059dc: missing ~ 000059e0: missing ~ 000059e4: missing ~ 000059e8: missing ~ 000059ec: missing ~ 000059f0: missing ~ 000059f4: missing ~ 000059f8: missing ~ 000059fc: missing ~ 00005a00: missing ~ 00005a04: missing ~ 00005a08: missing ~ 00005a0c: missing ~ 00005a10: missing ~ 00005a14: missing ~ 00005a18: missing ~ 00005a1c: missing ~ 00005a20: missing ~ 00005a24: missing ~ 00005a28: missing ~ 00005a2c: missing ~ 00005a30: missing ~ 00005a34: missing ~ 00005a38: missing ~ 00005a3c: missing ~ 00005a40: missing ~ 00005a44: missing ~ 00005a48: missing ~ 00005a4c: missing ~ 00005a50: missing ~ 00005a54: missing ~ 00005a58: missing ~ 00005a5c: missing ~ 00005a60: missing ~ 00005a64: missing ~ 00005a68: missing ~ 00005a6c: missing ~ 00005a70: missing ~ 00005a74: missing ~ 00005a78: missing ~ 00005a7c: missing ~ 00005a80: missing ~ 00005a84: missing ~ 00005a88: missing ~ 00005a8c: missing ~ 00005a90: missing ~ 00005a94: missing ~ 00005a98: missing ~ 00005a9c: missing ~ 00005aa0: missing ~ 00005aa4: missing ~ 00005aa8: missing ~ 00005aac: missing ~ 00005ab0: missing ~ 00005ab4: missing ~ 00005ab8: missing ~ 00005abc: missing ~ 00005ac0: missing ~ 00005ac4: missing ~ 00005ac8: missing ~ 00005acc: missing ~ 00005ad0: missing ~ 00005ad4: missing ~ 00005ad8: missing ~ 00005adc: missing ~ 00005ae0: missing ~ 00005ae4: missing ~ 00005ae8: missing ~ 00005aec: missing ~ 00005af0: missing ~ 00005af4: missing ~ 00005af8: missing ~ 00005afc: missing ~ 00005b00: missing ~ 00005b04: missing ~ 00005b08: missing ~ 00005b0c: missing ~ 00005b10: missing ~ 00005b14: missing ~ 00005b18: missing ~ 00005b1c: missing ~ 00005b20: missing ~ 00005b24: missing ~ 00005b28: missing ~ 00005b2c: missing ~ 00005b30: missing ~ 00005b34: missing ~ 00005b38: missing ~ 00005b3c: missing ~ 00005b40: missing ~ 00005b44: missing ~ 00005b48: missing ~ 00005b4c: missing ~ 00005b50: missing ~ 00005b54: missing ~ 00005b58: missing ~ 00005b5c: missing ~ 00005b60: missing ~ 00005b64: missing ~ 00005b68: missing ~ 00005b6c: missing ~ 00005b70: missing ~ 00005b74: missing ~ 00005b78: missing ~ 00005b7c: missing ~ 00005b80: missing ~ 00005b84: missing ~ 00005b88: missing ~ 00005b8c: missing ~ 00005b90: missing ~ 00005b94: missing ~ 00005b98: missing ~ 00005b9c: missing ~ 00005ba0: missing ~ 00005ba4: missing ~ 00005ba8: missing ~ 00005bac: missing ~ 00005bb0: missing ~ 00005bb4: missing ~ 00005bb8: missing ~ 00005bbc: missing ~ 00005bc0: missing ~ 00005bc4: missing ~ 00005bc8: missing ~ 00005bcc: missing ~ 00005bd0: missing ~ 00005bd4: missing ~ 00005bd8: missing ~ 00005bdc: missing ~ 00005be0: missing ~ 00005be4: missing ~ 00005be8: missing ~ 00005bec: missing ~ 00005bf0: missing ~ 00005bf4: missing ~ 00005bf8: missing ~ 00005bfc: missing ~ 00005c00: missing ~ 00005c04: missing ~ 00005c08: missing ~ 00005c0c: missing ~ 00005c10: missing ~ 00005c14: missing ~ 00005c18: missing ~ 00005c1c: missing ~ 00005c20: missing ~ 00005c24: missing ~ 00005c28: missing ~ 00005c2c: missing ~ 00005c30: missing ~ 00005c34: missing ~ 00005c38: missing ~ 00005c3c: missing ~ 00005c40: missing ~ 00005c44: missing ~ 00005c48: missing ~ 00005c4c: missing ~ 00005c50: missing ~ 00005c54: missing ~ 00005c58: missing ~ 00005c5c: missing ~ 00005c60: missing ~ 00005c64: missing ~ 00005c68: missing ~ 00005c6c: missing ~ 00005c70: missing ~ 00005c74: missing ~ 00005c78: missing ~ 00005c7c: missing ~ 00005c80: missing ~ 00005c84: missing ~ 00005c88: missing ~ 00005c8c: missing ~ 00005c90: missing ~ 00005c94: missing ~ 00005c98: missing ~ 00005c9c: missing ~ 00005ca0: missing ~ 00005ca4: missing ~ 00005ca8: missing ~ 00005cac: missing ~ 00005cb0: missing ~ 00005cb4: missing ~ 00005cb8: missing ~ 00005cbc: missing ~ 00005cc0: missing ~ 00005cc4: missing ~ 00005cc8: missing ~ 00005ccc: missing ~ 00005cd0: missing ~ 00005cd4: missing ~ 00005cd8: missing ~ 00005cdc: missing ~ 00005ce0: missing ~ 00005ce4: missing ~ 00005ce8: missing ~ 00005cec: missing ~ 00005cf0: missing ~ 00005cf4: missing ~ 00005cf8: missing ~ 00005cfc: missing ~ 00005d00: missing ~ 00005d04: missing ~ 00005d08: missing ~ 00005d0c: missing ~ 00005d10: missing ~ 00005d14: missing ~ 00005d18: missing ~ 00005d1c: missing ~ 00005d20: missing ~ 00005d24: missing ~ 00005d28: missing ~ 00005d2c: missing ~ 00005d30: missing ~ 00005d34: missing ~ 00005d38: missing ~ 00005d3c: missing ~ 00005d40: missing ~ 00005d44: missing ~ 00005d48: missing ~ 00005d4c: missing ~ 00005d50: missing ~ 00005d54: missing ~ 00005d58: missing ~ 00005d5c: missing ~ 00005d60: missing ~ 00005d64: missing ~ 00005d68: missing ~ 00005d6c: missing ~ 00005d70: missing ~ 00005d74: missing ~ 00005d78: missing ~ 00005d7c: missing ~ 00005d80: missing ~ 00005d84: missing ~ 00005d88: missing ~ 00005d8c: missing ~ 00005d90: missing ~ 00005d94: missing ~ 00005d98: missing ~ 00005d9c: missing ~ 00005da0: missing ~ 00005da4: missing ~ 00005da8: missing ~ 00005dac: missing ~ 00005db0: missing ~ 00005db4: missing ~ 00005db8: missing ~ 00005dbc: missing ~ 00005dc0: missing ~ 00005dc4: missing ~ 00005dc8: missing ~ 00005dcc: missing ~ 00005dd0: missing ~ 00005dd4: missing ~ 00005dd8: missing ~ 00005ddc: missing ~ 00005de0: missing ~ 00005de4: missing ~ 00005de8: missing ~ 00005dec: missing ~ 00005df0: missing ~ 00005df4: missing ~ 00005df8: missing ~ 00005dfc: missing ~ 00005e00: missing ~ 00005e04: missing ~ 00005e08: missing ~ 00005e0c: missing ~ 00005e10: missing ~ 00005e14: missing ~ 00005e18: missing ~ 00005e1c: missing ~ 00005e20: missing ~ 00005e24: missing ~ 00005e28: missing ~ 00005e2c: missing ~ 00005e30: missing ~ 00005e34: missing ~ 00005e38: missing ~ 00005e3c: missing ~ 00005e40: missing ~ 00005e44: missing ~ 00005e48: missing ~ 00005e4c: missing ~ 00005e50: missing ~ 00005e54: missing ~ 00005e58: missing ~ 00005e5c: missing ~ 00005e60: missing ~ 00005e64: missing ~ 00005e68: missing ~ 00005e6c: missing ~ 00005e70: missing ~ 00005e74: missing ~ 00005e78: missing ~ 00005e7c: missing ~ 00005e80: missing ~ 00005e84: missing ~ 00005e88: missing ~ 00005e8c: missing ~ 00005e90: missing ~ 00005e94: missing ~ 00005e98: missing ~ 00005e9c: missing ~ 00005ea0: missing ~ 00005ea4: missing ~ 00005ea8: missing ~ 00005eac: missing ~ 00005eb0: missing ~ 00005eb4: missing ~ 00005eb8: missing ~ 00005ebc: missing ~ 00005ec0: missing ~ 00005ec4: missing ~ 00005ec8: missing ~ 00005ecc: missing ~ 00005ed0: missing ~ 00005ed4: missing ~ 00005ed8: missing ~ 00005edc: missing ~ 00005ee0: missing ~ 00005ee4: missing ~ 00005ee8: missing ~ 00005eec: missing ~ 00005ef0: missing ~ 00005ef4: missing ~ 00005ef8: missing ~ 00005efc: missing ~ 00005f00: missing ~ 00005f04: missing ~ 00005f08: missing ~ 00005f0c: missing ~ 00005f10: missing ~ 00005f14: missing ~ 00005f18: missing ~ 00005f1c: missing ~ 00005f20: missing ~ 00005f24: missing ~ 00005f28: missing ~ 00005f2c: missing ~ 00005f30: missing ~ 00005f34: missing ~ 00005f38: missing ~ 00005f3c: missing ~ 00005f40: missing ~ 00005f44: missing ~ 00005f48: missing ~ 00005f4c: missing ~ 00005f50: missing ~ 00005f54: missing ~ 00005f58: missing ~ 00005f5c: missing ~ 00005f60: missing ~ 00005f64: missing ~ 00005f68: missing ~ 00005f6c: missing ~ 00005f70: missing ~ 00005f74: missing ~ 00005f78: missing ~ 00005f7c: missing ~ 00005f80: missing ~ 00005f84: missing ~ 00005f88: missing ~ 00005f8c: missing ~ 00005f90: missing ~ 00005f94: missing ~ 00005f98: missing ~ 00005f9c: missing ~ 00005fa0: missing ~ 00005fa4: missing ~ 00005fa8: missing ~ 00005fac: missing ~ 00005fb0: missing ~ 00005fb4: missing ~ 00005fb8: missing ~ 00005fbc: missing ~ 00005fc0: missing ~ 00005fc4: missing ~ 00005fc8: missing ~ 00005fcc: missing ~ 00005fd0: missing ~ 00005fd4: missing ~ 00005fd8: missing ~ 00005fdc: missing ~ 00005fe0: missing ~ 00005fe4: missing ~ 00005fe8: missing ~ 00005fec: missing ~ 00005ff0: missing ~ 00005ff4: missing ~ 00005ff8: missing 000057d0 CFA:r31+16 ~ 00005ffc: missing