Lines Matching refs:vinst
34 base = window->vinst->paste_base_addr;
35 shift = window->vinst->paste_win_id_shift;
50 pbaddr = window->vinst->hvwc_bar_start;
60 pbaddr = window->vinst->uwc_bar_start;
77 name = kasprintf(GFP_KERNEL, "window-v%d-w%d", txwin->vinst->vas_id,
525 struct vas_instance *vinst = window->vinst;
533 vas_release_window_id(&vinst->ida, winid);
536 static struct vas_window *vas_window_alloc(struct vas_instance *vinst)
541 winid = vas_assign_window_id(&vinst->ida);
549 window->vinst = vinst;
561 vas_release_window_id(&vinst->ida, winid);
579 * NOTE: We access ->windows[] table and assume that vinst->mutex is held.
581 static struct vas_window *get_user_rxwin(struct vas_instance *vinst, u32 pswid)
588 if (vinst->vas_id != vasid)
591 rxwin = vinst->windows[winid];
605 static struct vas_window *get_vinst_rxwin(struct vas_instance *vinst,
610 mutex_lock(&vinst->mutex);
613 rxwin = get_user_rxwin(vinst, pswid);
615 rxwin = vinst->rxwin[cop] ?: ERR_PTR(-EINVAL);
620 mutex_unlock(&vinst->mutex);
640 static void set_vinst_win(struct vas_instance *vinst,
645 mutex_lock(&vinst->mutex);
652 WARN_ON_ONCE(vinst->rxwin[window->cop]);
653 vinst->rxwin[window->cop] = window;
656 WARN_ON_ONCE(vinst->windows[id] != NULL);
657 vinst->windows[id] = window;
659 mutex_unlock(&vinst->mutex);
669 struct vas_instance *vinst = window->vinst;
671 mutex_lock(&vinst->mutex);
674 WARN_ON_ONCE(!vinst->rxwin[window->cop]);
675 vinst->rxwin[window->cop] = NULL;
678 WARN_ON_ONCE(vinst->windows[id] != window);
679 vinst->windows[id] = NULL;
681 mutex_unlock(&vinst->mutex);
752 if (rxwin->vinst->virq)
753 winctx->irq_port = rxwin->vinst->irq_port;
856 struct vas_instance *vinst;
863 vinst = find_vas_instance(vasid);
864 if (!vinst) {
870 rxwin = vas_window_alloc(vinst);
885 set_vinst_win(vinst, rxwin);
954 if (txwin->vinst->virq)
955 winctx->fault_win_id = txwin->vinst->fault_win->winid;
961 if (txwin->vinst->virq)
962 winctx->irq_port = txwin->vinst->irq_port;
965 encode_pswid(txwin->vinst->vas_id, txwin->winid);
999 struct vas_instance *vinst;
1014 vinst = find_vas_instance(vasid);
1015 if (!vinst) {
1020 rxwin = get_vinst_rxwin(vinst, cop, attr->pswid);
1026 txwin = vas_window_alloc(vinst);
1063 if (!vinst->virq) {
1114 set_vinst_win(vinst, txwin);
1395 struct vas_window *vas_pswid_to_window(struct vas_instance *vinst,
1420 window = vinst->windows[winid];
1423 pr_err("PSWID decode: Could not find window for winid %d pswid %d vinst 0x%p\n",
1424 winid, pswid, vinst);