[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-jetson-customize-nvpmodel":3,"mdc--of5ea0-key":34,"related-repo-nvidia-jetson-customize-nvpmodel":2597,"related-org-nvidia-jetson-customize-nvpmodel":2701},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"jetson-customize-nvpmodel","customize Jetson power modes","Use when you need to add, remove, edit, list, or change the boot default of an nvpmodel power mode on a Jetson\u002FTegra (Orin, Thor) target. Triggers: edit power mode, tune frequency caps.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19,20],{"name":13,"slug":14,"type":15},"Performance","performance","tag",{"name":17,"slug":18,"type":15},"Hardware","hardware",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"IoT","iot",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-14T05:27:45.320257","Apache-2.0",281,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fjetson-customize-nvpmodel","---\nname: jetson-customize-nvpmodel\ndescription: >-\n  Use when you need to add, remove, edit, list, or change the boot\n  default of an nvpmodel power mode on a Jetson\u002FTegra (Orin, Thor)\n  target. Triggers: edit power mode, tune frequency caps.\nversion: 0.0.1\nlicense: \"Apache-2.0\"\nmetadata:\n  data-classification: public\n  author: \"Jetson Team\"\n  tags:\n    - power\n    - nvpmodel\n    - profile\n  domain: power\n---\n\n# Modify nvpmodel Power Mode (BSP-side)\n\n## Purpose\n\nEdit the per-board nvpmodel configuration so the device boots with\nthe desired power-mode set, CPU\u002FGPU\u002FEMC\u002FTPC clamps, and default\nmode. BSP-side only — all writes land in the overlay tracker, the\nupstream `bsp_image` copy is read-only.\n\nThis skill handles BSP-side edits to the per-board nvpmodel configuration file: adding modes, removing modes, editing CPU\u002FGPU\u002FEMC\u002FTPC clamps, and changing the boot default. Applies on Jetson \u002F Tegra platforms (T234 Orin, T264 Thor).\n\n## File format (canonical, per the BSP file header)\n\n```\n# 1. PARAM definitions — declare named knobs and their sysfs paths\n\u003C PARAM TYPE=FILE  NAME=\u003Cparam_name> >\n\u003Carg_name> \u003C\u002Fabsolute\u002Fsysfs\u002Fpath>\n...\n\u003C PARAM TYPE=CLOCK NAME=\u003Cparam_name> >\nFREQ_TABLE        \u003C\u002Fsysfs\u002F...\u002Favailable_frequencies>\nMAX_FREQ          \u003C\u002Fsysfs\u002F...\u002Fmax_freq>\nMIN_FREQ          \u003C\u002Fsysfs\u002F...\u002Fmin_freq>\nFREQ_TABLE_KNEXT  \u003C\u002Fsysfs\u002F...\u002Favailable_frequencies>     # kernel-NEXT variant\nMAX_FREQ_KNEXT    \u003C\u002Fsysfs\u002F...\u002Fmax_freq>\nMIN_FREQ_KNEXT    \u003C\u002Fsysfs\u002F...\u002Fmin_freq>\n\n# 2. POWER_MODEL definitions — one block per profile\n\u003C POWER_MODEL ID=\u003Cint> NAME=\u003Cstring> >\nPARAM_NAME ARG_NAME \u003Cvalue>\n...\n\n# 3. PM_CONFIG — mandatory; selects boot default\n\u003C PM_CONFIG DEFAULT=\u003Cid> >\n```\n\nRules:\n\n- For `TYPE=FILE`, `\u003Cvalue>` is a **string** (`0`, `1`, `on`, `auto`, …).\n- For `TYPE=CLOCK`, `\u003Cvalue>` is an **integer** (Hz for clocks, raw integer for masks).\n- `-1` for a CLOCK value means **INT_MAX** (no cap).\n- The header `\u003C … >` line must start at column 0 with a space after `\u003C` and before `>`. Strict.\n- Every `PARAM_NAME` referenced in a POWER_MODEL must already be declared above.\n- **Frequency values must come from the kernel's `available_frequencies`** table for that clock — values not in the table get silently rounded.\n- `CORE_0` cannot be offlined; at least one CPU core must remain online in every profile.\n- **Copy PARAM names verbatim** from an existing POWER_MODEL block in the per-board file — chip families differ (T234 Orin uses `CPU_A78_\u003Cn>` for CPU clusters; T264 Thor uses a different convention). Don't invent.\n\n## Prerequisites\n\nResolve the active profile per\n[`..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md`](..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md).\nRefuse and route in these cases:\n\n| Condition | Refuse with |\n|---|---|\n| No active profile, or `active: NA` | Route to `\u002Fjetson-set-target` or `\u002Fjetson-init-target`. |\n| Profile lacks `bsp_image:` block | Route to `\u002Fjetson-init-image`. |\n| `\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002F` missing | Route to `\u002Fjetson-init-image`. |\n| `\u003Csource.root_path>\u002FLinux_for_Tegra\u002F` missing or not a git repo | Route to `\u002Fjetson-init-source`. |\n\nResolve paths:\n\n- `\u003Cbsp_image.root_path>` from `bsp_image.root_path:` if present, else `\u003Cworkspace>\u002FImage`.\n- `\u003Csource.root_path>` from `source.root_path:` if present, else `\u003Cworkspace>\u002FSource`.\n\n`\u003Cbsp_image.root_path>` is **read-only** for this skill; every write lands\nunder `\u003Csource.root_path>` (the overlay tracker). This is the workflow\ninvariant in\n[`..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#workflow-invariants`](..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#workflow-invariants) —\nhand-editing upstream silently destroys the diff trail and makes\n`\u002Fjetson-promote-image` a noop.\n\n## The per-board file\n\nThe conf this skill edits has the relative path:\n\n```\nLinux_for_Tegra\u002Frootfs\u002Fetc\u002Fnvpmodel\u002Fnvpmodel_\u003Cactive-sku>.conf\n```\n\nIt lives in **two** roots; the skill walks both:\n\n| Role | Location | Skill writes? |\n|---|---|---|\n| Detection + pristine source | `\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002Frootfs\u002Fetc\u002Fnvpmodel\u002F` | no — read-only |\n| Overlay edit target + git commit | `\u003Csource.root_path>\u002FLinux_for_Tegra\u002Frootfs\u002Fetc\u002Fnvpmodel\u002F` | yes |\n\nSubsequent sections refer to **the per-board file** to mean the overlay copy\nunder `\u003Csource.root_path>`. Operations 1–4 all read, edit, and save against\nthat overlay copy. The `\u003Cbsp_image.root_path>` copy is read once during the\n\"Resolving `\u003Cactive-sku>`\" detection step and once during the\n[Overlay edit recipe](#overlay-edit-recipe-apply-before-any-operation)'s\npristine-import step, then never touched again.\n\n### Resolving `\u003Cactive-sku>` — which file to edit\n\nThe filename is **not** always `module.id + \"_\" + module.sku`. Variants exist:\n\n- `nvpmodel_p3767_0000_super.conf` (super-mode SKU variant)\n- `nvpmodel_igx_orin.conf`, `nvpmodel_igx_orin_safety.conf` (IGX, no SKU number)\n\nAt boot, `nvpower.sh` (at `Linux_for_Tegra\u002Frootfs\u002Fetc\u002Fsystemd\u002Fnvpower.sh`) reads the kernel DTB's root `compatible` string and maps it — plus super\u002Fsafety state — to the nvpmodel filename. Replicate that mapping **BSP-side**, against `\u003Cbsp_image.root_path>`:\n\n1. Resolve the SKU-correct kernel DTB under `\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002F` and read its root `compatible` (detect kernel DTB from the active flash conf).\n2. Read `\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002Frootfs\u002Fetc\u002Fsystemd\u002Fnvpower.sh` to find the compatible-string → conf mapping, and apply it to the compatible from the previous step (factoring in super\u002Fsafety flags).\n3. Verify the resolved `nvpmodel_\u003C...>.conf` exists under `\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002Frootfs\u002Fetc\u002Fnvpmodel\u002F`.\n\nShortcut: filter `\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002Frootfs\u002Fetc\u002Fnvpmodel\u002F` to `nvpmodel_\u003Cmodule.id>_\u003Cmodule.sku>*.conf`; for super-mode flash configs pick the `_super` variant. Use only when unambiguous; otherwise fall back to the DTB method.\n\nDon't blindly compose `nvpmodel_\u003Cid>_\u003Csku>.conf` — verify the file actually exists.\n\n### Propagation set — confs to keep in sync\n\nThe active-SKU file is rarely the only conf that should carry a customization. After editing it, **apply the same edit to every sibling in the propagation set** so the change survives regardless of which module \u002F baseboard SKU is booted:\n\n- **The reference platform's nvpmodel conf** — the upstream conf the active file was forked from (resolve via `reference_devkit` in the active profile, or `jetson-derive-carrier` fork ancestry). For a BSP that contains only the reference (no derived carriers), this is the same file as the active and the rule reduces to a no-op.\n- **Every carrier-derived nvpmodel conf** — each `nvpmodel_*.conf` produced by `jetson-derive-carrier` for a custom carrier on top of the same module SKU.\n- **`_super` siblings** when present (e.g. `nvpmodel_p3767_0000_super.conf`) — apply the structural edit (new POWER_MODEL block, removed block, `PM_CONFIG DEFAULT=` flip, NAME rename) **but preserve the super conf's higher MAX_FREQ \u002F MIN_FREQ caps**. Those elevated caps are the whole reason the `_super` variant exists; a blanket content overwrite from the non-super file would silently flatten the super envelope.\n\n**\"Apply the same edit\" ≠ blanket file copy.** Port the changed POWER_MODEL \u002F PARAM lines into each sibling; preserve every other line. Blanket-copying is safe **only** when both confs were byte-identical before the edit. Otherwise re-validate per the Rules on each target (available-frequencies table for clock values, ID uniqueness, `PM_CONFIG DEFAULT=` references a present ID) — sibling confs may carry SKU-specific `available_frequencies` tables that don't accept the active file's frequency values.\n\n## Overlay edit recipe (apply before any Operation)\n\nFollow the canonical\n[Off-skill edits recipe](..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#off-skill-edits)\nin the workflow doc — pristine import + customization commit pair, both\ngated by the preview gate. Apply once per run, covering every per-board\nfile the run touches (the active conf plus every sibling in the\n[Propagation set](#propagation-set--confs-to-keep-in-sync)).\n\nConcrete substitutions for this skill:\n\n- `\u003Crel>\u002F\u003Cfile>` is `rootfs\u002Fetc\u002Fnvpmodel\u002F\u003Cconf>`.\n- Suggested pristine-import message:\n  `import pristine: \u003Ccomma-separated rel paths of imported confs>`,\n  body `Source: \u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002F (BSP \u003Cbsp_image.version>)`.\n- Suggested customization-commit header:\n  `jetson-customize-nvpmodel: \u003Csummary>`,\n  body lines like `nvpmodel_p3767_0001.conf: PM_CONFIG DEFAULT 2 -> 0 (MAXN)`.\n\n## Instructions\n\nPick the operation that matches the user's intent and follow the\nmatching subsection. All write-side operations (1–4) must first\napply the [Overlay edit recipe](#overlay-edit-recipe-apply-before-any-operation).\n\n- Operation 1 — Add a new power mode (drives the NVIDIA Power Estimator).\n- Operation 2 — Remove a power mode.\n- Operation 3 — Edit an existing power mode (clamps, core-online, NAME).\n- Operation 4 — Change the boot default (`PM_CONFIG DEFAULT=`).\n- Operation 5 — List defined power modes (read-only).\n\nAfter any write-side operation, run the Deploy chain (`## Deploy`)\nto land the change on the device.\n\n## Examples\n\nAdd a new 30 W power mode from a Power Estimator export and pin it\nas the boot default on a P3767-0001 target:\n\n```\n\u002Fjetson-customize-nvpmodel\n> add a new POWER_MODEL from ~\u002FDownloads\u002Fnvpmodel_30W.conf as ID 8 NAME \"30W_CUSTOM\"\n> set PM_CONFIG DEFAULT to 8\n```\n\nCap a Thor target to the MAXN power envelope by flipping the boot\ndefault (no envelope tuning needed):\n\n```\n\u002Fjetson-customize-nvpmodel\n> set PM_CONFIG DEFAULT to the MAXN profile's ID\n```\n\nList which power modes the active SKU currently defines and which\nis the boot default:\n\n```\n\u002Fjetson-customize-nvpmodel\n> list defined power modes\n```\n\n## Operation 1 — Add a new power mode\n\nApply the [Overlay edit recipe](#overlay-edit-recipe-apply-before-any-operation) first.\n\n### Generate the profile via the Power Estimator\n\n**Must not interpolate or extrapolate frequencies from existing profiles to estimate power.**\n\nFor any non-stock power envelope (custom budget, custom workload), use the **NVIDIA Power Estimator**: `https:\u002F\u002Fjetson-tools.nvidia.com\u002Fpowerestimator\u002F`\n\n- Pick the exact module SKU and JetPack release.\n- Enter workload (CPU cores, GPU usage, EMC, codecs, camera, display).\n- Estimate power budget.\n- Download custom `nvpmodel.conf`.\n- Share the downloaded `nvpmodel.conf` file path.\n\n### Append the POWER_MODEL block\n\nIn the per-board file, insert the new block **after** the last `\u003C PARAM … >` declaration (POWER_MODEL must reference declared PARAMs) and **before** the final `\u003C PM_CONFIG ... >` line. The block structure is the **File format** shown above; frequency values come from the Power Estimator output (see \"Generate the profile via the Power Estimator\").\n\nCheck `ID` is unique; `NAME` should be uppercase, no whitespace. Each numeric `MAX_FREQ` \u002F `MIN_FREQ` value must satisfy the `available_frequencies` rule (see Rules). If you intend this mode to be the boot default, follow Operation 4.\n\n## Operation 2 — Remove a power mode\n\nApply the [Overlay edit recipe](#overlay-edit-recipe-apply-before-any-operation) first.\n\n1. In the per-board file, delete the entire `\u003C POWER_MODEL ID=\u003Cn> NAME=... >` block including all its parameter lines, up to (but not including) the next `\u003C POWER_MODEL ... >` or `\u003C PM_CONFIG ... >` marker.\n2. If the deleted ID matches the current `DEFAULT=\u003Cid>` value in the trailing `\u003C PM_CONFIG … >` line, point `DEFAULT=` at a remaining ID — otherwise nvpmodel will fail to apply a default at boot.\n3. Search for hard-coded references in the rootfs scripts before declaring the change safe:\n   ```bash\n   grep -rn \"nvpmodel -m\" \\\n     Linux_for_Tegra\u002Frootfs\u002Fetc \\\n     Linux_for_Tegra\u002Frootfs\u002Fopt 2>\u002Fdev\u002Fnull\n   ```\n\nID gaps are legal — you don't have to renumber remaining modes.\n\n## Operation 3 — Edit an existing power mode\n\nApply the [Overlay edit recipe](#overlay-edit-recipe-apply-before-any-operation) first.\n\n1. In the per-board file, edit the parameter lines inside the block. Keep `\u003Cparam>` and `\u003Carg>` names exactly matching the PARAM declarations.\n2. **If the edit changes the power envelope** (any CPU\u002FGPU\u002FEMC\u002FPVA\u002FDLA `MAX_FREQ` \u002F `MIN_FREQ`, core-online count for a freq-bound mode, or TPC mask), re-run the **NVIDIA Power Estimator** (see \"Generate the profile via the Power Estimator\") to ground the new frequencies in a real per-component model. Do not interpolate from neighboring modes.\n3. Validate clock values per the `available_frequencies` rule (see Rules).\n\nEdits that only toggle core-online flags within an already-validated envelope, or only change `NAME=`, don't need the Power Estimator pass.\n\n## Operation 4 — Change the boot default\n\nApply the [Overlay edit recipe](#overlay-edit-recipe-apply-before-any-operation) first.\n\nEdit the `\u003C PM_CONFIG DEFAULT=\u003Cid> >` line at the bottom of the per-board file.\n\n`\u003Cid>` must reference an existing `\u003C POWER_MODEL ID=\u003Cid> … >` block in the same file. Pointing at an undefined ID makes nvpmodel fail to apply at boot.\n\n## Operation 5 — List defined power modes\n\nThis is a read-only operation; no overlay-tracker setup is needed. Run\nagainst whichever copy you want to inspect (`\u003Cbsp_image.root_path>\u002F...`\nfor the pristine state, `\u003Csource.root_path>\u002F...` for the post-edit state):\n\n```bash\ngrep -E '^\u003C POWER_MODEL ' \u003Cper-board file>\ngrep -E '^\u003C PM_CONFIG '   \u003Cper-board file>\n```\n\nThe first command prints every `ID`\u002F`NAME`; the second prints the current boot default. On a running target, `nvpmodel -p --verbose` (or `nvpmodel -q`) is authoritative.\n\n## Limitations\n\n- BSP-side scope only — this skill never invokes `nvpmodel -m` on a\n  running target. Live mode switching requires reboot via Deploy,\n  or the side-channel `scp + nvpmodel -m` flow described in `## Deploy`.\n- Edits land in the overlay copy under `\u003Csource.root_path>` only;\n  the `\u003Cbsp_image.root_path>` copy is read-only and is rewritten by\n  `\u002Fjetson-promote-image`. Hand-editing `bsp_image` is silently lost\n  on the next `\u002Fjetson-init-image` re-extract.\n- Frequency values must come from the kernel's `available_frequencies`\n  table for the relevant clock — values outside the table get\n  silently rounded. This skill does not validate against a live\n  target's table; trust the per-board file's existing values and\n  Power Estimator output.\n- Non-trivial envelope edits (any CPU\u002FGPU\u002FEMC\u002FPVA\u002FDLA `MAX_FREQ` \u002F\n  `MIN_FREQ` change) require the NVIDIA Power Estimator\n  (`https:\u002F\u002Fjetson-tools.nvidia.com\u002Fpowerestimator\u002F`) — interpolation\n  or extrapolation between existing modes is not supported.\n- Propagation across siblings is partial by design: only the changed\n  `POWER_MODEL` \u002F `PARAM` lines are ported, never a blanket file\n  overwrite, since `_super` siblings carry elevated `MAX_FREQ`\u002F`MIN_FREQ`\n  caps that must stay intact.\n- PARAM names are chip-family-specific (e.g. `CPU_A78_\u003Cn>` on T234,\n  different on T264). Copy verbatim from existing POWER_MODEL blocks;\n  invented names silently fail to apply.\n\n## Troubleshooting\n\n| Error | Cause | Solution |\n|---|---|---|\n| nvpmodel fails to apply default at boot | `PM_CONFIG DEFAULT=\u003Cid>` references a deleted or missing POWER_MODEL ID | Point `DEFAULT=` at an existing `\u003C POWER_MODEL ID=\u003Cn> ... >` in the same file. |\n| Frequency value silently doesn't take effect | Value not in the kernel's `available_frequencies` table for that clock | Replace with the nearest legal value from the running target's `available_frequencies` (or Power Estimator output). |\n| `MAX_FREQ -1` does nothing | `-1` on a `TYPE=FILE` PARAM (only valid for `TYPE=CLOCK`) | Use `-1` only on CLOCK params; for FILE params, write the actual string the sysfs node expects. |\n| Module dies \u002F fails to boot after edit | `CORE_0` was offlined, or the mode dropped below the platform's minimum quiescent envelope | Keep `CORE_0` online; floor `MIN_FREQ` per the Power Estimator's lowest-power profile for the SKU. |\n| `nvpmodel -m \u003Cid>` returns \"ID not found\" at runtime | Mode ID was removed or renumbered but a rootfs script still references the old ID | `grep -rn 'nvpmodel -m' rootfs\u002Fetc rootfs\u002Fopt` and update \u002F remove the stale references. |\n| Change vanished after `\u002Fjetson-init-image` re-extract | Edit landed in `\u003Cbsp_image.root_path>` instead of `\u003Csource.root_path>` overlay | Re-apply via the [Overlay edit recipe](#overlay-edit-recipe-apply-before-any-operation) so the change is committed in the overlay tracker. |\n| `_super` sibling lost elevated caps after propagation | Blanket file copy clobbered `_super`'s higher `MAX_FREQ`\u002F`MIN_FREQ` | Port only the structural change; preserve `_super`'s caps per [Propagation set](#propagation-set--confs-to-keep-in-sync). |\n| Parser rejects new POWER_MODEL block | Header `\u003C … >` not at column 0, missing space after `\u003C` or before `>`, or PARAM not declared earlier | Restore strict header formatting; ensure every referenced `PARAM_NAME` appears in a `\u003C PARAM ... >` block above. |\n\n## Deploy\n\nThe customization commit in the overlay tracker does not reach the device\non its own. The Deploy chain:\n\n1. **`\u002Fjetson-promote-image`** — copies every tracked file in the overlay\n   into `\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002F`. Diff-aware (skip\n   byte-identical); uses `sudo cp -p` for `rootfs\u002F*` destinations.\n2. **`\u002Fjetson-flash-image`** — flashes the updated `bsp_image` to the\n   device.\n3. (Alternate, no flash) Copy `\u003Csource.root_path>\u002FLinux_for_Tegra\u002Frootfs\u002Fetc\u002Fnvpmodel\u002F\u003Cconf>`\n   directly to the running target's `\u002Fetc\u002Fnvpmodel\u002F\u003Cconf>`, then\n   `sudo nvpmodel -m \u003Cid>` (or reboot to pick up the new `DEFAULT=`).\n\nEditing `\u003Csource.root_path>\u002F...` without committing — or editing\n`\u003Cbsp_image.root_path>\u002F...` directly — does nothing for `\u002Fjetson-promote-image`\nand is silently lost on the next `\u002Fjetson-init-image` re-extract.\n",{"data":35,"body":44},{"name":4,"description":6,"version":36,"license":26,"metadata":37},"0.0.1",{"data-classification":38,"author":39,"tags":40,"domain":41},"public","Jetson Team",[41,42,43],"power","nvpmodel","profile",{"type":45,"children":46},"root",[47,56,63,78,83,89,101,106,299,305,322,461,466,519,562,568,573,582,594,665,707,721,741,773,816,871,899,912,918,930,1028,1059,1065,1086,1091,1151,1157,1167,1201,1214,1220,1225,1234,1239,1248,1253,1262,1268,1279,1285,1293,1311,1353,1359,1401,1445,1451,1460,1605,1610,1616,1625,1690,1703,1709,1718,1731,1750,1756,1777,1881,1916,1922,2080,2086,2453,2459,2464,2559,2591],{"type":48,"tag":49,"props":50,"children":52},"element","h1",{"id":51},"modify-nvpmodel-power-mode-bsp-side",[53],{"type":54,"value":55},"text","Modify nvpmodel Power Mode (BSP-side)",{"type":48,"tag":57,"props":58,"children":60},"h2",{"id":59},"purpose",[61],{"type":54,"value":62},"Purpose",{"type":48,"tag":64,"props":65,"children":66},"p",{},[67,69,76],{"type":54,"value":68},"Edit the per-board nvpmodel configuration so the device boots with\nthe desired power-mode set, CPU\u002FGPU\u002FEMC\u002FTPC clamps, and default\nmode. BSP-side only — all writes land in the overlay tracker, the\nupstream ",{"type":48,"tag":70,"props":71,"children":73},"code",{"className":72},[],[74],{"type":54,"value":75},"bsp_image",{"type":54,"value":77}," copy is read-only.",{"type":48,"tag":64,"props":79,"children":80},{},[81],{"type":54,"value":82},"This skill handles BSP-side edits to the per-board nvpmodel configuration file: adding modes, removing modes, editing CPU\u002FGPU\u002FEMC\u002FTPC clamps, and changing the boot default. Applies on Jetson \u002F Tegra platforms (T234 Orin, T264 Thor).",{"type":48,"tag":57,"props":84,"children":86},{"id":85},"file-format-canonical-per-the-bsp-file-header",[87],{"type":54,"value":88},"File format (canonical, per the BSP file header)",{"type":48,"tag":90,"props":91,"children":95},"pre",{"className":92,"code":94,"language":54},[93],"language-text","# 1. PARAM definitions — declare named knobs and their sysfs paths\n\u003C PARAM TYPE=FILE  NAME=\u003Cparam_name> >\n\u003Carg_name> \u003C\u002Fabsolute\u002Fsysfs\u002Fpath>\n...\n\u003C PARAM TYPE=CLOCK NAME=\u003Cparam_name> >\nFREQ_TABLE        \u003C\u002Fsysfs\u002F...\u002Favailable_frequencies>\nMAX_FREQ          \u003C\u002Fsysfs\u002F...\u002Fmax_freq>\nMIN_FREQ          \u003C\u002Fsysfs\u002F...\u002Fmin_freq>\nFREQ_TABLE_KNEXT  \u003C\u002Fsysfs\u002F...\u002Favailable_frequencies>     # kernel-NEXT variant\nMAX_FREQ_KNEXT    \u003C\u002Fsysfs\u002F...\u002Fmax_freq>\nMIN_FREQ_KNEXT    \u003C\u002Fsysfs\u002F...\u002Fmin_freq>\n\n# 2. POWER_MODEL definitions — one block per profile\n\u003C POWER_MODEL ID=\u003Cint> NAME=\u003Cstring> >\nPARAM_NAME ARG_NAME \u003Cvalue>\n...\n\n# 3. PM_CONFIG — mandatory; selects boot default\n\u003C PM_CONFIG DEFAULT=\u003Cid> >\n",[96],{"type":48,"tag":70,"props":97,"children":99},{"__ignoreMap":98},"",[100],{"type":54,"value":94},{"type":48,"tag":64,"props":102,"children":103},{},[104],{"type":54,"value":105},"Rules:",{"type":48,"tag":107,"props":108,"children":109},"ul",{},[110,169,194,212,241,254,270,281],{"type":48,"tag":111,"props":112,"children":113},"li",{},[114,116,122,124,130,132,138,140,146,147,153,154,160,161,167],{"type":54,"value":115},"For ",{"type":48,"tag":70,"props":117,"children":119},{"className":118},[],[120],{"type":54,"value":121},"TYPE=FILE",{"type":54,"value":123},", ",{"type":48,"tag":70,"props":125,"children":127},{"className":126},[],[128],{"type":54,"value":129},"\u003Cvalue>",{"type":54,"value":131}," is a ",{"type":48,"tag":133,"props":134,"children":135},"strong",{},[136],{"type":54,"value":137},"string",{"type":54,"value":139}," (",{"type":48,"tag":70,"props":141,"children":143},{"className":142},[],[144],{"type":54,"value":145},"0",{"type":54,"value":123},{"type":48,"tag":70,"props":148,"children":150},{"className":149},[],[151],{"type":54,"value":152},"1",{"type":54,"value":123},{"type":48,"tag":70,"props":155,"children":157},{"className":156},[],[158],{"type":54,"value":159},"on",{"type":54,"value":123},{"type":48,"tag":70,"props":162,"children":164},{"className":163},[],[165],{"type":54,"value":166},"auto",{"type":54,"value":168},", …).",{"type":48,"tag":111,"props":170,"children":171},{},[172,173,179,180,185,187,192],{"type":54,"value":115},{"type":48,"tag":70,"props":174,"children":176},{"className":175},[],[177],{"type":54,"value":178},"TYPE=CLOCK",{"type":54,"value":123},{"type":48,"tag":70,"props":181,"children":183},{"className":182},[],[184],{"type":54,"value":129},{"type":54,"value":186}," is an ",{"type":48,"tag":133,"props":188,"children":189},{},[190],{"type":54,"value":191},"integer",{"type":54,"value":193}," (Hz for clocks, raw integer for masks).",{"type":48,"tag":111,"props":195,"children":196},{},[197,203,205,210],{"type":48,"tag":70,"props":198,"children":200},{"className":199},[],[201],{"type":54,"value":202},"-1",{"type":54,"value":204}," for a CLOCK value means ",{"type":48,"tag":133,"props":206,"children":207},{},[208],{"type":54,"value":209},"INT_MAX",{"type":54,"value":211}," (no cap).",{"type":48,"tag":111,"props":213,"children":214},{},[215,217,223,225,231,233,239],{"type":54,"value":216},"The header ",{"type":48,"tag":70,"props":218,"children":220},{"className":219},[],[221],{"type":54,"value":222},"\u003C … >",{"type":54,"value":224}," line must start at column 0 with a space after ",{"type":48,"tag":70,"props":226,"children":228},{"className":227},[],[229],{"type":54,"value":230},"\u003C",{"type":54,"value":232}," and before ",{"type":48,"tag":70,"props":234,"children":236},{"className":235},[],[237],{"type":54,"value":238},">",{"type":54,"value":240},". Strict.",{"type":48,"tag":111,"props":242,"children":243},{},[244,246,252],{"type":54,"value":245},"Every ",{"type":48,"tag":70,"props":247,"children":249},{"className":248},[],[250],{"type":54,"value":251},"PARAM_NAME",{"type":54,"value":253}," referenced in a POWER_MODEL must already be declared above.",{"type":48,"tag":111,"props":255,"children":256},{},[257,268],{"type":48,"tag":133,"props":258,"children":259},{},[260,262],{"type":54,"value":261},"Frequency values must come from the kernel's ",{"type":48,"tag":70,"props":263,"children":265},{"className":264},[],[266],{"type":54,"value":267},"available_frequencies",{"type":54,"value":269}," table for that clock — values not in the table get silently rounded.",{"type":48,"tag":111,"props":271,"children":272},{},[273,279],{"type":48,"tag":70,"props":274,"children":276},{"className":275},[],[277],{"type":54,"value":278},"CORE_0",{"type":54,"value":280}," cannot be offlined; at least one CPU core must remain online in every profile.",{"type":48,"tag":111,"props":282,"children":283},{},[284,289,291,297],{"type":48,"tag":133,"props":285,"children":286},{},[287],{"type":54,"value":288},"Copy PARAM names verbatim",{"type":54,"value":290}," from an existing POWER_MODEL block in the per-board file — chip families differ (T234 Orin uses ",{"type":48,"tag":70,"props":292,"children":294},{"className":293},[],[295],{"type":54,"value":296},"CPU_A78_\u003Cn>",{"type":54,"value":298}," for CPU clusters; T264 Thor uses a different convention). Don't invent.",{"type":48,"tag":57,"props":300,"children":302},{"id":301},"prerequisites",[303],{"type":54,"value":304},"Prerequisites",{"type":48,"tag":64,"props":306,"children":307},{},[308,310,320],{"type":54,"value":309},"Resolve the active profile per\n",{"type":48,"tag":311,"props":312,"children":314},"a",{"href":313},"..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md",[315],{"type":48,"tag":70,"props":316,"children":318},{"className":317},[],[319],{"type":54,"value":313},{"type":54,"value":321},".\nRefuse and route in these cases:",{"type":48,"tag":323,"props":324,"children":325},"table",{},[326,345],{"type":48,"tag":327,"props":328,"children":329},"thead",{},[330],{"type":48,"tag":331,"props":332,"children":333},"tr",{},[334,340],{"type":48,"tag":335,"props":336,"children":337},"th",{},[338],{"type":54,"value":339},"Condition",{"type":48,"tag":335,"props":341,"children":342},{},[343],{"type":54,"value":344},"Refuse with",{"type":48,"tag":346,"props":347,"children":348},"tbody",{},[349,385,412,436],{"type":48,"tag":331,"props":350,"children":351},{},[352,364],{"type":48,"tag":353,"props":354,"children":355},"td",{},[356,358],{"type":54,"value":357},"No active profile, or ",{"type":48,"tag":70,"props":359,"children":361},{"className":360},[],[362],{"type":54,"value":363},"active: NA",{"type":48,"tag":353,"props":365,"children":366},{},[367,369,375,377,383],{"type":54,"value":368},"Route to ",{"type":48,"tag":70,"props":370,"children":372},{"className":371},[],[373],{"type":54,"value":374},"\u002Fjetson-set-target",{"type":54,"value":376}," or ",{"type":48,"tag":70,"props":378,"children":380},{"className":379},[],[381],{"type":54,"value":382},"\u002Fjetson-init-target",{"type":54,"value":384},".",{"type":48,"tag":331,"props":386,"children":387},{},[388,401],{"type":48,"tag":353,"props":389,"children":390},{},[391,393,399],{"type":54,"value":392},"Profile lacks ",{"type":48,"tag":70,"props":394,"children":396},{"className":395},[],[397],{"type":54,"value":398},"bsp_image:",{"type":54,"value":400}," block",{"type":48,"tag":353,"props":402,"children":403},{},[404,405,411],{"type":54,"value":368},{"type":48,"tag":70,"props":406,"children":408},{"className":407},[],[409],{"type":54,"value":410},"\u002Fjetson-init-image",{"type":54,"value":384},{"type":48,"tag":331,"props":413,"children":414},{},[415,426],{"type":48,"tag":353,"props":416,"children":417},{},[418,424],{"type":48,"tag":70,"props":419,"children":421},{"className":420},[],[422],{"type":54,"value":423},"\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002F",{"type":54,"value":425}," missing",{"type":48,"tag":353,"props":427,"children":428},{},[429,430,435],{"type":54,"value":368},{"type":48,"tag":70,"props":431,"children":433},{"className":432},[],[434],{"type":54,"value":410},{"type":54,"value":384},{"type":48,"tag":331,"props":437,"children":438},{},[439,450],{"type":48,"tag":353,"props":440,"children":441},{},[442,448],{"type":48,"tag":70,"props":443,"children":445},{"className":444},[],[446],{"type":54,"value":447},"\u003Csource.root_path>\u002FLinux_for_Tegra\u002F",{"type":54,"value":449}," missing or not a git repo",{"type":48,"tag":353,"props":451,"children":452},{},[453,454,460],{"type":54,"value":368},{"type":48,"tag":70,"props":455,"children":457},{"className":456},[],[458],{"type":54,"value":459},"\u002Fjetson-init-source",{"type":54,"value":384},{"type":48,"tag":64,"props":462,"children":463},{},[464],{"type":54,"value":465},"Resolve paths:",{"type":48,"tag":107,"props":467,"children":468},{},[469,495],{"type":48,"tag":111,"props":470,"children":471},{},[472,478,480,486,488,494],{"type":48,"tag":70,"props":473,"children":475},{"className":474},[],[476],{"type":54,"value":477},"\u003Cbsp_image.root_path>",{"type":54,"value":479}," from ",{"type":48,"tag":70,"props":481,"children":483},{"className":482},[],[484],{"type":54,"value":485},"bsp_image.root_path:",{"type":54,"value":487}," if present, else ",{"type":48,"tag":70,"props":489,"children":491},{"className":490},[],[492],{"type":54,"value":493},"\u003Cworkspace>\u002FImage",{"type":54,"value":384},{"type":48,"tag":111,"props":496,"children":497},{},[498,504,505,511,512,518],{"type":48,"tag":70,"props":499,"children":501},{"className":500},[],[502],{"type":54,"value":503},"\u003Csource.root_path>",{"type":54,"value":479},{"type":48,"tag":70,"props":506,"children":508},{"className":507},[],[509],{"type":54,"value":510},"source.root_path:",{"type":54,"value":487},{"type":48,"tag":70,"props":513,"children":515},{"className":514},[],[516],{"type":54,"value":517},"\u003Cworkspace>\u002FSource",{"type":54,"value":384},{"type":48,"tag":64,"props":520,"children":521},{},[522,527,529,534,536,541,543,552,554,560],{"type":48,"tag":70,"props":523,"children":525},{"className":524},[],[526],{"type":54,"value":477},{"type":54,"value":528}," is ",{"type":48,"tag":133,"props":530,"children":531},{},[532],{"type":54,"value":533},"read-only",{"type":54,"value":535}," for this skill; every write lands\nunder ",{"type":48,"tag":70,"props":537,"children":539},{"className":538},[],[540],{"type":54,"value":503},{"type":54,"value":542}," (the overlay tracker). This is the workflow\ninvariant in\n",{"type":48,"tag":311,"props":544,"children":546},{"href":545},"..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#workflow-invariants",[547],{"type":48,"tag":70,"props":548,"children":550},{"className":549},[],[551],{"type":54,"value":545},{"type":54,"value":553}," —\nhand-editing upstream silently destroys the diff trail and makes\n",{"type":48,"tag":70,"props":555,"children":557},{"className":556},[],[558],{"type":54,"value":559},"\u002Fjetson-promote-image",{"type":54,"value":561}," a noop.",{"type":48,"tag":57,"props":563,"children":565},{"id":564},"the-per-board-file",[566],{"type":54,"value":567},"The per-board file",{"type":48,"tag":64,"props":569,"children":570},{},[571],{"type":54,"value":572},"The conf this skill edits has the relative path:",{"type":48,"tag":90,"props":574,"children":577},{"className":575,"code":576,"language":54},[93],"Linux_for_Tegra\u002Frootfs\u002Fetc\u002Fnvpmodel\u002Fnvpmodel_\u003Cactive-sku>.conf\n",[578],{"type":48,"tag":70,"props":579,"children":580},{"__ignoreMap":98},[581],{"type":54,"value":576},{"type":48,"tag":64,"props":583,"children":584},{},[585,587,592],{"type":54,"value":586},"It lives in ",{"type":48,"tag":133,"props":588,"children":589},{},[590],{"type":54,"value":591},"two",{"type":54,"value":593}," roots; the skill walks both:",{"type":48,"tag":323,"props":595,"children":596},{},[597,618],{"type":48,"tag":327,"props":598,"children":599},{},[600],{"type":48,"tag":331,"props":601,"children":602},{},[603,608,613],{"type":48,"tag":335,"props":604,"children":605},{},[606],{"type":54,"value":607},"Role",{"type":48,"tag":335,"props":609,"children":610},{},[611],{"type":54,"value":612},"Location",{"type":48,"tag":335,"props":614,"children":615},{},[616],{"type":54,"value":617},"Skill writes?",{"type":48,"tag":346,"props":619,"children":620},{},[621,643],{"type":48,"tag":331,"props":622,"children":623},{},[624,629,638],{"type":48,"tag":353,"props":625,"children":626},{},[627],{"type":54,"value":628},"Detection + pristine source",{"type":48,"tag":353,"props":630,"children":631},{},[632],{"type":48,"tag":70,"props":633,"children":635},{"className":634},[],[636],{"type":54,"value":637},"\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002Frootfs\u002Fetc\u002Fnvpmodel\u002F",{"type":48,"tag":353,"props":639,"children":640},{},[641],{"type":54,"value":642},"no — read-only",{"type":48,"tag":331,"props":644,"children":645},{},[646,651,660],{"type":48,"tag":353,"props":647,"children":648},{},[649],{"type":54,"value":650},"Overlay edit target + git commit",{"type":48,"tag":353,"props":652,"children":653},{},[654],{"type":48,"tag":70,"props":655,"children":657},{"className":656},[],[658],{"type":54,"value":659},"\u003Csource.root_path>\u002FLinux_for_Tegra\u002Frootfs\u002Fetc\u002Fnvpmodel\u002F",{"type":48,"tag":353,"props":661,"children":662},{},[663],{"type":54,"value":664},"yes",{"type":48,"tag":64,"props":666,"children":667},{},[668,670,675,677,682,684,689,691,697,699,705],{"type":54,"value":669},"Subsequent sections refer to ",{"type":48,"tag":133,"props":671,"children":672},{},[673],{"type":54,"value":674},"the per-board file",{"type":54,"value":676}," to mean the overlay copy\nunder ",{"type":48,"tag":70,"props":678,"children":680},{"className":679},[],[681],{"type":54,"value":503},{"type":54,"value":683},". Operations 1–4 all read, edit, and save against\nthat overlay copy. The ",{"type":48,"tag":70,"props":685,"children":687},{"className":686},[],[688],{"type":54,"value":477},{"type":54,"value":690}," copy is read once during the\n\"Resolving ",{"type":48,"tag":70,"props":692,"children":694},{"className":693},[],[695],{"type":54,"value":696},"\u003Cactive-sku>",{"type":54,"value":698},"\" detection step and once during the\n",{"type":48,"tag":311,"props":700,"children":702},{"href":701},"#overlay-edit-recipe-apply-before-any-operation",[703],{"type":54,"value":704},"Overlay edit recipe",{"type":54,"value":706},"'s\npristine-import step, then never touched again.",{"type":48,"tag":708,"props":709,"children":711},"h3",{"id":710},"resolving-active-sku-which-file-to-edit",[712,714,719],{"type":54,"value":713},"Resolving ",{"type":48,"tag":70,"props":715,"children":717},{"className":716},[],[718],{"type":54,"value":696},{"type":54,"value":720}," — which file to edit",{"type":48,"tag":64,"props":722,"children":723},{},[724,726,731,733,739],{"type":54,"value":725},"The filename is ",{"type":48,"tag":133,"props":727,"children":728},{},[729],{"type":54,"value":730},"not",{"type":54,"value":732}," always ",{"type":48,"tag":70,"props":734,"children":736},{"className":735},[],[737],{"type":54,"value":738},"module.id + \"_\" + module.sku",{"type":54,"value":740},". Variants exist:",{"type":48,"tag":107,"props":742,"children":743},{},[744,755],{"type":48,"tag":111,"props":745,"children":746},{},[747,753],{"type":48,"tag":70,"props":748,"children":750},{"className":749},[],[751],{"type":54,"value":752},"nvpmodel_p3767_0000_super.conf",{"type":54,"value":754}," (super-mode SKU variant)",{"type":48,"tag":111,"props":756,"children":757},{},[758,764,765,771],{"type":48,"tag":70,"props":759,"children":761},{"className":760},[],[762],{"type":54,"value":763},"nvpmodel_igx_orin.conf",{"type":54,"value":123},{"type":48,"tag":70,"props":766,"children":768},{"className":767},[],[769],{"type":54,"value":770},"nvpmodel_igx_orin_safety.conf",{"type":54,"value":772}," (IGX, no SKU number)",{"type":48,"tag":64,"props":774,"children":775},{},[776,778,784,786,792,794,800,802,807,809,814],{"type":54,"value":777},"At boot, ",{"type":48,"tag":70,"props":779,"children":781},{"className":780},[],[782],{"type":54,"value":783},"nvpower.sh",{"type":54,"value":785}," (at ",{"type":48,"tag":70,"props":787,"children":789},{"className":788},[],[790],{"type":54,"value":791},"Linux_for_Tegra\u002Frootfs\u002Fetc\u002Fsystemd\u002Fnvpower.sh",{"type":54,"value":793},") reads the kernel DTB's root ",{"type":48,"tag":70,"props":795,"children":797},{"className":796},[],[798],{"type":54,"value":799},"compatible",{"type":54,"value":801}," string and maps it — plus super\u002Fsafety state — to the nvpmodel filename. Replicate that mapping ",{"type":48,"tag":133,"props":803,"children":804},{},[805],{"type":54,"value":806},"BSP-side",{"type":54,"value":808},", against ",{"type":48,"tag":70,"props":810,"children":812},{"className":811},[],[813],{"type":54,"value":477},{"type":54,"value":815},":",{"type":48,"tag":817,"props":818,"children":819},"ol",{},[820,839,852],{"type":48,"tag":111,"props":821,"children":822},{},[823,825,830,832,837],{"type":54,"value":824},"Resolve the SKU-correct kernel DTB under ",{"type":48,"tag":70,"props":826,"children":828},{"className":827},[],[829],{"type":54,"value":423},{"type":54,"value":831}," and read its root ",{"type":48,"tag":70,"props":833,"children":835},{"className":834},[],[836],{"type":54,"value":799},{"type":54,"value":838}," (detect kernel DTB from the active flash conf).",{"type":48,"tag":111,"props":840,"children":841},{},[842,844,850],{"type":54,"value":843},"Read ",{"type":48,"tag":70,"props":845,"children":847},{"className":846},[],[848],{"type":54,"value":849},"\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002Frootfs\u002Fetc\u002Fsystemd\u002Fnvpower.sh",{"type":54,"value":851}," to find the compatible-string → conf mapping, and apply it to the compatible from the previous step (factoring in super\u002Fsafety flags).",{"type":48,"tag":111,"props":853,"children":854},{},[855,857,863,865,870],{"type":54,"value":856},"Verify the resolved ",{"type":48,"tag":70,"props":858,"children":860},{"className":859},[],[861],{"type":54,"value":862},"nvpmodel_\u003C...>.conf",{"type":54,"value":864}," exists under ",{"type":48,"tag":70,"props":866,"children":868},{"className":867},[],[869],{"type":54,"value":637},{"type":54,"value":384},{"type":48,"tag":64,"props":872,"children":873},{},[874,876,881,883,889,891,897],{"type":54,"value":875},"Shortcut: filter ",{"type":48,"tag":70,"props":877,"children":879},{"className":878},[],[880],{"type":54,"value":637},{"type":54,"value":882}," to ",{"type":48,"tag":70,"props":884,"children":886},{"className":885},[],[887],{"type":54,"value":888},"nvpmodel_\u003Cmodule.id>_\u003Cmodule.sku>*.conf",{"type":54,"value":890},"; for super-mode flash configs pick the ",{"type":48,"tag":70,"props":892,"children":894},{"className":893},[],[895],{"type":54,"value":896},"_super",{"type":54,"value":898}," variant. Use only when unambiguous; otherwise fall back to the DTB method.",{"type":48,"tag":64,"props":900,"children":901},{},[902,904,910],{"type":54,"value":903},"Don't blindly compose ",{"type":48,"tag":70,"props":905,"children":907},{"className":906},[],[908],{"type":54,"value":909},"nvpmodel_\u003Cid>_\u003Csku>.conf",{"type":54,"value":911}," — verify the file actually exists.",{"type":48,"tag":708,"props":913,"children":915},{"id":914},"propagation-set-confs-to-keep-in-sync",[916],{"type":54,"value":917},"Propagation set — confs to keep in sync",{"type":48,"tag":64,"props":919,"children":920},{},[921,923,928],{"type":54,"value":922},"The active-SKU file is rarely the only conf that should carry a customization. After editing it, ",{"type":48,"tag":133,"props":924,"children":925},{},[926],{"type":54,"value":927},"apply the same edit to every sibling in the propagation set",{"type":54,"value":929}," so the change survives regardless of which module \u002F baseboard SKU is booted:",{"type":48,"tag":107,"props":931,"children":932},{},[933,959,984],{"type":48,"tag":111,"props":934,"children":935},{},[936,941,943,949,951,957],{"type":48,"tag":133,"props":937,"children":938},{},[939],{"type":54,"value":940},"The reference platform's nvpmodel conf",{"type":54,"value":942}," — the upstream conf the active file was forked from (resolve via ",{"type":48,"tag":70,"props":944,"children":946},{"className":945},[],[947],{"type":54,"value":948},"reference_devkit",{"type":54,"value":950}," in the active profile, or ",{"type":48,"tag":70,"props":952,"children":954},{"className":953},[],[955],{"type":54,"value":956},"jetson-derive-carrier",{"type":54,"value":958}," fork ancestry). For a BSP that contains only the reference (no derived carriers), this is the same file as the active and the rule reduces to a no-op.",{"type":48,"tag":111,"props":960,"children":961},{},[962,967,969,975,977,982],{"type":48,"tag":133,"props":963,"children":964},{},[965],{"type":54,"value":966},"Every carrier-derived nvpmodel conf",{"type":54,"value":968}," — each ",{"type":48,"tag":70,"props":970,"children":972},{"className":971},[],[973],{"type":54,"value":974},"nvpmodel_*.conf",{"type":54,"value":976}," produced by ",{"type":48,"tag":70,"props":978,"children":980},{"className":979},[],[981],{"type":54,"value":956},{"type":54,"value":983}," for a custom carrier on top of the same module SKU.",{"type":48,"tag":111,"props":985,"children":986},{},[987,997,999,1004,1006,1012,1014,1019,1021,1026],{"type":48,"tag":133,"props":988,"children":989},{},[990,995],{"type":48,"tag":70,"props":991,"children":993},{"className":992},[],[994],{"type":54,"value":896},{"type":54,"value":996}," siblings",{"type":54,"value":998}," when present (e.g. ",{"type":48,"tag":70,"props":1000,"children":1002},{"className":1001},[],[1003],{"type":54,"value":752},{"type":54,"value":1005},") — apply the structural edit (new POWER_MODEL block, removed block, ",{"type":48,"tag":70,"props":1007,"children":1009},{"className":1008},[],[1010],{"type":54,"value":1011},"PM_CONFIG DEFAULT=",{"type":54,"value":1013}," flip, NAME rename) ",{"type":48,"tag":133,"props":1015,"children":1016},{},[1017],{"type":54,"value":1018},"but preserve the super conf's higher MAX_FREQ \u002F MIN_FREQ caps",{"type":54,"value":1020},". Those elevated caps are the whole reason the ",{"type":48,"tag":70,"props":1022,"children":1024},{"className":1023},[],[1025],{"type":54,"value":896},{"type":54,"value":1027}," variant exists; a blanket content overwrite from the non-super file would silently flatten the super envelope.",{"type":48,"tag":64,"props":1029,"children":1030},{},[1031,1036,1038,1043,1045,1050,1052,1057],{"type":48,"tag":133,"props":1032,"children":1033},{},[1034],{"type":54,"value":1035},"\"Apply the same edit\" ≠ blanket file copy.",{"type":54,"value":1037}," Port the changed POWER_MODEL \u002F PARAM lines into each sibling; preserve every other line. Blanket-copying is safe ",{"type":48,"tag":133,"props":1039,"children":1040},{},[1041],{"type":54,"value":1042},"only",{"type":54,"value":1044}," when both confs were byte-identical before the edit. Otherwise re-validate per the Rules on each target (available-frequencies table for clock values, ID uniqueness, ",{"type":48,"tag":70,"props":1046,"children":1048},{"className":1047},[],[1049],{"type":54,"value":1011},{"type":54,"value":1051}," references a present ID) — sibling confs may carry SKU-specific ",{"type":48,"tag":70,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":54,"value":267},{"type":54,"value":1058}," tables that don't accept the active file's frequency values.",{"type":48,"tag":57,"props":1060,"children":1062},{"id":1061},"overlay-edit-recipe-apply-before-any-operation",[1063],{"type":54,"value":1064},"Overlay edit recipe (apply before any Operation)",{"type":48,"tag":64,"props":1066,"children":1067},{},[1068,1070,1076,1078,1084],{"type":54,"value":1069},"Follow the canonical\n",{"type":48,"tag":311,"props":1071,"children":1073},{"href":1072},"..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#off-skill-edits",[1074],{"type":54,"value":1075},"Off-skill edits recipe",{"type":54,"value":1077},"\nin the workflow doc — pristine import + customization commit pair, both\ngated by the preview gate. Apply once per run, covering every per-board\nfile the run touches (the active conf plus every sibling in the\n",{"type":48,"tag":311,"props":1079,"children":1081},{"href":1080},"#propagation-set--confs-to-keep-in-sync",[1082],{"type":54,"value":1083},"Propagation set",{"type":54,"value":1085},").",{"type":48,"tag":64,"props":1087,"children":1088},{},[1089],{"type":54,"value":1090},"Concrete substitutions for this skill:",{"type":48,"tag":107,"props":1092,"children":1093},{},[1094,1111,1131],{"type":48,"tag":111,"props":1095,"children":1096},{},[1097,1103,1104,1110],{"type":48,"tag":70,"props":1098,"children":1100},{"className":1099},[],[1101],{"type":54,"value":1102},"\u003Crel>\u002F\u003Cfile>",{"type":54,"value":528},{"type":48,"tag":70,"props":1105,"children":1107},{"className":1106},[],[1108],{"type":54,"value":1109},"rootfs\u002Fetc\u002Fnvpmodel\u002F\u003Cconf>",{"type":54,"value":384},{"type":48,"tag":111,"props":1112,"children":1113},{},[1114,1116,1122,1124,1130],{"type":54,"value":1115},"Suggested pristine-import message:\n",{"type":48,"tag":70,"props":1117,"children":1119},{"className":1118},[],[1120],{"type":54,"value":1121},"import pristine: \u003Ccomma-separated rel paths of imported confs>",{"type":54,"value":1123},",\nbody ",{"type":48,"tag":70,"props":1125,"children":1127},{"className":1126},[],[1128],{"type":54,"value":1129},"Source: \u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002F (BSP \u003Cbsp_image.version>)",{"type":54,"value":384},{"type":48,"tag":111,"props":1132,"children":1133},{},[1134,1136,1142,1144,1150],{"type":54,"value":1135},"Suggested customization-commit header:\n",{"type":48,"tag":70,"props":1137,"children":1139},{"className":1138},[],[1140],{"type":54,"value":1141},"jetson-customize-nvpmodel: \u003Csummary>",{"type":54,"value":1143},",\nbody lines like ",{"type":48,"tag":70,"props":1145,"children":1147},{"className":1146},[],[1148],{"type":54,"value":1149},"nvpmodel_p3767_0001.conf: PM_CONFIG DEFAULT 2 -> 0 (MAXN)",{"type":54,"value":384},{"type":48,"tag":57,"props":1152,"children":1154},{"id":1153},"instructions",[1155],{"type":54,"value":1156},"Instructions",{"type":48,"tag":64,"props":1158,"children":1159},{},[1160,1162,1166],{"type":54,"value":1161},"Pick the operation that matches the user's intent and follow the\nmatching subsection. All write-side operations (1–4) must first\napply the ",{"type":48,"tag":311,"props":1163,"children":1164},{"href":701},[1165],{"type":54,"value":704},{"type":54,"value":384},{"type":48,"tag":107,"props":1168,"children":1169},{},[1170,1175,1180,1185,1196],{"type":48,"tag":111,"props":1171,"children":1172},{},[1173],{"type":54,"value":1174},"Operation 1 — Add a new power mode (drives the NVIDIA Power Estimator).",{"type":48,"tag":111,"props":1176,"children":1177},{},[1178],{"type":54,"value":1179},"Operation 2 — Remove a power mode.",{"type":48,"tag":111,"props":1181,"children":1182},{},[1183],{"type":54,"value":1184},"Operation 3 — Edit an existing power mode (clamps, core-online, NAME).",{"type":48,"tag":111,"props":1186,"children":1187},{},[1188,1190,1195],{"type":54,"value":1189},"Operation 4 — Change the boot default (",{"type":48,"tag":70,"props":1191,"children":1193},{"className":1192},[],[1194],{"type":54,"value":1011},{"type":54,"value":1085},{"type":48,"tag":111,"props":1197,"children":1198},{},[1199],{"type":54,"value":1200},"Operation 5 — List defined power modes (read-only).",{"type":48,"tag":64,"props":1202,"children":1203},{},[1204,1206,1212],{"type":54,"value":1205},"After any write-side operation, run the Deploy chain (",{"type":48,"tag":70,"props":1207,"children":1209},{"className":1208},[],[1210],{"type":54,"value":1211},"## Deploy",{"type":54,"value":1213},")\nto land the change on the device.",{"type":48,"tag":57,"props":1215,"children":1217},{"id":1216},"examples",[1218],{"type":54,"value":1219},"Examples",{"type":48,"tag":64,"props":1221,"children":1222},{},[1223],{"type":54,"value":1224},"Add a new 30 W power mode from a Power Estimator export and pin it\nas the boot default on a P3767-0001 target:",{"type":48,"tag":90,"props":1226,"children":1229},{"className":1227,"code":1228,"language":54},[93],"\u002Fjetson-customize-nvpmodel\n> add a new POWER_MODEL from ~\u002FDownloads\u002Fnvpmodel_30W.conf as ID 8 NAME \"30W_CUSTOM\"\n> set PM_CONFIG DEFAULT to 8\n",[1230],{"type":48,"tag":70,"props":1231,"children":1232},{"__ignoreMap":98},[1233],{"type":54,"value":1228},{"type":48,"tag":64,"props":1235,"children":1236},{},[1237],{"type":54,"value":1238},"Cap a Thor target to the MAXN power envelope by flipping the boot\ndefault (no envelope tuning needed):",{"type":48,"tag":90,"props":1240,"children":1243},{"className":1241,"code":1242,"language":54},[93],"\u002Fjetson-customize-nvpmodel\n> set PM_CONFIG DEFAULT to the MAXN profile's ID\n",[1244],{"type":48,"tag":70,"props":1245,"children":1246},{"__ignoreMap":98},[1247],{"type":54,"value":1242},{"type":48,"tag":64,"props":1249,"children":1250},{},[1251],{"type":54,"value":1252},"List which power modes the active SKU currently defines and which\nis the boot default:",{"type":48,"tag":90,"props":1254,"children":1257},{"className":1255,"code":1256,"language":54},[93],"\u002Fjetson-customize-nvpmodel\n> list defined power modes\n",[1258],{"type":48,"tag":70,"props":1259,"children":1260},{"__ignoreMap":98},[1261],{"type":54,"value":1256},{"type":48,"tag":57,"props":1263,"children":1265},{"id":1264},"operation-1-add-a-new-power-mode",[1266],{"type":54,"value":1267},"Operation 1 — Add a new power mode",{"type":48,"tag":64,"props":1269,"children":1270},{},[1271,1273,1277],{"type":54,"value":1272},"Apply the ",{"type":48,"tag":311,"props":1274,"children":1275},{"href":701},[1276],{"type":54,"value":704},{"type":54,"value":1278}," first.",{"type":48,"tag":708,"props":1280,"children":1282},{"id":1281},"generate-the-profile-via-the-power-estimator",[1283],{"type":54,"value":1284},"Generate the profile via the Power Estimator",{"type":48,"tag":64,"props":1286,"children":1287},{},[1288],{"type":48,"tag":133,"props":1289,"children":1290},{},[1291],{"type":54,"value":1292},"Must not interpolate or extrapolate frequencies from existing profiles to estimate power.",{"type":48,"tag":64,"props":1294,"children":1295},{},[1296,1298,1303,1305],{"type":54,"value":1297},"For any non-stock power envelope (custom budget, custom workload), use the ",{"type":48,"tag":133,"props":1299,"children":1300},{},[1301],{"type":54,"value":1302},"NVIDIA Power Estimator",{"type":54,"value":1304},": ",{"type":48,"tag":70,"props":1306,"children":1308},{"className":1307},[],[1309],{"type":54,"value":1310},"https:\u002F\u002Fjetson-tools.nvidia.com\u002Fpowerestimator\u002F",{"type":48,"tag":107,"props":1312,"children":1313},{},[1314,1319,1324,1329,1341],{"type":48,"tag":111,"props":1315,"children":1316},{},[1317],{"type":54,"value":1318},"Pick the exact module SKU and JetPack release.",{"type":48,"tag":111,"props":1320,"children":1321},{},[1322],{"type":54,"value":1323},"Enter workload (CPU cores, GPU usage, EMC, codecs, camera, display).",{"type":48,"tag":111,"props":1325,"children":1326},{},[1327],{"type":54,"value":1328},"Estimate power budget.",{"type":48,"tag":111,"props":1330,"children":1331},{},[1332,1334,1340],{"type":54,"value":1333},"Download custom ",{"type":48,"tag":70,"props":1335,"children":1337},{"className":1336},[],[1338],{"type":54,"value":1339},"nvpmodel.conf",{"type":54,"value":384},{"type":48,"tag":111,"props":1342,"children":1343},{},[1344,1346,1351],{"type":54,"value":1345},"Share the downloaded ",{"type":48,"tag":70,"props":1347,"children":1349},{"className":1348},[],[1350],{"type":54,"value":1339},{"type":54,"value":1352}," file path.",{"type":48,"tag":708,"props":1354,"children":1356},{"id":1355},"append-the-power_model-block",[1357],{"type":54,"value":1358},"Append the POWER_MODEL block",{"type":48,"tag":64,"props":1360,"children":1361},{},[1362,1364,1369,1371,1377,1379,1384,1386,1392,1394,1399],{"type":54,"value":1363},"In the per-board file, insert the new block ",{"type":48,"tag":133,"props":1365,"children":1366},{},[1367],{"type":54,"value":1368},"after",{"type":54,"value":1370}," the last ",{"type":48,"tag":70,"props":1372,"children":1374},{"className":1373},[],[1375],{"type":54,"value":1376},"\u003C PARAM … >",{"type":54,"value":1378}," declaration (POWER_MODEL must reference declared PARAMs) and ",{"type":48,"tag":133,"props":1380,"children":1381},{},[1382],{"type":54,"value":1383},"before",{"type":54,"value":1385}," the final ",{"type":48,"tag":70,"props":1387,"children":1389},{"className":1388},[],[1390],{"type":54,"value":1391},"\u003C PM_CONFIG ... >",{"type":54,"value":1393}," line. The block structure is the ",{"type":48,"tag":133,"props":1395,"children":1396},{},[1397],{"type":54,"value":1398},"File format",{"type":54,"value":1400}," shown above; frequency values come from the Power Estimator output (see \"Generate the profile via the Power Estimator\").",{"type":48,"tag":64,"props":1402,"children":1403},{},[1404,1406,1412,1414,1420,1422,1428,1430,1436,1438,1443],{"type":54,"value":1405},"Check ",{"type":48,"tag":70,"props":1407,"children":1409},{"className":1408},[],[1410],{"type":54,"value":1411},"ID",{"type":54,"value":1413}," is unique; ",{"type":48,"tag":70,"props":1415,"children":1417},{"className":1416},[],[1418],{"type":54,"value":1419},"NAME",{"type":54,"value":1421}," should be uppercase, no whitespace. Each numeric ",{"type":48,"tag":70,"props":1423,"children":1425},{"className":1424},[],[1426],{"type":54,"value":1427},"MAX_FREQ",{"type":54,"value":1429}," \u002F ",{"type":48,"tag":70,"props":1431,"children":1433},{"className":1432},[],[1434],{"type":54,"value":1435},"MIN_FREQ",{"type":54,"value":1437}," value must satisfy the ",{"type":48,"tag":70,"props":1439,"children":1441},{"className":1440},[],[1442],{"type":54,"value":267},{"type":54,"value":1444}," rule (see Rules). If you intend this mode to be the boot default, follow Operation 4.",{"type":48,"tag":57,"props":1446,"children":1448},{"id":1447},"operation-2-remove-a-power-mode",[1449],{"type":54,"value":1450},"Operation 2 — Remove a power mode",{"type":48,"tag":64,"props":1452,"children":1453},{},[1454,1455,1459],{"type":54,"value":1272},{"type":48,"tag":311,"props":1456,"children":1457},{"href":701},[1458],{"type":54,"value":704},{"type":54,"value":1278},{"type":48,"tag":817,"props":1461,"children":1462},{},[1463,1490,1519],{"type":48,"tag":111,"props":1464,"children":1465},{},[1466,1468,1474,1476,1482,1483,1488],{"type":54,"value":1467},"In the per-board file, delete the entire ",{"type":48,"tag":70,"props":1469,"children":1471},{"className":1470},[],[1472],{"type":54,"value":1473},"\u003C POWER_MODEL ID=\u003Cn> NAME=... >",{"type":54,"value":1475}," block including all its parameter lines, up to (but not including) the next ",{"type":48,"tag":70,"props":1477,"children":1479},{"className":1478},[],[1480],{"type":54,"value":1481},"\u003C POWER_MODEL ... >",{"type":54,"value":376},{"type":48,"tag":70,"props":1484,"children":1486},{"className":1485},[],[1487],{"type":54,"value":1391},{"type":54,"value":1489}," marker.",{"type":48,"tag":111,"props":1491,"children":1492},{},[1493,1495,1501,1503,1509,1511,1517],{"type":54,"value":1494},"If the deleted ID matches the current ",{"type":48,"tag":70,"props":1496,"children":1498},{"className":1497},[],[1499],{"type":54,"value":1500},"DEFAULT=\u003Cid>",{"type":54,"value":1502}," value in the trailing ",{"type":48,"tag":70,"props":1504,"children":1506},{"className":1505},[],[1507],{"type":54,"value":1508},"\u003C PM_CONFIG … >",{"type":54,"value":1510}," line, point ",{"type":48,"tag":70,"props":1512,"children":1514},{"className":1513},[],[1515],{"type":54,"value":1516},"DEFAULT=",{"type":54,"value":1518}," at a remaining ID — otherwise nvpmodel will fail to apply a default at boot.",{"type":48,"tag":111,"props":1520,"children":1521},{},[1522,1524],{"type":54,"value":1523},"Search for hard-coded references in the rootfs scripts before declaring the change safe:\n",{"type":48,"tag":90,"props":1525,"children":1529},{"className":1526,"code":1527,"language":1528,"meta":98,"style":98},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","grep -rn \"nvpmodel -m\" \\\n  Linux_for_Tegra\u002Frootfs\u002Fetc \\\n  Linux_for_Tegra\u002Frootfs\u002Fopt 2>\u002Fdev\u002Fnull\n","bash",[1530],{"type":48,"tag":70,"props":1531,"children":1532},{"__ignoreMap":98},[1533,1573,1586],{"type":48,"tag":1534,"props":1535,"children":1538},"span",{"class":1536,"line":1537},"line",1,[1539,1545,1551,1557,1562,1567],{"type":48,"tag":1534,"props":1540,"children":1542},{"style":1541},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1543],{"type":54,"value":1544},"grep",{"type":48,"tag":1534,"props":1546,"children":1548},{"style":1547},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1549],{"type":54,"value":1550}," -rn",{"type":48,"tag":1534,"props":1552,"children":1554},{"style":1553},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1555],{"type":54,"value":1556}," \"",{"type":48,"tag":1534,"props":1558,"children":1559},{"style":1547},[1560],{"type":54,"value":1561},"nvpmodel -m",{"type":48,"tag":1534,"props":1563,"children":1564},{"style":1553},[1565],{"type":54,"value":1566},"\"",{"type":48,"tag":1534,"props":1568,"children":1570},{"style":1569},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1571],{"type":54,"value":1572}," \\\n",{"type":48,"tag":1534,"props":1574,"children":1576},{"class":1536,"line":1575},2,[1577,1582],{"type":48,"tag":1534,"props":1578,"children":1579},{"style":1547},[1580],{"type":54,"value":1581},"  Linux_for_Tegra\u002Frootfs\u002Fetc",{"type":48,"tag":1534,"props":1583,"children":1584},{"style":1569},[1585],{"type":54,"value":1572},{"type":48,"tag":1534,"props":1587,"children":1589},{"class":1536,"line":1588},3,[1590,1595,1600],{"type":48,"tag":1534,"props":1591,"children":1592},{"style":1547},[1593],{"type":54,"value":1594},"  Linux_for_Tegra\u002Frootfs\u002Fopt",{"type":48,"tag":1534,"props":1596,"children":1597},{"style":1553},[1598],{"type":54,"value":1599}," 2>",{"type":48,"tag":1534,"props":1601,"children":1602},{"style":1547},[1603],{"type":54,"value":1604},"\u002Fdev\u002Fnull\n",{"type":48,"tag":64,"props":1606,"children":1607},{},[1608],{"type":54,"value":1609},"ID gaps are legal — you don't have to renumber remaining modes.",{"type":48,"tag":57,"props":1611,"children":1613},{"id":1612},"operation-3-edit-an-existing-power-mode",[1614],{"type":54,"value":1615},"Operation 3 — Edit an existing power mode",{"type":48,"tag":64,"props":1617,"children":1618},{},[1619,1620,1624],{"type":54,"value":1272},{"type":48,"tag":311,"props":1621,"children":1622},{"href":701},[1623],{"type":54,"value":704},{"type":54,"value":1278},{"type":48,"tag":817,"props":1626,"children":1627},{},[1628,1649,1678],{"type":48,"tag":111,"props":1629,"children":1630},{},[1631,1633,1639,1641,1647],{"type":54,"value":1632},"In the per-board file, edit the parameter lines inside the block. Keep ",{"type":48,"tag":70,"props":1634,"children":1636},{"className":1635},[],[1637],{"type":54,"value":1638},"\u003Cparam>",{"type":54,"value":1640}," and ",{"type":48,"tag":70,"props":1642,"children":1644},{"className":1643},[],[1645],{"type":54,"value":1646},"\u003Carg>",{"type":54,"value":1648}," names exactly matching the PARAM declarations.",{"type":48,"tag":111,"props":1650,"children":1651},{},[1652,1657,1659,1664,1665,1670,1672,1676],{"type":48,"tag":133,"props":1653,"children":1654},{},[1655],{"type":54,"value":1656},"If the edit changes the power envelope",{"type":54,"value":1658}," (any CPU\u002FGPU\u002FEMC\u002FPVA\u002FDLA ",{"type":48,"tag":70,"props":1660,"children":1662},{"className":1661},[],[1663],{"type":54,"value":1427},{"type":54,"value":1429},{"type":48,"tag":70,"props":1666,"children":1668},{"className":1667},[],[1669],{"type":54,"value":1435},{"type":54,"value":1671},", core-online count for a freq-bound mode, or TPC mask), re-run the ",{"type":48,"tag":133,"props":1673,"children":1674},{},[1675],{"type":54,"value":1302},{"type":54,"value":1677}," (see \"Generate the profile via the Power Estimator\") to ground the new frequencies in a real per-component model. Do not interpolate from neighboring modes.",{"type":48,"tag":111,"props":1679,"children":1680},{},[1681,1683,1688],{"type":54,"value":1682},"Validate clock values per the ",{"type":48,"tag":70,"props":1684,"children":1686},{"className":1685},[],[1687],{"type":54,"value":267},{"type":54,"value":1689}," rule (see Rules).",{"type":48,"tag":64,"props":1691,"children":1692},{},[1693,1695,1701],{"type":54,"value":1694},"Edits that only toggle core-online flags within an already-validated envelope, or only change ",{"type":48,"tag":70,"props":1696,"children":1698},{"className":1697},[],[1699],{"type":54,"value":1700},"NAME=",{"type":54,"value":1702},", don't need the Power Estimator pass.",{"type":48,"tag":57,"props":1704,"children":1706},{"id":1705},"operation-4-change-the-boot-default",[1707],{"type":54,"value":1708},"Operation 4 — Change the boot default",{"type":48,"tag":64,"props":1710,"children":1711},{},[1712,1713,1717],{"type":54,"value":1272},{"type":48,"tag":311,"props":1714,"children":1715},{"href":701},[1716],{"type":54,"value":704},{"type":54,"value":1278},{"type":48,"tag":64,"props":1719,"children":1720},{},[1721,1723,1729],{"type":54,"value":1722},"Edit the ",{"type":48,"tag":70,"props":1724,"children":1726},{"className":1725},[],[1727],{"type":54,"value":1728},"\u003C PM_CONFIG DEFAULT=\u003Cid> >",{"type":54,"value":1730}," line at the bottom of the per-board file.",{"type":48,"tag":64,"props":1732,"children":1733},{},[1734,1740,1742,1748],{"type":48,"tag":70,"props":1735,"children":1737},{"className":1736},[],[1738],{"type":54,"value":1739},"\u003Cid>",{"type":54,"value":1741}," must reference an existing ",{"type":48,"tag":70,"props":1743,"children":1745},{"className":1744},[],[1746],{"type":54,"value":1747},"\u003C POWER_MODEL ID=\u003Cid> … >",{"type":54,"value":1749}," block in the same file. Pointing at an undefined ID makes nvpmodel fail to apply at boot.",{"type":48,"tag":57,"props":1751,"children":1753},{"id":1752},"operation-5-list-defined-power-modes",[1754],{"type":54,"value":1755},"Operation 5 — List defined power modes",{"type":48,"tag":64,"props":1757,"children":1758},{},[1759,1761,1767,1769,1775],{"type":54,"value":1760},"This is a read-only operation; no overlay-tracker setup is needed. Run\nagainst whichever copy you want to inspect (",{"type":48,"tag":70,"props":1762,"children":1764},{"className":1763},[],[1765],{"type":54,"value":1766},"\u003Cbsp_image.root_path>\u002F...",{"type":54,"value":1768},"\nfor the pristine state, ",{"type":48,"tag":70,"props":1770,"children":1772},{"className":1771},[],[1773],{"type":54,"value":1774},"\u003Csource.root_path>\u002F...",{"type":54,"value":1776}," for the post-edit state):",{"type":48,"tag":90,"props":1778,"children":1780},{"className":1526,"code":1779,"language":1528,"meta":98,"style":98},"grep -E '^\u003C POWER_MODEL ' \u003Cper-board file>\ngrep -E '^\u003C PM_CONFIG '   \u003Cper-board file>\n",[1781],{"type":48,"tag":70,"props":1782,"children":1783},{"__ignoreMap":98},[1784,1836],{"type":48,"tag":1534,"props":1785,"children":1786},{"class":1536,"line":1537},[1787,1791,1796,1801,1806,1811,1816,1821,1826,1831],{"type":48,"tag":1534,"props":1788,"children":1789},{"style":1541},[1790],{"type":54,"value":1544},{"type":48,"tag":1534,"props":1792,"children":1793},{"style":1547},[1794],{"type":54,"value":1795}," -E",{"type":48,"tag":1534,"props":1797,"children":1798},{"style":1553},[1799],{"type":54,"value":1800}," '",{"type":48,"tag":1534,"props":1802,"children":1803},{"style":1547},[1804],{"type":54,"value":1805},"^\u003C POWER_MODEL ",{"type":48,"tag":1534,"props":1807,"children":1808},{"style":1553},[1809],{"type":54,"value":1810},"'",{"type":48,"tag":1534,"props":1812,"children":1813},{"style":1553},[1814],{"type":54,"value":1815}," \u003C",{"type":48,"tag":1534,"props":1817,"children":1818},{"style":1547},[1819],{"type":54,"value":1820},"per-board",{"type":48,"tag":1534,"props":1822,"children":1823},{"style":1547},[1824],{"type":54,"value":1825}," fil",{"type":48,"tag":1534,"props":1827,"children":1828},{"style":1569},[1829],{"type":54,"value":1830},"e",{"type":48,"tag":1534,"props":1832,"children":1833},{"style":1553},[1834],{"type":54,"value":1835},">\n",{"type":48,"tag":1534,"props":1837,"children":1838},{"class":1536,"line":1575},[1839,1843,1847,1851,1856,1860,1865,1869,1873,1877],{"type":48,"tag":1534,"props":1840,"children":1841},{"style":1541},[1842],{"type":54,"value":1544},{"type":48,"tag":1534,"props":1844,"children":1845},{"style":1547},[1846],{"type":54,"value":1795},{"type":48,"tag":1534,"props":1848,"children":1849},{"style":1553},[1850],{"type":54,"value":1800},{"type":48,"tag":1534,"props":1852,"children":1853},{"style":1547},[1854],{"type":54,"value":1855},"^\u003C PM_CONFIG ",{"type":48,"tag":1534,"props":1857,"children":1858},{"style":1553},[1859],{"type":54,"value":1810},{"type":48,"tag":1534,"props":1861,"children":1862},{"style":1553},[1863],{"type":54,"value":1864},"   \u003C",{"type":48,"tag":1534,"props":1866,"children":1867},{"style":1547},[1868],{"type":54,"value":1820},{"type":48,"tag":1534,"props":1870,"children":1871},{"style":1547},[1872],{"type":54,"value":1825},{"type":48,"tag":1534,"props":1874,"children":1875},{"style":1569},[1876],{"type":54,"value":1830},{"type":48,"tag":1534,"props":1878,"children":1879},{"style":1553},[1880],{"type":54,"value":1835},{"type":48,"tag":64,"props":1882,"children":1883},{},[1884,1886,1891,1893,1898,1900,1906,1908,1914],{"type":54,"value":1885},"The first command prints every ",{"type":48,"tag":70,"props":1887,"children":1889},{"className":1888},[],[1890],{"type":54,"value":1411},{"type":54,"value":1892},"\u002F",{"type":48,"tag":70,"props":1894,"children":1896},{"className":1895},[],[1897],{"type":54,"value":1419},{"type":54,"value":1899},"; the second prints the current boot default. On a running target, ",{"type":48,"tag":70,"props":1901,"children":1903},{"className":1902},[],[1904],{"type":54,"value":1905},"nvpmodel -p --verbose",{"type":54,"value":1907}," (or ",{"type":48,"tag":70,"props":1909,"children":1911},{"className":1910},[],[1912],{"type":54,"value":1913},"nvpmodel -q",{"type":54,"value":1915},") is authoritative.",{"type":48,"tag":57,"props":1917,"children":1919},{"id":1918},"limitations",[1920],{"type":54,"value":1921},"Limitations",{"type":48,"tag":107,"props":1923,"children":1924},{},[1925,1951,1991,2002,2028,2068],{"type":48,"tag":111,"props":1926,"children":1927},{},[1928,1930,1935,1937,1943,1945,1950],{"type":54,"value":1929},"BSP-side scope only — this skill never invokes ",{"type":48,"tag":70,"props":1931,"children":1933},{"className":1932},[],[1934],{"type":54,"value":1561},{"type":54,"value":1936}," on a\nrunning target. Live mode switching requires reboot via Deploy,\nor the side-channel ",{"type":48,"tag":70,"props":1938,"children":1940},{"className":1939},[],[1941],{"type":54,"value":1942},"scp + nvpmodel -m",{"type":54,"value":1944}," flow described in ",{"type":48,"tag":70,"props":1946,"children":1948},{"className":1947},[],[1949],{"type":54,"value":1211},{"type":54,"value":384},{"type":48,"tag":111,"props":1952,"children":1953},{},[1954,1956,1961,1963,1968,1970,1975,1977,1982,1984,1989],{"type":54,"value":1955},"Edits land in the overlay copy under ",{"type":48,"tag":70,"props":1957,"children":1959},{"className":1958},[],[1960],{"type":54,"value":503},{"type":54,"value":1962}," only;\nthe ",{"type":48,"tag":70,"props":1964,"children":1966},{"className":1965},[],[1967],{"type":54,"value":477},{"type":54,"value":1969}," copy is read-only and is rewritten by\n",{"type":48,"tag":70,"props":1971,"children":1973},{"className":1972},[],[1974],{"type":54,"value":559},{"type":54,"value":1976},". Hand-editing ",{"type":48,"tag":70,"props":1978,"children":1980},{"className":1979},[],[1981],{"type":54,"value":75},{"type":54,"value":1983}," is silently lost\non the next ",{"type":48,"tag":70,"props":1985,"children":1987},{"className":1986},[],[1988],{"type":54,"value":410},{"type":54,"value":1990}," re-extract.",{"type":48,"tag":111,"props":1992,"children":1993},{},[1994,1995,2000],{"type":54,"value":261},{"type":48,"tag":70,"props":1996,"children":1998},{"className":1997},[],[1999],{"type":54,"value":267},{"type":54,"value":2001},"\ntable for the relevant clock — values outside the table get\nsilently rounded. This skill does not validate against a live\ntarget's table; trust the per-board file's existing values and\nPower Estimator output.",{"type":48,"tag":111,"props":2003,"children":2004},{},[2005,2007,2012,2014,2019,2021,2026],{"type":54,"value":2006},"Non-trivial envelope edits (any CPU\u002FGPU\u002FEMC\u002FPVA\u002FDLA ",{"type":48,"tag":70,"props":2008,"children":2010},{"className":2009},[],[2011],{"type":54,"value":1427},{"type":54,"value":2013}," \u002F\n",{"type":48,"tag":70,"props":2015,"children":2017},{"className":2016},[],[2018],{"type":54,"value":1435},{"type":54,"value":2020}," change) require the NVIDIA Power Estimator\n(",{"type":48,"tag":70,"props":2022,"children":2024},{"className":2023},[],[2025],{"type":54,"value":1310},{"type":54,"value":2027},") — interpolation\nor extrapolation between existing modes is not supported.",{"type":48,"tag":111,"props":2029,"children":2030},{},[2031,2033,2039,2040,2046,2048,2053,2055,2060,2061,2066],{"type":54,"value":2032},"Propagation across siblings is partial by design: only the changed\n",{"type":48,"tag":70,"props":2034,"children":2036},{"className":2035},[],[2037],{"type":54,"value":2038},"POWER_MODEL",{"type":54,"value":1429},{"type":48,"tag":70,"props":2041,"children":2043},{"className":2042},[],[2044],{"type":54,"value":2045},"PARAM",{"type":54,"value":2047}," lines are ported, never a blanket file\noverwrite, since ",{"type":48,"tag":70,"props":2049,"children":2051},{"className":2050},[],[2052],{"type":54,"value":896},{"type":54,"value":2054}," siblings carry elevated ",{"type":48,"tag":70,"props":2056,"children":2058},{"className":2057},[],[2059],{"type":54,"value":1427},{"type":54,"value":1892},{"type":48,"tag":70,"props":2062,"children":2064},{"className":2063},[],[2065],{"type":54,"value":1435},{"type":54,"value":2067},"\ncaps that must stay intact.",{"type":48,"tag":111,"props":2069,"children":2070},{},[2071,2073,2078],{"type":54,"value":2072},"PARAM names are chip-family-specific (e.g. ",{"type":48,"tag":70,"props":2074,"children":2076},{"className":2075},[],[2077],{"type":54,"value":296},{"type":54,"value":2079}," on T234,\ndifferent on T264). Copy verbatim from existing POWER_MODEL blocks;\ninvented names silently fail to apply.",{"type":48,"tag":57,"props":2081,"children":2083},{"id":2082},"troubleshooting",[2084],{"type":54,"value":2085},"Troubleshooting",{"type":48,"tag":323,"props":2087,"children":2088},{},[2089,2110],{"type":48,"tag":327,"props":2090,"children":2091},{},[2092],{"type":48,"tag":331,"props":2093,"children":2094},{},[2095,2100,2105],{"type":48,"tag":335,"props":2096,"children":2097},{},[2098],{"type":54,"value":2099},"Error",{"type":48,"tag":335,"props":2101,"children":2102},{},[2103],{"type":54,"value":2104},"Cause",{"type":48,"tag":335,"props":2106,"children":2107},{},[2108],{"type":54,"value":2109},"Solution",{"type":48,"tag":346,"props":2111,"children":2112},{},[2113,2152,2184,2234,2271,2301,2346,2399],{"type":48,"tag":331,"props":2114,"children":2115},{},[2116,2121,2132],{"type":48,"tag":353,"props":2117,"children":2118},{},[2119],{"type":54,"value":2120},"nvpmodel fails to apply default at boot",{"type":48,"tag":353,"props":2122,"children":2123},{},[2124,2130],{"type":48,"tag":70,"props":2125,"children":2127},{"className":2126},[],[2128],{"type":54,"value":2129},"PM_CONFIG DEFAULT=\u003Cid>",{"type":54,"value":2131}," references a deleted or missing POWER_MODEL ID",{"type":48,"tag":353,"props":2133,"children":2134},{},[2135,2137,2142,2144,2150],{"type":54,"value":2136},"Point ",{"type":48,"tag":70,"props":2138,"children":2140},{"className":2139},[],[2141],{"type":54,"value":1516},{"type":54,"value":2143}," at an existing ",{"type":48,"tag":70,"props":2145,"children":2147},{"className":2146},[],[2148],{"type":54,"value":2149},"\u003C POWER_MODEL ID=\u003Cn> ... >",{"type":54,"value":2151}," in the same file.",{"type":48,"tag":331,"props":2153,"children":2154},{},[2155,2160,2172],{"type":48,"tag":353,"props":2156,"children":2157},{},[2158],{"type":54,"value":2159},"Frequency value silently doesn't take effect",{"type":48,"tag":353,"props":2161,"children":2162},{},[2163,2165,2170],{"type":54,"value":2164},"Value not in the kernel's ",{"type":48,"tag":70,"props":2166,"children":2168},{"className":2167},[],[2169],{"type":54,"value":267},{"type":54,"value":2171}," table for that clock",{"type":48,"tag":353,"props":2173,"children":2174},{},[2175,2177,2182],{"type":54,"value":2176},"Replace with the nearest legal value from the running target's ",{"type":48,"tag":70,"props":2178,"children":2180},{"className":2179},[],[2181],{"type":54,"value":267},{"type":54,"value":2183}," (or Power Estimator output).",{"type":48,"tag":331,"props":2185,"children":2186},{},[2187,2198,2222],{"type":48,"tag":353,"props":2188,"children":2189},{},[2190,2196],{"type":48,"tag":70,"props":2191,"children":2193},{"className":2192},[],[2194],{"type":54,"value":2195},"MAX_FREQ -1",{"type":54,"value":2197}," does nothing",{"type":48,"tag":353,"props":2199,"children":2200},{},[2201,2206,2208,2213,2215,2220],{"type":48,"tag":70,"props":2202,"children":2204},{"className":2203},[],[2205],{"type":54,"value":202},{"type":54,"value":2207}," on a ",{"type":48,"tag":70,"props":2209,"children":2211},{"className":2210},[],[2212],{"type":54,"value":121},{"type":54,"value":2214}," PARAM (only valid for ",{"type":48,"tag":70,"props":2216,"children":2218},{"className":2217},[],[2219],{"type":54,"value":178},{"type":54,"value":2221},")",{"type":48,"tag":353,"props":2223,"children":2224},{},[2225,2227,2232],{"type":54,"value":2226},"Use ",{"type":48,"tag":70,"props":2228,"children":2230},{"className":2229},[],[2231],{"type":54,"value":202},{"type":54,"value":2233}," only on CLOCK params; for FILE params, write the actual string the sysfs node expects.",{"type":48,"tag":331,"props":2235,"children":2236},{},[2237,2242,2252],{"type":48,"tag":353,"props":2238,"children":2239},{},[2240],{"type":54,"value":2241},"Module dies \u002F fails to boot after edit",{"type":48,"tag":353,"props":2243,"children":2244},{},[2245,2250],{"type":48,"tag":70,"props":2246,"children":2248},{"className":2247},[],[2249],{"type":54,"value":278},{"type":54,"value":2251}," was offlined, or the mode dropped below the platform's minimum quiescent envelope",{"type":48,"tag":353,"props":2253,"children":2254},{},[2255,2257,2262,2264,2269],{"type":54,"value":2256},"Keep ",{"type":48,"tag":70,"props":2258,"children":2260},{"className":2259},[],[2261],{"type":54,"value":278},{"type":54,"value":2263}," online; floor ",{"type":48,"tag":70,"props":2265,"children":2267},{"className":2266},[],[2268],{"type":54,"value":1435},{"type":54,"value":2270}," per the Power Estimator's lowest-power profile for the SKU.",{"type":48,"tag":331,"props":2272,"children":2273},{},[2274,2285,2290],{"type":48,"tag":353,"props":2275,"children":2276},{},[2277,2283],{"type":48,"tag":70,"props":2278,"children":2280},{"className":2279},[],[2281],{"type":54,"value":2282},"nvpmodel -m \u003Cid>",{"type":54,"value":2284}," returns \"ID not found\" at runtime",{"type":48,"tag":353,"props":2286,"children":2287},{},[2288],{"type":54,"value":2289},"Mode ID was removed or renumbered but a rootfs script still references the old ID",{"type":48,"tag":353,"props":2291,"children":2292},{},[2293,2299],{"type":48,"tag":70,"props":2294,"children":2296},{"className":2295},[],[2297],{"type":54,"value":2298},"grep -rn 'nvpmodel -m' rootfs\u002Fetc rootfs\u002Fopt",{"type":54,"value":2300}," and update \u002F remove the stale references.",{"type":48,"tag":331,"props":2302,"children":2303},{},[2304,2316,2335],{"type":48,"tag":353,"props":2305,"children":2306},{},[2307,2309,2314],{"type":54,"value":2308},"Change vanished after ",{"type":48,"tag":70,"props":2310,"children":2312},{"className":2311},[],[2313],{"type":54,"value":410},{"type":54,"value":2315}," re-extract",{"type":48,"tag":353,"props":2317,"children":2318},{},[2319,2321,2326,2328,2333],{"type":54,"value":2320},"Edit landed in ",{"type":48,"tag":70,"props":2322,"children":2324},{"className":2323},[],[2325],{"type":54,"value":477},{"type":54,"value":2327}," instead of ",{"type":48,"tag":70,"props":2329,"children":2331},{"className":2330},[],[2332],{"type":54,"value":503},{"type":54,"value":2334}," overlay",{"type":48,"tag":353,"props":2336,"children":2337},{},[2338,2340,2344],{"type":54,"value":2339},"Re-apply via the ",{"type":48,"tag":311,"props":2341,"children":2342},{"href":701},[2343],{"type":54,"value":704},{"type":54,"value":2345}," so the change is committed in the overlay tracker.",{"type":48,"tag":331,"props":2347,"children":2348},{},[2349,2359,2382],{"type":48,"tag":353,"props":2350,"children":2351},{},[2352,2357],{"type":48,"tag":70,"props":2353,"children":2355},{"className":2354},[],[2356],{"type":54,"value":896},{"type":54,"value":2358}," sibling lost elevated caps after propagation",{"type":48,"tag":353,"props":2360,"children":2361},{},[2362,2364,2369,2371,2376,2377],{"type":54,"value":2363},"Blanket file copy clobbered ",{"type":48,"tag":70,"props":2365,"children":2367},{"className":2366},[],[2368],{"type":54,"value":896},{"type":54,"value":2370},"'s higher ",{"type":48,"tag":70,"props":2372,"children":2374},{"className":2373},[],[2375],{"type":54,"value":1427},{"type":54,"value":1892},{"type":48,"tag":70,"props":2378,"children":2380},{"className":2379},[],[2381],{"type":54,"value":1435},{"type":48,"tag":353,"props":2383,"children":2384},{},[2385,2387,2392,2394,2398],{"type":54,"value":2386},"Port only the structural change; preserve ",{"type":48,"tag":70,"props":2388,"children":2390},{"className":2389},[],[2391],{"type":54,"value":896},{"type":54,"value":2393},"'s caps per ",{"type":48,"tag":311,"props":2395,"children":2396},{"href":1080},[2397],{"type":54,"value":1083},{"type":54,"value":384},{"type":48,"tag":331,"props":2400,"children":2401},{},[2402,2407,2433],{"type":48,"tag":353,"props":2403,"children":2404},{},[2405],{"type":54,"value":2406},"Parser rejects new POWER_MODEL block",{"type":48,"tag":353,"props":2408,"children":2409},{},[2410,2412,2417,2419,2424,2426,2431],{"type":54,"value":2411},"Header ",{"type":48,"tag":70,"props":2413,"children":2415},{"className":2414},[],[2416],{"type":54,"value":222},{"type":54,"value":2418}," not at column 0, missing space after ",{"type":48,"tag":70,"props":2420,"children":2422},{"className":2421},[],[2423],{"type":54,"value":230},{"type":54,"value":2425}," or before ",{"type":48,"tag":70,"props":2427,"children":2429},{"className":2428},[],[2430],{"type":54,"value":238},{"type":54,"value":2432},", or PARAM not declared earlier",{"type":48,"tag":353,"props":2434,"children":2435},{},[2436,2438,2443,2445,2451],{"type":54,"value":2437},"Restore strict header formatting; ensure every referenced ",{"type":48,"tag":70,"props":2439,"children":2441},{"className":2440},[],[2442],{"type":54,"value":251},{"type":54,"value":2444}," appears in a ",{"type":48,"tag":70,"props":2446,"children":2448},{"className":2447},[],[2449],{"type":54,"value":2450},"\u003C PARAM ... >",{"type":54,"value":2452}," block above.",{"type":48,"tag":57,"props":2454,"children":2456},{"id":2455},"deploy",[2457],{"type":54,"value":2458},"Deploy",{"type":48,"tag":64,"props":2460,"children":2461},{},[2462],{"type":54,"value":2463},"The customization commit in the overlay tracker does not reach the device\non its own. The Deploy chain:",{"type":48,"tag":817,"props":2465,"children":2466},{},[2467,2503,2524],{"type":48,"tag":111,"props":2468,"children":2469},{},[2470,2478,2480,2485,2487,2493,2495,2501],{"type":48,"tag":133,"props":2471,"children":2472},{},[2473],{"type":48,"tag":70,"props":2474,"children":2476},{"className":2475},[],[2477],{"type":54,"value":559},{"type":54,"value":2479}," — copies every tracked file in the overlay\ninto ",{"type":48,"tag":70,"props":2481,"children":2483},{"className":2482},[],[2484],{"type":54,"value":423},{"type":54,"value":2486},". Diff-aware (skip\nbyte-identical); uses ",{"type":48,"tag":70,"props":2488,"children":2490},{"className":2489},[],[2491],{"type":54,"value":2492},"sudo cp -p",{"type":54,"value":2494}," for ",{"type":48,"tag":70,"props":2496,"children":2498},{"className":2497},[],[2499],{"type":54,"value":2500},"rootfs\u002F*",{"type":54,"value":2502}," destinations.",{"type":48,"tag":111,"props":2504,"children":2505},{},[2506,2515,2517,2522],{"type":48,"tag":133,"props":2507,"children":2508},{},[2509],{"type":48,"tag":70,"props":2510,"children":2512},{"className":2511},[],[2513],{"type":54,"value":2514},"\u002Fjetson-flash-image",{"type":54,"value":2516}," — flashes the updated ",{"type":48,"tag":70,"props":2518,"children":2520},{"className":2519},[],[2521],{"type":54,"value":75},{"type":54,"value":2523}," to the\ndevice.",{"type":48,"tag":111,"props":2525,"children":2526},{},[2527,2529,2535,2537,2543,2545,2551,2553,2558],{"type":54,"value":2528},"(Alternate, no flash) Copy ",{"type":48,"tag":70,"props":2530,"children":2532},{"className":2531},[],[2533],{"type":54,"value":2534},"\u003Csource.root_path>\u002FLinux_for_Tegra\u002Frootfs\u002Fetc\u002Fnvpmodel\u002F\u003Cconf>",{"type":54,"value":2536},"\ndirectly to the running target's ",{"type":48,"tag":70,"props":2538,"children":2540},{"className":2539},[],[2541],{"type":54,"value":2542},"\u002Fetc\u002Fnvpmodel\u002F\u003Cconf>",{"type":54,"value":2544},", then\n",{"type":48,"tag":70,"props":2546,"children":2548},{"className":2547},[],[2549],{"type":54,"value":2550},"sudo nvpmodel -m \u003Cid>",{"type":54,"value":2552}," (or reboot to pick up the new ",{"type":48,"tag":70,"props":2554,"children":2556},{"className":2555},[],[2557],{"type":54,"value":1516},{"type":54,"value":1085},{"type":48,"tag":64,"props":2560,"children":2561},{},[2562,2564,2569,2571,2576,2578,2583,2585,2590],{"type":54,"value":2563},"Editing ",{"type":48,"tag":70,"props":2565,"children":2567},{"className":2566},[],[2568],{"type":54,"value":1774},{"type":54,"value":2570}," without committing — or editing\n",{"type":48,"tag":70,"props":2572,"children":2574},{"className":2573},[],[2575],{"type":54,"value":1766},{"type":54,"value":2577}," directly — does nothing for ",{"type":48,"tag":70,"props":2579,"children":2581},{"className":2580},[],[2582],{"type":54,"value":559},{"type":54,"value":2584},"\nand is silently lost on the next ",{"type":48,"tag":70,"props":2586,"children":2588},{"className":2587},[],[2589],{"type":54,"value":410},{"type":54,"value":1990},{"type":48,"tag":2592,"props":2593,"children":2594},"style",{},[2595],{"type":54,"value":2596},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2598,"total":2700},[2599,2614,2628,2642,2654,2671,2686],{"slug":2600,"name":2600,"fn":2601,"description":2602,"org":2603,"tags":2604,"stars":23,"repoUrl":24,"updatedAt":2613},"accelerated-computing-cudf","accelerate data processing with cuDF","Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV\u002FParquet I\u002FO, nullable semantics, and multi-GPU DataFrame workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2605,2608,2611,2612],{"name":2606,"slug":2607,"type":15},"Data Analysis","data-analysis",{"name":2609,"slug":2610,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-14T05:28:43.176466",{"slug":2615,"name":2615,"fn":2616,"description":2617,"org":2618,"tags":2619,"stars":23,"repoUrl":24,"updatedAt":2627},"aiq-deploy","deploy and manage NVIDIA AI-Q infrastructure","Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2620,2623,2626],{"name":2621,"slug":2622,"type":15},"Deployment","deployment",{"name":2624,"slug":2625,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":2629,"name":2629,"fn":2630,"description":2631,"org":2632,"tags":2633,"stars":23,"repoUrl":24,"updatedAt":2641},"aiq-research","conduct deep research with AI-Q","Use when asked to run deep research or AI-Q research through a reachable NVIDIA AI-Q Blueprint backend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2634,2637,2638],{"name":2635,"slug":2636,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":2639,"slug":2640,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":2643,"name":2643,"fn":2644,"description":2645,"org":2646,"tags":2647,"stars":23,"repoUrl":24,"updatedAt":2653},"amc-run-sample-calibration","run AMC sample dataset calibration","Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2648,2649,2650],{"name":2606,"slug":2607,"type":15},{"name":9,"slug":8,"type":15},{"name":2651,"slug":2652,"type":15},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":2655,"name":2655,"fn":2656,"description":2657,"org":2658,"tags":2659,"stars":23,"repoUrl":24,"updatedAt":2670},"amc-run-video-calibration","calibrate video datasets with AutoMagicCalib","Calibrate a new dataset from pre-recorded video files via the AutoMagicCalib REST API. Use when user has local MP4s and says 'calibrate my videos', 'run AMC on these videos', or similar. For RTSP\u002Flive streams, use amc-run-rtsp-calibration instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2660,2663,2666,2667],{"name":2661,"slug":2662,"type":15},"Automation","automation",{"name":2664,"slug":2665,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":2668,"slug":2669,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":2672,"name":2672,"fn":2673,"description":2674,"org":2675,"tags":2676,"stars":23,"repoUrl":24,"updatedAt":2685},"amc-setup-calibration-stack","deploy AutoMagicCalib microservice with Docker","Launch AutoMagicCalib microservice and web UI from NGC release images via Docker Compose. Use when user says 'deploy auto calibration', 'launch auto calibration', 'launch AMC', 'start MS+UI', or 'set up auto-magic-calib'. Requires NGC API key.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2677,2678,2681,2682],{"name":2621,"slug":2622,"type":15},{"name":2679,"slug":2680,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":2683,"slug":2684,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":2687,"name":2687,"fn":2688,"description":2689,"org":2690,"tags":2691,"stars":23,"repoUrl":24,"updatedAt":2699},"cudaq-guide","develop quantum applications with CUDA-Q","CUDA-Q onboarding guide for installation, test programs, GPU simulation, QPU hardware, and quantum applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2692,2693,2696],{"name":9,"slug":8,"type":15},{"name":2694,"slug":2695,"type":15},"Quantum Computing","quantum-computing",{"name":2697,"slug":2698,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":2702,"total":2853},[2703,2721,2737,2748,2760,2774,2787,2801,2812,2821,2835,2844],{"slug":2704,"name":2704,"fn":2705,"description":2706,"org":2707,"tags":2708,"stars":2718,"repoUrl":2719,"updatedAt":2720},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2709,2712,2715],{"name":2710,"slug":2711,"type":15},"Documentation","documentation",{"name":2713,"slug":2714,"type":15},"MCP","mcp",{"name":2716,"slug":2717,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":2722,"name":2722,"fn":2723,"description":2724,"org":2725,"tags":2726,"stars":2734,"repoUrl":2735,"updatedAt":2736},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2727,2730,2731],{"name":2728,"slug":2729,"type":15},"Containers","containers",{"name":2621,"slug":2622,"type":15},{"name":2732,"slug":2733,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":2738,"name":2738,"fn":2739,"description":2740,"org":2741,"tags":2742,"stars":2734,"repoUrl":2735,"updatedAt":2747},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2743,2746],{"name":2744,"slug":2745,"type":15},"CI\u002FCD","ci-cd",{"name":2621,"slug":2622,"type":15},"2026-07-14T05:25:59.97109",{"slug":2749,"name":2749,"fn":2750,"description":2751,"org":2752,"tags":2753,"stars":2734,"repoUrl":2735,"updatedAt":2759},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2754,2755,2756],{"name":2744,"slug":2745,"type":15},{"name":2621,"slug":2622,"type":15},{"name":2757,"slug":2758,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":2761,"name":2761,"fn":2762,"description":2763,"org":2764,"tags":2765,"stars":2734,"repoUrl":2735,"updatedAt":2773},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2766,2769,2770],{"name":2767,"slug":2768,"type":15},"Debugging","debugging",{"name":2757,"slug":2758,"type":15},{"name":2771,"slug":2772,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":2775,"name":2775,"fn":2776,"description":2777,"org":2778,"tags":2779,"stars":2734,"repoUrl":2735,"updatedAt":2786},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2780,2783],{"name":2781,"slug":2782,"type":15},"Best Practices","best-practices",{"name":2784,"slug":2785,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":2788,"name":2788,"fn":2789,"description":2790,"org":2791,"tags":2792,"stars":2734,"repoUrl":2735,"updatedAt":2800},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2793,2796,2799],{"name":2794,"slug":2795,"type":15},"Machine Learning","machine-learning",{"name":2797,"slug":2798,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":2802,"name":2802,"fn":2803,"description":2804,"org":2805,"tags":2806,"stars":2734,"repoUrl":2735,"updatedAt":2811},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2807,2810],{"name":2808,"slug":2809,"type":15},"QA","qa",{"name":2651,"slug":2652,"type":15},"2026-07-14T05:25:53.673039",{"slug":2813,"name":2813,"fn":2814,"description":2815,"org":2816,"tags":2817,"stars":2734,"repoUrl":2735,"updatedAt":2820},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2818,2819],{"name":2621,"slug":2622,"type":15},{"name":2624,"slug":2625,"type":15},"2026-07-14T05:25:49.362534",{"slug":2822,"name":2822,"fn":2823,"description":2824,"org":2825,"tags":2826,"stars":2734,"repoUrl":2735,"updatedAt":2834},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2827,2830,2831],{"name":2828,"slug":2829,"type":15},"Code Review","code-review",{"name":2757,"slug":2758,"type":15},{"name":2832,"slug":2833,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":2836,"name":2836,"fn":2837,"description":2838,"org":2839,"tags":2840,"stars":2734,"repoUrl":2735,"updatedAt":2843},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2841,2842],{"name":2808,"slug":2809,"type":15},{"name":2651,"slug":2652,"type":15},"2026-07-14T05:25:54.928983",{"slug":2845,"name":2845,"fn":2846,"description":2847,"org":2848,"tags":2849,"stars":2734,"repoUrl":2735,"updatedAt":2852},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2850,2851],{"name":2661,"slug":2662,"type":15},{"name":2744,"slug":2745,"type":15},"2026-07-30T05:29:03.275638",496]