summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorGuoli Shu <Kerry.Shu@Sun.COM>2010-02-26 14:43:02 -0800
committerGuoli Shu <Kerry.Shu@Sun.COM>2010-02-26 14:43:02 -0800
commit137632774395dba0eb9b77257da1d8732bd5413d (patch)
tree99b8dac9809db6f022215d7bc144433e2d765c8e /usr/src
parent01c73555ce1d4d0545b81c33854efdb2ffb1e5dc (diff)
downloadillumos-gate-137632774395dba0eb9b77257da1d8732bd5413d.tar.gz
6915132 osol_130 panic deadman: timed out after 50 seconds of clock inactivity
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/i86pc/os/pci_cfgacc_x86.c8
-rw-r--r--usr/src/uts/i86pc/os/pci_cfgspace.c10
-rw-r--r--usr/src/uts/i86pc/sys/pci_cfgspace_impl.h5
3 files changed, 15 insertions, 8 deletions
diff --git a/usr/src/uts/i86pc/os/pci_cfgacc_x86.c b/usr/src/uts/i86pc/os/pci_cfgacc_x86.c
index 0943a8d9de..184e41d6ed 100644
--- a/usr/src/uts/i86pc/os/pci_cfgacc_x86.c
+++ b/usr/src/uts/i86pc/os/pci_cfgacc_x86.c
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -158,9 +158,9 @@ pci_cfgacc_mmio(pci_cfgacc_req_t *req)
paddr = (paddr_t)req->bdf << 12;
paddr += mcfg_mem_base + req->offset;
- mutex_enter(&pcicfg_mutex);
+ mutex_enter(&pcicfg_mmio_mutex);
if ((vaddr = pci_cfgacc_map(paddr)) == NULL) {
- mutex_exit(&pcicfg_mutex);
+ mutex_exit(&pcicfg_mmio_mutex);
return (DDI_FAILURE);
}
@@ -193,7 +193,7 @@ pci_cfgacc_mmio(pci_cfgacc_req_t *req)
rval = DDI_FAILURE;
}
pci_cfgacc_unmap();
- mutex_exit(&pcicfg_mutex);
+ mutex_exit(&pcicfg_mmio_mutex);
return (rval);
}
diff --git a/usr/src/uts/i86pc/os/pci_cfgspace.c b/usr/src/uts/i86pc/os/pci_cfgspace.c
index 9f11cb9c9d..cf93bfeff0 100644
--- a/usr/src/uts/i86pc/os/pci_cfgspace.c
+++ b/usr/src/uts/i86pc/os/pci_cfgspace.c
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -91,9 +91,12 @@ static int pci_check_bios(void);
static int pci_get_cfg_type(void);
#endif
-/* all config-space access routines share this one... */
+/* for legacy io-based config space access */
kmutex_t pcicfg_mutex;
+/* for mmio-based config space access */
+kmutex_t pcicfg_mmio_mutex;
+
/* ..except Orion and Neptune, which have to have their own */
kmutex_t pcicfg_chipset_mutex;
@@ -102,10 +105,13 @@ pci_cfgspace_init(void)
{
mutex_init(&pcicfg_mutex, NULL, MUTEX_SPIN,
(ddi_iblock_cookie_t)ipltospl(15));
+ mutex_init(&pcicfg_mmio_mutex, NULL, MUTEX_SPIN,
+ (ddi_iblock_cookie_t)ipltospl(DISP_LEVEL));
mutex_init(&pcicfg_chipset_mutex, NULL, MUTEX_SPIN,
(ddi_iblock_cookie_t)ipltospl(15));
if (!pci_check()) {
mutex_destroy(&pcicfg_mutex);
+ mutex_destroy(&pcicfg_mmio_mutex);
mutex_destroy(&pcicfg_chipset_mutex);
}
}
diff --git a/usr/src/uts/i86pc/sys/pci_cfgspace_impl.h b/usr/src/uts/i86pc/sys/pci_cfgspace_impl.h
index 34680632f8..76cc353f1c 100644
--- a/usr/src/uts/i86pc/sys/pci_cfgspace_impl.h
+++ b/usr/src/uts/i86pc/sys/pci_cfgspace_impl.h
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -101,9 +101,10 @@ extern uint8_t mcfg_bus_start;
extern uint8_t mcfg_bus_end;
/*
- * Mutex for all pci config space routines to share
+ * Mutexes for pci config space routines
*/
extern kmutex_t pcicfg_mutex;
+extern kmutex_t pcicfg_mmio_mutex;
/*
* Orion/Neptune cfg access wraps mech1 cfg access, so needs a separate mutex