En el kernel-5.4, no se muestra el símbolo de la función, solo se muestra la dirección de la función en initcall_debug.
en kernel-5.4, solo se muestra la dirección de la función en lugar del símbolo de la función en initcall_debug
Paso 1.
agregar initcall_debug=1 printk.time=1 al cmdline
Paso 2
Iniciar el dispositivo y verificar el dmesg
kernel-5.4
[ 0.007250] llamando a 0xffffffc01009e9ec @ 1
[ 0.007377] initcall 0xffffffc01009e9ec devolvió 0 después de 119 usecs
[ 0.007382] llamando a 0xffffffc01009e404 @ 1
[ 0.007388] initcall 0xffffffc01009e404 devolvió 0 después de 1 usecs
kernel-4.14
[ 0.014307] llamando a spawn_ksoftirqd+0x0/0x5c @ 1
[ 0.016416] initcall spawn_ksoftirqd+0x0/0x5c devolvió 0 después de 2053 usecs
[ 0.016421] llamando a migration_init+0x0/0x74 @ 1
[ 0.016426] initcall migration_init+0x0/0x74 devolvió 0 después de 0 usecs
código initcall kernel 4.14
printk(KERN_DEBUG "initcall %pF devolvió %d después de %lld usecs\n", fn, ret, duration);
código initcall kernel 5.4
printk(KERN_DEBUG "initcall %pS devolvió %d después de %lld usecs\n", fn, ret, duration);
La diferencia está en %pF vs %pS
¿Por qué el kernel 5.4 no puede imprimir los símbolos de las funciones?
Ya tengo CONFIG_KALLSYMS=y
davy.ai
La razón por la cual el kernel 5.4 no puede imprimir símbolos de función es porque el especificador de formato %pF ya no está disponible en versiones más recientes del kernel. En su lugar, se utiliza %pS para imprimir las direcciones de las funciones. Este cambio se realizó para mejorar la seguridad del kernel al evitar la divulgación de direcciones del kernel a través de nombres de símbolos. Configurar CONFIG_KALLSYMS=y permite al kernel imprimir nuevamente los nombres de los símbolos, pero puede comprometer la seguridad.