linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dominique MARTINET <dominique.martinet@atmark-techno.com>
To: Christoph Hellwig <hch@lst.de>
Cc: "Konrad Rzeszutek Wilk" <konrad@darnok.org>,
	"Jianxiong Gao" <jxgao@google.com>,
	"Konrad Rzeszutek Wilk" <konrad.wilk@oracle.com>,
	"Linus Torvalds" <torvalds@linux-foundation.org>,
	"Horia Geantă" <horia.geanta@nxp.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Lukas Hartmann" <lukas@mntmn.com>,
	"Aymen Sghaier" <aymen.sghaier@nxp.com>,
	"Herbert Xu" <herbert@gondor.apana.org.au>,
	"David S. Miller" <davem@davemloft.net>,
	"linux-crypto@vger.kernel.org" <linux-crypto@vger.kernel.org>,
	"iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>,
	"Marc Orr" <marcorr@google.com>,
	"Erdem Aktas" <erdemaktas@google.com>,
	"Peter Gonda" <pgonda@google.com>
Subject: Re: swiotlb/caamjr regression (Was: [GIT PULL] (swiotlb) stable/for-linus-5.12)
Date: Thu, 17 Jun 2021 14:36:24 +0900	[thread overview]
Message-ID: <YMrfWBLsJxCRhX5U@atmark-techno.com> (raw)
In-Reply-To: <20210617051232.GB27192@lst.de>

Christoph Hellwig wrote on Thu, Jun 17, 2021 at 07:12:32AM +0200:
> On Thu, Jun 17, 2021 at 09:39:15AM +0900, Dominique MARTINET wrote:
> > Konrad Rzeszutek Wilk wrote on Wed, Jun 16, 2021 at 08:27:39PM -0400:
> > > Thank you for testing that - and this is a bummer indeed.
> > 
> > Hm, actually not that surprising if it was working without the offset
> > adjustments and doing non-aligned mappings -- perhaps the nvme code just
> > needs to round the offsets down instead of expecting swiotlb to do it?
> 
> It can't.  The whole point of the series was to keep the original offsets.

Right, now I'm reading this again there are two kind of offsets (quoting
code from today's master)
---
static void swiotlb_bounce(struct device *dev, phys_addr_t tlb_addr, size_t size,
                           enum dma_data_direction dir)
{
        struct io_tlb_mem *mem = io_tlb_default_mem;
        int index = (tlb_addr - mem->start) >> IO_TLB_SHIFT;
        phys_addr_t orig_addr = mem->slots[index].orig_addr;
---

There is:
 - (tlb_addr - mem->start) alignment that Linus added up
 - mem->slots[index].orig_addr alignment (within IO_TLB_SIZE blocks)


I would assume that series made it possible to preserve offsets within a
block for orig_addr, but in the process broke the offsets of a bounce
within an memory slot (the first one) ; I assume we want to restore here
the offset within the IO_TLB_SIZE block in orig_addr so it needs another
offseting of that orig_addr offset e.g. taking a block and offsets
within blocks, we have at the start of function:

 |-----------------|-------------------|--------------------------|
 ^                 ^                   ^
 block start       slot orig addr      tlb_addr

and want the orig_addr variable to align with tlb_addr.


So I was a bit hasty in saying nvme needs to remove offsets, it's more
that current code only has the second one working while the quick fix
breaks the second one in the process of fixing the first...



Jianxiong Gao, before spending more time on this, could you also try
Chanho Park's patch?
https://lore.kernel.org/linux-iommu/20210510091816.GA2084@lst.de/T/#m0d0df6490350a08dcc24c9086c8edc165b402d6f

I frankly don't understand many details of that code at this point,
in particular I have no idea why or if the patch needs another offset
with mem->start or where the dma_get_min_align_mask(dev) comes from,
but it'll be interesting to test.


Thanks,
-- 
Dominique

  reply	other threads:[~2021-06-17  5:37 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-26 16:00 [GIT PULL] (swiotlb) stable/for-linus-5.12 Konrad Rzeszutek Wilk
2021-02-26 22:24 ` pr-tracker-bot
2021-06-08  2:35 ` swiotlb/caamjr regression (Was: [GIT PULL] (swiotlb) stable/for-linus-5.12) Dominique MARTINET
2021-06-10 14:52   ` Horia Geantă
2021-06-10 19:41     ` Linus Torvalds
2021-06-10 23:20       ` Horia Geantă
2021-06-11  6:21     ` Christoph Hellwig
2021-06-11 10:34       ` Konrad Rzeszutek Wilk
2021-06-11 10:59         ` Horia Geantă
2021-06-11 16:21         ` Linus Torvalds
2021-06-16 20:49         ` Jianxiong Gao
2021-06-17  0:27           ` Konrad Rzeszutek Wilk
2021-06-17  0:39             ` Dominique MARTINET
2021-06-17  5:12               ` Christoph Hellwig
2021-06-17  5:36                 ` Dominique MARTINET [this message]
2021-06-18 18:01                   ` Jianxiong Gao
2021-06-21  2:03                     ` Dominique MARTINET
2021-06-21  2:55                       ` Chanho Park
2021-06-21  4:14                         ` 'Dominique MARTINET'
2021-06-21 13:16                           ` Konrad Rzeszutek Wilk
2021-06-22  7:48                             ` 'Dominique MARTINET'
2021-06-22 21:58                               ` Konrad Rzeszutek Wilk
2021-06-22 23:04                                 ` 'Dominique MARTINET'
2021-06-17 11:33             ` Christoph Hellwig
2021-06-11 16:01       ` Linus Torvalds

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=YMrfWBLsJxCRhX5U@atmark-techno.com \
    --to=dominique.martinet@atmark-techno.com \
    --cc=aymen.sghaier@nxp.com \
    --cc=davem@davemloft.net \
    --cc=erdemaktas@google.com \
    --cc=hch@lst.de \
    --cc=herbert@gondor.apana.org.au \
    --cc=horia.geanta@nxp.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jxgao@google.com \
    --cc=konrad.wilk@oracle.com \
    --cc=konrad@darnok.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lukas@mntmn.com \
    --cc=marcorr@google.com \
    --cc=pgonda@google.com \
    --cc=torvalds@linux-foundation.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).