Print this page
4888 Undocument dma_req(9s)
4884 EOF scsi_hba_attach
4886 EOF ddi_dmae_getlim
4887 EOF ddi_iomin
4634 undocument scsi_hba_attach() and ddi_dma_lim(9s)
4630 clean stale references to ddi_iopb_alloc and ddi_iopb_free
*** 22,32 ****
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/*
! * Copyright 2012 Garrett D'Amore <garrett@damore.org>. All rights reserved.
*/
/*
* sun4 specific DDI implementation
*/
--- 22,32 ----
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/*
! * Copyright 2014 Garrett D'Amore <garrett@damore.org>
*/
/*
* sun4 specific DDI implementation
*/
*** 1129,1138 ****
--- 1129,1162 ----
vmem_free(little_endian_arena, (void *)saddr[-2], saddr[-1]);
else
vmem_free(big_endian_arena, (void *)saddr[-2], saddr[-1]);
}
+ /*
+ * This used to be ddi_iomin, but we were the only remaining caller, so
+ * we've made it private and moved it here.
+ */
+ static int
+ i_ddi_iomin(dev_info_t *a, int i, int stream)
+ {
+ int r;
+
+ /*
+ * Make sure that the initial value is sane
+ */
+ if (i & (i - 1))
+ return (0);
+ if (i == 0)
+ i = (stream) ? 4 : 1;
+
+ r = ddi_ctlops(a, a,
+ DDI_CTLOPS_IOMIN, (void *)(uintptr_t)stream, (void *)&i);
+ if (r != DDI_SUCCESS || (i & (i - 1)))
+ return (0);
+ return (i);
+ }
+
int
i_ddi_mem_alloc(dev_info_t *dip, ddi_dma_attr_t *attr,
size_t length, int cansleep, int flags,
ddi_device_acc_attr_t *accattrp,
caddr_t *kaddrp, size_t *real_length, ddi_acc_hdl_t *handlep)
*** 1179,1189 ****
iomin = 1;
else
iomin = 1 << (ddi_fls(iomin) - 1);
iomin = maxbit(iomin, attr->dma_attr_minxfer);
iomin = maxbit(iomin, attr->dma_attr_align);
! iomin = ddi_iomin(dip, iomin, streaming);
if (iomin == 0)
return (DDI_FAILURE);
ASSERT((iomin & (iomin - 1)) == 0);
ASSERT(iomin >= attr->dma_attr_minxfer);
--- 1203,1213 ----
iomin = 1;
else
iomin = 1 << (ddi_fls(iomin) - 1);
iomin = maxbit(iomin, attr->dma_attr_minxfer);
iomin = maxbit(iomin, attr->dma_attr_align);
! iomin = i_ddi_iomin(dip, iomin, streaming);
if (iomin == 0)
return (DDI_FAILURE);
ASSERT((iomin & (iomin - 1)) == 0);
ASSERT(iomin >= attr->dma_attr_minxfer);