mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging
* SCSI fixes for Mac OS 9 * Fix CPU reset for x86/KVM nested virtualization state * remove feature_not_found() from the configure script * Meson cleanups from muon * improved i386 TCG tests for BMI and SSE * SSE bugfixes # -----BEGIN PGP SIGNATURE----- # # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmMQ+IQUHHBib256aW5p # QHJlZGhhdC5jb20ACgkQv/vSX3jHroNofQgArLRlbhua699UyDkTEGGv+gBVRRKg # qJndTFJp5cvjJo3fNeE1XyZGY0PGLH09ilwHKnGqvn7Bc996ty6zi3sLDC+iT/SO # cRik6EVgZH/0QseYZijviuz7NklL8so/bgn7sORP9ibRWwiojBzm91emUt4X2l5N # WOmxLYNIPXR/G8LOSv5Dh4C4WXU3zuaLvTmg/fWPoWTF8P+9LU0gEKUzyk0jMJu4 # hb9lVLXyNbgEcdtK+VewWjsdJcdmF1tMAR94GTmbUdwxbwmATqX8w16jGUbnXPt2 # FZfmjS6CJO90uV7wBA91NnFlrJpWyDn1dKQ+ozpW0ZOAO+wfghpVq7/IRA== # =VRK4 # -----END PGP SIGNATURE----- # gpg: Signature made Thu 01 Sep 2022 14:23:00 EDT # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full] # 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 * tag 'for-upstream' of https://gitlab.com/bonzini/qemu: (39 commits) target/i386: AVX+AES helpers prep target/i386: AVX pclmulqdq prep target/i386: Rewrite blendv helpers target/i386: Misc AVX helper prep target/i386: Destructive FP helpers for AVX target/i386: Dot product AVX helper prep target/i386: reimplement AVX comparison helpers target/i386: Floating point arithmetic helper AVX prep target/i386: Destructive vector helpers for AVX target/i386: Misc integer AVX helper prep target/i386: Rewrite simple integer vector helpers target/i386: Rewrite vector shift helper target/i386: rewrite destructive 3DNow operations target/i386: Add CHECK_NO_VEX target/i386: do not cast gen_helper_* function pointers target/i386: Add size suffix to vector FP helpers target/i386: isolate MMX code more target/i386: check SSE table flags instead of hardcoding opcodes target/i386: Move 3DNOW decoder target/i386: Rework sse_op_table6/7 ... Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
+5
-1
@@ -719,7 +719,11 @@ static void kvm_dirty_ring_mark_page(KVMState *s, uint32_t as_id,
|
||||
|
||||
static bool dirty_gfn_is_dirtied(struct kvm_dirty_gfn *gfn)
|
||||
{
|
||||
return gfn->flags == KVM_DIRTY_GFN_F_DIRTY;
|
||||
/*
|
||||
* Read the flags before the value. Pairs with barrier in
|
||||
* KVM's kvm_dirty_ring_push() function.
|
||||
*/
|
||||
return qatomic_load_acquire(&gfn->flags) == KVM_DIRTY_GFN_F_DIRTY;
|
||||
}
|
||||
|
||||
static void dirty_gfn_set_collected(struct kvm_dirty_gfn *gfn)
|
||||
|
||||
@@ -1468,15 +1468,6 @@ if test "$tcg" = "enabled"; then
|
||||
git_submodules="$git_submodules tests/fp/berkeley-softfloat-3"
|
||||
fi
|
||||
|
||||
feature_not_found() {
|
||||
feature=$1
|
||||
remedy=$2
|
||||
|
||||
error_exit "User requested feature $feature" \
|
||||
"configure was not able to find it." \
|
||||
"$remedy"
|
||||
}
|
||||
|
||||
# ---
|
||||
# big/little endian test
|
||||
cat > $TMPC << EOF
|
||||
@@ -1639,7 +1630,7 @@ else
|
||||
;;
|
||||
ucontext)
|
||||
if test "$ucontext_works" != "yes"; then
|
||||
feature_not_found "ucontext"
|
||||
error_exit "'ucontext' backend requested but makecontext not available"
|
||||
fi
|
||||
;;
|
||||
sigaltstack)
|
||||
|
||||
@@ -99,11 +99,6 @@ developers in checking for system features:
|
||||
Write a minimal C program main() function to the temporary file
|
||||
indicated by $TMPC
|
||||
|
||||
``feature_not_found $NAME $REMEDY``
|
||||
Print a message to stderr that the feature $NAME was not available
|
||||
on the system, suggesting the user try $REMEDY to address the
|
||||
problem.
|
||||
|
||||
``error_exit $MESSAGE $MORE...``
|
||||
Print $MESSAGE to stderr, followed by $MORE... and then exit from the
|
||||
configure script with non-zero status
|
||||
|
||||
+7
-1
@@ -292,7 +292,7 @@ static void do_command_phase(ESPState *s)
|
||||
esp_fifo_pop_buf(&s->cmdfifo, buf, cmdlen);
|
||||
|
||||
current_lun = scsi_device_find(&s->bus, 0, s->current_dev->id, s->lun);
|
||||
s->current_req = scsi_req_new(current_lun, 0, s->lun, buf, s);
|
||||
s->current_req = scsi_req_new(current_lun, 0, s->lun, buf, cmdlen, s);
|
||||
datalen = scsi_req_enqueue(s->current_req);
|
||||
s->ti_size = datalen;
|
||||
fifo8_reset(&s->cmdfifo);
|
||||
@@ -939,6 +939,11 @@ static void esp_soft_reset(ESPState *s)
|
||||
esp_hard_reset(s);
|
||||
}
|
||||
|
||||
static void esp_bus_reset(ESPState *s)
|
||||
{
|
||||
qbus_reset_all(BUS(&s->bus));
|
||||
}
|
||||
|
||||
static void parent_esp_reset(ESPState *s, int irq, int level)
|
||||
{
|
||||
if (level) {
|
||||
@@ -1067,6 +1072,7 @@ void esp_reg_write(ESPState *s, uint32_t saddr, uint64_t val)
|
||||
break;
|
||||
case CMD_BUSRESET:
|
||||
trace_esp_mem_writeb_cmd_bus_reset(val);
|
||||
esp_bus_reset(s);
|
||||
if (!(s->wregs[ESP_CFG1] & CFG1_RESREPT)) {
|
||||
s->rregs[ESP_RINTR] |= INTR_RST;
|
||||
esp_raise_irq(s);
|
||||
|
||||
@@ -864,7 +864,7 @@ static void lsi_do_command(LSIState *s)
|
||||
s->current = g_new0(lsi_request, 1);
|
||||
s->current->tag = s->select_tag;
|
||||
s->current->req = scsi_req_new(dev, s->current->tag, s->current_lun, buf,
|
||||
s->current);
|
||||
s->dbc, s->current);
|
||||
|
||||
n = scsi_req_enqueue(s->current->req);
|
||||
if (n) {
|
||||
|
||||
+5
-5
@@ -1062,7 +1062,7 @@ static int megasas_pd_get_info_submit(SCSIDevice *sdev, int lun,
|
||||
info->inquiry_data[0] = 0x7f; /* Force PQual 0x3, PType 0x1f */
|
||||
info->vpd_page83[0] = 0x7f;
|
||||
megasas_setup_inquiry(cmdbuf, 0, sizeof(info->inquiry_data));
|
||||
cmd->req = scsi_req_new(sdev, cmd->index, lun, cmdbuf, cmd);
|
||||
cmd->req = scsi_req_new(sdev, cmd->index, lun, cmdbuf, sizeof(cmdbuf), cmd);
|
||||
if (!cmd->req) {
|
||||
trace_megasas_dcmd_req_alloc_failed(cmd->index,
|
||||
"PD get info std inquiry");
|
||||
@@ -1080,7 +1080,7 @@ static int megasas_pd_get_info_submit(SCSIDevice *sdev, int lun,
|
||||
return MFI_STAT_INVALID_STATUS;
|
||||
} else if (info->inquiry_data[0] != 0x7f && info->vpd_page83[0] == 0x7f) {
|
||||
megasas_setup_inquiry(cmdbuf, 0x83, sizeof(info->vpd_page83));
|
||||
cmd->req = scsi_req_new(sdev, cmd->index, lun, cmdbuf, cmd);
|
||||
cmd->req = scsi_req_new(sdev, cmd->index, lun, cmdbuf, sizeof(cmdbuf), cmd);
|
||||
if (!cmd->req) {
|
||||
trace_megasas_dcmd_req_alloc_failed(cmd->index,
|
||||
"PD get info vpd inquiry");
|
||||
@@ -1268,7 +1268,7 @@ static int megasas_ld_get_info_submit(SCSIDevice *sdev, int lun,
|
||||
cmd->iov_buf = g_malloc0(dcmd_size);
|
||||
info = cmd->iov_buf;
|
||||
megasas_setup_inquiry(cdb, 0x83, sizeof(info->vpd_page83));
|
||||
cmd->req = scsi_req_new(sdev, cmd->index, lun, cdb, cmd);
|
||||
cmd->req = scsi_req_new(sdev, cmd->index, lun, cdb, sizeof(cdb), cmd);
|
||||
if (!cmd->req) {
|
||||
trace_megasas_dcmd_req_alloc_failed(cmd->index,
|
||||
"LD get info vpd inquiry");
|
||||
@@ -1748,7 +1748,7 @@ static int megasas_handle_scsi(MegasasState *s, MegasasCmd *cmd,
|
||||
return MFI_STAT_SCSI_DONE_WITH_ERROR;
|
||||
}
|
||||
|
||||
cmd->req = scsi_req_new(sdev, cmd->index, lun_id, cdb, cmd);
|
||||
cmd->req = scsi_req_new(sdev, cmd->index, lun_id, cdb, cdb_len, cmd);
|
||||
if (!cmd->req) {
|
||||
trace_megasas_scsi_req_alloc_failed(
|
||||
mfi_frame_desc(frame_cmd), target_id, lun_id);
|
||||
@@ -1823,7 +1823,7 @@ static int megasas_handle_io(MegasasState *s, MegasasCmd *cmd, int frame_cmd)
|
||||
|
||||
megasas_encode_lba(cdb, lba_start, lba_count, is_write);
|
||||
cmd->req = scsi_req_new(sdev, cmd->index,
|
||||
lun_id, cdb, cmd);
|
||||
lun_id, cdb, cdb_len, cmd);
|
||||
if (!cmd->req) {
|
||||
trace_megasas_scsi_req_alloc_failed(
|
||||
mfi_frame_desc(frame_cmd), target_id, lun_id);
|
||||
|
||||
+2
-1
@@ -324,7 +324,8 @@ static int mptsas_process_scsi_io_request(MPTSASState *s,
|
||||
}
|
||||
|
||||
req->sreq = scsi_req_new(sdev, scsi_io->MsgContext,
|
||||
scsi_io->LUN[1], scsi_io->CDB, req);
|
||||
scsi_io->LUN[1], scsi_io->CDB,
|
||||
scsi_io->CDBLength, req);
|
||||
|
||||
if (req->sreq->cmd.xfer > scsi_io->DataLength) {
|
||||
goto overrun;
|
||||
|
||||
+20
-9
@@ -102,15 +102,15 @@ static void scsi_device_unrealize(SCSIDevice *s)
|
||||
}
|
||||
|
||||
int scsi_bus_parse_cdb(SCSIDevice *dev, SCSICommand *cmd, uint8_t *buf,
|
||||
void *hba_private)
|
||||
size_t buf_len, void *hba_private)
|
||||
{
|
||||
SCSIBus *bus = DO_UPCAST(SCSIBus, qbus, dev->qdev.parent_bus);
|
||||
int rc;
|
||||
|
||||
assert(cmd->len == 0);
|
||||
rc = scsi_req_parse_cdb(dev, cmd, buf);
|
||||
rc = scsi_req_parse_cdb(dev, cmd, buf, buf_len);
|
||||
if (bus->info->parse_cdb) {
|
||||
rc = bus->info->parse_cdb(dev, cmd, buf, hba_private);
|
||||
rc = bus->info->parse_cdb(dev, cmd, buf, buf_len, hba_private);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
@@ -703,7 +703,7 @@ SCSIRequest *scsi_req_alloc(const SCSIReqOps *reqops, SCSIDevice *d,
|
||||
}
|
||||
|
||||
SCSIRequest *scsi_req_new(SCSIDevice *d, uint32_t tag, uint32_t lun,
|
||||
uint8_t *buf, void *hba_private)
|
||||
uint8_t *buf, size_t buf_len, void *hba_private)
|
||||
{
|
||||
SCSIBus *bus = DO_UPCAST(SCSIBus, qbus, d->qdev.parent_bus);
|
||||
const SCSIReqOps *ops;
|
||||
@@ -712,6 +712,11 @@ SCSIRequest *scsi_req_new(SCSIDevice *d, uint32_t tag, uint32_t lun,
|
||||
SCSICommand cmd = { .len = 0 };
|
||||
int ret;
|
||||
|
||||
if (buf_len == 0) {
|
||||
trace_scsi_req_parse_bad(d->id, lun, tag, 0);
|
||||
goto invalid_opcode;
|
||||
}
|
||||
|
||||
if ((d->unit_attention.key == UNIT_ATTENTION ||
|
||||
bus->unit_attention.key == UNIT_ATTENTION) &&
|
||||
(buf[0] != INQUIRY &&
|
||||
@@ -734,13 +739,14 @@ SCSIRequest *scsi_req_new(SCSIDevice *d, uint32_t tag, uint32_t lun,
|
||||
}
|
||||
|
||||
if (ops != NULL || !sc->parse_cdb) {
|
||||
ret = scsi_req_parse_cdb(d, &cmd, buf);
|
||||
ret = scsi_req_parse_cdb(d, &cmd, buf, buf_len);
|
||||
} else {
|
||||
ret = sc->parse_cdb(d, &cmd, buf, hba_private);
|
||||
ret = sc->parse_cdb(d, &cmd, buf, buf_len, hba_private);
|
||||
}
|
||||
|
||||
if (ret != 0) {
|
||||
trace_scsi_req_parse_bad(d->id, lun, tag, buf[0]);
|
||||
invalid_opcode:
|
||||
req = scsi_req_alloc(&reqops_invalid_opcode, d, tag, lun, hba_private);
|
||||
} else {
|
||||
assert(cmd.len != 0);
|
||||
@@ -1308,14 +1314,15 @@ static void scsi_cmd_xfer_mode(SCSICommand *cmd)
|
||||
}
|
||||
}
|
||||
|
||||
int scsi_req_parse_cdb(SCSIDevice *dev, SCSICommand *cmd, uint8_t *buf)
|
||||
int scsi_req_parse_cdb(SCSIDevice *dev, SCSICommand *cmd, uint8_t *buf,
|
||||
size_t buf_len)
|
||||
{
|
||||
int rc;
|
||||
int len;
|
||||
|
||||
cmd->lba = -1;
|
||||
len = scsi_cdb_length(buf);
|
||||
if (len < 0) {
|
||||
if (len < 0 || len > buf_len) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -1713,7 +1720,11 @@ static int get_scsi_requests(QEMUFile *f, void *pv, size_t size,
|
||||
qemu_get_buffer(f, buf, sizeof(buf));
|
||||
qemu_get_be32s(f, &tag);
|
||||
qemu_get_be32s(f, &lun);
|
||||
req = scsi_req_new(s, tag, lun, buf, NULL);
|
||||
/*
|
||||
* A too-short CDB would have been rejected by scsi_req_new, so just use
|
||||
* SCSI_CMD_BUF_SIZE as the CDB length.
|
||||
*/
|
||||
req = scsi_req_new(s, tag, lun, buf, sizeof(buf), NULL);
|
||||
req->retry = (sbyte == 1);
|
||||
if (bus->info->load_request) {
|
||||
req->hba_private = bus->info->load_request(f, req);
|
||||
|
||||
+4
-3
@@ -3030,14 +3030,15 @@ static SCSIRequest *scsi_block_new_request(SCSIDevice *d, uint32_t tag,
|
||||
}
|
||||
|
||||
static int scsi_block_parse_cdb(SCSIDevice *d, SCSICommand *cmd,
|
||||
uint8_t *buf, void *hba_private)
|
||||
uint8_t *buf, size_t buf_len,
|
||||
void *hba_private)
|
||||
{
|
||||
SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, d);
|
||||
|
||||
if (scsi_block_is_passthrough(s, buf)) {
|
||||
return scsi_bus_parse_cdb(&s->qdev, cmd, buf, hba_private);
|
||||
return scsi_bus_parse_cdb(&s->qdev, cmd, buf, buf_len, hba_private);
|
||||
} else {
|
||||
return scsi_req_parse_cdb(&s->qdev, cmd, buf);
|
||||
return scsi_req_parse_cdb(&s->qdev, cmd, buf, buf_len);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -791,9 +791,10 @@ static Property scsi_generic_properties[] = {
|
||||
};
|
||||
|
||||
static int scsi_generic_parse_cdb(SCSIDevice *dev, SCSICommand *cmd,
|
||||
uint8_t *buf, void *hba_private)
|
||||
uint8_t *buf, size_t buf_len,
|
||||
void *hba_private)
|
||||
{
|
||||
return scsi_bus_parse_cdb(dev, cmd, buf, hba_private);
|
||||
return scsi_bus_parse_cdb(dev, cmd, buf, buf_len, hba_private);
|
||||
}
|
||||
|
||||
static void scsi_generic_class_initfn(ObjectClass *klass, void *data)
|
||||
|
||||
@@ -783,6 +783,7 @@ static int vscsi_queue_cmd(VSCSIState *s, vscsi_req *req)
|
||||
union srp_iu *srp = &req_iu(req)->srp;
|
||||
SCSIDevice *sdev;
|
||||
int n, lun;
|
||||
size_t cdb_len = sizeof (srp->cmd.cdb) + (srp->cmd.add_cdb_len & ~3);
|
||||
|
||||
if ((srp->cmd.lun == 0 || be64_to_cpu(srp->cmd.lun) == SRP_REPORT_LUNS_WLUN)
|
||||
&& srp->cmd.cdb[0] == REPORT_LUNS) {
|
||||
@@ -801,7 +802,7 @@ static int vscsi_queue_cmd(VSCSIState *s, vscsi_req *req)
|
||||
} return 1;
|
||||
}
|
||||
|
||||
req->sreq = scsi_req_new(sdev, req->qtag, lun, srp->cmd.cdb, req);
|
||||
req->sreq = scsi_req_new(sdev, req->qtag, lun, srp->cmd.cdb, cdb_len, req);
|
||||
n = scsi_req_enqueue(req->sreq);
|
||||
|
||||
trace_spapr_vscsi_queue_cmd(req->qtag, srp->cmd.cdb[0],
|
||||
|
||||
@@ -622,7 +622,8 @@ static void virtio_scsi_command_complete(SCSIRequest *r, size_t resid)
|
||||
}
|
||||
|
||||
static int virtio_scsi_parse_cdb(SCSIDevice *dev, SCSICommand *cmd,
|
||||
uint8_t *buf, void *hba_private)
|
||||
uint8_t *buf, size_t buf_len,
|
||||
void *hba_private)
|
||||
{
|
||||
VirtIOSCSIReq *req = hba_private;
|
||||
|
||||
@@ -696,7 +697,7 @@ static int virtio_scsi_handle_cmd_req_prepare(VirtIOSCSI *s, VirtIOSCSIReq *req)
|
||||
virtio_scsi_ctx_check(s, d);
|
||||
req->sreq = scsi_req_new(d, req->req.cmd.tag,
|
||||
virtio_scsi_get_lun(req->req.cmd.lun),
|
||||
req->req.cmd.cdb, req);
|
||||
req->req.cmd.cdb, vs->cdb_size, req);
|
||||
|
||||
if (req->sreq->cmd.mode != SCSI_XFER_NONE
|
||||
&& (req->sreq->cmd.mode != req->mode ||
|
||||
|
||||
@@ -730,7 +730,7 @@ pvscsi_process_request_descriptor(PVSCSIState *s,
|
||||
r->sg.elemAddr = descr->dataAddr;
|
||||
}
|
||||
|
||||
r->sreq = scsi_req_new(d, descr->context, r->lun, descr->cdb, r);
|
||||
r->sreq = scsi_req_new(d, descr->context, r->lun, descr->cdb, descr->cdbLen, r);
|
||||
if (r->sreq->cmd.mode == SCSI_XFER_FROM_DEV &&
|
||||
(descr->flags & PVSCSI_FLAG_CMD_DIR_TODEVICE)) {
|
||||
r->cmp.hostStatus = BTSTAT_BADMSG;
|
||||
|
||||
@@ -415,7 +415,7 @@ static void usb_msd_handle_data(USBDevice *dev, USBPacket *p)
|
||||
cbw.cmd_len, s->data_len);
|
||||
assert(le32_to_cpu(s->csw.residue) == 0);
|
||||
s->scsi_len = 0;
|
||||
s->req = scsi_req_new(scsi_dev, tag, cbw.lun, cbw.cmd, NULL);
|
||||
s->req = scsi_req_new(scsi_dev, tag, cbw.lun, cbw.cmd, cbw.cmd_len, NULL);
|
||||
if (s->commandlog) {
|
||||
scsi_req_print(s->req);
|
||||
}
|
||||
|
||||
+3
-2
@@ -71,7 +71,7 @@ typedef struct {
|
||||
uint8_t reserved_2;
|
||||
uint64_t lun;
|
||||
uint8_t cdb[16];
|
||||
uint8_t add_cdb[1]; /* not supported by QEMU */
|
||||
uint8_t add_cdb[1];
|
||||
} QEMU_PACKED uas_iu_command;
|
||||
|
||||
typedef struct {
|
||||
@@ -699,6 +699,7 @@ static void usb_uas_command(UASDevice *uas, uas_iu *iu)
|
||||
UASRequest *req;
|
||||
uint32_t len;
|
||||
uint16_t tag = be16_to_cpu(iu->hdr.tag);
|
||||
size_t cdb_len = sizeof(iu->command.cdb) + iu->command.add_cdb_length;
|
||||
|
||||
if (iu->command.add_cdb_length > 0) {
|
||||
qemu_log_mask(LOG_UNIMP, "additional adb length not yet supported\n");
|
||||
@@ -729,7 +730,7 @@ static void usb_uas_command(UASDevice *uas, uas_iu *iu)
|
||||
|
||||
req->req = scsi_req_new(req->dev, req->tag,
|
||||
usb_uas_get_lun(req->lun),
|
||||
iu->command.cdb, req);
|
||||
iu->command.cdb, cdb_len, req);
|
||||
if (uas->requestlog) {
|
||||
scsi_req_print(req->req);
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ struct SCSIDeviceClass {
|
||||
void (*realize)(SCSIDevice *dev, Error **errp);
|
||||
void (*unrealize)(SCSIDevice *dev);
|
||||
int (*parse_cdb)(SCSIDevice *dev, SCSICommand *cmd, uint8_t *buf,
|
||||
void *hba_private);
|
||||
size_t buf_len, void *hba_private);
|
||||
SCSIRequest *(*alloc_req)(SCSIDevice *s, uint32_t tag, uint32_t lun,
|
||||
uint8_t *buf, void *hba_private);
|
||||
void (*unit_attention_reported)(SCSIDevice *s);
|
||||
@@ -122,7 +122,7 @@ struct SCSIBusInfo {
|
||||
int tcq;
|
||||
int max_channel, max_target, max_lun;
|
||||
int (*parse_cdb)(SCSIDevice *dev, SCSICommand *cmd, uint8_t *buf,
|
||||
void *hba_private);
|
||||
size_t buf_len, void *hba_private);
|
||||
void (*transfer_data)(SCSIRequest *req, uint32_t arg);
|
||||
void (*fail)(SCSIRequest *req);
|
||||
void (*complete)(SCSIRequest *req, size_t residual);
|
||||
@@ -192,14 +192,15 @@ void scsi_legacy_handle_cmdline(void);
|
||||
SCSIRequest *scsi_req_alloc(const SCSIReqOps *reqops, SCSIDevice *d,
|
||||
uint32_t tag, uint32_t lun, void *hba_private);
|
||||
SCSIRequest *scsi_req_new(SCSIDevice *d, uint32_t tag, uint32_t lun,
|
||||
uint8_t *buf, void *hba_private);
|
||||
uint8_t *buf, size_t buf_len, void *hba_private);
|
||||
int32_t scsi_req_enqueue(SCSIRequest *req);
|
||||
SCSIRequest *scsi_req_ref(SCSIRequest *req);
|
||||
void scsi_req_unref(SCSIRequest *req);
|
||||
|
||||
int scsi_bus_parse_cdb(SCSIDevice *dev, SCSICommand *cmd, uint8_t *buf,
|
||||
void *hba_private);
|
||||
int scsi_req_parse_cdb(SCSIDevice *dev, SCSICommand *cmd, uint8_t *buf);
|
||||
size_t buf_len, void *hba_private);
|
||||
int scsi_req_parse_cdb(SCSIDevice *dev, SCSICommand *cmd, uint8_t *buf,
|
||||
size_t buf_len);
|
||||
void scsi_req_build_sense(SCSIRequest *req, SCSISense sense);
|
||||
void scsi_req_print(SCSIRequest *req);
|
||||
void scsi_req_continue(SCSIRequest *req);
|
||||
|
||||
@@ -3408,7 +3408,6 @@ foreach target : target_dirs
|
||||
target_inc += include_directories('linux-headers', is_system: true)
|
||||
endif
|
||||
if target.endswith('-softmmu')
|
||||
qemu_target_name = 'qemu-system-' + target_name
|
||||
target_type='system'
|
||||
t = target_softmmu_arch[target_base_arch].apply(config_target, strict: false)
|
||||
arch_srcs += t.sources()
|
||||
@@ -3425,7 +3424,6 @@ foreach target : target_dirs
|
||||
abi = config_target['TARGET_ABI_DIR']
|
||||
target_type='user'
|
||||
target_inc += common_user_inc
|
||||
qemu_target_name = 'qemu-' + target_name
|
||||
if target_base_arch in target_user_arch
|
||||
t = target_user_arch[target_base_arch].apply(config_target, strict: false)
|
||||
arch_srcs += t.sources()
|
||||
|
||||
+2
-2
@@ -82,9 +82,9 @@ option('tcg', type: 'feature', value: 'enabled',
|
||||
description: 'TCG support')
|
||||
option('tcg_interpreter', type: 'boolean', value: false,
|
||||
description: 'TCG with bytecode interpreter (slow)')
|
||||
option('cfi', type: 'boolean', value: 'false',
|
||||
option('cfi', type: 'boolean', value: false,
|
||||
description: 'Control-Flow Integrity (CFI)')
|
||||
option('cfi_debug', type: 'boolean', value: 'false',
|
||||
option('cfi_debug', type: 'boolean', value: false,
|
||||
description: 'Verbose errors in case of CFI violation')
|
||||
option('multiprocess', type: 'feature', value: 'auto',
|
||||
description: 'Out of process device emulation support')
|
||||
|
||||
@@ -38,7 +38,6 @@ if meson.is_cross_build() or 'CONFIG_XKBCOMMON' not in config_host
|
||||
else
|
||||
native_qemu_keymap = qemu_keymap
|
||||
endif
|
||||
cp = find_program('cp')
|
||||
|
||||
if native_qemu_keymap.found()
|
||||
t = []
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ plugin_ldflags = []
|
||||
# Modules need more symbols than just those in plugins/qemu-plugins.symbols
|
||||
if not enable_modules
|
||||
if targetos == 'darwin'
|
||||
qemu_plugins_symbols_list = configure_file(
|
||||
configure_file(
|
||||
input: files('qemu-plugins.symbols'),
|
||||
output: 'qemu-plugins-ld64.symbols',
|
||||
capture: true,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user