On Linux dma_length field of struct scatterlist is present on the
arches where DMA mapping code is able to coalesce adjacent segments
of physical address space. It contains total length of coalesced
segments while length field contains non-coalesced length of each
segment. On other arches dma_length is aliased to length field with
sg_dma_len macro. As FreeBSD does not merge scatterlist segments it
do not have dma_length field. It is appered that at least i915kms
driver depends on existence of dma_length field.
Add the field and disable it by default. To enable add to Makefile
.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64" || \\
${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "powerpc"CFLAGS+= -DCONFIG_NEED_SG_DMA_LENGTH
.endif
Reported by: Ryan Fahy
GHI: https://github.com/freebsd/drm-kmod/issues/315