Lines Matching refs:ccw

261 static inline int ccw_does_data_transfer(struct ccw1 *ccw)  in ccw_does_data_transfer()  argument
264 if (ccw->count == 0) in ccw_does_data_transfer()
268 if (ccw_is_noop(ccw)) in ccw_does_data_transfer()
272 if (!ccw_is_skip(ccw)) in ccw_does_data_transfer()
280 if (ccw_is_read(ccw) || ccw_is_read_backward(ccw)) in ccw_does_data_transfer()
283 if (ccw_is_sense(ccw)) in ccw_does_data_transfer()
309 static inline int is_tic_within_range(struct ccw1 *ccw, u32 head, int len) in is_tic_within_range() argument
311 if (!ccw_is_tic(ccw)) in is_tic_within_range()
314 return is_cpa_within_range(ccw->cda, head, len); in is_tic_within_range()
354 struct ccw1 *ccw = &chain->ch_ccw[idx]; in ccwchain_cda_free() local
356 if (ccw_is_tic(ccw)) in ccwchain_cda_free()
359 kfree(phys_to_virt(ccw->cda)); in ccwchain_cda_free()
377 struct ccw1 *ccw = cp->guest_cp; in ccwchain_calc_length() local
391 if (!ccw_is_chain(ccw) && !is_tic_within_range(ccw, iova, cnt)) in ccwchain_calc_length()
394 ccw++; in ccwchain_calc_length()
486 static int ccwchain_fetch_tic(struct ccw1 *ccw, in ccwchain_fetch_tic() argument
494 if (is_cpa_within_range(ccw->cda, ccw_head, iter->ch_len)) { in ccwchain_fetch_tic()
495 ccw->cda = (__u32) (addr_t) (((char *)iter->ch_ccw) + in ccwchain_fetch_tic()
496 (ccw->cda - ccw_head)); in ccwchain_fetch_tic()
504 static unsigned long *get_guest_idal(struct ccw1 *ccw, in get_guest_idal() argument
521 if (ccw_is_idal(ccw)) { in get_guest_idal()
523 ret = vfio_dma_rw(vdev, ccw->cda, idaws, idal_len, false); in get_guest_idal()
531 idaws[0] = ccw->cda; in get_guest_idal()
536 idaws_f1[0] = ccw->cda; in get_guest_idal()
559 static int ccw_count_idaws(struct ccw1 *ccw, in ccw_count_idaws() argument
569 if (ccw->count) in ccw_count_idaws()
570 bytes = ccw->count; in ccw_count_idaws()
572 if (ccw_is_idal(ccw)) { in ccw_count_idaws()
575 ret = vfio_dma_rw(vdev, ccw->cda, &iova, size, false); in ccw_count_idaws()
586 iova = ccw->cda; in ccw_count_idaws()
601 static int ccwchain_fetch_ccw(struct ccw1 *ccw, in ccwchain_fetch_ccw() argument
614 idaw_nr = ccw_count_idaws(ccw, cp); in ccwchain_fetch_ccw()
619 idaws = get_guest_idal(ccw, cp, idaw_nr); in ccwchain_fetch_ccw()
647 if (ccw_does_data_transfer(ccw)) { in ccwchain_fetch_ccw()
655 ccw->cda = (__u32) virt_to_phys(idaws); in ccwchain_fetch_ccw()
656 ccw->flags |= CCW_FLAG_IDA; in ccwchain_fetch_ccw()
668 ccw->cda = 0; in ccwchain_fetch_ccw()
678 static int ccwchain_fetch_one(struct ccw1 *ccw, in ccwchain_fetch_one() argument
683 if (ccw_is_tic(ccw)) in ccwchain_fetch_one()
684 return ccwchain_fetch_tic(ccw, cp); in ccwchain_fetch_one()
686 return ccwchain_fetch_ccw(ccw, pa, cp); in ccwchain_fetch_one()
809 struct ccw1 *ccw; in cp_prefetch() local
820 ccw = &chain->ch_ccw[idx]; in cp_prefetch()
823 ret = ccwchain_fetch_one(ccw, pa, cp); in cp_prefetch()