summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/io')
-rw-r--r--usr/src/uts/common/io/aac/aac.c14
-rw-r--r--usr/src/uts/common/io/aac/aac.h1
-rw-r--r--usr/src/uts/common/io/audio/drv/audio1575/audio1575.c5
-rw-r--r--usr/src/uts/common/io/bge/bge_main2.c7
-rw-r--r--usr/src/uts/common/io/bge/bge_recv2.c19
-rw-r--r--usr/src/uts/common/io/e1000g/e1000g_alloc.c13
-rw-r--r--usr/src/uts/common/io/e1000g/e1000g_main.c8
-rw-r--r--usr/src/uts/common/io/e1000g/e1000g_sw.h2
-rw-r--r--usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_solaris.c2
-rw-r--r--usr/src/uts/common/io/hxge/hxge_fm.c8
-rw-r--r--usr/src/uts/common/io/hxge/hxge_main.c8
-rw-r--r--usr/src/uts/common/io/ib/adapters/hermon/hermon.c2
-rw-r--r--usr/src/uts/common/io/igb/igb_buf.c13
-rw-r--r--usr/src/uts/common/io/igb/igb_main.c8
-rw-r--r--usr/src/uts/common/io/igb/igb_sw.h2
-rw-r--r--usr/src/uts/common/io/ixgbe/ixgbe_buf.c11
-rw-r--r--usr/src/uts/common/io/ixgbe/ixgbe_main.c8
-rw-r--r--usr/src/uts/common/io/ixgbe/ixgbe_sw.h2
-rw-r--r--usr/src/uts/common/io/mega_sas/megaraid_sas.c10
-rw-r--r--usr/src/uts/common/io/mr_sas/mr_sas.c6
-rw-r--r--usr/src/uts/common/io/nxge/nxge_fm.c8
-rw-r--r--usr/src/uts/common/io/nxge/nxge_main.c8
-rw-r--r--usr/src/uts/common/io/pciex/pcieb.c6
-rw-r--r--usr/src/uts/common/io/pciex/pcieb.h1
-rw-r--r--usr/src/uts/common/io/scsi/adapters/mpt_sas/mptsas.c12
-rw-r--r--usr/src/uts/common/io/scsi/adapters/pmcs/pmcs_attach.c8
-rw-r--r--usr/src/uts/common/io/yge/yge.c3
27 files changed, 90 insertions, 105 deletions
diff --git a/usr/src/uts/common/io/aac/aac.c b/usr/src/uts/common/io/aac/aac.c
index d5c8990679..1f99997a8e 100644
--- a/usr/src/uts/common/io/aac/aac.c
+++ b/usr/src/uts/common/io/aac/aac.c
@@ -610,9 +610,10 @@ static struct aac_interface aac_rkt_interface = {
};
ddi_device_acc_attr_t aac_acc_attr = {
- DDI_DEVICE_ATTR_V0,
+ DDI_DEVICE_ATTR_V1,
DDI_STRUCTURE_LE_ACC,
- DDI_STRICTORDER_ACC
+ DDI_STRICTORDER_ACC,
+ DDI_DEFAULT_ACC
};
static struct {
@@ -785,6 +786,7 @@ aac_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
softs->buf_dma_attr = softs->addr_dma_attr = aac_dma_attr;
softs->addr_dma_attr.dma_attr_granular = 1;
softs->acc_attr = aac_acc_attr;
+ softs->reg_attr = aac_acc_attr;
softs->card = AAC_UNKNOWN_CARD;
#ifdef DEBUG
softs->debug_flags = aac_debug_flags;
@@ -805,7 +807,7 @@ aac_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
/* Map PCI mem space */
if (ddi_regs_map_setup(dip, 1,
(caddr_t *)&softs->pci_mem_base_vaddr, 0,
- softs->map_size_min, &softs->acc_attr,
+ softs->map_size_min, &softs->reg_attr,
&softs->pci_mem_handle) != DDI_SUCCESS)
goto error;
@@ -2289,7 +2291,7 @@ aac_check_firmware(struct aac_softstate *softs)
/* read out and save PCI MBR */
if ((atu_size > softs->map_size) &&
(ddi_regs_map_setup(softs->devinfo_p, 1,
- (caddr_t *)&data, 0, atu_size, &softs->acc_attr,
+ (caddr_t *)&data, 0, atu_size, &softs->reg_attr,
&pci_handle) == DDI_SUCCESS)) {
ddi_regs_map_free(&softs->pci_mem_handle);
softs->pci_mem_handle = pci_handle;
@@ -6461,7 +6463,7 @@ aac_fm_init(struct aac_softstate *softs)
/* Only register with IO Fault Services if we have some capability */
if (softs->fm_capabilities) {
/* Adjust access and dma attributes for FMA */
- softs->acc_attr.devacc_attr_access |= DDI_FLAGERR_ACC;
+ softs->reg_attr.devacc_attr_access = DDI_FLAGERR_ACC;
softs->addr_dma_attr.dma_attr_flags |= DDI_DMA_FLAGERR;
softs->buf_dma_attr.dma_attr_flags |= DDI_DMA_FLAGERR;
@@ -6519,7 +6521,7 @@ aac_fm_fini(struct aac_softstate *softs)
ddi_fm_fini(softs->devinfo_p);
/* Adjust access and dma attributes for FMA */
- softs->acc_attr.devacc_attr_access &= ~DDI_FLAGERR_ACC;
+ softs->reg_attr.devacc_attr_access = DDI_DEFAULT_ACC;
softs->addr_dma_attr.dma_attr_flags &= ~DDI_DMA_FLAGERR;
softs->buf_dma_attr.dma_attr_flags &= ~DDI_DMA_FLAGERR;
}
diff --git a/usr/src/uts/common/io/aac/aac.h b/usr/src/uts/common/io/aac/aac.h
index 0fbe38d7c3..25f6b67c83 100644
--- a/usr/src/uts/common/io/aac/aac.h
+++ b/usr/src/uts/common/io/aac/aac.h
@@ -296,6 +296,7 @@ struct aac_softstate {
/* PCI spaces */
ddi_device_acc_attr_t acc_attr;
+ ddi_device_acc_attr_t reg_attr;
ddi_acc_handle_t pci_mem_handle;
uint8_t *pci_mem_base_vaddr;
uint32_t pci_mem_base_paddr;
diff --git a/usr/src/uts/common/io/audio/drv/audio1575/audio1575.c b/usr/src/uts/common/io/audio/drv/audio1575/audio1575.c
index 34e8a4a150..906ba10903 100644
--- a/usr/src/uts/common/io/audio/drv/audio1575/audio1575.c
+++ b/usr/src/uts/common/io/audio/drv/audio1575/audio1575.c
@@ -1370,11 +1370,6 @@ audio1575_map_regs(audio1575_state_t *statep)
{
dev_info_t *dip = statep->dip;
- /* Check for fault management capabilities */
- if (DDI_FM_ACC_ERR_CAP(ddi_fm_capable(dip))) {
- dev_attr.devacc_attr_access = DDI_FLAGERR_ACC;
- }
-
/* map the M1575 Audio PCI Cfg Space */
if (pci_config_setup(dip, &statep->pcih) != DDI_SUCCESS) {
audio_dev_warn(statep->adev, "PCI config map failure");
diff --git a/usr/src/uts/common/io/bge/bge_main2.c b/usr/src/uts/common/io/bge/bge_main2.c
index 870d3c9a5c..92c2b80378 100644
--- a/usr/src/uts/common/io/bge/bge_main2.c
+++ b/usr/src/uts/common/io/bge/bge_main2.c
@@ -81,7 +81,7 @@ static ddi_dma_attr_t dma_attr = {
* PIO access attributes for registers
*/
static ddi_device_acc_attr_t bge_reg_accattr = {
- DDI_DEVICE_ATTR_V0,
+ DDI_DEVICE_ATTR_V1,
DDI_NEVERSWAP_ACC,
DDI_STRICTORDER_ACC,
DDI_FLAGERR_ACC
@@ -93,8 +93,7 @@ static ddi_device_acc_attr_t bge_reg_accattr = {
static ddi_device_acc_attr_t bge_desc_accattr = {
DDI_DEVICE_ATTR_V0,
DDI_NEVERSWAP_ACC,
- DDI_STRICTORDER_ACC,
- DDI_FLAGERR_ACC
+ DDI_STRICTORDER_ACC
};
/*
@@ -2926,7 +2925,6 @@ bge_fm_init(bge_t *bgep)
/* Only register with IO Fault Services if we have some capability */
if (bgep->fm_capabilities) {
bge_reg_accattr.devacc_attr_access = DDI_FLAGERR_ACC;
- bge_desc_accattr.devacc_attr_access = DDI_FLAGERR_ACC;
dma_attr.dma_attr_flags = DDI_DMA_FLAGERR;
/* Register capabilities with IO Fault Services */
@@ -2951,7 +2949,6 @@ bge_fm_init(bge_t *bgep)
* FMA capabilities at runtime.
*/
bge_reg_accattr.devacc_attr_access = DDI_DEFAULT_ACC;
- bge_desc_accattr.devacc_attr_access = DDI_DEFAULT_ACC;
dma_attr.dma_attr_flags = 0;
}
}
diff --git a/usr/src/uts/common/io/bge/bge_recv2.c b/usr/src/uts/common/io/bge/bge_recv2.c
index 2c8bb20f71..fb8e1fa881 100644
--- a/usr/src/uts/common/io/bge/bge_recv2.c
+++ b/usr/src/uts/common/io/bge/bge_recv2.c
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -361,6 +361,21 @@ bge_poll_ring(void *arg, int bytes_to_pickup)
* before accepting the packets they describe
*/
DMA_SYNC(rrp->desc, DDI_DMA_SYNC_FORKERNEL);
+ if (*rrp->prod_index_p >= rrp->desc.nslots) {
+ bgep->bge_chip_state = BGE_CHIP_ERROR;
+ bge_fm_ereport(bgep, DDI_FM_DEVICE_INVAL_STATE);
+ mutex_exit(rrp->rx_lock);
+ return (NULL);
+ }
+ if (bge_check_dma_handle(bgep, rrp->desc.dma_hdl) != DDI_FM_OK) {
+ rrp->rx_next = *rrp->prod_index_p;
+ bge_mbx_put(bgep, rrp->chip_mbx_reg, rrp->rx_next);
+ bgep->bge_dma_error = B_TRUE;
+ bgep->bge_chip_state = BGE_CHIP_ERROR;
+ mutex_exit(rrp->rx_lock);
+ return (NULL);
+ }
+
hw_rbd_p = DMA_VPTR(rrp->desc);
head = NULL;
tail = &head;
@@ -377,6 +392,8 @@ bge_poll_ring(void *arg, int bytes_to_pickup)
}
bge_mbx_put(bgep, rrp->chip_mbx_reg, rrp->rx_next);
+ if (bge_check_acc_handle(bgep, bgep->io_handle) != DDI_FM_OK)
+ bgep->bge_chip_state = BGE_CHIP_ERROR;
mutex_exit(rrp->rx_lock);
return (head);
}
diff --git a/usr/src/uts/common/io/e1000g/e1000g_alloc.c b/usr/src/uts/common/io/e1000g/e1000g_alloc.c
index 59c7bf8c61..0649101d52 100644
--- a/usr/src/uts/common/io/e1000g/e1000g_alloc.c
+++ b/usr/src/uts/common/io/e1000g/e1000g_alloc.c
@@ -20,7 +20,7 @@
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms of the CDDLv1.
+ * Use is subject to license terms.
*/
/*
@@ -79,8 +79,7 @@ static p_rx_sw_packet_t e1000g_alloc_rx_sw_packet(e1000g_rx_data_t *,
static ddi_device_acc_attr_t e1000g_desc_acc_attr = {
DDI_DEVICE_ATTR_V0,
DDI_STRUCTURE_LE_ACC,
- DDI_STRICTORDER_ACC,
- DDI_FLAGERR_ACC
+ DDI_STRICTORDER_ACC
};
/* DMA access attributes for DMA buffers */
@@ -1504,14 +1503,8 @@ e1000g_release_dma_resources(struct e1000g *Adapter)
/* ARGSUSED */
void
-e1000g_set_fma_flags(struct e1000g *Adapter, int acc_flag, int dma_flag)
+e1000g_set_fma_flags(int dma_flag)
{
- if (acc_flag) {
- e1000g_desc_acc_attr.devacc_attr_access = DDI_FLAGERR_ACC;
- } else {
- e1000g_desc_acc_attr.devacc_attr_access = DDI_DEFAULT_ACC;
- }
-
if (dma_flag) {
e1000g_tx_dma_attr.dma_attr_flags = DDI_DMA_FLAGERR;
e1000g_buf_dma_attr.dma_attr_flags = DDI_DMA_FLAGERR;
diff --git a/usr/src/uts/common/io/e1000g/e1000g_main.c b/usr/src/uts/common/io/e1000g/e1000g_main.c
index 8f61fc231b..5140704cc8 100644
--- a/usr/src/uts/common/io/e1000g/e1000g_main.c
+++ b/usr/src/uts/common/io/e1000g/e1000g_main.c
@@ -224,7 +224,7 @@ static struct modlinkage modlinkage = {
/* Access attributes for register mapping */
static ddi_device_acc_attr_t e1000g_regs_acc_attr = {
- DDI_DEVICE_ATTR_V0,
+ DDI_DEVICE_ATTR_V1,
DDI_STRUCTURE_LE_ACC,
DDI_STRICTORDER_ACC,
DDI_FLAGERR_ACC
@@ -5975,15 +5975,13 @@ static void
e1000g_fm_init(struct e1000g *Adapter)
{
ddi_iblock_cookie_t iblk;
- int fma_acc_flag, fma_dma_flag;
+ int fma_dma_flag;
/* Only register with IO Fault Services if we have some capability */
if (Adapter->fm_capabilities & DDI_FM_ACCCHK_CAPABLE) {
e1000g_regs_acc_attr.devacc_attr_access = DDI_FLAGERR_ACC;
- fma_acc_flag = 1;
} else {
e1000g_regs_acc_attr.devacc_attr_access = DDI_DEFAULT_ACC;
- fma_acc_flag = 0;
}
if (Adapter->fm_capabilities & DDI_FM_DMACHK_CAPABLE) {
@@ -5992,7 +5990,7 @@ e1000g_fm_init(struct e1000g *Adapter)
fma_dma_flag = 0;
}
- (void) e1000g_set_fma_flags(Adapter, fma_acc_flag, fma_dma_flag);
+ (void) e1000g_set_fma_flags(fma_dma_flag);
if (Adapter->fm_capabilities) {
diff --git a/usr/src/uts/common/io/e1000g/e1000g_sw.h b/usr/src/uts/common/io/e1000g/e1000g_sw.h
index a05c5239c8..854183a728 100644
--- a/usr/src/uts/common/io/e1000g/e1000g_sw.h
+++ b/usr/src/uts/common/io/e1000g/e1000g_sw.h
@@ -1044,7 +1044,7 @@ void e1000_enable_pciex_master(struct e1000_hw *hw);
int e1000g_check_acc_handle(ddi_acc_handle_t handle);
int e1000g_check_dma_handle(ddi_dma_handle_t handle);
void e1000g_fm_ereport(struct e1000g *Adapter, char *detail);
-void e1000g_set_fma_flags(struct e1000g *Adapter, int acc_flag, int dma_flag);
+void e1000g_set_fma_flags(int dma_flag);
int e1000g_reset_link(struct e1000g *Adapter);
/*
diff --git a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_solaris.c b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_solaris.c
index 21f92afcba..c635246874 100644
--- a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_solaris.c
+++ b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_solaris.c
@@ -10937,10 +10937,8 @@ emlxs_fm_init(emlxs_hba_t *hba)
if (DDI_FM_ACC_ERR_CAP(hba->fm_caps)) {
emlxs_dev_acc_attr.devacc_attr_access = DDI_FLAGERR_ACC;
- emlxs_data_acc_attr.devacc_attr_access = DDI_FLAGERR_ACC;
} else {
emlxs_dev_acc_attr.devacc_attr_access = DDI_DEFAULT_ACC;
- emlxs_data_acc_attr.devacc_attr_access = DDI_DEFAULT_ACC;
}
if (DDI_FM_DMA_ERR_CAP(hba->fm_caps)) {
diff --git a/usr/src/uts/common/io/hxge/hxge_fm.c b/usr/src/uts/common/io/hxge/hxge_fm.c
index c19c7ff2b2..c7627f57a6 100644
--- a/usr/src/uts/common/io/hxge/hxge_fm.c
+++ b/usr/src/uts/common/io/hxge/hxge_fm.c
@@ -19,12 +19,10 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
-#pragma ident "%Z%%M% %I% %E% SMI"
-
#include <hxge_impl.h>
#include <sys/ddifm.h>
#include <sys/fm/protocol.h>
@@ -173,7 +171,7 @@ hxge_fm_ereport_attr_t hxge_fm_ereport_sw[] = {
void
hxge_fm_init(p_hxge_t hxgep, ddi_device_acc_attr_t *reg_attr,
- ddi_device_acc_attr_t *desc_attr, ddi_dma_attr_t *dma_attr)
+ ddi_dma_attr_t *dma_attr)
{
ddi_iblock_cookie_t iblk;
@@ -218,10 +216,8 @@ hxge_fm_init(p_hxge_t hxgep, ddi_device_acc_attr_t *reg_attr,
*/
if (DDI_FM_ACC_ERR_CAP(hxgep->fm_capabilities)) {
reg_attr->devacc_attr_access = DDI_FLAGERR_ACC;
- desc_attr->devacc_attr_access = DDI_FLAGERR_ACC;
} else {
reg_attr->devacc_attr_access = DDI_DEFAULT_ACC;
- desc_attr->devacc_attr_access = DDI_DEFAULT_ACC;
}
/*
diff --git a/usr/src/uts/common/io/hxge/hxge_main.c b/usr/src/uts/common/io/hxge/hxge_main.c
index db76ab954b..59948c3bf7 100644
--- a/usr/src/uts/common/io/hxge/hxge_main.c
+++ b/usr/src/uts/common/io/hxge/hxge_main.c
@@ -217,7 +217,7 @@ extern hxge_status_t hxge_ldgv_init();
extern hxge_status_t hxge_ldgv_uninit();
extern hxge_status_t hxge_intr_ldgv_init();
extern void hxge_fm_init(p_hxge_t hxgep, ddi_device_acc_attr_t *reg_attr,
- ddi_device_acc_attr_t *desc_attr, ddi_dma_attr_t *dma_attr);
+ ddi_dma_attr_t *dma_attr);
extern void hxge_fm_fini(p_hxge_t hxgep);
/*
@@ -230,9 +230,10 @@ uint32_t hxge_mblks_pending = 0;
* Device register access attributes for PIO.
*/
static ddi_device_acc_attr_t hxge_dev_reg_acc_attr = {
- DDI_DEVICE_ATTR_V0,
+ DDI_DEVICE_ATTR_V1,
DDI_STRUCTURE_LE_ACC,
DDI_STRICTORDER_ACC,
+ DDI_DEFAULT_ACC
};
/*
@@ -468,8 +469,7 @@ hxge_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
hxgep->mmac.addrs[i].primary = B_FALSE;
}
- hxge_fm_init(hxgep, &hxge_dev_reg_acc_attr, &hxge_dev_desc_dma_acc_attr,
- &hxge_rx_dma_attr);
+ hxge_fm_init(hxgep, &hxge_dev_reg_acc_attr, &hxge_rx_dma_attr);
status = hxge_map_regs(hxgep);
if (status != HXGE_OK) {
diff --git a/usr/src/uts/common/io/ib/adapters/hermon/hermon.c b/usr/src/uts/common/io/ib/adapters/hermon/hermon.c
index 919ff43331..3fd3224b49 100644
--- a/usr/src/uts/common/io/ib/adapters/hermon/hermon.c
+++ b/usr/src/uts/common/io/ib/adapters/hermon/hermon.c
@@ -1465,7 +1465,7 @@ hermon_hw_init(hermon_state_t *state)
cleanup = HERMON_DRV_CLEANUP_LEVEL0;
/* Setup device access attributes */
- state->hs_reg_accattr.devacc_attr_version = DDI_DEVICE_ATTR_V0;
+ state->hs_reg_accattr.devacc_attr_version = DDI_DEVICE_ATTR_V1;
state->hs_reg_accattr.devacc_attr_endian_flags = DDI_STRUCTURE_BE_ACC;
state->hs_reg_accattr.devacc_attr_dataorder = DDI_STRICTORDER_ACC;
state->hs_reg_accattr.devacc_attr_access = DDI_DEFAULT_ACC;
diff --git a/usr/src/uts/common/io/igb/igb_buf.c b/usr/src/uts/common/io/igb/igb_buf.c
index 06d795e3f4..ed798bb39b 100644
--- a/usr/src/uts/common/io/igb/igb_buf.c
+++ b/usr/src/uts/common/io/igb/igb_buf.c
@@ -23,7 +23,7 @@
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms of the CDDL.
+ * Use is subject to license terms.
*/
#include "igb_sw.h"
@@ -105,8 +105,7 @@ static ddi_dma_attr_t igb_tx_dma_attr = {
static ddi_device_acc_attr_t igb_desc_acc_attr = {
DDI_DEVICE_ATTR_V0,
DDI_STRUCTURE_LE_ACC,
- DDI_STRICTORDER_ACC,
- DDI_FLAGERR_ACC
+ DDI_STRICTORDER_ACC
};
/*
@@ -865,14 +864,8 @@ igb_free_rcb_lists(igb_rx_ring_t *rx_ring)
}
void
-igb_set_fma_flags(int acc_flag, int dma_flag)
+igb_set_fma_flags(int dma_flag)
{
- if (acc_flag) {
- igb_desc_acc_attr.devacc_attr_access = DDI_FLAGERR_ACC;
- } else {
- igb_desc_acc_attr.devacc_attr_access = DDI_DEFAULT_ACC;
- }
-
if (dma_flag) {
igb_tx_dma_attr.dma_attr_flags = DDI_DMA_FLAGERR;
igb_buf_dma_attr.dma_attr_flags = DDI_DMA_FLAGERR;
diff --git a/usr/src/uts/common/io/igb/igb_main.c b/usr/src/uts/common/io/igb/igb_main.c
index c118a38103..e2137ae44c 100644
--- a/usr/src/uts/common/io/igb/igb_main.c
+++ b/usr/src/uts/common/io/igb/igb_main.c
@@ -164,7 +164,7 @@ static struct modlinkage igb_modlinkage = {
/* Access attributes for register mapping */
ddi_device_acc_attr_t igb_regs_acc_attr = {
- DDI_DEVICE_ATTR_V0,
+ DDI_DEVICE_ATTR_V1,
DDI_STRUCTURE_LE_ACC,
DDI_STRICTORDER_ACC,
DDI_FLAGERR_ACC
@@ -4930,15 +4930,13 @@ static void
igb_fm_init(igb_t *igb)
{
ddi_iblock_cookie_t iblk;
- int fma_acc_flag, fma_dma_flag;
+ int fma_dma_flag;
/* Only register with IO Fault Services if we have some capability */
if (igb->fm_capabilities & DDI_FM_ACCCHK_CAPABLE) {
igb_regs_acc_attr.devacc_attr_access = DDI_FLAGERR_ACC;
- fma_acc_flag = 1;
} else {
igb_regs_acc_attr.devacc_attr_access = DDI_DEFAULT_ACC;
- fma_acc_flag = 0;
}
if (igb->fm_capabilities & DDI_FM_DMACHK_CAPABLE) {
@@ -4947,7 +4945,7 @@ igb_fm_init(igb_t *igb)
fma_dma_flag = 0;
}
- (void) igb_set_fma_flags(fma_acc_flag, fma_dma_flag);
+ (void) igb_set_fma_flags(fma_dma_flag);
if (igb->fm_capabilities) {
diff --git a/usr/src/uts/common/io/igb/igb_sw.h b/usr/src/uts/common/io/igb/igb_sw.h
index cce139933d..5744f148f0 100644
--- a/usr/src/uts/common/io/igb/igb_sw.h
+++ b/usr/src/uts/common/io/igb/igb_sw.h
@@ -852,7 +852,7 @@ int igb_atomic_reserve(uint32_t *, uint32_t);
int igb_check_acc_handle(ddi_acc_handle_t);
int igb_check_dma_handle(ddi_dma_handle_t);
void igb_fm_ereport(igb_t *, char *);
-void igb_set_fma_flags(int, int);
+void igb_set_fma_flags(int);
/*
* Function prototypes in igb_gld.c
diff --git a/usr/src/uts/common/io/ixgbe/ixgbe_buf.c b/usr/src/uts/common/io/ixgbe/ixgbe_buf.c
index f7dcce5eeb..25b90d0578 100644
--- a/usr/src/uts/common/io/ixgbe/ixgbe_buf.c
+++ b/usr/src/uts/common/io/ixgbe/ixgbe_buf.c
@@ -104,8 +104,7 @@ static ddi_dma_attr_t ixgbe_tx_dma_attr = {
static ddi_device_acc_attr_t ixgbe_desc_acc_attr = {
DDI_DEVICE_ATTR_V0,
DDI_STRUCTURE_LE_ACC,
- DDI_STRICTORDER_ACC,
- DDI_FLAGERR_ACC
+ DDI_STRICTORDER_ACC
};
/*
@@ -922,14 +921,8 @@ ixgbe_free_rcb_lists(ixgbe_rx_data_t *rx_data)
* ixgbe_set_fma_flags - Set the attribute for fma support.
*/
void
-ixgbe_set_fma_flags(int acc_flag, int dma_flag)
+ixgbe_set_fma_flags(int dma_flag)
{
- if (acc_flag) {
- ixgbe_desc_acc_attr.devacc_attr_access = DDI_FLAGERR_ACC;
- } else {
- ixgbe_desc_acc_attr.devacc_attr_access = DDI_DEFAULT_ACC;
- }
-
if (dma_flag) {
ixgbe_tx_dma_attr.dma_attr_flags = DDI_DMA_FLAGERR;
ixgbe_buf_dma_attr.dma_attr_flags = DDI_DMA_FLAGERR;
diff --git a/usr/src/uts/common/io/ixgbe/ixgbe_main.c b/usr/src/uts/common/io/ixgbe/ixgbe_main.c
index cc47143282..d2bdfee386 100644
--- a/usr/src/uts/common/io/ixgbe/ixgbe_main.c
+++ b/usr/src/uts/common/io/ixgbe/ixgbe_main.c
@@ -180,7 +180,7 @@ static struct modlinkage ixgbe_modlinkage = {
* Access attributes for register mapping
*/
ddi_device_acc_attr_t ixgbe_regs_acc_attr = {
- DDI_DEVICE_ATTR_V0,
+ DDI_DEVICE_ATTR_V1,
DDI_STRUCTURE_LE_ACC,
DDI_STRICTORDER_ACC,
DDI_FLAGERR_ACC
@@ -4500,17 +4500,15 @@ static void
ixgbe_fm_init(ixgbe_t *ixgbe)
{
ddi_iblock_cookie_t iblk;
- int fma_acc_flag, fma_dma_flag;
+ int fma_dma_flag;
/*
* Only register with IO Fault Services if we have some capability
*/
if (ixgbe->fm_capabilities & DDI_FM_ACCCHK_CAPABLE) {
ixgbe_regs_acc_attr.devacc_attr_access = DDI_FLAGERR_ACC;
- fma_acc_flag = 1;
} else {
ixgbe_regs_acc_attr.devacc_attr_access = DDI_DEFAULT_ACC;
- fma_acc_flag = 0;
}
if (ixgbe->fm_capabilities & DDI_FM_DMACHK_CAPABLE) {
@@ -4519,7 +4517,7 @@ ixgbe_fm_init(ixgbe_t *ixgbe)
fma_dma_flag = 0;
}
- ixgbe_set_fma_flags(fma_acc_flag, fma_dma_flag);
+ ixgbe_set_fma_flags(fma_dma_flag);
if (ixgbe->fm_capabilities) {
diff --git a/usr/src/uts/common/io/ixgbe/ixgbe_sw.h b/usr/src/uts/common/io/ixgbe/ixgbe_sw.h
index d943814708..5a690abbd3 100644
--- a/usr/src/uts/common/io/ixgbe/ixgbe_sw.h
+++ b/usr/src/uts/common/io/ixgbe/ixgbe_sw.h
@@ -776,7 +776,7 @@ typedef struct ixgbe_stat {
*/
int ixgbe_alloc_dma(ixgbe_t *);
void ixgbe_free_dma(ixgbe_t *);
-void ixgbe_set_fma_flags(int, int);
+void ixgbe_set_fma_flags(int);
void ixgbe_free_dma_buffer(dma_buffer_t *);
int ixgbe_alloc_rx_ring_data(ixgbe_rx_ring_t *rx_ring);
void ixgbe_free_rx_ring_data(ixgbe_rx_data_t *rx_data);
diff --git a/usr/src/uts/common/io/mega_sas/megaraid_sas.c b/usr/src/uts/common/io/mega_sas/megaraid_sas.c
index 18ba93bee2..61515efcc0 100644
--- a/usr/src/uts/common/io/mega_sas/megaraid_sas.c
+++ b/usr/src/uts/common/io/mega_sas/megaraid_sas.c
@@ -157,9 +157,10 @@ static struct modlinkage modlinkage = {
};
static struct ddi_device_acc_attr endian_attr = {
- DDI_DEVICE_ATTR_V0,
+ DDI_DEVICE_ATTR_V1,
DDI_STRUCTURE_LE_ACC,
- DDI_STRICTORDER_ACC
+ DDI_STRICTORDER_ACC,
+ DDI_DEFAULT_ACC
};
@@ -2994,7 +2995,10 @@ mega_alloc_dma_obj(struct megasas_instance *instance, dma_obj_t *obj)
int i;
size_t alen = 0;
uint_t cookie_cnt;
+ struct ddi_device_acc_attr tmp_endian_attr;
+ tmp_endian_attr = endian_attr;
+ tmp_endian_attr.devacc_attr_access = DDI_DEFAULT_ACC;
i = ddi_dma_alloc_handle(instance->dip, &obj->dma_attr,
DDI_DMA_SLEEP, NULL, &obj->dma_handle);
if (i != DDI_SUCCESS) {
@@ -3017,7 +3021,7 @@ mega_alloc_dma_obj(struct megasas_instance *instance, dma_obj_t *obj)
return (-1);
}
- if ((ddi_dma_mem_alloc(obj->dma_handle, obj->size, &endian_attr,
+ if ((ddi_dma_mem_alloc(obj->dma_handle, obj->size, &tmp_endian_attr,
DDI_DMA_RDWR | DDI_DMA_STREAMING, DDI_DMA_SLEEP, NULL,
&obj->buffer, &alen, &obj->acc_handle) != DDI_SUCCESS) ||
alen < obj->size) {
diff --git a/usr/src/uts/common/io/mr_sas/mr_sas.c b/usr/src/uts/common/io/mr_sas/mr_sas.c
index ab13d12e2a..5e343fc79c 100644
--- a/usr/src/uts/common/io/mr_sas/mr_sas.c
+++ b/usr/src/uts/common/io/mr_sas/mr_sas.c
@@ -164,9 +164,10 @@ static struct modlinkage modlinkage = {
};
static struct ddi_device_acc_attr endian_attr = {
- DDI_DEVICE_ATTR_V0,
+ DDI_DEVICE_ATTR_V1,
DDI_STRUCTURE_LE_ACC,
- DDI_STRICTORDER_ACC
+ DDI_STRICTORDER_ACC,
+ DDI_DEFAULT_ACC
};
@@ -2981,6 +2982,7 @@ mrsas_alloc_dma_obj(struct mrsas_instance *instance, dma_obj_t *obj,
tmp_endian_attr = endian_attr;
tmp_endian_attr.devacc_attr_endian_flags = endian_flags;
+ tmp_endian_attr.devacc_attr_access = DDI_DEFAULT_ACC;
i = ddi_dma_alloc_handle(instance->dip, &obj->dma_attr,
DDI_DMA_SLEEP, NULL, &obj->dma_handle);
diff --git a/usr/src/uts/common/io/nxge/nxge_fm.c b/usr/src/uts/common/io/nxge/nxge_fm.c
index f3df39ea28..8a48de4f1e 100644
--- a/usr/src/uts/common/io/nxge/nxge_fm.c
+++ b/usr/src/uts/common/io/nxge/nxge_fm.c
@@ -19,12 +19,10 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
-#pragma ident "%Z%%M% %I% %E% SMI"
-
#include <sys/nxge/nxge_impl.h>
#include <sys/nxge/nxge_hio.h>
#include <sys/ddifm.h>
@@ -347,7 +345,7 @@ nxge_fm_ereport_attr_t nxge_fm_ereport_sw[] = {
void
nxge_fm_init(p_nxge_t nxgep, ddi_device_acc_attr_t *reg_attr,
- ddi_device_acc_attr_t *desc_attr, ddi_dma_attr_t *dma_attr)
+ ddi_dma_attr_t *dma_attr)
{
ddi_iblock_cookie_t iblk;
@@ -399,10 +397,8 @@ nxge_fm_init(p_nxge_t nxgep, ddi_device_acc_attr_t *reg_attr,
*/
if (DDI_FM_ACC_ERR_CAP(nxgep->fm_capabilities)) {
reg_attr->devacc_attr_access = DDI_FLAGERR_ACC;
- desc_attr->devacc_attr_access = DDI_FLAGERR_ACC;
} else {
reg_attr->devacc_attr_access = DDI_DEFAULT_ACC;
- desc_attr->devacc_attr_access = DDI_DEFAULT_ACC;
}
/*
diff --git a/usr/src/uts/common/io/nxge/nxge_main.c b/usr/src/uts/common/io/nxge/nxge_main.c
index 28c6f1272d..ff4e9197c2 100644
--- a/usr/src/uts/common/io/nxge/nxge_main.c
+++ b/usr/src/uts/common/io/nxge/nxge_main.c
@@ -396,7 +396,6 @@ extern nxge_status_t nxge_ldgv_uninit(p_nxge_t);
extern nxge_status_t nxge_intr_ldgv_init(p_nxge_t);
extern void nxge_fm_init(p_nxge_t,
ddi_device_acc_attr_t *,
- ddi_device_acc_attr_t *,
ddi_dma_attr_t *);
extern void nxge_fm_fini(p_nxge_t);
extern npi_status_t npi_mac_altaddr_disable(npi_handle_t, uint8_t, uint8_t);
@@ -411,9 +410,10 @@ uint32_t nxge_mblks_pending = 0;
* Device register access attributes for PIO.
*/
static ddi_device_acc_attr_t nxge_dev_reg_acc_attr = {
- DDI_DEVICE_ATTR_V0,
+ DDI_DEVICE_ATTR_V1,
DDI_STRUCTURE_LE_ACC,
DDI_STRICTORDER_ACC,
+ DDI_DEFAULT_ACC
};
/*
@@ -610,9 +610,7 @@ nxge_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
goto nxge_attach_fail3;
}
- nxge_fm_init(nxgep, &nxge_dev_reg_acc_attr,
- &nxge_dev_desc_dma_acc_attr,
- &nxge_rx_dma_attr);
+ nxge_fm_init(nxgep, &nxge_dev_reg_acc_attr, &nxge_rx_dma_attr);
/* Create & initialize the per-Neptune data structure */
/* (even if we're a guest). */
diff --git a/usr/src/uts/common/io/pciex/pcieb.c b/usr/src/uts/common/io/pciex/pcieb.c
index 24d8ebc03d..998027f4a3 100644
--- a/usr/src/uts/common/io/pciex/pcieb.c
+++ b/usr/src/uts/common/io/pciex/pcieb.c
@@ -460,6 +460,12 @@ pcieb_bus_map(dev_info_t *dip, dev_info_t *rdip, ddi_map_req_t *mp,
{
dev_info_t *pdip;
+ if (PCIE_IS_RP(PCIE_DIP2BUS(dip))) {
+ ddi_acc_impl_t *hdlp =
+ (ddi_acc_impl_t *)(mp->map_handlep)->ah_platform_private;
+
+ pcieb_set_prot_scan(dip, hdlp);
+ }
pdip = (dev_info_t *)DEVI(dip)->devi_parent;
return ((DEVI(pdip)->devi_ops->devo_bus_ops->bus_map)(pdip, rdip, mp,
offset, len, vaddrp));
diff --git a/usr/src/uts/common/io/pciex/pcieb.h b/usr/src/uts/common/io/pciex/pcieb.h
index 7d8556cfc1..ec8da3ffd3 100644
--- a/usr/src/uts/common/io/pciex/pcieb.h
+++ b/usr/src/uts/common/io/pciex/pcieb.h
@@ -160,6 +160,7 @@ extern int pcieb_plat_pcishpc_probe(dev_info_t *dip,
ddi_acc_handle_t config_handle);
extern int pcieb_plat_peekpoke(dev_info_t *dip, dev_info_t *rdip,
ddi_ctl_enum_t ctlop, void *arg, void *result);
+extern void pcieb_set_prot_scan(dev_info_t *dip, ddi_acc_impl_t *hdlp);
extern int pcieb_plat_intr_ops(dev_info_t *dip, dev_info_t *rdip,
ddi_intr_op_t intr_op, ddi_intr_handle_impl_t *hdlp, void *result);
extern boolean_t pcieb_plat_msi_supported(dev_info_t *dip);
diff --git a/usr/src/uts/common/io/scsi/adapters/mpt_sas/mptsas.c b/usr/src/uts/common/io/scsi/adapters/mpt_sas/mptsas.c
index dd4cf83977..6d11beb8f2 100644
--- a/usr/src/uts/common/io/scsi/adapters/mpt_sas/mptsas.c
+++ b/usr/src/uts/common/io/scsi/adapters/mpt_sas/mptsas.c
@@ -472,9 +472,10 @@ ddi_dma_attr_t mptsas_dma_attrs64 = {
};
ddi_device_acc_attr_t mptsas_dev_attr = {
- DDI_DEVICE_ATTR_V0,
+ DDI_DEVICE_ATTR_V1,
DDI_STRUCTURE_LE_ACC,
- DDI_STRICTORDER_ACC
+ DDI_STRICTORDER_ACC,
+ DDI_DEFAULT_ACC
};
static struct cb_ops mptsas_cb_ops = {
@@ -962,6 +963,7 @@ mptsas_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
/* Make a per-instance copy of the structures */
mpt->m_io_dma_attr = mptsas_dma_attrs64;
mpt->m_msg_dma_attr = mptsas_dma_attrs;
+ mpt->m_reg_acc_attr = mptsas_dev_attr;
mpt->m_dev_acc_attr = mptsas_dev_attr;
/*
@@ -1006,7 +1008,7 @@ mptsas_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
}
if (ddi_regs_map_setup(dip, mem_bar, (caddr_t *)&mpt->m_reg,
- 0, 0, &mpt->m_dev_acc_attr, &mpt->m_datap) != DDI_SUCCESS) {
+ 0, 0, &mpt->m_reg_acc_attr, &mpt->m_datap) != DDI_SUCCESS) {
mptsas_log(mpt, CE_WARN, "map setup failed");
goto fail;
}
@@ -11771,7 +11773,7 @@ mptsas_fm_init(mptsas_t *mpt)
/* Only register with IO Fault Services if we have some capability */
if (mpt->m_fm_capabilities) {
/* Adjust access and dma attributes for FMA */
- mpt->m_dev_acc_attr.devacc_attr_access |= DDI_FLAGERR_ACC;
+ mpt->m_reg_acc_attr.devacc_attr_access = DDI_FLAGERR_ACC;
mpt->m_msg_dma_attr.dma_attr_flags |= DDI_DMA_FLAGERR;
mpt->m_io_dma_attr.dma_attr_flags |= DDI_DMA_FLAGERR;
@@ -11833,7 +11835,7 @@ mptsas_fm_fini(mptsas_t *mpt)
ddi_fm_fini(mpt->m_dip);
/* Adjust access and dma attributes for FMA */
- mpt->m_dev_acc_attr.devacc_attr_access &= ~DDI_FLAGERR_ACC;
+ mpt->m_reg_acc_attr.devacc_attr_access = DDI_DEFAULT_ACC;
mpt->m_msg_dma_attr.dma_attr_flags &= ~DDI_DMA_FLAGERR;
mpt->m_io_dma_attr.dma_attr_flags &= ~DDI_DMA_FLAGERR;
diff --git a/usr/src/uts/common/io/scsi/adapters/pmcs/pmcs_attach.c b/usr/src/uts/common/io/scsi/adapters/pmcs/pmcs_attach.c
index 6c50146c54..c29eb232a6 100644
--- a/usr/src/uts/common/io/scsi/adapters/pmcs/pmcs_attach.c
+++ b/usr/src/uts/common/io/scsi/adapters/pmcs/pmcs_attach.c
@@ -164,7 +164,7 @@ const ddi_dma_attr_t pmcs_dattr = {
};
static ddi_device_acc_attr_t rattr = {
- DDI_DEVICE_ATTR_V0,
+ DDI_DEVICE_ATTR_V1,
DDI_STRUCTURE_LE_ACC,
DDI_STRICTORDER_ACC,
DDI_DEFAULT_ACC
@@ -2947,8 +2947,7 @@ pmcs_fm_init(pmcs_hw_t *pwp)
/* Only register with IO Fault Services if we have some capability */
if (pwp->fm_capabilities) {
/* Adjust access and dma attributes for FMA */
- pwp->reg_acc_attr.devacc_attr_access |= DDI_FLAGERR_ACC;
- pwp->dev_acc_attr.devacc_attr_access |= DDI_FLAGERR_ACC;
+ pwp->reg_acc_attr.devacc_attr_access = DDI_FLAGERR_ACC;
pwp->iqp_dma_attr.dma_attr_flags |= DDI_DMA_FLAGERR;
pwp->oqp_dma_attr.dma_attr_flags |= DDI_DMA_FLAGERR;
pwp->cip_dma_attr.dma_attr_flags |= DDI_DMA_FLAGERR;
@@ -3002,8 +3001,7 @@ pmcs_fm_fini(pmcs_hw_t *pwp)
ddi_fm_fini(pwp->dip);
/* Adjust access and dma attributes for FMA */
- pwp->reg_acc_attr.devacc_attr_access &= ~DDI_FLAGERR_ACC;
- pwp->dev_acc_attr.devacc_attr_access &= ~DDI_FLAGERR_ACC;
+ pwp->reg_acc_attr.devacc_attr_access = DDI_DEFAULT_ACC;
pwp->iqp_dma_attr.dma_attr_flags &= ~DDI_DMA_FLAGERR;
pwp->oqp_dma_attr.dma_attr_flags &= ~DDI_DMA_FLAGERR;
pwp->cip_dma_attr.dma_attr_flags &= ~DDI_DMA_FLAGERR;
diff --git a/usr/src/uts/common/io/yge/yge.c b/usr/src/uts/common/io/yge/yge.c
index be639f90ef..54fa8b4913 100644
--- a/usr/src/uts/common/io/yge/yge.c
+++ b/usr/src/uts/common/io/yge/yge.c
@@ -119,8 +119,7 @@
static struct ddi_device_acc_attr yge_regs_attr = {
DDI_DEVICE_ATTR_V0,
DDI_STRUCTURE_LE_ACC,
- DDI_STRICTORDER_ACC,
- DDI_FLAGERR_ACC
+ DDI_STRICTORDER_ACC
};
static struct ddi_device_acc_attr yge_ring_attr = {