在document/arm64/memory.txt下只看到了对于4K以及64K页表的描述,也确实调通了64K,但是16K没有调通;请问各位大神,linux 4.14.y是否支持ARM64架构16K页表功能,谢谢。
这个arm64 16k页表支持应该是从4.4就开始了
https://cateee.net/lkddb/web-lkddb/ARM64_16K_PAGES.html
什么错误呢?
感谢您的回答
目前串口中没有打印错误,正常的打印(64K页表):
Create Entry Point info ...Get - EL3 Runtime Firmware BL3-1 Get - Non-Trusted Firmware BL3-3 bl33_ep->spsr = 0x3C5ATAGS [0x00000100 - 0x0000113C], 4156BytesMove bl31 img from 0x02000048 to 0x8020000, 28704 BytesStart Warm ResetingNOTICE: BL31: v1.2(debug):1de6445NOTICE: BL31: Built : 16:37:01, Jun 17 2019INFO: BL31: Initializing runtime servicesINFO: BL31: Preparing for EL3 exit to secure worldINFO: Entry point address = 0x20070a8INFO: SPSR = 0x3c5
DTB: 02c07c08 00077090 00003f70Kernel: 02008208 00080000 00bffa00booting the arm64 kernel.Booting Linux on physical CPU 0x0
正常启动打印到了arch/arm64/kernel/setup.c的void __init smp_setup_processor_id(void)函数中“Booting Linux on physical CPU 0x0”,这一句,而16K的打印只到了“booting the arm64 kernel.”这一句就卡住不动了,日志如下:
Create Entry Point info ...Get - EL3 Runtime Firmware BL3-1 Get - Non-Trusted Firmware BL3-3 bl33_ep->spsr = 0x3C5ATAGS [0x00000100 - 0x0000113C], 4156BytesMove bl31 img from 0x02000048 to 0x8020000, 28704 BytesStart Warm ResetingNOTICE: BL31: v1.2(debug):1de6445NOTICE: BL31: Built : 22:22:59, Jun 18 2019INFO: BL31: Initializing runtime servicesINFO: BL31: Preparing for EL3 exit to secure worldINFO: Entry point address = 0x20070a8INFO: SPSR = 0x3c5
DTB: 02b904a8 00077090 00003f70Kernel: 020082a8 00080000 00b88200booting the arm64 kernel.
“booting the arm64 kernel.”这句是私有代码的打印,私有代码主要做内核位置的搬移,64K的没问题,估计16K应该没有问题,问题应该还是出在了原生内核启动流程上