From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Eduardo Habkost" <ehabkost@redhat.com>,
"Corey Minyard" <cminyard@mvista.com>,
=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@fr.ibm.com>,
"Marcel Apfelbaum" <marcel@redhat.com>,
"Greg Kurz" <gkurz@linux.vnet.ibm.com>
Subject: [Qemu-devel] [PULL 46/53] ipmi: add rsp_buffer_set_error() helper
Date: Fri, 11 Mar 2016 17:10:16 +0200 [thread overview]
Message-ID: <1457708548-14093-47-git-send-email-mst@redhat.com> (raw)
In-Reply-To: <1457708548-14093-1-git-send-email-mst@redhat.com>
From: Cédric Le Goater <clg@fr.ibm.com>
The third byte in the response buffer of an IPMI command holds the
error code. In many IPMI command handlers, this byte is updated
directly. This patch adds a helper routine to clarify why this byte is
being used.
Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
Acked-by: Corey Minyard <cminyard@mvista.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
hw/ipmi/ipmi_bmc_sim.c | 115 ++++++++++++++++++++++++++-----------------------
1 file changed, 60 insertions(+), 55 deletions(-)
diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c
index 3089bfe..37c892d 100644
--- a/hw/ipmi/ipmi_bmc_sim.c
+++ b/hw/ipmi/ipmi_bmc_sim.c
@@ -270,11 +270,16 @@ struct RspBuffer {
#define RSP_BUFFER_INITIALIZER { }
+static inline void rsp_buffer_set_error(RspBuffer *rsp, uint8_t byte)
+{
+ rsp->buffer[2] = byte;
+}
+
/* Add a byte to the response. */
static inline void rsp_buffer_push(RspBuffer *rsp, uint8_t byte)
{
if (rsp->len >= sizeof(rsp->buffer)) {
- rsp->buffer[2] = IPMI_CC_REQUEST_DATA_TRUNCATED;
+ rsp_buffer_set_error(rsp, IPMI_CC_REQUEST_DATA_TRUNCATED);
return;
}
rsp->buffer[rsp->len++] = byte;
@@ -284,7 +289,7 @@ static inline void rsp_buffer_pushmore(RspBuffer *rsp, uint8_t *bytes,
unsigned int n)
{
if (rsp->len + n >= sizeof(rsp->buffer)) {
- rsp->buffer[2] = IPMI_CC_REQUEST_DATA_TRUNCATED;
+ rsp_buffer_set_error(rsp, IPMI_CC_REQUEST_DATA_TRUNCATED);
return;
}
@@ -620,7 +625,7 @@ static void ipmi_sim_handle_command(IPMIBmc *b,
/* Set up the response, set the low bit of NETFN. */
/* Note that max_rsp_len must be at least 3 */
if (sizeof(rsp.buffer) < 3) {
- rsp.buffer[2] = IPMI_CC_REQUEST_DATA_TRUNCATED;
+ rsp_buffer_set_error(&rsp, IPMI_CC_REQUEST_DATA_TRUNCATED);
goto out;
}
@@ -630,28 +635,28 @@ static void ipmi_sim_handle_command(IPMIBmc *b,
/* If it's too short or it was truncated, return an error. */
if (cmd_len < 2) {
- rsp.buffer[2] = IPMI_CC_REQUEST_DATA_LENGTH_INVALID;
+ rsp_buffer_set_error(&rsp, IPMI_CC_REQUEST_DATA_LENGTH_INVALID);
goto out;
}
if (cmd_len > max_cmd_len) {
- rsp.buffer[2] = IPMI_CC_REQUEST_DATA_TRUNCATED;
+ rsp_buffer_set_error(&rsp, IPMI_CC_REQUEST_DATA_TRUNCATED);
goto out;
}
if ((cmd[0] & 0x03) != 0) {
/* Only have stuff on LUN 0 */
- rsp.buffer[2] = IPMI_CC_COMMAND_INVALID_FOR_LUN;
+ rsp_buffer_set_error(&rsp, IPMI_CC_COMMAND_INVALID_FOR_LUN);
goto out;
}
hdl = ipmi_get_handler(ibs, cmd[0] >> 2, cmd[1]);
if (!hdl) {
- rsp.buffer[2] = IPMI_CC_INVALID_CMD;
+ rsp_buffer_set_error(&rsp, IPMI_CC_INVALID_CMD);
goto out;
}
if (cmd_len < hdl->cmd_len_min) {
- rsp.buffer[2] = IPMI_CC_REQUEST_DATA_LENGTH_INVALID;
+ rsp_buffer_set_error(&rsp, IPMI_CC_REQUEST_DATA_LENGTH_INVALID);
goto out;
}
@@ -761,26 +766,26 @@ static void chassis_control(IPMIBmcSim *ibs,
switch (cmd[2] & 0xf) {
case 0: /* power down */
- rsp->buffer[2] = k->do_hw_op(s, IPMI_POWEROFF_CHASSIS, 0);
+ rsp_buffer_set_error(rsp, k->do_hw_op(s, IPMI_POWEROFF_CHASSIS, 0));
break;
case 1: /* power up */
- rsp->buffer[2] = k->do_hw_op(s, IPMI_POWERON_CHASSIS, 0);
+ rsp_buffer_set_error(rsp, k->do_hw_op(s, IPMI_POWERON_CHASSIS, 0));
break;
case 2: /* power cycle */
- rsp->buffer[2] = k->do_hw_op(s, IPMI_POWERCYCLE_CHASSIS, 0);
+ rsp_buffer_set_error(rsp, k->do_hw_op(s, IPMI_POWERCYCLE_CHASSIS, 0));
break;
case 3: /* hard reset */
- rsp->buffer[2] = k->do_hw_op(s, IPMI_RESET_CHASSIS, 0);
+ rsp_buffer_set_error(rsp, k->do_hw_op(s, IPMI_RESET_CHASSIS, 0));
break;
case 4: /* pulse diagnostic interrupt */
- rsp->buffer[2] = k->do_hw_op(s, IPMI_PULSE_DIAG_IRQ, 0);
+ rsp_buffer_set_error(rsp, k->do_hw_op(s, IPMI_PULSE_DIAG_IRQ, 0));
break;
case 5: /* soft shutdown via ACPI by overtemp emulation */
- rsp->buffer[2] = k->do_hw_op(s,
- IPMI_SHUTDOWN_VIA_ACPI_OVERTEMP, 0);
+ rsp_buffer_set_error(rsp, k->do_hw_op(s,
+ IPMI_SHUTDOWN_VIA_ACPI_OVERTEMP, 0));
break;
default:
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
return;
}
}
@@ -919,7 +924,7 @@ static void read_evt_msg_buf(IPMIBmcSim *ibs,
unsigned int i;
if (!(ibs->msg_flags & IPMI_BMC_MSG_FLAG_EVT_BUF_FULL)) {
- rsp->buffer[2] = 0x80;
+ rsp_buffer_set_error(rsp, 0x80);
return;
}
for (i = 0; i < 16; i++) {
@@ -937,7 +942,7 @@ static void get_msg(IPMIBmcSim *ibs,
qemu_mutex_lock(&ibs->lock);
if (QTAILQ_EMPTY(&ibs->rcvbufs)) {
- rsp->buffer[2] = 0x80; /* Queue empty */
+ rsp_buffer_set_error(rsp, 0x80); /* Queue empty */
goto out;
}
rsp_buffer_push(rsp, 0); /* Channel 0 */
@@ -981,18 +986,18 @@ static void send_msg(IPMIBmcSim *ibs,
if (cmd[2] != 0) {
/* We only handle channel 0 with no options */
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
return;
}
if (cmd_len < 10) {
- rsp->buffer[2] = IPMI_CC_REQUEST_DATA_LENGTH_INVALID;
+ rsp_buffer_set_error(rsp, IPMI_CC_REQUEST_DATA_LENGTH_INVALID);
return;
}
if (cmd[3] != 0x40) {
/* We only emulate a MC at address 0x40. */
- rsp->buffer[2] = 0x83; /* NAK on write */
+ rsp_buffer_set_error(rsp, 0x83); /* NAK on write */
return;
}
@@ -1081,7 +1086,7 @@ static void reset_watchdog_timer(IPMIBmcSim *ibs,
RspBuffer *rsp)
{
if (!ibs->watchdog_initialized) {
- rsp->buffer[2] = 0x80;
+ rsp_buffer_set_error(rsp, 0x80);
return;
}
do_watchdog_reset(ibs);
@@ -1097,7 +1102,7 @@ static void set_watchdog_timer(IPMIBmcSim *ibs,
val = cmd[2] & 0x7; /* Validate use */
if (val == 0 || val > 5) {
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
return;
}
val = cmd[3] & 0x7; /* Validate action */
@@ -1106,22 +1111,22 @@ static void set_watchdog_timer(IPMIBmcSim *ibs,
break;
case IPMI_BMC_WATCHDOG_ACTION_RESET:
- rsp->buffer[2] = k->do_hw_op(s, IPMI_RESET_CHASSIS, 1);
+ rsp_buffer_set_error(rsp, k->do_hw_op(s, IPMI_RESET_CHASSIS, 1));
break;
case IPMI_BMC_WATCHDOG_ACTION_POWER_DOWN:
- rsp->buffer[2] = k->do_hw_op(s, IPMI_POWEROFF_CHASSIS, 1);
+ rsp_buffer_set_error(rsp, k->do_hw_op(s, IPMI_POWEROFF_CHASSIS, 1));
break;
case IPMI_BMC_WATCHDOG_ACTION_POWER_CYCLE:
- rsp->buffer[2] = k->do_hw_op(s, IPMI_POWERCYCLE_CHASSIS, 1);
+ rsp_buffer_set_error(rsp, k->do_hw_op(s, IPMI_POWERCYCLE_CHASSIS, 1));
break;
default:
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
}
if (rsp->buffer[2]) {
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
return;
}
@@ -1134,14 +1139,14 @@ static void set_watchdog_timer(IPMIBmcSim *ibs,
case IPMI_BMC_WATCHDOG_PRE_NMI:
if (!k->do_hw_op(s, IPMI_SEND_NMI, 1)) {
/* NMI not supported. */
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
return;
}
break;
default:
/* We don't support PRE_SMI */
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
return;
}
@@ -1217,7 +1222,7 @@ static void get_sdr(IPMIBmcSim *ibs,
if (cmd[6]) {
if ((cmd[2] | (cmd[3] << 8)) != ibs->sdr.reservation) {
- rsp->buffer[2] = IPMI_CC_INVALID_RESERVATION;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_RESERVATION);
return;
}
}
@@ -1225,14 +1230,14 @@ static void get_sdr(IPMIBmcSim *ibs,
pos = 0;
if (sdr_find_entry(&ibs->sdr, cmd[4] | (cmd[5] << 8),
&pos, &nextrec)) {
- rsp->buffer[2] = IPMI_CC_REQ_ENTRY_NOT_PRESENT;
+ rsp_buffer_set_error(rsp, IPMI_CC_REQ_ENTRY_NOT_PRESENT);
return;
}
sdrh = (struct ipmi_sdr_header *) &ibs->sdr.sdr[pos];
if (cmd[6] > ipmi_sdr_length(sdrh)) {
- rsp->buffer[2] = IPMI_CC_PARM_OUT_OF_RANGE;
+ rsp_buffer_set_error(rsp, IPMI_CC_PARM_OUT_OF_RANGE);
return;
}
@@ -1244,7 +1249,7 @@ static void get_sdr(IPMIBmcSim *ibs,
}
if ((cmd[7] + rsp->len) > sizeof(rsp->buffer)) {
- rsp->buffer[2] = IPMI_CC_CANNOT_RETURN_REQ_NUM_BYTES;
+ rsp_buffer_set_error(rsp, IPMI_CC_CANNOT_RETURN_REQ_NUM_BYTES);
return;
}
@@ -1259,7 +1264,7 @@ static void add_sdr(IPMIBmcSim *ibs,
struct ipmi_sdr_header *sdrh = (struct ipmi_sdr_header *) cmd + 2;
if (sdr_add_entry(ibs, sdrh, cmd_len - 2, &recid)) {
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
return;
}
rsp_buffer_push(rsp, recid & 0xff);
@@ -1271,12 +1276,12 @@ static void clear_sdr_rep(IPMIBmcSim *ibs,
RspBuffer *rsp)
{
if ((cmd[2] | (cmd[3] << 8)) != ibs->sdr.reservation) {
- rsp->buffer[2] = IPMI_CC_INVALID_RESERVATION;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_RESERVATION);
return;
}
if (cmd[4] != 'C' || cmd[5] != 'L' || cmd[6] != 'R') {
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
return;
}
if (cmd[7] == 0xaa) {
@@ -1288,7 +1293,7 @@ static void clear_sdr_rep(IPMIBmcSim *ibs,
} else if (cmd[7] == 0) {
rsp_buffer_push(rsp, 1); /* Erasure complete */
} else {
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
return;
}
}
@@ -1331,22 +1336,22 @@ static void get_sel_entry(IPMIBmcSim *ibs,
if (cmd[6]) {
if ((cmd[2] | (cmd[3] << 8)) != ibs->sel.reservation) {
- rsp->buffer[2] = IPMI_CC_INVALID_RESERVATION;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_RESERVATION);
return;
}
}
if (ibs->sel.next_free == 0) {
- rsp->buffer[2] = IPMI_CC_REQ_ENTRY_NOT_PRESENT;
+ rsp_buffer_set_error(rsp, IPMI_CC_REQ_ENTRY_NOT_PRESENT);
return;
}
if (cmd[6] > 15) {
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
return;
}
if (cmd[7] == 0xff) {
cmd[7] = 16;
} else if ((cmd[7] + cmd[6]) > 16) {
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
return;
} else {
cmd[7] += cmd[6];
@@ -1356,7 +1361,7 @@ static void get_sel_entry(IPMIBmcSim *ibs,
if (val == 0xffff) {
val = ibs->sel.next_free - 1;
} else if (val >= ibs->sel.next_free) {
- rsp->buffer[2] = IPMI_CC_REQ_ENTRY_NOT_PRESENT;
+ rsp_buffer_set_error(rsp, IPMI_CC_REQ_ENTRY_NOT_PRESENT);
return;
}
if ((val + 1) == ibs->sel.next_free) {
@@ -1376,7 +1381,7 @@ static void add_sel_entry(IPMIBmcSim *ibs,
RspBuffer *rsp)
{
if (sel_add_event(ibs, cmd + 2)) {
- rsp->buffer[2] = IPMI_CC_OUT_OF_SPACE;
+ rsp_buffer_set_error(rsp, IPMI_CC_OUT_OF_SPACE);
return;
}
/* sel_add_event fills in the record number. */
@@ -1389,12 +1394,12 @@ static void clear_sel(IPMIBmcSim *ibs,
RspBuffer *rsp)
{
if ((cmd[2] | (cmd[3] << 8)) != ibs->sel.reservation) {
- rsp->buffer[2] = IPMI_CC_INVALID_RESERVATION;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_RESERVATION);
return;
}
if (cmd[4] != 'C' || cmd[5] != 'L' || cmd[6] != 'R') {
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
return;
}
if (cmd[7] == 0xaa) {
@@ -1406,7 +1411,7 @@ static void clear_sel(IPMIBmcSim *ibs,
} else if (cmd[7] == 0) {
rsp_buffer_push(rsp, 1); /* Erasure complete */
} else {
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
return;
}
}
@@ -1446,7 +1451,7 @@ static void set_sensor_evt_enable(IPMIBmcSim *ibs,
if ((cmd[2] >= MAX_SENSORS) ||
!IPMI_SENSOR_GET_PRESENT(ibs->sensors + cmd[2])) {
- rsp->buffer[2] = IPMI_CC_REQ_ENTRY_NOT_PRESENT;
+ rsp_buffer_set_error(rsp, IPMI_CC_REQ_ENTRY_NOT_PRESENT);
return;
}
sens = ibs->sensors + cmd[2];
@@ -1482,7 +1487,7 @@ static void set_sensor_evt_enable(IPMIBmcSim *ibs,
}
break;
case 3:
- rsp->buffer[2] = IPMI_CC_INVALID_DATA_FIELD;
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD);
return;
}
IPMI_SENSOR_SET_RET_STATUS(sens, cmd[3]);
@@ -1496,7 +1501,7 @@ static void get_sensor_evt_enable(IPMIBmcSim *ibs,
if ((cmd[2] >= MAX_SENSORS) ||
!IPMI_SENSOR_GET_PRESENT(ibs->sensors + cmd[2])) {
- rsp->buffer[2] = IPMI_CC_REQ_ENTRY_NOT_PRESENT;
+ rsp_buffer_set_error(rsp, IPMI_CC_REQ_ENTRY_NOT_PRESENT);
return;
}
sens = ibs->sensors + cmd[2];
@@ -1515,7 +1520,7 @@ static void rearm_sensor_evts(IPMIBmcSim *ibs,
if ((cmd[2] >= MAX_SENSORS) ||
!IPMI_SENSOR_GET_PRESENT(ibs->sensors + cmd[2])) {
- rsp->buffer[2] = IPMI_CC_REQ_ENTRY_NOT_PRESENT;
+ rsp_buffer_set_error(rsp, IPMI_CC_REQ_ENTRY_NOT_PRESENT);
return;
}
sens = ibs->sensors + cmd[2];
@@ -1535,7 +1540,7 @@ static void get_sensor_evt_status(IPMIBmcSim *ibs,
if ((cmd[2] >= MAX_SENSORS) ||
!IPMI_SENSOR_GET_PRESENT(ibs->sensors + cmd[2])) {
- rsp->buffer[2] = IPMI_CC_REQ_ENTRY_NOT_PRESENT;
+ rsp_buffer_set_error(rsp, IPMI_CC_REQ_ENTRY_NOT_PRESENT);
return;
}
sens = ibs->sensors + cmd[2];
@@ -1555,7 +1560,7 @@ static void get_sensor_reading(IPMIBmcSim *ibs,
if ((cmd[2] >= MAX_SENSORS) ||
!IPMI_SENSOR_GET_PRESENT(ibs->sensors + cmd[2])) {
- rsp->buffer[2] = IPMI_CC_REQ_ENTRY_NOT_PRESENT;
+ rsp_buffer_set_error(rsp, IPMI_CC_REQ_ENTRY_NOT_PRESENT);
return;
}
sens = ibs->sensors + cmd[2];
@@ -1576,7 +1581,7 @@ static void set_sensor_type(IPMIBmcSim *ibs,
if ((cmd[2] >= MAX_SENSORS) ||
!IPMI_SENSOR_GET_PRESENT(ibs->sensors + cmd[2])) {
- rsp->buffer[2] = IPMI_CC_REQ_ENTRY_NOT_PRESENT;
+ rsp_buffer_set_error(rsp, IPMI_CC_REQ_ENTRY_NOT_PRESENT);
return;
}
sens = ibs->sensors + cmd[2];
@@ -1593,7 +1598,7 @@ static void get_sensor_type(IPMIBmcSim *ibs,
if ((cmd[2] >= MAX_SENSORS) ||
!IPMI_SENSOR_GET_PRESENT(ibs->sensors + cmd[2])) {
- rsp->buffer[2] = IPMI_CC_REQ_ENTRY_NOT_PRESENT;
+ rsp_buffer_set_error(rsp, IPMI_CC_REQ_ENTRY_NOT_PRESENT);
return;
}
sens = ibs->sensors + cmd[2];
--
MST
next prev parent reply other threads:[~2016-03-11 15:10 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-11 15:07 [Qemu-devel] [PULL 00/53] vhost, virtio, pci, pc, acpi Michael S. Tsirkin
2016-03-11 15:07 ` [Qemu-devel] [PULL 01/53] acpi: add aml_create_field() Michael S. Tsirkin
2016-03-11 15:07 ` [Qemu-devel] [PULL 02/53] acpi: add aml_concatenate() Michael S. Tsirkin
2016-03-11 15:07 ` [Qemu-devel] [PULL 03/53] acpi: allow using object as offset for OperationRegion Michael S. Tsirkin
2016-03-11 15:07 ` [Qemu-devel] [PULL 04/53] acpi: add build_append_named_dword, returning an offset in buffer Michael S. Tsirkin
2016-03-11 15:07 ` [Qemu-devel] [PULL 05/53] balloon: fix segfault and harden the stats queue Michael S. Tsirkin
2016-03-11 15:07 ` [Qemu-devel] [PULL 06/53] hw/virtio: fix double use of a virtio flag Michael S. Tsirkin
2016-03-11 15:07 ` [Qemu-devel] [PULL 07/53] hw/virtio: group virtio flags into an enum Michael S. Tsirkin
2016-03-11 15:07 ` [Qemu-devel] [PULL 08/53] virtio-balloon: add 'available' counter Michael S. Tsirkin
2016-03-11 15:07 ` [Qemu-devel] [PULL 09/53] vhost-user: verify that number of queues is less than MAX_QUEUE_NUM Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 10/53] pc-dimm: fix error handling in pc_dimm_check_memdev_is_busy() Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 11/53] i386/acpi: make floppy controller object dynamic Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 12/53] i386: expose floppy drive CMOS type Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 13/53] fdc: add function to determine drive chs limits Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 14/53] i386: populate floppy drive information in DSDT Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 15/53] i386: update expected DSDT Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 16/53] virtio-pci: call pci reset variant when guest requests reset Michael S. Tsirkin
2016-03-14 1:36 ` Laszlo Ersek
2016-03-14 1:45 ` Laszlo Ersek
2016-03-11 15:08 ` [Qemu-devel] [PULL 17/53] msi_supported -> msi_nonbroken Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 18/53] ich9lpc: fix typo Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 19/53] hw/acpi: fix Q35 support for legacy Windows OS Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 20/53] acpi-test-data: add _DIS methods Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 21/53] pci-ids: add virtio 1.0 ids to spec Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 22/53] nvdimm acpi: initialize the resource used by NVDIMM ACPI Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 23/53] nvdimm acpi: introduce patched dsm memory Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 24/53] nvdimm acpi: let qemu handle _DSM method Michael S. Tsirkin
2016-03-11 15:08 ` [Qemu-devel] [PULL 25/53] nvdimm acpi: emulate dsm method Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 26/53] vhost-user: fix use after free Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 27/53] vhost-user: remove useless is_server field Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 28/53] qemu-char: avoid potential double-free Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 29/53] qemu-char: remove all msgfds on disconnect Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 30/53] qemu-char: make tcp_chr_disconnect() reentrant-safe Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 31/53] pxb: cleanup Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 32/53] pc: acpi: remove NOP assignment Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 33/53] pc: init pcms->apic_id_limit once and use it throughout pc.c Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 34/53] machine: introduce MachineClass.possible_cpu_arch_ids() hook Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 35/53] pc: acpi: cleanup qdev_get_machine() calls Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 36/53] pc: acpi: SRAT: create only valid processor lapic entries Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 37/53] pc: acpi: create MADT.lapic entries only for valid lapics Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 38/53] pc: acpi: create Processor and Notify objects " Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 39/53] pc: acpi: drop cpu->found_cpus bitmap Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 40/53] pc: acpi: clarify why possible LAPIC entries must be present in MADT Michael S. Tsirkin
2016-03-11 15:09 ` [Qemu-devel] [PULL 41/53] MAINTAINERS: Add an entry for virtio header files Michael S. Tsirkin
2016-03-11 15:10 ` [Qemu-devel] [PULL 42/53] MAINTAINERS: machine core Michael S. Tsirkin
2016-03-11 15:10 ` [Qemu-devel] [PULL 43/53] ipmi: remove IPMI_CHECK_CMD_LEN() macro Michael S. Tsirkin
2016-03-11 15:10 ` [Qemu-devel] [PULL 44/53] ipmi: replace IPMI_ADD_RSP_DATA() macro with inline helpers Michael S. Tsirkin
2016-03-11 15:10 ` [Qemu-devel] [PULL 45/53] ipmi: remove IPMI_CHECK_RESERVATION() macro Michael S. Tsirkin
2016-03-11 15:10 ` Michael S. Tsirkin [this message]
2016-03-11 15:10 ` [Qemu-devel] [PULL 47/53] ipmi: add a realize function to the device class Michael S. Tsirkin
2016-03-11 15:10 ` [Qemu-devel] [PULL 48/53] ipmi: use a function to initialize the SDR table Michael S. Tsirkin
2016-03-11 15:10 ` [Qemu-devel] [PULL 49/53] ipmi: remove the need of an ending record in " Michael S. Tsirkin
2016-03-11 15:10 ` [Qemu-devel] [PULL 50/53] ipmi: add some local variables in ipmi_sdr_init Michael S. Tsirkin
2016-03-11 15:10 ` [Qemu-devel] [PULL 51/53] ipmi: use a file to load SDRs Michael S. Tsirkin
2016-03-11 15:10 ` [Qemu-devel] [PULL 52/53] ipmi: provide support for FRUs Michael S. Tsirkin
2016-03-11 15:10 ` [Qemu-devel] [PULL 53/53] fw-cfg: support writeable blobs Michael S. Tsirkin
2016-03-14 15:10 ` [Qemu-devel] [PULL 00/53] vhost, virtio, pci, pc, acpi 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=1457708548-14093-47-git-send-email-mst@redhat.com \
--to=mst@redhat.com \
--cc=clg@fr.ibm.com \
--cc=cminyard@mvista.com \
--cc=ehabkost@redhat.com \
--cc=gkurz@linux.vnet.ibm.com \
--cc=marcel@redhat.com \
--cc=peter.maydell@linaro.org \
--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).