CVSROOT:        /cvs
Module name:    src
Changes by:     [email protected]   2026/06/23 08:40:40

Modified files:
        sys/arch/amd64/amd64: autoconf.c 
        sys/dev/pci    : if_bnxt.c if_em.c if_iavf.c if_ice.c if_igc.c 
                         if_ix.c if_ixl.c if_ixv.c if_mcx.c if_vmx.c 
        sys/dev/pv     : if_vio.c 
        sys/kern       : uipc_mbuf.c 
        sys/net        : if.h 
        sys/sys        : mbuf.h 
        sys/uvm        : uvm_extern.h uvm_km.c 

Log message:
Allocate mbufs in high memory if only 64 bit DMA interfaces exist.

Mbufs on amd64 were allocated below 4 GB so that devices not capable
of 64 bit DMA can access the memory.  Interface drivers use
BUS_DMA_64BIT to allow the DMA layer doing 64 bit transfers.  Now
flag interfaces with IFXF_MBUF_64BIT that are capable of 64 bit DMA
on all their mbuf rings.

If only such interfaces exist in the system during amd64 boot,
allocate mbufs and mbuf clusters also in high memory.  Other
architectures may be limited to 32 bit memory anyway or use an
IOMMU.  On riscv64 or arm64 busses may exists that support less
than 64 bit, this will be handled later.

Hotplug devices that do not support 64 bit DMA will use bounce
buffering.  By changing the flags in device drivers we can force
bounce buffering and find missing calls to bus_dmamap_sync().

OK kettenis@ deraadt@

Reply via email to