ASAravind Sivakumaran
Theme

Theme and appearance

Appearance
Palette

Pick any colour. The displayed accent adjusts for readable contrast in light or dark mode.

ARAVIND SIVAKUMARAN / FIELD NOTES

Notes &
experiments.

Start with 16 bytes

Silicon, generated worlds, systems at home.
Notes from a curious engineer.

I write to understand what happens underneath. Start with device memory, explore my anime-generation research, or follow a system from idea to experiment.

Systems Observatory

Three constellations, linked lessons and independent example runs. PCIe is a branching tree, the IOMMU is stacked translation layers, and power is a cycle of states. Pick a way through: the numbered stars form a route, with each border introducing a new system idea. Choose another route, or press the chosen one again to list all three; without JavaScript all three lists remain available. Or follow one card through all three in a combined lab. New to confidential computing? Start with The Vault.

  • PCIe
  • Root complex: the PCIe guide

    Teaches A real N100’s PCIe tree, part by part. Needs Nothing. Try Light the route a write takes to memory.

  • Switch: bridges & AtomicOps

    Teaches Bus numbers, windows, and what every port on the path must support. Needs Reading lspci. Try Turn AtomicOps on and find the port that refuses.

  • Reading lspci

    Teaches What lspci -vvv says about a card, field by field. Needs Nothing. Try Flip a bit with setpci and read it back.

  • PASID, ATS & SR-IOV

    Teaches The switches that make a device an IOMMU client. Needs Reading lspci. Try Enable PASID and watch what lspci prints.

  • SR-IOV: two tenants

    Teaches One NIC split between two VMs, broken three ways. Needs PASID, ATS & SR-IOV. Try Revoke one tenant’s mapping and watch only it fault.

  • Before DMA: PCIe setup

    Teaches BusMaster, the DMA mask and the mapping a write needs. Needs Nothing. Try Change one condition and see what stops the write.

  • IOMMU
  • Start: 16 bytes

    Teaches A teaching example of a DMA write, followed from device to memory. Needs Nothing. Try Step through the write, then break its mapping.

  • Request identity

    Teaches What the device actually sent, and who it said it was. Needs IOMMU foundations. Try Pick a test recipe and predict its evidence.

  • IOMMU foundations

    Teaches The tables that decide each request, and how a test proves them. Needs A basic DMA example. Try Run an allowed control and a denied probe.

  • Translation lab

    Teaches A page walk, level by level, with 4 KiB, 2 MiB and 1 GiB leaves. Needs IOMMU foundations. Try Trace a request to memory, or to a fault.

  • IOTLB & cache state

    Teaches Why a request can succeed on the wrong page. Needs IOMMU foundations. Try Skip an invalidation and follow the bytes.

  • AMD reference

    Teaches Alignment, lookup structures, command completion and GA records. Needs IOMMU foundations. Try Connect a field to the working lab.

  • Faults & recovery

    Teaches Presence, permissions, invalid encodings and stopped engines. Needs IOMMU foundations. Try Break one assumption and test the recovery.

  • Secure DMA

    Teaches SEV-SNP on: RMP checks and RMP_PAGE_FAULT, bit by bit. Needs Confidential VMs. Try Let a device reach for private memory.

  • Confidential VMs

    Teaches SEV-SNP’s Reverse Map Table, page validation and privilege levels. Needs IOMMU foundations. Try Write a secret, then let the host try.

  • Power
  • Active

    Teaches Choosing how fast to run while there is work. Needs Nothing. Try Lab PM-01: energy per completed job.

  • Idle

    Teaches Idle depth against wake latency. Needs Active. Try Lab PM-02: earn an idle state.

  • Device sleep

    Teaches A device suspending and waking correctly (system sleep itself is reference only). Needs Idle. Try Lab PM-05: suspend, wake, and verify the device.

  • Power states, idle & wake

    Teaches CPU, device and link idle before following wake. Needs No earlier Idle chapter. Try Compare safe return paths.

  • PCIe link power

Start here

These linked lessons use independent examples to introduce PCIe, DMA, translation, faults and power.

  1. PCIe · Reading lspci Learn what the fields show in this example.
  2. PCIe · Before DMA: PCIe setup See when a device may write at all.
  3. PCIe to IOMMU: requester identity tells the IOMMU which device made a request.
  4. IOMMU · Start: 16 bytes Follow this lesson's example write toward memory.
  5. IOMMU · IOMMU foundations Learn how translation tables are structured.
  6. IOMMU · Faults & recovery Explore fault causes and recovery in this example.
  7. IOMMU to Power: the final lesson introduces CPU, device and link idle before wake.
  8. Power · Power states, idle & wake First distinguish CPU, device and link idle; then follow wake.

Run the whole journey in one lab: one NIC, three stops →

Explore the details

For practitioners: go straight to the fields, formats and corner cases.

  1. PCIe · PASID, ATS & SR-IOV PASID, ATS, PRI and SR-IOV, as lspci prints them.
  2. PCIe · Switch: bridges & AtomicOps What every port on the path must support.
  3. PCIe to IOMMU: PASID and ATS add request context that can help distinguish clients.
  4. IOMMU · Request identity Request identity: 112 test recipes.
  5. IOMMU · IOTLB & cache state The IOTLB, and what an invalidation must cover.
  6. IOMMU · AMD reference The selected table and log entry formats, bit by bit.
  7. Power adds a separate view of idle and wake: a sleeping PCIe link can save watts but delay a request.
  8. Power · PCIe link power ASPM and link states.

Investigate a failure

How I validate: separate what was intended, what was observed and what proves it.

  1. PCIe · Before DMA: PCIe setup The write never happened. Was BusMaster off, or was it blocked?
  2. PCIe to IOMMU: once a request is sent, the IOMMU's evidence takes over.
  3. IOMMU · IOMMU foundations Allowed control, denied probe, recovery control.
  4. IOMMU · IOTLB & cache state It passed, on the wrong page. Where did the bytes go?
  5. IOMMU · Faults & recovery A fault record is not a recovery.
  6. Power adds a separate example of wake state: resume is another chance to lose state.
  7. Power · Device sleep and wake Did the device come back as it was?

Now try one: the test passed, so find out why →

Jump to a topic

IOMMU
Translation, DMA & buffers: page tables, retained translations, interrupts and the evidence left by denied traffic.
PCIe
Links, enumeration, lspci, DMA & CXL: map a real N100, walk the bus as firmware and Linux do at boot, read lspci, flip PASID, ATS and SR-IOV.
Power
Do the work. Earn the idle.: energy, latency and the dependencies that make a safe return from idle possible.
Showcases
Scroll-scrubbed line drawings: the CPU package, a DMA write, interrupts, ATS and PRI and SR-IOV bring-up.

Read and run the browser examples locally. When you choose Run C++ externally, only that experiment’s source is sent to Compiler Explorer. No GPU is required for these IOMMU notes.

Sixteen anime characters generated for my final-year project, presented as the original sample grid.

PROJECT STUDY / GENERATIVE AI

From a curated dataset
to an imagined character.

I trained a 512 × 512 anime StyleGAN2 model. The project connects dataset curation, training choices and the details that still go wrong.

Diffusion-StyleGAN2 · RTX 3060 · FYP evidence

Read the full project study Try the recovered model