Podíval jsem se třeba na náhodně vybraný ovladač síťové karty (if_wx.c) a nalezl v něm deklaraci u_int32_t dma_addr; a rxpkt->dma_addr = vtophys(mtod(mb, vm_offset_t));
(přičemž vtophys pouze projte tabulku stránek a vrátí fyzickou adresu).
Co se stane, když ta adresa bude nad 4G?
Opravdu to chodí? A co používáte za síťovou kartu?
Z manualove stanky pae(7) na FreeBSD 4.9:
Many devices or their device drivers are not capable of direct memory
access to physical addresses above 4 gigabytes. In order to make use of
direct memory access IO in a system with more than 4 gigabytes of memory
when the PAE option is used, these drivers must use a facility for remap-
ping or substituting physical memory which is not accessible to the
device. One such facility is provided by the busdma interface. Device
drivers which do not account for such devices will not work reliably in a
system with more than 4 gigabytes of memory when the PAE option is used,
and may cause data corruption.