Index | Thread | Search

From:
Mark Kettenis <mark.kettenis@xs4all.nl>
Subject:
Re: ice 64 bit dma
To:
Alexander Bluhm <bluhm@openbsd.org>
Cc:
tech@openbsd.org
Date:
Tue, 24 Feb 2026 20:52:52 +0100

Download raw body.

Thread
  • Alexander Bluhm:

    ice 64 bit dma

    • Mark Kettenis:

      ice 64 bit dma

    • Stefan Sperling:

      ice 64 bit dma

> Date: Tue, 24 Feb 2026 20:03:42 +0100
> From: Alexander Bluhm <bluhm@openbsd.org>
> 
> Hi,
> 
> In my tests ice works with 64 bit DMA transfers.
> 
> ok?

Linux driver has:

    err = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64));

and this is modern PCIe hardware, so I expect no issues.

ok kettenis@

> Index: dev/pci/if_ice.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/dev/pci/if_ice.c,v
> diff -u -p -r1.67 if_ice.c
> --- dev/pci/if_ice.c	19 Feb 2026 10:15:36 -0000	1.67
> +++ dev/pci/if_ice.c	24 Feb 2026 19:01:38 -0000
> @@ -1315,13 +1315,13 @@ ice_alloc_dma_mem(struct ice_hw *hw, str
>  
>  	mem->tag = sc->sc_dmat;
>  
> -	err = bus_dmamap_create(mem->tag, size, 1, size, 0, BUS_DMA_NOWAIT,
> -	    &mem->map);
> +	err = bus_dmamap_create(mem->tag, size, 1, size, 0,
> +	    BUS_DMA_NOWAIT | BUS_DMA_64BIT, &mem->map);
>  	if (err)
>  		goto fail;
>  
>  	err = bus_dmamem_alloc(mem->tag, size, 1, 0, &mem->seg, 1, &nsegs,
> -	    BUS_DMA_NOWAIT | BUS_DMA_ZERO);
> +	    BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_64BIT);
>  	if (err || nsegs != 1)
>  		goto fail_1;
>  
> 
>