When I do in linux root shell
cat /boot/System.map-$(uname -r) it returns me segments of memory but there is a big gap around
00000000000228c0 D softnet_data 0000000000022a80 d rt_uncached_list 0000000000022ac0 d rt6_uncached_list 0000000000023000 d kvm_apic_eoi 0000000000023040 d steal_time 0000000000023080 d apf_reason 0000000000024000 D __per_cpu_end 0000000001000000 A phys_startup_64 ffffffff81000000 T _stext ffffffff81000000 T _text ffffffff81000000 T startup_64 ffffffff81000030 T secondary_startup_64 ffffffff810000e0 T verify_cpu ffffffff810001e0 T start_cpu0 ffffffff810001f0 T __startup_64 ffffffff810003f0 T pvh_start_xen
I know that after
__per_cpu_end there are some PCI devices and understand even root user wouldn't have full access due to security reasons, but what are there any switches or ways to recompile kernel to learn about this on live system, using live addresses and devices?
What exacts kinds of memory ranges are reserved and for what particular reasons ?