summaryrefslogtreecommitdiffstats
path: root/hw/block/nvme.h
diff options
context:
space:
mode:
authorzhenwei pi2021-01-15 04:27:01 +0100
committerKlaus Jensen2021-02-08 21:15:53 +0100
commit4714791b66ae39bea6b6e3c3e84aaed8dcb005c7 (patch)
treea51153b89bdf15428ca9338242e55c20209ab240 /hw/block/nvme.h
parentnvme: introduce bit 5 for critical warning (diff)
downloadqemu-4714791b66ae39bea6b6e3c3e84aaed8dcb005c7.tar.gz
qemu-4714791b66ae39bea6b6e3c3e84aaed8dcb005c7.tar.xz
qemu-4714791b66ae39bea6b6e3c3e84aaed8dcb005c7.zip
hw/block/nvme: add smart_critical_warning property
There is a very low probability that hitting physical NVMe disk hardware critical warning case, it's hard to write & test a monitor agent service. For debugging purposes, add a new 'smart_critical_warning' property to emulate this situation. The orignal version of this change is implemented by adding a fixed property which could be initialized by QEMU command line. Suggested by Philippe & Klaus, rework like current version. Test with this patch: 1, change smart_critical_warning property for a running VM: #virsh qemu-monitor-command nvme-upstream '{ "execute": "qom-set", "arguments": { "path": "/machine/peripheral-anon/device[0]", "property": "smart_critical_warning", "value":16 } }' 2, run smartctl in guest #smartctl -H -l error /dev/nvme0n1 === START OF SMART DATA SECTION === SMART overall-health self-assessment test result: FAILED! - volatile memory backup device has failed Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: zhenwei pi <pizhenwei@bytedance.com> Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
Diffstat (limited to 'hw/block/nvme.h')
-rw-r--r--hw/block/nvme.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/hw/block/nvme.h b/hw/block/nvme.h
index 347c149e79..b0d5b6409d 100644
--- a/hw/block/nvme.h
+++ b/hw/block/nvme.h
@@ -148,6 +148,7 @@ typedef struct NvmeCtrl {
uint64_t timestamp_set_qemu_clock_ms; /* QEMU clock time */
uint64_t starttime_ms;
uint16_t temperature;
+ uint8_t smart_critical_warning;
HostMemoryBackend *pmrdev;