> LD      .tmp_vmlinux1
> arch/x86/built-in.o: In function `microcode_init':
> microcode_core.c:(.init.text+0xaeb5): undefined reference to 
> `init_intel_microcode'
> make: *** [.tmp_vmlinux1] Error 1
>

this should not happen: if you selected any module from the kernel tree to be
built into the kernel (you did it for cpu firmware loader as it comes from
previous message), the compiled code for every module pretended to be built into
the kernel image is additively placed into built-in.o - actually the kernel tree
contains built-in.o files for every kernel component, arch, mm, drivers, net
etc. at the final build stage, all the object files are linked together
producing vmlinux elf binary. i just tried to build test kernel with built-in
firmware loader for x86 and x86_64 arches: both completed successfully

so i guess you've got error due to some inconsistencies in the kernel directory.
try it again from the scratch:

  * save somewhere out of kernel tree your current /usr/src/linux/.config
  * wipe out compeled and generated code from the kernel tree: cd
    /usr/src/linux; make mrproper
  * restore .config
  * make silentoldconfig
  * make

words below are not directly related to the case, but proper behavior is to
build cpu firmware loader as module (i presume the kernel is configured to load
and unload modules:

CONFIG_MICROCODE=m
CONFIG_MICROCODE_INTEL=y
CONFIG_MICROCODE_OLD_INTERFACE=y
CONFIG_FW_LOADER=y

  * as you probably know microcode loader runs in userspace once at boot time
    (you have to emerge sys-apps/microcode-ctl and rc-update microcode_ctl boot)
  * microcode service script /etc/init.d/microcode_ctl at start loads kernel
    module 'microcode'
  * then the script starts microcode loader (data is in sys-apps/microcode-data)
  * at the end the script unloads microcode module thus freeing kernel resources
    (loaded data remains into cpu cache until reset)

hth,
victor

Reply via email to