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