IPMCTL-START-DIAGNOSTIC(1)

๐Ÿ’– IPMCTL-START-DIAGNOSTIC ๐Ÿ’–

okay bestie, so this is a page from the ipmctl manual, section 1, and it's literally called ipmctl-start-diagnostic. it starts a diagnostic test. that's the whole vibe. let's get into it ๐Ÿฉบโœจ


โœจ NAME โœจ

ipmctl-start-diagnostic โ€” Starts a diagnostic test ๐Ÿงช


๐ŸŒธ SYNOPSIS ๐ŸŒธ

ipmctl start [OPTIONS] -diagnostic [TARGETS]

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

Starts a diagnostic test. that's it, that's the sentence, no notes ๐Ÿ’…


๐Ÿ‘‘ OPTIONS ๐Ÿ‘‘

  • -h, -help โ€” Displays help for the command. your lil safety net fr fr ๐Ÿซถ
  • -ddrt โ€” Used to specify DDRT as the desired transport protocol for the current invocation of ipmctl.
  • -smbus โ€” Used to specify SMBUS as the desired transport protocol for the current invocation of ipmctl.
โš ๏ธ Note: the -ddrt and -smbus options are mutually exclusive and may not be used together. pick ONE bestie, they do not coexist ๐Ÿ˜ญ
  • -lpmb โ€” Used to specify large transport payload size for the current invocation of ipmctl.
  • -spmb โ€” Used to specify small transport payload size for the current invocation of ipmctl.
โš ๏ธ Note: the -lpmb and -spmb options are mutually exclusive and may not be used together. again: one. not both. ๐Ÿ™ˆ
  • -o (text|nvmxml), -output (text|nvmxml) โ€” Changes the output format. One of: "text" (default) or "nvmxml". so you either get the classic text or the nvmxml glow-up โœจ

๐ŸŽ€ TARGETS ๐ŸŽ€

  • -diagnostic [Quick|Config|Security|FW] โ€” Start a specific test by supplying its name. All tests are run by default. One of:
    • "Quick" โ€” This test verifies that the PMem module host mailbox is accessible and that basic health indicators can be read and are currently reporting acceptable values. a lil wellness check ๐Ÿฉบ
    • "Config" โ€” This test verifies that the BIOS platform configuration matches the installed hardware and the platform configuration conform to best known practices. it's giving "does your outfit match the occasion" but for hardware ๐Ÿ‘—
    • "Security" โ€” This test verifies that all PMem modules have a consistent security state. It is a best practice to enable security on all PMem modules rather than just some. no half-in half-out energy, all of them or it's messy ๐Ÿ’€
    • "FW" โ€” This test verifies that all PMem modules of a given model have consistent FW installed and other FW modifiable attributes are set in accordance with best practices. Note that the test does not have a means of verifying that the installed FW is the optimal version for a given PMem module model just that it has been consistently applied across the system. so it checks consistency, not perfection โ€” read the fine print bestie ๐Ÿ“
  • -dimm [DimmIDS] โ€” Starts a diagnostic test on specific PMem modules by optionally supplying one or more comma separated PMem module identifiers. The default is to start the specified tests on all manageable PMem modules. Only valid for the Quick diagnostic test. so if you try this with anything but Quick, that's a no ๐Ÿ’…

๐ŸŒˆ EXAMPLES ๐ŸŒˆ

Starts all diagnostics.

ipmctl start -diagnostic

Starts the quick check diagnostic on PMem module 0x0001.

ipmctl start -diagnostic Quick -dimm 0x0001

๐Ÿ’œ LIMITATIONS ๐Ÿ’œ

If a PMem module is unmanageable, then Quick test will report the reason, while Config, Security and FW tests will skip unmanageable PMem modules. so Quick is the one that actually tells you what's wrong, the others just quietly move on ๐Ÿ˜ญ


โญ RETURN DATA โญ

Each diagnostic generates one or more log messages. A successful test generates a single log message per PMem module indicating that no errors were found. A failed test might generate multiple log messages each highlighting a specific error with all the relevant details. Each log contains the following information.

  • Test โ€” The test name along with overall execution result. One of:
    • "Quick"
    • "Config"
    • "Security"
    • "FW"
  • State โ€” The collective result state for each test. One of:
    • "Ok"
    • "Warning"
    • "Failed"
    • "Aborted"
  • Message โ€” The message indicates the status of the test. One of:
    • "Ok"
    • "Failed"
  • SubTestName โ€” The subtest name for given Test.

๐Ÿงš Valid SubTest Names by Test Name ๐Ÿงš

  • Test Name: Quick โ€” valid SubTest Names:
    • Manageability
    • Boot status
    • Health
  • Test Name: Config โ€” valid SubTest Names:
    • PMem module specs
    • Duplicate PMem module
    • System Capability
    • Namespace LSA
    • PCD
  • Test Name: Security โ€” valid SubTest Names:
    • Encryption status
    • Inconsistency
  • Test Name: FW โ€” valid SubTest Names:
    • FW Consistency
    • Viral Policy
    • Threshold check
    • System Time
  • State โ€” The severity of the error for each sub-test displayed with SubTestName. One of:
    • "Ok"
    • "Warning"
    • "Failed"
    • "Aborted"

Events are generated as a result of invoking the Start Diagnostics command in order to analyze the Intelยฎ Optaneโ„ข PMem module for potential issues.

Diagnostic events may fall into the following categories:

  • Quick health diagnostic test event
  • Platform configuration diagnostic test event
  • Security diagnostic test event
  • Firmware consistency and settings diagnostic test event

Each event includes the following pieces of information:

  • The severity of the event that occurred. One of:
    • Informational (Info)
    • Warning (Warning)
    • Error (Failed)
    • Aborted (Aborted)
  • A unique ID of the item (PMem module UUID, DimmID, NamespaceID, RegionID, etc.) the event refers to.
  • A detailed description of the event in English.

The following sections list each of the possible events grouped by category of the event.


๐Ÿ’– Quick Health Check Events ๐Ÿ’–

The quick health check diagnostic verifies that the Intelยฎ Optaneโ„ข PMem module's host mailboxes are accessible and that basic health indicators can be read and are currently reporting acceptable values.

โœจ Table 1. Table Quick Health Check Events โœจ

okay bestie, gather round ๐Ÿซถ this is the full roster of events the quick health check can throw at you. every single one comes with a Code, a Severity, a Message, and a lil set of Arguments that get slotted into the message wherever you see [1], [2], [3], [4] โ€” it's giving mad-libs but make it PMem ๐Ÿ’…

  • 500 โ€” Info ๐ŸŒˆ
    • Message: The quick health check succeeded.
    • Arguments: none, zero, zilch โ€” it's just here to say everything's cute โœจ
  • 501 โ€” Warning โš ๏ธ
    • Message: The quick health check detected that PMem module [1] is not manageable because subsystem vendor ID [2] is not supported. UID: [3]
    • Arguments:
      1. PMem module Handle
      2. Subsystem Vendor ID
      3. PMem module UID
  • 502 โ€” Warning โš ๏ธ
    • Message: The quick health check detected that PMem module [1] is not manageable because subsystem device ID [2] is not supported. UID: [3]
    • Arguments:
      1. PMem module Handle
      2. Subsystem Device ID
      3. PMem module UID
  • 503 โ€” Warning โš ๏ธ
    • Message: The quick health check detected that PMem module [1] is not manageable because firmware API version [2] is not supported. UID: [3]
    • Arguments:
      1. PMem module Handle
      2. FW API version
      3. PMem module UID
  • 504 โ€” Warning โš ๏ธ
    • Message: The quick health check detected that PMem module [1] is reporting a bad health state [2]. UID: [3]
    • Arguments:
      1. PMem module Handle
      2. Actual Health State
      3. PMem module UID
  • 505 โ€” Warning ๐Ÿฅต
    • Message: The quick health check detected that PMem module [1] is reporting a media temperature of [2] C which is above the alarm threshold [3] C. UID: [4]
    • Arguments:
      1. PMem module Handle
      2. Actual Media Temperature
      3. Media Temperature Threshold
      4. PMem module UID
  • 506 โ€” Warning ๐Ÿ“‰
    • Message: The quick health check detected that PMem module [1] is reporting percentage remaining at [2]% which is less than the alarm threshold [3]%. UID: [4]
    • Arguments:
      1. PMem module Handle
      2. Actual Percentage Remaining
      3. Percentage Remaining Threshold
      4. PMem module UID
  • 507 โ€” Warning ๐Ÿ”„
    • Message: The quick health check detected that PMem module [1] is reporting reboot required. UID: [2]
    • Arguments:
      1. PMem module Handle
      2. PMem module UID
  • 511 โ€” Warning ๐Ÿฅต
    • Message: The quick health check detected that PMem module [1] is reporting a controller temperature of [2] C which is above the alarm threshold [3] C. UID: [4]
    • Arguments:
      1. PMem module Handle
      2. Actual Controller Temperature
      3. Controller Temperature Threshold
      4. PMem module UID
  • 513 โ€” Error ๐Ÿ’€
    • Message: The quick health check detected that the boot status register of PMem module [1] is not readable. UID: [2]
    • Arguments:
      1. PMem module Handle
      2. PMem module UID

and that's a whole lotta events, so don't you dare scroll away yet ๐Ÿซถ

514 โ€” Error ๐Ÿ’€

Not me finding out the media on PMem module [1] is literally not ready ๐Ÿ˜ญ the firmware is out here reporting it and everything. UID: [2]

Return data:

  1. PMem module Handle
  2. PMem module UID

515 โ€” Error ๐Ÿ’€

Bestie, the firmware on PMem module [1] is reporting an error in the media. Not a vibe. UID: [2]

Return data:

  1. PMem module Handle
  2. PMem module UID

519 โ€” Error ๐Ÿ’€

PMem module [1] failed to initialize BIOS POST testing ๐Ÿ˜ณ it just did not show up to the group chat. UID: [2]

Return data:

  1. PMem module Handle
  2. PMem module UID

520 โ€” Error ๐Ÿ’€

The firmware on PMem module [1] has not initialized successfully. The last known Major:Minor Checkpoint is [2]. UID: [3]

Return data:

  1. PMem module Handle
  2. Major checkpoint : Minor checkpoint in Boot Status Register
  3. PMem module UID

523 โ€” Error ๐Ÿ”ฅ

PMem module [1] is reporting a viral state ๐Ÿ˜ฑ and the way that this means the PMem module is now read-onlyโ€ฆ yeah. It's giving "we're done here." UID: [2]

Lowkey important: viral state = read-only. That part is not a drill, bestie.

Return data:

  1. PMem module Handle
  2. PMem module UID

529 โ€” Warning ๐Ÿซถ

PMem module [1] is reporting that it has no package spares available. It's out here with an empty snack drawer fr. UID: [2]

Return data:

  1. PMem module Handle
  2. PMem module UID

530 โ€” Info โœจ

The firmware on PMem module [1] experienced an unsafe shutdown before its latest restart. Just a lil heads up, nothing dramatic (yet). UID: [2]

Return data:

  1. PMem module Handle
  2. PMem module UID

533 โ€” Error ๐Ÿ’€

The firmware on PMem module [1] is reporting that the AIT DRAM is not ready. UID: [2]

Return data:

  1. PMem module Handle
  2. PMem module UID

534 โ€” Error ๐Ÿ’€

The firmware on PMem module [1] is reporting that the media is disabled. UID: [2]

Return data:

  1. PMem module Handle
  2. PMem module UID

535 โ€” Error ๐Ÿ’€

The firmware on PMem module [1] is reporting that the AIT DRAM is disabled. UID: [2]

Return data:

  1. PMem module Handle
  2. PMem module UID

536 โ€” Error ๐Ÿ’€

The firmware on PMem module [1] failed to load successfully ๐Ÿ˜ญ no cap. UID: [2]

Return data:

  1. PMem module Handle
  2. PMem module UID

538 โ€” Error ๐Ÿ’€

PMem module [1] is reporting that the DDRT IO Init is not complete. UID: [2]

Return data:

  1. PMem module Handle
  2. PMem module UID

  • 539 โ€” Error ๐Ÿ’€ โ€” PMem module [1] is reporting that the mailbox interface is not ready. UID: [2]
    • 1. PMem module Handle
    • 2. PMem module UID
  • 540 โ€” Error ๐Ÿ’€ โ€” An internal error caused the quick health check to abort on PMem module [1]. UID: [2]
    • 1. PMem module Handle
    • 2. PMem module UID
  • 541 โ€” Error ๐Ÿ’€ โ€” The quick health check detected that PMem module [1] is busy. UID: [2]
    • 1. PMem module Handle
    • 2. PMem module UID
  • 542 โ€” Error ๐Ÿ’€ โ€” The quick health check detected that the platform FW did not map a region to SPA on PMem module [1]. ACPI NFIT NVPMem module State Flags Error Bit 6 Set. UID: [2]
    • 1. PMem module Handle
    • 2. PMem module UID
  • 543 โ€” Error ๐Ÿ’€ โ€” The quick health check detected that PMem module [1] DDRT Training is not complete/failed. UID: [2]
    • 1. PMem module Handle
    • 2. PMem module UID
  • 544 โ€” Error ๐Ÿ’€ โ€” PMem module [1] is reporting that the DDRT IO Init is not started. UID: [2]
    • 1. PMem module Handle
    • 2. PMem module UID
  • 545 โ€” Error ๐Ÿ’€ โ€” The quick health check detected that the ROM on PMem module [1] has failed to complete initialization, last known Major:Minor Checkpoint is [2].
    • 1. PMem module Handle
    • 2. Major checkpoint : Minor checkpoint in Boot Status Register
    • 3. PMem module UID

๐Ÿงš Platform Configuration Check Events ๐Ÿงš

okay so this diagnostic test group is the one that's likeโ€ฆ bestie, is your BIOS actually configured right?? ๐Ÿ’… It verifies that the BIOS platform configuration matches the installed hardware, and that the platform configuration conforms to best known practices. no cap, it's the vibe check for your firmware settings ๐ŸŒธ

๐Ÿฉบ Table 2. Table Platform Configuration Check Events ๐Ÿฉบ

okay bestie, this is the big one โ€” every single platform config check event, what it means, and what it hands you back. placeholders like [1] and [2] are the arguments, in order, so read them together, k? โœจ


  • 600 โ€” severity: Info ๐Ÿ’–
    • message: "The platform configuration check succeeded."
    • arguments: none โ€” she's just here to say hi and slay ๐ŸŽ€
  • 601 โ€” severity: Info ๐Ÿ’–
    • message: "The platform configuration check detected that there are no manageable PMem modules."
    • arguments: none
  • 606 โ€” severity: Info ๐Ÿ’–
    • message: "The platform configuration check detected that PMem module [1] is not configured. UID: [2]"
    • arguments:
      1. PMem module Handle
      2. PMem module UID
  • 608 โ€” severity: Error ๐Ÿ’€
    • message: "The platform configuration check detected [1] PMem modules installed on the platform with the same serial number [2]."
    • arguments:
      1. Number of PMem modules with duplicate serial numbers.
      2. The duplicate serial number
  • 609 โ€” severity: Info ๐Ÿ’–
    • message: "The platform configuration check detected that PMem module [1] has a goal configuration that has not yet been applied. A system reboot is required for the new configuration to take effect. UID: [2]"
    • arguments:
      1. PMem module Handle
      2. PMem module UID
  • 618 โ€” severity: Error ๐Ÿ’€
    • message: "The platform configuration check detected that a PMem module with physical ID [1] is present in the system but failed to initialize. UID: [2]"
    • arguments:
      1. PMem module handle in the SMBIOS table
      2. PMem module UID
  • 621 โ€” severity: Error ๐Ÿ’€
    • message: "The platform configuration check detected PCD contains invalid data on PMem module [1]. UID: [2]"
    • arguments:
      1. PMem module Handle
      2. PMem module UID
  • 622 โ€” severity: Error ๐Ÿ’€
    • message: "The platform configuration check was unable to retrieve the namespace information."
    • arguments: none
  • 623 โ€” severity: Warning โš ๏ธ
    • message: "The platform configuration check detected that the BIOS settings do not currently allow memory provisioning from this software."
    • arguments: none
  • 624 โ€” severity: Error ๐Ÿ’€
    • message: "The platform configuration check detected that the BIOS
    • arguments: (cut off right here in this bit โ€” the rest of this one is coming up next, hold on bestie ๐Ÿซถ)
ngl this table is giving long, but every code matters, so we're doing all of them. no skipping, no summarising, periodt. ๐Ÿ’…

๐Ÿ’€ the row with an empty code box

bestie this row has nothing in the code column, and that's not a glitch โ€” it means it's a continuation of the code from right before it. Same code, extra drama. ๐Ÿ˜ญ

  • Severity: Error
  • What it's saying: The platform configuration check detected that the BIOS could not apply the configuration goal on PMem module [1] because of errors in the goal data. The detailed status is COUT table status: [2] [3], Partition change table status: [4], Interleave change table 1 status: [5], Interleave change table 2 status: [6].
  • Return data:
    1. Validation Status
    2. Text error code corresponding to the status code
    3. Partition Size Change Status
    4. Interleave Change Status
    5. Interleave Change Status

๐Ÿ”ฅ 625 โ€” Error

the BIOS tried to do the thing and just... could not. the resources said no. ๐Ÿ™ˆ

  • What it's saying: The platform configuration check detected that the BIOS could not apply the configuration goal on PMem module [1] because the system has insufficient resources. The detailed status is COUT table status: [2] [3], Partition change table status: [4], Interleave change table 1 status: [5], Interleave change table 2 status: [6].
  • Return data:
    1. PMem module Handle
    2. Validation Status
    3. Text error code corresponding to the status code
    4. Partition Size Change Status
    5. Interleave Change Status
    6. Interleave Change Status

๐Ÿ˜ญ 626 โ€” Error

firmware said "not today" and honestly? respect. ๐Ÿซถ

  • What it's saying: The platform configuration check detected that the BIOS could not apply the configuration goal on PMem module [1] because of a firmware error. The detailed status is COUT table status: [2] [3], Partition change table status: [4], Interleave change table 1 status: [5], Interleave change table 2 status: [6].
  • Return data:
    1. PMem module Handle
    2. Validation Status
    3. Text error code corresponding to the status code
    4. Partition Size Change Status
    5. Interleave Change Status
    6. Interleave Change Status

๐Ÿ’… 627 โ€” Error

the mystery-flavoured failure. no reason given, just vibes. ๐Ÿ‘‘

  • What it's saying: The platform configuration check detected that the BIOS could not apply the configuration goal on PMem module [1] for an unknown reason. The detailed status is COUT table status: [2] [3], Partition change table status: [4], Interleave change table 1 status: [5], Interleave change table 2 status: [6].
  • Return data:
    1. PMem module Handle
    2. Validation Status
    3. Text error code corresponding to the status code
    4. Partition Size Change Status
    5. Interleave Change Status
    6. Interleave Change Status

๐Ÿฆ‹ 628 โ€” Error

somebody moved the modules. the interleave set is broken and it's giving "who touched my stuff" energy. โœจ

  • What it's saying: The platform configuration check detected that interleave set [1] is broken because the PMem modules were moved [2].
  • Return data:
    1. Interleave set index ID
    2. List of moved PMem modules.

๐ŸŒธ 629 โ€” Error

the platform looked at ADR and was like "we don't do that here". ๐Ÿ’€

  • What it's saying: The platform configuration check detected that the platform does not support ADR

โ€ฆand therefore data integrity is not guaranteed on the PMem modules. (okay that was the tail end of the last code, we're back ๐Ÿ’–)

  • 630 โ€” Error โ€” An internal error caused the platform configuration check to abort. no args, it just gave up ๐Ÿ˜ญ
  • 631 โ€” Error โ€” The platform configuration check detected that interleave set [1] is broken because the PMem module with UID: [2] is missing from location (Socket-Die-iMC-Channel-Slot) [3]. one of the girlies is literally not in the building ๐Ÿ’€
    • Arguments โ€” 1. Interleave set index ID 2. PMem module UID 3. Location ID
  • 632 โ€” Error โ€” The platform configuration check detected that interleave set [1] is broken because the PMem module with UID: [2] is misplaced. It is currently in location (Socket-Die-iMC-Channel-Slot) [3] and should be moved to (Socket-Die-iMC-Channel-Slot) [4]. she's here, she's just in the wrong seat bestie, move her ๐Ÿซถ
    • Arguments โ€” 1. Interleave set index ID 2. PMem module UID 3. Location ID 4. Location ID
  • 633 โ€” Error โ€” The platform configuration check detected that the BIOS could not fully map memory on PMem module [1] because of an error in current configuration. The detailed status is CCUR table status: [2] [3]. the BIOS tried its best and its best was not enough ๐Ÿ™ˆ
    • Arguments โ€” 1. PMem module Handle 2. Current Configuration Status 3. Text error code corresponding to the status code

๐Ÿ”’ Security Check Events ๐Ÿ”’

The security check diagnostic test group verifies that all Intelยฎ Optaneโ„ข PMem modules have a consistent security state. vibe check but for security settings, and everyone has to match ๐Ÿ‘‘

Table 3. Table Security Check Events

  • 800 โ€” Info โ€” The security check succeeded. ate, no crumbs, we love to see it โœจ
  • 801 โ€” Info โ€” The security check detected that there are no manageable PMem modules. nothing to check, the party is empty ๐ŸŽ€
  • 802 โ€” Warning โ€” The security check detected that security settings are inconsistent [1]. somebody's settings did NOT match and it's giving chaos ๐ŸŒˆ
    • Arguments โ€” 1. A comma separated list of the number of PMem modules in each security state
  • 804 โ€” Info โ€” The security check detected that security is not supported on all PMem modules. not every module even got the memo that security was a thing ๐Ÿฆ‹
  • 805 โ€” Error โ€” An internal error caused the security check to abort. the check literally walked out mid-conversation ๐Ÿ’€

๐Ÿ› ๏ธ Firmware Consistency and Settings Check Events ๐Ÿ› ๏ธ

This test group verifies that all PMem modules of a given subsystem device ID have consistent FW installed and other FW modifiable attributes are set in accordance with best practices. like a group project where everyone actually submitted the same version, and also followed the rubric ๐Ÿ”ฅ

๐Ÿ“‹ Table 4. Table Firmware Consistency and Settings Check Events โœจ

columns: Code, Severity, Message, Arguments โ€” in that order, no cap ๐Ÿ’…

okay bestie, here's the full event roster. every code, every severity, every message, every argument. no skips, no summaries, we're eating today ๐Ÿ“

  • 900 โ€” Info โ€” the firmware consistency and settings check succeeded. no arguments, she's simply thriving ๐ŸŒธ
  • 901 โ€” Info โ€” the firmware consistency and settings check detected that there are no manageable PMem modules. no arguments, periodt ๐Ÿ’€
  • 902 โ€” Warning โ€” the firmware consistency and settings check detected that firmware version on PMem modules [1] with subsystem device ID [2] is non-optimal, and the preferred version is [3].
    • Arguments:
      1. comma separated list of PMem module UIDs
      2. subsystem device ID
      3. preferred firmware version
  • 903 โ€” Warning โ€” the firmware consistency and settings check detected that PMem module [1] is reporting a non-critical media temperature threshold of [2] C which is above the fatal threshold [3] C. UID: [4]
    • Arguments:
      1. PMem module Handle
      2. Current media temperature threshold
      3. Fatal media temperature threshold
      4. PMem module UID
  • 904 โ€” Warning โ€” the firmware consistency and settings check detected that PMem module [1] is reporting a non-critical controller temperature threshold of [2] C which is above the fatal threshold [3] C. UID: [4]
    • Arguments:
      1. PMem module Handle
      2. Current controller temperature threshold
      3. Fatal controller temperature threshold
      4. PMem module UID
  • 905 โ€” Warning โ€” the firmware consistency and settings check detected that PMem module [1] is reporting a percentage remaining of [2]% which is below the recommended threshold [3]%. UID: [4]
    • Arguments:
      1. PMem module Handle
      2. Current percentage remaining threshold
      3. Recommended percentage remaining threshold
      4. PMem module UID
  • 906 โ€” Warning โ€” the firmware consistency and settings check detected that PMem modules have inconsistent viral policy settings. no arguments, just vibes and chaos ๐Ÿซ 
  • 910 โ€” Error โ€” an internal error caused the firmware consistency and settings check to abort. no arguments. this one is not cute, bestie ๐Ÿ˜ญ
  • 911 โ€” Warning โ€” the firmware consistency and settings check detected that PMem modules have inconsistent first fast refresh settings. no arguments.

and that's the whole page, bestie ๐Ÿ’– brought to you by ipmctl, dated 2024-04-22, living under IPMCTL-START-DIAGNOSTIC(1). mwah ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from