intel_vgt_balloon(9)
π intel_vgt_balloon β kernel API manual, bestie edition π
okay so you found the page for intel_vgt_balloon(9), the little icon that balloons out reserved graphics address trunks. sit down, grab a strawberry π, and let's get into it.
β¨ NAME β¨
intel_vgt_balloon β balloon out reserved graphics address trunks π
πΈ SYNOPSIS πΈ
int intel_vgt_balloon (struct i915_ggtt *ggtt );
π¦ ARGUMENTS π¦
ggttβ the global GGTT from which to reserve. that's it, that's the one. it's the global one, and we're reserving out of it, no cap π
π DESCRIPTION π
so this function gets called at the initialization stage, right? its whole job is to balloon out the graphic address space that's been allocated to the other vGPUs, by marking those spaces as reserved. very "this seat's taken" energy π
the ballooning-related knowledge β that's the starting address and the size of the mappable/unmappable graphic memory β is described in the vgt_if structure in a reserved mmio range. iykyk β¨
to give an example (and bestie, we love an example), the drawing below depicts one typical scenario after ballooning. here vGPU1 has 2 pieces of graphic address spaces ballooned out, each for the mappable and the non-mappable part. from the vGPU1 point of view, the total size is the same as the physical one, with the start address of its graphic space being zero. yet there are some portions ballooned out (the shadow part, which are marked as reserved by drm allocator β literally fenced off π). from the host point of view, the graphic address space is partitioned by multiple vGPUs in different VMs. it's giving subdivided apartment block π’:
vGPU1 view Host view
0 ------> +-----------+ +-----------+
^ |###########| | vGPU3 |
| |###########| +-----------+
| |###########| | vGPU2 |
| +-----------+ +-----------+
mappable GM | available | ==> | vGPU1 |
| +-----------+ +-----------+
| |###########| | |
v |###########| | Host |
+=======+===========+ +===========+
^ |###########| | vGPU3 |
| |###########| +-----------+
| |###########| | vGPU2 |
| +-----------+ +-----------+
unmappable GM | available | ==> | vGPU1 |
| +-----------+ +-----------+
| |###########| | |
| |###########| | Host |
v |###########| | |
total GM size ------> +-----------+ +-----------+
the # blocks? those are the ballooned-out, reserved, not-yours parts. the "available" bits? those are the moment. main character energy π
π₯ RETURN π₯
zeroon success π«Άnon-zeroif the configuration is invalid or if ballooning failed π (yeah, it can fail β vibe check accordingly)
π SEE ALSO π
- Kernel file
./drivers/gpu/drm/i915/i915_vgpu.c - Intel GVT-g guest support(9)
intel_vgpu_detect(9)intel_vgt_deballoon(9)
pro tip from your girl: intel_vgt_deballoon(9) is right there in SEE ALSO, so if you ballooned it out you already know where to go to put it back. deflate responsibly ππ¨
and that's the whole page, bestie! source path ./drivers/gpu/drm/i915, dated October 2026 β so like, future-vibes but make it kernel. go forth and reserve those trunks π§ββοΈβ¨π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms