On 19/08/2020 01:28, Randy Dunlap wrote: > Hi, > > Does the drivers/net/ethernet/sfc/sfc driver require (expect) > dma_addr_t to be 64 bits (as opposed to 32 bits)? > > I see that several #defines in ef100_regs.h are 64... > > When used with DMA_BIT_MASK(64), does the value just need to be > truncated to 32 bits? Will that work? As far as I can tell, truncation to 32 bits is harmless — the called function (efx_init_io) already tries every mask from the passed one down to 32 bits in case of PCIe hardware limitations.
The ef10 and siena versions also truncate like this (their #defines are 48 and 46 respectively), but because they are handled indirectly through efx_nic_type, the compiler isn't able to determine this statically as it can with ef100. > When I build this driver on i386 with 32-bit dma_addr_t, I see > the following build warnings: Could you test whether explicitly casting to dma_addr_t suppresses the warnings? I.e. efx_init_io(efx, bar, (dma_addr_t)DMA_BIT_MASK(ESF_GZ_TX_SEND_ADDR_WIDTH), pci_resource_len(efx->pci_dev, bar)); -ed