Lines Matching refs:session
588 struct vbg_session *session, in vbg_set_session_event_filter() argument
603 session->requestor); in vbg_set_session_event_filter()
613 previous = session->event_filter; in vbg_set_session_event_filter()
614 session->event_filter |= or_mask; in vbg_set_session_event_filter()
615 session->event_filter &= ~not_mask; in vbg_set_session_event_filter()
618 changed = previous ^ session->event_filter; in vbg_set_session_event_filter()
641 session->event_filter); in vbg_set_session_event_filter()
642 session->event_filter = previous; in vbg_set_session_event_filter()
690 struct vbg_session *session, in vbg_set_host_capabilities() argument
707 session->requestor); in vbg_set_host_capabilities()
741 struct vbg_session *session, in vbg_acquire_session_capabilities() argument
772 not_mask &= session->acquired_guest_caps; in vbg_acquire_session_capabilities()
773 or_mask &= ~session->acquired_guest_caps; in vbg_acquire_session_capabilities()
787 session->acquired_guest_caps |= or_mask; in vbg_acquire_session_capabilities()
788 session->acquired_guest_caps &= ~not_mask; in vbg_acquire_session_capabilities()
791 ret = vbg_set_host_capabilities(gdev, session, session_termination); in vbg_acquire_session_capabilities()
797 session->acquired_guest_caps &= ~or_mask; in vbg_acquire_session_capabilities()
798 session->acquired_guest_caps |= not_mask; in vbg_acquire_session_capabilities()
848 struct vbg_session *session, in vbg_set_session_capabilities() argument
865 previous = session->set_guest_caps; in vbg_set_session_capabilities()
866 session->set_guest_caps |= or_mask; in vbg_set_session_capabilities()
867 session->set_guest_caps &= ~not_mask; in vbg_set_session_capabilities()
870 changed = previous ^ session->set_guest_caps; in vbg_set_session_capabilities()
876 ret = vbg_set_host_capabilities(gdev, session, session_termination); in vbg_set_session_capabilities()
880 session->set_guest_caps); in vbg_set_session_capabilities()
881 session->set_guest_caps = previous; in vbg_set_session_capabilities()
1082 struct vbg_session *session; in vbg_core_open_session() local
1084 session = kzalloc(sizeof(*session), GFP_KERNEL); in vbg_core_open_session()
1085 if (!session) in vbg_core_open_session()
1088 session->gdev = gdev; in vbg_core_open_session()
1089 session->requestor = requestor; in vbg_core_open_session()
1091 return session; in vbg_core_open_session()
1098 void vbg_core_close_session(struct vbg_session *session) in vbg_core_close_session() argument
1100 struct vbg_dev *gdev = session->gdev; in vbg_core_close_session()
1103 vbg_acquire_session_capabilities(gdev, session, 0, U32_MAX, 0, true); in vbg_core_close_session()
1104 vbg_set_session_capabilities(gdev, session, 0, U32_MAX, true); in vbg_core_close_session()
1105 vbg_set_session_event_filter(gdev, session, 0, U32_MAX, true); in vbg_core_close_session()
1107 for (i = 0; i < ARRAY_SIZE(session->hgcm_client_ids); i++) { in vbg_core_close_session()
1108 if (!session->hgcm_client_ids[i]) in vbg_core_close_session()
1113 session->hgcm_client_ids[i], &rc); in vbg_core_close_session()
1116 kfree(session); in vbg_core_close_session()
1163 struct vbg_session *session) in vbg_get_allowed_event_mask_for_session() argument
1166 u32 session_acquired_caps = session->acquired_guest_caps; in vbg_get_allowed_event_mask_for_session()
1181 struct vbg_session *session, in vbg_wait_event_cond() argument
1191 events &= vbg_get_allowed_event_mask_for_session(gdev, session); in vbg_wait_event_cond()
1192 wakeup = events || session->cancel_waiters; in vbg_wait_event_cond()
1201 struct vbg_session *session, in vbg_consume_events_locked() argument
1206 events &= vbg_get_allowed_event_mask_for_session(gdev, session); in vbg_consume_events_locked()
1212 struct vbg_session *session, in vbg_ioctl_wait_for_events() argument
1233 vbg_wait_event_cond(gdev, session, event_mask), in vbg_ioctl_wait_for_events()
1238 if (timeout < 0 || session->cancel_waiters) { in vbg_ioctl_wait_for_events()
1244 vbg_consume_events_locked(gdev, session, event_mask); in vbg_ioctl_wait_for_events()
1259 struct vbg_session *session, in vbg_ioctl_interrupt_all_wait_events() argument
1268 session->cancel_waiters = true; in vbg_ioctl_interrupt_all_wait_events()
1285 static int vbg_req_allowed(struct vbg_dev *gdev, struct vbg_session *session, in vbg_req_allowed() argument
1367 (session->requestor & VMMDEV_REQUESTOR_USER_DEVICE)) { in vbg_req_allowed()
1377 struct vbg_session *session, void *data) in vbg_ioctl_vmmrequest() argument
1391 ret = vbg_req_allowed(gdev, session, data); in vbg_ioctl_vmmrequest()
1402 struct vbg_session *session, in vbg_ioctl_hgcm_connect() argument
1413 for (i = 0; i < ARRAY_SIZE(session->hgcm_client_ids); i++) { in vbg_ioctl_hgcm_connect()
1414 if (!session->hgcm_client_ids[i]) { in vbg_ioctl_hgcm_connect()
1415 session->hgcm_client_ids[i] = U32_MAX; in vbg_ioctl_hgcm_connect()
1421 if (i >= ARRAY_SIZE(session->hgcm_client_ids)) in vbg_ioctl_hgcm_connect()
1424 ret = vbg_hgcm_connect(gdev, session->requestor, &conn->u.in.loc, in vbg_ioctl_hgcm_connect()
1430 session->hgcm_client_ids[i] = client_id; in vbg_ioctl_hgcm_connect()
1433 session->hgcm_client_ids[i] = 0; in vbg_ioctl_hgcm_connect()
1441 struct vbg_session *session, in vbg_ioctl_hgcm_disconnect() argument
1455 for (i = 0; i < ARRAY_SIZE(session->hgcm_client_ids); i++) { in vbg_ioctl_hgcm_disconnect()
1456 if (session->hgcm_client_ids[i] == client_id) { in vbg_ioctl_hgcm_disconnect()
1457 session->hgcm_client_ids[i] = U32_MAX; in vbg_ioctl_hgcm_disconnect()
1463 if (i >= ARRAY_SIZE(session->hgcm_client_ids)) in vbg_ioctl_hgcm_disconnect()
1466 ret = vbg_hgcm_disconnect(gdev, session->requestor, client_id, in vbg_ioctl_hgcm_disconnect()
1471 session->hgcm_client_ids[i] = 0; in vbg_ioctl_hgcm_disconnect()
1473 session->hgcm_client_ids[i] = client_id; in vbg_ioctl_hgcm_disconnect()
1494 struct vbg_session *session, bool f32bit, in vbg_ioctl_hgcm_call() argument
1549 for (i = 0; i < ARRAY_SIZE(session->hgcm_client_ids); i++) in vbg_ioctl_hgcm_call()
1550 if (session->hgcm_client_ids[i] == client_id) in vbg_ioctl_hgcm_call()
1553 if (i >= ARRAY_SIZE(session->hgcm_client_ids)) { in vbg_ioctl_hgcm_call()
1560 ret = vbg_hgcm_call32(gdev, session->requestor, client_id, in vbg_ioctl_hgcm_call()
1565 ret = vbg_hgcm_call(gdev, session->requestor, client_id, in vbg_ioctl_hgcm_call()
1594 struct vbg_session *session, in vbg_ioctl_change_filter_mask() argument
1608 return vbg_set_session_event_filter(gdev, session, or_mask, not_mask, in vbg_ioctl_change_filter_mask()
1613 struct vbg_session *session, in vbg_ioctl_acquire_guest_capabilities() argument
1631 return vbg_acquire_session_capabilities(gdev, session, or_mask, in vbg_ioctl_acquire_guest_capabilities()
1636 struct vbg_session *session, struct vbg_ioctl_set_guest_caps *caps) in vbg_ioctl_change_guest_capabilities() argument
1650 ret = vbg_set_session_capabilities(gdev, session, or_mask, not_mask, in vbg_ioctl_change_guest_capabilities()
1655 caps->u.out.session_caps = session->set_guest_caps; in vbg_ioctl_change_guest_capabilities()
1678 struct vbg_session *session, in vbg_ioctl_write_core_dump() argument
1687 session->requestor); in vbg_ioctl_write_core_dump()
1706 int vbg_core_ioctl(struct vbg_session *session, unsigned int req, void *data) in vbg_core_ioctl() argument
1709 struct vbg_dev *gdev = session->gdev; in vbg_core_ioctl()
1726 return vbg_ioctl_vmmrequest(gdev, session, data); in vbg_core_ioctl()
1736 return vbg_ioctl_hgcm_connect(gdev, session, data); in vbg_core_ioctl()
1738 return vbg_ioctl_hgcm_disconnect(gdev, session, data); in vbg_core_ioctl()
1740 return vbg_ioctl_wait_for_events(gdev, session, data); in vbg_core_ioctl()
1742 return vbg_ioctl_interrupt_all_wait_events(gdev, session, data); in vbg_core_ioctl()
1744 return vbg_ioctl_change_filter_mask(gdev, session, data); in vbg_core_ioctl()
1746 return vbg_ioctl_acquire_guest_capabilities(gdev, session, data); in vbg_core_ioctl()
1748 return vbg_ioctl_change_guest_capabilities(gdev, session, data); in vbg_core_ioctl()
1752 return vbg_ioctl_write_core_dump(gdev, session, data); in vbg_core_ioctl()
1763 return vbg_ioctl_hgcm_call(gdev, session, f32bit, data); in vbg_core_ioctl()