Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S967643AbdIZDre (ORCPT ); Mon, 25 Sep 2017 23:47:34 -0400 Received: from stargate.chelsio.com ([12.32.117.8]:43450 "EHLO stargate.chelsio.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S967628AbdIZDrb (ORCPT ); Mon, 25 Sep 2017 23:47:31 -0400 Subject: Re: DMA error when sg->offset value is greater than PAGE_SIZE in Intel IOMMU To: Casey Leedom , "Raj, Ashok" Cc: Robin Murphy , Herbert Xu , David Woodhouse , "linux-kernel@vger.kernel.org" , "iommu@lists.linux-foundation.org" , "linux-crypto@vger.kernel.org" , Dan Williams , "dwmw2@infradead.org" References: <20170920080151.GA3348@gondor.apana.org.au> <26992a1e-edb3-ed78-ce8e-31e0739d75f4@arm.com> <20170925155430.GB131920@otc-nc-03> From: Harsh Jain Message-ID: Date: Tue, 26 Sep 2017 09:16:46 +0530 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1868 Lines: 43 On 26-09-2017 00:16, Casey Leedom wrote: > | From: Raj, Ashok > | Sent: Monday, September 25, 2017 8:54 AM > | > | Not sure how the page->offset would end up being greater than page-size? Refer below > | > | If you have additional traces, please send them by. > | > | Is this a new driver? wondering how we didn't run into this? > > According to Herbert Xu and one of our own engineers, it's actually legal > for Scatter/Gather Lists to have this. This isn't my area of expertise > though so I'm just passing that on. > > I've asked our team to produce a detailed trace of the exact > Scatter/Gather Lists they're seeing and what ends up coming out of the DMA > Mappings, etc. They're in India, so I expect that they'll have this for you > by tomorrow morning. Below mentioned log was already there in 1st mail. Copied here for easy reference. Let me know if you need additional traces. 1) IN esp_output() "__skb_to_sgvec()" convert skb frags to scatter gather list. At that moment sg->offset was 4094. 2) From esp_output control reaches to "crypto_authenc_encrypt()". Here in "scatterwalk_ffwd()" sg->offset become 4110. 3) Same sg list received by chelsio crypto driver(chcr). When chcr try to do DMA mapping it starts giving DMA errors. Following error observed. first two prints are added for debugging in chcr. Kernel version used to reproduce is 4.9.28 on x86_64 with Page size 4K. Sep 15 12:40:52 heptagon kernel: process_cipher req src ffff8803cb41f0a8 Sep 15 12:40:52 heptagon kernel: ========= issue hit offset:4110 ======= dma_addr f24b000e ==> DMA mapped address returned by dma_map_sg() Sep 15 12:40:52 heptagon kernel: DMAR: DRHD: handling fault status reg 2 Sep 15 12:40:52 heptagon kernel: DMAR: [DMA Write] Request device [02:00.4] fault addr f24b0000 [fault reason 05] PTE Write access is not set > > Casey