# mem_info_vram_total:    512 MiB

> On Linux the GPU reaches unified memory through GTT, and the ceiling is the TTM pages_limit kernel parameter, not the BIOS VRAM slice; raise ttm.pages_limit on the kernel command line, reboot, and re-read the sysfs files.

- Platform: Strix Halo (Ryzen AI Max+ 395)
- Runtime: llama.cpp server (Vulkan)
- Published: 2026-09-02
- Sources: https://agmind.ai/reports/strix-halo-memory-allocation/, https://agmind.ai/guides/deploy-llm-strix-halo/
- Canonical: https://agmind.ai/symptoms/rocm-gtt-memory-ceiling-strix-halo/

## What you see

A tiny dedicated-VRAM figure on a box bought for its memory. A model that should fit refuses to load. ROCm and Vulkan disagree about how much memory exists. Read from sysfs on our serving node while two models were resident:

```
mem_info_vram_total:    512 MiB      # the BIOS-dedicated slice
mem_info_gtt_total:  120266 MiB      # what the GPU can actually reach
mem_info_gtt_used:   108704 MiB      # two resident models, right now
```

The first line is what alarms people; the second and third are what matters. On this node the ceiling had already been raised, which is why two large models fit in GTT at all. With a distribution-default page limit, `mem_info_gtt_total` is the line that comes up short.

## Where we saw it

Beelink GTR9 Pro (Ryzen AI Max+ 395), 7.0 kernel, serving llama.cpp. Readings from `/sys/class/drm/card*/device/` with two models loaded, for the report dated 2026-08-21. The deployment guide dated 2026-09-01 makes the same check its Step 1, before it starts the Vulkan build of llama.cpp server (`ghcr.io/ggml-org/llama.cpp:server-vulkan`). Scope as the report states it: one node, one kernel series, one distribution, tuned for llama.cpp serving.

## Cause

On Linux the models do not live in the BIOS-dedicated VRAM slice. The GPU maps ordinary system memory through GTT, the kernel's graphics translation table, and how much it may map is bounded by TTM, the kernel's memory manager for graphics devices. TTM's page limit is the ceiling. On many distributions its default is a fraction of system memory, and the default, not the firmware split, is what stops a large model from loading.

Enlarging the BIOS slice does not add capacity. That is what one serving node tuned for one job reports, not a claim that a large slice never helps any workload. The slice is carved out of the same physical memory and becomes unavailable to everything else, including the GTT path the runtime prefers; it converts flexible memory into inflexible memory. Much of the advice circulating for this hardware silently assumes Windows or an older kernel. Runtimes report their own idea of "VRAM" that means something else entirely; the sysfs files are the ground truth.

## Fix

Check the current ceiling first. The value is in pages, not bytes:

```
# pages, at 4 KiB each
cat /sys/module/ttm/parameters/pages_limit
```

If it is a fraction of your RAM, raise it on the kernel command line and reboot. Our node's kernel command line carries the value below, which is where the `mem_info_gtt_total` line above comes from; it is sized for this box's RAM, so derive your own in pages rather than copying it:

```
ttm.pages_limit=30788203
```

Then re-read both sysfs files before believing anything else:

```
/sys/class/drm/card*/device/mem_info_gtt_total
/sys/class/drm/card*/device/mem_info_gtt_used
```

Leave the BIOS slice small. Leave headroom: GTT allocations come out of the same physical memory the operating system is using, and a box that swaps while serving has a latency problem you will misdiagnose as a model problem. Check in the report's order: `pages_limit`, `mem_info_gtt_total`, `mem_info_gtt_used` with the model loaded, free system memory under load, and only then the BIOS.

## Still open upstream?

Not tracked by us. The report notes only that kernel and driver behavior on this hardware has been moving quickly and that its readings are what one machine reports today, not a specification.

## Evidence

- [Strix Halo memory allocation report](https://agmind.ai/reports/strix-halo-memory-allocation/)
- [Strix Halo deployment guide, Step 1](https://agmind.ai/guides/deploy-llm-strix-halo/)

---

Machine-readable claim registry: https://agmind.ai/claims.json · llms.txt: https://agmind.ai/llms.txt
