Re: iwx 64-bit dma
Vitaliy Makkoveev <[email protected]> Thu, 30 Jul 2026 00:45:47 +0000
| Newsgroups | gmane.os.openbsd.tech |
|---|---|
| Message-ID | <[email protected]> |
On Wed, Jul 29, 2026 at 06:29:12PM -0600, Theo de Raadt wrote: > Vitaliy Makkoveev <[email protected]> wrote: > > > On Wed, Jul 29, 2026 at 04:22:51PM -0600, Theo de Raadt wrote: > > > Are _all models_ of this chipset safe? > > > > > > > I don't know about PCI versions of this device. Moreover, it uses 64 > > bits DMA since revision 1.198 of sys/dev/pci/if_iwx.c. > > > The chipset always uses 64 bit descriptors, but they always pointed > into 32-bit memory. > > There is other hardware that has 64 bit descriptors but can only access > less than 64 bits, for example kettenis sent a mail a week ago about > something which does 48 bits (but on a platform which has all memory > below that line) > > So we must still be certain. The existance of 64 bit descriptors is > not conclusive. > The IFXF_MBUF_64BIT flag affects only amd64. All other architectures still uses memory below 4G. See revision 1.61 of sys/arch/amd64/amd64/autoconf.c line 129. > > revision 1.198 > > date: 2026/02/17 20:02:43; author: kettenis; state: Exp; lines: +8 -7; commi > > tid: zh15zLsr17Uwlskc; > > Sprinkle some BUS_DMA_64BIT; this hardware has no issues handling full > > 64-bit addresses. > > > > ok stsp@ > > > > But later, bluhm@ introduced IFXF_MBUF_64BIT flag for interface > > descriptor. The 64 bits DMA will not be used if at least one interface > > was configured without this flag. It seems iwx(4) was forgotten like > > re(4). > > > > revision 1.306 > > date: 2026/06/23 14:40:40; author: bluhm; state: Exp; lines: +30 -1; commiti > > d: stkeyyILuxfbNN6W; > > 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@ > > > > > > On Tue, Jul 28, 2026 at 10:31:10PM -0400, Brad Smith wrote: > > > > > iwx(4) works with 64-bit DMA. > > > > > > > > > > Tested with > > > > > > > > > > iwx0 at pci0 dev 20 function 3 "Intel Wi-Fi 6 AX201" rev 0x00 > > > > > > > > > > > > > > > > > > Yes, this flag is missing. ok mvs@ > > > > > > > > > Index: if_iwx.c > > > > > =================================================================== > > > > > RCS file: /cvs/src/sys/dev/pci/if_iwx.c,v > > > > > retrieving revision 1.229 > > > > > diff -u -p -u -p -r1.229 if_iwx.c > > > > > --- if_iwx.c 28 May 2026 10:51:52 -0000 1.229 > > > > > +++ if_iwx.c 24 Jul 2026 03:10:09 -0000 > > > > > @@ -12671,6 +12671,7 @@ iwx_attach(struct device *parent, struct > > > > > > > > > > ifp->if_softc = sc; > > > > > ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; > > > > > + ifp->if_xflags = IFXF_MBUF_64BIT; > > > > > ifp->if_ioctl = iwx_ioctl; > > > > > ifp->if_start = iwx_start; > > > > > ifp->if_watchdog = iwx_watchdog; > > > > > > > > > > >