diff options
author | Jonathan Cameron <Jonathan.Cameron@huawei.com> | 2022-08-17 15:57:59 +0100 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2022-08-17 13:08:11 -0400 |
commit | 4f41b4e445d09651988df36615c3a64853d5bc4a (patch) | |
tree | 5d9d3cf549dc30f554b40819e39af1a5365da19e /hw/cxl/cxl-mailbox-utils.c | |
parent | 66a2356485895f82b14585bda8e04bd190841fc0 (diff) | |
download | qemu-4f41b4e445d09651988df36615c3a64853d5bc4a.zip qemu-4f41b4e445d09651988df36615c3a64853d5bc4a.tar.gz qemu-4f41b4e445d09651988df36615c3a64853d5bc4a.tar.bz2 |
hw/cxl: Correctly handle variable sized mailbox input payloads.
A placeholder of ~0 is used to indicate variable payload size.
Whilst the checks for output payload correctly took this into
account, those for input payload did not.
This results in failure of the Set LSA command.
Fixes: 464e14ac43 ("hw/cxl/device: Implement basic mailbox (8.2.8.4)")
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Message-Id: <20220817145759.32603-4-Jonathan.Cameron@huawei.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'hw/cxl/cxl-mailbox-utils.c')
-rw-r--r-- | hw/cxl/cxl-mailbox-utils.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index 3cea8b1..bc1bb18 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -425,7 +425,7 @@ void cxl_process_mailbox(CXLDeviceState *cxl_dstate) cxl_cmd = &cxl_cmd_set[set][cmd]; h = cxl_cmd->handler; if (h) { - if (len == cxl_cmd->in) { + if (len == cxl_cmd->in || cxl_cmd->in == ~0) { cxl_cmd->payload = cxl_dstate->mbox_reg_state + A_CXL_DEV_CMD_PAYLOAD; ret = (*h)(cxl_cmd, cxl_dstate, &len); |