in ARM64 Kernel there are Fix addresses to setup Kernel page-tables PGD(P4D), PUD, PMD and PTE. The Fix addresses are PUD-0x5C7 and PGD-0x5C8 https://elixir.bootlin.com/linux/v5.10/source/arch/arm64/include/asm/fixmap.h#L88, there is a Page-Shift in conversion from __fix_to_virt(), So the actual values are 0x5C8000 and 0x5C7000. These fix addresses don’t seem to be Physical addresses they are to get Fix Virtual addresses. Not able to find the Physical addresses associated with these Fix Virtual addresses, virt_to_phys() works on kernel logical addresses.
Is there a way to find the physical address mapping of these fix virtual addresses in kernel ?
If physical addresses is found we can check is there any mapping CMN/NOC required in u-boot.
Below is the Core-dump, Crash(Internal Error) is at __create_pgd_mapping+0x234/0x778, the instruction is ldr x1, [x27] (f9400361). The value in X27 register is 0xfffffdfffe439000 corresponds to fix address 0x5C7.
Starting kernel ...
[ 0.000000] MKCHG func:__create_pgd_mapping
[ 0.000000] MKCHG pgdp:0xffff800011439fd8
[ 0.000000] MKCHG func:alloc_init_pud
[ 0.000000] MKCHG pudp:0xfffffdfffe439ff8 fix:0x5c7
[ 0.000000] MKCHG phys:0xbfe00000 addr:0xfffffdfffe600000 end:0xfffffdfffe800000
[ 0.000000] MKCHG pupd-val:0x893f6003
[ 0.000000] MKCHG func:paging_init
[ 0.000000] MKCHG swapper_symbol:0x88aa6000
[ 0.000000] MKCHG Kernel FIX_PGD:0x5c8 virt_PGD:0xfffffdfffe438000 FIXADDR_TOP:0xfffffdfffea00000 pgdp:0xfffffdfffe438000
[ 0.000000] MKCHG PAGE_OFFSET:0xffff000000000000 PAGE_END:0xffff800000000000 PHYS_OFFSET:0x80000000
[ 0.000000] MKCHG pgdp:0xfffffdfffe438800
[ 0.000000] MKCHG pudp:0xfffffdfffe439000 fix:0x5c7
[ 0.000000] MKCHG phys:0x88000000 addr:0xffff800010000000 end:0xffff800010810000 phy addr:0x88000000 end:0x88810000
[ 0.000000] Internal error: synchronous external abort: 96000010 [#1] SMP
[ 0.000000] Modules linked in:
[ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 5.10.28 #50
[ 0.000000] Hardware name: Salina HAPS Emulation Board (DT)
[ 0.000000] pstate: 800001c5 (Nzcv dAIF -PAN -UAO -TCO BTYPE=--)
[ 0.000000] pc : __create_pgd_mapping+0x234/0x778
[ 0.000000] lr : __create_pgd_mapping+0x234/0x778
[ 0.000000] sp : ffff8000112e3c80
[ 0.000000] x29: ffff8000112e3c80 x28: fffffdfffe438800
[ 0.000000] x27: fffffdfffe439000 x26: ffff800010000000
[ 0.000000] x25: fffffdfffe438000 x24: fffffdfffe439000
[ 0.000000] x23: 0000000000000040 x22: ffff8000113fa038
[ 0.000000] x21: 0000000088000000 x20: 0000000088000000
[ 0.000000] x19: ffff800010810000 x18: ffffffffffffffff
[ 0.000000] x17: 0000000000001800 x16: 0000000000004000
[ 0.000000] x15: ffff8000112e88c8 x14: 3030313030303866
[ 0.000000] x13: 66666678303a7264 x12: 6666666678303a64
[ 0.000000] x11: 6e65203030303030 x10: 7968702030303030
[ 0.000000] x9 : 3138303130303038 x8 : ffff8000113194c8
[ 0.000000] x7 : 0000000000000001 x6 : c0000000fffffdff
[ 0.000000] x5 : 0000000000002fe8 x4 : 0000000000000000
[ 0.000000] x3 : 0000000000000000 x2 : 0000000000000000
[ 0.000000] x1 : 0000000000000000 x0 : 0000000000000067
[ 0.000000] Call trace:
[ 0.000000] __create_pgd_mapping+0x234/0x778
[ 0.000000] map_kernel_segment+0x94/0x104
[ 0.000000] paging_init+0x198/0x60c
[ 0.000000] setup_arch+0x2d8/0x6c8
[ 0.000000] start_kernel+0xa8/0x53c
[ 0.000000] Code: 910ac000 aa1303e3 aa1403e1 941f5d67 (f9400361)
I've moved your question to the Operating Systems forum
thanks
I could find the Physical address of Virtual address with Fast-Model using trace option.
Thanks.