Current-Users archive

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

Re: HP Proliant Microserver N36L fails to boot under current



dtyson%anduin.org.uk@localhost (Dave Tyson) writes:

>I have an HP Proliant Microserver (N36L) which runs fine on
>NetBSD 7.0_BETA. I tried booting it from a recent current
>AMD64 image and it crashes out.  The last few lines of the
>boot message (hand copied) are:

>extent_alloc_region: start 0xfffffffffffffff9, end 0xfffffffffffffa

>There are several changes between the two, but this change around line 940
>seems to be related:

>platform = pmf_get_platform("system-product");
>                  if (platform != NULL &&
>                      strcmp(platform, "ProLiant MicroServer") == 0) {
>                          ia->iaa_if_iospacing = 1;
>                          ia->iaa_if_iobase = pipmi->smipmi_base_address 
>- 7;
>                          ia->iaa_if_iotype = 'i';
>                          return;

>I am not sure what 'platform' is set by pmf_get_platform. I am guessing it
>will be "HP ProLiant MicroServer" and the subsequent test will fail.

>Any clues as to what the fixup if true does?


Apparently that's a quirk to fixup bad information that exists
on some machine that identifies itself as "ProLiant MicroServer".

From the panic you can see that the pipmi->smipmi_base_address value
is 0, so that subsequent code tries to map address -7..-6. A quick
fix, is probably to test the base address for a value larger than 7.

Maybe someone with a Microserver N36L that does require the quirk
can tell, what the expected base address is.

Can you try this patch?

--- ipmi.c      29 Dec 2014 14:00:26 -0000      1.60
+++ ipmi.c      24 Mar 2015 00:32:39 -0000
@@ -941,7 +941,8 @@
 
        platform = pmf_get_platform("system-product");
        if (platform != NULL &&
-           strcmp(platform, "ProLiant MicroServer") == 0) {
+           strcmp(platform, "ProLiant MicroServer") == 0 &&
+           pipmi->smipmi_base_address >= 7) {
                 ia->iaa_if_iospacing = 1;
                 ia->iaa_if_iobase = pipmi->smipmi_base_address - 7;
                 ia->iaa_if_iotype = 'i';



-- 
-- 
                                Michael van Elst
Internet: mlelstv%serpens.de@localhost
                                "A potential Snark may lurk in every tree."


Home | Main Index | Thread Index | Old Index