diff options
author | Guoli Shu <Kerry.Shu@Sun.COM> | 2010-02-26 14:43:02 -0800 |
---|---|---|
committer | Guoli Shu <Kerry.Shu@Sun.COM> | 2010-02-26 14:43:02 -0800 |
commit | 137632774395dba0eb9b77257da1d8732bd5413d (patch) | |
tree | 99b8dac9809db6f022215d7bc144433e2d765c8e /usr/src | |
parent | 01c73555ce1d4d0545b81c33854efdb2ffb1e5dc (diff) | |
download | illumos-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.c | 8 | ||||
-rw-r--r-- | usr/src/uts/i86pc/os/pci_cfgspace.c | 10 | ||||
-rw-r--r-- | usr/src/uts/i86pc/sys/pci_cfgspace_impl.h | 5 |
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 |