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';