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

[Xen-devel] ERST problems



Hello,

When debugging ERST boot time hangs, the following debugging proved
interesting

>From a Dell Poweredge 2950 with latest BIOS:

(XEN) Enabling APIC mode:  Flat.  Using 1 I/O APICs
(XEN) ACPI: HPET id: 0x8086a201 base: 0xfed00000
(XEN) erst_init()
(XEN) Found ERST
(XEN) ERST is good
(XEN) About to exec ctx_init()
(XEN) About to exec pre map
(XEN) Starting apei_exec_for_each_entry().  ctx->entries = 15
(XEN)  .. i = 0, entry = 0xffff82c3ffd7ab48, ins = 0x3
(XEN)  .. i = 1, entry = 0xffff82c3ffd7ab68, ins = 0x3
(XEN)  .. i = 2, entry = 0xffff82c3ffd7ab88, ins = 0x3
(XEN)  .. i = 3, entry = 0xffff82c3ffd7aba8, ins = 0x3
(XEN)  .. i = 4, entry = 0xffff82c3ffd7abc8, ins = 0x2
(XEN)  .. i = 5, entry = 0xffff82c3ffd7abe8, ins = 0x3
(XEN)  .. i = 6, entry = 0xffff82c3ffd7ac08, ins = 0x3
(XEN)  .. i = 7, entry = 0xffff82c3ffd7ac28, ins = 0x3
(XEN)  .. i = 8, entry = 0xffff82c3ffd7ac48, ins = 0x1
(XEN)  .. i = 9, entry = 0xffff82c3ffd7ac68, ins = 0x0
(XEN)  .. i = 10, entry = 0xffff82c3ffd7ac88, ins = 0x0
(XEN)  .. i = 11, entry = 0xffff82c3ffd7aca8, ins = 0x2
(XEN)  .. i = 12, entry = 0xffff82c3ffd7acc8, ins = 0x0
(XEN)  .. i = 13, entry = 0xffff82c3ffd7ace8, ins = 0x3
(XEN)  .. i = 14, entry = 0xffff82c3ffd7ad08, ins = 0x3
(XEN) About to get range
(XEN) in erst_get_erange()
(XEN)   range->base = 0xffff83007fb4f0a0
(XEN)   range->size = 0xffff83007fb4f0a0
(XEN)   range->attr = 0x7fb4f0a0
(XEN) About to pre map (0xffff83007fb4f0a0, 0xffff83007fb4f0a0)
(XEN) Error -12, about to unmap gars
(XEN) Starting apei_exec_for_each_entry().  ctx->entries = 15
(XEN)  .. i = 0, entry = 0xffff82c3ffd7ab48, ins = 0x3
(XEN)   apei_post_unmap_gar(0xffff82c3ffd7ab4c)... . aok
(XEN)  .. i = 1, entry = 0xffff82c3ffd7ab68, ins = 0x3
(XEN)   apei_post_unmap_gar(0xffff82c3ffd7ab6c)... . aok
(XEN)  .. i = 2, entry = 0xffff82c3ffd7ab88, ins = 0x3
(XEN)   apei_post_unmap_gar(0xffff82c3ffd7ab8c)... .

The hang at this point turns out to be trivial mis-locking issue, and I
have submitted a patch to fix it.

However, this debugging shows that erst_get_erange() is clearly
returning junk, causing apei_pre_map() to fail.

While in this case it is easy to identify the junk size parameter as it
is far greater than the system RAM (32G), I am not sure this is
necessarily the best approach to try and validate the information.  Is
there anything else we could sensibly do?

At the very least, erst_init() should not silently ignore its failures.

~Andrew



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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