{
  "slug": "pi-guard-tag",
  "term": "PI guard tag",
  "aliases": [
    "Protection-information guard tag"
  ],
  "definition": "A protection-information guard tag stores a checksum for the data covered by a selected storage-integrity format.",
  "note": "Linux v6.12's t10_pi_tuple has a 16-bit guard field beside separate application and reference tags. The checksum value does not itself encode the intended address. [linux-format]\n\nSpecify both the checksum algorithm and covered bytes. As historical design context, Linux's integrity documentation describes host-side checksums that a controller can translate, so a generic PI label does not identify one algorithm or one application-to-device boundary. [linux-boundary]\n\nNVM Command Set 1.0e defines 16-, 32- and 64-bit guard formats. A protection type is not a guard width. In that revision, 32- and 64-bit guard formats require logical blocks of at least 4 KiB (sections 5.2.1.2 and 5.2.1.3). A successful command may involve a disabled or escaped check; it does not by itself prove that the guard was compared. [nvm-fields]",
  "related": [
    "protection-information",
    "pi-application-tag",
    "pi-reference-tag",
    "end-to-end-data-protection"
  ],
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "citations": [
    {
      "id": "linux-format",
      "title": "Linux v6.12: T10 PI tuple and protection-type comments (GPL-2.0)",
      "url": "https://github.com/torvalds/linux/blob/adc218676eef25575469234709c2d87185ca223a/include/linux/t10-pi.h",
      "accessed": "2026-11-05"
    },
    {
      "id": "nvm-fields",
      "title": "NVM Express NVM Command Set Specification 1.0e, sections 5.2.1 and 5.2.3, pp. 78-84 and 94-95; copyright 2008 to 2024 NVM Express, Inc. ALL RIGHTS RESERVED.",
      "url": "https://nvmexpress.org/wp-content/uploads/NVM-Express-NVM-Command-Set-Specification-1.0e-2024.07.29-Ratified.pdf",
      "accessed": "2026-11-05"
    },
    {
      "id": "linux-boundary",
      "title": "Linux v6.12 Data Integrity documentation, sections 2 and 3 (historical design context)",
      "url": "https://docs.kernel.org/6.12/block/data-integrity.html",
      "accessed": "2026-11-05"
    }
  ],
  "updated": "2026-11-05",
  "provenance": [
    "Source synthesis scoped to Linux v6.12 and NVM Command Set 1.0e; not a device test, support matrix or extension of the existing CRC experiment."
  ]
}
