All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stanislaw Gruszka <sgruszka@redhat.com>
To: Joerg Roedel <joro@8bytes.org>
Cc: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>,
	Rosen Penev <rosenp@gmail.com>,
	linux-wireless <linux-wireless@vger.kernel.org>,
	Samuel Sieb <samuel@sieb.net>,
	Alexander Duyck <alexander.h.duyck@linux.intel.com>,
	iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org
Subject: Re: MT76x2U crashes XHCI driver on AMD Ryzen system
Date: Tue, 26 Feb 2019 11:34:51 +0100	[thread overview]
Message-ID: <20190226103450.GA2989@redhat.com> (raw)
In-Reply-To: <20190226100535.GA20740@8bytes.org>

On Tue, Feb 26, 2019 at 11:05:36AM +0100, Joerg Roedel wrote:
> On Mon, Feb 18, 2019 at 03:37:48PM +0100, Stanislaw Gruszka wrote:
> > 0001-mt76x02u-use-usb_bulk_msg-to-upload-firmware.patch
> > 0002-mt76usb-do-not-use-compound-head-page-for-SG-I-O.patch
> > 
> > Or problem can be solved by just one of it (either first or second).
> > 
> > Additionally I'm not 100% sure if
> > 
> > 0002-mt76usb-do-not-use-compound-head-page-for-SG-I-O.patch
> > 
> > is correct. So perhaps some IOMMU maintainer could look at it.
> 
> The patch looks good, but I don't understand why it is needed. The AMD
> IOMMU driver should handle sg->offset > PAGE_SIZE just fine. Can you
> verify that this is the problem? I will look into that again if it turns
> out there is bug in the IOMMU driver.

I'm try to get that information from bug reporter, but I can't get it so
far.

If sg->offset > PAGE_SIZE is fine then most likely we have problem with
alignment. We use page_frag_alloc() in mt76usb for buffer allocation
in scheme like this

page_frag_alloc(max_payload);	// something like 14434
page_frag_alloc(1024);
page_frag_alloc(2048)
page_frag_alloc(2048)
page_frag_alloc(2048)
...

page_frag_alloc works smart and fast way internally by allocating
fragments just but changing internal offset:

        offset = nc->offset - fragsz;
        if (unlikely(offset < 0)) {
                page = virt_to_page(nc->va);
	.
	.
	.

        }

        nc->offset = offset;
	return nc->va + offset;

but unlike other allocators like kmalloc that make effort to provide
ARCH_DMA_MINALIGN buffers, it does not care about alignment. Above
scheme of allocation in mt76usb breaks it. 

Note hat issue is with dma_map_sg(), switching to dma_map_single()
by using urb->transfer_buffer instead of urb->sg make things work
on AMD IOMMU.

Stanislaw


  reply	other threads:[~2019-02-26 10:35 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-10 22:55 MT76x2U crashes XHCI driver on AMD Ryzen system Rosen Penev
2019-01-11 17:29 ` Lorenzo Bianconi
2019-01-11 19:01   ` Rosen Penev
2019-01-13 13:33     ` Lorenzo Bianconi
     [not found]       ` <1547404075.1582.0@smtp.gmail.com>
2019-01-13 19:00         ` Lorenzo Bianconi
2019-01-14  2:20           ` Rosen Penev
2019-01-14  3:13             ` Samuel Sieb
2019-01-14  9:18             ` Lorenzo Bianconi
2019-01-14  9:22               ` Tom Psyborg
2019-01-14 20:06               ` Rosen Penev
2019-01-15  9:04                 ` Lorenzo Bianconi
2019-02-18 14:37                   ` Stanislaw Gruszka
2019-02-18 14:37                     ` Stanislaw Gruszka
2019-02-18 15:15                     ` Lorenzo Bianconi
2019-02-18 15:15                       ` Lorenzo Bianconi
2019-02-18 17:01                     ` Robin Murphy
2019-02-19 11:08                       ` Stanislaw Gruszka
2019-02-19 11:08                         ` Stanislaw Gruszka
2019-02-26 10:05                     ` Joerg Roedel
2019-02-26 10:05                       ` Joerg Roedel
2019-02-26 10:34                       ` Stanislaw Gruszka [this message]
2019-02-26 10:44                         ` Joerg Roedel
2019-02-26 11:24                           ` Stanislaw Gruszka
2019-02-28  9:04                             ` Stanislaw Gruszka
2019-02-28 10:42                               ` Stanislaw Gruszka
2019-02-28 12:19                                 ` Stanislaw Gruszka
2019-02-28 13:40                                   ` Joerg Roedel
2019-03-04  7:10                                     ` Stanislaw Gruszka
2019-03-04  7:20                                       ` Rosen Penev
2019-03-11  8:43                                         ` Stanislaw Gruszka
2019-03-11  8:43                                           ` Stanislaw Gruszka
2019-03-11  8:43                                           ` Stanislaw Gruszka
2019-03-11  9:03                                           ` [PATCH] iommu/amd: fix sg->dma_address for sg->offset bigger than PAGE_SIZE Stanislaw Gruszka
2019-03-11  9:03                                             ` Stanislaw Gruszka
2019-03-11  9:03                                             ` Stanislaw Gruszka
2019-03-11 15:47                                             ` Alexander Duyck
2019-03-11 15:47                                               ` Alexander Duyck
2019-03-11 15:47                                               ` Alexander Duyck
2019-03-12  7:08                                               ` Stanislaw Gruszka
2019-03-12  7:08                                                 ` Stanislaw Gruszka
2019-03-12 15:18                                                 ` Alexander Duyck
2019-03-12 15:18                                                   ` Alexander Duyck
2019-03-12 15:18                                                   ` Alexander Duyck
2019-03-13  9:03                                                   ` [PATCH v2] " Stanislaw Gruszka
2019-03-13  9:03                                                     ` Stanislaw Gruszka
2019-03-13  9:03                                                     ` Stanislaw Gruszka
2019-03-18 10:17                                                     ` Joerg Roedel
2019-03-18 10:17                                                       ` Joerg Roedel
     [not found]                                                     ` <20190325003822.2AB72213F2@mail.kernel.org>
2019-03-25 11:19                                                       ` Stanislaw Gruszka
2019-03-12  7:13                                           ` MT76x2U crashes XHCI driver on AMD Ryzen system Stanislaw Gruszka
2019-03-12  7:13                                             ` Stanislaw Gruszka
2019-03-12  7:13                                             ` Stanislaw Gruszka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190226103450.GA2989@redhat.com \
    --to=sgruszka@redhat.com \
    --cc=alexander.h.duyck@linux.intel.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=lorenzo.bianconi@redhat.com \
    --cc=rosenp@gmail.com \
    --cc=samuel@sieb.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.