Message ID | 20240827164304.88876-2-nifan.cxl@gmail.com |
---|---|
State | New |
Headers | show |
Series | QEMU DCD emulation support fix | expand |
On Tue, 27 Aug 2024 09:40:04 -0700 nifan.cxl@gmail.com wrote: > From: Fan Ni <fan.ni@samsung.com> > > Per cxl spec r3.1, for multiple dynamic capacity event records grouped via > the More flag, the last record in the sequence should clear the More flag. > > Before the change, the More flag of the event record is cleared before > the loop of inserting records into the event log, which will leave the flag > always set once it is set in the loop. > > Signed-off-by: Fan Ni <fan.ni@samsung.com> Oops. I'll queue this up, though not sure I'll get a fixes series out this week so it might only hit after the QEMU release. Jonathan > --- > hw/mem/cxl_type3.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c > index d648192ab9..e616801c81 100644 > --- a/hw/mem/cxl_type3.c > +++ b/hw/mem/cxl_type3.c > @@ -2060,11 +2060,11 @@ static void qmp_cxl_process_dynamic_capacity_prescriptive(const char *path, > stw_le_p(&dCap.host_id, hid); > /* only valid for DC_REGION_CONFIG_UPDATED event */ > dCap.updated_region_id = 0; > - dCap.flags = 0; > for (i = 0; i < num_extents; i++) { > memcpy(&dCap.dynamic_capacity_extent, &extents[i], > sizeof(CXLDCExtentRaw)); > > + dCap.flags = 0; > if (i < num_extents - 1) { > /* Set "More" flag */ > dCap.flags |= BIT(0);
diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index d648192ab9..e616801c81 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -2060,11 +2060,11 @@ static void qmp_cxl_process_dynamic_capacity_prescriptive(const char *path, stw_le_p(&dCap.host_id, hid); /* only valid for DC_REGION_CONFIG_UPDATED event */ dCap.updated_region_id = 0; - dCap.flags = 0; for (i = 0; i < num_extents; i++) { memcpy(&dCap.dynamic_capacity_extent, &extents[i], sizeof(CXLDCExtentRaw)); + dCap.flags = 0; if (i < num_extents - 1) { /* Set "More" flag */ dCap.flags |= BIT(0);