Help Identifying Point Of Failure: setup_local_APIC(void)

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Help Identifying Point Of Failure: setup_local_APIC(void)

John L. Poole
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
[hidden email]
https://lists.xenproject.org/mailman/listinfo/xen-users