Message ID | 20230423165140.16833-1-Jonathan.Cameron@huawei.com |
---|---|
Headers | show |
Series | QEMU CXL Provide mock CXL events and irq support | expand |
On Sun, 23 Apr 2023 17:51:33 +0100 Jonathan Cameron <Jonathan.Cameron@huawei.com> wrote: > v5: Rebase including version number updates to 8.1 Hi Michael, I asked a few people to look at the remaining couple of patches where there were only my tags so now I think all the following have had some review and I'm not aware of any outstanding issues with them I did postpone one piece of general feedback from Philippe for future work as it wasn't specific to the patch but more general feedback on older code. For reference, the question concerned why we have cxl_dstate as a structure in the CXLType3Dev rather than using the QEMU device model and inheriting from it. Majority of what we have in these 6 sets (including this one) came from other contributors so I've reviewed and tested all those as part of adding my SOB when gathering them up. Anything you'd like to see in the way of additional review on these? We have a number of other series, that will hopefully be in a position to post for possible merge soon, but I'm guessing you'd rather we didn't stack more than this in one go. Other than fixes, this is all stuff left over from previous cycle. Thanks, Jonathan > > Depends on > [PATCH 0/2] hw/cxl: CDAT file handling fixes. > [PATCH v2 0/3] hw/cxl: Fix decoder commit and uncommit handling > [PATCH 0/3] docs/cxl: Gathering of fixes for 8.0 CXL docs. > [PATCH v5 0/3] hw/mem: CXL Type-3 Volatile Memory Support > [PATCH v5 0/6] hw/cxl: Poison get, inject, clear > > Based on: Message-ID: 20230421132020.7408-1-Jonathan.Cameron@huawei.com > Based on: Message-ID: 20230421135906.3515-1-Jonathan.Cameron@huawei.com > Based on: Message-ID: 20230421134507.26842-1-Jonathan.Cameron@huawei.com > Based on: Message-ID: 20230421160827.2227-1-Jonathan.Cameron@huawei.com > Based on: Message-ID: 20230423162013.4535-1-Jonathan.Cameron@huawei.com > > Cover letter from earlier version > > One challenge here is striking the right balance between lots of constraints > in the injection code to enforce particular reserved bits etc by breaking > out all the flags as individual parameters vs having a reasonably concise > API. I think this set strikes the right balance but others may well > disagree :) Note that Ira raised the question of whether we should be > automatically establishing the volatile flag based on the Device Physical > Address of the injected error. My proposal is to not do so for now, but > to possibly revisit tightening the checking of injected errors in future. > Whilst the volatile flag is straight forwards, some of the other flags that > could be automatically set (or perhaps checked for validiaty) are much more > complex. Adding verification at this stage would greatly increase the > complexity of the patch + we are missing other elements that would interact > with this. I'm not concerned about potential breaking of backwards compatibility > if it only related to the injection of errors that make no sense for a real > device. > > CXL Event records inform the OS of various CXL device events. Thus far CXL > memory devices are emulated and therefore don't naturally generate events. > > Add an event infrastructure and mock event injection. Previous versions > included a bulk insertion of lots of events. However, this series focuses on > providing the ability to inject individual events through QMP. Only the > General Media Event is included in this series as an example. Other events can > be added pretty easily once the infrastructure is acceptable. > > In addition, this version updates the code to be in line with the > specification based on discussions around the kernel patches. > > Injection examples; > > { "execute": "cxl-inject-gen-media-event", > "arguments": { > "path": "/machine/peripheral/cxl-mem0", > "log": "informational", > "flags": 1, > "physaddr": 1000, > "descriptor": 3, > "type": 3, > "transaction-type": 192, > "channel": 3, > "device": 5, > "component-id": "iras mem" > }} > > > { "execute": "cxl-inject-dram-event", > "arguments": { > "path": "/machine/peripheral/cxl-mem0", > "log": "informational", > "flags": 1, > "physaddr": 1000, > "descriptor": 3, > "type": 3, > "transaction-type": 192, > "channel": 3, > "rank": 17, > "nibble-mask": 37421234, > "bank-group": 7, > "bank": 11, > "row": 2, > "column": 77, > "correction-mask": [33, 44, 55, 66] > }} > > { "execute": "cxl-inject-memory-module-event", > "arguments": { > "path": "/machine/peripheral/cxl-mem0", > "log": "informational", > "flags": 1, > "type": 3, > "health-status": 3, > "media-status": 7, > "additional-status": 33, > "life-used": 30, > "temperature": -15, > "dirty-shutdown-count": 4, > "corrected-volatile-error-count": 3233, > "corrected-persistent-error-count": 1300 > }} > > Ira Weiny (4): > hw/cxl/events: Add event status register > hw/cxl/events: Wire up get/clear event mailbox commands > hw/cxl/events: Add event interrupt support > hw/cxl/events: Add injection of General Media Events > > Jonathan Cameron (3): > hw/cxl: Move CXLRetCode definition to cxl_device.h > hw/cxl/events: Add injection of DRAM events > hw/cxl/events: Add injection of Memory Module Events > > hw/cxl/cxl-device-utils.c | 43 +++++- > hw/cxl/cxl-events.c | 248 ++++++++++++++++++++++++++++++ > hw/cxl/cxl-mailbox-utils.c | 166 ++++++++++++++------ > hw/cxl/meson.build | 1 + > hw/mem/cxl_type3.c | 292 +++++++++++++++++++++++++++++++++++- > hw/mem/cxl_type3_stubs.c | 35 +++++ > include/hw/cxl/cxl_device.h | 80 +++++++++- > include/hw/cxl/cxl_events.h | 168 +++++++++++++++++++++ > qapi/cxl.json | 120 +++++++++++++++ > 9 files changed, 1097 insertions(+), 56 deletions(-) > create mode 100644 hw/cxl/cxl-events.c > create mode 100644 include/hw/cxl/cxl_events.h >