qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Laurent Vivier <lvivier@redhat.com>
Subject: [Qemu-devel] [PULL 74/76] scsi-disk: Convert from DPRINTF() macro to trace events
Date: Tue,  5 Feb 2019 19:15:24 +0100	[thread overview]
Message-ID: <1549390526-24246-75-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1549390526-24246-1-git-send-email-pbonzini@redhat.com>

From: Laurent Vivier <lvivier@redhat.com>

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20181211163105.31834-2-lvivier@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/scsi/scsi-disk.c  | 103 +++++++++++++++++++++++++--------------------------
 hw/scsi/trace-events |  29 +++++++++++++++
 2 files changed, 79 insertions(+), 53 deletions(-)

diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
index e6db6d7..d4e83ae 100644
--- a/hw/scsi/scsi-disk.c
+++ b/hw/scsi/scsi-disk.c
@@ -19,15 +19,6 @@
  * the host adapter emulator.
  */
 
-//#define DEBUG_SCSI
-
-#ifdef DEBUG_SCSI
-#define DPRINTF(fmt, ...) \
-do { printf("scsi-disk: " fmt , ## __VA_ARGS__); } while (0)
-#else
-#define DPRINTF(fmt, ...) do {} while(0)
-#endif
-
 #include "qemu/osdep.h"
 #include "qemu/units.h"
 #include "qapi/error.h"
@@ -41,6 +32,7 @@ do { printf("scsi-disk: " fmt , ## __VA_ARGS__); } while (0)
 #include "hw/block/block.h"
 #include "sysemu/dma.h"
 #include "qemu/cutils.h"
+#include "trace.h"
 
 #ifdef __linux
 #include <scsi/sg.h>
@@ -129,8 +121,8 @@ static void scsi_free_request(SCSIRequest *req)
 /* Helper function for command completion with sense.  */
 static void scsi_check_condition(SCSIDiskReq *r, SCSISense sense)
 {
-    DPRINTF("Command complete tag=0x%x sense=%d/%d/%d\n",
-            r->req.tag, sense.key, sense.asc, sense.ascq);
+    trace_scsi_disk_check_condition(r->req.tag, sense.key, sense.asc,
+                                    sense.ascq);
     scsi_req_build_sense(&r->req, sense);
     scsi_req_complete(&r->req, CHECK_CONDITION);
 }
@@ -318,7 +310,7 @@ static void scsi_read_complete(void * opaque, int ret)
     }
 
     block_acct_done(blk_get_stats(s->qdev.conf.blk), &r->acct);
-    DPRINTF("Data ready tag=0x%x len=%zd\n", r->req.tag, r->qiov.size);
+    trace_scsi_disk_read_complete(r->req.tag, r->qiov.size);
 
     n = r->qiov.size / 512;
     r->sector += n;
@@ -389,7 +381,7 @@ static void scsi_read_data(SCSIRequest *req)
     SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, r->req.dev);
     bool first;
 
-    DPRINTF("Read sector_count=%d\n", r->sector_count);
+    trace_scsi_disk_read_data_count(r->sector_count);
     if (r->sector_count == 0) {
         /* This also clears the sense buffer for REQUEST SENSE.  */
         scsi_req_complete(&r->req, GOOD);
@@ -402,7 +394,7 @@ static void scsi_read_data(SCSIRequest *req)
     /* The request is used as the AIO opaque value, so add a ref.  */
     scsi_req_ref(&r->req);
     if (r->req.cmd.mode == SCSI_XFER_TO_DEV) {
-        DPRINTF("Data transfer direction invalid\n");
+        trace_scsi_disk_read_data_invalid();
         scsi_read_complete(r, -EINVAL);
         return;
     }
@@ -503,7 +495,7 @@ static void scsi_write_complete_noio(SCSIDiskReq *r, int ret)
         return;
     } else {
         scsi_init_iovec(r, SCSI_DMA_BUF_SIZE);
-        DPRINTF("Write complete tag=0x%x more=%zd\n", r->req.tag, r->qiov.size);
+        trace_scsi_disk_write_complete_noio(r->req.tag, r->qiov.size);
         scsi_req_data(&r->req, r->qiov.size);
     }
 
@@ -541,7 +533,7 @@ static void scsi_write_data(SCSIRequest *req)
     /* The request is used as the AIO opaque value, so add a ref.  */
     scsi_req_ref(&r->req);
     if (r->req.cmd.mode != SCSI_XFER_TO_DEV) {
-        DPRINTF("Data transfer direction invalid\n");
+        trace_scsi_disk_write_data_invalid();
         scsi_write_complete_noio(r, -EINVAL);
         return;
     }
@@ -606,8 +598,7 @@ static int scsi_disk_emulate_vpd_page(SCSIRequest *req, uint8_t *outbuf)
     switch (page_code) {
     case 0x00: /* Supported page codes, mandatory */
     {
-        DPRINTF("Inquiry EVPD[Supported pages] "
-                "buffer size %zd\n", req->cmd.xfer);
+        trace_scsi_disk_emulate_vpd_page_00(req->cmd.xfer);
         outbuf[buflen++] = 0x00; /* list of supported pages (this page) */
         if (s->serial) {
             outbuf[buflen++] = 0x80; /* unit serial number */
@@ -625,7 +616,7 @@ static int scsi_disk_emulate_vpd_page(SCSIRequest *req, uint8_t *outbuf)
         int l;
 
         if (!s->serial) {
-            DPRINTF("Inquiry (EVPD[Serial number] not supported\n");
+            trace_scsi_disk_emulate_vpd_page_80_not_supported();
             return -1;
         }
 
@@ -634,8 +625,7 @@ static int scsi_disk_emulate_vpd_page(SCSIRequest *req, uint8_t *outbuf)
             l = 36;
         }
 
-        DPRINTF("Inquiry EVPD[Serial number] "
-                "buffer size %zd\n", req->cmd.xfer);
+        trace_scsi_disk_emulate_vpd_page_80(req->cmd.xfer);
         memcpy(outbuf + buflen, s->serial, l);
         buflen += l;
         break;
@@ -645,8 +635,7 @@ static int scsi_disk_emulate_vpd_page(SCSIRequest *req, uint8_t *outbuf)
     {
         int id_len = s->device_id ? MIN(strlen(s->device_id), 255 - 8) : 0;
 
-        DPRINTF("Inquiry EVPD[Device identification] "
-                "buffer size %zd\n", req->cmd.xfer);
+        trace_scsi_disk_emulate_vpd_page_83(req->cmd.xfer);
 
         if (id_len) {
             outbuf[buflen++] = 0x2; /* ASCII */
@@ -693,8 +682,7 @@ static int scsi_disk_emulate_vpd_page(SCSIRequest *req, uint8_t *outbuf)
         SCSIBlockLimits bl = {};
 
         if (s->qdev.type == TYPE_ROM) {
-            DPRINTF("Inquiry (EVPD[%02X] not supported for CDROM\n",
-                    page_code);
+            trace_scsi_disk_emulate_vpd_page_b0_not_supported();
             return -1;
         }
         bl.wsnz = 1;
@@ -1241,8 +1229,9 @@ static int scsi_disk_emulate_mode_sense(SCSIDiskReq *r, uint8_t *outbuf)
     dbd = (r->req.cmd.buf[1] & 0x8) != 0;
     page = r->req.cmd.buf[2] & 0x3f;
     page_control = (r->req.cmd.buf[2] & 0xc0) >> 6;
-    DPRINTF("Mode Sense(%d) (page %d, xfer %zd, page_control %d)\n",
-        (r->req.cmd.buf[0] == MODE_SENSE) ? 6 : 10, page, r->req.cmd.xfer, page_control);
+
+    trace_scsi_disk_emulate_mode_sense((r->req.cmd.buf[0] == MODE_SENSE) ? 6 :
+                                       10, page, r->req.cmd.xfer, page_control);
     memset(outbuf, 0, r->req.cmd.xfer);
     p = outbuf;
 
@@ -1334,7 +1323,7 @@ static int scsi_disk_emulate_read_toc(SCSIRequest *req, uint8_t *outbuf)
     format = req->cmd.buf[2] & 0xf;
     start_track = req->cmd.buf[6];
     blk_get_geometry(s->qdev.conf.blk, &nb_sectors);
-    DPRINTF("Read TOC (track %d format %d msf %d)\n", start_track, format, msf >> 1);
+    trace_scsi_disk_emulate_read_toc(start_track, format, msf >> 1);
     nb_sectors /= s->qdev.blocksize / 512;
     switch (format) {
     case 0:
@@ -1393,7 +1382,7 @@ static void scsi_disk_emulate_read_data(SCSIRequest *req)
     int buflen = r->iov.iov_len;
 
     if (buflen) {
-        DPRINTF("Read buf_len=%d\n", buflen);
+        trace_scsi_disk_emulate_read_data(buflen);
         r->iov.iov_len = 0;
         r->started = true;
         scsi_req_data(&r->req, buflen);
@@ -1812,7 +1801,7 @@ static void scsi_disk_emulate_write_data(SCSIRequest *req)
 
     if (r->iov.iov_len) {
         int buflen = r->iov.iov_len;
-        DPRINTF("Write buf_len=%d\n", buflen);
+        trace_scsi_disk_emulate_write_data(buflen);
         r->iov.iov_len = 0;
         scsi_req_data(&r->req, buflen);
         return;
@@ -2021,7 +2010,7 @@ static int32_t scsi_disk_emulate_command(SCSIRequest *req, uint8_t *buf)
     case SERVICE_ACTION_IN_16:
         /* Service Action In subcommands. */
         if ((req->cmd.buf[1] & 31) == SAI_READ_CAPACITY_16) {
-            DPRINTF("SAI READ CAPACITY(16)\n");
+            trace_scsi_disk_emulate_command_SAI_16();
             memset(outbuf, 0, req->cmd.xfer);
             blk_get_geometry(s->qdev.conf.blk, &nb_sectors);
             if (!nb_sectors) {
@@ -2059,7 +2048,7 @@ static int32_t scsi_disk_emulate_command(SCSIRequest *req, uint8_t *buf)
             /* Protection, exponent and lowest lba field left blank. */
             break;
         }
-        DPRINTF("Unsupported Service Action In\n");
+        trace_scsi_disk_emulate_command_SAI_unsupported();
         goto illegal_request;
     case SYNCHRONIZE_CACHE:
         /* The request is used as the AIO opaque value, so add a ref.  */
@@ -2069,37 +2058,36 @@ static int32_t scsi_disk_emulate_command(SCSIRequest *req, uint8_t *buf)
         r->req.aiocb = blk_aio_flush(s->qdev.conf.blk, scsi_aio_complete, r);
         return 0;
     case SEEK_10:
-        DPRINTF("Seek(10) (sector %" PRId64 ")\n", r->req.cmd.lba);
+        trace_scsi_disk_emulate_command_SEEK_10(r->req.cmd.lba);
         if (r->req.cmd.lba > s->qdev.max_lba) {
             goto illegal_lba;
         }
         break;
     case MODE_SELECT:
-        DPRINTF("Mode Select(6) (len %lu)\n", (unsigned long)r->req.cmd.xfer);
+        trace_scsi_disk_emulate_command_MODE_SELECT(r->req.cmd.xfer);
         break;
     case MODE_SELECT_10:
-        DPRINTF("Mode Select(10) (len %lu)\n", (unsigned long)r->req.cmd.xfer);
+        trace_scsi_disk_emulate_command_MODE_SELECT_10(r->req.cmd.xfer);
         break;
     case UNMAP:
-        DPRINTF("Unmap (len %lu)\n", (unsigned long)r->req.cmd.xfer);
+        trace_scsi_disk_emulate_command_UNMAP(r->req.cmd.xfer);
         break;
     case VERIFY_10:
     case VERIFY_12:
     case VERIFY_16:
-        DPRINTF("Verify (bytchk %d)\n", (req->cmd.buf[1] >> 1) & 3);
+        trace_scsi_disk_emulate_command_VERIFY((req->cmd.buf[1] >> 1) & 3);
         if (req->cmd.buf[1] & 6) {
             goto illegal_request;
         }
         break;
     case WRITE_SAME_10:
     case WRITE_SAME_16:
-        DPRINTF("WRITE SAME %d (len %lu)\n",
-                req->cmd.buf[0] == WRITE_SAME_10 ? 10 : 16,
-                (unsigned long)r->req.cmd.xfer);
+        trace_scsi_disk_emulate_command_WRITE_SAME(
+                req->cmd.buf[0] == WRITE_SAME_10 ? 10 : 16, r->req.cmd.xfer);
         break;
     default:
-        DPRINTF("Unknown SCSI command (%2.2x=%s)\n", buf[0],
-                scsi_command_name(buf[0]));
+        trace_scsi_disk_emulate_command_UNKNOWN(buf[0],
+                                                scsi_command_name(buf[0]));
         scsi_check_condition(r, SENSE_CODE(INVALID_OPCODE));
         return 0;
     }
@@ -2152,7 +2140,7 @@ static int32_t scsi_disk_dma_command(SCSIRequest *req, uint8_t *buf)
     case READ_10:
     case READ_12:
     case READ_16:
-        DPRINTF("Read (sector %" PRId64 ", count %u)\n", r->req.cmd.lba, len);
+        trace_scsi_disk_dma_command_READ(r->req.cmd.lba, len);
         /* Protection information is not supported.  For SCSI versions 2 and
          * older (as determined by snooping the guest's INQUIRY commands),
          * there is no RD/WR/VRPROTECT, so skip this check in these versions.
@@ -2177,7 +2165,7 @@ static int32_t scsi_disk_dma_command(SCSIRequest *req, uint8_t *buf)
             scsi_check_condition(r, SENSE_CODE(WRITE_PROTECTED));
             return 0;
         }
-        DPRINTF("Write %s(sector %" PRId64 ", count %u)\n",
+        trace_scsi_disk_dma_command_WRITE(
                 (command & 0xe) == 0xe ? "And Verify " : "",
                 r->req.cmd.lba, len);
         /* fall through */
@@ -2515,6 +2503,22 @@ static const SCSIReqOps *const scsi_disk_reqops_dispatch[256] = {
     [WRITE_VERIFY_16]                 = &scsi_disk_dma_reqops,
 };
 
+static void scsi_disk_new_request_dump(uint32_t lun, uint32_t tag, uint8_t *buf)
+{
+    int i;
+    int len = scsi_cdb_length(buf);
+    char *line_buffer, *p;
+
+    line_buffer = g_malloc(len * 5 + 1);
+
+    for (i = 0, p = line_buffer; i < len; i++) {
+        p += sprintf(p, " 0x%02x", buf[i]);
+    }
+    trace_scsi_disk_new_request(lun, tag, line_buffer);
+
+    g_free(line_buffer);
+}
+
 static SCSIRequest *scsi_new_request(SCSIDevice *d, uint32_t tag, uint32_t lun,
                                      uint8_t *buf, void *hba_private)
 {
@@ -2530,16 +2534,9 @@ static SCSIRequest *scsi_new_request(SCSIDevice *d, uint32_t tag, uint32_t lun,
     }
     req = scsi_req_alloc(ops, &s->qdev, tag, lun, hba_private);
 
-#ifdef DEBUG_SCSI
-    DPRINTF("Command: lun=%d tag=0x%x data=0x%02x", lun, tag, buf[0]);
-    {
-        int i;
-        for (i = 1; i < scsi_cdb_length(buf); i++) {
-            printf(" 0x%02x", buf[i]);
-        }
-        printf("\n");
+    if (trace_event_get_state_backends(TRACE_SCSI_DISK_NEW_REQUEST)) {
+        scsi_disk_new_request_dump(lun, tag, buf);
     }
-#endif
 
     return req;
 }
diff --git a/hw/scsi/trace-events b/hw/scsi/trace-events
index 2fe8a7c..dbd529e 100644
--- a/hw/scsi/trace-events
+++ b/hw/scsi/trace-events
@@ -292,3 +292,32 @@ lsi_execute_script_stop(void) "SCRIPTS execution stopped"
 lsi_awoken(void) "Woken by SIGP"
 lsi_reg_read(const char *name, int offset, uint8_t ret) "Read reg %s 0x%x = 0x%02x"
 lsi_reg_write(const char *name, int offset, uint8_t val) "Write reg %s 0x%x = 0x%02x"
+
+# hw/scsi/scsi-disk.c
+scsi_disk_check_condition(uint32_t tag, uint8_t key, uint8_t asc, uint8_t ascq) "Command complete tag=0x%x sense=%d/%d/%d"
+scsi_disk_read_complete(uint32_t tag, size_t size) "Data ready tag=0x%x len=%zd"
+scsi_disk_read_data_count(uint32_t sector_count) "Read sector_count=%d"
+scsi_disk_read_data_invalid(void) "Data transfer direction invalid"
+scsi_disk_write_complete_noio(uint32_t tag, size_t size) "Write complete tag=0x%x more=%zd"
+scsi_disk_write_data_invalid(void) "Data transfer direction invalid"
+scsi_disk_emulate_vpd_page_00(size_t xfer) "Inquiry EVPD[Supported pages] buffer size %zd"
+scsi_disk_emulate_vpd_page_80_not_supported(void) "Inquiry (EVPD[Serial number] not supported"
+scsi_disk_emulate_vpd_page_80(size_t xfer) "Inquiry EVPD[Serial number] buffer size %zd"
+scsi_disk_emulate_vpd_page_83(size_t xfer) "Inquiry EVPD[Device identification] buffer size %zd"
+scsi_disk_emulate_vpd_page_b0_not_supported(void) "Inquiry (EVPD[Block limits] not supported for CDROM"
+scsi_disk_emulate_mode_sense(int cmd, int page, size_t xfer, int control) "Mode Sense(%d) (page %d, xfer %zd, page_control %d)"
+scsi_disk_emulate_read_toc(int start_track, int format, int msf) "Read TOC (track %d format %d msf %d)"
+scsi_disk_emulate_read_data(int buflen) "Read buf_len=%d"
+scsi_disk_emulate_write_data(int buflen) "Write buf_len=%d"
+scsi_disk_emulate_command_SAI_16(void) "SAI READ CAPACITY(16)"
+scsi_disk_emulate_command_SAI_unsupported(void) "Unsupported Service Action In"
+scsi_disk_emulate_command_SEEK_10(uint64_t lba) "Seek(10) (sector %" PRId64 ")"
+scsi_disk_emulate_command_MODE_SELECT(size_t xfer) "Mode Select(6) (len %zd)"
+scsi_disk_emulate_command_MODE_SELECT_10(size_t xfer) "Mode Select(10) (len %zd)"
+scsi_disk_emulate_command_UNMAP(size_t xfer) "Unmap (len %zd)"
+scsi_disk_emulate_command_VERIFY(int bytchk) "Verify (bytchk %d)"
+scsi_disk_emulate_command_WRITE_SAME(int cmd, size_t xfer) "WRITE SAME %d (len %zd)"
+scsi_disk_emulate_command_UNKNOWN(int cmd, const char *name) "Unknown SCSI command (0x%2.2x=%s)"
+scsi_disk_dma_command_READ(uint64_t lba, uint32_t len) "Read (sector %" PRId64 ", count %u)"
+scsi_disk_dma_command_WRITE(const char *cmd, uint64_t lba, int len) "Write %s(sector %" PRId64 ", count %u)"
+scsi_disk_new_request(uint32_t lun, uint32_t tag, const char *line) "Command: lun=%d tag=0x%x data=%s"
-- 
1.8.3.1

  parent reply	other threads:[~2019-02-05 18:16 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-05 18:14 [Qemu-devel] [PULL v2 00/76] misc patches for 2019-02-04 Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 01/76] vhost-user-test: use g_cond_broadcast Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 02/76] vhost-user-test: signal data_cond when s->rings changes Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 03/76] vhost-user-test: support VHOST_USER_PROTOCOL_F_CROSS_ENDIAN Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 04/76] vhost-user-test: skip if there is no memory at address 0 Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 05/76] vhost-user-test: reduce usage of global_qtest Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 06/76] tap: flush STDOUT on newline Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 07/76] cpu-exec: add assert_no_pages_locked() after longjmp Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 08/76] cpu-exec: reset BQL after longjmp in cpu_exec_step_atomic Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 09/76] configure: Add a proper check for openpty() in libutil Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 10/76] cpus: ignore ESRCH in qemu_cpu_kick_thread() Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 11/76] elf: Add optional function ptr to load_elf() to parse ELF notes Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 12/76] elf-ops.h: Add get_elf_note_type() Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 13/76] pvh: Add x86/HVM direct boot ABI header file Paolo Bonzini
2019-03-01 16:53   ` Alex Bennée
2019-03-01 17:13     ` Stefano Garzarella
2019-03-01 17:56       ` Alex Bennée
2019-03-02 10:17         ` Stefano Garzarella
2019-02-05 18:14 ` [Qemu-devel] [PULL 14/76] pvh: Boot uncompressed kernel using direct boot ABI Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 15/76] pvh: load initrd and expose it through fw_cfg Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 16/76] linuxboot_dma: remove duplicate definitions of FW_CFG Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 17/76] linuxboot_dma: move common functions in a new header Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 18/76] optionrom: add new PVH option rom Paolo Bonzini
2021-03-19 14:06   ` Philippe Mathieu-Daudé
2021-03-19 14:37     ` Stefano Garzarella
2021-03-19 15:51     ` Stefano Garzarella
2021-03-19 17:03     ` Paolo Bonzini
2021-03-19 17:35       ` Stefano Garzarella
2021-03-19 17:52         ` Paolo Bonzini
2021-03-19 18:20           ` Stefano Garzarella
2021-03-19 18:25             ` Stefano Garzarella
2021-03-22 10:59               ` Stefano Garzarella
2021-03-22 11:52                 ` Paolo Bonzini
2021-03-22 13:57                   ` Stefano Garzarella
2021-03-22 16:26                     ` Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 19/76] hw/i386/pc: use " Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 20/76] optionrom/pvh: load initrd from fw_cfg Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 21/76] hw/i386/pc: enable PVH only for machine type >= 4.0 Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 22/76] i386: remove the new CPUID 'PCONFIG' from Icelake-Server CPU model Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 23/76] i386: remove the 'INTEL_PT' CPUID bit from named CPU models Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 24/76] Revert "i386: Add CPUID bit for PCONFIG" Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 25/76] target-i386: hvf: remove MPX support Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 26/76] contrib/elf2dmp: fix elf.h including Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 27/76] contrib/elf2dmp: use GLib in ELF processing Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 28/76] contrib/elf2dmp: use GLib in PDB processing Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 29/76] contrib/elf2dmp: fix structures definitions Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 31/76] configure: enable elf2dmp build for Windows hosts Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 32/76] monitor: do not use QTAILQ_FOREACH_SAFE across critical sections Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 33/76] crypto: finish removing TABs Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 34/76] ui: vnc: " Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 35/76] unify len and addr type for memory/address APIs Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 36/76] hw/core/loader.c: Read as long as possible in load_image_size() Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 37/76] i386: import & use bootparam.h Paolo Bonzini
2019-02-14 16:40   ` Peter Maydell
2019-02-14 16:50     ` Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 38/76] i386: allow to load initrd below 4 GB for recent linux Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 39/76] docker: adjust Xen repository for CentOS 7 Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 40/76] i386: hvf: Don't miss 16-bit displacement Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 41/76] gdbstub: Fix i386/x86_64 machine description and add control registers Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 42/76] scsi-generic: avoid possible out-of-bounds access to r->buf Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 43/76] Remove deprecated -enable-hax option Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 44/76] qemu-options: Remove deprecated "-virtioconsole" option Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 45/76] arm: disable CONFIG_SERIAL_ISA Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 46/76] ide: split ioport registration to a separate file Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 47/76] vfio: move conditional up to hw/Makefile.objs Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 48/76] hw/pci-host/Makefile.objs: make CONFIGS clear for PCI EXPRESS Paolo Bonzini
2019-02-05 18:14 ` [Qemu-devel] [PULL 49/76] build: actually use CONFIG_PAM Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 50/76] hw/i386/Makefile.objs: Build pc_piix* and pc_q35 boards Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 51/76] hw/arm/Makefile.objs: CONFIG_ARM_VIRT created for virt board Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 52/76] hw/m68k/Makefile.objs: Conditionally build boards Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 53/76] hw/microblaze/Makefile.objs: Create configs for petalogix and xilinx boards Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 54/76] hw/mips/Makefile.objs: Create CONFIG_* for r4k, malta, mipssim boards Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 55/76] hw/ppc/Makefile.objs: Build all boards conditinally with CONFIG_* Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 56/76] hw/sh4/Makefile.objs: New CONFIG_* varibales created for sh4 boards and device Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 57/76] hw/s390/Makefile.objs: Create new CONFIG_* variables for s390x boards and devices Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 58/76] hw/sparc/Makefile.objs: CONFIG_* for sun4m and leon3 created Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 59/76] hw/lm32/Makefile.objs: Conditionally build lm32 and milkmyst Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 60/76] hw/xtensa/Makefile.objs: Build xtensa_sim and xtensa_fpga conditionally Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 61/76] hw/nios2/Makefile.objs: Conditionally build nios2 Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 62/76] hw/riscv/Makefile.objs: Create CONFIG_* for riscv boards Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 63/76] hw/sparc64/Makefile.objs: Create CONFIG_* for sparc64 Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 64/76] hw/alpha/Makefile.objs: Create CONFIG_* for alpha Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 65/76] hw/cris/Makefile.objs: Create CONFIG_* for cris Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 66/76] hw/hppa/Makefile.objs: Create CONFIG_* for hppa Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 67/76] hw/moxie/Makefile.objs: Conditionally build moxie Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 68/76] hw/openrisc/Makefile.objs: Create CONFIG_* for openrisc Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 69/76] hw/tricore/Makefile.objs: Create CONFIG_* for tricore Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 70/76] hw/i2c/Makefile.objs: Create new CONFIG_* variables for EEPROM and ACPI controller Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 71/76] hw/vfio/Makefile.objs: Create new CONFIG_* variables for VFIO core and PCI Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 72/76] i386: hvf: Fix smp boot hangs Paolo Bonzini
2019-02-05 18:15 ` [Qemu-devel] [PULL 73/76] pc: Use hotplug_handler_(plug|unplug|unplug_request) Paolo Bonzini
2019-02-05 18:15 ` Paolo Bonzini [this message]
2019-02-05 18:15 ` [Qemu-devel] [PULL 76/76] queue: fix QTAILQ_FOREACH_REVERSE_SAFE Paolo Bonzini
2019-02-05 20:01 ` [Qemu-devel] [PULL v2 00/76] misc patches for 2019-02-04 Peter Maydell
2019-02-05 20:05   ` Peter Maydell
2019-02-05 20:26     ` Paolo Bonzini
2019-02-11 16:29     ` David Hildenbrand
2019-02-11 16:33       ` Peter Maydell
2019-02-11 16:50         ` David Hildenbrand
2019-02-07 10:34 ` Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1549390526-24246-75-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).