函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:generic_load_microcode

函数原型:static enum ucode_state generic_load_microcode(int cpu, struct iov_iter *iter)

返回类型:enum ucode_state

参数:

类型参数名称
intcpu
struct iov_iter *iter
864  uci等于ucode_cpu_infocpu
865  curr_mc_size等于0, new_mc_size等于0
866  ret等于UCODE_OK
867  new_rev等于rev
868  u8 * new_mc = NULL, * mc = NULL
871 iov_iter_count(iter)循环
876  如果非copy_from_iter_full( & mc_header, mc_header的长度, iter)则
877  打印错误信息("error! Truncated or inaccessible header in microcode data file\n")
878  退出
881  mc_size等于get_totalsize( & mc_header)
882  如果mc_size小于mc_header的长度则
883  打印错误信息("error! Bad data in microcode data file (totalsize too small)\n")
884  退出
886  data_size等于mc_sizemc_header的长度
887  如果data_size大于iov_iter_count(iter)则
888  打印错误信息("error! Bad data in microcode data file (truncated file?)\n")
889  退出
893  如果非mcmc_size大于curr_mc_size
894  vfree(mc)
895  mc等于vmalloc(mc_size)
896  如果非mc退出
898  curr_mc_size等于mc_size
901  memcpy(mc, & mc_header, mc_header的长度)
902  data等于mcmc_header的长度
903  如果非copy_from_iter_full(data, data_size, iter)或microcode_sanity_check(mc, 1)小于0则
905  退出
908  csig等于sig
909  cpf等于pf
911  vfree(new_mc)
912  new_rev等于rev
913  new_mc等于mc
914  new_mc_size等于mc_size
915  mc = NULL
916  ret等于UCODE_NEW
920  vfree(mc)
922  如果iov_iter_count(iter)则
923  vfree(new_mc)
924  返回:UCODE_ERROR
927  如果非new_mc则返回:UCODE_NFOUND
930  vfree(mc)
931  mc等于new_mc
938  Save this microcode patch. It will be loaded early when a CPU is* hot-added or resumes.
940  pr_debug("CPU%d found a matching microcode update with version 0x%x (current=0x%x)\n", cpu, new_rev, rev)
943  返回:ret
调用者
名称描述
request_microcode_fw
request_microcode_user