mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
hw/block/nvme: add support for the asynchronous event request command
Add support for the Asynchronous Event Request command. Required for compliance with NVMe revision 1.3d. See NVM Express 1.3d, Section 5.2 ("Asynchronous Event Request command"). Mostly imported from Keith's qemu-nvme tree. Modified with a max number of queued events (controllable with the aer_max_queued device parameter). The spec states that the controller *should* retain events, so we do best effort here. Signed-off-by: Klaus Jensen <klaus.jensen@cnexlabs.com> Signed-off-by: Klaus Jensen <k.jensen@samsung.com> Acked-by: Keith Busch <kbusch@kernel.org> Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com> Message-Id: <20200706061303.246057-9-its@irrelevant.dk>
This commit is contained in:
parent
94a7897c41
commit
5d5a53302b
4 changed files with 227 additions and 10 deletions
|
@ -598,8 +598,8 @@ enum NvmeAsyncEventRequest {
|
|||
NVME_AER_TYPE_SMART = 1,
|
||||
NVME_AER_TYPE_IO_SPECIFIC = 6,
|
||||
NVME_AER_TYPE_VENDOR_SPECIFIC = 7,
|
||||
NVME_AER_INFO_ERR_INVALID_SQ = 0,
|
||||
NVME_AER_INFO_ERR_INVALID_DB = 1,
|
||||
NVME_AER_INFO_ERR_INVALID_DB_REGISTER = 0,
|
||||
NVME_AER_INFO_ERR_INVALID_DB_VALUE = 1,
|
||||
NVME_AER_INFO_ERR_DIAG_FAIL = 2,
|
||||
NVME_AER_INFO_ERR_PERS_INTERNAL_ERR = 3,
|
||||
NVME_AER_INFO_ERR_TRANS_INTERNAL_ERR = 4,
|
||||
|
@ -900,6 +900,10 @@ typedef struct NvmeFeatureVal {
|
|||
|
||||
#define NVME_TEMP_TMPTH(temp) (temp & 0xffff)
|
||||
|
||||
#define NVME_AEC_SMART(aec) (aec & 0xff)
|
||||
#define NVME_AEC_NS_ATTR(aec) ((aec >> 8) & 0x1)
|
||||
#define NVME_AEC_FW_ACTIVATION(aec) ((aec >> 9) & 0x1)
|
||||
|
||||
enum NvmeFeatureIds {
|
||||
NVME_ARBITRATION = 0x1,
|
||||
NVME_POWER_MANAGEMENT = 0x2,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue