Lines Matching refs:session
575 struct vbg_session *session, in vbg_set_session_event_filter() argument
590 session->requestor); in vbg_set_session_event_filter()
600 previous = session->event_filter; in vbg_set_session_event_filter()
601 session->event_filter |= or_mask; in vbg_set_session_event_filter()
602 session->event_filter &= ~not_mask; in vbg_set_session_event_filter()
605 changed = previous ^ session->event_filter; in vbg_set_session_event_filter()
628 session->event_filter); in vbg_set_session_event_filter()
629 session->event_filter = previous; in vbg_set_session_event_filter()
673 struct vbg_session *session, in vbg_set_host_capabilities() argument
690 session->requestor); in vbg_set_host_capabilities()
721 struct vbg_session *session, in vbg_acquire_session_capabilities() argument
752 not_mask &= session->acquired_guest_caps; in vbg_acquire_session_capabilities()
753 or_mask &= ~session->acquired_guest_caps; in vbg_acquire_session_capabilities()
767 session->acquired_guest_caps |= or_mask; in vbg_acquire_session_capabilities()
768 session->acquired_guest_caps &= ~not_mask; in vbg_acquire_session_capabilities()
771 ret = vbg_set_host_capabilities(gdev, session, session_termination); in vbg_acquire_session_capabilities()
777 session->acquired_guest_caps &= ~or_mask; in vbg_acquire_session_capabilities()
778 session->acquired_guest_caps |= not_mask; in vbg_acquire_session_capabilities()
826 struct vbg_session *session, in vbg_set_session_capabilities() argument
843 previous = session->set_guest_caps; in vbg_set_session_capabilities()
844 session->set_guest_caps |= or_mask; in vbg_set_session_capabilities()
845 session->set_guest_caps &= ~not_mask; in vbg_set_session_capabilities()
848 changed = previous ^ session->set_guest_caps; in vbg_set_session_capabilities()
854 ret = vbg_set_host_capabilities(gdev, session, session_termination); in vbg_set_session_capabilities()
858 session->set_guest_caps); in vbg_set_session_capabilities()
859 session->set_guest_caps = previous; in vbg_set_session_capabilities()
1058 struct vbg_session *session; in vbg_core_open_session() local
1060 session = kzalloc(sizeof(*session), GFP_KERNEL); in vbg_core_open_session()
1061 if (!session) in vbg_core_open_session()
1064 session->gdev = gdev; in vbg_core_open_session()
1065 session->requestor = requestor; in vbg_core_open_session()
1067 return session; in vbg_core_open_session()
1074 void vbg_core_close_session(struct vbg_session *session) in vbg_core_close_session() argument
1076 struct vbg_dev *gdev = session->gdev; in vbg_core_close_session()
1079 vbg_acquire_session_capabilities(gdev, session, 0, U32_MAX, 0, true); in vbg_core_close_session()
1080 vbg_set_session_capabilities(gdev, session, 0, U32_MAX, true); in vbg_core_close_session()
1081 vbg_set_session_event_filter(gdev, session, 0, U32_MAX, true); in vbg_core_close_session()
1083 for (i = 0; i < ARRAY_SIZE(session->hgcm_client_ids); i++) { in vbg_core_close_session()
1084 if (!session->hgcm_client_ids[i]) in vbg_core_close_session()
1089 session->hgcm_client_ids[i], &rc); in vbg_core_close_session()
1092 kfree(session); in vbg_core_close_session()
1139 struct vbg_session *session) in vbg_get_allowed_event_mask_for_session() argument
1142 u32 session_acquired_caps = session->acquired_guest_caps; in vbg_get_allowed_event_mask_for_session()
1157 struct vbg_session *session, in vbg_wait_event_cond() argument
1167 events &= vbg_get_allowed_event_mask_for_session(gdev, session); in vbg_wait_event_cond()
1168 wakeup = events || session->cancel_waiters; in vbg_wait_event_cond()
1177 struct vbg_session *session, in vbg_consume_events_locked() argument
1182 events &= vbg_get_allowed_event_mask_for_session(gdev, session); in vbg_consume_events_locked()
1188 struct vbg_session *session, in vbg_ioctl_wait_for_events() argument
1209 vbg_wait_event_cond(gdev, session, event_mask), in vbg_ioctl_wait_for_events()
1214 if (timeout < 0 || session->cancel_waiters) { in vbg_ioctl_wait_for_events()
1220 vbg_consume_events_locked(gdev, session, event_mask); in vbg_ioctl_wait_for_events()
1235 struct vbg_session *session, in vbg_ioctl_interrupt_all_wait_events() argument
1244 session->cancel_waiters = true; in vbg_ioctl_interrupt_all_wait_events()
1259 static int vbg_req_allowed(struct vbg_dev *gdev, struct vbg_session *session, in vbg_req_allowed() argument
1341 (session->requestor & VMMDEV_REQUESTOR_USER_DEVICE)) { in vbg_req_allowed()
1351 struct vbg_session *session, void *data) in vbg_ioctl_vmmrequest() argument
1365 ret = vbg_req_allowed(gdev, session, data); in vbg_ioctl_vmmrequest()
1376 struct vbg_session *session, in vbg_ioctl_hgcm_connect() argument
1387 for (i = 0; i < ARRAY_SIZE(session->hgcm_client_ids); i++) { in vbg_ioctl_hgcm_connect()
1388 if (!session->hgcm_client_ids[i]) { in vbg_ioctl_hgcm_connect()
1389 session->hgcm_client_ids[i] = U32_MAX; in vbg_ioctl_hgcm_connect()
1395 if (i >= ARRAY_SIZE(session->hgcm_client_ids)) in vbg_ioctl_hgcm_connect()
1398 ret = vbg_hgcm_connect(gdev, session->requestor, &conn->u.in.loc, in vbg_ioctl_hgcm_connect()
1404 session->hgcm_client_ids[i] = client_id; in vbg_ioctl_hgcm_connect()
1407 session->hgcm_client_ids[i] = 0; in vbg_ioctl_hgcm_connect()
1415 struct vbg_session *session, in vbg_ioctl_hgcm_disconnect() argument
1429 for (i = 0; i < ARRAY_SIZE(session->hgcm_client_ids); i++) { in vbg_ioctl_hgcm_disconnect()
1430 if (session->hgcm_client_ids[i] == client_id) { in vbg_ioctl_hgcm_disconnect()
1431 session->hgcm_client_ids[i] = U32_MAX; in vbg_ioctl_hgcm_disconnect()
1437 if (i >= ARRAY_SIZE(session->hgcm_client_ids)) in vbg_ioctl_hgcm_disconnect()
1440 ret = vbg_hgcm_disconnect(gdev, session->requestor, client_id, in vbg_ioctl_hgcm_disconnect()
1445 session->hgcm_client_ids[i] = 0; in vbg_ioctl_hgcm_disconnect()
1447 session->hgcm_client_ids[i] = client_id; in vbg_ioctl_hgcm_disconnect()
1468 struct vbg_session *session, bool f32bit, in vbg_ioctl_hgcm_call() argument
1523 for (i = 0; i < ARRAY_SIZE(session->hgcm_client_ids); i++) in vbg_ioctl_hgcm_call()
1524 if (session->hgcm_client_ids[i] == client_id) in vbg_ioctl_hgcm_call()
1527 if (i >= ARRAY_SIZE(session->hgcm_client_ids)) { in vbg_ioctl_hgcm_call()
1534 ret = vbg_hgcm_call32(gdev, session->requestor, client_id, in vbg_ioctl_hgcm_call()
1539 ret = vbg_hgcm_call(gdev, session->requestor, client_id, in vbg_ioctl_hgcm_call()
1568 struct vbg_session *session, in vbg_ioctl_change_filter_mask() argument
1582 return vbg_set_session_event_filter(gdev, session, or_mask, not_mask, in vbg_ioctl_change_filter_mask()
1587 struct vbg_session *session, in vbg_ioctl_acquire_guest_capabilities() argument
1605 return vbg_acquire_session_capabilities(gdev, session, or_mask, in vbg_ioctl_acquire_guest_capabilities()
1610 struct vbg_session *session, struct vbg_ioctl_set_guest_caps *caps) in vbg_ioctl_change_guest_capabilities() argument
1624 ret = vbg_set_session_capabilities(gdev, session, or_mask, not_mask, in vbg_ioctl_change_guest_capabilities()
1629 caps->u.out.session_caps = session->set_guest_caps; in vbg_ioctl_change_guest_capabilities()
1652 struct vbg_session *session, in vbg_ioctl_write_core_dump() argument
1661 session->requestor); in vbg_ioctl_write_core_dump()
1679 int vbg_core_ioctl(struct vbg_session *session, unsigned int req, void *data) in vbg_core_ioctl() argument
1682 struct vbg_dev *gdev = session->gdev; in vbg_core_ioctl()
1699 return vbg_ioctl_vmmrequest(gdev, session, data); in vbg_core_ioctl()
1709 return vbg_ioctl_hgcm_connect(gdev, session, data); in vbg_core_ioctl()
1711 return vbg_ioctl_hgcm_disconnect(gdev, session, data); in vbg_core_ioctl()
1713 return vbg_ioctl_wait_for_events(gdev, session, data); in vbg_core_ioctl()
1715 return vbg_ioctl_interrupt_all_wait_events(gdev, session, data); in vbg_core_ioctl()
1717 return vbg_ioctl_change_filter_mask(gdev, session, data); in vbg_core_ioctl()
1719 return vbg_ioctl_acquire_guest_capabilities(gdev, session, data); in vbg_core_ioctl()
1721 return vbg_ioctl_change_guest_capabilities(gdev, session, data); in vbg_core_ioctl()
1725 return vbg_ioctl_write_core_dump(gdev, session, data); in vbg_core_ioctl()
1736 return vbg_ioctl_hgcm_call(gdev, session, f32bit, data); in vbg_core_ioctl()