NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: port-amd64/48451: NMI ... going to debugger at install -> bge BCM5717
(2013/12/16 4:25), eirsch%yahoo.de@localhost wrote:
>> Number: 48451
>> Category: port-amd64
>> Synopsis: NMI ... going to debugger at install -> bge BCM5717
>> Confidential: no
>> Severity: non-critical
>> Priority: low
>> Responsible: port-amd64-maintainer
>> State: open
>> Class: sw-bug
>> Submitter-Id: net
>> Arrival-Date: Sun Dec 15 19:25:00 +0000 2013
>> Originator: Erik Irsch
>> Release: NetBSD-6.99.28
>> Organization:
>> Environment:
> AMD64 - uname -a not possible because of stop to DB at boot.
>> Description:
> Hi,
>
> on a HP ML310 Gen8 server with a internal dual port HP 330i (Broadcom
> BMC5717) the installer dropped at boot to the kernel debugger. The last
> lines seen on the screen were:
>
> bge0: interrupting at ioapic8 pin 16
> NMI ... going to debugger
> Stopped in pid 0.1 (system) at netbsd:bus_space_read4+0xa: ret
> db(0)
>
> The server booted fine with NetBSD 6.1.2 but there are messages about unknown
> bge chipset BMC5717 when doing ifconfig.
>
> I tried "current" because there were commits that shows that this nic should
> be added there. So I would be happy to help in fixing this problem
>
>> How-To-Repeat:
>
> Boot these current version with option 1 or option 2 an a HP ML310 Gen8 with
> 330i dual port network card.
>
>
>> Fix:
I got HP microserver Gen8 and it had the same problem.
The following patch fixes the problem.
Index: pci_map.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/pci_map.c,v
retrieving revision 1.30
diff -u -p -r1.30 pci_map.c
--- pci_map.c 20 Oct 2012 06:03:38 -0000 1.30
+++ pci_map.c 7 May 2014 22:12:32 -0000
@@ -291,20 +291,22 @@ pci_mapreg_submap(const struct pci_attac
bus_space_handle_t handle;
bus_addr_t base;
bus_size_t size;
+#if 0
int flags;
+#endif
if (PCI_MAPREG_TYPE(type) == PCI_MAPREG_TYPE_IO) {
if ((pa->pa_flags & PCI_FLAGS_IO_OKAY) == 0)
return 1;
if (pci_io_find(pa->pa_pc, pa->pa_tag, reg, type, &base,
- &size, &flags))
+ &size, NULL)) /* XXX was &flags */
return 1;
tag = pa->pa_iot;
} else {
if ((pa->pa_flags & PCI_FLAGS_MEM_OKAY) == 0)
return 1;
if (pci_mem_find(pa->pa_pc, pa->pa_tag, reg, type, &base,
- &size, &flags))
+ &size, NULL)) /* XXX was &flags */
return 1;
tag = pa->pa_memt;
}
@@ -329,9 +331,13 @@ pci_mapreg_submap(const struct pci_attac
if ((maxsize < size && offset + maxsize <= size) || offset != 0)
return 1;
-
+#if 0
if (bus_space_map(tag, base, maxsize, busflags | flags, &handle))
return 1;
+#else
+ if (bus_space_map(tag, base, maxsize, busflags, &handle))
+ return 1;
+#endif
if (tagp != NULL)
*tagp = tag;
For BCM5717, 18, 19 and 20, the prefechable bit in BAR register
is set. The above patch ignore the bit.
I won't commit this change because I think this change is NOT a
right solution. I'm now checking our pci code and other OS's code.
--
-----------------------------------------------
SAITOH Masanobu (msaitoh%execsw.org@localhost
msaitoh%netbsd.org@localhost)
Home |
Main Index |
Thread Index |
Old Index