mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-25 04:30:02 +00:00
Revert "vhost: add support for configure interrupt"
This reverts commitf7220a7ce2
. Fixes:f7220a7ce2
("vhost: add support for configure interrupt") Cc: "Cindy Lu" <lulu@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
b3ef6664b7
commit
a86d1a0a93
@ -1554,67 +1554,6 @@ void vhost_virtqueue_mask(struct vhost_dev *hdev, VirtIODevice *vdev, int n,
|
||||
}
|
||||
}
|
||||
|
||||
bool vhost_config_pending(struct vhost_dev *hdev)
|
||||
{
|
||||
assert(hdev->vhost_ops);
|
||||
if ((hdev->started == false) ||
|
||||
(hdev->vhost_ops->vhost_set_config_call == NULL)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
EventNotifier *notifier =
|
||||
&hdev->vqs[VHOST_QUEUE_NUM_CONFIG_INR].masked_config_notifier;
|
||||
return event_notifier_test_and_clear(notifier);
|
||||
}
|
||||
|
||||
void vhost_config_mask(struct vhost_dev *hdev, VirtIODevice *vdev, bool mask)
|
||||
{
|
||||
int fd;
|
||||
int r;
|
||||
EventNotifier *notifier =
|
||||
&hdev->vqs[VHOST_QUEUE_NUM_CONFIG_INR].masked_config_notifier;
|
||||
EventNotifier *config_notifier = &vdev->config_notifier;
|
||||
assert(hdev->vhost_ops);
|
||||
|
||||
if ((hdev->started == false) ||
|
||||
(hdev->vhost_ops->vhost_set_config_call == NULL)) {
|
||||
return;
|
||||
}
|
||||
if (mask) {
|
||||
assert(vdev->use_guest_notifier_mask);
|
||||
fd = event_notifier_get_fd(notifier);
|
||||
} else {
|
||||
fd = event_notifier_get_fd(config_notifier);
|
||||
}
|
||||
r = hdev->vhost_ops->vhost_set_config_call(hdev, fd);
|
||||
if (r < 0) {
|
||||
VHOST_OPS_DEBUG(r, "vhost_set_config_call failed");
|
||||
}
|
||||
}
|
||||
|
||||
static void vhost_stop_config_intr(struct vhost_dev *dev)
|
||||
{
|
||||
int fd = -1;
|
||||
assert(dev->vhost_ops);
|
||||
if (dev->vhost_ops->vhost_set_config_call) {
|
||||
dev->vhost_ops->vhost_set_config_call(dev, fd);
|
||||
}
|
||||
}
|
||||
|
||||
static void vhost_start_config_intr(struct vhost_dev *dev)
|
||||
{
|
||||
int r;
|
||||
|
||||
assert(dev->vhost_ops);
|
||||
int fd = event_notifier_get_fd(&dev->vdev->config_notifier);
|
||||
if (dev->vhost_ops->vhost_set_config_call) {
|
||||
r = dev->vhost_ops->vhost_set_config_call(dev, fd);
|
||||
if (!r) {
|
||||
event_notifier_set(&dev->vdev->config_notifier);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint64_t vhost_get_features(struct vhost_dev *hdev, const int *feature_bits,
|
||||
uint64_t features)
|
||||
{
|
||||
@ -1827,16 +1766,6 @@ int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev)
|
||||
}
|
||||
}
|
||||
|
||||
r = event_notifier_init(
|
||||
&hdev->vqs[VHOST_QUEUE_NUM_CONFIG_INR].masked_config_notifier, 0);
|
||||
if (r < 0) {
|
||||
return r;
|
||||
}
|
||||
event_notifier_test_and_clear(
|
||||
&hdev->vqs[VHOST_QUEUE_NUM_CONFIG_INR].masked_config_notifier);
|
||||
if (!vdev->use_guest_notifier_mask) {
|
||||
vhost_config_mask(hdev, vdev, true);
|
||||
}
|
||||
if (hdev->log_enabled) {
|
||||
uint64_t log_base;
|
||||
|
||||
@ -1869,7 +1798,6 @@ int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev)
|
||||
vhost_device_iotlb_miss(hdev, vq->used_phys, true);
|
||||
}
|
||||
}
|
||||
vhost_start_config_intr(hdev);
|
||||
return 0;
|
||||
fail_log:
|
||||
vhost_log_put(hdev, false);
|
||||
@ -1895,9 +1823,6 @@ void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice *vdev)
|
||||
|
||||
/* should only be called after backend is connected */
|
||||
assert(hdev->vhost_ops);
|
||||
event_notifier_test_and_clear(
|
||||
&hdev->vqs[VHOST_QUEUE_NUM_CONFIG_INR].masked_config_notifier);
|
||||
event_notifier_test_and_clear(&vdev->config_notifier);
|
||||
|
||||
if (hdev->vhost_ops->vhost_dev_start) {
|
||||
hdev->vhost_ops->vhost_dev_start(hdev, false);
|
||||
@ -1915,7 +1840,6 @@ void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice *vdev)
|
||||
}
|
||||
memory_listener_unregister(&hdev->iommu_listener);
|
||||
}
|
||||
vhost_stop_config_intr(hdev);
|
||||
vhost_log_put(hdev, true);
|
||||
hdev->started = false;
|
||||
hdev->vdev = NULL;
|
||||
|
@ -29,7 +29,6 @@ struct vhost_virtqueue {
|
||||
unsigned long long used_phys;
|
||||
unsigned used_size;
|
||||
EventNotifier masked_notifier;
|
||||
EventNotifier masked_config_notifier;
|
||||
struct vhost_dev *dev;
|
||||
};
|
||||
|
||||
@ -38,7 +37,6 @@ typedef unsigned long vhost_log_chunk_t;
|
||||
#define VHOST_LOG_BITS (8 * sizeof(vhost_log_chunk_t))
|
||||
#define VHOST_LOG_CHUNK (VHOST_LOG_PAGE * VHOST_LOG_BITS)
|
||||
#define VHOST_INVALID_FEATURE_BIT (0xff)
|
||||
#define VHOST_QUEUE_NUM_CONFIG_INR 0
|
||||
|
||||
struct vhost_log {
|
||||
unsigned long long size;
|
||||
@ -118,8 +116,6 @@ int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev);
|
||||
void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice *vdev);
|
||||
int vhost_dev_enable_notifiers(struct vhost_dev *hdev, VirtIODevice *vdev);
|
||||
void vhost_dev_disable_notifiers(struct vhost_dev *hdev, VirtIODevice *vdev);
|
||||
bool vhost_config_pending(struct vhost_dev *hdev);
|
||||
void vhost_config_mask(struct vhost_dev *hdev, VirtIODevice *vdev, bool mask);
|
||||
|
||||
/* Test and clear masked event pending status.
|
||||
* Should be called after unmask to avoid losing events.
|
||||
|
Loading…
Reference in New Issue
Block a user