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 00008f08 000099a8 arch/arm64/kvm/hyp/nvhe/page_alloc.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 **00008f08 <hyp_put_page>: 00008f08 <$x>: + hyp_put_page params: +addr param pointer(no type) 0x8f08 0x8fac (DW_OP_fbreg -0x8) hyp_put_page:66.0 (page_alloc.c) Sbepe ║{ +addr param pointer(no type) 0x8f08 0x8fac (DW_OP_fbreg -0x8) hyp_put_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:65 +p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x8f08 0x8fac (DW_OP_breg31 0x10) hyp_put_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:67 +pool var pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x8f08 0x8fac (DW_OP_breg31 0x8) hyp_put_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:68 ~ 00008f08: d100c3ff sub sp, sp, #0x30 ~ 00008f0c: a9027bfd stp x29, x30, [sp, #32] 00008f08 CFA:r31 r29:u r30:u ~ 00008f10: 910083fd add x29, sp, #0x20 ~ 00008f14: f81f83a0 stur x0, [x29, #-8] hyp_put_page:67.23 (page_alloc.c) SbePe struct hyp_page *p = ║hyp_virt_to_page(addr); ~ 00008f18: d0000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00008f1c: f944c508 ldr x8, [x8, #2440] ~ 00008f20: f85f83a9 ldur x9, [x29, #-8] ~ 00008f24: d000008a adrp x10, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00008f28: f9439d4a ldr x10, [x10, #1848] ~ 00008f2c: 8b0a0129 add x9, x9, x10 ~ 00008f30: d347fd29 lsr x9, x9, #7 ~ 00008f34: 927bcd29 and x9, x9, #0x1ffffffffffffe0 ~ 00008f38: 8b090108 add x8, x8, x9 hyp_put_page:67.19 (page_alloc.c) sbepe struct hyp_page *║p = hyp_virt_to_page(addr); ~ 00008f3c: f9000be8 str x8, [sp, #16] hyp_put_page:68.26 (page_alloc.c) Sbepe struct hyp_pool *pool = ║hyp_page_to_pool(p); ~ 00008f40: f9400be8 ldr x8, [sp, #16] ~ 00008f44: f9400508 ldr x8, [x8, #8] hyp_put_page:68.19 (page_alloc.c) sbepe struct hyp_pool *║pool = hyp_page_to_pool(p); ~ 00008f48: f90007e8 str x8, [sp, #8] hyp_put_page:70.17 (page_alloc.c) Sbepe hyp_spin_lock(&║pool->lock); ~ 00008f4c: f94007e0 ldr x0, [sp, #8] hyp_put_page:70.2 (page_alloc.c) sbepe ║hyp_spin_lock(&pool->lock); ~ 00008f50: 94000017 bl 8fac <hyp_spin_lock> hyp_put_page:71.7 (page_alloc.c) Sbepe if (!║p->refcount) ~ 00008f54: f9400be8 ldr x8, [sp, #16] <- 00008f50(bl-succ)<return> hyp_put_page:71.10 (page_alloc.c) sbepe if (!p->║refcount) ~ 00008f58: b940010b ldr w11, [x8] hyp_put_page:71.6 (page_alloc.c) sbepe if (║!p->refcount) ~ ┌──00008f5c: 3500006b cbnz w11, 8f68 <hyp_put_page+0x60> ~ │┌─00008f60: 14000001 b 8f64 <hyp_put_page+0x5c> <- 00008f5c(b.cc-succ)<fallthrough> ││ ││ hyp_put_page:72.3 (page_alloc.c) Sbepe ║hyp_panic(); ~ │└>00008f64: 97ffe9d5 bl 36b8 <hyp_panic> <- 00008f60(b)<hyp_put_page+0x5c> hyp_put_page:73.2 (page_alloc.c) Sbepe ║p->refcount--; ~ └─>00008f68: f9400be8 ldr x8, [sp, #16] <- 00008f5c(b.cc)<hyp_put_page+0x60>,00008f64(bl-succ)<return> hyp_put_page:73.13 (page_alloc.c) sbepe p->refcount║--; ~ 00008f6c: b9400109 ldr w9, [x8] ~ 00008f70: 71000529 subs w9, w9, #0x1 ~ 00008f74: b9000109 str w9, [x8] hyp_put_page:74.7 (page_alloc.c) Sbepe if (!║p->refcount) ~ 00008f78: f9400be8 ldr x8, [sp, #16] hyp_put_page:74.10 (page_alloc.c) sbepe if (!p->║refcount) ~ 00008f7c: b9400109 ldr w9, [x8] hyp_put_page:74.6 (page_alloc.c) sbepe if (║!p->refcount) ~ ┌───00008f80: 350000c9 cbnz w9, 8f98 <hyp_put_page+0x90> ~ │ ┌─00008f84: 14000001 b 8f88 <hyp_put_page+0x80> <- 00008f80(b.cc-succ)<fallthrough> │ │ │ │ hyp_put_page:75.21 (page_alloc.c) Sbepe __hyp_attach_page(║pool, p); ~ │ └>00008f88: f94007e0 ldr x0, [sp, #8] <- 00008f84(b)<hyp_put_page+0x80> hyp_put_page:75.27 (page_alloc.c) sbepe __hyp_attach_page(pool, ║p); ~ 00008f8c: f9400be1 ldr x1, [sp, #16] hyp_put_page:75.3 (page_alloc.c) sbepe ║__hyp_attach_page(pool, p); ~ 00008f90: 9400001b bl 8ffc <__hyp_attach_page> ~ │ ┌─00008f94: 14000001 b 8f98 <hyp_put_page+0x90> <- 00008f90(bl-succ)<return> │ │ │ │ hyp_put_page:76.19 (page_alloc.c) Sbepe hyp_spin_unlock(&║pool->lock); ~ └>└>00008f98: f94007e0 ldr x0, [sp, #8] <- 00008f80(b.cc)<hyp_put_page+0x90>,00008f94(b)<hyp_put_page+0x90> hyp_put_page:76.2 (page_alloc.c) sbepe ║hyp_spin_unlock(&pool->lock); ~ 00008f9c: 94000062 bl 9124 <hyp_spin_unlock> hyp_put_page:77.1 (page_alloc.c) Sbepe ║} ~ 00008fa0: a9427bfd ldp x29, x30, [sp, #32] <- 00008f9c(bl-succ)<return> ~ 00008fa4: 9100c3ff add sp, sp, #0x30 00008f14 CFA:r29+16 r29:c-16 r30:c-8 ~ 00008fa8: d65f03c0 ret -addr param pointer(no type) 0x8f08 0x8fac (DW_OP_fbreg -0x8) hyp_put_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:65 -p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x8f08 0x8fac (DW_OP_breg31 0x10) hyp_put_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:67 -pool var pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x8f08 0x8fac (DW_OP_breg31 0x8) hyp_put_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:68 **00008fac <hyp_spin_lock>: + hyp_spin_lock params: +lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>)) 0x8fac 0x8ffc (DW_OP_fbreg 0x18) hyp_spin_lock:36.0 (spinlock.h) Sbepe ║{ 00008fac CFA:r31 +lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>)) 0x8fac 0x8ffc (DW_OP_fbreg 0x18) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:35 +tmp var typedef(u32=typedef(__u32=unsigned int (base type, DW_ATE_unsigned size:4))) 0x8fac 0x8ffc (DW_OP_fbreg 0x14) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:37 +lockval var typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>) 0x8fac 0x8ffc (DW_OP_fbreg 0x10) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:38 +newval var typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>) 0x8fac 0x8ffc (DW_OP_fbreg 0x8) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:38 ~ 00008fac: d10083ff sub sp, sp, #0x20 <- 00008f50(bl)<hyp_spin_lock>,00009190(bl)<hyp_spin_lock>,000091d4(bl)<hyp_spin_lock> ~ 00008fb0: f9000fe0 str x0, [sp, #24] hyp_spin_lock:68.57 (spinlock.h) SbePe : "=&r" (lockval), "=&r" (newval), "=&r" (tmp), "+Q" (*║lock) ~ 00008fb4: f9400fe8 ldr x8, [sp, #24] hyp_spin_lock:40.2 (spinlock.h) Sbepe ║asm volatile( ~ 00008fb8: f9800111 prfm pstl1strm, [x8] ~ ╔>00008fbc: 885ffd09 ldaxr w9, [x8] <- v00008fc8(b.cc)<hyp_spin_lock+0x10> ~ 00008fc0: 1140412a add w10, w9, #0x10, lsl #12 ~ 00008fc4: 880b7d0a stxr w11, w10, [x8] ~ ╚═00008fc8: 35ffffab cbnz w11, 8fbc <hyp_spin_lock+0x10> ~ 00008fcc: 4ac9412a eor w10, w9, w9, ror #16 <- 00008fc8(b.cc-succ)<fallthrough> ~ ┌──00008fd0: 340000ca cbz w10, 8fe8 <hyp_spin_lock+0x3c> ~ 00008fd4: d50320bf sevl <- 00008fd0(b.cc-succ)<fallthrough> ~ │╔>00008fd8: d503205f wfe <- v00008fe4(b.cc)<hyp_spin_lock+0x2c> ~ │║ 00008fdc: 485ffd0b ldaxrh w11, [x8] ~ │║ 00008fe0: 4a49416a eor w10, w11, w9, lsr #16 ~ │╚═00008fe4: 35ffffaa cbnz w10, 8fd8 <hyp_spin_lock+0x2c> ~ └─>00008fe8: b90013e9 str w9, [sp, #16] <- 00008fd0(b.cc)<hyp_spin_lock+0x3c>,00008fe4(b.cc-succ)<fallthrough> ~ 00008fec: b9000bea str w10, [sp, #8] ~ 00008ff0: b90017eb str w11, [sp, #20] hyp_spin_lock:71.1 (spinlock.h) Sbepe ║} ~ 00008ff4: 910083ff add sp, sp, #0x20 00008fb0 CFA:r31+32 ~ 00008ff8: d65f03c0 ret -lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>)) 0x8fac 0x8ffc (DW_OP_fbreg 0x18) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:35 -tmp var typedef(u32=typedef(__u32=unsigned int (base type, DW_ATE_unsigned size:4))) 0x8fac 0x8ffc (DW_OP_fbreg 0x14) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:37 -lockval var typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>) 0x8fac 0x8ffc (DW_OP_fbreg 0x10) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:38 -newval var typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>) 0x8fac 0x8ffc (DW_OP_fbreg 0x8) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:38 **00008ffc <__hyp_attach_page>: + __hyp_attach_page params: +pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x8ffc 0x9124 (DW_OP_fbreg -0x8) +p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x8ffc 0x9124 (DW_OP_fbreg -0x10) __hyp_attach_page:44.0 (page_alloc.c) Sbepe ║{ +pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x8ffc 0x9124 (DW_OP_fbreg -0x8) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:42 +p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x8ffc 0x9124 (DW_OP_fbreg -0x10) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:43 +order var unsigned int (base type, DW_ATE_unsigned size:4) 0x8ffc 0x9124 (DW_OP_fbreg -0x14) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:45 +buddy var pointer(struct hyp_page<6b8fc>/<6b979>) 0x8ffc 0x9124 (DW_OP_breg31 0x10) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:46 ~ 00008ffc: d10103ff sub sp, sp, #0x40 <- 00008f90(bl)<__hyp_attach_page>,00009504(bl)<__hyp_attach_page> ~ 00009000: a9037bfd stp x29, x30, [sp, #48] 00008ffc CFA:r31 r29:u r30:u ~ 00009004: 9100c3fd add x29, sp, #0x30 ~ 00009008: f81f83a0 stur x0, [x29, #-8] ~ 0000900c: f81f03a1 stur x1, [x29, #-16] __hyp_attach_page:45.23 (page_alloc.c) SbePe unsigned int order = ║p->order; ~ 00009010: f85f03a8 ldur x8, [x29, #-16] __hyp_attach_page:45.26 (page_alloc.c) sbepe unsigned int order = p->║order; ~ 00009014: b9400509 ldr w9, [x8, #4] __hyp_attach_page:45.15 (page_alloc.c) sbepe unsigned int ║order = p->order; ~ 00009018: b81ec3a9 stur w9, [x29, #-20] __hyp_attach_page:48.2 (page_alloc.c) Sbepe ║p->order = HYP_NO_ORDER; ~ 0000901c: f85f03a8 ldur x8, [x29, #-16] ~ 00009020: 12800009 mov w9, #0xffffffff // #-1 __hyp_attach_page:48.11 (page_alloc.c) sbepe p->order ║= HYP_NO_ORDER; ~ 00009024: b9000509 str w9, [x8, #4] __hyp_attach_page:49.2 (page_alloc.c) Sbepe ║for (; order < HYP_MAX_ORDER; order++) { ~ ┌─00009028: 14000001 b 902c <__hyp_attach_page+0x30> __hyp_attach_page:49.9 (page_alloc.c) sbepe for (; ║order < HYP_MAX_ORDER; order++) { ~ ╔════>└>0000902c: b85ec3a8 ldur w8, [x29, #-20] <- 00009028(b)<__hyp_attach_page+0x30>,v000090e8(b)<__hyp_attach_page+0x30> __hyp_attach_page:49.2 (page_alloc.c) sbepe ║for (; order < HYP_MAX_ORDER; order++) { ~ 00009030: 71002908 subs w8, w8, #0xa ~ ┌──╫───────00009034: 540005c8 b.hi 90ec <__hyp_attach_page+0xf0> // b.pmore │ ║ ~ │ ║ ┌─00009038: 14000001 b 903c <__hyp_attach_page+0x40> <- 00009034(b.cc-succ)<fallthrough> │ ║ │ │ ║ │ __hyp_attach_page:51.24 (page_alloc.c) Sbepe buddy = __find_buddy(║pool, p, order); ~ │ ║ └>0000903c: f85f83a0 ldur x0, [x29, #-8] <- 00009038(b)<__hyp_attach_page+0x40> │ ║ __hyp_attach_page:51.30 (page_alloc.c) sbepe buddy = __find_buddy(pool, ║p, order); ~ │ ║ 00009040: f85f03a1 ldur x1, [x29, #-16] │ ║ __hyp_attach_page:51.33 (page_alloc.c) sbepe buddy = __find_buddy(pool, p, ║order); ~ │ ║ 00009044: b85ec3a2 ldur w2, [x29, #-20] │ ║ __hyp_attach_page:51.11 (page_alloc.c) sbepe buddy = ║__find_buddy(pool, p, order); ~ │ ║ 00009048: 9400014d bl 957c <__find_buddy> │ ║ │ ║ __hyp_attach_page:51.9 (page_alloc.c) sbepe buddy ║= __find_buddy(pool, p, order); ~ │ ║ 0000904c: f9000be0 str x0, [sp, #16] <- 00009048(bl-succ)<return> │ ║ __hyp_attach_page:52.8 (page_alloc.c) Sbepe if (!║buddy || list_empty(&buddy->node) || buddy->order != order) ~ │ ║ 00009050: f9400be8 ldr x8, [sp, #16] │ ║ __hyp_attach_page:52.14 (page_alloc.c) sbepe if (!buddy ║|| list_empty(&buddy->node) || buddy->order != order) ~ │ ║┌──────00009054: b40001a8 cbz x8, 9088 <__hyp_attach_page+0x8c> │ ║│ ~ │ ║│ ┌─00009058: 14000001 b 905c <__hyp_attach_page+0x60> <- 00009054(b.cc-succ)<fallthrough> │ ║│ │ │ ║│ │ __hyp_attach_page:52.29 (page_alloc.c) sbepe if (!buddy || list_empty(&║buddy->node) || buddy->order != order) ~ │ ║│ └>0000905c: f9400be8 ldr x8, [sp, #16] <- 00009058(b)<__hyp_attach_page+0x60> │ ║│ __hyp_attach_page:52.36 (page_alloc.c) sbepe if (!buddy || list_empty(&buddy->║node) || buddy->order != order) ~ │ ║│ 00009060: 91004100 add x0, x8, #0x10 │ ║│ __hyp_attach_page:52.17 (page_alloc.c) sbepe if (!buddy || ║list_empty(&buddy->node) || buddy->order != order) ~ │ ║│ 00009064: 94000172 bl 962c <list_empty> │ ║│ │ ║│ __hyp_attach_page:52.42 (page_alloc.c) sbepe if (!buddy || list_empty(&buddy->node) ║|| buddy->order != order) ~ │ ║│ ┌────00009068: 35000100 cbnz w0, 9088 <__hyp_attach_page+0x8c> <- 00009064(bl-succ)<return> │ ║│ │ ~ │ ║│ │ ┌─0000906c: 14000001 b 9070 <__hyp_attach_page+0x74> <- 00009068(b.cc-succ)<fallthrough> │ ║│ │ │ │ ║│ │ │ __hyp_attach_page:52.45 (page_alloc.c) sbepe if (!buddy || list_empty(&buddy->node) || ║buddy->order != order) ~ │ ║│ │ └>00009070: f9400be8 ldr x8, [sp, #16] <- 0000906c(b)<__hyp_attach_page+0x74> │ ║│ │ __hyp_attach_page:52.52 (page_alloc.c) sbepe if (!buddy || list_empty(&buddy->node) || buddy->║order != order) ~ │ ║│ │ 00009074: b9400509 ldr w9, [x8, #4] │ ║│ │ __hyp_attach_page:52.61 (page_alloc.c) sbepe if (!buddy || list_empty(&buddy->node) || buddy->order != ║order) ~ │ ║│ │ 00009078: b85ec3aa ldur w10, [x29, #-20] │ ║│ │ __hyp_attach_page:52.7 (page_alloc.c) sbepe if (║!buddy || list_empty(&buddy->node) || buddy->order != order) ~ │ ║│ │ 0000907c: 6b0a0129 subs w9, w9, w10 ~ │ ║│ │ ┌──00009080: 54000060 b.eq 908c <__hyp_attach_page+0x90> // b.none │ ║│ │ │ ~ │ ║│ │ │┌─00009084: 14000001 b 9088 <__hyp_attach_page+0x8c> <- 00009080(b.cc-succ)<fallthrough> │ ║│ │ ││ │ ║│ │ ││ __hyp_attach_page:53.4 (page_alloc.c) Sbepe ║break; ~ │ ┌╫└>└>│└>00009088: 14000019 b 90ec <__hyp_attach_page+0xf0> <- 00009054(b.cc)<__hyp_attach_page+0x8c>,00009068(b.cc)<__hyp_attach_page+0x8c>,00009084(b)<__hyp_attach_page+0x8c> │ │║ │ │ │║ │ __hyp_attach_page:56.18 (page_alloc.c) Sbepe list_del_init(&║buddy->node); ~ │ │║ └─>0000908c: f9400be8 ldr x8, [sp, #16] <- 00009080(b.cc)<__hyp_attach_page+0x90> │ │║ __hyp_attach_page:56.25 (page_alloc.c) sbepe list_del_init(&buddy->║node); ~ │ │║ 00009090: 91004100 add x0, x8, #0x10 │ │║ __hyp_attach_page:56.3 (page_alloc.c) sbepe ║list_del_init(&buddy->node); ~ │ │║ 00009094: 94000173 bl 9660 <list_del_init> │ │║ │ │║ __hyp_attach_page:57.3 (page_alloc.c) Sbepe ║buddy->order = HYP_NO_ORDER; ~ │ │║ 00009098: f9400be8 ldr x8, [sp, #16] <- 00009094(bl-succ)<return> ~ │ │║ 0000909c: 12800009 mov w9, #0xffffffff // #-1 │ │║ __hyp_attach_page:57.16 (page_alloc.c) sbepe buddy->order ║= HYP_NO_ORDER; ~ │ │║ 000090a0: b9000509 str w9, [x8, #4] │ │║ __hyp_attach_page:58.8 (page_alloc.c) Sbepe p = (║p < buddy) ? p : buddy; ~ │ │║ 000090a4: f85f03a8 ldur x8, [x29, #-16] │ │║ __hyp_attach_page:58.12 (page_alloc.c) sbepe p = (p < ║buddy) ? p : buddy; ~ │ │║ 000090a8: f9400bea ldr x10, [sp, #16] │ │║ __hyp_attach_page:58.7 (page_alloc.c) sbepe p = ║(p < buddy) ? p : buddy; ~ │ │║ 000090ac: eb0a0108 subs x8, x8, x10 ~ │ │║ ┌──000090b0: 540000a2 b.cs 90c4 <__hyp_attach_page+0xc8> // b.hs, b.nlast │ │║ │ ~ │ │║ │┌─000090b4: 14000001 b 90b8 <__hyp_attach_page+0xbc> <- 000090b0(b.cc-succ)<fallthrough> │ │║ ││ │ │║ ││ __hyp_attach_page:58.21 (page_alloc.c) sbepe p = (p < buddy) ? ║p : buddy; ~ │ │║ │└>000090b8: f85f03a8 ldur x8, [x29, #-16] <- 000090b4(b)<__hyp_attach_page+0xbc> ~ │ │║ │ 000090bc: f90007e8 str x8, [sp, #8] │ │║ │ __hyp_attach_page:58.7 (page_alloc.c) sbepe p = ║(p < buddy) ? p : buddy; ~ │ │║ ┌┼──000090c0: 14000004 b 90d0 <__hyp_attach_page+0xd4> │ │║ ││ │ │║ ││ __hyp_attach_page:58.25 (page_alloc.c) sbepe p = (p < buddy) ? p : ║buddy; ~ │ │║ │└─>000090c4: f9400be8 ldr x8, [sp, #16] <- 000090b0(b.cc)<__hyp_attach_page+0xc8> ~ │ │║ │ 000090c8: f90007e8 str x8, [sp, #8] │ │║ │ __hyp_attach_page:58.7 (page_alloc.c) sbepe p = ║(p < buddy) ? p : buddy; ~ │ │║ │ ┌─000090cc: 14000001 b 90d0 <__hyp_attach_page+0xd4> │ │║ │ │ ~ │ │║ └>└>000090d0: f94007e8 ldr x8, [sp, #8] <- 000090c0(b)<__hyp_attach_page+0xd4>,000090cc(b)<__hyp_attach_page+0xd4> │ │║ __hyp_attach_page:58.5 (page_alloc.c) sbepe p ║= (p < buddy) ? p : buddy; ~ │ │║ 000090d4: f81f03a8 stur x8, [x29, #-16] │ │║ __hyp_attach_page:59.2 (page_alloc.c) Sbepe } ~ │ │║ ┌─000090d8: 14000001 b 90dc <__hyp_attach_page+0xe0> │ │║ │ │ │║ │ __hyp_attach_page:49.37 (page_alloc.c) Sbepe for (; order < HYP_MAX_ORDER; order║++) { ~ │ │║ └>000090dc: b85ec3a8 ldur w8, [x29, #-20] <- 000090d8(b)<__hyp_attach_page+0xe0> ~ │ │║ 000090e0: 11000508 add w8, w8, #0x1 ~ │ │║ 000090e4: b81ec3a8 stur w8, [x29, #-20] │ │║ __hyp_attach_page:49.2 (page_alloc.c) sbepe ║for (; order < HYP_MAX_ORDER; order++) { ~ │ │╚═══════000090e8: 17ffffd1 b 902c <__hyp_attach_page+0x30> │ │ │ │ __hyp_attach_page:61.13 (page_alloc.c) Sbepe p->order = ║order; ~ └>└───────>000090ec: b85ec3a8 ldur w8, [x29, #-20] <- 00009034(b.cc)<__hyp_attach_page+0xf0>,00009088(b)<__hyp_attach_page+0xf0> __hyp_attach_page:61.2 (page_alloc.c) sbepe ║p->order = order; ~ 000090f0: f85f03a9 ldur x9, [x29, #-16] __hyp_attach_page:61.11 (page_alloc.c) sbepe p->order ║= order; ~ 000090f4: b9000528 str w8, [x9, #4] __hyp_attach_page:62.17 (page_alloc.c) Sbepe list_add_tail(&║p->node, &pool->free_area[order]); ~ 000090f8: f85f03a9 ldur x9, [x29, #-16] __hyp_attach_page:62.20 (page_alloc.c) sbepe list_add_tail(&p->║node, &pool->free_area[order]); ~ 000090fc: 91004120 add x0, x9, #0x10 __hyp_attach_page:62.27 (page_alloc.c) sbepe list_add_tail(&p->node, &║pool->free_area[order]); ~ 00009100: f85f83a9 ldur x9, [x29, #-8] __hyp_attach_page:62.43 (page_alloc.c) sbepe list_add_tail(&p->node, &pool->free_area[║order]); ~ 00009104: b85ec3a8 ldur w8, [x29, #-20] ~ 00009108: 2a0803ea mov w10, w8 __hyp_attach_page:62.33 (page_alloc.c) sbepe list_add_tail(&p->node, &pool->║free_area[order]); ~ 0000910c: 8b0a1129 add x9, x9, x10, lsl #4 __hyp_attach_page:62.27 (page_alloc.c) sbepe list_add_tail(&p->node, &║pool->free_area[order]); ~ 00009110: 91002121 add x1, x9, #0x8 __hyp_attach_page:62.2 (page_alloc.c) sbepe ║list_add_tail(&p->node, &pool->free_area[order]); ~ 00009114: 9400015e bl 968c <list_add_tail> __hyp_attach_page:63.1 (page_alloc.c) Sbepe ║} ~ 00009118: a9437bfd ldp x29, x30, [sp, #48] <- 00009114(bl-succ)<return> ~ 0000911c: 910103ff add sp, sp, #0x40 00009008 CFA:r29+16 r29:c-16 r30:c-8 ~ 00009120: d65f03c0 ret -pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x8ffc 0x9124 (DW_OP_fbreg -0x8) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:42 -p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x8ffc 0x9124 (DW_OP_fbreg -0x10) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:43 -order var unsigned int (base type, DW_ATE_unsigned size:4) 0x8ffc 0x9124 (DW_OP_fbreg -0x14) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:45 -buddy var pointer(struct hyp_page<6b8fc>/<6b979>) 0x8ffc 0x9124 (DW_OP_breg31 0x10) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:46 **00009124 <hyp_spin_unlock>: + hyp_spin_unlock params: +lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>)) 0x9124 0x9148 (DW_OP_fbreg 0x8) hyp_spin_unlock:74.0 (spinlock.h) Sbepe ║{ 00009124 CFA:r31 +lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>)) 0x9124 0x9148 (DW_OP_fbreg 0x8) hyp_spin_unlock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:73 +tmp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x9124 0x9148 (DW_OP_fbreg 0x0) hyp_spin_unlock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:75 ~ 00009124: d10043ff sub sp, sp, #0x10 <- 00008f9c(bl)<hyp_spin_unlock>,000091a8(bl)<hyp_spin_unlock>,000091f0(bl)<hyp_spin_unlock> ~ 00009128: f90007e0 str x0, [sp, #8] hyp_spin_unlock:87.10 (spinlock.h) SbePe : "=Q" (║lock->owner), "=&r" (tmp) ~ 0000912c: f94007e8 ldr x8, [sp, #8] hyp_spin_unlock:77.2 (spinlock.h) Sbepe ║asm volatile( ~ 00009130: 79400109 ldrh w9, [x8] ~ 00009134: 11000529 add w9, w9, #0x1 ~ 00009138: 489ffd09 stlrh w9, [x8] ~ 0000913c: f90003e9 str x9, [sp] hyp_spin_unlock:90.1 (spinlock.h) Sbepe ║} ~ 00009140: 910043ff add sp, sp, #0x10 00009128 CFA:r31+16 ~ 00009144: d65f03c0 ret -lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>)) 0x9124 0x9148 (DW_OP_fbreg 0x8) hyp_spin_unlock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:73 -tmp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x9124 0x9148 (DW_OP_fbreg 0x0) hyp_spin_unlock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:75 **00009148 <hyp_get_page>: + hyp_get_page params: +addr param pointer(no type) 0x9148 0x91b8 (DW_OP_fbreg -0x8) hyp_get_page:80.0 (page_alloc.c) Sbepe ║{ +addr param pointer(no type) 0x9148 0x91b8 (DW_OP_fbreg -0x8) hyp_get_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:79 +p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x9148 0x91b8 (DW_OP_breg31 0x10) hyp_get_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:81 +pool var pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9148 0x91b8 (DW_OP_breg31 0x8) hyp_get_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:82 ~ 00009148: d100c3ff sub sp, sp, #0x30 ~ 0000914c: a9027bfd stp x29, x30, [sp, #32] 00009148 CFA:r31 r29:u r30:u ~ 00009150: 910083fd add x29, sp, #0x20 ~ 00009154: f81f83a0 stur x0, [x29, #-8] hyp_get_page:81.23 (page_alloc.c) SbePe struct hyp_page *p = ║hyp_virt_to_page(addr); ~ 00009158: b0000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0> ~ 0000915c: f944c508 ldr x8, [x8, #2440] ~ 00009160: f85f83a9 ldur x9, [x29, #-8] ~ 00009164: b000008a adrp x10, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00009168: f9439d4a ldr x10, [x10, #1848] ~ 0000916c: 8b0a0129 add x9, x9, x10 ~ 00009170: d347fd29 lsr x9, x9, #7 ~ 00009174: 927bcd29 and x9, x9, #0x1ffffffffffffe0 ~ 00009178: 8b090108 add x8, x8, x9 hyp_get_page:81.19 (page_alloc.c) sbepe struct hyp_page *║p = hyp_virt_to_page(addr); ~ 0000917c: f9000be8 str x8, [sp, #16] hyp_get_page:82.26 (page_alloc.c) Sbepe struct hyp_pool *pool = ║hyp_page_to_pool(p); ~ 00009180: f9400be8 ldr x8, [sp, #16] ~ 00009184: f9400508 ldr x8, [x8, #8] hyp_get_page:82.19 (page_alloc.c) sbepe struct hyp_pool *║pool = hyp_page_to_pool(p); ~ 00009188: f90007e8 str x8, [sp, #8] hyp_get_page:84.17 (page_alloc.c) Sbepe hyp_spin_lock(&║pool->lock); ~ 0000918c: f94007e0 ldr x0, [sp, #8] hyp_get_page:84.2 (page_alloc.c) sbepe ║hyp_spin_lock(&pool->lock); ~ 00009190: 97ffff87 bl 8fac <hyp_spin_lock> hyp_get_page:85.2 (page_alloc.c) Sbepe ║p->refcount++; ~ 00009194: f9400be8 ldr x8, [sp, #16] <- 00009190(bl-succ)<return> hyp_get_page:85.13 (page_alloc.c) sbepe p->refcount║++; ~ 00009198: b940010b ldr w11, [x8] ~ 0000919c: 1100056b add w11, w11, #0x1 ~ 000091a0: b900010b str w11, [x8] hyp_get_page:86.19 (page_alloc.c) Sbepe hyp_spin_unlock(&║pool->lock); ~ 000091a4: f94007e0 ldr x0, [sp, #8] hyp_get_page:86.2 (page_alloc.c) sbepe ║hyp_spin_unlock(&pool->lock); ~ 000091a8: 97ffffdf bl 9124 <hyp_spin_unlock> hyp_get_page:87.1 (page_alloc.c) Sbepe ║} ~ 000091ac: a9427bfd ldp x29, x30, [sp, #32] <- 000091a8(bl-succ)<return> ~ 000091b0: 9100c3ff add sp, sp, #0x30 00009154 CFA:r29+16 r29:c-16 r30:c-8 ~ 000091b4: d65f03c0 ret -addr param pointer(no type) 0x9148 0x91b8 (DW_OP_fbreg -0x8) hyp_get_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:79 -p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x9148 0x91b8 (DW_OP_breg31 0x10) hyp_get_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:81 -pool var pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9148 0x91b8 (DW_OP_breg31 0x8) hyp_get_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:82 **000091b8 <hyp_alloc_pages>: + hyp_alloc_pages params: +pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x91b8 0x9244 (DW_OP_fbreg -0x8) +mask param typedef(gfp_t=unsigned int (base type, DW_ATE_unsigned size:4)) 0x91b8 0x9244 (DW_OP_fbreg -0xc) +order param unsigned int (base type, DW_ATE_unsigned size:4) 0x91b8 0x9244 (DW_OP_breg31 0x10) hyp_alloc_pages:145.0 (page_alloc.c) Sbepe ║{ +pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x91b8 0x9244 (DW_OP_fbreg -0x8) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:144 +mask param typedef(gfp_t=unsigned int (base type, DW_ATE_unsigned size:4)) 0x91b8 0x9244 (DW_OP_fbreg -0xc) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:144 +order param unsigned int (base type, DW_ATE_unsigned size:4) 0x91b8 0x9244 (DW_OP_breg31 0x10) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:144 +p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x91b8 0x9244 (DW_OP_breg31 0x8) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:146 ~ 000091b8: d100c3ff sub sp, sp, #0x30 <- 00009be0(bl)<hyp_alloc_pages>,0000bbec(bl)<hyp_alloc_pages>,0000bc18(bl)<hyp_alloc_pages> ~ 000091bc: a9027bfd stp x29, x30, [sp, #32] 000091b8 CFA:r31 r29:u r30:u ~ 000091c0: 910083fd add x29, sp, #0x20 ~ 000091c4: f81f83a0 stur x0, [x29, #-8] ~ 000091c8: b81f43a1 stur w1, [x29, #-12] ~ 000091cc: b90013e2 str w2, [sp, #16] hyp_alloc_pages:148.17 (page_alloc.c) SbePe hyp_spin_lock(&║pool->lock); ~ 000091d0: f85f83a0 ldur x0, [x29, #-8] hyp_alloc_pages:148.2 (page_alloc.c) sbepe ║hyp_spin_lock(&pool->lock); ~ 000091d4: 97ffff76 bl 8fac <hyp_spin_lock> hyp_alloc_pages:149.24 (page_alloc.c) Sbepe p = __hyp_alloc_pages(║pool, mask, order); ~ 000091d8: f85f83a0 ldur x0, [x29, #-8] <- 000091d4(bl-succ)<return> hyp_alloc_pages:149.30 (page_alloc.c) sbepe p = __hyp_alloc_pages(pool, ║mask, order); ~ 000091dc: b85f43a1 ldur w1, [x29, #-12] hyp_alloc_pages:149.36 (page_alloc.c) sbepe p = __hyp_alloc_pages(pool, mask, ║order); ~ 000091e0: b94013e2 ldr w2, [sp, #16] hyp_alloc_pages:149.6 (page_alloc.c) sbepe p = ║__hyp_alloc_pages(pool, mask, order); ~ 000091e4: 94000018 bl 9244 <__hyp_alloc_pages> hyp_alloc_pages:149.4 (page_alloc.c) sbepe p ║= __hyp_alloc_pages(pool, mask, order); ~ 000091e8: f90007e0 str x0, [sp, #8] <- 000091e4(bl-succ)<return> hyp_alloc_pages:150.19 (page_alloc.c) Sbepe hyp_spin_unlock(&║pool->lock); ~ 000091ec: f85f83a0 ldur x0, [x29, #-8] hyp_alloc_pages:150.2 (page_alloc.c) sbepe ║hyp_spin_unlock(&pool->lock); ~ 000091f0: 97ffffcd bl 9124 <hyp_spin_unlock> hyp_alloc_pages:152.9 (page_alloc.c) Sbepe return ║p ? hyp_page_to_virt(p) : NULL; ~ 000091f4: f94007e8 ldr x8, [sp, #8] <- 000091f0(bl-succ)<return> ~ ┌──000091f8: b4000188 cbz x8, 9228 <hyp_alloc_pages+0x70> ~ │┌─000091fc: 14000001 b 9200 <hyp_alloc_pages+0x48> <- 000091f8(b.cc-succ)<fallthrough> ││ ││ hyp_alloc_pages:152.13 (page_alloc.c) sbepe return p ? ║hyp_page_to_virt(p) : NULL; ~ │└>00009200: f94007e8 ldr x8, [sp, #8] <- 000091fc(b)<hyp_alloc_pages+0x48> ~ 00009204: b0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00009208: f944c529 ldr x9, [x9, #2440] ~ 0000920c: eb090108 subs x8, x8, x9 ~ 00009210: d379e108 lsl x8, x8, #7 ~ 00009214: b0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00009218: f9439d29 ldr x9, [x9, #1848] ~ 0000921c: eb090108 subs x8, x8, x9 ~ 00009220: f90003e8 str x8, [sp] hyp_alloc_pages:152.9 (page_alloc.c) sbepe return ║p ? hyp_page_to_virt(p) : NULL; ~ ┌┼──00009224: 14000004 b 9234 <hyp_alloc_pages+0x7c> ││ ~ │└─>00009228: aa1f03e0 mov x0, xzr <- 000091f8(b.cc)<hyp_alloc_pages+0x70> ~ 0000922c: f90003e0 str x0, [sp] hyp_alloc_pages:152.9 (page_alloc.c) sbepe return ║p ? hyp_page_to_virt(p) : NULL; ~ │ ┌─00009230: 14000001 b 9234 <hyp_alloc_pages+0x7c> │ │ ~ └>└>00009234: f94003e0 ldr x0, [sp] <- 00009224(b)<hyp_alloc_pages+0x7c>,00009230(b)<hyp_alloc_pages+0x7c> hyp_alloc_pages:152.2 (page_alloc.c) sbepe ║return p ? hyp_page_to_virt(p) : NULL; ~ 00009238: a9427bfd ldp x29, x30, [sp, #32] ~ 0000923c: 9100c3ff add sp, sp, #0x30 000091c4 CFA:r29+16 r29:c-16 r30:c-8 ~ 00009240: d65f03c0 ret -pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x91b8 0x9244 (DW_OP_fbreg -0x8) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:144 -mask param typedef(gfp_t=unsigned int (base type, DW_ATE_unsigned size:4)) 0x91b8 0x9244 (DW_OP_fbreg -0xc) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:144 -order param unsigned int (base type, DW_ATE_unsigned size:4) 0x91b8 0x9244 (DW_OP_breg31 0x10) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:144 -p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x91b8 0x9244 (DW_OP_breg31 0x8) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:146 **00009244 <__hyp_alloc_pages>: + __hyp_alloc_pages params: +pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9244 0x935c (DW_OP_fbreg -0x10) +mask param typedef(gfp_t=unsigned int (base type, DW_ATE_unsigned size:4)) 0x9244 0x935c (DW_OP_fbreg -0x14) +order param unsigned int (base type, DW_ATE_unsigned size:4) 0x9244 0x935c (DW_OP_fbreg -0x18) __hyp_alloc_pages:124.0 (page_alloc.c) Sbepe ║{ +pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9244 0x935c (DW_OP_fbreg -0x10) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:122 +mask param typedef(gfp_t=unsigned int (base type, DW_ATE_unsigned size:4)) 0x9244 0x935c (DW_OP_fbreg -0x14) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:122 +order param unsigned int (base type, DW_ATE_unsigned size:4) 0x9244 0x935c (DW_OP_fbreg -0x18) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:123 +i var unsigned int (base type, DW_ATE_unsigned size:4) 0x9244 0x935c (DW_OP_fbreg -0x1c) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:125 +p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x9244 0x935c (DW_OP_breg31 0x18) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:126 ~ 00009244: d10143ff sub sp, sp, #0x50 <- 000091e4(bl)<__hyp_alloc_pages> ~ 00009248: a9047bfd stp x29, x30, [sp, #64] 00009244 CFA:r31 r29:u r30:u ~ 0000924c: 910103fd add x29, sp, #0x40 ~ 00009250: f81f03a0 stur x0, [x29, #-16] ~ 00009254: b81ec3a1 stur w1, [x29, #-20] ~ 00009258: b81e83a2 stur w2, [x29, #-24] __hyp_alloc_pages:125.19 (page_alloc.c) SbePe unsigned int i = ║order; ~ 0000925c: b85e83a8 ldur w8, [x29, #-24] __hyp_alloc_pages:125.15 (page_alloc.c) sbepe unsigned int ║i = order; ~ 00009260: b81e43a8 stur w8, [x29, #-28] __hyp_alloc_pages:129.2 (page_alloc.c) Sbepe ║while (i <= HYP_MAX_ORDER && list_empty(&pool->free_area[i])) ~ ┌─00009264: 14000001 b 9268 <__hyp_alloc_pages+0x24> __hyp_alloc_pages:129.9 (page_alloc.c) sbepe while (║i <= HYP_MAX_ORDER && list_empty(&pool->free_area[i])) ~ ╔═>└>00009268: b85e43a8 ldur w8, [x29, #-28] <- 00009264(b)<__hyp_alloc_pages+0x24>,v000092c0(b)<__hyp_alloc_pages+0x24> ~ 0000926c: 2a1f03e0 mov w0, wzr __hyp_alloc_pages:129.28 (page_alloc.c) sbepe while (i <= HYP_MAX_ORDER ║&& list_empty(&pool->free_area[i])) ~ 00009270: 71002d08 subs w8, w8, #0xb ~ 00009274: b90007e0 str w0, [sp, #4] ~ ║┌───00009278: 54000188 b.hi 92a8 <__hyp_alloc_pages+0x64> // b.pmore ║│ ~ ║│ ┌─0000927c: 14000001 b 9280 <__hyp_alloc_pages+0x3c> <- 00009278(b.cc-succ)<fallthrough> ║│ │ ║│ │ __hyp_alloc_pages:129.43 (page_alloc.c) sbepe while (i <= HYP_MAX_ORDER && list_empty(&║pool->free_area[i])) ~ ║│ └>00009280: f85f03a8 ldur x8, [x29, #-16] <- 0000927c(b)<__hyp_alloc_pages+0x3c> ║│ __hyp_alloc_pages:129.59 (page_alloc.c) sbepe while (i <= HYP_MAX_ORDER && list_empty(&pool->free_area[║i])) ~ ║│ 00009284: b85e43a9 ldur w9, [x29, #-28] ~ ║│ 00009288: 2a0903ea mov w10, w9 ║│ __hyp_alloc_pages:129.49 (page_alloc.c) sbepe while (i <= HYP_MAX_ORDER && list_empty(&pool->║free_area[i])) ~ ║│ 0000928c: 8b0a1108 add x8, x8, x10, lsl #4 ║│ __hyp_alloc_pages:129.43 (page_alloc.c) sbepe while (i <= HYP_MAX_ORDER && list_empty(&║pool->free_area[i])) ~ ║│ 00009290: 91002100 add x0, x8, #0x8 ║│ __hyp_alloc_pages:129.31 (page_alloc.c) sbepe while (i <= HYP_MAX_ORDER && ║list_empty(&pool->free_area[i])) ~ ║│ 00009294: 940000e6 bl 962c <list_empty> ║│ ║│ __hyp_alloc_pages:129.28 (page_alloc.c) sbepe while (i <= HYP_MAX_ORDER ║&& list_empty(&pool->free_area[i])) ~ ║│ 00009298: 71000009 subs w9, w0, #0x0 <- 00009294(bl-succ)<return> ~ ║│ 0000929c: 1a9f07eb cset w11, ne // ne = any ~ ║│ 000092a0: b90007eb str w11, [sp, #4] ~ ║│ ┌─000092a4: 14000001 b 92a8 <__hyp_alloc_pages+0x64> ║│ │ ~ ║└>└>000092a8: b94007e8 ldr w8, [sp, #4] <- 00009278(b.cc)<__hyp_alloc_pages+0x64>,000092a4(b)<__hyp_alloc_pages+0x64> __hyp_alloc_pages:129.2 (page_alloc.c) sbepe ║while (i <= HYP_MAX_ORDER && list_empty(&pool->free_area[i])) ~ ║ ┌──000092ac: 360000c8 tbz w8, #0, 92c4 <__hyp_alloc_pages+0x80> ║ │ ~ ║ │┌─000092b0: 14000001 b 92b4 <__hyp_alloc_pages+0x70> <- 000092ac(b.cc-succ)<fallthrough> ║ ││ ║ ││ __hyp_alloc_pages:130.4 (page_alloc.c) Sbepe i║++; ~ ║ │└>000092b4: b85e43a8 ldur w8, [x29, #-28] <- 000092b0(b)<__hyp_alloc_pages+0x70> ~ ║ │ 000092b8: 11000508 add w8, w8, #0x1 ~ ║ │ 000092bc: b81e43a8 stur w8, [x29, #-28] ║ │ __hyp_alloc_pages:129.2 (page_alloc.c) Sbepe ║while (i <= HYP_MAX_ORDER && list_empty(&pool->free_area[i])) ~ ╚═╪══000092c0: 17ffffea b 9268 <__hyp_alloc_pages+0x24> __hyp_alloc_pages:131.6 (page_alloc.c) Sbepe if (║i > HYP_MAX_ORDER) ~ └─>000092c4: b85e43a8 ldur w8, [x29, #-28] <- 000092ac(b.cc)<__hyp_alloc_pages+0x80> __hyp_alloc_pages:131.6 (page_alloc.c) sbepe if (║i > HYP_MAX_ORDER) ~ 000092c8: 71003108 subs w8, w8, #0xc ~ ┌──000092cc: 540000a3 b.cc 92e0 <__hyp_alloc_pages+0x9c> // b.lo, b.ul, b.last ~ │┌─000092d0: 14000001 b 92d4 <__hyp_alloc_pages+0x90> <- 000092cc(b.cc-succ)<fallthrough> ││ ~ │└>000092d4: aa1f03e8 mov x8, xzr <- 000092d0(b)<__hyp_alloc_pages+0x90> __hyp_alloc_pages:132.3 (page_alloc.c) Sbepe ║return NULL; ~ 000092d8: f81f83a8 stur x8, [x29, #-8] ~ ┌─┼──000092dc: 1400001c b 934c <__hyp_alloc_pages+0x108> │ │ │ │ __hyp_alloc_pages:135.6 (page_alloc.c) Sbepe p = ║list_first_entry(&pool->free_area[i], struct hyp_page, node); +__mptr var pointer(no type) 0x92e0 0x9310 (DW_OP_breg31 0x10) lexblock:__hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:135 ~ │ └─>000092e0: f85f03a8 ldur x8, [x29, #-16] <- 000092cc(b.cc)<__hyp_alloc_pages+0x9c> ~ 000092e4: b85e43a9 ldur w9, [x29, #-28] ~ 000092e8: 2a0903ea mov w10, w9 ~ 000092ec: 8b0a1108 add x8, x8, x10, lsl #4 ~ 000092f0: f9400508 ldr x8, [x8, #8] ~ 000092f4: f9000be8 str x8, [sp, #16] ~ │ ┌─000092f8: 14000001 b 92fc <__hyp_alloc_pages+0xb8> │ │ │ │ __hyp_alloc_pages:135.6 (page_alloc.c) sbepe p = ║list_first_entry(&pool->free_area[i], struct hyp_page, node); ~ │┌─└>000092fc: 14000001 b 9300 <__hyp_alloc_pages+0xbc> <- 000092f8(b)<__hyp_alloc_pages+0xb8> ││ ││ __hyp_alloc_pages:135.6 (page_alloc.c) sbepe p = ║list_first_entry(&pool->free_area[i], struct hyp_page, node); ~ │└──>00009300: f9400be8 ldr x8, [sp, #16] <- 000092fc(b)<__hyp_alloc_pages+0xbc> ~ 00009304: f1004108 subs x8, x8, #0x10 __hyp_alloc_pages:135.6 (page_alloc.c) sbepe p = ║list_first_entry(&pool->free_area[i], struct hyp_page, node); ~ 00009308: f90007e8 str x8, [sp, #8] __hyp_alloc_pages:135.6 (page_alloc.c) sbepe p = ║list_first_entry(&pool->free_area[i], struct hyp_page, node); ~ 0000930c: f94007e8 ldr x8, [sp, #8] -__mptr var pointer(no type) 0x92e0 0x9310 (DW_OP_breg31 0x10) lexblock:__hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:135 __hyp_alloc_pages:135.4 (page_alloc.c) sbepe p ║= list_first_entry(&pool->free_area[i], struct hyp_page, node); ~ 00009310: f9000fe8 str x8, [sp, #24] __hyp_alloc_pages:136.25 (page_alloc.c) Sbepe p = __hyp_extract_page(║pool, p, order); ~ 00009314: f85f03a0 ldur x0, [x29, #-16] __hyp_alloc_pages:136.31 (page_alloc.c) sbepe p = __hyp_extract_page(pool, ║p, order); ~ 00009318: f9400fe1 ldr x1, [sp, #24] __hyp_alloc_pages:136.34 (page_alloc.c) sbepe p = __hyp_extract_page(pool, p, ║order); ~ 0000931c: b85e83a2 ldur w2, [x29, #-24] __hyp_alloc_pages:136.6 (page_alloc.c) sbepe p = ║__hyp_extract_page(pool, p, order); ~ 00009320: 94000138 bl 9800 <__hyp_extract_page> __hyp_alloc_pages:136.4 (page_alloc.c) sbepe p ║= __hyp_extract_page(pool, p, order); ~ 00009324: f9000fe0 str x0, [sp, #24] <- 00009320(bl-succ)<return> __hyp_alloc_pages:138.6 (page_alloc.c) Sbepe if (║mask & HYP_GFP_ZERO) ~ 00009328: 385ec3a9 ldurb w9, [x29, #-20] ~ │┌───0000932c: 360000a9 tbz w9, #0, 9340 <__hyp_alloc_pages+0xfc> ││ ~ ││ ┌─00009330: 14000001 b 9334 <__hyp_alloc_pages+0xf0> <- 0000932c(b.cc-succ)<fallthrough> ││ │ ││ │ __hyp_alloc_pages:139.18 (page_alloc.c) Sbepe clear_hyp_page(║p); ~ ││ └>00009334: f9400fe0 ldr x0, [sp, #24] <- 00009330(b)<__hyp_alloc_pages+0xf0> ││ __hyp_alloc_pages:139.3 (page_alloc.c) sbepe ║clear_hyp_page(p); ~ ││ 00009338: 94000171 bl 98fc <clear_hyp_page> ││ ~ ││ ┌─0000933c: 14000001 b 9340 <__hyp_alloc_pages+0xfc> <- 00009338(bl-succ)<return> ││ │ ││ │ __hyp_alloc_pages:141.9 (page_alloc.c) Sbepe return p; ~ │└>└>00009340: f9400fe8 ldr x8, [sp, #24] <- 0000932c(b.cc)<__hyp_alloc_pages+0xfc>,0000933c(b)<__hyp_alloc_pages+0xfc> __hyp_alloc_pages:141.2 (page_alloc.c) sbepe ║return p; ~ 00009344: f81f83a8 stur x8, [x29, #-8] ~ │ ┌─00009348: 14000001 b 934c <__hyp_alloc_pages+0x108> │ │ │ │ __hyp_alloc_pages:142.1 (page_alloc.c) Sbepe ║} ~ └─>└>0000934c: f85f83a0 ldur x0, [x29, #-8] <- 000092dc(b)<__hyp_alloc_pages+0x108>,00009348(b)<__hyp_alloc_pages+0x108> ~ 00009350: a9447bfd ldp x29, x30, [sp, #64] ~ 00009354: 910143ff add sp, sp, #0x50 00009250 CFA:r29+16 r29:c-16 r30:c-8 ~ 00009358: d65f03c0 ret -pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9244 0x935c (DW_OP_fbreg -0x10) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:122 -mask param typedef(gfp_t=unsigned int (base type, DW_ATE_unsigned size:4)) 0x9244 0x935c (DW_OP_fbreg -0x14) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:122 -order param unsigned int (base type, DW_ATE_unsigned size:4) 0x9244 0x935c (DW_OP_fbreg -0x18) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:123 -i var unsigned int (base type, DW_ATE_unsigned size:4) 0x9244 0x935c (DW_OP_fbreg -0x1c) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:125 -p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x9244 0x935c (DW_OP_breg31 0x18) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:126 **0000935c <hyp_pool_init>: + hyp_pool_init params: +pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x935c 0x9544 (DW_OP_fbreg -0x10) +phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x935c 0x9544 (DW_OP_fbreg -0x18) +nr_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x935c 0x9544 (DW_OP_fbreg -0x1c) +used_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x935c 0x9544 (DW_OP_breg31 0x20) hyp_pool_init:158.0 (page_alloc.c) Sbepe ║{ +pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x935c 0x9544 (DW_OP_fbreg -0x10) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:156 +phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x935c 0x9544 (DW_OP_fbreg -0x18) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:156 +nr_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x935c 0x9544 (DW_OP_fbreg -0x1c) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:157 +used_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x935c 0x9544 (DW_OP_breg31 0x20) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:157 +p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x935c 0x9544 (DW_OP_breg31 0x18) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:159 +i var int (base type, DW_ATE_signed size:4) 0x935c 0x9544 (DW_OP_breg31 0x14) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:160 ~ 0000935c: d10143ff sub sp, sp, #0x50 <- 00009a78(bl)<hyp_pool_init>,0000b420(bl)<hyp_pool_init>,0000b46c(bl)<hyp_pool_init> ~ 00009360: a9047bfd stp x29, x30, [sp, #64] 0000935c CFA:r31 r29:u r30:u ~ 00009364: 910103fd add x29, sp, #0x40 ~ 00009368: f81f03a0 stur x0, [x29, #-16] ~ 0000936c: f81e83a1 stur x1, [x29, #-24] ~ 00009370: b81e43a2 stur w2, [x29, #-28] ~ 00009374: b90023e3 str w3, [sp, #32] hyp_pool_init:162.6 (page_alloc.c) SbePe if (║phys % PAGE_SIZE) ~ 00009378: 785e83a8 ldurh w8, [x29, #-24] ~ 0000937c: 12002d08 and w8, w8, #0xfff ~ ┌───00009380: 340000a8 cbz w8, 9394 <hyp_pool_init+0x38> ~ │ ┌─00009384: 14000001 b 9388 <hyp_pool_init+0x2c> <- 00009380(b.cc-succ)<fallthrough> │ │ ~ │ └>00009388: 128002a8 mov w8, #0xffffffea // #-22 <- 00009384(b)<hyp_pool_init+0x2c> hyp_pool_init:163.3 (page_alloc.c) Sbepe ║return -EINVAL; ~ 0000938c: b81fc3a8 stur w8, [x29, #-4] ~ ┌┼───00009390: 14000069 b 9534 <hyp_pool_init+0x1d8> ││ ││ hyp_pool_init:165.2 (page_alloc.c) Sbepe ║hyp_spin_lock_init(&pool->lock); ~ │└>┌─00009394: 14000001 b 9398 <hyp_pool_init+0x3c> <- 00009380(b.cc)<hyp_pool_init+0x38> │ │ │ │ hyp_pool_init:165.2 (page_alloc.c) sbepe ║hyp_spin_lock_init(&pool->lock); ~ │ └>00009398: f85f03a8 ldur x8, [x29, #-16] <- 00009394(b)<hyp_pool_init+0x3c> ~ 0000939c: 2a1f03e9 mov w9, wzr ~ 000093a0: b90013e9 str w9, [sp, #16] ~ 000093a4: b94013e9 ldr w9, [sp, #16] ~ 000093a8: b9000109 str w9, [x8] ~ │ ┌─000093ac: 14000001 b 93b0 <hyp_pool_init+0x54> │ │ ~ │ └>000093b0: 2a1f03e8 mov w8, wzr <- 000093ac(b)<hyp_pool_init+0x54> hyp_pool_init:166.9 (page_alloc.c) Sbepe for (i ║= 0; i <= HYP_MAX_ORDER; i++) ~ 000093b4: b90017e8 str w8, [sp, #20] hyp_pool_init:166.7 (page_alloc.c) sbepe for (║i = 0; i <= HYP_MAX_ORDER; i++) ~ │ ┌─000093b8: 14000001 b 93bc <hyp_pool_init+0x60> │ │ │ │ hyp_pool_init:166.14 (page_alloc.c) sbepe for (i = 0; ║i <= HYP_MAX_ORDER; i++) ~ │╔>└>000093bc: b94017e8 ldr w8, [sp, #20] <- 000093b8(b)<hyp_pool_init+0x60>,v000093f0(b)<hyp_pool_init+0x60> │║ hyp_pool_init:166.2 (page_alloc.c) sbepe ║for (i = 0; i <= HYP_MAX_ORDER; i++) ~ │║ 000093c0: 71002d08 subs w8, w8, #0xb ~ │║┌──000093c4: 54000188 b.hi 93f4 <hyp_pool_init+0x98> // b.pmore │║│ ~ │║│┌─000093c8: 14000001 b 93cc <hyp_pool_init+0x70> <- 000093c4(b.cc-succ)<fallthrough> │║││ │║││ hyp_pool_init:167.19 (page_alloc.c) Sbepe INIT_LIST_HEAD(&║pool->free_area[i]); ~ │║│└>000093cc: f85f03a8 ldur x8, [x29, #-16] <- 000093c8(b)<hyp_pool_init+0x70> │║│ hyp_pool_init:167.35 (page_alloc.c) sbepe INIT_LIST_HEAD(&pool->free_area[║i]); ~ │║│ 000093d0: b98017e9 ldrsw x9, [sp, #20] │║│ hyp_pool_init:167.25 (page_alloc.c) sbepe INIT_LIST_HEAD(&pool->║free_area[i]); ~ │║│ 000093d4: 8b091108 add x8, x8, x9, lsl #4 │║│ hyp_pool_init:167.19 (page_alloc.c) sbepe INIT_LIST_HEAD(&║pool->free_area[i]); ~ │║│ 000093d8: 91002100 add x0, x8, #0x8 │║│ hyp_pool_init:167.3 (page_alloc.c) sbepe ║INIT_LIST_HEAD(&pool->free_area[i]); ~ │║│ 000093dc: 9400005a bl 9544 <INIT_LIST_HEAD> │║│ ~ │║│┌─000093e0: 14000001 b 93e4 <hyp_pool_init+0x88> <- 000093dc(bl-succ)<return> │║││ │║││ hyp_pool_init:166.35 (page_alloc.c) Sbepe for (i = 0; i <= HYP_MAX_ORDER; i║++) ~ │║│└>000093e4: b94017e8 ldr w8, [sp, #20] <- 000093e0(b)<hyp_pool_init+0x88> ~ │║│ 000093e8: 11000508 add w8, w8, #0x1 ~ │║│ 000093ec: b90017e8 str w8, [sp, #20] │║│ hyp_pool_init:166.2 (page_alloc.c) sbepe ║for (i = 0; i <= HYP_MAX_ORDER; i++) ~ │╚╪══000093f0: 17fffff3 b 93bc <hyp_pool_init+0x60> │ │ │ │ hyp_pool_init:168.22 (page_alloc.c) Sbepe pool->range_start = ║phys; ~ │ └─>000093f4: f85e83a8 ldur x8, [x29, #-24] <- 000093c4(b.cc)<hyp_pool_init+0x98> hyp_pool_init:168.2 (page_alloc.c) sbepe ║pool->range_start = phys; ~ 000093f8: f85f03a9 ldur x9, [x29, #-16] hyp_pool_init:168.20 (page_alloc.c) sbepe pool->range_start ║= phys; ~ 000093fc: f9006528 str x8, [x9, #200] hyp_pool_init:169.20 (page_alloc.c) Sbepe pool->range_end = ║phys + (nr_pages << PAGE_SHIFT); ~ 00009400: f85e83a8 ldur x8, [x29, #-24] hyp_pool_init:169.28 (page_alloc.c) sbepe pool->range_end = phys + (║nr_pages << PAGE_SHIFT); ~ 00009404: b85e43aa ldur w10, [x29, #-28] hyp_pool_init:169.37 (page_alloc.c) sbepe pool->range_end = phys + (nr_pages ║<< PAGE_SHIFT); ~ 00009408: 53144d4a lsl w10, w10, #12 hyp_pool_init:169.27 (page_alloc.c) sbepe pool->range_end = phys + ║(nr_pages << PAGE_SHIFT); ~ 0000940c: 2a0a03e9 mov w9, w10 hyp_pool_init:169.25 (page_alloc.c) sbepe pool->range_end = phys ║+ (nr_pages << PAGE_SHIFT); ~ 00009410: 8b090108 add x8, x8, x9 hyp_pool_init:169.2 (page_alloc.c) sbepe ║pool->range_end = phys + (nr_pages << PAGE_SHIFT); ~ 00009414: f85f03a9 ldur x9, [x29, #-16] hyp_pool_init:169.18 (page_alloc.c) sbepe pool->range_end ║= phys + (nr_pages << PAGE_SHIFT); ~ 00009418: f9006928 str x8, [x9, #208] hyp_pool_init:172.6 (page_alloc.c) Sbepe p = ║hyp_phys_to_page(phys); ~ 0000941c: b0000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00009420: f944c508 ldr x8, [x8, #2440] ~ 00009424: f85e83a9 ldur x9, [x29, #-24] ~ 00009428: d347fd29 lsr x9, x9, #7 ~ 0000942c: 927bcd29 and x9, x9, #0x1ffffffffffffe0 ~ 00009430: 8b090108 add x8, x8, x9 hyp_pool_init:172.4 (page_alloc.c) sbepe p ║= hyp_phys_to_page(phys); ~ 00009434: f9000fe8 str x8, [sp, #24] hyp_pool_init:173.9 (page_alloc.c) Sbepe memset(║p, 0, sizeof(*p) * nr_pages); ~ 00009438: f9400fe0 ldr x0, [sp, #24] hyp_pool_init:173.28 (page_alloc.c) sbepe memset(p, 0, sizeof(*p) * ║nr_pages); ~ 0000943c: b85e43aa ldur w10, [x29, #-28] ~ 00009440: 2a0a03e8 mov w8, w10 hyp_pool_init:173.26 (page_alloc.c) sbepe memset(p, 0, sizeof(*p) ║* nr_pages); ~ 00009444: d37be902 lsl x2, x8, #5 ~ 00009448: 2a1f03ea mov w10, wzr hyp_pool_init:173.2 (page_alloc.c) sbepe ║memset(p, 0, sizeof(*p) * nr_pages); ~ 0000944c: 2a0a03e1 mov w1, w10 ~ 00009450: b9000fea str w10, [sp, #12] ~ 00009454: 9400336b bl 16200 <__memset> ~ 00009458: b9400fea ldr w10, [sp, #12] <- 00009454(bl-succ)<return> hyp_pool_init:174.9 (page_alloc.c) Sbepe for (i ║= 0; i < nr_pages; i++, p++) { ~ 0000945c: b90017ea str w10, [sp, #20] hyp_pool_init:174.7 (page_alloc.c) sbepe for (║i = 0; i < nr_pages; i++, p++) { ~ │ ┌─00009460: 14000001 b 9464 <hyp_pool_init+0x108> │ │ │ │ hyp_pool_init:174.14 (page_alloc.c) sbepe for (i = 0; ║i < nr_pages; i++, p++) { ~ │╔>└>00009464: b94017e8 ldr w8, [sp, #20] <- 00009460(b)<hyp_pool_init+0x108>,v000094ac(b)<hyp_pool_init+0x108> │║ hyp_pool_init:174.18 (page_alloc.c) sbepe for (i = 0; i < ║nr_pages; i++, p++) { ~ │║ 00009468: b85e43a9 ldur w9, [x29, #-28] │║ hyp_pool_init:174.2 (page_alloc.c) sbepe ║for (i = 0; i < nr_pages; i++, p++) { ~ │║ 0000946c: 6b090108 subs w8, w8, w9 ~ │║┌──00009470: 54000202 b.cs 94b0 <hyp_pool_init+0x154> // b.hs, b.nlast │║│ ~ │║│┌─00009474: 14000001 b 9478 <hyp_pool_init+0x11c> <- 00009470(b.cc-succ)<fallthrough> │║││ │║││ hyp_pool_init:175.13 (page_alloc.c) Sbepe p->pool = ║pool; ~ │║│└>00009478: f85f03a8 ldur x8, [x29, #-16] <- 00009474(b)<hyp_pool_init+0x11c> │║│ hyp_pool_init:175.3 (page_alloc.c) sbepe ║p->pool = pool; ~ │║│ 0000947c: f9400fe9 ldr x9, [sp, #24] │║│ hyp_pool_init:175.11 (page_alloc.c) sbepe p->pool ║= pool; ~ │║│ 00009480: f9000528 str x8, [x9, #8] │║│ hyp_pool_init:176.19 (page_alloc.c) Sbepe INIT_LIST_HEAD(&║p->node); ~ │║│ 00009484: f9400fe8 ldr x8, [sp, #24] │║│ hyp_pool_init:176.22 (page_alloc.c) sbepe INIT_LIST_HEAD(&p->║node); ~ │║│ 00009488: 91004100 add x0, x8, #0x10 │║│ hyp_pool_init:176.3 (page_alloc.c) sbepe ║INIT_LIST_HEAD(&p->node); ~ │║│ 0000948c: 9400002e bl 9544 <INIT_LIST_HEAD> │║│ │║│ hyp_pool_init:177.2 (page_alloc.c) Sbepe } ~ │║│┌─00009490: 14000001 b 9494 <hyp_pool_init+0x138> <- 0000948c(bl-succ)<return> │║││ │║││ hyp_pool_init:174.29 (page_alloc.c) Sbepe for (i = 0; i < nr_pages; i║++, p++) { ~ │║│└>00009494: b94017e8 ldr w8, [sp, #20] <- 00009490(b)<hyp_pool_init+0x138> ~ │║│ 00009498: 11000508 add w8, w8, #0x1 ~ │║│ 0000949c: b90017e8 str w8, [sp, #20] │║│ hyp_pool_init:174.34 (page_alloc.c) sbepe for (i = 0; i < nr_pages; i++, p║++) { ~ │║│ 000094a0: f9400fe9 ldr x9, [sp, #24] ~ │║│ 000094a4: 91008129 add x9, x9, #0x20 ~ │║│ 000094a8: f9000fe9 str x9, [sp, #24] │║│ hyp_pool_init:174.2 (page_alloc.c) sbepe ║for (i = 0; i < nr_pages; i++, p++) { ~ │╚╪══000094ac: 17ffffee b 9464 <hyp_pool_init+0x108> │ │ │ │ hyp_pool_init:180.6 (page_alloc.c) Sbepe p = ║hyp_phys_to_page(phys + (used_pages << PAGE_SHIFT)); ~ │ └─>000094b0: b0000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0> <- 00009470(b.cc)<hyp_pool_init+0x154> ~ 000094b4: f944c508 ldr x8, [x8, #2440] ~ 000094b8: f85e83a9 ldur x9, [x29, #-24] ~ 000094bc: b94023ea ldr w10, [sp, #32] ~ 000094c0: 53144d4a lsl w10, w10, #12 ~ 000094c4: 2a0a03eb mov w11, w10 ~ 000094c8: 8b0b0129 add x9, x9, x11 ~ 000094cc: d347fd29 lsr x9, x9, #7 ~ 000094d0: 927bcd29 and x9, x9, #0x1ffffffffffffe0 ~ 000094d4: 8b090108 add x8, x8, x9 hyp_pool_init:180.4 (page_alloc.c) sbepe p ║= hyp_phys_to_page(phys + (used_pages << PAGE_SHIFT)); ~ 000094d8: f9000fe8 str x8, [sp, #24] hyp_pool_init:181.11 (page_alloc.c) Sbepe for (i = ║used_pages; i < nr_pages; i++, p++) ~ 000094dc: b94023ea ldr w10, [sp, #32] hyp_pool_init:181.9 (page_alloc.c) sbepe for (i ║= used_pages; i < nr_pages; i++, p++) ~ 000094e0: b90017ea str w10, [sp, #20] hyp_pool_init:181.7 (page_alloc.c) sbepe for (║i = used_pages; i < nr_pages; i++, p++) ~ │ ┌─000094e4: 14000001 b 94e8 <hyp_pool_init+0x18c> │ │ │ │ hyp_pool_init:181.23 (page_alloc.c) sbepe for (i = used_pages; ║i < nr_pages; i++, p++) ~ │╔>└>000094e8: b94017e8 ldr w8, [sp, #20] <- 000094e4(b)<hyp_pool_init+0x18c>,v00009524(b)<hyp_pool_init+0x18c> │║ hyp_pool_init:181.27 (page_alloc.c) sbepe for (i = used_pages; i < ║nr_pages; i++, p++) ~ │║ 000094ec: b85e43a9 ldur w9, [x29, #-28] │║ hyp_pool_init:181.2 (page_alloc.c) sbepe ║for (i = used_pages; i < nr_pages; i++, p++) ~ │║ 000094f0: 6b090108 subs w8, w8, w9 ~ │║┌──000094f4: 540001a2 b.cs 9528 <hyp_pool_init+0x1cc> // b.hs, b.nlast │║│ ~ │║│┌─000094f8: 14000001 b 94fc <hyp_pool_init+0x1a0> <- 000094f4(b.cc-succ)<fallthrough> │║││ │║││ hyp_pool_init:182.21 (page_alloc.c) Sbepe __hyp_attach_page(║pool, p); ~ │║│└>000094fc: f85f03a0 ldur x0, [x29, #-16] <- 000094f8(b)<hyp_pool_init+0x1a0> │║│ hyp_pool_init:182.27 (page_alloc.c) sbepe __hyp_attach_page(pool, ║p); ~ │║│ 00009500: f9400fe1 ldr x1, [sp, #24] │║│ hyp_pool_init:182.3 (page_alloc.c) sbepe ║__hyp_attach_page(pool, p); ~ │║│ 00009504: 97fffebe bl 8ffc <__hyp_attach_page> │║│ ~ │║│┌─00009508: 14000001 b 950c <hyp_pool_init+0x1b0> <- 00009504(bl-succ)<return> │║││ │║││ hyp_pool_init:181.38 (page_alloc.c) Sbepe for (i = used_pages; i < nr_pages; i║++, p++) ~ │║│└>0000950c: b94017e8 ldr w8, [sp, #20] <- 00009508(b)<hyp_pool_init+0x1b0> ~ │║│ 00009510: 11000508 add w8, w8, #0x1 ~ │║│ 00009514: b90017e8 str w8, [sp, #20] │║│ hyp_pool_init:181.43 (page_alloc.c) sbepe for (i = used_pages; i < nr_pages; i++, p║++) ~ │║│ 00009518: f9400fe9 ldr x9, [sp, #24] ~ │║│ 0000951c: 91008129 add x9, x9, #0x20 ~ │║│ 00009520: f9000fe9 str x9, [sp, #24] │║│ hyp_pool_init:181.2 (page_alloc.c) sbepe ║for (i = used_pages; i < nr_pages; i++, p++) ~ │╚╪══00009524: 17fffff1 b 94e8 <hyp_pool_init+0x18c> │ │ ~ │ └─>00009528: 2a1f03e8 mov w8, wzr <- 000094f4(b.cc)<hyp_pool_init+0x1cc> hyp_pool_init:184.2 (page_alloc.c) Sbepe ║return 0; ~ 0000952c: b81fc3a8 stur w8, [x29, #-4] ~ │ ┌─00009530: 14000001 b 9534 <hyp_pool_init+0x1d8> │ │ │ │ hyp_pool_init:185.1 (page_alloc.c) Sbepe ║} ~ └─>└>00009534: b85fc3a0 ldur w0, [x29, #-4] <- 00009390(b)<hyp_pool_init+0x1d8>,00009530(b)<hyp_pool_init+0x1d8> ~ 00009538: a9447bfd ldp x29, x30, [sp, #64] ~ 0000953c: 910143ff add sp, sp, #0x50 00009368 CFA:r29+16 r29:c-16 r30:c-8 ~ 00009540: d65f03c0 ret -pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x935c 0x9544 (DW_OP_fbreg -0x10) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:156 -phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x935c 0x9544 (DW_OP_fbreg -0x18) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:156 -nr_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x935c 0x9544 (DW_OP_fbreg -0x1c) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:157 -used_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x935c 0x9544 (DW_OP_breg31 0x20) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:157 -p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x935c 0x9544 (DW_OP_breg31 0x18) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:159 -i var int (base type, DW_ATE_signed size:4) 0x935c 0x9544 (DW_OP_breg31 0x14) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:160 **00009544 <INIT_LIST_HEAD>: + INIT_LIST_HEAD params: +list param pointer(struct list_head<6b8fc>/<6ba74>) 0x9544 0x957c (DW_OP_fbreg 0x8) INIT_LIST_HEAD:34.0 (list.h) Sbepe ║{ 00009544 CFA:r31 +list param pointer(struct list_head<6b8fc>/<6ba74>) 0x9544 0x957c (DW_OP_fbreg 0x8) INIT_LIST_HEAD:arch/arm64/kvm/hyp/nvhe/page_alloc.c:33 ~ 00009544: d10043ff sub sp, sp, #0x10 <- 000093dc(bl)<INIT_LIST_HEAD>,0000948c(bl)<INIT_LIST_HEAD>,0000967c(bl)<INIT_LIST_HEAD> ~ 00009548: f90007e0 str x0, [sp, #8] INIT_LIST_HEAD:35.2 (list.h) SbePe ║WRITE_ONCE(list->next, list); ~ ┌─0000954c: 14000001 b 9550 <INIT_LIST_HEAD+0xc> INIT_LIST_HEAD:35.2 (list.h) sbepe ║WRITE_ONCE(list->next, list); ~ ┌─└>00009550: 14000001 b 9554 <INIT_LIST_HEAD+0x10> <- 0000954c(b)<INIT_LIST_HEAD+0xc> INIT_LIST_HEAD:35.2 (list.h) sbepe ║WRITE_ONCE(list->next, list); ~ ┌─└──>00009554: 14000001 b 9558 <INIT_LIST_HEAD+0x14> <- 00009550(b)<INIT_LIST_HEAD+0x10> INIT_LIST_HEAD:35.2 (list.h) sbepe ║WRITE_ONCE(list->next, list); ~ ┌─└────>00009558: 14000001 b 955c <INIT_LIST_HEAD+0x18> <- 00009554(b)<INIT_LIST_HEAD+0x14> INIT_LIST_HEAD:35.2 (list.h) sbepe ║WRITE_ONCE(list->next, list); ~ └──────>0000955c: f94007e8 ldr x8, [sp, #8] <- 00009558(b)<INIT_LIST_HEAD+0x18> ~ 00009560: f9000108 str x8, [x8] ~ ┌─00009564: 14000001 b 9568 <INIT_LIST_HEAD+0x24> INIT_LIST_HEAD:35.2 (list.h) sbepe ║WRITE_ONCE(list->next, list); ~ ┌─└>00009568: 14000001 b 956c <INIT_LIST_HEAD+0x28> <- 00009564(b)<INIT_LIST_HEAD+0x24> INIT_LIST_HEAD:36.15 (list.h) Sbepe list->prev = ║list; ~ └──>0000956c: f94007e8 ldr x8, [sp, #8] <- 00009568(b)<INIT_LIST_HEAD+0x28> INIT_LIST_HEAD:36.13 (list.h) sbepe list->prev ║= list; ~ 00009570: f9000508 str x8, [x8, #8] INIT_LIST_HEAD:37.1 (list.h) Sbepe ║} ~ 00009574: 910043ff add sp, sp, #0x10 00009548 CFA:r31+16 ~ 00009578: d65f03c0 ret -list param pointer(struct list_head<6b8fc>/<6ba74>) 0x9544 0x957c (DW_OP_fbreg 0x8) INIT_LIST_HEAD:arch/arm64/kvm/hyp/nvhe/page_alloc.c:33 **0000957c <__find_buddy>: + __find_buddy params: +pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x957c 0x962c (DW_OP_fbreg 0x20) +p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x957c 0x962c (DW_OP_fbreg 0x18) +order param unsigned int (base type, DW_ATE_unsigned size:4) 0x957c 0x962c (DW_OP_fbreg 0x14) __find_buddy:32.0 (page_alloc.c) Sbepe ║{ 0000957c CFA:r31 +pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x957c 0x962c (DW_OP_fbreg 0x20) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:30 +p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x957c 0x962c (DW_OP_fbreg 0x18) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:30 +order param unsigned int (base type, DW_ATE_unsigned size:4) 0x957c 0x962c (DW_OP_fbreg 0x14) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:31 +addr var typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x957c 0x962c (DW_OP_fbreg 0x8) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:33 ~ 0000957c: d100c3ff sub sp, sp, #0x30 <- 00009048(bl)<__find_buddy>,00009898(bl)<__find_buddy> ~ 00009580: f90013e0 str x0, [sp, #32] ~ 00009584: f9000fe1 str x1, [sp, #24] ~ 00009588: b90017e2 str w2, [sp, #20] __find_buddy:33.21 (page_alloc.c) SbePe phys_addr_t addr = ║hyp_page_to_phys(p); ~ 0000958c: f9400fe8 ldr x8, [sp, #24] ~ 00009590: b0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00009594: f944c529 ldr x9, [x9, #2440] ~ 00009598: eb090108 subs x8, x8, x9 ~ 0000959c: d379e108 lsl x8, x8, #7 __find_buddy:33.14 (page_alloc.c) sbepe phys_addr_t ║addr = hyp_page_to_phys(p); ~ 000095a0: f90007e8 str x8, [sp, #8] __find_buddy:35.24 (page_alloc.c) Sbepe addr ^= (PAGE_SIZE << ║order); ~ 000095a4: b94017ea ldr w10, [sp, #20] ~ 000095a8: 2a0a03e8 mov w8, w10 ~ 000095ac: 5282000a mov w10, #0x1000 // #4096 ~ 000095b0: 2a0a03e9 mov w9, w10 __find_buddy:35.21 (page_alloc.c) sbepe addr ^= (PAGE_SIZE ║<< order); ~ 000095b4: 9ac82128 lsl x8, x9, x8 __find_buddy:35.7 (page_alloc.c) sbepe addr ║^= (PAGE_SIZE << order); ~ 000095b8: f94007e9 ldr x9, [sp, #8] ~ 000095bc: ca080128 eor x8, x9, x8 ~ 000095c0: f90007e8 str x8, [sp, #8] __find_buddy:36.6 (page_alloc.c) Sbepe if (║addr < pool->range_start || addr >= pool->range_end) ~ 000095c4: f94007e8 ldr x8, [sp, #8] __find_buddy:36.13 (page_alloc.c) sbepe if (addr < ║pool->range_start || addr >= pool->range_end) ~ 000095c8: f94013e9 ldr x9, [sp, #32] __find_buddy:36.19 (page_alloc.c) sbepe if (addr < pool->║range_start || addr >= pool->range_end) ~ 000095cc: f9406529 ldr x9, [x9, #200] __find_buddy:36.31 (page_alloc.c) sbepe if (addr < pool->range_start ║|| addr >= pool->range_end) ~ 000095d0: eb090108 subs x8, x8, x9 ~ ┌────000095d4: 54000103 b.cc 95f4 <__find_buddy+0x78> // b.lo, b.ul, b.last ~ │ ┌─000095d8: 14000001 b 95dc <__find_buddy+0x60> <- 000095d4(b.cc-succ)<fallthrough> │ │ │ │ __find_buddy:36.34 (page_alloc.c) sbepe if (addr < pool->range_start || ║addr >= pool->range_end) ~ │ └>000095dc: f94007e8 ldr x8, [sp, #8] <- 000095d8(b)<__find_buddy+0x60> __find_buddy:36.42 (page_alloc.c) sbepe if (addr < pool->range_start || addr >= ║pool->range_end) ~ 000095e0: f94013e9 ldr x9, [sp, #32] __find_buddy:36.48 (page_alloc.c) sbepe if (addr < pool->range_start || addr >= pool->║range_end) ~ 000095e4: f9406929 ldr x9, [x9, #208] __find_buddy:36.6 (page_alloc.c) sbepe if (║addr < pool->range_start || addr >= pool->range_end) ~ 000095e8: eb090108 subs x8, x8, x9 ~ │ ┌──000095ec: 540000a3 b.cc 9600 <__find_buddy+0x84> // b.lo, b.ul, b.last │ │ ~ │ │┌─000095f0: 14000001 b 95f4 <__find_buddy+0x78> <- 000095ec(b.cc-succ)<fallthrough> │ ││ ~ └>│└>000095f4: aa1f03e8 mov x8, xzr <- 000095d4(b.cc)<__find_buddy+0x78>,000095f0(b)<__find_buddy+0x78> __find_buddy:37.3 (page_alloc.c) Sbepe ║return NULL; ~ 000095f8: f90017e8 str x8, [sp, #40] ~ ┌┼──000095fc: 14000009 b 9620 <__find_buddy+0xa4> ││ ││ __find_buddy:39.9 (page_alloc.c) Sbepe return ║hyp_phys_to_page(addr); ~ │└─>00009600: b0000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0> <- 000095ec(b.cc)<__find_buddy+0x84> ~ 00009604: f944c508 ldr x8, [x8, #2440] ~ 00009608: f94007e9 ldr x9, [sp, #8] ~ 0000960c: d347fd29 lsr x9, x9, #7 ~ 00009610: 927bcd29 and x9, x9, #0x1ffffffffffffe0 ~ 00009614: 8b090108 add x8, x8, x9 __find_buddy:39.2 (page_alloc.c) sbepe ║return hyp_phys_to_page(addr); ~ 00009618: f90017e8 str x8, [sp, #40] ~ │ ┌─0000961c: 14000001 b 9620 <__find_buddy+0xa4> │ │ │ │ __find_buddy:40.1 (page_alloc.c) Sbepe ║} ~ └>└>00009620: f94017e0 ldr x0, [sp, #40] <- 000095fc(b)<__find_buddy+0xa4>,0000961c(b)<__find_buddy+0xa4> ~ 00009624: 9100c3ff add sp, sp, #0x30 00009580 CFA:r31+48 ~ 00009628: d65f03c0 ret -pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x957c 0x962c (DW_OP_fbreg 0x20) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:30 -p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x957c 0x962c (DW_OP_fbreg 0x18) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:30 -order param unsigned int (base type, DW_ATE_unsigned size:4) 0x957c 0x962c (DW_OP_fbreg 0x14) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:31 -addr var typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x957c 0x962c (DW_OP_fbreg 0x8) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:33 **0000962c <list_empty>: + list_empty params: +head param pointer(const(struct list_head<6b8fc>/<6ba74>)) 0x962c 0x9660 (DW_OP_fbreg 0x8) list_empty:281.0 (list.h) Sbepe ║{ 0000962c CFA:r31 +head param pointer(const(struct list_head<6b8fc>/<6ba74>)) 0x962c 0x9660 (DW_OP_fbreg 0x8) list_empty:arch/arm64/kvm/hyp/nvhe/page_alloc.c:280 ~ 0000962c: d10043ff sub sp, sp, #0x10 <- 00009064(bl)<list_empty>,00009294(bl)<list_empty> ~ 00009630: f90007e0 str x0, [sp, #8] list_empty:282.9 (list.h) SbePe return ║READ_ONCE(head->next) == head; ~ ┌─00009634: 14000001 b 9638 <list_empty+0xc> list_empty:282.9 (list.h) sbepe return ║READ_ONCE(head->next) == head; ~ ┌─└>00009638: 14000001 b 963c <list_empty+0x10> <- 00009634(b)<list_empty+0xc> list_empty:282.9 (list.h) sbepe return ║READ_ONCE(head->next) == head; ~ └──>0000963c: f94007e8 ldr x8, [sp, #8] <- 00009638(b)<list_empty+0x10> ~ 00009640: f9400108 ldr x8, [x8] list_empty:282.9 (list.h) sbepe return ║READ_ONCE(head->next) == head; ~ 00009644: f90003e8 str x8, [sp] list_empty:282.9 (list.h) sbepe return ║READ_ONCE(head->next) == head; ~ 00009648: f94003e8 ldr x8, [sp] list_empty:282.34 (list.h) sbepe return READ_ONCE(head->next) == ║head; ~ 0000964c: f94007e9 ldr x9, [sp, #8] list_empty:282.31 (list.h) sbepe return READ_ONCE(head->next) ║== head; ~ 00009650: eb090108 subs x8, x8, x9 ~ 00009654: 1a9f17e0 cset w0, eq // eq = none list_empty:282.2 (list.h) sbepe ║return READ_ONCE(head->next) == head; ~ 00009658: 910043ff add sp, sp, #0x10 00009630 CFA:r31+16 ~ 0000965c: d65f03c0 ret -head param pointer(const(struct list_head<6b8fc>/<6ba74>)) 0x962c 0x9660 (DW_OP_fbreg 0x8) list_empty:arch/arm64/kvm/hyp/nvhe/page_alloc.c:280 **00009660 <list_del_init>: + list_del_init params: +entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x9660 0x968c (DW_OP_breg31 0x8) list_del_init:203.0 (list.h) Sbepe ║{ +entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x9660 0x968c (DW_OP_breg31 0x8) list_del_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:202 ~ 00009660: d10083ff sub sp, sp, #0x20 <- 00009094(bl)<list_del_init>,00009858(bl)<list_del_init> ~ 00009664: a9017bfd stp x29, x30, [sp, #16] 00009660 CFA:r31 r29:u r30:u ~ 00009668: 910043fd add x29, sp, #0x10 ~ 0000966c: f90007e0 str x0, [sp, #8] list_del_init:204.19 (list.h) SbePe __list_del_entry(║entry); ~ 00009670: f94007e0 ldr x0, [sp, #8] list_del_init:204.2 (list.h) sbepe ║__list_del_entry(entry); ~ 00009674: 94000013 bl 96c0 <__list_del_entry> list_del_init:205.17 (list.h) Sbepe INIT_LIST_HEAD(║entry); ~ 00009678: f94007e0 ldr x0, [sp, #8] <- 00009674(bl-succ)<return> list_del_init:205.2 (list.h) sbepe ║INIT_LIST_HEAD(entry); ~ 0000967c: 97ffffb2 bl 9544 <INIT_LIST_HEAD> list_del_init:206.1 (list.h) Sbepe ║} ~ 00009680: a9417bfd ldp x29, x30, [sp, #16] <- 0000967c(bl-succ)<return> ~ 00009684: 910083ff add sp, sp, #0x20 0000966c CFA:r29+16 r29:c-16 r30:c-8 ~ 00009688: d65f03c0 ret -entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x9660 0x968c (DW_OP_breg31 0x8) list_del_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:202 **0000968c <list_add_tail>: + list_add_tail params: +new param pointer(struct list_head<6b8fc>/<6ba74>) 0x968c 0x96c0 (DW_OP_breg31 0x8) +head param pointer(struct list_head<6b8fc>/<6ba74>) 0x968c 0x96c0 (DW_OP_breg31 0x0) list_add_tail:99.0 (list.h) Sbepe ║{ +new param pointer(struct list_head<6b8fc>/<6ba74>) 0x968c 0x96c0 (DW_OP_breg31 0x8) list_add_tail:arch/arm64/kvm/hyp/nvhe/page_alloc.c:98 +head param pointer(struct list_head<6b8fc>/<6ba74>) 0x968c 0x96c0 (DW_OP_breg31 0x0) list_add_tail:arch/arm64/kvm/hyp/nvhe/page_alloc.c:98 ~ 0000968c: d10083ff sub sp, sp, #0x20 <- 00009114(bl)<list_add_tail>,000098cc(bl)<list_add_tail> ~ 00009690: a9017bfd stp x29, x30, [sp, #16] 0000968c CFA:r31 r29:u r30:u ~ 00009694: 910043fd add x29, sp, #0x10 ~ 00009698: f90007e0 str x0, [sp, #8] ~ 0000969c: f90003e1 str x1, [sp] list_add_tail:100.13 (list.h) SbePe __list_add(║new, head->prev, head); ~ 000096a0: f94007e0 ldr x0, [sp, #8] list_add_tail:100.18 (list.h) sbepe __list_add(new, ║head->prev, head); ~ 000096a4: f94003e8 ldr x8, [sp] list_add_tail:100.24 (list.h) sbepe __list_add(new, head->║prev, head); ~ 000096a8: f9400501 ldr x1, [x8, #8] list_add_tail:100.2 (list.h) sbepe ║__list_add(new, head->prev, head); ~ 000096ac: aa0803e2 mov x2, x8 ~ 000096b0: 9400002b bl 975c <__list_add> list_add_tail:101.1 (list.h) Sbepe ║} ~ 000096b4: a9417bfd ldp x29, x30, [sp, #16] <- 000096b0(bl-succ)<return> ~ 000096b8: 910083ff add sp, sp, #0x20 00009698 CFA:r29+16 r29:c-16 r30:c-8 ~ 000096bc: d65f03c0 ret -new param pointer(struct list_head<6b8fc>/<6ba74>) 0x968c 0x96c0 (DW_OP_breg31 0x8) list_add_tail:arch/arm64/kvm/hyp/nvhe/page_alloc.c:98 -head param pointer(struct list_head<6b8fc>/<6ba74>) 0x968c 0x96c0 (DW_OP_breg31 0x0) list_add_tail:arch/arm64/kvm/hyp/nvhe/page_alloc.c:98 **000096c0 <__list_del_entry>: + __list_del_entry params: +entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x96c0 0x9704 (DW_OP_breg31 0x8) __list_del_entry:131.0 (list.h) Sbepe ║{ +entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x96c0 0x9704 (DW_OP_breg31 0x8) __list_del_entry:arch/arm64/kvm/hyp/nvhe/page_alloc.c:130 ~ 000096c0: d10083ff sub sp, sp, #0x20 <- 00009674(bl)<__list_del_entry> ~ 000096c4: a9017bfd stp x29, x30, [sp, #16] 000096c0 CFA:r31 r29:u r30:u ~ 000096c8: 910043fd add x29, sp, #0x10 ~ 000096cc: f90007e0 str x0, [sp, #8] __list_del_entry:132.30 (list.h) SbePe if (!__list_del_entry_valid(║entry)) ~ 000096d0: f94007e0 ldr x0, [sp, #8] __list_del_entry:132.7 (list.h) sbepe if (!║__list_del_entry_valid(entry)) ~ 000096d4: 9400000c bl 9704 <__list_del_entry_valid> __list_del_entry:132.6 (list.h) sbepe if (║!__list_del_entry_valid(entry)) ~ ┌──000096d8: 37000060 tbnz w0, #0, 96e4 <__list_del_entry+0x24> <- 000096d4(bl-succ)<return> ~ │┌─000096dc: 14000001 b 96e0 <__list_del_entry+0x20> <- 000096d8(b.cc-succ)<fallthrough> ││ ││ __list_del_entry:133.3 (list.h) Sbepe ║return; ~ ┌┼└>000096e0: 14000006 b 96f8 <__list_del_entry+0x38> <- 000096dc(b)<__list_del_entry+0x20> ││ ││ __list_del_entry:135.13 (list.h) Sbepe __list_del(║entry->prev, entry->next); ~ │└─>000096e4: f94007e8 ldr x8, [sp, #8] <- 000096d8(b.cc)<__list_del_entry+0x24> __list_del_entry:135.20 (list.h) sbepe __list_del(entry->║prev, entry->next); ~ 000096e8: f9400500 ldr x0, [x8, #8] __list_del_entry:135.33 (list.h) sbepe __list_del(entry->prev, entry->║next); ~ 000096ec: f9400101 ldr x1, [x8] __list_del_entry:135.2 (list.h) sbepe ║__list_del(entry->prev, entry->next); ~ 000096f0: 9400000a bl 9718 <__list_del> __list_del_entry:136.1 (list.h) Sbepe ║} ~ │ ┌─000096f4: 14000001 b 96f8 <__list_del_entry+0x38> <- 000096f0(bl-succ)<return> │ │ ~ └>└>000096f8: a9417bfd ldp x29, x30, [sp, #16] <- 000096e0(b)<__list_del_entry+0x38>,000096f4(b)<__list_del_entry+0x38> ~ 000096fc: 910083ff add sp, sp, #0x20 000096cc CFA:r29+16 r29:c-16 r30:c-8 ~ 00009700: d65f03c0 ret -entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x96c0 0x9704 (DW_OP_breg31 0x8) __list_del_entry:arch/arm64/kvm/hyp/nvhe/page_alloc.c:130 **00009704 <__list_del_entry_valid>: + __list_del_entry_valid params: +entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x9704 0x9718 (DW_OP_fbreg 0x8) __list_del_entry_valid:52.0 (list.h) Sbepe ║{ 00009704 CFA:r31 +entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x9704 0x9718 (DW_OP_fbreg 0x8) __list_del_entry_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:51 ~ 00009704: d10043ff sub sp, sp, #0x10 <- 000096d4(bl)<__list_del_entry_valid> ~ 00009708: f90007e0 str x0, [sp, #8] ~ 0000970c: 52800020 mov w0, #0x1 // #1 __list_del_entry_valid:53.2 (list.h) SbePe ║return true; ~ 00009710: 910043ff add sp, sp, #0x10 00009708 CFA:r31+16 ~ 00009714: d65f03c0 ret -entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x9704 0x9718 (DW_OP_fbreg 0x8) __list_del_entry_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:51 **00009718 <__list_del>: + __list_del params: +prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x9718 0x975c (DW_OP_fbreg 0x8) +next param pointer(struct list_head<6b8fc>/<6ba74>) 0x9718 0x975c (DW_OP_fbreg 0x0) __list_del:111.0 (list.h) Sbepe ║{ 00009718 CFA:r31 +prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x9718 0x975c (DW_OP_fbreg 0x8) __list_del:arch/arm64/kvm/hyp/nvhe/page_alloc.c:110 +next param pointer(struct list_head<6b8fc>/<6ba74>) 0x9718 0x975c (DW_OP_fbreg 0x0) __list_del:arch/arm64/kvm/hyp/nvhe/page_alloc.c:110 ~ 00009718: d10043ff sub sp, sp, #0x10 <- 000096f0(bl)<__list_del> ~ 0000971c: f90007e0 str x0, [sp, #8] ~ 00009720: f90003e1 str x1, [sp] __list_del:112.15 (list.h) SbePe next->prev = ║prev; ~ 00009724: f94007e8 ldr x8, [sp, #8] __list_del:112.2 (list.h) sbepe ║next->prev = prev; ~ 00009728: f94003e9 ldr x9, [sp] __list_del:112.13 (list.h) sbepe next->prev ║= prev; ~ 0000972c: f9000528 str x8, [x9, #8] __list_del:113.2 (list.h) Sbepe ║WRITE_ONCE(prev->next, next); ~ ┌─00009730: 14000001 b 9734 <__list_del+0x1c> __list_del:113.2 (list.h) sbepe ║WRITE_ONCE(prev->next, next); ~ ┌─└>00009734: 14000001 b 9738 <__list_del+0x20> <- 00009730(b)<__list_del+0x1c> __list_del:113.2 (list.h) sbepe ║WRITE_ONCE(prev->next, next); ~ ┌─└──>00009738: 14000001 b 973c <__list_del+0x24> <- 00009734(b)<__list_del+0x20> __list_del:113.2 (list.h) sbepe ║WRITE_ONCE(prev->next, next); ~ ┌─└────>0000973c: 14000001 b 9740 <__list_del+0x28> <- 00009738(b)<__list_del+0x24> __list_del:113.2 (list.h) sbepe ║WRITE_ONCE(prev->next, next); ~ └──────>00009740: f94003e8 ldr x8, [sp] <- 0000973c(b)<__list_del+0x28> ~ 00009744: f94007e9 ldr x9, [sp, #8] ~ 00009748: f9000128 str x8, [x9] ~ ┌─0000974c: 14000001 b 9750 <__list_del+0x38> __list_del:113.2 (list.h) sbepe ║WRITE_ONCE(prev->next, next); ~ ┌─└>00009750: 14000001 b 9754 <__list_del+0x3c> <- 0000974c(b)<__list_del+0x38> __list_del:114.1 (list.h) Sbepe ║} ~ └──>00009754: 910043ff add sp, sp, #0x10 <- 00009750(b)<__list_del+0x3c> 0000971c CFA:r31+16 ~ 00009758: d65f03c0 ret -prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x9718 0x975c (DW_OP_fbreg 0x8) __list_del:arch/arm64/kvm/hyp/nvhe/page_alloc.c:110 -next param pointer(struct list_head<6b8fc>/<6ba74>) 0x9718 0x975c (DW_OP_fbreg 0x0) __list_del:arch/arm64/kvm/hyp/nvhe/page_alloc.c:110 **0000975c <__list_add>: + __list_add params: +new param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_fbreg -0x8) +prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_breg31 0x10) +next param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_breg31 0x8) __list_add:66.0 (list.h) Sbepe ║{ +new param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_fbreg -0x8) __list_add:arch/arm64/kvm/hyp/nvhe/page_alloc.c:63 +prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_breg31 0x10) __list_add:arch/arm64/kvm/hyp/nvhe/page_alloc.c:64 +next param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_breg31 0x8) __list_add:arch/arm64/kvm/hyp/nvhe/page_alloc.c:65 ~ 0000975c: d100c3ff sub sp, sp, #0x30 <- 000096b0(bl)<__list_add> ~ 00009760: a9027bfd stp x29, x30, [sp, #32] 0000975c CFA:r31 r29:u r30:u ~ 00009764: 910083fd add x29, sp, #0x20 ~ 00009768: f81f83a0 stur x0, [x29, #-8] ~ 0000976c: f9000be1 str x1, [sp, #16] ~ 00009770: f90007e2 str x2, [sp, #8] __list_add:67.24 (list.h) SbePe if (!__list_add_valid(║new, prev, next)) ~ 00009774: f85f83a0 ldur x0, [x29, #-8] __list_add:67.29 (list.h) sbepe if (!__list_add_valid(new, ║prev, next)) ~ 00009778: f9400be1 ldr x1, [sp, #16] __list_add:67.35 (list.h) sbepe if (!__list_add_valid(new, prev, ║next)) ~ 0000977c: f94007e2 ldr x2, [sp, #8] __list_add:67.7 (list.h) sbepe if (!║__list_add_valid(new, prev, next)) ~ 00009780: 94000019 bl 97e4 <__list_add_valid> __list_add:67.6 (list.h) sbepe if (║!__list_add_valid(new, prev, next)) ~ ┌──00009784: 37000060 tbnz w0, #0, 9790 <__list_add+0x34> <- 00009780(bl-succ)<return> ~ │┌─00009788: 14000001 b 978c <__list_add+0x30> <- 00009784(b.cc-succ)<fallthrough> ││ ││ __list_add:68.3 (list.h) Sbepe ║return; ~ ┌───┼└>0000978c: 14000013 b 97d8 <__list_add+0x7c> <- 00009788(b)<__list_add+0x30> │ │ │ │ __list_add:70.15 (list.h) Sbepe next->prev = ║new; ~ │ └─>00009790: f85f83a8 ldur x8, [x29, #-8] <- 00009784(b.cc)<__list_add+0x34> __list_add:70.2 (list.h) sbepe ║next->prev = new; ~ 00009794: f94007e9 ldr x9, [sp, #8] __list_add:70.13 (list.h) sbepe next->prev ║= new; ~ 00009798: f9000528 str x8, [x9, #8] __list_add:71.14 (list.h) Sbepe new->next = ║next; ~ 0000979c: f94007e8 ldr x8, [sp, #8] __list_add:71.2 (list.h) sbepe ║new->next = next; ~ 000097a0: f85f83a9 ldur x9, [x29, #-8] __list_add:71.12 (list.h) sbepe new->next ║= next; ~ 000097a4: f9000128 str x8, [x9] __list_add:72.14 (list.h) Sbepe new->prev = ║prev; ~ 000097a8: f9400be8 ldr x8, [sp, #16] __list_add:72.2 (list.h) sbepe ║new->prev = prev; ~ 000097ac: f85f83a9 ldur x9, [x29, #-8] __list_add:72.12 (list.h) sbepe new->prev ║= prev; ~ 000097b0: f9000528 str x8, [x9, #8] __list_add:73.2 (list.h) Sbepe ║WRITE_ONCE(prev->next, new); ~ │ ┌─000097b4: 14000001 b 97b8 <__list_add+0x5c> │ │ │ │ __list_add:73.2 (list.h) sbepe ║WRITE_ONCE(prev->next, new); ~ │ ┌─└>000097b8: 14000001 b 97bc <__list_add+0x60> <- 000097b4(b)<__list_add+0x5c> │ │ │ │ __list_add:73.2 (list.h) sbepe ║WRITE_ONCE(prev->next, new); ~ │┌─└──>000097bc: 14000001 b 97c0 <__list_add+0x64> <- 000097b8(b)<__list_add+0x60> ││ ││ __list_add:73.2 (list.h) sbepe ║WRITE_ONCE(prev->next, new); ~ ┌┼└────>000097c0: 14000001 b 97c4 <__list_add+0x68> <- 000097bc(b)<__list_add+0x64> ││ ││ __list_add:73.2 (list.h) sbepe ║WRITE_ONCE(prev->next, new); ~ └┼─────>000097c4: f85f83a8 ldur x8, [x29, #-8] <- 000097c0(b)<__list_add+0x68> ~ 000097c8: f9400be9 ldr x9, [sp, #16] ~ 000097cc: f9000128 str x8, [x9] ~ │ ┌─000097d0: 14000001 b 97d4 <__list_add+0x78> │ │ │ │ __list_add:73.2 (list.h) sbepe ║WRITE_ONCE(prev->next, new); ~ │ ┌─└>000097d4: 14000001 b 97d8 <__list_add+0x7c> <- 000097d0(b)<__list_add+0x78> │ │ │ │ __list_add:74.1 (list.h) Sbepe ║} ~ └─>└──>000097d8: a9427bfd ldp x29, x30, [sp, #32] <- 0000978c(b)<__list_add+0x7c>,000097d4(b)<__list_add+0x7c> ~ 000097dc: 9100c3ff add sp, sp, #0x30 00009768 CFA:r29+16 r29:c-16 r30:c-8 ~ 000097e0: d65f03c0 ret -new param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_fbreg -0x8) __list_add:arch/arm64/kvm/hyp/nvhe/page_alloc.c:63 -prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_breg31 0x10) __list_add:arch/arm64/kvm/hyp/nvhe/page_alloc.c:64 -next param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_breg31 0x8) __list_add:arch/arm64/kvm/hyp/nvhe/page_alloc.c:65 **000097e4 <__list_add_valid>: + __list_add_valid params: +new param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x18) +prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x10) +next param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x8) __list_add_valid:48.0 (list.h) Sbepe ║{ 000097e4 CFA:r31 +new param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x18) __list_add_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:45 +prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x10) __list_add_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:46 +next param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x8) __list_add_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:47 ~ 000097e4: d10083ff sub sp, sp, #0x20 <- 00009780(bl)<__list_add_valid> ~ 000097e8: f9000fe0 str x0, [sp, #24] ~ 000097ec: f9000be1 str x1, [sp, #16] ~ 000097f0: f90007e2 str x2, [sp, #8] ~ 000097f4: 52800020 mov w0, #0x1 // #1 __list_add_valid:49.2 (list.h) SbePe ║return true; ~ 000097f8: 910083ff add sp, sp, #0x20 000097e8 CFA:r31+32 ~ 000097fc: d65f03c0 ret -new param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x18) __list_add_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:45 -prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x10) __list_add_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:46 -next param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x8) __list_add_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:47 **00009800 <__hyp_extract_page>: + __hyp_extract_page params: +pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9800 0x98fc (DW_OP_fbreg -0x10) +p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x9800 0x98fc (DW_OP_breg31 0x18) +order param unsigned int (base type, DW_ATE_unsigned size:4) 0x9800 0x98fc (DW_OP_breg31 0x14) __hyp_extract_page:93.0 (page_alloc.c) Sbepe ║{ +pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9800 0x98fc (DW_OP_fbreg -0x10) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:90 +p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x9800 0x98fc (DW_OP_breg31 0x18) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:91 +order param unsigned int (base type, DW_ATE_unsigned size:4) 0x9800 0x98fc (DW_OP_breg31 0x14) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:92 +buddy var pointer(struct hyp_page<6b8fc>/<6b979>) 0x9800 0x98fc (DW_OP_breg31 0x8) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:94 ~ 00009800: d10103ff sub sp, sp, #0x40 <- 00009320(bl)<__hyp_extract_page> ~ 00009804: a9037bfd stp x29, x30, [sp, #48] 00009800 CFA:r31 r29:u r30:u ~ 00009808: 9100c3fd add x29, sp, #0x30 ~ 0000980c: f81f03a0 stur x0, [x29, #-16] ~ 00009810: f9000fe1 str x1, [sp, #24] ~ 00009814: b90017e2 str w2, [sp, #20] __hyp_extract_page:96.6 (page_alloc.c) SbePe if (║p->order == HYP_NO_ORDER || p->order < order) ~ 00009818: f9400fe8 ldr x8, [sp, #24] __hyp_extract_page:96.9 (page_alloc.c) sbepe if (p->║order == HYP_NO_ORDER || p->order < order) ~ 0000981c: b9400509 ldr w9, [x8, #4] __hyp_extract_page:96.31 (page_alloc.c) sbepe if (p->order == HYP_NO_ORDER ║|| p->order < order) ~ 00009820: 31000529 adds w9, w9, #0x1 ~ ┌────00009824: 54000100 b.eq 9844 <__hyp_extract_page+0x44> // b.none ~ │ ┌─00009828: 14000001 b 982c <__hyp_extract_page+0x2c> <- 00009824(b.cc-succ)<fallthrough> │ │ │ │ __hyp_extract_page:96.34 (page_alloc.c) sbepe if (p->order == HYP_NO_ORDER || ║p->order < order) ~ │ └>0000982c: f9400fe8 ldr x8, [sp, #24] <- 00009828(b)<__hyp_extract_page+0x2c> __hyp_extract_page:96.37 (page_alloc.c) sbepe if (p->order == HYP_NO_ORDER || p->║order < order) ~ 00009830: b9400509 ldr w9, [x8, #4] __hyp_extract_page:96.45 (page_alloc.c) sbepe if (p->order == HYP_NO_ORDER || p->order < ║order) ~ 00009834: b94017ea ldr w10, [sp, #20] __hyp_extract_page:96.6 (page_alloc.c) sbepe if (║p->order == HYP_NO_ORDER || p->order < order) ~ 00009838: 6b0a0129 subs w9, w9, w10 ~ │ ┌──0000983c: 540000a2 b.cs 9850 <__hyp_extract_page+0x50> // b.hs, b.nlast │ │ ~ │ │┌─00009840: 14000001 b 9844 <__hyp_extract_page+0x44> <- 0000983c(b.cc-succ)<fallthrough> │ ││ ~ └>│└>00009844: aa1f03e8 mov x8, xzr <- 00009824(b.cc)<__hyp_extract_page+0x44>,00009840(b)<__hyp_extract_page+0x44> __hyp_extract_page:97.3 (page_alloc.c) Sbepe ║return NULL; ~ 00009848: f81f83a8 stur x8, [x29, #-8] ~ ┌─┼──0000984c: 14000028 b 98ec <__hyp_extract_page+0xec> │ │ │ │ __hyp_extract_page:99.17 (page_alloc.c) Sbepe list_del_init(&║p->node); ~ │ └─>00009850: f9400fe8 ldr x8, [sp, #24] <- 0000983c(b.cc)<__hyp_extract_page+0x50> __hyp_extract_page:99.20 (page_alloc.c) sbepe list_del_init(&p->║node); ~ 00009854: 91004100 add x0, x8, #0x10 __hyp_extract_page:99.2 (page_alloc.c) sbepe ║list_del_init(&p->node); ~ 00009858: 97ffff82 bl 9660 <list_del_init> __hyp_extract_page:102.2 (page_alloc.c) Sbepe ║while (p->order > order) { ~ │ ┌─0000985c: 14000001 b 9860 <__hyp_extract_page+0x60> <- 00009858(bl-succ)<return> │ │ │ │ __hyp_extract_page:102.9 (page_alloc.c) sbepe while (║p->order > order) { ~ │╔>└>00009860: f9400fe8 ldr x8, [sp, #24] <- 0000985c(b)<__hyp_extract_page+0x60>,v000098d0(b)<__hyp_extract_page+0x60> │║ __hyp_extract_page:102.12 (page_alloc.c) sbepe while (p->║order > order) { ~ │║ 00009864: b9400509 ldr w9, [x8, #4] │║ __hyp_extract_page:102.20 (page_alloc.c) sbepe while (p->order > ║order) { ~ │║ 00009868: b94017ea ldr w10, [sp, #20] │║ __hyp_extract_page:102.2 (page_alloc.c) sbepe ║while (p->order > order) { ~ │║ 0000986c: 6b0a0129 subs w9, w9, w10 ~ │║┌──00009870: 54000329 b.ls 98d4 <__hyp_extract_page+0xd4> // b.plast │║│ ~ │║│┌─00009874: 14000001 b 9878 <__hyp_extract_page+0x78> <- 00009870(b.cc-succ)<fallthrough> │║││ │║││ __hyp_extract_page:103.3 (page_alloc.c) Sbepe ║p->order--; ~ │║│└>00009878: f9400fe8 ldr x8, [sp, #24] <- 00009874(b)<__hyp_extract_page+0x78> │║│ __hyp_extract_page:103.11 (page_alloc.c) sbepe p->order║--; ~ │║│ 0000987c: b9400509 ldr w9, [x8, #4] ~ │║│ 00009880: 71000529 subs w9, w9, #0x1 ~ │║│ 00009884: b9000509 str w9, [x8, #4] │║│ __hyp_extract_page:104.24 (page_alloc.c) Sbepe buddy = __find_buddy(║pool, p, p->order); ~ │║│ 00009888: f85f03a0 ldur x0, [x29, #-16] │║│ __hyp_extract_page:104.30 (page_alloc.c) sbepe buddy = __find_buddy(pool, ║p, p->order); ~ │║│ 0000988c: f9400fe8 ldr x8, [sp, #24] │║│ __hyp_extract_page:104.36 (page_alloc.c) sbepe buddy = __find_buddy(pool, p, p->║order); ~ │║│ 00009890: b9400502 ldr w2, [x8, #4] │║│ __hyp_extract_page:104.11 (page_alloc.c) sbepe buddy = ║__find_buddy(pool, p, p->order); ~ │║│ 00009894: aa0803e1 mov x1, x8 ~ │║│ 00009898: 97ffff39 bl 957c <__find_buddy> │║│ │║│ __hyp_extract_page:104.9 (page_alloc.c) sbepe buddy ║= __find_buddy(pool, p, p->order); ~ │║│ 0000989c: f90007e0 str x0, [sp, #8] <- 00009898(bl-succ)<return> │║│ __hyp_extract_page:105.18 (page_alloc.c) Sbepe buddy->order = ║p->order; ~ │║│ 000098a0: f9400fe8 ldr x8, [sp, #24] │║│ __hyp_extract_page:105.21 (page_alloc.c) sbepe buddy->order = p->║order; ~ │║│ 000098a4: b9400509 ldr w9, [x8, #4] │║│ __hyp_extract_page:105.3 (page_alloc.c) sbepe ║buddy->order = p->order; ~ │║│ 000098a8: f94007e8 ldr x8, [sp, #8] │║│ __hyp_extract_page:105.16 (page_alloc.c) sbepe buddy->order ║= p->order; ~ │║│ 000098ac: b9000509 str w9, [x8, #4] │║│ __hyp_extract_page:106.18 (page_alloc.c) Sbepe list_add_tail(&║buddy->node, &pool->free_area[buddy->order]); ~ │║│ 000098b0: f94007e8 ldr x8, [sp, #8] │║│ __hyp_extract_page:106.25 (page_alloc.c) sbepe list_add_tail(&buddy->║node, &pool->free_area[buddy->order]); ~ │║│ 000098b4: 91004100 add x0, x8, #0x10 │║│ __hyp_extract_page:106.32 (page_alloc.c) sbepe list_add_tail(&buddy->node, &║pool->free_area[buddy->order]); ~ │║│ 000098b8: f85f03aa ldur x10, [x29, #-16] │║│ __hyp_extract_page:106.55 (page_alloc.c) sbepe list_add_tail(&buddy->node, &pool->free_area[buddy->║order]); ~ │║│ 000098bc: b9400509 ldr w9, [x8, #4] ~ │║│ 000098c0: 2a0903e8 mov w8, w9 │║│ __hyp_extract_page:106.38 (page_alloc.c) sbepe list_add_tail(&buddy->node, &pool->║free_area[buddy->order]); ~ │║│ 000098c4: 8b081148 add x8, x10, x8, lsl #4 │║│ __hyp_extract_page:106.32 (page_alloc.c) sbepe list_add_tail(&buddy->node, &║pool->free_area[buddy->order]); ~ │║│ 000098c8: 91002101 add x1, x8, #0x8 │║│ __hyp_extract_page:106.3 (page_alloc.c) sbepe ║list_add_tail(&buddy->node, &pool->free_area[buddy->order]); ~ │║│ 000098cc: 97ffff70 bl 968c <list_add_tail> │║│ │║│ __hyp_extract_page:102.2 (page_alloc.c) Sbepe ║while (p->order > order) { ~ │╚╪══000098d0: 17ffffe4 b 9860 <__hyp_extract_page+0x60> <- 000098cc(bl-succ)<return> │ │ │ │ __hyp_extract_page:109.2 (page_alloc.c) Sbepe ║p->refcount = 1; ~ │ └─>000098d4: f9400fe8 ldr x8, [sp, #24] <- 00009870(b.cc)<__hyp_extract_page+0xd4> ~ 000098d8: 52800029 mov w9, #0x1 // #1 __hyp_extract_page:109.14 (page_alloc.c) sbepe p->refcount ║= 1; ~ 000098dc: b9000109 str w9, [x8] __hyp_extract_page:111.9 (page_alloc.c) Sbepe return p; ~ 000098e0: f9400fe8 ldr x8, [sp, #24] __hyp_extract_page:111.2 (page_alloc.c) sbepe ║return p; ~ 000098e4: f81f83a8 stur x8, [x29, #-8] ~ │ ┌─000098e8: 14000001 b 98ec <__hyp_extract_page+0xec> │ │ │ │ __hyp_extract_page:112.1 (page_alloc.c) Sbepe ║} ~ └─>└>000098ec: f85f83a0 ldur x0, [x29, #-8] <- 0000984c(b)<__hyp_extract_page+0xec>,000098e8(b)<__hyp_extract_page+0xec> ~ 000098f0: a9437bfd ldp x29, x30, [sp, #48] ~ 000098f4: 910103ff add sp, sp, #0x40 0000980c CFA:r29+16 r29:c-16 r30:c-8 ~ 000098f8: d65f03c0 ret -pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9800 0x98fc (DW_OP_fbreg -0x10) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:90 -p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x9800 0x98fc (DW_OP_breg31 0x18) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:91 -order param unsigned int (base type, DW_ATE_unsigned size:4) 0x9800 0x98fc (DW_OP_breg31 0x14) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:92 -buddy var pointer(struct hyp_page<6b8fc>/<6b979>) 0x9800 0x98fc (DW_OP_breg31 0x8) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:94 **000098fc <clear_hyp_page>: + clear_hyp_page params: +p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x98fc 0x9988 (DW_OP_breg31 0x8) clear_hyp_page:115.0 (page_alloc.c) Sbepe ║{ +p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x98fc 0x9988 (DW_OP_breg31 0x8) clear_hyp_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:114 +i var long unsigned int (base type, DW_ATE_unsigned size:8) 0x98fc 0x9988 (DW_OP_breg31 0x0) clear_hyp_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:116 ~ 000098fc: d10083ff sub sp, sp, #0x20 <- 00009338(bl)<clear_hyp_page> ~ 00009900: a9017bfd stp x29, x30, [sp, #16] 000098fc CFA:r31 r29:u r30:u ~ 00009904: 910043fd add x29, sp, #0x10 ~ 00009908: f90007e0 str x0, [sp, #8] ~ 0000990c: aa1f03e8 mov x8, xzr clear_hyp_page:118.9 (page_alloc.c) SbePe for (i ║= 0; i < (1 << p->order); i++) ~ 00009910: f90003e8 str x8, [sp] clear_hyp_page:118.7 (page_alloc.c) sbepe for (║i = 0; i < (1 << p->order); i++) ~ ┌─00009914: 14000001 b 9918 <clear_hyp_page+0x1c> clear_hyp_page:118.14 (page_alloc.c) sbepe for (i = 0; ║i < (1 << p->order); i++) ~ ╔>└>00009918: f94003e8 ldr x8, [sp] <- 00009914(b)<clear_hyp_page+0x1c>,v00009978(b)<clear_hyp_page+0x1c> clear_hyp_page:118.24 (page_alloc.c) sbepe for (i = 0; i < (1 << ║p->order); i++) ~ 0000991c: f94007e9 ldr x9, [sp, #8] clear_hyp_page:118.27 (page_alloc.c) sbepe for (i = 0; i < (1 << p->║order); i++) ~ 00009920: b940052a ldr w10, [x9, #4] ~ 00009924: 2a0a03e0 mov w0, w10 ~ 00009928: 5280002a mov w10, #0x1 // #1 clear_hyp_page:118.21 (page_alloc.c) sbepe for (i = 0; i < (1 ║<< p->order); i++) ~ 0000992c: 1ac0214a lsl w10, w10, w0 clear_hyp_page:118.2 (page_alloc.c) sbepe ║for (i = 0; i < (1 << p->order); i++) ~ 00009930: eb2ac108 subs x8, x8, w10, sxtw ~ ║┌──00009934: 54000242 b.cs 997c <clear_hyp_page+0x80> // b.hs, b.nlast ║│ ~ ║│┌─00009938: 14000001 b 993c <clear_hyp_page+0x40> <- 00009934(b.cc-succ)<fallthrough> ║││ ║││ clear_hyp_page:119.14 (page_alloc.c) Sbepe clear_page(║hyp_page_to_virt(p) + (i << PAGE_SHIFT)); ~ ║│└>0000993c: f94007e8 ldr x8, [sp, #8] <- 00009938(b)<clear_hyp_page+0x40> ~ ║│ 00009940: b0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0> ~ ║│ 00009944: f944c529 ldr x9, [x9, #2440] ~ ║│ 00009948: eb090108 subs x8, x8, x9 ~ ║│ 0000994c: d379e108 lsl x8, x8, #7 ~ ║│ 00009950: b0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0> ~ ║│ 00009954: f9439d29 ldr x9, [x9, #1848] ~ ║│ 00009958: eb090108 subs x8, x8, x9 ║│ clear_hyp_page:119.37 (page_alloc.c) sbepe clear_page(hyp_page_to_virt(p) + (║i << PAGE_SHIFT)); ~ ║│ 0000995c: f94003e9 ldr x9, [sp] ║│ clear_hyp_page:119.34 (page_alloc.c) sbepe clear_page(hyp_page_to_virt(p) ║+ (i << PAGE_SHIFT)); ~ ║│ 00009960: 8b093100 add x0, x8, x9, lsl #12 ║│ clear_hyp_page:119.3 (page_alloc.c) sbepe ║clear_page(hyp_page_to_virt(p) + (i << PAGE_SHIFT)); ~ ║│ 00009964: 94003180 bl 15f64 <__pi_clear_page> ║│ ~ ║│┌─00009968: 14000001 b 996c <clear_hyp_page+0x70> <- 00009964(bl-succ)<return> ║││ ║││ clear_hyp_page:118.36 (page_alloc.c) Sbepe for (i = 0; i < (1 << p->order); i║++) ~ ║│└>0000996c: f94003e8 ldr x8, [sp] <- 00009968(b)<clear_hyp_page+0x70> ~ ║│ 00009970: 91000508 add x8, x8, #0x1 ~ ║│ 00009974: f90003e8 str x8, [sp] ║│ clear_hyp_page:118.2 (page_alloc.c) sbepe ║for (i = 0; i < (1 << p->order); i++) ~ ╚╪══00009978: 17ffffe8 b 9918 <clear_hyp_page+0x1c> clear_hyp_page:120.1 (page_alloc.c) Sbepe ║} ~ └─>0000997c: a9417bfd ldp x29, x30, [sp, #16] <- 00009934(b.cc)<clear_hyp_page+0x80> ~ 00009980: 910083ff add sp, sp, #0x20 ~ 00009984: d65f03c0 ret -p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x98fc 0x9988 (DW_OP_breg31 0x8) clear_hyp_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:114 -i var long unsigned int (base type, DW_ATE_unsigned size:8) 0x98fc 0x9988 (DW_OP_breg31 0x0) clear_hyp_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:116 ~ 00009988: 52a0002b mov w11, #0x10000 // #65536 ~ 0000998c: b8ab0109 ldadda w11, w9, [x8] ~ 00009990: d503201f nop ~ 00009994: d503201f nop ~ 00009998: d503201f nop ~ 0000999c: 52800029 mov w9, #0x1 // #1 ~ 000099a0: 7869011f staddlh w9, [x8] 00009908 CFA:r29+16 r29:c-16 r30:c-8 ~ 000099a4: d503201f nop