usr/src/lib/libdevinfo/devinfo_devlink.c
3298
struct dca_off dca;
usr/src/lib/libdevinfo/devinfo_devlink.c
3305
if (dca_init(name, &dca, dca_devlink_flag) != 0)
usr/src/lib/libdevinfo/devinfo_devlink.c
3313
install = daemon_call(root, &dca);
usr/src/lib/libdevinfo/devinfo_devlink.c
3316
dca.dca_error);
usr/src/lib/libdevinfo/devinfo_devlink.c
3321
if (dca.dca_error != ENOENT && dca.dca_error != EBADF) {
usr/src/lib/libdevinfo/devinfo_devlink.c
3322
return (dca.dca_error);
usr/src/lib/libdevinfo/devinfo_devlink.c
3325
dca.dca_error = 0;
usr/src/lib/libdevinfo/devinfo_devlink.c
3341
assert(dca.dca_error == 0);
usr/src/lib/libdevinfo/devinfo_devlink.c
3346
exec_cmd(root, &dca);
usr/src/lib/libdevinfo/devinfo_devlink.c
3348
return (dca.dca_error);
usr/src/lib/libjedec/common/libjedec_spd_ddr5.c
322
const uint8_t dca = SPD_DDR5_SPD_DCA_TYPE(data);
usr/src/lib/libjedec/common/libjedec_spd_ddr5.c
327
spd_insert_map(si, SPD_KEY_DDR5_DCA, dca, spd_ddr5_dca_map,
usr/src/uts/common/crypto/io/dca.c
1009
if (dca_reset(dca, 0) < 0) {
usr/src/uts/common/crypto/io/dca.c
1010
dca_error(dca, "unable to reset device during resume");
usr/src/uts/common/crypto/io/dca.c
1019
PUTCSR(dca, CSR_DMACTL, DMACTL_BE32 | DMACTL_BE64);
usr/src/uts/common/crypto/io/dca.c
1020
if (dca_check_acc_handle(dca, dca->dca_regs_handle,
usr/src/uts/common/crypto/io/dca.c
1025
if (dca->dca_devid == 0x5825) {
usr/src/uts/common/crypto/io/dca.c
1027
SETBIT(dca, CSR_DMACTL,
usr/src/uts/common/crypto/io/dca.c
1030
SETBIT(dca, CSR_DMACTL,
usr/src/uts/common/crypto/io/dca.c
1033
if (dca_check_acc_handle(dca, dca->dca_regs_handle,
usr/src/uts/common/crypto/io/dca.c
1038
dca_undrain(dca);
usr/src/uts/common/crypto/io/dca.c
1044
dca_suspend(dca_t *dca)
usr/src/uts/common/crypto/io/dca.c
1046
if ((dca_drain(dca)) != 0) {
usr/src/uts/common/crypto/io/dca.c
1049
if (dca_reset(dca, 0) < 0) {
usr/src/uts/common/crypto/io/dca.c
1050
dca_error(dca, "unable to reset device during suspend");
usr/src/uts/common/crypto/io/dca.c
1060
dca_reset(dca_t *dca, int failreset)
usr/src/uts/common/crypto/io/dca.c
1064
if (dca->dca_regs_handle == NULL) {
usr/src/uts/common/crypto/io/dca.c
1068
PUTCSR(dca, CSR_DMACTL, DMACTL_RESET);
usr/src/uts/common/crypto/io/dca.c
1070
if (dca_check_acc_handle(dca, dca->dca_regs_handle,
usr/src/uts/common/crypto/io/dca.c
1079
dmactl = GETCSR(dca, CSR_DMACTL);
usr/src/uts/common/crypto/io/dca.c
1081
if (dca_check_acc_handle(dca, dca->dca_regs_handle,
usr/src/uts/common/crypto/io/dca.c
1086
DBG(dca, DCHATTY, "reset in %d usec", i * 100);
usr/src/uts/common/crypto/io/dca.c
1091
dca_failure(dca, DDI_DEVICE_FAULT,
usr/src/uts/common/crypto/io/dca.c
1099
dca_initworklist(dca_t *dca, dca_worklist_t *wlp)
usr/src/uts/common/crypto/io/dca.c
1107
mutex_init(&wlp->dwl_lock, NULL, MUTEX_DRIVER, dca->dca_icookie);
usr/src/uts/common/crypto/io/dca.c
1109
dca->dca_icookie);
usr/src/uts/common/crypto/io/dca.c
1110
mutex_init(&wlp->dwl_freelock, NULL, MUTEX_DRIVER, dca->dca_icookie);
usr/src/uts/common/crypto/io/dca.c
1123
if ((workp = dca_newwork(dca)) == NULL) {
usr/src/uts/common/crypto/io/dca.c
1124
dca_error(dca, "unable to allocate work");
usr/src/uts/common/crypto/io/dca.c
1136
if ((reqp = dca_newreq(dca)) == NULL) {
usr/src/uts/common/crypto/io/dca.c
1137
dca_error(dca, "unable to allocate request");
usr/src/uts/common/crypto/io/dca.c
1140
reqp->dr_dca = dca;
usr/src/uts/common/crypto/io/dca.c
1148
dca_init(dca_t *dca)
usr/src/uts/common/crypto/io/dca.c
1153
mutex_init(&dca->dca_ctx_list_lock, NULL, MUTEX_DRIVER, NULL);
usr/src/uts/common/crypto/io/dca.c
1154
dca_initq(&dca->dca_ctx_list);
usr/src/uts/common/crypto/io/dca.c
1159
wlp = WORKLIST(dca, MCR1);
usr/src/uts/common/crypto/io/dca.c
1161
ddi_get_instance(dca->dca_dip));
usr/src/uts/common/crypto/io/dca.c
1163
dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS,
usr/src/uts/common/crypto/io/dca.c
1166
dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS,
usr/src/uts/common/crypto/io/dca.c
1169
dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS,
usr/src/uts/common/crypto/io/dca.c
1171
wlp->dwl_dca = dca;
usr/src/uts/common/crypto/io/dca.c
1173
if (dca_initworklist(dca, wlp) != DDI_SUCCESS) {
usr/src/uts/common/crypto/io/dca.c
1180
wlp = WORKLIST(dca, MCR2);
usr/src/uts/common/crypto/io/dca.c
1182
ddi_get_instance(dca->dca_dip));
usr/src/uts/common/crypto/io/dca.c
1184
dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS,
usr/src/uts/common/crypto/io/dca.c
1187
dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS,
usr/src/uts/common/crypto/io/dca.c
1190
dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS,
usr/src/uts/common/crypto/io/dca.c
1192
wlp->dwl_dca = dca;
usr/src/uts/common/crypto/io/dca.c
1194
if (dca_initworklist(dca, wlp) != DDI_SUCCESS) {
usr/src/uts/common/crypto/io/dca.c
1207
dca_uninit(dca_t *dca)
usr/src/uts/common/crypto/io/dca.c
1211
mutex_destroy(&dca->dca_ctx_list_lock);
usr/src/uts/common/crypto/io/dca.c
1214
dca_worklist_t *wlp = WORKLIST(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
1218
if (dca->dca_regs_handle == NULL) {
usr/src/uts/common/crypto/io/dca.c
1223
while ((workp = dca_getwork(dca, mcr)) != NULL) {
usr/src/uts/common/crypto/io/dca.c
1227
while ((reqp = dca_getreq(dca, mcr, 0)) != NULL) {
usr/src/uts/common/crypto/io/dca.c
1369
dca_t *dca = (dca_t *)arg;
usr/src/uts/common/crypto/io/dca.c
1372
mutex_enter(&dca->dca_intrlock);
usr/src/uts/common/crypto/io/dca.c
1373
status = GETCSR(dca, CSR_DMASTAT);
usr/src/uts/common/crypto/io/dca.c
1374
PUTCSR(dca, CSR_DMASTAT, status & DMASTAT_INTERRUPTS);
usr/src/uts/common/crypto/io/dca.c
1375
if (dca_check_acc_handle(dca, dca->dca_regs_handle,
usr/src/uts/common/crypto/io/dca.c
1377
mutex_exit(&dca->dca_intrlock);
usr/src/uts/common/crypto/io/dca.c
1381
DBG(dca, DINTR, "interrupted, status = 0x%x!", status);
usr/src/uts/common/crypto/io/dca.c
1385
if (dca->dca_intrstats) {
usr/src/uts/common/crypto/io/dca.c
1386
KIOIP(dca)->intrs[KSTAT_INTR_SPURIOUS]++;
usr/src/uts/common/crypto/io/dca.c
1388
mutex_exit(&dca->dca_intrlock);
usr/src/uts/common/crypto/io/dca.c
1392
if (dca->dca_intrstats) {
usr/src/uts/common/crypto/io/dca.c
1393
KIOIP(dca)->intrs[KSTAT_INTR_HARD]++;
usr/src/uts/common/crypto/io/dca.c
1396
DBG(dca, DINTR, "MCR1 interrupted");
usr/src/uts/common/crypto/io/dca.c
1397
mutex_enter(&(WORKLIST(dca, MCR1)->dwl_lock));
usr/src/uts/common/crypto/io/dca.c
1398
dca_schedule(dca, MCR1);
usr/src/uts/common/crypto/io/dca.c
1399
dca_reclaim(dca, MCR1);
usr/src/uts/common/crypto/io/dca.c
1400
mutex_exit(&(WORKLIST(dca, MCR1)->dwl_lock));
usr/src/uts/common/crypto/io/dca.c
1404
DBG(dca, DINTR, "MCR2 interrupted");
usr/src/uts/common/crypto/io/dca.c
1405
mutex_enter(&(WORKLIST(dca, MCR2)->dwl_lock));
usr/src/uts/common/crypto/io/dca.c
1406
dca_schedule(dca, MCR2);
usr/src/uts/common/crypto/io/dca.c
1407
dca_reclaim(dca, MCR2);
usr/src/uts/common/crypto/io/dca.c
1408
mutex_exit(&(WORKLIST(dca, MCR2)->dwl_lock));
usr/src/uts/common/crypto/io/dca.c
1413
erraddr = GETCSR(dca, CSR_DMAEA);
usr/src/uts/common/crypto/io/dca.c
1414
mutex_exit(&dca->dca_intrlock);
usr/src/uts/common/crypto/io/dca.c
1420
dca_failure(dca, DDI_DEVICE_FAULT,
usr/src/uts/common/crypto/io/dca.c
1427
mutex_exit(&dca->dca_intrlock);
usr/src/uts/common/crypto/io/dca.c
1515
dca_newwork(dca_t *dca)
usr/src/uts/common/crypto/io/dca.c
1525
rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr,
usr/src/uts/common/crypto/io/dca.c
1528
dca_error(dca, "unable to alloc MCR DMA handle");
usr/src/uts/common/crypto/io/dca.c
1534
ROUNDUP(MCR_SIZE, dca->dca_pagesize),
usr/src/uts/common/crypto/io/dca.c
1538
dca_error(dca, "unable to alloc MCR DMA memory");
usr/src/uts/common/crypto/io/dca.c
1547
dca_error(dca, "unable to map MCR DMA memory");
usr/src/uts/common/crypto/io/dca.c
1572
dca_newreq(dca_t *dca)
usr/src/uts/common/crypto/io/dca.c
1585
reqp->dr_dca = dca;
usr/src/uts/common/crypto/io/dca.c
1590
rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr, DDI_DMA_SLEEP,
usr/src/uts/common/crypto/io/dca.c
1593
dca_error(dca, "failure allocating request DMA handle");
usr/src/uts/common/crypto/io/dca.c
1600
ROUNDUP(size, dca->dca_pagesize), &dca_devattr, DDI_DMA_CONSISTENT,
usr/src/uts/common/crypto/io/dca.c
1604
dca_error(dca, "unable to alloc request DMA memory");
usr/src/uts/common/crypto/io/dca.c
1613
dca_error(dca, "failed binding request DMA handle");
usr/src/uts/common/crypto/io/dca.c
1624
rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr,
usr/src/uts/common/crypto/io/dca.c
1627
dca_error(dca, "failure allocating ibuf DMA handle");
usr/src/uts/common/crypto/io/dca.c
1631
rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr,
usr/src/uts/common/crypto/io/dca.c
1634
dca_error(dca, "failure allocating obuf DMA handle");
usr/src/uts/common/crypto/io/dca.c
1639
rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr,
usr/src/uts/common/crypto/io/dca.c
1642
dca_error(dca, "failure allocating chain_in DMA handle");
usr/src/uts/common/crypto/io/dca.c
1647
rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr,
usr/src/uts/common/crypto/io/dca.c
1650
dca_error(dca, "failure allocating chain_out DMA handle");
usr/src/uts/common/crypto/io/dca.c
1658
size = ROUNDUP(MAXPACKET, dca->dca_pagesize);
usr/src/uts/common/crypto/io/dca.c
1671
dca_error(dca, "unable to alloc request DMA memory");
usr/src/uts/common/crypto/io/dca.c
1681
dca_error(dca, "unable to alloc request DMA memory");
usr/src/uts/common/crypto/io/dca.c
1710
DBG(dca, DCHATTY, "CTX is 0x%p, phys 0x%x, len %d",
usr/src/uts/common/crypto/io/dca.c
1772
dca_getwork(dca_t *dca, int mcr)
usr/src/uts/common/crypto/io/dca.c
1774
dca_worklist_t *wlp = WORKLIST(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
1801
dca_getreq(dca_t *dca, int mcr, int tryhard)
usr/src/uts/common/crypto/io/dca.c
1803
dca_worklist_t *wlp = WORKLIST(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
1817
if ((reqp = dca_newreq(dca)) != NULL) {
usr/src/uts/common/crypto/io/dca.c
1819
reqp->dr_dca = dca;
usr/src/uts/common/crypto/io/dca.c
2037
dca_start(dca_t *dca, dca_request_t *reqp, int mcr, int dosched)
usr/src/uts/common/crypto/io/dca.c
2039
dca_worklist_t *wlp = WORKLIST(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
2043
DBG(dca, DCHATTY, "req=%p, in=%p, out=%p, ctx=%p, ibuf=%p, obuf=%p",
usr/src/uts/common/crypto/io/dca.c
2046
DBG(dca, DCHATTY, "ctx paddr = %x, ibuf paddr = %x, obuf paddr = %x",
usr/src/uts/common/crypto/io/dca.c
2050
if (dca_check_dma_handle(dca, reqp->dr_ctx_dmah,
usr/src/uts/common/crypto/io/dca.c
2075
dca_schedule(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
2082
dca_schedule(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
2091
dca_schedule(dca_t *dca, int mcr)
usr/src/uts/common/crypto/io/dca.c
2093
dca_worklist_t *wlp = WORKLIST(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
2103
if (wlp->dwl_drain || (dca->dca_flags & DCA_FAILED)) {
usr/src/uts/common/crypto/io/dca.c
2120
status = GETCSR(dca, CSR_DMASTAT);
usr/src/uts/common/crypto/io/dca.c
2121
if (dca_check_acc_handle(dca, dca->dca_regs_handle,
usr/src/uts/common/crypto/io/dca.c
2143
workp = dca_getwork(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
2151
dca_reclaim(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
2243
DBG(dca, DCHATTY,
usr/src/uts/common/crypto/io/dca.c
2252
if (dca_check_dma_handle(dca, workp->dw_mcr_dmah,
usr/src/uts/common/crypto/io/dca.c
2258
PUTCSR(dca, csr, workp->dw_mcr_paddr);
usr/src/uts/common/crypto/io/dca.c
2259
if (dca_check_acc_handle(dca, dca->dca_regs_handle,
usr/src/uts/common/crypto/io/dca.c
2267
DBG(dca, DCHATTY, "posted");
usr/src/uts/common/crypto/io/dca.c
2275
dca_reclaim(dca_t *dca, int mcr)
usr/src/uts/common/crypto/io/dca.c
2277
dca_worklist_t *wlp = WORKLIST(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
2283
DBG(dca, DRECLAIM, "worklist = 0x%p (MCR%d)", wlp, mcr);
usr/src/uts/common/crypto/io/dca.c
2301
if (dca_check_dma_handle(dca, workp->dw_mcr_dmah,
usr/src/uts/common/crypto/io/dca.c
2311
DBG(dca, DRECLAIM,
usr/src/uts/common/crypto/io/dca.c
2331
dca->dca_stats[reqp->dr_byte_stat] +=
usr/src/uts/common/crypto/io/dca.c
2335
dca->dca_stats[reqp->dr_job_stat]++;
usr/src/uts/common/crypto/io/dca.c
2359
DBG(dca, DRECLAIM, "reclaimed %d cmds", nreclaimed);
usr/src/uts/common/crypto/io/dca.c
2404
dca_failure(dca_t *dca, ddi_fault_location_t loc, dca_fma_eclass_t index,
usr/src/uts/common/crypto/io/dca.c
2417
eclass = dca_fma_eclass_string(dca->dca_model, index);
usr/src/uts/common/crypto/io/dca.c
2419
if (DDI_FM_EREPORT_CAP(dca->fm_capabilities) &&
usr/src/uts/common/crypto/io/dca.c
2421
ddi_fm_ereport_post(dca->dca_dip, eclass, ena,
usr/src/uts/common/crypto/io/dca.c
2426
ddi_fm_service_impact(dca->dca_dip, DDI_SERVICE_LOST);
usr/src/uts/common/crypto/io/dca.c
2429
dca_error(dca, buf);
usr/src/uts/common/crypto/io/dca.c
2435
dca->dca_flags |= DCA_FAILED;
usr/src/uts/common/crypto/io/dca.c
2441
(void) dca_reset(dca, 1);
usr/src/uts/common/crypto/io/dca.c
2447
if (WORKLIST(dca, mcr)->dwl_prov) {
usr/src/uts/common/crypto/io/dca.c
2448
crypto_prov_notify(WORKLIST(dca, mcr)->dwl_prov,
usr/src/uts/common/crypto/io/dca.c
2456
dca_rejectjobs(dca);
usr/src/uts/common/crypto/io/dca.c
2471
wlp = WORKLIST(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
2541
dca_t *dca = (dca_t *)arg;
usr/src/uts/common/crypto/io/dca.c
2545
dca_worklist_t *wlp = WORKLIST(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
2566
DBG(dca, DWARN, "stale job (0x%p) found in MCR%d!", workp,
usr/src/uts/common/crypto/io/dca.c
2575
dca_failure(dca, DDI_DEVICE_FAULT,
usr/src/uts/common/crypto/io/dca.c
2581
mutex_enter(&dca->dca_intrlock);
usr/src/uts/common/crypto/io/dca.c
2582
if (dca->dca_jobtid == 0) {
usr/src/uts/common/crypto/io/dca.c
2584
mutex_exit(&dca->dca_intrlock);
usr/src/uts/common/crypto/io/dca.c
2589
dca->dca_jobtid = timeout(dca_jobtimeout, arg,
usr/src/uts/common/crypto/io/dca.c
2591
mutex_exit(&dca->dca_intrlock);
usr/src/uts/common/crypto/io/dca.c
2599
dca_rejectjobs(dca_t *dca)
usr/src/uts/common/crypto/io/dca.c
2604
dca_worklist_t *wlp = WORKLIST(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
2636
dca_drain(dca_t *dca)
usr/src/uts/common/crypto/io/dca.c
2643
dca_worklist_t *wlp = WORKLIST(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
2654
dca_error(dca, "unable to drain device");
usr/src/uts/common/crypto/io/dca.c
2656
dca_undrain(dca);
usr/src/uts/common/crypto/io/dca.c
2681
dca_undrain(dca_t *dca)
usr/src/uts/common/crypto/io/dca.c
2686
dca_worklist_t *wlp = WORKLIST(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
2689
dca_schedule(dca, mcr);
usr/src/uts/common/crypto/io/dca.c
2909
dca_sgcheck(dca_t *dca, crypto_data_t *data, dca_sg_param_t val)
usr/src/uts/common/crypto/io/dca.c
2992
if ((data->cd_length % dca->dca_pagesize) ||
usr/src/uts/common/crypto/io/dca.c
2994
dca->dca_pagesize)) {
usr/src/uts/common/crypto/io/dca.c
3001
if ((uiop->uio_iov[0].iov_len % dca->dca_pagesize) ||
usr/src/uts/common/crypto/io/dca.c
3003
dca->dca_pagesize)) {
usr/src/uts/common/crypto/io/dca.c
3010
if ((MBLKL(mp) % dca->dca_pagesize) ||
usr/src/uts/common/crypto/io/dca.c
3011
((uintptr_t)mp->b_rptr % dca->dca_pagesize)) {
usr/src/uts/common/crypto/io/dca.c
418
static int dca_check_acc_handle(dca_t *dca, ddi_acc_handle_t handle,
usr/src/uts/common/crypto/io/dca.c
421
static void dca_fma_init(dca_t *dca);
usr/src/uts/common/crypto/io/dca.c
422
static void dca_fma_fini(dca_t *dca);
usr/src/uts/common/crypto/io/dca.c
4668
dca_free_context_list(dca_t *dca)
usr/src/uts/common/crypto/io/dca.c
4674
ctx.cc_provider = dca;
usr/src/uts/common/crypto/io/dca.c
4676
while ((node = dca_delist2(&dca->dca_ctx_list,
usr/src/uts/common/crypto/io/dca.c
4677
&dca->dca_ctx_list_lock)) != NULL) {
usr/src/uts/common/crypto/io/dca.c
4708
dca_t *dca = (dca_t *)prov;
usr/src/uts/common/crypto/io/dca.c
4713
ddi_driver_name(dca->dca_dip), ddi_get_instance(dca->dca_dip), id);
usr/src/uts/common/crypto/io/dca.c
4726
(void) sprintf((char *)ext_info->ei_model, dca->dca_model);
usr/src/uts/common/crypto/io/dca.c
4728
DBG(dca, DWARN, "kCF MODEL: %s", (char *)ext_info->ei_model);
usr/src/uts/common/crypto/io/dca.c
4758
dca_fma_init(dca_t *dca)
usr/src/uts/common/crypto/io/dca.c
4766
dca->fm_capabilities = ddi_getprop(DDI_DEV_T_ANY, dca->dca_dip,
usr/src/uts/common/crypto/io/dca.c
4770
DBG(dca, DWARN, "dca->fm_capabilities = 0x%x", dca->fm_capabilities);
usr/src/uts/common/crypto/io/dca.c
4773
if (dca->fm_capabilities) {
usr/src/uts/common/crypto/io/dca.c
4778
ddi_fm_init(dca->dca_dip, &dca->fm_capabilities, &fm_ibc);
usr/src/uts/common/crypto/io/dca.c
4779
DBG(dca, DWARN, "fm_capable() = 0x%x",
usr/src/uts/common/crypto/io/dca.c
4780
ddi_fm_capable(dca->dca_dip));
usr/src/uts/common/crypto/io/dca.c
4785
if (DDI_FM_EREPORT_CAP(dca->fm_capabilities) ||
usr/src/uts/common/crypto/io/dca.c
4786
DDI_FM_ERRCB_CAP(dca->fm_capabilities))
usr/src/uts/common/crypto/io/dca.c
4787
pci_ereport_setup(dca->dca_dip);
usr/src/uts/common/crypto/io/dca.c
4793
if (DDI_FM_ERRCB_CAP(dca->fm_capabilities)) {
usr/src/uts/common/crypto/io/dca.c
4794
ddi_fm_handler_register(dca->dca_dip, dca_fm_error_cb,
usr/src/uts/common/crypto/io/dca.c
4795
(void *)dca);
usr/src/uts/common/crypto/io/dca.c
4809
dca_fma_fini(dca_t *dca)
usr/src/uts/common/crypto/io/dca.c
4812
if (dca->fm_capabilities) {
usr/src/uts/common/crypto/io/dca.c
4817
if (DDI_FM_EREPORT_CAP(dca->fm_capabilities) ||
usr/src/uts/common/crypto/io/dca.c
4818
DDI_FM_ERRCB_CAP(dca->fm_capabilities)) {
usr/src/uts/common/crypto/io/dca.c
4819
pci_ereport_teardown(dca->dca_dip);
usr/src/uts/common/crypto/io/dca.c
4826
if (DDI_FM_ERRCB_CAP(dca->fm_capabilities)) {
usr/src/uts/common/crypto/io/dca.c
4827
ddi_fm_handler_unregister(dca->dca_dip);
usr/src/uts/common/crypto/io/dca.c
4831
ddi_fm_fini(dca->dca_dip);
usr/src/uts/common/crypto/io/dca.c
4832
DBG(dca, DWARN, "fm_capable() = 0x%x",
usr/src/uts/common/crypto/io/dca.c
4833
ddi_fm_capable(dca->dca_dip));
usr/src/uts/common/crypto/io/dca.c
4845
dca_t *dca = (dca_t *)impl_data;
usr/src/uts/common/crypto/io/dca.c
4849
dca_failure(dca, DDI_DATAPATH_FAULT,
usr/src/uts/common/crypto/io/dca.c
4858
dca_check_acc_handle(dca_t *dca, ddi_acc_handle_t handle,
usr/src/uts/common/crypto/io/dca.c
4866
dca_failure(dca, DDI_DATAPATH_FAULT,
usr/src/uts/common/crypto/io/dca.c
4876
dca_check_dma_handle(dca_t *dca, ddi_dma_handle_t handle,
usr/src/uts/common/crypto/io/dca.c
4884
dca_failure(dca, DDI_DATAPATH_FAULT,
usr/src/uts/common/crypto/io/dca.c
554
dca_t *dca;
usr/src/uts/common/crypto/io/dca.c
581
if ((dca = (dca_t *)ddi_get_driver_private(dip)) == NULL) {
usr/src/uts/common/crypto/io/dca.c
586
return (dca_resume(dca));
usr/src/uts/common/crypto/io/dca.c
65
static void dca_free_context_list(dca_t *dca);
usr/src/uts/common/crypto/io/dca.c
653
dca = ddi_get_soft_state(dca_state, instance);
usr/src/uts/common/crypto/io/dca.c
654
ASSERT(dca != NULL);
usr/src/uts/common/crypto/io/dca.c
655
dca->dca_dip = dip;
usr/src/uts/common/crypto/io/dca.c
656
WORKLIST(dca, MCR1)->dwl_prov = 0;
usr/src/uts/common/crypto/io/dca.c
657
WORKLIST(dca, MCR2)->dwl_prov = 0;
usr/src/uts/common/crypto/io/dca.c
659
dca->dca_pagesize = ddi_ptob(dip, 1);
usr/src/uts/common/crypto/io/dca.c
682
dca->dca_model = dca_devices[i].dd_model;
usr/src/uts/common/crypto/io/dca.c
683
dca->dca_devid = dca_devices[i].dd_device_id;
usr/src/uts/common/crypto/io/dca.c
694
dca->dca_model = dca_devices[i].dd_model;
usr/src/uts/common/crypto/io/dca.c
695
dca->dca_devid = dca_devices[i].dd_device_id;
usr/src/uts/common/crypto/io/dca.c
699
if (dca->dca_model == NULL) {
usr/src/uts/common/crypto/io/dca.c
700
dca->dca_model = unknowndev;
usr/src/uts/common/crypto/io/dca.c
701
dca_error(dca, "device not recognized, not supported");
usr/src/uts/common/crypto/io/dca.c
702
DBG(dca, DPCI, "i=%d venid=%x devid=%x rev=%d",
usr/src/uts/common/crypto/io/dca.c
707
dca->dca_model) != DDI_SUCCESS) {
usr/src/uts/common/crypto/io/dca.c
708
dca_error(dca, "unable to create description property");
usr/src/uts/common/crypto/io/dca.c
712
DBG(dca, DPCI, "PCI command=0x%x status=%x cachelinesz=%x",
usr/src/uts/common/crypto/io/dca.c
714
DBG(dca, DPCI, "mingnt=0x%x maxlat=0x%x lattmr=0x%x",
usr/src/uts/common/crypto/io/dca.c
720
(void) mutex_init(&dca->dca_intrlock, NULL, MUTEX_DRIVER, ibc);
usr/src/uts/common/crypto/io/dca.c
725
dca->dca_flags |= DCA_RNGSHA1;
usr/src/uts/common/crypto/io/dca.c
729
dca_fma_init(dca);
usr/src/uts/common/crypto/io/dca.c
732
if (dca_init(dca) != DDI_SUCCESS) {
usr/src/uts/common/crypto/io/dca.c
737
dca_ksinit(dca);
usr/src/uts/common/crypto/io/dca.c
740
if (ddi_regs_map_setup(dip, 1, (caddr_t *)&dca->dca_regs,
usr/src/uts/common/crypto/io/dca.c
741
0, 0, &dca_regsattr, &dca->dca_regs_handle) != DDI_SUCCESS) {
usr/src/uts/common/crypto/io/dca.c
742
dca_error(dca, "unable to map registers");
usr/src/uts/common/crypto/io/dca.c
746
DBG(dca, DCHATTY, "MCR1 = %x", GETCSR(dca, CSR_MCR1));
usr/src/uts/common/crypto/io/dca.c
747
DBG(dca, DCHATTY, "CONTROL = %x", GETCSR(dca, CSR_DMACTL));
usr/src/uts/common/crypto/io/dca.c
748
DBG(dca, DCHATTY, "STATUS = %x", GETCSR(dca, CSR_DMASTAT));
usr/src/uts/common/crypto/io/dca.c
749
DBG(dca, DCHATTY, "DMAEA = %x", GETCSR(dca, CSR_DMAEA));
usr/src/uts/common/crypto/io/dca.c
750
DBG(dca, DCHATTY, "MCR2 = %x", GETCSR(dca, CSR_MCR2));
usr/src/uts/common/crypto/io/dca.c
753
if (dca_reset(dca, 0) < 0) {
usr/src/uts/common/crypto/io/dca.c
758
PUTCSR(dca, CSR_DMACTL, DMACTL_BE32 | DMACTL_BE64);
usr/src/uts/common/crypto/io/dca.c
759
if (dca_check_acc_handle(dca, dca->dca_regs_handle,
usr/src/uts/common/crypto/io/dca.c
765
if (ddi_add_intr(dip, 0, &dca->dca_icookie, NULL, dca_intr,
usr/src/uts/common/crypto/io/dca.c
766
(void *)dca) != DDI_SUCCESS) {
usr/src/uts/common/crypto/io/dca.c
767
DBG(dca, DWARN, "ddi_add_intr failed");
usr/src/uts/common/crypto/io/dca.c
780
if (dca->dca_devid == 0x5825) {
usr/src/uts/common/crypto/io/dca.c
782
SETBIT(dca, CSR_DMACTL,
usr/src/uts/common/crypto/io/dca.c
785
SETBIT(dca, CSR_DMACTL,
usr/src/uts/common/crypto/io/dca.c
788
if (dca_check_acc_handle(dca, dca->dca_regs_handle,
usr/src/uts/common/crypto/io/dca.c
799
dca_prov_info1.pi_provider_handle = dca;
usr/src/uts/common/crypto/io/dca.c
801
&WORKLIST(dca, MCR1)->dwl_prov)) != CRYPTO_SUCCESS) {
usr/src/uts/common/crypto/io/dca.c
813
dca_prov_info2.pi_provider_handle = dca;
usr/src/uts/common/crypto/io/dca.c
815
&WORKLIST(dca, MCR2)->dwl_prov)) != CRYPTO_SUCCESS) {
usr/src/uts/common/crypto/io/dca.c
821
crypto_prov_notify(WORKLIST(dca, MCR1)->dwl_prov,
usr/src/uts/common/crypto/io/dca.c
823
crypto_prov_notify(WORKLIST(dca, MCR2)->dwl_prov,
usr/src/uts/common/crypto/io/dca.c
827
if ((ret = dca_random_init(dca)) != CRYPTO_SUCCESS) {
usr/src/uts/common/crypto/io/dca.c
831
mutex_enter(&dca->dca_intrlock);
usr/src/uts/common/crypto/io/dca.c
832
dca->dca_jobtid = timeout(dca_jobtimeout, (void *)dca,
usr/src/uts/common/crypto/io/dca.c
834
mutex_exit(&dca->dca_intrlock);
usr/src/uts/common/crypto/io/dca.c
836
ddi_set_driver_private(dip, (caddr_t)dca);
usr/src/uts/common/crypto/io/dca.c
840
if (ddi_get_devstate(dca->dca_dip) != DDI_DEVSTATE_UP) {
usr/src/uts/common/crypto/io/dca.c
841
ddi_fm_service_impact(dca->dca_dip, DDI_SERVICE_RESTORED);
usr/src/uts/common/crypto/io/dca.c
848
if (WORKLIST(dca, MCR1)->dwl_prov != 0) {
usr/src/uts/common/crypto/io/dca.c
850
WORKLIST(dca, MCR1)->dwl_prov);
usr/src/uts/common/crypto/io/dca.c
852
if (WORKLIST(dca, MCR2)->dwl_prov != 0) {
usr/src/uts/common/crypto/io/dca.c
854
WORKLIST(dca, MCR2)->dwl_prov);
usr/src/uts/common/crypto/io/dca.c
857
CLRBIT(dca, CSR_DMACTL,
usr/src/uts/common/crypto/io/dca.c
860
ddi_remove_intr(dip, 0, dca->dca_icookie);
usr/src/uts/common/crypto/io/dca.c
862
if (dca->dca_regs_handle) {
usr/src/uts/common/crypto/io/dca.c
863
ddi_regs_map_free(&dca->dca_regs_handle);
usr/src/uts/common/crypto/io/dca.c
865
if (dca->dca_intrstats) {
usr/src/uts/common/crypto/io/dca.c
866
kstat_delete(dca->dca_intrstats);
usr/src/uts/common/crypto/io/dca.c
868
if (dca->dca_ksp) {
usr/src/uts/common/crypto/io/dca.c
869
kstat_delete(dca->dca_ksp);
usr/src/uts/common/crypto/io/dca.c
871
dca_uninit(dca);
usr/src/uts/common/crypto/io/dca.c
874
dca_fma_fini(dca);
usr/src/uts/common/crypto/io/dca.c
876
mutex_destroy(&dca->dca_intrlock);
usr/src/uts/common/crypto/io/dca.c
886
dca_t *dca;
usr/src/uts/common/crypto/io/dca.c
895
if ((dca = (dca_t *)ddi_get_driver_private(dip)) == NULL) {
usr/src/uts/common/crypto/io/dca.c
900
return (dca_suspend(dca));
usr/src/uts/common/crypto/io/dca.c
908
if ((dca = (dca_t *)ddi_get_driver_private(dip)) == NULL) {
usr/src/uts/common/crypto/io/dca.c
917
if (WORKLIST(dca, MCR1)->dwl_prov != 0) {
usr/src/uts/common/crypto/io/dca.c
919
WORKLIST(dca, MCR1)->dwl_prov) != CRYPTO_SUCCESS) {
usr/src/uts/common/crypto/io/dca.c
920
dca_error(dca, "unable to unregister MCR1 from kcf");
usr/src/uts/common/crypto/io/dca.c
925
if (WORKLIST(dca, MCR2)->dwl_prov != 0) {
usr/src/uts/common/crypto/io/dca.c
927
WORKLIST(dca, MCR2)->dwl_prov) != CRYPTO_SUCCESS) {
usr/src/uts/common/crypto/io/dca.c
928
dca_error(dca, "unable to unregister MCR2 from kcf");
usr/src/uts/common/crypto/io/dca.c
937
dca_free_context_list(dca);
usr/src/uts/common/crypto/io/dca.c
940
dca_random_fini(dca);
usr/src/uts/common/crypto/io/dca.c
943
dca_rejectjobs(dca);
usr/src/uts/common/crypto/io/dca.c
946
mutex_enter(&dca->dca_intrlock);
usr/src/uts/common/crypto/io/dca.c
947
tid = dca->dca_jobtid;
usr/src/uts/common/crypto/io/dca.c
948
dca->dca_jobtid = 0;
usr/src/uts/common/crypto/io/dca.c
949
mutex_exit(&dca->dca_intrlock);
usr/src/uts/common/crypto/io/dca.c
955
CLRBIT(dca, CSR_DMACTL, DMACTL_MCR1IE | DMACTL_MCR2IE | DMACTL_EIE);
usr/src/uts/common/crypto/io/dca.c
958
ddi_remove_intr(dip, 0, dca->dca_icookie);
usr/src/uts/common/crypto/io/dca.c
961
ddi_regs_map_free(&dca->dca_regs_handle);
usr/src/uts/common/crypto/io/dca.c
964
if (dca->dca_intrstats) {
usr/src/uts/common/crypto/io/dca.c
965
kstat_delete(dca->dca_intrstats);
usr/src/uts/common/crypto/io/dca.c
967
if (dca->dca_ksp) {
usr/src/uts/common/crypto/io/dca.c
968
kstat_delete(dca->dca_ksp);
usr/src/uts/common/crypto/io/dca.c
971
mutex_destroy(&dca->dca_intrlock);
usr/src/uts/common/crypto/io/dca.c
972
dca_uninit(dca);
usr/src/uts/common/crypto/io/dca.c
975
dca_fma_fini(dca);
usr/src/uts/common/crypto/io/dca.c
983
dca_resume(dca_t *dca)
usr/src/uts/common/crypto/io/dca.c
987
if (pci_config_setup(dca->dca_dip, &pci) != DDI_SUCCESS) {
usr/src/uts/common/crypto/io/dca.c
988
dca_error(dca, "unable to setup PCI config handle");
usr/src/uts/common/crypto/io/dca_3des.c
131
rv = dca_3desstart(dca, flags, reqp);
usr/src/uts/common/crypto/io/dca_3des.c
170
dca_t *dca = ctx->cc_provider;
usr/src/uts/common/crypto/io/dca_3des.c
192
DBG(dca, DWARN, "not enough output space (need %d, got %d)",
usr/src/uts/common/crypto/io/dca_3des.c
219
DBG(dca, DWARN,
usr/src/uts/common/crypto/io/dca_3des.c
248
DBG(dca, DWARN, "dca_3desupdate: dca_getbufbytes() failed");
usr/src/uts/common/crypto/io/dca_3des.c
274
rv = dca_3desstart(dca, flags, reqp);
usr/src/uts/common/crypto/io/dca_3des.c
291
dca_t *dca = ctx->cc_provider;
usr/src/uts/common/crypto/io/dca_3des.c
301
DBG(dca, DWARN, "dca_3desfinal: invalid nonzero residual");
usr/src/uts/common/crypto/io/dca_3des.c
378
dca_3desstart(dca_t *dca, uint32_t flags, dca_request_t *reqp)
usr/src/uts/common/crypto/io/dca_3des.c
436
DBG(dca, DWARN,
usr/src/uts/common/crypto/io/dca_3des.c
456
dca_sgcheck(dca, reqp->dr_in, DCA_SG_CONTIG) ||
usr/src/uts/common/crypto/io/dca_3des.c
457
dca_sgcheck(dca, reqp->dr_out, DCA_SG_WALIGN)) {
usr/src/uts/common/crypto/io/dca_3des.c
467
DBG(dca, DWARN,
usr/src/uts/common/crypto/io/dca_3des.c
478
DBG(dca, DWARN,
usr/src/uts/common/crypto/io/dca_3des.c
490
if (dca_check_dma_handle(dca, reqp->dr_ibuf_dmah,
usr/src/uts/common/crypto/io/dca_3des.c
526
return (dca_start(dca, reqp, MCR1, 1));
usr/src/uts/common/crypto/io/dca_3des.c
62
dca_t *dca = ctx->cc_provider;
usr/src/uts/common/crypto/io/dca_3des.c
660
dca_t *dca = ctx->cc_provider;
usr/src/uts/common/crypto/io/dca_3des.c
67
DBG(dca, DWARN, "input not an integral number of DES blocks");
usr/src/uts/common/crypto/io/dca_3des.c
686
if ((des_ctx = dca_getreq(dca, MCR1, 1)) == NULL) {
usr/src/uts/common/crypto/io/dca_3des.c
687
dca_error(dca, "unable to allocate request for 3DES");
usr/src/uts/common/crypto/io/dca_3des.c
92
DBG(dca, DWARN, "inadequate output space (need %d, got %d)",
usr/src/uts/common/crypto/io/dca_debug.c
45
dca_dprintf(dca_t *dca, int level, const char *fmt, ...)
usr/src/uts/common/crypto/io/dca_debug.c
52
if (dca == NULL) {
usr/src/uts/common/crypto/io/dca_debug.c
56
ddi_driver_name(dca->dca_dip),
usr/src/uts/common/crypto/io/dca_debug.c
57
ddi_get_instance(dca->dca_dip), fmt);
usr/src/uts/common/crypto/io/dca_debug.c
66
dca_error(dca_t *dca, const char *fmt, ...)
usr/src/uts/common/crypto/io/dca_debug.c
70
dca_dipverror(dca->dca_dip, fmt, ap);
usr/src/uts/common/crypto/io/dca_dsa.c
106
if (dca_check_dma_handle(dca, reqp->dr_ibuf_dmah,
usr/src/uts/common/crypto/io/dca_dsa.c
136
rv = dca_start(dca, reqp, MCR2, 1);
usr/src/uts/common/crypto/io/dca_dsa.c
203
dca_t *dca = ctx->cc_provider;
usr/src/uts/common/crypto/io/dca_dsa.c
215
DBG(dca, DWARN, "dca_dsa_verify: input length != %d", SHA1LEN);
usr/src/uts/common/crypto/io/dca_dsa.c
221
DBG(dca, DWARN, "dca_dsa_verify: signature length != %d",
usr/src/uts/common/crypto/io/dca_dsa.c
237
DBG(dca, DWARN,
usr/src/uts/common/crypto/io/dca_dsa.c
244
DBG(dca, DWARN,
usr/src/uts/common/crypto/io/dca_dsa.c
252
DBG(dca, DWARN,
usr/src/uts/common/crypto/io/dca_dsa.c
268
if (dca_check_dma_handle(dca, reqp->dr_ibuf_dmah,
usr/src/uts/common/crypto/io/dca_dsa.c
313
rv = dca_start(dca, reqp, MCR2, 1);
usr/src/uts/common/crypto/io/dca_dsa.c
387
dca_t *dca = (dca_t *)ctx->cc_provider;
usr/src/uts/common/crypto/io/dca_dsa.c
393
if ((reqp = dca_getreq(dca, MCR2, 1)) == NULL) {
usr/src/uts/common/crypto/io/dca_dsa.c
394
dca_error(dca,
usr/src/uts/common/crypto/io/dca_dsa.c
59
dca_t *dca = ctx->cc_provider;
usr/src/uts/common/crypto/io/dca_dsa.c
67
DBG(dca, DWARN, "dca_dsa_sign: data length != %d", SHA1LEN);
usr/src/uts/common/crypto/io/dca_dsa.c
74
DBG(dca, DWARN,
usr/src/uts/common/crypto/io/dca_dsa.c
97
DBG(dca, DWARN, "dca_dsa_sign: dca_gather() failed");
usr/src/uts/common/crypto/io/dca_kstat.c
145
dca->dca_ksp->ks_update = dca_ksupdate;
usr/src/uts/common/crypto/io/dca_kstat.c
146
dca->dca_ksp->ks_private = dca;
usr/src/uts/common/crypto/io/dca_kstat.c
147
kstat_install(dca->dca_ksp);
usr/src/uts/common/crypto/io/dca_kstat.c
157
dca_t *dca;
usr/src/uts/common/crypto/io/dca_kstat.c
161
dca = (dca_t *)ksp->ks_private;
usr/src/uts/common/crypto/io/dca_kstat.c
166
dca->dca_stats[i] = dkp->ds_algs[i].value.ull;
usr/src/uts/common/crypto/io/dca_kstat.c
169
WORKLIST(dca, i)->dwl_submit =
usr/src/uts/common/crypto/io/dca_kstat.c
171
WORKLIST(dca, i)->dwl_flowctl =
usr/src/uts/common/crypto/io/dca_kstat.c
177
if (dca->dca_flags & DCA_FAILED) {
usr/src/uts/common/crypto/io/dca_kstat.c
180
} else if ((WORKLIST(dca, MCR1)->dwl_drain) ||
usr/src/uts/common/crypto/io/dca_kstat.c
181
(WORKLIST(dca, MCR2)->dwl_drain)) {
usr/src/uts/common/crypto/io/dca_kstat.c
190
dkp->ds_algs[i].value.ull = dca->dca_stats[i];
usr/src/uts/common/crypto/io/dca_kstat.c
194
WORKLIST(dca, i)->dwl_submit;
usr/src/uts/common/crypto/io/dca_kstat.c
196
WORKLIST(dca, i)->dwl_flowctl;
usr/src/uts/common/crypto/io/dca_kstat.c
198
WORKLIST(dca, i)->dwl_lowater;
usr/src/uts/common/crypto/io/dca_kstat.c
200
WORKLIST(dca, i)->dwl_hiwater;
usr/src/uts/common/crypto/io/dca_kstat.c
202
WORKLIST(dca, i)->dwl_reqspermcr;
usr/src/uts/common/crypto/io/dca_kstat.c
46
dca_ksinit(dca_t *dca)
usr/src/uts/common/crypto/io/dca_kstat.c
51
if (ddi_getprop(DDI_DEV_T_ANY, dca->dca_dip,
usr/src/uts/common/crypto/io/dca_kstat.c
60
instance = ddi_get_instance(dca->dca_dip);
usr/src/uts/common/crypto/io/dca_kstat.c
66
if ((dca->dca_intrstats = kstat_create(DRIVER, instance, buf,
usr/src/uts/common/crypto/io/dca_kstat.c
68
dca_error(dca, "unable to create interrupt kstat");
usr/src/uts/common/crypto/io/dca_kstat.c
70
kstat_install(dca->dca_intrstats);
usr/src/uts/common/crypto/io/dca_kstat.c
76
if ((dca->dca_ksp = kstat_create(DRIVER, instance, NULL, "misc",
usr/src/uts/common/crypto/io/dca_kstat.c
79
dca_error(dca, "unable to create kstats");
usr/src/uts/common/crypto/io/dca_kstat.c
81
dca_stat_t *dkp = (dca_stat_t *)dca->dca_ksp->ks_data;
usr/src/uts/common/crypto/io/dca_rng.c
106
dca_sgcheck(dca, reqp->dr_out, DCA_SG_WALIGN)) {
usr/src/uts/common/crypto/io/dca_rng.c
143
return (dca_start(dca, reqp, MCR2, 1));
usr/src/uts/common/crypto/io/dca_rng.c
212
dca_random_init(dca_t *dca)
usr/src/uts/common/crypto/io/dca_rng.c
215
mutex_init(&dca->dca_random_lock, NULL, MUTEX_DRIVER, NULL);
usr/src/uts/common/crypto/io/dca_rng.c
217
if ((dca->dca_buf1 = kmem_alloc(RANDOM_BUFFER_SIZE, KM_SLEEP)) ==
usr/src/uts/common/crypto/io/dca_rng.c
219
mutex_destroy(&dca->dca_random_lock);
usr/src/uts/common/crypto/io/dca_rng.c
223
if ((dca->dca_buf2 = kmem_alloc(RANDOM_BUFFER_SIZE, KM_SLEEP)) ==
usr/src/uts/common/crypto/io/dca_rng.c
225
mutex_destroy(&dca->dca_random_lock);
usr/src/uts/common/crypto/io/dca_rng.c
226
kmem_free(dca->dca_buf1, RANDOM_BUFFER_SIZE);
usr/src/uts/common/crypto/io/dca_rng.c
234
dca_random_fini(dca_t *dca)
usr/src/uts/common/crypto/io/dca_rng.c
236
kmem_free(dca->dca_buf1, RANDOM_BUFFER_SIZE);
usr/src/uts/common/crypto/io/dca_rng.c
237
kmem_free(dca->dca_buf2, RANDOM_BUFFER_SIZE);
usr/src/uts/common/crypto/io/dca_rng.c
238
dca->dca_buf1 = dca->dca_buf2 = dca->dca_buf_ptr = NULL;
usr/src/uts/common/crypto/io/dca_rng.c
239
(void) mutex_destroy(&dca->dca_random_lock);
usr/src/uts/common/crypto/io/dca_rng.c
243
dca_random_buffer(dca_t *dca, caddr_t buf, int len)
usr/src/uts/common/crypto/io/dca_rng.c
249
mutex_enter(&dca->dca_random_lock);
usr/src/uts/common/crypto/io/dca_rng.c
251
if (dca->dca_buf_ptr == NULL) {
usr/src/uts/common/crypto/io/dca_rng.c
252
if (dca->dca_buf1 == NULL || dca->dca_buf2 == NULL) {
usr/src/uts/common/crypto/io/dca_rng.c
253
mutex_exit(&dca->dca_random_lock);
usr/src/uts/common/crypto/io/dca_rng.c
258
if (dca_rng(dca, (uchar_t *)dca->dca_buf1, RANDOM_BUFFER_SIZE,
usr/src/uts/common/crypto/io/dca_rng.c
260
mutex_exit(&dca->dca_random_lock);
usr/src/uts/common/crypto/io/dca_rng.c
264
atomic_or_32(&dca->dca_random_filling, 0x1);
usr/src/uts/common/crypto/io/dca_rng.c
267
dca->dca_buf_ptr = dca->dca_buf2;
usr/src/uts/common/crypto/io/dca_rng.c
268
dca->dca_index = RANDOM_BUFFER_SIZE;
usr/src/uts/common/crypto/io/dca_rng.c
273
if (dca->dca_index >= RANDOM_BUFFER_SIZE) {
usr/src/uts/common/crypto/io/dca_rng.c
275
while (dca->dca_random_filling) {
usr/src/uts/common/crypto/io/dca_rng.c
283
mutex_exit(&dca->dca_random_lock);
usr/src/uts/common/crypto/io/dca_rng.c
288
if (dca->dca_buf_ptr == dca->dca_buf1) {
usr/src/uts/common/crypto/io/dca_rng.c
289
dca->dca_buf_ptr = dca->dca_buf2;
usr/src/uts/common/crypto/io/dca_rng.c
290
fill_buf = dca->dca_buf1;
usr/src/uts/common/crypto/io/dca_rng.c
292
dca->dca_buf_ptr = dca->dca_buf1;
usr/src/uts/common/crypto/io/dca_rng.c
293
fill_buf = dca->dca_buf2;
usr/src/uts/common/crypto/io/dca_rng.c
296
atomic_or_32(&dca->dca_random_filling, 0x1);
usr/src/uts/common/crypto/io/dca_rng.c
297
dca->dca_index = 0;
usr/src/uts/common/crypto/io/dca_rng.c
299
if ((rv = dca_rng(dca, (uchar_t *)fill_buf,
usr/src/uts/common/crypto/io/dca_rng.c
301
mutex_exit(&dca->dca_random_lock);
usr/src/uts/common/crypto/io/dca_rng.c
306
if (dca->dca_buf_ptr[dca->dca_index] != '\0')
usr/src/uts/common/crypto/io/dca_rng.c
307
buf[i++] = dca->dca_buf_ptr[dca->dca_index];
usr/src/uts/common/crypto/io/dca_rng.c
309
dca->dca_index++;
usr/src/uts/common/crypto/io/dca_rng.c
312
mutex_exit(&dca->dca_random_lock);
usr/src/uts/common/crypto/io/dca_rng.c
319
dca_random_done(dca_t *dca)
usr/src/uts/common/crypto/io/dca_rng.c
322
atomic_and_32(&dca->dca_random_filling, 0x0);
usr/src/uts/common/crypto/io/dca_rng.c
46
int dca_random_buffer(dca_t *dca, caddr_t buf, int len);
usr/src/uts/common/crypto/io/dca_rng.c
51
dca_rng(dca_t *dca, uchar_t *buf, size_t len, crypto_req_handle_t req)
usr/src/uts/common/crypto/io/dca_rng.c
57
if ((reqp = dca_getreq(dca, MCR2, 1)) == NULL) {
usr/src/uts/common/crypto/io/dca_rng.c
58
dca_error(dca, "unable to allocate request for RNG");
usr/src/uts/common/crypto/io/dca_rng.c
73
rv = dca_rngstart(dca, reqp);
usr/src/uts/common/crypto/io/dca_rng.c
84
dca_rngstart(dca_t *dca, dca_request_t *reqp)
usr/src/uts/common/crypto/io/dca_rng.c
91
if (dca->dca_flags & DCA_RNGSHA1) {
usr/src/uts/common/crypto/io/dca_rsa.c
146
DBG(dca, DWARN,
usr/src/uts/common/crypto/io/dca_rsa.c
170
if ((rv = dca_pkcs1_padding(dca, reqp->dr_ibuf_kaddr,
usr/src/uts/common/crypto/io/dca_rsa.c
196
rv = dca_start(dca, reqp, MCR2, 1);
usr/src/uts/common/crypto/io/dca_rsa.c
416
dca_t *dca = (dca_t *)ctx->cc_provider;
usr/src/uts/common/crypto/io/dca_rsa.c
420
if ((reqp = dca_getreq(dca, MCR2, 1)) == NULL) {
usr/src/uts/common/crypto/io/dca_rsa.c
53
static int dca_pkcs1_padding(dca_t *dca, caddr_t buf, int flen, int tlen,
usr/src/uts/common/crypto/io/dca_rsa.c
65
dca_t *dca = ctx->cc_provider;
usr/src/uts/common/crypto/io/dca_rsa.c
679
dca_pkcs1_padding(dca_t *dca, caddr_t buf, int flen, int tlen, int private)
usr/src/uts/common/crypto/io/dca_rsa.c
702
if (dca_random_buffer(dca, &buf[flen+1], tlen - flen - 3) !=
usr/src/uts/common/crypto/io/dca_rsa.c
71
if (dca_sgcheck(dca, in, DCA_SG_CONTIG) ||
usr/src/uts/common/crypto/io/dca_rsa.c
72
dca_sgcheck(dca, out, DCA_SG_CONTIG)) {
usr/src/uts/common/crypto/io/dca_rsa.c
89
DBG(dca, DWARN,
usr/src/uts/common/sys/crypto/dca.h
136
typedef struct dca dca_t;
usr/src/uts/common/sys/crypto/dca.h
505
#define KIOIP(dca) KSTAT_INTR_PTR((dca)->dca_intrstats)
usr/src/uts/common/sys/crypto/dca.h
745
#define GETCSR(dca, reg) \
usr/src/uts/common/sys/crypto/dca.h
746
ddi_get32(dca->dca_regs_handle, (uint_t *)(dca->dca_regs + reg))
usr/src/uts/common/sys/crypto/dca.h
748
#define PUTCSR(dca, reg, val) \
usr/src/uts/common/sys/crypto/dca.h
749
ddi_put32(dca->dca_regs_handle, (uint_t *)(dca->dca_regs + reg), val)
usr/src/uts/common/sys/crypto/dca.h
751
#define SETBIT(dca, reg, val) \
usr/src/uts/common/sys/crypto/dca.h
752
PUTCSR(dca, reg, GETCSR(dca, reg) | val)
usr/src/uts/common/sys/crypto/dca.h
754
#define CLRBIT(dca, reg, val) \
usr/src/uts/common/sys/crypto/dca.h
755
PUTCSR(dca, reg, GETCSR(dca, reg) & ~val)
usr/src/uts/common/sys/crypto/dca.h
768
#define CHECK_REGS(dca) ddi_check_acc_handle(dca->dca_regs_handle)
usr/src/uts/common/sys/crypto/dca.h
775
#define WORKLIST(dca, mcr) (&((dca)->dca_worklist[mcr - 1]))
usr/src/uts/common/sys/crypto/dca.h
793
#define DBG(dca, lvl, ...)
usr/src/uts/common/sys/crypto/dca.h
876
int dca_random_buffer(dca_t *dca, caddr_t buf, int len);
usr/src/uts/common/sys/crypto/dca.h
920
int dca_check_dma_handle(dca_t *dca, ddi_dma_handle_t handle,