diff options
Diffstat (limited to 'usr/src/uts/common/io')
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 = { |
