函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:arch\x86\kernel\setup.c Create Date:2022-07-27 08:39:48
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:平台相关启动

函数原型:void __init setup_arch(char **cmdline_p)

返回类型:void

参数:

类型参数名称
char **cmdline_p
858  准备内存空间
865  准备内存空间
867  early_reserve_initrd()
876  memcpy( & common cpu data for all cpus , & cpu data as detected by the assembly code in head_32.S , cpu data as detected by the assembly code in head_32.S 的长度)
882  lone_pgd_range(pgd_t *dst, pgd_t *src, int count);* dst and src can be on the same page, but the range must not overlap,* and must not cross a page boundary.
886  load_cr3(swapper_pg_dir)
896  lush everything
906  olpc_ofw_detect()
908  dt_setup_early_traps - Initialize the idt table with early traps* On X8664 these traps do not use interrupt stacks as they can't work* before cpu_init() is invoked and sets up TSS. The IST variants are* installed after that.
909  early_cpu_init()
910  arch_init_ideal_nops()
911  jump_label_init()
912  early_ioremap_init()
914  setup_olpc_ofw_pgd()
916  ROOT_DEV等于old_decode_dev(根信息特征值)
917  screen_info = 显示信息
918  edid_info = 显示器描述
920  bios等于APM BIOS信息
921  ist_info = IST资信
923  saved_video_mode等于显示模式(0xFFFD)
924  Boot loader ID and version as integers, for the benefit of proc_dointvec 等于内核载入类型
925  如果Boot loader ID and version as integers, for the benefit of proc_dointvec 右移4位恒等于0xe则
926  Boot loader ID and version as integers, for the benefit of proc_dointvec 与等于0xf
927  Boot loader ID and version as integers, for the benefit of proc_dointvec 或等于引导程序类型加0x10左移4位
929  Boot loader ID and version as integers, for the benefit of proc_dointvec 等于Boot loader ID and version as integers, for the benefit of proc_dointvec 按位与0xf
930  Boot loader ID and version as integers, for the benefit of proc_dointvec 或等于引导程序版本左移4位
948  arch_setup()
950  end等于1ULL左移x86_phys_bits位的值减1
951  e820__memory_setup()
952  parse_setup_data()
954  copy_edd()
956  如果非启动信息设置标志root_mountflags与等于Mount read-only 的反
958  start_code等于Usage guidelines:* _text, _data: architecture specific, don't use them in arch-independent code* [_stext, _etext]: contains .text.* sections, may also contain .rodata.** and/or .init.* sections* [_sdata, _edata]: contains
959  end_code等于Usage guidelines:* _text, _data: architecture specific, don't use them in arch-independent code* [_stext, _etext]: contains .text.* sections, may also contain .rodata.** and/or .init.* sections* [_sdata, _edata]: contains
960  end_data等于_edata
961  brk等于_brk_end
963  mpx_mm_init( & init_mm)
965  start等于We need __phys_reloc_hide() here because gcc may assume that there is no* overflow during __pa() calculation and can optimize it unexpectedly.* Newer versions of gcc provide -fno-strict-overflow switch to handle this* case properly(Usage guidelines:* _text, _data: architecture specific, don't use them in arch-independent code* [_stext, _etext]: contains .text.* sections, may also contain .rodata.** and/or .init.* sections* [_sdata, _edata]: contains )
966  end等于We need __phys_reloc_hide() here because gcc may assume that there is no* overflow during __pa() calculation and can optimize it unexpectedly.* Newer versions of gcc provide -fno-strict-overflow switch to handle this* case properly(Usage guidelines:* _text, _data: architecture specific, don't use them in arch-independent code* [_stext, _etext]: contains .text.* sections, may also contain .rodata.** and/or .init.* sections* [_sdata, _edata]: contains )减1
967  start等于We need __phys_reloc_hide() here because gcc may assume that there is no* overflow during __pa() calculation and can optimize it unexpectedly.* Newer versions of gcc provide -fno-strict-overflow switch to handle this* case properly(__start_rodata)
968  end等于We need __phys_reloc_hide() here because gcc may assume that there is no* overflow during __pa() calculation and can optimize it unexpectedly.* Newer versions of gcc provide -fno-strict-overflow switch to handle this* case properly(__end_rodata)减1
969  start等于We need __phys_reloc_hide() here because gcc may assume that there is no* overflow during __pa() calculation and can optimize it unexpectedly.* Newer versions of gcc provide -fno-strict-overflow switch to handle this* case properly(_sdata)
970  end等于We need __phys_reloc_hide() here because gcc may assume that there is no* overflow during __pa() calculation and can optimize it unexpectedly.* Newer versions of gcc provide -fno-strict-overflow switch to handle this* case properly(_edata)减1
971  start等于We need __phys_reloc_hide() here because gcc may assume that there is no* overflow during __pa() calculation and can optimize it unexpectedly.* Newer versions of gcc provide -fno-strict-overflow switch to handle this* case properly(__bss_start)
972  end等于We need __phys_reloc_hide() here because gcc may assume that there is no* overflow during __pa() calculation and can optimize it unexpectedly.* Newer versions of gcc provide -fno-strict-overflow switch to handle this* case properly(__bss_stop)减1
987  长字符串复制
988  cmdline_p等于command_line
997  x86_configure_nx()
999  Relies on boot_command_line being set
1001  如果测试是否启用efi_memblock_x86_reserve_range()
1023  如果movable_node_is_enabled()则Set the allocation direction to bottom-up or top-down.
1027  x86_report_nx()
1030  memblock_x86_reserve_range_setup_data()
1032  如果acpi_mps_check()则
1036  setup_clear_cpu_cap(Onboard APIC )
1039  e820__reserve_setup_data()
1040  e820__finish_early_params()
1042  如果测试是否启用efi_init()
1045  dmi_setup()
1051  init_hypervisor_platform()
1053  tsc_early_init()
1054  probe_roms()
1057  insert_resource( & iomem_resource, & code_resource)
1058  insert_resource( & iomem_resource, & Machine setup..)
1059  insert_resource( & iomem_resource, & data_resource)
1060  insert_resource( & iomem_resource, & bss_resource)
1062  alled before trim_bios_range() to spare extra sanitize
1063  trim_bios_range()
1065  如果ppro_with_ram_bug()则
1066  e820__range_update(0x70000000ULL, 0x40000ULL, E820_TYPE_RAM, E820_TYPE_RESERVED)
1068  e820__update_table(e820_table)
1069  printk(formational "fixed physical RAM map:\n")
1070  e820__print_table("bad_ppro")
1080  duplicated to the one in bootmem.h 等于e820__end_of_ram_pfn()
1083  mtrr_bp_init()
1084  如果mtrr_trim_uncached_memory(duplicated to the one in bootmem.h )则duplicated to the one in bootmem.h 等于e820__end_of_ram_pfn()
1087  highest possible page等于duplicated to the one in bootmem.h
1094  init_cache_modes()
1100  kernel_randomize_memory()
1104  find_low_pfn_range()
1121  find_smp_config()
1123  reserve_ibft_region()
1125  early_alloc_pgt_buf()
1132  reserve_brk()
1134  cleanup_highmap()
1136  memblock_set_current_limit - Set the current allocation limit to allow* limiting allocations to what is currently* accessible during boot*@limit: New limit value (physical address)
1137  e820__memblock_setup()
1139  reserve_bios_regions()
1141  efi_fake_memmap()
1142  efi_find_mirror()
1143  efi_esrt_init()
1149  efi_reserve_boot_services()
1152  e820__memblock_alloc_reserved_mpc_new()
1159  printk(debug-level messages "initial memory mapped: [mem 0x00000000-%#010lx]\n", (max_pfn_mapped << PAGE_SHIFT determines the page size ) - 1)
1163  reserve_real_mode()
1165  Here we put platform-specific memory range workarounds, i.e.* memory known to be corrupt or otherwise in need to be reserved on* specific platforms.* If this gets used more widely it could use a real dispatch mechanism.
1166  trim_low_memory_range()
1168  init_mem_mapping()
1170  dt_setup_early_pf - Initialize the idt table with early pagefault handler* On X8664 this does not use interrupt stacks as they can't work before* cpu_init() is invoked and sets up TSS
1181  mmu_cr4_features等于__read_cr4()按位与X86_CR4_PCIDE的反
1183  memblock_set_current_limit - Set the current allocation limit to allow* limiting allocations to what is currently* accessible during boot*@limit: New limit value (physical address)
1194  日志缓冲设置
1196  如果测试是否启用
1199  打印信息("Secure boot disabled\n")
1200  退出
1202  打印信息("Secure boot enabled\n")
1203  退出
1204  默认
1205  打印信息("Secure boot could not be determined\n")
1206  退出
1210  reserve_initrd()
1212  acpi_table_upgrade()
1214  Interrupt control for vSMPowered x86_64 systems
1216  io_delay_init()
1218  early_platform_quirks()
1223  acpi_boot_table_init() and acpi_boot_init()* called from setup_arch(), always
1225  early_acpi_boot_init()
1227  initmem_init()
1228  dma_contiguous_reserve(max_pfn_mapped << PAGE_SHIFT determines the page size )
1234  reserve_crashkernel()
1236  memblock_find_dma_reserve()
1238  如果非early_xdbc_setup_hardware()则early_xdbc_register_console()
1241  pagetable_init()
1243  kasan_init()
1251  sync_initial_page_table()
1253  tboot_probe()
1255  map_vsyscall()
1257  generic_apic_probe()
1259  early_quirks()
1264  acpi_boot_init()
1265  sfi_init()
1266  x86_dtb_init()
1271  get_smp_config()
1277  _apic_mappings - initialize APIC mappings
1279  prefill_possible_map()
1281  init_cpu_to_node()
1283  io_apic_init_mappings()
1285  guest_late_init()
1287  e820__reserve_resources()
1288  e820__register_nosave_regions(duplicated to the one in bootmem.h )
1290  标准资源检查()
1292  e820__setup_pci_gap()
1302  打印平台特定信息()
1304  初始化时钟装置()
1306  mcheck_init()
1308  register_refined_jiffies(Assume we use the PIT time source for the clock tick )
1315  unwind_init()
调用者
名称描述
start_kernel启动内核