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