qemu-cr16/docs/system
Stephen Bates 23a4b3ebc7 hw/nvme: Add OCP SMART / Health Information Extended Log Page
The Open Compute Project [1] includes a Datacenter NVMe
SSD Specification [2]. The most recent version of this specification
(as of November 2024) is 2.6.1. This specification layers on top of
the NVM Express specifications [3] to provide additional
functionality. A key part of of this is the 512 Byte OCP SMART / Health
Information Extended log page that is defined in Section 4.8.6 of the
specification.

We add a controller argument (ocp) that toggles on/off the SMART log
extended structure.  To accommodate different vendor specific specifications
like OCP, we add a multiplexing function (nvme_vendor_specific_log) which
will route to the different log functions based on arguments and log ids.
We only return the OCP extended SMART log when the command is 0xC0 and ocp
has been turned on in the nvme argumants.

Though we add the whole nvme SMART log extended structure, we only populate
the physical_media_units_{read,written}, log_page_version and
log_page_uuid.

This patch is based on work done by Joel but has been modified enough
that he requested a co-developed-by tag rather than a signed-off-by.

[1]: https://www.opencompute.org/
[2]: https://www.opencompute.org/documents/datacenter-nvme-ssd-specification-v2-6-1-pdf
[3]: https://nvmexpress.org/specifications/

Signed-off-by: Stephen Bates <sbates@raithlin.com>
Co-developed-by: Joel Granados <j.granados@samsung.com>
Reviewed-by: Klaus Jensen <k.jensen@samsung.com>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
2025-02-25 12:27:21 +01:00
..
arm docs/system/arm: Add Description for NPCM8XX SoC 2025-02-20 15:22:22 +00:00
devices hw/nvme: Add OCP SMART / Health Information Extended Log Page 2025-02-25 12:27:21 +01:00
i386 docs/nitro-enclave: Clarify Enclave and Firecracker relationship 2025-01-13 17:16:04 +01:00
loongarch roms: Support compile the efi bios for loongarch 2024-09-17 10:26:26 +02:00
openrisc
ppc ppc/pseries: Add Power11 cpu type 2024-11-04 09:12:47 +10:00
riscv hw/riscv: Add Microblaze V generic board 2024-12-20 11:22:47 +10:00
s390x docs/system/s390x/bootdevices: Update loadparm documentation 2024-11-18 10:54:42 +01:00
authz.rst
barrier.rst
bootindex.rst docs/system/bootindex: Make it clear that s390x can also boot from virtio-net 2024-11-18 10:54:42 +01:00
confidential-guest-support.rst
cpu-hotplug.rst docs/system/cpu-hotplug: Update example's socket-id/core-id 2024-10-29 15:04:46 +00:00
cpu-models-mips.rst.inc
cpu-models-x86-abi.csv docs: re-generate x86_64 ABI compatibility CSV 2024-02-09 12:48:11 +00:00
cpu-models-x86.rst.inc docs: Add GNR, SRF and CWF CPU models 2025-01-23 11:50:53 +01:00
device-emulation.rst hw/misc/ivshmem-flat: Add ivshmem-flat device 2024-12-31 21:21:27 +01:00
device-url-syntax.rst.inc block/gluster: Remove deprecated RDMA protocol handling 2024-04-24 16:03:38 +02:00
gdb.rst docs/system: clarify limits of using gdbstub in system emulation 2023-11-23 14:10:06 +00:00
generic-loader.rst
guest-loader.rst docs/system: remove excessive punctuation from guest-loader docs 2023-04-27 14:58:41 +01:00
images.rst docs: add a glossary 2025-01-17 10:45:54 +00:00
index.rst Revert "docs: Document composable SR-IOV device" 2024-08-01 04:32:00 -04:00
introduction.rst target/arm: change default pauth algorithm to impdef 2025-01-13 12:35:34 +00:00
invocation.rst qemu-options: Clarify handling of commas in options parameters 2023-12-20 10:29:23 +01:00
keys.rst docs: Remove unused weirdly-named cross-reference targets 2023-05-12 15:43:38 +01:00
keys.rst.inc docs/system: Update description for input grab key 2024-02-22 08:58:43 +03:00
linuxboot.rst docs: Remove unused weirdly-named cross-reference targets 2023-05-12 15:43:38 +01:00
managed-startup.rst
monitor.rst
multi-process.rst docs: fix multi-process QEMU documentation 2023-06-07 10:21:53 -04:00
mux-chardev.rst
mux-chardev.rst.inc
pr-manager.rst
qemu-block-drivers.rst
qemu-block-drivers.rst.inc docs/devel: add a codebase section 2025-01-17 10:45:49 +00:00
qemu-cpu-models.rst
qemu-manpage.rst qemu-options: Clarify handling of commas in options parameters 2023-12-20 10:29:23 +01:00
replay.rst target/nios2: Remove the deprecated Nios II target 2024-04-24 16:03:38 +02:00
secrets.rst
security.rst
target-arm.rst docs/system/target-arm.rst: Remove "many boards are undocumented" note 2024-10-29 15:04:47 +00:00
target-avr.rst
target-i386-desc.rst.inc docs: i386: pc: Avoid mentioning limit of maximum vCPUs 2024-06-08 10:33:38 +02:00
target-i386.rst docs/nitro-enclave: Documentation for nitro-enclave machine type 2024-10-31 18:28:33 +01:00
target-m68k.rst
target-mips.rst docs/system: Remove "mips" board from target-mips.rst 2023-03-07 18:08:12 +01:00
target-openrisc.rst
target-ppc.rst docs/system/ppc: Document running Linux on AmigaNG machines 2024-03-13 02:47:04 +10:00
target-riscv.rst hw/riscv: Add Microblaze V generic board 2024-12-20 11:22:47 +10:00
target-rx.rst
target-s390x.rst docs/s390x/cpu topology: document s390x cpu topology 2023-10-20 07:16:53 +02:00
target-sparc.rst docs/system/target-sparc: Improve the Sparc documentation 2024-05-05 21:02:48 +01:00
target-sparc64.rst
target-xtensa.rst
targets.rst
tls.rst
virtio-net-failover.rst
vm-templating.rst docs: Start documenting VM templating 2023-09-19 10:23:21 +02:00
vnc-security.rst