[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:


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



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