函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:arch\x86\kernel\mpparse.c Create Date:2022-07-27 09:25:43
Last Modify:2020-03-16 21:44:10 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:update_mp_table

函数原型:static int __init update_mp_table(void)

返回类型:int

参数:

862  如果非enable_update_mptable则返回:0
865  如果非mpf_found则返回:0
868  mpf等于early_memremap(mpf_base, mpf的长度)
869  如果非mpf
870  打印错误信息("MPTABLE: mpf early_memremap() failed\n")
871  返回:0
877  如果Standard or configuration ? 则转到:do_unmap_mpf
880  如果非Configuration table address 则转到:do_unmap_mpf
883  size等于get_mpc_size(Configuration table address )
884  mpc等于early_memremap(Configuration table address , size)
885  如果非mpc
886  打印错误信息("MPTABLE: mpc early_memremap() failed\n")
887  转到:do_unmap_mpf
890  如果非Read/parse the MPC则转到:do_unmap_mpc
893  打印信息("mpf: %llx\n", (u64)mpf_base)
894  打印信息("physptr: %x\n", Configuration table address )
896  如果mpc_new_phys Size of table 大于mpc_new_length
897  mpc_new_phys等于0
898  打印信息("mpc_new_length is %ld, please use alloc_mptable=8k\n", mpc_new_length)
902  如果非mpc_new_phys
905  checksum等于0
906  old等于Checksum an MP configuration block.
907  checksum等于0xff
908  new等于Checksum an MP configuration block.
909  如果old恒等于new
910  打印信息("mpc is readonly, please try alloc_mptable instead\n")
911  转到:do_unmap_mpc
913  打印信息("use in-position replacing\n")
914  否则
915  mpc_new等于early_memremap(mpc_new_phys, mpc_new_length)
916  如果非mpc_new
917  打印错误信息("MPTABLE: new mpc early_memremap() failed\n")
918  转到:do_unmap_mpc
920  Configuration table address 等于mpc_new_phys
921  memcpy(mpc_new, mpc, Size of table )
922  early_memunmap(mpc, size)
923  mpc等于mpc_new
924  size等于mpc_new_length
929  mpf_new等于early_memremap(0x400 - 16, mpf_new的长度)
930  如果非mpf_new
931  打印错误信息("MPTABLE: new mpf early_memremap() failed\n")
932  转到:do_unmap_mpc
934  打印信息("mpf new: %x\n", 0x400 - 16)
935  memcpy(mpf_new, mpf, 16)
936  early_memunmap(mpf, mpf的长度)
937  mpf等于mpf_new
940  Checksum (makes sum 0) 等于0
941  Checksum (makes sum 0) 减等于Checksum an MP configuration block.
942  打印信息("physptr new: %x\n", Configuration table address )
951  replace_intsrc_all(mpc, mpc_new_phys, mpc_new_length)
953  do_unmap_mpc :
954  early_memunmap(mpc, size)
956  do_unmap_mpf :
957  early_memunmap(mpf, mpf的长度)
959  返回:0