mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
hw/cxl: Support firmware updates
Implement transfer and activate functionality per 3.1 spec for supporting update metadata (no actual buffers). Transfer times are arbitrarily set to ten and two seconds for full and part transfers, respectively. cxl update-firmware mem0 -F fw.img <on-going fw update> cxl update-firmware mem0 "memdev":"mem0", "pmem_size":"1024.00 MiB (1073.74 MB)", "serial":"0", "host":"0000:0d:00.0", "firmware":{ "num_slots":2, "active_slot":1, "online_activate_capable":true, "slot_1_version":"BWFW VERSION 0", "fw_update_in_progress":true, "remaining_size":22400 } } <completed fw update> cxl update-firmware mem0 { "memdev":"mem0", "pmem_size":"1024.00 MiB (1073.74 MB)", "serial":"0", "host":"0000:0d:00.0", "firmware":{ "num_slots":2, "active_slot":1, "staged_slot":2, "online_activate_capable":true, "slot_1_version":"BWFW VERSION 0", "slot_2_version":"BWFW VERSION 1", "fw_update_in_progress":false } } Signed-off-by: Davidlohr Bueso <dave@stgolabs.net> Link: https://lore.kernel.org/r/20240627164912.25630-1-dave@stgolabs.net Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Message-Id: <20240705125915.991672-2-Jonathan.Cameron@huawei.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
2d41ce38fb
commit
3c1e1e5e24
2 changed files with 215 additions and 5 deletions
|
@ -181,6 +181,21 @@ typedef struct CXLCCI {
|
|||
uint64_t runtime;
|
||||
QEMUTimer *timer;
|
||||
} bg;
|
||||
|
||||
/* firmware update */
|
||||
struct {
|
||||
uint8_t active_slot;
|
||||
uint8_t staged_slot;
|
||||
bool slot[4];
|
||||
uint8_t curr_action;
|
||||
uint8_t curr_slot;
|
||||
/* handle partial transfers */
|
||||
bool transferring;
|
||||
size_t prev_offset;
|
||||
size_t prev_len;
|
||||
time_t last_partxfer;
|
||||
} fw;
|
||||
|
||||
size_t payload_max;
|
||||
/* Pointer to device hosting the CCI */
|
||||
DeviceState *d;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue