From: Davidlohr Bueso Date: Thu, 19 Mar 2026 18:42:56 +0000 (-0700) Subject: hw/cxl: Exclude Discovery from Media Operation Discovery output X-Git-Tag: v11.0.0-rc1~5^2~15 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=20beec283b958e43cbe375ecbfb719e7af55e307;p=thirdparty%2Fqemu.git hw/cxl: Exclude Discovery from Media Operation Discovery output Per CXL 4.0 Table 8-331, the Discovery operation "returns a list of all Media Operations that the device supports, with the exception of the Discovery operation (Class=0, Subclass=0)." Filter out Discovery entries when building the output list and adjust total_supported_operations accordingly. Fixes: 77a8e9fe0ecb ("hw/cxl/cxl-mailbox-utils: Add support for Media operations discovery commands cxl r3.2 (8.2.10.9.5.3)") Reviewed-by: Jonathan Cameron Signed-off-by: Davidlohr Bueso Message-ID: <20260319184256.3762391-3-dave@stgolabs.net> Signed-off-by: Philippe Mathieu-Daudé --- diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index a5b70cd01c0..d8ba7e86252 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -2675,7 +2675,7 @@ static CXLRetCode media_operations_discovery(uint8_t *payload_in, } QEMU_PACKED *media_op_in_disc_pl = (void *)payload_in; struct media_op_discovery_out_pl *media_out_pl = (struct media_op_discovery_out_pl *)payload_out; - int total = ARRAY_SIZE(media_op_matrix); + int total = ARRAY_SIZE(media_op_matrix) - 1; /* exclude Discovery */ int num_ops, start_index, i; int count = 0; @@ -2701,10 +2701,12 @@ static CXLRetCode media_operations_discovery(uint8_t *payload_in, num_ops = MIN(num_ops, total - start_index); for (i = 0; i < num_ops; i++) { + int idx = start_index + i + 1; /* skip Discovery (first entry) */ + media_out_pl->entry[count].media_op_class = - media_op_matrix[start_index + i].media_op_class; + media_op_matrix[idx].media_op_class; media_out_pl->entry[count].media_op_subclass = - media_op_matrix[start_index + i].media_op_subclass; + media_op_matrix[idx].media_op_subclass; count++; }