Lines Matching refs:gdev
46 static void vbg_guest_mappings_init(struct vbg_dev *gdev) in vbg_guest_mappings_init() argument
62 rc = vbg_req_perform(gdev, req); in vbg_guest_mappings_init()
81 gdev->guest_mappings_dummy_page = alloc_page(GFP_HIGHUSER); in vbg_guest_mappings_init()
82 if (!gdev->guest_mappings_dummy_page) in vbg_guest_mappings_init()
86 pages[i] = gdev->guest_mappings_dummy_page; in vbg_guest_mappings_init()
104 rc = vbg_req_perform(gdev, req); in vbg_guest_mappings_init()
106 gdev->guest_mappings = guest_mappings[i]; in vbg_guest_mappings_init()
116 if (!gdev->guest_mappings) { in vbg_guest_mappings_init()
117 __free_page(gdev->guest_mappings_dummy_page); in vbg_guest_mappings_init()
118 gdev->guest_mappings_dummy_page = NULL; in vbg_guest_mappings_init()
131 static void vbg_guest_mappings_exit(struct vbg_dev *gdev) in vbg_guest_mappings_exit() argument
136 if (!gdev->guest_mappings) in vbg_guest_mappings_exit()
151 rc = vbg_req_perform(gdev, req); in vbg_guest_mappings_exit()
160 vunmap(gdev->guest_mappings); in vbg_guest_mappings_exit()
161 gdev->guest_mappings = NULL; in vbg_guest_mappings_exit()
163 __free_page(gdev->guest_mappings_dummy_page); in vbg_guest_mappings_exit()
164 gdev->guest_mappings_dummy_page = NULL; in vbg_guest_mappings_exit()
173 static int vbg_report_guest_info(struct vbg_dev *gdev) in vbg_report_guest_info() argument
212 rc = vbg_req_perform(gdev, req2); in vbg_report_guest_info()
214 rc = vbg_req_perform(gdev, req1); in vbg_report_guest_info()
216 rc = vbg_req_perform(gdev, req1); in vbg_report_guest_info()
218 rc = vbg_req_perform(gdev, req2); in vbg_report_guest_info()
238 static int vbg_report_driver_status(struct vbg_dev *gdev, bool active) in vbg_report_driver_status() argument
255 rc = vbg_req_perform(gdev, req); in vbg_report_driver_status()
272 static int vbg_balloon_inflate(struct vbg_dev *gdev, u32 chunk_idx) in vbg_balloon_inflate() argument
274 struct vmmdev_memballoon_change *req = gdev->mem_balloon.change_req; in vbg_balloon_inflate()
298 rc = vbg_req_perform(gdev, req); in vbg_balloon_inflate()
305 gdev->mem_balloon.pages[chunk_idx] = pages; in vbg_balloon_inflate()
325 static int vbg_balloon_deflate(struct vbg_dev *gdev, u32 chunk_idx) in vbg_balloon_deflate() argument
327 struct vmmdev_memballoon_change *req = gdev->mem_balloon.change_req; in vbg_balloon_deflate()
328 struct page **pages = gdev->mem_balloon.pages[chunk_idx]; in vbg_balloon_deflate()
338 rc = vbg_req_perform(gdev, req); in vbg_balloon_deflate()
347 gdev->mem_balloon.pages[chunk_idx] = NULL; in vbg_balloon_deflate()
358 struct vbg_dev *gdev = in vbg_balloon_work() local
360 struct vmmdev_memballoon_info *req = gdev->mem_balloon.get_req; in vbg_balloon_work()
369 rc = vbg_req_perform(gdev, req); in vbg_balloon_work()
379 if (!gdev->mem_balloon.max_chunks) { in vbg_balloon_work()
380 gdev->mem_balloon.pages = in vbg_balloon_work()
381 devm_kcalloc(gdev->dev, req->phys_mem_chunks, in vbg_balloon_work()
383 if (!gdev->mem_balloon.pages) in vbg_balloon_work()
386 gdev->mem_balloon.max_chunks = req->phys_mem_chunks; in vbg_balloon_work()
390 if (chunks > gdev->mem_balloon.max_chunks) { in vbg_balloon_work()
392 __func__, chunks, gdev->mem_balloon.max_chunks); in vbg_balloon_work()
396 if (chunks > gdev->mem_balloon.chunks) { in vbg_balloon_work()
398 for (i = gdev->mem_balloon.chunks; i < chunks; i++) { in vbg_balloon_work()
399 ret = vbg_balloon_inflate(gdev, i); in vbg_balloon_work()
403 gdev->mem_balloon.chunks++; in vbg_balloon_work()
407 for (i = gdev->mem_balloon.chunks; i-- > chunks;) { in vbg_balloon_work()
408 ret = vbg_balloon_deflate(gdev, i); in vbg_balloon_work()
412 gdev->mem_balloon.chunks--; in vbg_balloon_work()
422 struct vbg_dev *gdev = timer_container_of(gdev, t, heartbeat_timer); in vbg_heartbeat_timer() local
424 vbg_req_perform(gdev, gdev->guest_heartbeat_req); in vbg_heartbeat_timer()
425 mod_timer(&gdev->heartbeat_timer, in vbg_heartbeat_timer()
426 msecs_to_jiffies(gdev->heartbeat_interval_ms)); in vbg_heartbeat_timer()
437 static int vbg_heartbeat_host_config(struct vbg_dev *gdev, bool enabled) in vbg_heartbeat_host_config() argument
449 rc = vbg_req_perform(gdev, req); in vbg_heartbeat_host_config()
451 gdev->heartbeat_interval_ms = req->interval_ns; in vbg_heartbeat_host_config()
464 static int vbg_heartbeat_init(struct vbg_dev *gdev) in vbg_heartbeat_init() argument
469 ret = vbg_heartbeat_host_config(gdev, false); in vbg_heartbeat_init()
473 ret = vbg_heartbeat_host_config(gdev, true); in vbg_heartbeat_init()
477 gdev->guest_heartbeat_req = vbg_req_alloc( in vbg_heartbeat_init()
478 sizeof(*gdev->guest_heartbeat_req), in vbg_heartbeat_init()
481 if (!gdev->guest_heartbeat_req) in vbg_heartbeat_init()
485 __func__, gdev->heartbeat_interval_ms); in vbg_heartbeat_init()
486 mod_timer(&gdev->heartbeat_timer, 0); in vbg_heartbeat_init()
496 static void vbg_heartbeat_exit(struct vbg_dev *gdev) in vbg_heartbeat_exit() argument
498 timer_delete_sync(&gdev->heartbeat_timer); in vbg_heartbeat_exit()
499 vbg_heartbeat_host_config(gdev, false); in vbg_heartbeat_exit()
500 vbg_req_free(gdev->guest_heartbeat_req, in vbg_heartbeat_exit()
501 sizeof(*gdev->guest_heartbeat_req)); in vbg_heartbeat_exit()
549 static int vbg_reset_host_event_filter(struct vbg_dev *gdev, in vbg_reset_host_event_filter() argument
562 rc = vbg_req_perform(gdev, req); in vbg_reset_host_event_filter()
587 static int vbg_set_session_event_filter(struct vbg_dev *gdev, in vbg_set_session_event_filter() argument
610 mutex_lock(&gdev->session_mutex); in vbg_set_session_event_filter()
622 vbg_track_bit_usage(&gdev->event_filter_tracker, changed, previous); in vbg_set_session_event_filter()
623 or_mask = gdev->fixed_events | gdev->event_filter_tracker.mask; in vbg_set_session_event_filter()
625 if (gdev->event_filter_host == or_mask || !req) in vbg_set_session_event_filter()
628 gdev->event_filter_host = or_mask; in vbg_set_session_event_filter()
631 rc = vbg_req_perform(gdev, req); in vbg_set_session_event_filter()
636 gdev->event_filter_host = U32_MAX; in vbg_set_session_event_filter()
640 vbg_track_bit_usage(&gdev->event_filter_tracker, changed, in vbg_set_session_event_filter()
646 mutex_unlock(&gdev->session_mutex); in vbg_set_session_event_filter()
659 static int vbg_reset_host_capabilities(struct vbg_dev *gdev) in vbg_reset_host_capabilities() argument
671 rc = vbg_req_perform(gdev, req); in vbg_reset_host_capabilities()
689 static int vbg_set_host_capabilities(struct vbg_dev *gdev, in vbg_set_host_capabilities() argument
697 WARN_ON(!mutex_is_locked(&gdev->session_mutex)); in vbg_set_host_capabilities()
699 caps = gdev->acquired_guest_caps | gdev->set_guest_caps_tracker.mask; in vbg_set_host_capabilities()
701 if (gdev->guest_caps_host == caps) in vbg_set_host_capabilities()
709 gdev->guest_caps_host = U32_MAX; in vbg_set_host_capabilities()
715 rc = vbg_req_perform(gdev, req); in vbg_set_host_capabilities()
718 gdev->guest_caps_host = (rc >= 0) ? caps : U32_MAX; in vbg_set_host_capabilities()
740 static int vbg_acquire_session_capabilities(struct vbg_dev *gdev, in vbg_acquire_session_capabilities() argument
749 mutex_lock(&gdev->session_mutex); in vbg_acquire_session_capabilities()
751 if (gdev->set_guest_caps_tracker.mask & or_mask) { in vbg_acquire_session_capabilities()
763 spin_lock_irqsave(&gdev->event_spinlock, irqflags); in vbg_acquire_session_capabilities()
764 gdev->acquire_mode_guest_caps |= or_mask; in vbg_acquire_session_capabilities()
765 spin_unlock_irqrestore(&gdev->event_spinlock, irqflags); in vbg_acquire_session_capabilities()
778 if (gdev->acquired_guest_caps & or_mask) { in vbg_acquire_session_capabilities()
783 gdev->acquired_guest_caps |= or_mask; in vbg_acquire_session_capabilities()
784 gdev->acquired_guest_caps &= ~not_mask; in vbg_acquire_session_capabilities()
786 spin_lock_irqsave(&gdev->event_spinlock, irqflags); in vbg_acquire_session_capabilities()
789 spin_unlock_irqrestore(&gdev->event_spinlock, irqflags); in vbg_acquire_session_capabilities()
791 ret = vbg_set_host_capabilities(gdev, session, session_termination); in vbg_acquire_session_capabilities()
794 gdev->acquired_guest_caps &= ~or_mask; in vbg_acquire_session_capabilities()
795 gdev->acquired_guest_caps |= not_mask; in vbg_acquire_session_capabilities()
796 spin_lock_irqsave(&gdev->event_spinlock, irqflags); in vbg_acquire_session_capabilities()
799 spin_unlock_irqrestore(&gdev->event_spinlock, irqflags); in vbg_acquire_session_capabilities()
812 spin_lock_irqsave(&gdev->event_spinlock, irqflags); in vbg_acquire_session_capabilities()
815 gdev->pending_events |= in vbg_acquire_session_capabilities()
818 if (gdev->pending_events) in vbg_acquire_session_capabilities()
821 spin_unlock_irqrestore(&gdev->event_spinlock, irqflags); in vbg_acquire_session_capabilities()
824 wake_up(&gdev->event_wq); in vbg_acquire_session_capabilities()
828 mutex_unlock(&gdev->session_mutex); in vbg_acquire_session_capabilities()
847 static int vbg_set_session_capabilities(struct vbg_dev *gdev, in vbg_set_session_capabilities() argument
855 mutex_lock(&gdev->session_mutex); in vbg_set_session_capabilities()
857 if (gdev->acquire_mode_guest_caps & or_mask) { in vbg_set_session_capabilities()
874 vbg_track_bit_usage(&gdev->set_guest_caps_tracker, changed, previous); in vbg_set_session_capabilities()
876 ret = vbg_set_host_capabilities(gdev, session, session_termination); in vbg_set_session_capabilities()
879 vbg_track_bit_usage(&gdev->set_guest_caps_tracker, changed, in vbg_set_session_capabilities()
885 mutex_unlock(&gdev->session_mutex); in vbg_set_session_capabilities()
896 static int vbg_query_host_version(struct vbg_dev *gdev) in vbg_query_host_version() argument
906 rc = vbg_req_perform(gdev, req); in vbg_query_host_version()
913 snprintf(gdev->host_version, sizeof(gdev->host_version), "%u.%u.%ur%u", in vbg_query_host_version()
915 gdev->host_features = req->features; in vbg_query_host_version()
917 vbg_info("vboxguest: host-version: %s %#x\n", gdev->host_version, in vbg_query_host_version()
918 gdev->host_features); in vbg_query_host_version()
944 int vbg_core_init(struct vbg_dev *gdev, u32 fixed_events) in vbg_core_init() argument
948 gdev->fixed_events = fixed_events | VMMDEV_EVENT_HGCM; in vbg_core_init()
949 gdev->event_filter_host = U32_MAX; /* forces a report */ in vbg_core_init()
950 gdev->guest_caps_host = U32_MAX; /* forces a report */ in vbg_core_init()
952 init_waitqueue_head(&gdev->event_wq); in vbg_core_init()
953 init_waitqueue_head(&gdev->hgcm_wq); in vbg_core_init()
954 spin_lock_init(&gdev->event_spinlock); in vbg_core_init()
955 mutex_init(&gdev->session_mutex); in vbg_core_init()
956 mutex_init(&gdev->cancel_req_mutex); in vbg_core_init()
957 timer_setup(&gdev->heartbeat_timer, vbg_heartbeat_timer, 0); in vbg_core_init()
958 INIT_WORK(&gdev->mem_balloon.work, vbg_balloon_work); in vbg_core_init()
960 gdev->mem_balloon.get_req = in vbg_core_init()
961 vbg_req_alloc(sizeof(*gdev->mem_balloon.get_req), in vbg_core_init()
964 gdev->mem_balloon.change_req = in vbg_core_init()
965 vbg_req_alloc(sizeof(*gdev->mem_balloon.change_req), in vbg_core_init()
968 gdev->cancel_req = in vbg_core_init()
969 vbg_req_alloc(sizeof(*(gdev->cancel_req)), in vbg_core_init()
972 gdev->ack_events_req = in vbg_core_init()
973 vbg_req_alloc(sizeof(*gdev->ack_events_req), in vbg_core_init()
976 gdev->mouse_status_req = in vbg_core_init()
977 vbg_req_alloc(sizeof(*gdev->mouse_status_req), in vbg_core_init()
981 if (!gdev->mem_balloon.get_req || !gdev->mem_balloon.change_req || in vbg_core_init()
982 !gdev->cancel_req || !gdev->ack_events_req || in vbg_core_init()
983 !gdev->mouse_status_req) in vbg_core_init()
986 ret = vbg_query_host_version(gdev); in vbg_core_init()
990 ret = vbg_report_guest_info(gdev); in vbg_core_init()
996 ret = vbg_reset_host_event_filter(gdev, gdev->fixed_events); in vbg_core_init()
1003 ret = vbg_reset_host_capabilities(gdev); in vbg_core_init()
1010 ret = vbg_core_set_mouse_status(gdev, 0); in vbg_core_init()
1017 vbg_guest_mappings_init(gdev); in vbg_core_init()
1018 vbg_heartbeat_init(gdev); in vbg_core_init()
1021 ret = vbg_report_driver_status(gdev, true); in vbg_core_init()
1028 vbg_req_free(gdev->mouse_status_req, in vbg_core_init()
1029 sizeof(*gdev->mouse_status_req)); in vbg_core_init()
1030 vbg_req_free(gdev->ack_events_req, in vbg_core_init()
1031 sizeof(*gdev->ack_events_req)); in vbg_core_init()
1032 vbg_req_free(gdev->cancel_req, in vbg_core_init()
1033 sizeof(*gdev->cancel_req)); in vbg_core_init()
1034 vbg_req_free(gdev->mem_balloon.change_req, in vbg_core_init()
1035 sizeof(*gdev->mem_balloon.change_req)); in vbg_core_init()
1036 vbg_req_free(gdev->mem_balloon.get_req, in vbg_core_init()
1037 sizeof(*gdev->mem_balloon.get_req)); in vbg_core_init()
1049 void vbg_core_exit(struct vbg_dev *gdev) in vbg_core_exit() argument
1051 vbg_heartbeat_exit(gdev); in vbg_core_exit()
1052 vbg_guest_mappings_exit(gdev); in vbg_core_exit()
1055 vbg_reset_host_event_filter(gdev, 0); in vbg_core_exit()
1056 vbg_reset_host_capabilities(gdev); in vbg_core_exit()
1057 vbg_core_set_mouse_status(gdev, 0); in vbg_core_exit()
1059 vbg_req_free(gdev->mouse_status_req, in vbg_core_exit()
1060 sizeof(*gdev->mouse_status_req)); in vbg_core_exit()
1061 vbg_req_free(gdev->ack_events_req, in vbg_core_exit()
1062 sizeof(*gdev->ack_events_req)); in vbg_core_exit()
1063 vbg_req_free(gdev->cancel_req, in vbg_core_exit()
1064 sizeof(*gdev->cancel_req)); in vbg_core_exit()
1065 vbg_req_free(gdev->mem_balloon.change_req, in vbg_core_exit()
1066 sizeof(*gdev->mem_balloon.change_req)); in vbg_core_exit()
1067 vbg_req_free(gdev->mem_balloon.get_req, in vbg_core_exit()
1068 sizeof(*gdev->mem_balloon.get_req)); in vbg_core_exit()
1080 struct vbg_session *vbg_core_open_session(struct vbg_dev *gdev, u32 requestor) in vbg_core_open_session() argument
1088 session->gdev = gdev; in vbg_core_open_session()
1100 struct vbg_dev *gdev = session->gdev; in vbg_core_close_session() local
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()
1112 vbg_hgcm_disconnect(gdev, VBG_KERNEL_REQUEST, in vbg_core_close_session()
1162 static u32 vbg_get_allowed_event_mask_for_session(struct vbg_dev *gdev, in vbg_get_allowed_event_mask_for_session() argument
1165 u32 acquire_mode_caps = gdev->acquire_mode_guest_caps; in vbg_get_allowed_event_mask_for_session()
1180 static bool vbg_wait_event_cond(struct vbg_dev *gdev, in vbg_wait_event_cond() argument
1188 spin_lock_irqsave(&gdev->event_spinlock, flags); in vbg_wait_event_cond()
1190 events = gdev->pending_events & event_mask; in vbg_wait_event_cond()
1191 events &= vbg_get_allowed_event_mask_for_session(gdev, session); in vbg_wait_event_cond()
1194 spin_unlock_irqrestore(&gdev->event_spinlock, flags); in vbg_wait_event_cond()
1200 static u32 vbg_consume_events_locked(struct vbg_dev *gdev, in vbg_consume_events_locked() argument
1204 u32 events = gdev->pending_events & event_mask; in vbg_consume_events_locked()
1206 events &= vbg_get_allowed_event_mask_for_session(gdev, session); in vbg_consume_events_locked()
1207 gdev->pending_events &= ~events; in vbg_consume_events_locked()
1211 static int vbg_ioctl_wait_for_events(struct vbg_dev *gdev, in vbg_ioctl_wait_for_events() argument
1232 gdev->event_wq, in vbg_ioctl_wait_for_events()
1233 vbg_wait_event_cond(gdev, session, event_mask), in vbg_ioctl_wait_for_events()
1236 spin_lock_irqsave(&gdev->event_spinlock, flags); in vbg_ioctl_wait_for_events()
1244 vbg_consume_events_locked(gdev, session, event_mask); in vbg_ioctl_wait_for_events()
1247 spin_unlock_irqrestore(&gdev->event_spinlock, flags); in vbg_ioctl_wait_for_events()
1258 static int vbg_ioctl_interrupt_all_wait_events(struct vbg_dev *gdev, in vbg_ioctl_interrupt_all_wait_events() argument
1267 spin_lock_irqsave(&gdev->event_spinlock, flags); in vbg_ioctl_interrupt_all_wait_events()
1269 spin_unlock_irqrestore(&gdev->event_spinlock, flags); in vbg_ioctl_interrupt_all_wait_events()
1271 wake_up(&gdev->event_wq); 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
1376 static int vbg_ioctl_vmmrequest(struct vbg_dev *gdev, in vbg_ioctl_vmmrequest() argument
1391 ret = vbg_req_allowed(gdev, session, data); in vbg_ioctl_vmmrequest()
1395 vbg_req_perform(gdev, data); in vbg_ioctl_vmmrequest()
1401 static int vbg_ioctl_hgcm_connect(struct vbg_dev *gdev, in vbg_ioctl_hgcm_connect() argument
1412 mutex_lock(&gdev->session_mutex); in vbg_ioctl_hgcm_connect()
1419 mutex_unlock(&gdev->session_mutex); in vbg_ioctl_hgcm_connect()
1424 ret = vbg_hgcm_connect(gdev, session->requestor, &conn->u.in.loc, in vbg_ioctl_hgcm_connect()
1427 mutex_lock(&gdev->session_mutex); in vbg_ioctl_hgcm_connect()
1435 mutex_unlock(&gdev->session_mutex); in vbg_ioctl_hgcm_connect()
1440 static int vbg_ioctl_hgcm_disconnect(struct vbg_dev *gdev, in vbg_ioctl_hgcm_disconnect() argument
1454 mutex_lock(&gdev->session_mutex); in vbg_ioctl_hgcm_disconnect()
1461 mutex_unlock(&gdev->session_mutex); in vbg_ioctl_hgcm_disconnect()
1466 ret = vbg_hgcm_disconnect(gdev, session->requestor, client_id, in vbg_ioctl_hgcm_disconnect()
1469 mutex_lock(&gdev->session_mutex); in vbg_ioctl_hgcm_disconnect()
1474 mutex_unlock(&gdev->session_mutex); in vbg_ioctl_hgcm_disconnect()
1493 static int vbg_ioctl_hgcm_call(struct vbg_dev *gdev, in vbg_ioctl_hgcm_call() argument
1548 mutex_lock(&gdev->session_mutex); in vbg_ioctl_hgcm_call()
1552 mutex_unlock(&gdev->session_mutex); 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()
1593 static int vbg_ioctl_change_filter_mask(struct vbg_dev *gdev, 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()
1612 static int vbg_ioctl_acquire_guest_capabilities(struct vbg_dev *gdev, in vbg_ioctl_acquire_guest_capabilities() argument
1631 return vbg_acquire_session_capabilities(gdev, session, or_mask, in vbg_ioctl_acquire_guest_capabilities()
1635 static int vbg_ioctl_change_guest_capabilities(struct vbg_dev *gdev, 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()
1656 caps->u.out.global_caps = gdev->guest_caps_host; in vbg_ioctl_change_guest_capabilities()
1661 static int vbg_ioctl_check_balloon(struct vbg_dev *gdev, in vbg_ioctl_check_balloon() argument
1667 balloon_info->u.out.balloon_chunks = gdev->mem_balloon.chunks; in vbg_ioctl_check_balloon()
1677 static int vbg_ioctl_write_core_dump(struct vbg_dev *gdev, in vbg_ioctl_write_core_dump() argument
1692 dump->hdr.rc = vbg_req_perform(gdev, req); in vbg_ioctl_write_core_dump()
1709 struct vbg_dev *gdev = session->gdev; in vbg_core_ioctl() local
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()
1750 return vbg_ioctl_check_balloon(gdev, 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()
1781 int vbg_core_set_mouse_status(struct vbg_dev *gdev, u32 features) in vbg_core_set_mouse_status() argument
1795 rc = vbg_req_perform(gdev, req); in vbg_core_set_mouse_status()
1806 struct vbg_dev *gdev = dev_id; in vbg_core_isr() local
1807 struct vmmdev_events *req = gdev->ack_events_req; in vbg_core_isr()
1813 if (!gdev->mmio->V.V1_04.have_events) in vbg_core_isr()
1819 rc = vbg_req_perform(gdev, req); in vbg_core_isr()
1833 wake_up(&gdev->hgcm_wq); in vbg_core_isr()
1838 schedule_work(&gdev->mem_balloon.work); in vbg_core_isr()
1843 spin_lock_irqsave(&gdev->event_spinlock, flags); in vbg_core_isr()
1844 gdev->pending_events |= events; in vbg_core_isr()
1845 spin_unlock_irqrestore(&gdev->event_spinlock, flags); in vbg_core_isr()
1847 wake_up(&gdev->event_wq); in vbg_core_isr()
1851 vbg_linux_mouse_event(gdev); in vbg_core_isr()