static void virtio_balloon_free_page_done(VirtIOBalloon *s) { VirtIODevice *vdev = VIRTIO_DEVICE(s); s->free_page_report_status = FREE_PAGE_REPORT_S_DONE; virtio_notify_config(vdev); }
static void virtio_blk_change_cb(void *opaque, int reason) { VirtIOBlock *s = opaque; if (reason & CHANGE_SIZE) { virtio_notify_config(&s->vdev); } }
static void virtio_balloon_to_target(void *opaque, ram_addr_t target) { VirtIOBalloon *dev = opaque; if (target > ram_size) { target = ram_size; } if (target) { dev->num_pages = (ram_size - target) >> VIRTIO_BALLOON_PFN_SHIFT; virtio_notify_config(&dev->vdev); } }
static void virtio_net_set_link_status(VLANClientState *nc) { VirtIONet *n = DO_UPCAST(NICState, nc, nc)->opaque; uint16_t old_status = n->status; if (nc->link_down) n->status &= ~VIRTIO_NET_S_LINK_UP; else n->status |= VIRTIO_NET_S_LINK_UP; if (n->status != old_status) virtio_notify_config(&n->vdev); }
static void virtio_balloon_to_target(void *opaque, ram_addr_t target) { VirtIOBalloon *dev = VIRTIO_BALLOON(opaque); VirtIODevice *vdev = VIRTIO_DEVICE(dev); ram_addr_t vm_ram_size = get_current_ram_size(); if (target > vm_ram_size) { target = vm_ram_size; } if (target) { dev->num_pages = (vm_ram_size - target) >> VIRTIO_BALLOON_PFN_SHIFT; virtio_notify_config(vdev); } trace_virtio_balloon_to_target(target, dev->num_pages); }
static void virtio_balloon_to_target(void *opaque, ram_addr_t target, MonitorCompletion cb, void *cb_data) { VirtIOBalloon *dev = opaque; if (target > ram_size) target = ram_size; if (target) { dev->num_pages = (ram_size - target) >> VIRTIO_BALLOON_PFN_SHIFT; virtio_notify_config(&dev->vdev); } else { /* For now, only allow one request at a time. This restriction can be * removed later by queueing callback and data pairs. */ if (dev->stats_callback != NULL) {
static void virtio_balloon_free_page_start(VirtIOBalloon *s) { VirtIODevice *vdev = VIRTIO_DEVICE(s); /* For the stop and copy phase, we don't need to start the optimization */ if (!vdev->vm_running) { return; } if (s->free_page_report_cmd_id == UINT_MAX) { s->free_page_report_cmd_id = VIRTIO_BALLOON_FREE_PAGE_REPORT_CMD_ID_MIN; } else { s->free_page_report_cmd_id++; } s->free_page_report_status = FREE_PAGE_REPORT_S_REQUESTED; virtio_notify_config(vdev); }
static void virtio_balloon_free_page_stop(VirtIOBalloon *s) { VirtIODevice *vdev = VIRTIO_DEVICE(s); if (s->free_page_report_status != FREE_PAGE_REPORT_S_STOP) { /* * The lock also guarantees us that the * virtio_ballloon_get_free_page_hints exits after the * free_page_report_status is set to S_STOP. */ qemu_mutex_lock(&s->free_page_lock); /* * The guest hasn't done the reporting, so host sends a notification * to the guest to actively stop the reporting. */ s->free_page_report_status = FREE_PAGE_REPORT_S_STOP; qemu_mutex_unlock(&s->free_page_lock); virtio_notify_config(vdev); } }
static void virtio_blk_resize(void *opaque) { VirtIODevice *vdev = VIRTIO_DEVICE(opaque); virtio_notify_config(vdev); }
static void virtio_blk_resize(void *opaque) { VirtIOBlock *s = opaque; virtio_notify_config(&s->vdev); }