NetBSD-Bugs archive

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

port-amd64/38682: PCI_BUS_FIXUP is missing from amd64 port



>Number:         38682
>Category:       port-amd64
>Synopsis:       PCI_BUS_FIXUP is missing from amd64 port
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    port-amd64-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun May 18 00:55:00 +0000 2008
>Originator:     Jared D. McNeill
>Release:        NetBSD 4.99.63
>Organization:
        
>Environment:
        
        
System: NetBSD black.invisible.ca 4.99.63 NetBSD 4.99.63 (GENERIC) #3: Sat May 
17 11:37:45 EDT 2008 
jmcneill%black.invisible.ca@localhost:/export/home/jmcneill/branches/HEAD/src/sys/arch/amd64/compile/GENERIC
 amd64
Architecture: x86_64
Machine: amd64
>Description:
        On Thinkpad T61, PCI_BUS_FIXUP is required to activate pci6 and
        the following devices attached to it:
          cbb
          fwohci
          sdmmc

        Without PCI_BUS_FIXUP, pci6 reports:
          pci6: i/o space enabled

        Memory space accesses need to be enabled on the bridge for these
        devices to function properly.
>How-To-Repeat:
        
>Fix:
        I am currently using the following patch as a workaround:

--- pci.c       5 May 2008 20:14:30 -0000       1.117
+++ pci.c       18 May 2008 00:52:04 -0000
@@ -322,6 +323,16 @@
        if ((csr & PCI_COMMAND_MEM_ENABLE) == 0)
                pa.pa_flags &= ~PCI_FLAGS_MEM_ENABLED;
 
+       if (PCI_CLASS(pa.pa_class) == PCI_CLASS_BRIDGE &&
+           (pa.pa_flags & PCI_FLAGS_MEM_ENABLED) == 0 &&
+           (pa.pa_flags & PCI_FLAGS_IO_ENABLED) != 0) {
+               csr |= PCI_COMMAND_MEM_ENABLE;
+               pa.pa_flags |= PCI_FLAGS_MEM_ENABLED;
+               aprint_normal("PCI: Enabling MEM access in CSR\n");
+               pci_conf_write(pc, tag, PCI_COMMAND_STATUS_REG,
+                   csr | PCI_COMMAND_MEM_ENABLE);
+       }
+
        /*
         * If the cache line size is not configured, then
         * clear the MRL/MRM/MWI command-ok flags.

>Unformatted:
        
        


Home | Main Index | Thread Index | Old Index