Lines Matching refs:txwin
198 struct pseries_vas_window *txwin = data; in pseries_vas_fault_thread_fn() local
203 while (atomic_read(&txwin->pending_faults)) { in pseries_vas_fault_thread_fn()
204 rc = h_get_nx_fault(txwin->vas_win.winid, (u64)virt_to_phys(&crb)); in pseries_vas_fault_thread_fn()
206 tsk_ref = &txwin->vas_win.task_ref; in pseries_vas_fault_thread_fn()
210 atomic_dec(&txwin->pending_faults); in pseries_vas_fault_thread_fn()
227 struct pseries_vas_window *txwin = data; in pseries_vas_irq_handler() local
233 atomic_inc(&txwin->pending_faults); in pseries_vas_irq_handler()
241 static int allocate_setup_window(struct pseries_vas_window *txwin, in allocate_setup_window() argument
246 rc = h_allocate_vas_window(txwin, domain, wintype, DEF_WIN_CREDS); in allocate_setup_window()
254 txwin->fault_virq = irq_create_mapping(NULL, txwin->fault_irq); in allocate_setup_window()
255 if (!txwin->fault_virq) { in allocate_setup_window()
256 pr_err("Failed irq mapping %d\n", txwin->fault_irq); in allocate_setup_window()
261 txwin->name = kasprintf(GFP_KERNEL, "vas-win-%d", in allocate_setup_window()
262 txwin->vas_win.winid); in allocate_setup_window()
263 if (!txwin->name) { in allocate_setup_window()
268 rc = request_threaded_irq(txwin->fault_virq, in allocate_setup_window()
271 txwin->name, txwin); in allocate_setup_window()
274 txwin->vas_win.winid, txwin->fault_virq, rc); in allocate_setup_window()
278 txwin->vas_win.wcreds_max = DEF_WIN_CREDS; in allocate_setup_window()
282 kfree(txwin->name); in allocate_setup_window()
284 irq_dispose_mapping(txwin->fault_virq); in allocate_setup_window()
286 h_deallocate_vas_window(txwin->vas_win.winid); in allocate_setup_window()
290 static inline void free_irq_setup(struct pseries_vas_window *txwin) in free_irq_setup() argument
292 free_irq(txwin->fault_virq, txwin); in free_irq_setup()
293 kfree(txwin->name); in free_irq_setup()
294 irq_dispose_mapping(txwin->fault_virq); in free_irq_setup()
303 struct pseries_vas_window *txwin; in vas_allocate_window() local
306 txwin = kzalloc(sizeof(*txwin), GFP_KERNEL); in vas_allocate_window()
307 if (!txwin) in vas_allocate_window()
369 txwin->pid = mfspr(SPRN_PID); in vas_allocate_window()
390 rc = allocate_setup_window(txwin, (u64 *)&domain[0], in vas_allocate_window()
399 rc = h_modify_vas_window(txwin); in vas_allocate_window()
401 rc = get_vas_user_win_ref(&txwin->vas_win.task_ref); in vas_allocate_window()
405 txwin->win_type = cop_feat_caps->win_type; in vas_allocate_window()
416 list_add(&txwin->win_list, &caps->list); in vas_allocate_window()
419 vas_user_win_add_mm_context(&txwin->vas_win.task_ref); in vas_allocate_window()
420 return &txwin->vas_win; in vas_allocate_window()
424 put_vas_user_win_ref(&txwin->vas_win.task_ref); in vas_allocate_window()
433 free_irq_setup(txwin); in vas_allocate_window()
434 h_deallocate_vas_window(txwin->vas_win.winid); in vas_allocate_window()
437 kfree(txwin); in vas_allocate_window()