
* Update to QEMU v9.0.0 --------- Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Fabiano Rosas <farosas@suse.de> Signed-off-by: Peter Xu <peterx@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Cédric Le Goater <clg@redhat.com> Signed-off-by: Zheyu Ma <zheyuma97@gmail.com> Signed-off-by: Ido Plat <ido.plat@ibm.com> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Signed-off-by: David Hildenbrand <david@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com> Signed-off-by: Fiona Ebner <f.ebner@proxmox.com> Signed-off-by: Gregory Price <gregory.price@memverge.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Lorenz Brun <lorenz@brun.one> Signed-off-by: Yao Xingtao <yaoxt.fnst@fujitsu.com> Signed-off-by: Arnaud Minier <arnaud.minier@telecom-paris.fr> Signed-off-by: Inès Varhol <ines.varhol@telecom-paris.fr> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Signed-off-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Sven Schnelle <svens@stackframe.org> Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com> Signed-off-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Helge Deller <deller@gmx.de> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Benjamin Gray <bgray@linux.ibm.com> Signed-off-by: Avihai Horon <avihaih@nvidia.com> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> Signed-off-by: Joonas Kankaala <joonas.a.kankaala@gmail.com> Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> Signed-off-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Glenn Miles <milesg@linux.ibm.com> Signed-off-by: Oleg Sviridov <oleg.sviridov@red-soft.ru> Signed-off-by: Artem Chernyshev <artem.chernyshev@red-soft.ru> Signed-off-by: Yajun Wu <yajunw@nvidia.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Pierre-Clément Tosi <ptosi@google.com> Signed-off-by: Lei Wang <lei4.wang@intel.com> Signed-off-by: Wei Wang <wei.w.wang@intel.com> Signed-off-by: Martin Hundebøll <martin@geanix.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Signed-off-by: Wafer <wafer@jaguarmicro.com> Signed-off-by: Yuxue Liu <yuxue.liu@jaguarmicro.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Nguyen Dinh Phi <phind.uet@gmail.com> Signed-off-by: Zack Buhman <zack@buhman.org> Signed-off-by: Keith Packard <keithp@keithp.com> Signed-off-by: Yuquan Wang wangyuquan1236@phytium.com.cn Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com> Signed-off-by: Cindy Lu <lulu@redhat.com> Co-authored-by: Peter Maydell <peter.maydell@linaro.org> Co-authored-by: Fabiano Rosas <farosas@suse.de> Co-authored-by: Peter Xu <peterx@redhat.com> Co-authored-by: Thomas Huth <thuth@redhat.com> Co-authored-by: Cédric Le Goater <clg@redhat.com> Co-authored-by: Zheyu Ma <zheyuma97@gmail.com> Co-authored-by: Ido Plat <ido.plat@ibm.com> Co-authored-by: Ilya Leoshkevich <iii@linux.ibm.com> Co-authored-by: Markus Armbruster <armbru@redhat.com> Co-authored-by: Marc-André Lureau <marcandre.lureau@redhat.com> Co-authored-by: Paolo Bonzini <pbonzini@redhat.com> Co-authored-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Co-authored-by: David Hildenbrand <david@redhat.com> Co-authored-by: Kevin Wolf <kwolf@redhat.com> Co-authored-by: Stefan Reiter <s.reiter@proxmox.com> Co-authored-by: Fiona Ebner <f.ebner@proxmox.com> Co-authored-by: Gregory Price <gregory.price@memverge.com> Co-authored-by: Lorenz Brun <lorenz@brun.one> Co-authored-by: Yao Xingtao <yaoxt.fnst@fujitsu.com> Co-authored-by: Philippe Mathieu-Daudé <philmd@linaro.org> Co-authored-by: Arnaud Minier <arnaud.minier@telecom-paris.fr> Co-authored-by: BALATON Zoltan <balaton@eik.bme.hu> Co-authored-by: Igor Mammedov <imammedo@redhat.com> Co-authored-by: Akihiko Odaki <akihiko.odaki@daynix.com> Co-authored-by: Richard Henderson <richard.henderson@linaro.org> Co-authored-by: Sven Schnelle <svens@stackframe.org> Co-authored-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Co-authored-by: Helge Deller <deller@kernel.org> Co-authored-by: Harsh Prateek Bora <harshpb@linux.ibm.com> Co-authored-by: Benjamin Gray <bgray@linux.ibm.com> Co-authored-by: Nicholas Piggin <npiggin@gmail.com> Co-authored-by: Avihai Horon <avihaih@nvidia.com> Co-authored-by: Michael Tokarev <mjt@tls.msk.ru> Co-authored-by: Joonas Kankaala <joonas.a.kankaala@gmail.com> Co-authored-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> Co-authored-by: Stefan Weil <sw@weilnetz.de> Co-authored-by: Dayu Liu <liu.dayu@zte.com.cn> Co-authored-by: Zhao Liu <zhao1.liu@intel.com> Co-authored-by: Glenn Miles <milesg@linux.vnet.ibm.com> Co-authored-by: Artem Chernyshev <artem.chernyshev@red-soft.ru> Co-authored-by: Yajun Wu <yajunw@nvidia.com> Co-authored-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Co-authored-by: Pierre-Clément Tosi <ptosi@google.com> Co-authored-by: Wei Wang <wei.w.wang@intel.com> Co-authored-by: Martin Hundebøll <martin@geanix.com> Co-authored-by: Michael S. Tsirkin <mst@redhat.com> Co-authored-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Co-authored-by: Wafer <wafer@jaguarmicro.com> Co-authored-by: lyx634449800 <yuxue.liu@jaguarmicro.com> Co-authored-by: Gerd Hoffmann <kraxel@redhat.com> Co-authored-by: Nguyen Dinh Phi <phind.uet@gmail.com> Co-authored-by: Zack Buhman <zack@buhman.org> Co-authored-by: Keith Packard <keithp@keithp.com> Co-authored-by: Yuquan Wang <wangyuquan1236@phytium.com.cn> Co-authored-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com> Co-authored-by: Cindy Lu <lulu@redhat.com>
170 lines
4.4 KiB
C
170 lines
4.4 KiB
C
/*
|
|
* QEMU CXL Events
|
|
*
|
|
* Copyright (c) 2022 Intel
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2. See the
|
|
* COPYING file in the top-level directory.
|
|
*/
|
|
|
|
#ifndef CXL_EVENTS_H
|
|
#define CXL_EVENTS_H
|
|
|
|
#include "qemu/uuid.h"
|
|
|
|
/*
|
|
* CXL r3.1 section 8.2.9.2.2: Get Event Records (Opcode 0100h); Table 8-52
|
|
*
|
|
* Define these as the bit position for the event status register for ease of
|
|
* setting the status.
|
|
*/
|
|
typedef enum CXLEventLogType {
|
|
CXL_EVENT_TYPE_INFO = 0,
|
|
CXL_EVENT_TYPE_WARN = 1,
|
|
CXL_EVENT_TYPE_FAIL = 2,
|
|
CXL_EVENT_TYPE_FATAL = 3,
|
|
CXL_EVENT_TYPE_DYNAMIC_CAP = 4,
|
|
CXL_EVENT_TYPE_MAX
|
|
} CXLEventLogType;
|
|
|
|
/*
|
|
* Common Event Record Format
|
|
* CXL r3.1 section 8.2.9.2.1: Event Records; Table 8-43
|
|
*/
|
|
#define CXL_EVENT_REC_HDR_RES_LEN 0xf
|
|
typedef struct CXLEventRecordHdr {
|
|
QemuUUID id;
|
|
uint8_t length;
|
|
uint8_t flags[3];
|
|
uint16_t handle;
|
|
uint16_t related_handle;
|
|
uint64_t timestamp;
|
|
uint8_t maint_op_class;
|
|
uint8_t reserved[CXL_EVENT_REC_HDR_RES_LEN];
|
|
} QEMU_PACKED CXLEventRecordHdr;
|
|
|
|
#define CXL_EVENT_RECORD_DATA_LENGTH 0x50
|
|
typedef struct CXLEventRecordRaw {
|
|
CXLEventRecordHdr hdr;
|
|
uint8_t data[CXL_EVENT_RECORD_DATA_LENGTH];
|
|
} QEMU_PACKED CXLEventRecordRaw;
|
|
#define CXL_EVENT_RECORD_SIZE (sizeof(CXLEventRecordRaw))
|
|
|
|
/*
|
|
* Get Event Records output payload
|
|
* CXL r3.1 section 8.2.9.2.2; Table 8-53
|
|
*/
|
|
#define CXL_GET_EVENT_FLAG_OVERFLOW BIT(0)
|
|
#define CXL_GET_EVENT_FLAG_MORE_RECORDS BIT(1)
|
|
typedef struct CXLGetEventPayload {
|
|
uint8_t flags;
|
|
uint8_t reserved1;
|
|
uint16_t overflow_err_count;
|
|
uint64_t first_overflow_timestamp;
|
|
uint64_t last_overflow_timestamp;
|
|
uint16_t record_count;
|
|
uint8_t reserved2[0xa];
|
|
CXLEventRecordRaw records[];
|
|
} QEMU_PACKED CXLGetEventPayload;
|
|
#define CXL_EVENT_PAYLOAD_HDR_SIZE (sizeof(CXLGetEventPayload))
|
|
|
|
/*
|
|
* Clear Event Records input payload
|
|
* CXL r3.1 section 8.2.9.2.3; Table 8-54
|
|
*/
|
|
typedef struct CXLClearEventPayload {
|
|
uint8_t event_log; /* CXLEventLogType */
|
|
uint8_t clear_flags;
|
|
uint8_t nr_recs;
|
|
uint8_t reserved[3];
|
|
uint16_t handle[];
|
|
} CXLClearEventPayload;
|
|
|
|
/*
|
|
* Event Interrupt Policy
|
|
*
|
|
* CXL r3.1 section 8.2.9.2.4; Table 8-55
|
|
*/
|
|
typedef enum CXLEventIntMode {
|
|
CXL_INT_NONE = 0x00,
|
|
CXL_INT_MSI_MSIX = 0x01,
|
|
CXL_INT_FW = 0x02,
|
|
CXL_INT_RES = 0x03,
|
|
} CXLEventIntMode;
|
|
#define CXL_EVENT_INT_MODE_MASK 0x3
|
|
#define CXL_EVENT_INT_SETTING(vector) \
|
|
((((uint8_t)vector & 0xf) << 4) | CXL_INT_MSI_MSIX)
|
|
typedef struct CXLEventInterruptPolicy {
|
|
uint8_t info_settings;
|
|
uint8_t warn_settings;
|
|
uint8_t failure_settings;
|
|
uint8_t fatal_settings;
|
|
uint8_t dyn_cap_settings;
|
|
} QEMU_PACKED CXLEventInterruptPolicy;
|
|
/* DCD is optional but other fields are not */
|
|
#define CXL_EVENT_INT_SETTING_MIN_LEN 4
|
|
|
|
/*
|
|
* General Media Event Record
|
|
* CXL r3.1 Section 8.2.9.2.1.1; Table 8-45
|
|
*/
|
|
#define CXL_EVENT_GEN_MED_COMP_ID_SIZE 0x10
|
|
#define CXL_EVENT_GEN_MED_RES_SIZE 0x2e
|
|
typedef struct CXLEventGenMedia {
|
|
CXLEventRecordHdr hdr;
|
|
uint64_t phys_addr;
|
|
uint8_t descriptor;
|
|
uint8_t type;
|
|
uint8_t transaction_type;
|
|
uint16_t validity_flags;
|
|
uint8_t channel;
|
|
uint8_t rank;
|
|
uint8_t device[3];
|
|
uint8_t component_id[CXL_EVENT_GEN_MED_COMP_ID_SIZE];
|
|
uint8_t reserved[CXL_EVENT_GEN_MED_RES_SIZE];
|
|
} QEMU_PACKED CXLEventGenMedia;
|
|
|
|
/*
|
|
* DRAM Event Record
|
|
* CXL r3.1 Section 8.2.9.2.1.2: Table 8-46
|
|
* All fields little endian.
|
|
*/
|
|
typedef struct CXLEventDram {
|
|
CXLEventRecordHdr hdr;
|
|
uint64_t phys_addr;
|
|
uint8_t descriptor;
|
|
uint8_t type;
|
|
uint8_t transaction_type;
|
|
uint16_t validity_flags;
|
|
uint8_t channel;
|
|
uint8_t rank;
|
|
uint8_t nibble_mask[3];
|
|
uint8_t bank_group;
|
|
uint8_t bank;
|
|
uint8_t row[3];
|
|
uint16_t column;
|
|
uint64_t correction_mask[4];
|
|
uint8_t reserved[0x17];
|
|
} QEMU_PACKED CXLEventDram;
|
|
|
|
/*
|
|
* Memory Module Event Record
|
|
* CXL r3.1 Section 8.2.9.2.1.3: Table 8-47
|
|
* All fields little endian.
|
|
*/
|
|
typedef struct CXLEventMemoryModule {
|
|
CXLEventRecordHdr hdr;
|
|
uint8_t type;
|
|
uint8_t health_status;
|
|
uint8_t media_status;
|
|
uint8_t additional_status;
|
|
uint8_t life_used;
|
|
int16_t temperature;
|
|
uint32_t dirty_shutdown_count;
|
|
uint32_t corrected_volatile_error_count;
|
|
uint32_t corrected_persistent_error_count;
|
|
uint8_t reserved[0x3d];
|
|
} QEMU_PACKED CXLEventMemoryModule;
|
|
|
|
#endif /* CXL_EVENTS_H */
|