From: Christoph Hellwig <hch@lst.de>
To: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Cc: amit.pundir@linaro.org, linux-kernel@vger.kernel.org,
jeremy.linton@arm.com, iommu@lists.linux-foundation.org,
linux-rpi-kernel@lists.infradead.org, rientjes@google.com,
Robin Murphy <robin.murphy@arm.com>,
Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH v3 2/2] dma-pool: Only allocate from CMA when in same memory zone
Date: Fri, 14 Aug 2020 08:06:42 +0200 [thread overview]
Message-ID: <20200814060642.GA1338@lst.de> (raw)
In-Reply-To: <20200808063354.GA17329@lst.de>
On Sat, Aug 08, 2020 at 08:33:54AM +0200, Christoph Hellwig wrote:
> On Fri, Aug 07, 2020 at 10:50:19AM +0200, Nicolas Saenz Julienne wrote:
> > On Fri, 2020-08-07 at 07:21 +0200, Christoph Hellwig wrote:
> > > On Thu, Aug 06, 2020 at 08:47:55PM +0200, Nicolas Saenz Julienne wrote:
> > > > There is no guarantee to CMA's placement, so allocating a zone specific
> > > > atomic pool from CMA might return memory from a completely different
> > > > memory zone. To get around this double check CMA's placement before
> > > > allocating from it.
> > >
> > > As the builtbot pointed out, memblock_start_of_DRAM can't be used from
> > > non-__init code. But lookig at it I think throwing that in
> > > is bogus anyway, as cma_get_base returns a proper physical address
> > > already.
> >
> > It does indeed, but I'm comparing CMA's base with bitmasks that don't take into
> > account where the memory starts. Say memory starts at 0x80000000, and CMA falls
> > into ZONE_DMA [0x80000000 0xC0000000], if you want to compare it with
> > DMA_BIT_MASK(zone_dma_bits) you're forced to unify the memory bases.
> >
> > That said, I now realize that this doesn't work for ZONE_DMA32 which has a hard
> > limit on 32bit addresses reglardless of the memory base.
> >
> > That said I still need to call memblock_start_of_DRAM() any suggestions WRT
> > that? I could save the value in dma_atomic_pool_init(), which is __init code.
>
> The pool must be about a 32-bit physical address. The offsets can be
> different for every device..
Do you plan to resend this one without the memblock_start_of_DRAM
thingy?
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Cc: amit.pundir@linaro.org, linux-kernel@vger.kernel.org,
jeremy.linton@arm.com, iommu@lists.linux-foundation.org,
linux-rpi-kernel@lists.infradead.org, rientjes@google.com,
Robin Murphy <robin.murphy@arm.com>,
Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH v3 2/2] dma-pool: Only allocate from CMA when in same memory zone
Date: Fri, 14 Aug 2020 08:06:42 +0200 [thread overview]
Message-ID: <20200814060642.GA1338@lst.de> (raw)
In-Reply-To: <20200808063354.GA17329@lst.de>
On Sat, Aug 08, 2020 at 08:33:54AM +0200, Christoph Hellwig wrote:
> On Fri, Aug 07, 2020 at 10:50:19AM +0200, Nicolas Saenz Julienne wrote:
> > On Fri, 2020-08-07 at 07:21 +0200, Christoph Hellwig wrote:
> > > On Thu, Aug 06, 2020 at 08:47:55PM +0200, Nicolas Saenz Julienne wrote:
> > > > There is no guarantee to CMA's placement, so allocating a zone specific
> > > > atomic pool from CMA might return memory from a completely different
> > > > memory zone. To get around this double check CMA's placement before
> > > > allocating from it.
> > >
> > > As the builtbot pointed out, memblock_start_of_DRAM can't be used from
> > > non-__init code. But lookig at it I think throwing that in
> > > is bogus anyway, as cma_get_base returns a proper physical address
> > > already.
> >
> > It does indeed, but I'm comparing CMA's base with bitmasks that don't take into
> > account where the memory starts. Say memory starts at 0x80000000, and CMA falls
> > into ZONE_DMA [0x80000000 0xC0000000], if you want to compare it with
> > DMA_BIT_MASK(zone_dma_bits) you're forced to unify the memory bases.
> >
> > That said, I now realize that this doesn't work for ZONE_DMA32 which has a hard
> > limit on 32bit addresses reglardless of the memory base.
> >
> > That said I still need to call memblock_start_of_DRAM() any suggestions WRT
> > that? I could save the value in dma_atomic_pool_init(), which is __init code.
>
> The pool must be about a 32-bit physical address. The offsets can be
> different for every device..
Do you plan to resend this one without the memblock_start_of_DRAM
thingy?
next prev parent reply other threads:[~2020-08-14 6:06 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-06 18:47 [PATCH v3 0/2] dma-pool fixes Nicolas Saenz Julienne
2020-08-06 18:47 ` Nicolas Saenz Julienne
2020-08-06 18:47 ` [PATCH v3 1/2] dma-pool: fix coherent pool allocations for IOMMU mappings Nicolas Saenz Julienne
2020-08-06 18:47 ` Nicolas Saenz Julienne
2020-08-06 18:47 ` [PATCH v3 2/2] dma-pool: Only allocate from CMA when in same memory zone Nicolas Saenz Julienne
2020-08-06 18:47 ` Nicolas Saenz Julienne
2020-08-07 0:16 ` kernel test robot
2020-08-07 0:16 ` kernel test robot
2020-08-07 0:16 ` kernel test robot
2020-08-07 5:21 ` Christoph Hellwig
2020-08-07 5:21 ` Christoph Hellwig
2020-08-07 8:50 ` Nicolas Saenz Julienne
2020-08-07 8:50 ` Nicolas Saenz Julienne
2020-08-08 6:33 ` Christoph Hellwig
2020-08-08 6:33 ` Christoph Hellwig
2020-08-14 6:06 ` Christoph Hellwig [this message]
2020-08-14 6:06 ` Christoph Hellwig
2020-08-14 10:03 ` Nicolas Saenz Julienne
2020-08-14 10:03 ` Nicolas Saenz Julienne
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=20200814060642.GA1338@lst.de \
--to=hch@lst.de \
--cc=amit.pundir@linaro.org \
--cc=iommu@lists.linux-foundation.org \
--cc=jeremy.linton@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rpi-kernel@lists.infradead.org \
--cc=nsaenzjulienne@suse.de \
--cc=rientjes@google.com \
--cc=robin.murphy@arm.com \
/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.