If you are using a Programmable Logic Device (PLD)—such as an FPGA or CPLD—as a PCIe endpoint, disabling DMA isn't always as simple as flipping a driver switch. You have to kill it at the hardware configuration level.
-- Original DMA request dma_request <= pcie_rx_buffer_full; -- Disabled DMA (hardcoded off) dma_request <= '0'; If you cannot remove the DMA engine, starve it. Program your PLD's Base Address Registers (BARs) to map to a tiny memory region (e.g., 4KB). Configure the PLD to reject any Memory Write or Read TLP (Transaction Layer Packet) that targets an address outside a specific, non-RAM range.
This requires an internal TLP filter in your PLD logic:
Direct Memory Access (DMA) is a powerful feature. It allows hardware devices to read/write system RAM without bothering the CPU. However, from a security perspective, an unrestricted DMA channel is a gaping hole—it’s the primary vector for DMA attacks like Thunderclap and FireWire DMA .
Hardening Your System: How to Disable DMA on a PLD-Based PCIe Device
April 17, 2026 Category: Security & Firmware
How To Disable Dma On Pld Page
If you are using a Programmable Logic Device (PLD)—such as an FPGA or CPLD—as a PCIe endpoint, disabling DMA isn't always as simple as flipping a driver switch. You have to kill it at the hardware configuration level.
-- Original DMA request dma_request <= pcie_rx_buffer_full; -- Disabled DMA (hardcoded off) dma_request <= '0'; If you cannot remove the DMA engine, starve it. Program your PLD's Base Address Registers (BARs) to map to a tiny memory region (e.g., 4KB). Configure the PLD to reject any Memory Write or Read TLP (Transaction Layer Packet) that targets an address outside a specific, non-RAM range. how to disable dma on pld
Direct Memory Access (DMA) is a powerful feature. It allows hardware devices to read/write system RAM without bothering the CPU. However, from a security perspective, an unrestricted DMA channel is a gaping hole—it’s the primary vector for DMA attacks like Thunderclap and FireWire DMA . Program your PLD's Base Address Registers (BARs) to
Hardening Your System: How to Disable DMA on a PLD-Based PCIe Device