On Tue, 1 Jul 2025, Jan Beulich wrote:
> Sadly from this you omitted the output from the setup of the offsets
> arrays. Considering also your later reply, I'd be curious to know what
> mfn_to_pdx(0x50000000) is.
 
Full logs here, and debug patch in attachment.

(XEN) Checking for initrd in /chosen
(XEN) RAM: 0000000000000000 - 000000007fffffff
(XEN) RAM: 0000000800000000 - 000000087fffffff
(XEN) RAM: 0000050000000000 - 000005007fffffff
(XEN) RAM: 0000060000000000 - 000006007fffffff
(XEN) RAM: 0000070000000000 - 000007007fffffff
(XEN) 
(XEN) MODULE[0]: 0000000022000000 - 0000000022172fff Xen         
(XEN) MODULE[1]: 0000000022200000 - 000000002220efff Device Tree 
(XEN) MODULE[2]: 0000000020400000 - 0000000021e2ffff Kernel      
(XEN)  RESVD[0]: 0000000000000000 - 0000000000ffffff
(XEN)  RESVD[1]: 0000000001000000 - 00000000015fffff
(XEN)  RESVD[2]: 0000000001600000 - 00000000017fffff
(XEN)  RESVD[3]: 0000000001800000 - 00000000097fffff
(XEN)  RESVD[4]: 0000000009800000 - 000000000bffffff
(XEN)  RESVD[5]: 0000000011126000 - 000000001114dfff
(XEN)  RESVD[6]: 000000001114e000 - 000000001214efff
(XEN)  RESVD[7]: 0000000017275000 - 000000001729cfff
(XEN)  RESVD[8]: 000000001729d000 - 000000001829dfff
(XEN)  RESVD[9]: 000000001a7df000 - 000000001a806fff
(XEN)  RESVD[10]: 000000001a807000 - 000000001b807fff
(XEN)  RESVD[11]: 000000001d908000 - 000000001d92ffff
(XEN)  RESVD[12]: 000000001d930000 - 000000001e930fff
(XEN)  RESVD[13]: 000000001829e000 - 000000001869dfff
(XEN)  RESVD[14]: 000000001869e000 - 00000000186ddfff
(XEN)  RESVD[15]: 0000000800000000 - 000000083fffffff
(XEN) 
(XEN) 
(XEN) Command line: console=dtuart dom0_mem=2048M console_timestamps=boot debug 
bootscrub=0 vwfi=native sched=null
(XEN) [00000006bfc302ec] parameter "debug" unknown!
(XEN) [00000006bfcc0476] DEBUG init_pdx 294 start=0 end=80000000
(XEN) [00000006bfcd2400] DEBUG init_pdx 294 start=800000000 end=880000000
(XEN) [00000006bfce29ec] DEBUG init_pdx 294 start=50000000000 end=50080000000
(XEN) [00000006bfcf1768] DEBUG init_pdx 294 start=60000000000 end=60080000000
(XEN) [00000006bfd015a4] DEBUG init_pdx 294 start=70000000000 end=70080000000
(XEN) [00000006bfd1444f] DEBUG setup_mm 252
(XEN) [00000006bfd3dc6f] DEBUG setup_mm 273 start=0 size=80000000 
ram_end=80000000 directmap_base_pdx=0
(XEN) [00000006bfd5616e] DEBUG setup_directmap_mappings 229 base_mfn=0 
nr_mfns=80000 directmap_base_pdx=0 mfn_to_pdx=0
(XEN) [00000006bfd7d38a] DEBUG setup_directmap_mappings 237 base_mfn=0 
nr_mfns=80000 directmap_base_pdx=0
(XEN) [00000006bfd92728] DEBUG setup_mm 273 start=800000000 size=80000000 
ram_end=880000000 directmap_base_pdx=0
(XEN) [00000006bfdaba3b] DEBUG setup_directmap_mappings 229 base_mfn=800000 
nr_mfns=80000 directmap_base_pdx=0 mfn_to_pdx=800000
(XEN) [00000006bfdcd79c] DEBUG setup_directmap_mappings 237 base_mfn=800000 
nr_mfns=80000 directmap_base_pdx=0
(XEN) [00000006bfde4d82] DEBUG setup_mm 273 start=50000000000 size=80000000 
ram_end=50080000000 directmap_base_pdx=0
(XEN) [00000006bfdfaef0] DEBUG setup_directmap_mappings 229 base_mfn=50000000 
nr_mfns=80000 directmap_base_pdx=0 mfn_to_pdx=50000000
(XEN) [00000006bfe35249] Assertion '(mfn_to_pdx(maddr_to_mfn(ma)) - 
directmap_base_pdx) < (DIRECTMAP_SIZE >> PAGE_SHIFT)' failed at 
./arch/arm/include/asm/mmu/mm.h:72
(XEN) [00000006bfe68507] ----[ Xen-4.21-unstable  arm64  debug=y  Not tainted 
]----
(XEN) [00000006bfe766bf] CPU:    0
(XEN) [00000006bfe832e0] PC:     00000a00002da70c setup_mm+0x284/0x308
(XEN) [00000006bfea5b1a] LR:     00000a00002da6b0
(XEN) [00000006bfeb1032] SP:     00000a0000327e00
(XEN) [00000006bfebf403] CPSR:   00000000200003c9 MODE:64-bit EL2h (Hypervisor, 
handler)
(XEN) [00000006bfed4634]      X0: 0000000000000017  X1: 0000000000000000  X2: 
0000000050000000
(XEN) [00000006bfee4d11]      X3: 000000004fffffff  X4: 0000000000000020  X5: 
0000000000000000
(XEN) [00000006bfef48cf]      X6: 0000000000000000  X7: 0000000000000000  X8: 
ffffffffffffffff
(XEN) [00000006bff047ac]      X9: fefefefefefeff09 X10: 0000000000000080 X11: 
0101010101010101
(XEN) [00000006bff153b4]     X12: 0000000000000008 X13: 0000000000000009 X14: 
0000000000000030
(XEN) [00000006bff2620d]     X15: 00000a0000a00000 X16: 00000a0000291478 X17: 
0000000000000000
(XEN) [00000006bff35c41]     X18: 000000007be9bbe0 X19: 00000a0000292c40 X20: 
00000a00002ade68
(XEN) [00000006bff465a5]     X21: 0000050080000000 X22: 0000000000000000 X23: 
0000000180000000
(XEN) [00000006bff57a51]     X24: 0000000000000002 X25: 00000a0000292c50 X26: 
0000000050000000
(XEN) [00000006bff67d91]     X27: 0000000000080000 X28: 0000050000000000  FP: 
00000a0000327e00
(XEN) [00000006bff76ebe] 
(XEN) [00000006bff7c3e3]   VTCR_EL2: 0000000000000000
(XEN) [00000006bff8501a]  VTTBR_EL2: 0000000000000000
(XEN) [00000006bff8f616] 
(XEN) [00000006bff94c4a]  SCTLR_EL2: 0000000030cd183d
(XEN) [00000006bff9e3f7]    HCR_EL2: 0000000000000038
(XEN) [00000006bffaac9c]  TTBR0_EL2: 0000000022148000
(XEN) [00000006bffb6794] 
(XEN) [00000006bffbc972]    ESR_EL2: 00000000f2000001
(XEN) [00000006bffcb424]  HPFAR_EL2: 0000000000000000
(XEN) [00000006bffd7c69]    FAR_EL2: 0000000000000000
(XEN) [00000006bffe3719] 
(XEN) [00000006bffecd4b] Xen stack trace from sp=00000a0000327e00:
(XEN) [00000006bfff9321]    00000a0000327e60 00000a00002e4378 0000000022200000 
000000000000f000
(XEN) [00000006c000e3e1]    00000a0000c0a5c0 00000a0000332000 00000a0000a00000 
0000000000000000
(XEN) [00000006c001f69c]    0000000000000000 0000000000000000 0000000000000000 
000000007bff2f70
(XEN) [00000006c0031b91]    000000007be89ea0 00000a00002001a4 0000000022000000 
fffff60021e00000
(XEN) [00000006c0041c20]    0000000022200000 0000000000001710 0000000000000000 
0000000000000000
(XEN) [00000006c0052629]    0000000000000000 0000000000000000 0000000000000000 
0000000000000000
(XEN) [00000006c0065bde]    0000000000000000 0000000000000000 0000000000000000 
0000000000000000
(XEN) [00000006c00752d1]    0000000000000000 0000000000000000 0000000000000000 
0000000000000000
(XEN) [00000006c00858cc]    0000000000000000 0000000000000000 0000000000000000 
0000000000000000
(XEN) [00000006c0096b34]    0000000000000000 0000000000000000 0000000000000000 
0000000000000000
(XEN) [00000006c00a72f3]    0000000000000000 0000000000000000 0000000000000000 
0000000000000000
(XEN) [00000006c00b8357]    0000000000000000 0000000000000000 0000000000000000 
0000000000000000
(XEN) [00000006c00ce60f]    0000000000000000 0000000000000000 0000000000000000 
0000000000000000
(XEN) [00000006c00e2ee4]    0000000000000000 0000000000000000 0000000000000000 
0000000000000000
(XEN) [00000006c00f53e7]    0000000000000000 0000000000000000 0000000000000000 
0000000000000000
(XEN) [00000006c01091f3]    0000000000000000 0000000000000000 0000000000000000 
0000000000000000
(XEN) [00000006c011cd30] Xen call trace:
(XEN) [00000006c01264b7]    [<00000a00002da70c>] setup_mm+0x284/0x308 (PC)
(XEN) [00000006c01348a8]    [<00000a00002da6b0>] setup_mm+0x228/0x308 (LR)
(XEN) [00000006c0144263]    [<00000a00002e4378>] start_xen+0x118/0x9d0
(XEN) [00000006c01529c3]    [<00000a00002001a4>] 
arch/arm/arm64/head.o#primary_switched+0x4/0x24
(XEN) [00000006c0165f60] 
(XEN) [00000006c0176bd8] 
(XEN) [00000006c017c5cf] ****************************************
(XEN) [00000006c018964c] Panic on CPU 0:
(XEN) [00000006c0190b79] Assertion '(mfn_to_pdx(maddr_to_mfn(ma)) - 
directmap_base_pdx) < (DIRECTMAP_SIZE >> PAGE_SHIFT)' failed at 
./arch/arm/include/asm/mmu/mm.h:72
(XEN) [00000006c01af78d] ****************************************
diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
index 27327b11db..c1eb13219c 100644
--- a/xen/arch/arm/arm64/mmu/mm.c
+++ b/xen/arch/arm/arm64/mmu/mm.c
@@ -226,6 +226,7 @@ static void __init setup_directmap_mappings(unsigned long base_mfn,
             (base_mfn - mfn_gb) * PAGE_SIZE;
     }
 
+    printk("DEBUG %s %d base_mfn=%lx nr_mfns=%lx directmap_base_pdx=%lx mfn_to_pdx=%lx\n",__func__,__LINE__,base_mfn,nr_mfns,directmap_base_pdx,(unsigned long)mfn_to_pdx(_mfn(base_mfn)));
     if ( base_mfn < mfn_x(directmap_mfn_start) )
         panic("cannot add directmap mapping at %lx below heap start %lx\n",
               base_mfn, mfn_x(directmap_mfn_start));
@@ -233,6 +234,7 @@ static void __init setup_directmap_mappings(unsigned long base_mfn,
     rc = map_pages_to_xen((vaddr_t)__mfn_to_virt(base_mfn),
                           _mfn(base_mfn), nr_mfns,
                           PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
+    printk("DEBUG %s %d base_mfn=%lx nr_mfns=%lx directmap_base_pdx=%lx\n",__func__,__LINE__,base_mfn,nr_mfns,directmap_base_pdx);
     if ( rc )
         panic("Unable to setup the directmap mappings.\n");
 }
@@ -247,6 +249,7 @@ void __init setup_mm(void)
 
     init_pdx();
 
+    printk("DEBUG %s %d\n",__func__,__LINE__);
     /*
      * We need some memory to allocate the page-tables used for the directmap
      * mappings. But some regions may contain memory already allocated
@@ -267,19 +270,24 @@ void __init setup_mm(void)
         ram_start = min(ram_start, bank->start);
         ram_end = max(ram_end, bank_end);
 
+        printk("DEBUG %s %d start=%lx size=%lx ram_end=%lx directmap_base_pdx=%lx\n",__func__,__LINE__,bank->start,bank->size,ram_end, directmap_base_pdx);
         setup_directmap_mappings(PFN_DOWN(bank->start),
                                  PFN_DOWN(bank->size));
     }
+    printk("DEBUG %s %d\n",__func__,__LINE__);
 
     total_pages += ram_size >> PAGE_SHIFT;
 
     directmap_virt_end = XENHEAP_VIRT_START + ram_end - ram_start;
     directmap_mfn_start = maddr_to_mfn(ram_start);
     directmap_mfn_end = maddr_to_mfn(ram_end);
+    printk("DEBUG %s %d\n",__func__,__LINE__);
 
     max_page = PFN_DOWN(ram_end);
 
+    printk("DEBUG %s %d\n",__func__,__LINE__);
     init_frametable();
+    printk("DEBUG %s %d\n",__func__,__LINE__);
 
     init_staticmem_pages();
     init_sharedmem_pages();
diff --git a/xen/arch/arm/mmu/mm.c b/xen/arch/arm/mmu/mm.c
index 69617a4986..c31ef3255b 100644
--- a/xen/arch/arm/mmu/mm.c
+++ b/xen/arch/arm/mmu/mm.c
@@ -25,6 +25,7 @@ init_frametable_chunk(unsigned long pdx_s, unsigned long pdx_e)
     base_mfn = alloc_boot_pages(chunk_size >> PAGE_SHIFT, 32 << (20 - 12));
 
     virt = (unsigned long)pdx_to_page(pdx_s);
+    printk("DEBUG %s %d virt=%lx base_mfn=%lx pfn_start=%lx pfn_end=%lx\n",__func__,__LINE__,(unsigned long)virt,mfn_x(base_mfn),mfn_x(pdx_to_mfn(pdx_s)),mfn_x(pdx_to_mfn(pdx_e)));
     rc = map_pages_to_xen(virt, base_mfn, chunk_size >> PAGE_SHIFT,
                           PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
     if ( rc )
@@ -64,6 +65,7 @@ void __init init_frametable(void)
         if ( nidx >= max_idx )
             break;
 
+        printk("DEBUG %s %d start=%lx end=%lx\n",__func__,__LINE__,mfn_x(pdx_to_mfn(sidx * PDX_GROUP_COUNT)),mfn_x(pdx_to_mfn(eidx * PDX_GROUP_COUNT)));
         init_frametable_chunk(sidx * PDX_GROUP_COUNT, eidx * PDX_GROUP_COUNT);
     }
 
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index c9ad6bbab6..1f5c1866c4 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -291,6 +291,7 @@ void __init init_pdx(void)
         bank_size = mem->bank[bank].size;
         bank_end = bank_start + bank_size;
 
+        printk("DEBUG %s %d start=%lx end=%lx\n",__func__,__LINE__,bank_start,bank_end);
         set_pdx_range(paddr_to_pfn(bank_start),
                       paddr_to_pfn(bank_end));
     }

Reply via email to