Add bits related to SANITIZE, SED, and form-factor to (struct ata_params)

Based on ATA-ACS-4, recognize several bit-fields related to the ATA SANITIZE
feature-set, Self-Encrypting Drives, and form-factor identification.

As part of this change, the name of word 48 of (struct ata_params) is being
changed. The previous name, "usedmovsd" does not appear to be related to the
previous definition of the word ("double-word IO supported"). The word was
defined that way in ATA-1 (1994), but it was marked "Reserved" (meaning
"unused, but might be used in the future") in ATA-2 (1996). It stayed that
way until ATA-8 (2008), which re-defined it as implemented in this change.
The field is not used in-tree.

Reviewed by:	mav
Sponsored by:	Panasas
Differential Revision:	https://reviews.freebsd.org/D20455
This commit is contained in:
rpokala 2019-05-29 23:50:31 +00:00
parent 2a2dcfb986
commit 3159d0349b

View File

@ -66,7 +66,8 @@ struct ata_params {
/*023*/ u_int8_t revision[8]; /* firmware revision */
/*027*/ u_int8_t model[40]; /* model name */
/*047*/ u_int16_t sectors_intr; /* sectors per interrupt */
/*048*/ u_int16_t usedmovsd; /* double word read/write? */
/*048*/ u_int16_t tcg; /* Trusted Computing Group */
#define ATA_SUPPORT_TCG 0x0001
/*049*/ u_int16_t capabilities1;
#define ATA_SUPPORT_DMA 0x0100
#define ATA_SUPPORT_LBA 0x0200
@ -92,6 +93,10 @@ struct ata_params {
/*057*/ u_int16_t current_size_1;
/*058*/ u_int16_t current_size_2;
/*059*/ u_int16_t multi;
#define ATA_SUPPORT_BLOCK_ERASE_EXT 0x8000
#define ATA_SUPPORT_OVERWRITE_EXT 0x4000
#define ATA_SUPPORT_CRYPTO_SCRAMBLE_EXT 0x2000
#define ATA_SUPPORT_SANITIZE 0x1000
#define ATA_MULTI_VALID 0x0100
/*060*/ u_int16_t lba_size_1;
@ -107,6 +112,7 @@ struct ata_params {
/*069*/ u_int16_t support3;
#define ATA_SUPPORT_RZAT 0x0020
#define ATA_SUPPORT_DRAT 0x4000
#define ATA_ENCRYPTS_ALL_USER_DATA 0x0010 /* Self-encrypting drive */
#define ATA_SUPPORT_ZONE_MASK 0x0003
#define ATA_SUPPORT_ZONE_NR 0x0000
#define ATA_SUPPORT_ZONE_HOST_AWARE 0x0001
@ -259,7 +265,19 @@ struct ata_params {
/*162*/ u_int16_t cfa_kms_support;
/*163*/ u_int16_t cfa_trueide_modes;
/*164*/ u_int16_t cfa_memory_modes;
u_int16_t reserved165[4];
u_int16_t reserved165[3];
/*168*/ u_int16_t form_factor;
#define ATA_FORM_FACTOR_MASK 0x000f
#define ATA_FORM_FACTOR_NOT_REPORTED 0x0000
#define ATA_FORM_FACTOR_5_25 0x0001
#define ATA_FORM_FACTOR_3_5 0x0002
#define ATA_FORM_FACTOR_2_5 0x0003
#define ATA_FORM_FACTOR_1_8 0x0004
#define ATA_FORM_FACTOR_SUB_1_8 0x0005
#define ATA_FORM_FACTOR_MSATA 0x0006
#define ATA_FORM_FACTOR_M_2 0x0007
#define ATA_FORM_FACTOR_MICRO_SSD 0x0008
#define ATA_FORM_FACTOR_C_FAST 0x0009
/*169*/ u_int16_t support_dsm;
#define ATA_SUPPORT_DSM_TRIM 0x0001
u_int16_t reserved170[6];