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



On 03/24/15 00:33, Michael van Elst wrote:
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';




That patch seems to fix the problem. I used a 7.99.5 kernel with
the above to successfully boot the machine with a NetBSD 7.0_BETA
userland. Can you commit the fix?

Cheers,
Dave


--
============================================
Phone: 07805784357
Open Source O/S: www.netbsd.org
Caving: http://www.wirralcavinggroup.org.uk
============================================



Home | Main Index | Thread Index | Old Index