[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-users] Help Identifying Point Of Failure: setup_local_APIC(void)


  • To: xen-users <xen-users@xxxxxxxxxxxxx>
  • From: "John L. Poole" <jlpoole56@xxxxxxxxx>
  • Date: Tue, 12 Mar 2019 11:55:36 -0700
  • Delivery-date: Tue, 12 Mar 2019 18:56:43 +0000
  • List-id: Xen user discussion <xen-users.lists.xenproject.org>

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@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-users

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.