Commit eb06c9e2 authored by Peter Maydell's avatar Peter Maydell
Browse files

Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging



* MTTCG fix for win32
* virtio-scsi assertion failure
* mem-prealloc coverity fix
* x86 migration revert which requires more thought
* x86 instruction limit (avoids >2 page translation blocks)
* nbd dead code cleanup
* small memory.c logic fix

# gpg: Signature made Mon 27 Mar 2017 17:03:04 BST
# gpg:                using RSA key 0xBFFBD25F78C7AE83
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>"
# gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>"
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
#      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83

* remotes/bonzini/tags/for-upstream:
  scsi-generic: Fill in opt_xfer_len in INQUIRY reply if it is zero
  Revert "apic: save apic_delivered flag"
  nbd: drop unused NBDClientSession.is_unix field
  win32: replace custom mutex and condition variable with native primitives
  mem-prealloc: fix sysconf(_SC_NPROCESSORS_ONLN) failure case.
  tcg/i386: Check the size of instruction being translated
  virtio-scsi: Fix acquire/release in dataplane handlers
  virtio-scsi: Make virtio_scsi_acquire/release public
  clear pending status before calling memory commit

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parents 9366f53d bed58b44
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -30,8 +30,6 @@ typedef struct NBDClientSession {

    Coroutine *recv_coroutine[MAX_NBD_REQUESTS];
    NBDReply reply;

    bool is_unix;
} NBDClientSession;

NBDClientSession *nbd_get_client_session(BlockDriverState *bs);
+0 −2
Original line number Diff line number Diff line
@@ -285,8 +285,6 @@ static SocketAddress *nbd_config(BDRVNBDState *s, QDict *options, Error **errp)
        goto done;
    }

    s->client.is_unix = saddr->type == SOCKET_ADDRESS_KIND_UNIX;

done:
    QDECREF(addr);
    qobject_decref(crumpled_addr);
+0 −33
Original line number Diff line number Diff line
@@ -387,25 +387,6 @@ static bool apic_common_sipi_needed(void *opaque)
    return s->wait_for_sipi != 0;
}

static bool apic_irq_delivered_needed(void *opaque)
{
    APICCommonState *s = APIC_COMMON(opaque);
    return s->cpu == X86_CPU(first_cpu) && apic_irq_delivered != 0;
}

static void apic_irq_delivered_pre_save(void *opaque)
{
    APICCommonState *s = APIC_COMMON(opaque);
    s->apic_irq_delivered = apic_irq_delivered;
}

static int apic_irq_delivered_post_load(void *opaque, int version_id)
{
    APICCommonState *s = APIC_COMMON(opaque);
    apic_irq_delivered = s->apic_irq_delivered;
    return 0;
}

static const VMStateDescription vmstate_apic_common_sipi = {
    .name = "apic_sipi",
    .version_id = 1,
@@ -418,19 +399,6 @@ static const VMStateDescription vmstate_apic_common_sipi = {
    }
};

static const VMStateDescription vmstate_apic_irq_delivered = {
    .name = "apic_irq_delivered",
    .version_id = 1,
    .minimum_version_id = 1,
    .needed = apic_irq_delivered_needed,
    .pre_save = apic_irq_delivered_pre_save,
    .post_load = apic_irq_delivered_post_load,
    .fields = (VMStateField[]) {
        VMSTATE_INT32(apic_irq_delivered, APICCommonState),
        VMSTATE_END_OF_LIST()
    }
};

static const VMStateDescription vmstate_apic_common = {
    .name = "apic",
    .version_id = 3,
@@ -465,7 +433,6 @@ static const VMStateDescription vmstate_apic_common = {
    },
    .subsections = (const VMStateDescription*[]) {
        &vmstate_apic_common_sipi,
        &vmstate_apic_irq_delivered,
        NULL
    }
};
+2 −3
Original line number Diff line number Diff line
@@ -237,9 +237,8 @@ static void scsi_read_complete(void * opaque, int ret)
        assert(max_transfer);
        stl_be_p(&r->buf[8], max_transfer);
        /* Also take care of the opt xfer len. */
        if (ldl_be_p(&r->buf[12]) > max_transfer) {
            stl_be_p(&r->buf[12], max_transfer);
        }
        stl_be_p(&r->buf[12],
                 MIN_NON_ZERO(max_transfer, ldl_be_p(&r->buf[12])));
    }
    scsi_req_data(&r->req, len);
    scsi_req_unref(&r->req);
+16 −4
Original line number Diff line number Diff line
@@ -52,28 +52,40 @@ void virtio_scsi_dataplane_setup(VirtIOSCSI *s, Error **errp)
static bool virtio_scsi_data_plane_handle_cmd(VirtIODevice *vdev,
                                              VirtQueue *vq)
{
    VirtIOSCSI *s = (VirtIOSCSI *)vdev;
    bool progress;
    VirtIOSCSI *s = VIRTIO_SCSI(vdev);

    virtio_scsi_acquire(s);
    assert(s->ctx && s->dataplane_started);
    return virtio_scsi_handle_cmd_vq(s, vq);
    progress = virtio_scsi_handle_cmd_vq(s, vq);
    virtio_scsi_release(s);
    return progress;
}

static bool virtio_scsi_data_plane_handle_ctrl(VirtIODevice *vdev,
                                               VirtQueue *vq)
{
    bool progress;
    VirtIOSCSI *s = VIRTIO_SCSI(vdev);

    virtio_scsi_acquire(s);
    assert(s->ctx && s->dataplane_started);
    return virtio_scsi_handle_ctrl_vq(s, vq);
    progress = virtio_scsi_handle_ctrl_vq(s, vq);
    virtio_scsi_release(s);
    return progress;
}

static bool virtio_scsi_data_plane_handle_event(VirtIODevice *vdev,
                                                VirtQueue *vq)
{
    bool progress;
    VirtIOSCSI *s = VIRTIO_SCSI(vdev);

    virtio_scsi_acquire(s);
    assert(s->ctx && s->dataplane_started);
    return virtio_scsi_handle_event_vq(s, vq);
    progress = virtio_scsi_handle_event_vq(s, vq);
    virtio_scsi_release(s);
    return progress;
}

static int virtio_scsi_vring_init(VirtIOSCSI *s, VirtQueue *vq, int n,
Loading