I am trying to isolate the point of failure during the loading of the
Xen kernel
on my Supermicro Atom board using Gentoo. I've recently posted details
in other postings
to [xen-users].
I created a patch of apic.c and smpboot.c to help with this effort.
The patch is at: https://pastebin.com/sX2AYhM0
A log of a session where the kernel hangs after masking the 5th CPU
(there should be 7 masked) is at: https://pastebin.com/Zud6S73C
See lines 192-163.
(The pastebins are live for 30 days.)
My debugging shows that the function setup_local_APIC(void) completes
its task.
So the failure is occurring at a higher level. setup_local_APIC(void)
starts at line 524 and ends at line 691.
(Note, my patched version is from Gentoo's 4.11.1-rc1 and
has slightly different numbering since I added some lines.)
Here is a link to the function in apic.c:
https://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=xen/arch/x86/apic.c;h=2a2432619e3edce2cdbc275abbd4e80ffcdcd9f0;hb=HEAD#l524
I tried to isolate the steps up to calling function setup_local_APIC,
but my lack of knowledge of programming in C and using macros
is preventing me from completely identifying the point of failure.
I tried to determine where setup_local_APIC is called from
and inserted print statements in smpboot.c
zeta
/mnt/extra/portagetemp/portage/app-emulation/xen-4.11.1-r1/work/xen-4.11.1
# find . -type f |xargs grep -n setup_local_APIC
./xen/arch/x86/apic.c:523:void setup_local_APIC(void)
./xen/arch/x86/apic.c:1402: setup_local_APIC();
./xen/arch/x86/smpboot.c:192: Dprintk("CALLIN, before
setup_local_APIC().\n");
./xen/arch/x86/smpboot.c:194: setup_local_APIC();
./xen/arch/x86/smpboot.c:1157: setup_local_APIC();
./xen/include/asm-x86/apic.h:177:extern void setup_local_APIC (void);
zeta
/mnt/extra/portagetemp/portage/app-emulation/xen-4.11.1-r1/work/xen-4.11.1 #
However, there looks to be some sort of hook in apic.h
https://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=xen/include/asm-x86/mach-default/smpboot_hooks.h;h=14e1ee52a37d3bd779f9933047724124bfe6fd2d;hb=HEAD#l39
I am assuming that "setup_local_APIC()" is the same call to the same
function
as "setup_local_APIC(void)" and that these are two different way of
calling the same function.
Can someone help me by pointing me to the code that operates after the
completion
of setup_local_APIC(void). It appears setup_local_APIC(void) is called
in an iterative
fashion to loop through all the remaining CPUs, and I do not seem to be
able to find
that loop point if there is one. Or is there some sort of callback that
loops automatically?
Thank you.
--
Email Rider
John Laurence Poole
_______________________________________________
Xen-users mailing list
Xen-users@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-users
Xen kernel
on my Supermicro Atom board using Gentoo. I've recently posted details
in other postings
to [xen-users].
I created a patch of apic.c and smpboot.c to help with this effort.
The patch is at: https://pastebin.com/sX2AYhM0
A log of a session where the kernel hangs after masking the 5th CPU
(there should be 7 masked) is at: https://pastebin.com/Zud6S73C
See lines 192-163.
(The pastebins are live for 30 days.)
My debugging shows that the function setup_local_APIC(void) completes
its task.
So the failure is occurring at a higher level. setup_local_APIC(void)
starts at line 524 and ends at line 691.
(Note, my patched version is from Gentoo's 4.11.1-rc1 and
has slightly different numbering since I added some lines.)
Here is a link to the function in apic.c:
https://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=xen/arch/x86/apic.c;h=2a2432619e3edce2cdbc275abbd4e80ffcdcd9f0;hb=HEAD#l524
I tried to isolate the steps up to calling function setup_local_APIC,
but my lack of knowledge of programming in C and using macros
is preventing me from completely identifying the point of failure.
I tried to determine where setup_local_APIC is called from
and inserted print statements in smpboot.c
zeta
/mnt/extra/portagetemp/portage/app-emulation/xen-4.11.1-r1/work/xen-4.11.1
# find . -type f |xargs grep -n setup_local_APIC
./xen/arch/x86/apic.c:523:void setup_local_APIC(void)
./xen/arch/x86/apic.c:1402: setup_local_APIC();
./xen/arch/x86/smpboot.c:192: Dprintk("CALLIN, before
setup_local_APIC().\n");
./xen/arch/x86/smpboot.c:194: setup_local_APIC();
./xen/arch/x86/smpboot.c:1157: setup_local_APIC();
./xen/include/asm-x86/apic.h:177:extern void setup_local_APIC (void);
zeta
/mnt/extra/portagetemp/portage/app-emulation/xen-4.11.1-r1/work/xen-4.11.1 #
However, there looks to be some sort of hook in apic.h
https://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=xen/include/asm-x86/mach-default/smpboot_hooks.h;h=14e1ee52a37d3bd779f9933047724124bfe6fd2d;hb=HEAD#l39
I am assuming that "setup_local_APIC()" is the same call to the same
function
as "setup_local_APIC(void)" and that these are two different way of
calling the same function.
Can someone help me by pointing me to the code that operates after the
completion
of setup_local_APIC(void). It appears setup_local_APIC(void) is called
in an iterative
fashion to loop through all the remaining CPUs, and I do not seem to be
able to find
that loop point if there is one. Or is there some sort of callback that
loops automatically?
Thank you.
--
Email Rider
John Laurence Poole
_______________________________________________
Xen-users mailing list
Xen-users@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-users