[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <9074448b-1b2c-4791-94ed-0ac296f0b897@gmail.com>
Date: Mon, 29 Dec 2025 14:32:22 +0100
From: Thomas Fourier <fourier.thomas@...il.com>
To: Potnuri Bharat Teja <bharat@...lsio.com>
Cc: Andrew Lunn <andrew+netdev@...n.ch>, "David S. Miller"
<davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>,
netdev@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH net] ethernet: cxgb4: Fix dma_unmap_sg() nents value
On 25/06/2025 15:27, Thomas Fourier wrote:
> On 24/06/2025 17:17, Potnuri Bharat Teja wrote:
>> On Monday, June 06/23/25, 2025 at 14:25:55 +0200, Thomas Fourier wrote:
>>> The dma_unmap_sg() functions should be called with the same nents as
>>> the
>>> dma_map_sg(), not the value the map function returned.
>>>
>>> Fixes: 8b4e6b3ca2ed ("cxgb4: Add HMA support")
>>> Signed-off-by: Thomas Fourier <fourier.thomas@...il.com>
>>> ---
>>> drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
>>> b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
>>> index 51395c96b2e9..73bb1f413761 100644
>>> --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
>>> +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
>>> @@ -3998,7 +3998,7 @@ static void adap_free_hma_mem(struct adapter
>>> *adapter)
>>> if (adapter->hma.flags & HMA_DMA_MAPPED_FLAG) {
>>> dma_unmap_sg(adapter->pdev_dev, adapter->hma.sgt->sgl,
>>> - adapter->hma.sgt->nents, DMA_BIDIRECTIONAL);
>>> + adapter->hma.sgt->orig_nents, DMA_BIDIRECTIONAL);
>>> adapter->hma.flags &= ~HMA_DMA_MAPPED_FLAG;
>>> }
>> Thanks for the patch Thomas.
>> this fix needs below change as well:
>> --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
>> +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
>> @@ -4000,7 +4000,7 @@ static void adap_free_hma_mem(struct adapter
>> *adapter)
>> }
>>
>> for_each_sg(adapter->hma.sgt->sgl, iter,
>> - adapter->hma.sgt->orig_nents, i) {
>> + adapter->hma.sgt->nents, i) {
>> page = sg_page(iter);
>> if (page)
>> __free_pages(page, HMA_PAGE_ORDER);
>
> I don't think this change is correct since this loop iterates over all
> the pages
>
> allocated at line 4076, not over the dma mapped pages.
>
> It also seems that when passing the dma addresses to hardware,
>
> the newpage assignment is not used line 4104 and that the dma mapping
>
> length is not given to hardware. Is that correct?
>
>>> --
>>> 2.43.0
>>>
Hello Potnuri,
Any update on this patch?
Thanks for your time,
Thomas
Powered by blists - more mailing lists