Re: [PATCH] sfc: Fix efx_rx_buf_offset() for recycled pages
From: Ben Hutchings <hidden>
Date: 2013-10-20 12:52:28
Attachments
- signature.asc [application/pgp-signature] 828 bytes
From: Ben Hutchings <hidden>
Date: 2013-10-20 12:52:28
On Thu, 2013-09-19 at 17:13 +0100, Ben Hutchings wrote:
[Re-sending with cc to the current stable address. I still had the old
address in contacts, though I've definitely sent to the current address
previously...]
This bug fix is only for stable branches older than 3.10. The bug was
fixed upstream by commit 2768935a4660 ('sfc: reuse pages to avoid DMA
mapping/unmapping costs'), but that change is totally unsuitable for
stable.
Commit b590ace09d51 ('sfc: Fix efx_rx_buf_offset() in the presence of
swiotlb') added an explicit page_offset member to struct
efx_rx_buffer, which must be set consistently with the u.page and
dma_addr fields. However, it failed to add the necessary assignment
in efx_resurrect_rx_buffer(). It also did not correct the calculation
of efx_rx_buffer::dma_addr in efx_resurrect_rx_buffer(), which assumes
that DMA-mapping a page will result in a page-aligned DMA address
(exactly what swiotlb violates).
Add the assignment of efx_rx_buffer::page_offset and change the
calculation of dma_addr to make use of it.
I'm attaching the patches for 3.0.y, 3.2.y and 3.4.y (the last of which
should also be applicable to the later unofficial stable branches).Queued up for 3.2. Ben. -- Ben Hutchings Tomorrow will be cancelled due to lack of interest.