All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Larsson <andreas@gaisler.com>
To: Arnd Bergmann <arnd@arndb.de>, Sam Ravnborg <sam@ravnborg.org>,
	"Maciej W. Rozycki" <macro@orcam.me.uk>,
	sparclinux@vger.kernel.org, Randy Dunlap <rdunlap@infradead.org>
Cc: Miquel Raynal <miquel.raynal@bootlin.com>,
	linux-parport@lists.infradead.org,
	"David S . Miller" <davem@davemloft.net>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 4/7] sparc32: Do not select ZONE_DMA
Date: Wed, 6 Mar 2024 16:31:35 +0100	[thread overview]
Message-ID: <5d97d50a-9d40-4651-8071-073dee5f9aa8@gaisler.com> (raw)
In-Reply-To: <75a4a08d-85c2-4a60-9cbd-90dd50f765a8@app.fastmail.com>

On 2024-03-06 15:45, Arnd Bergmann wrote:
>> Testing, in a different driver, setting and
>> allocating under a 30-bit DMA mask (or even a 28-bit DMA mask depending
>> on where the physical memory resides) is possible before removing
>> ZONE_DMA, but not after. 
> 
> I still don't see how that changes anything if
> max_zone_pfn[ZONE_DMA] and max_zone_pfn[ZONE_NORMAL] are set
> to the same value. Did you test this on a mainline kernel, or
> do you have any patches on top that might have set up
> the zones differently?

This was tested on my for-next plus this patch series, i.e. v6.8-rc1
plus these ones:

(local)       sparc32: Fix section mismatch in leon_pci_grpci
(local)       sparc32: Fix parport build with sparc32
(local)       sparc32: Do not select GENERIC_ISA_DMA
(local)       sparc32: Do not select ZONE_DMA
(local)       mtd: maps: sun_uflash: Declare uflash_devinit static
(local)       sparc32: Fix build with trapbase
(local)       sparc32: Use generic cmpdi2/ucmpdi2 variants
626db6ee8ee1e sparc: select FRAME_POINTER instead of redefining it
5378f00c935be sparc: vDSO: fix return value of __setup handler
3ed7c61e49d65 sparc64: NMI watchdog: fix return value of __setup handler
079431ea9ed3e sparc: vio: make vio_bus_type const
3cc208ffa84a7 sparc: Fix typos
0f1991949d9bd sparc: Use shared font data
0955723ef9358 sparc: remove obsolete config ARCH_ATU

so nothing else that should affect zones.

> More specifically, what do you see in the boot log for the
> size of each zone? 

dma_set_mask_and_coherent(dev, DMA_BIT_MASK(28)) fails with
the ZONE_DMA removed, and no other differences. Boot log:

831MB HIGHMEM available.
Zone ranges:
  Normal   [mem 0x0000000000000000-0x000000000bffffff]
  HighMem  [mem 0x000000000c000000-0x000000003fff7fff]
Movable zone start for each node
Early memory node ranges
  node   0: [mem 0x0000000000000000-0x000000003fff7fff]
Initmem setup node 0 [mem 0x0000000000000000-0x000000003fff7fff]


dma_set_mask_and_coherent(dev, DMA_BIT_MASK(28)) succeeds with
ZONE_DMA still in place (i.e. the above plus the ZONE_DMA patch
reverted and no other differences). Boot log:

831MB HIGHMEM available.
Zone ranges:
  DMA      [mem 0x0000000000000000-0x000000000bffffff]
  Normal   empty
  HighMem  [mem 0x000000000c000000-0x000000003fff7fff]
Movable zone start for each node
Early memory node ranges
  node   0: [mem 0x0000000000000000-0x000000003fff7fff]
Initmem setup node 0 [mem 0x0000000000000000-0x000000003fff7fff]


> 
>> I am also a bit concerned if removing ZONE_DMA will let DMA be allocated
>> in highmem and what that could lead to.
> 
> It's not supposed to make a difference, but this is a bit
> more complex:
> 
> - Any kernel allocation (kmalloc etc) by definition comes from
>   lowmem, regardless of GFP_DMA/GFP_KERNEL.
> 
> - user pages that get mapped using dma_map_sg() or dma_map_page()
>   can be in highmem, but this should not depend on the presence
>   of ZONE_DMA
> 
> - If you have devices that can only access a subset of the RAM
>   and there is no IOMMU, you really need to use swiotlb to
>   make it use bounce buffers, at least for the streaming
>   (dma_map_*) API. A driver using only the coherent (dma_alloc_*)
>   API should use ZONE_DMA if ZONE_NORMAL goes beyond the
>   dma mask.
Thanks for the explanation!

Cheers,
Andreas


  reply	other threads:[~2024-03-06 15:31 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-24 17:42 [PATCH v2 0/7] sparc32: build fixes for all{yes,mod}config builds Sam Ravnborg via B4 Relay
2024-02-24 17:42 ` Sam Ravnborg
2024-02-24 17:42 ` [PATCH v2 1/7] sparc32: Use generic cmpdi2/ucmpdi2 variants Sam Ravnborg via B4 Relay
2024-02-24 17:42   ` Sam Ravnborg
2024-03-08 20:00   ` Andreas Larsson
2024-02-24 17:42 ` [PATCH v2 2/7] sparc32: Fix build with trapbase Sam Ravnborg via B4 Relay
2024-02-24 17:42   ` Sam Ravnborg
2024-03-08 20:01   ` Andreas Larsson
2024-02-24 17:42 ` [PATCH v2 3/7] mtd: maps: sun_uflash: Declare uflash_devinit static Sam Ravnborg via B4 Relay
2024-02-24 17:42   ` Sam Ravnborg
2024-02-26 10:23   ` Miquel Raynal
2024-03-08 20:02   ` Andreas Larsson
2024-02-24 17:42 ` [PATCH v2 4/7] sparc32: Do not select ZONE_DMA Sam Ravnborg via B4 Relay
2024-02-24 17:42   ` Sam Ravnborg
2024-02-25  0:57   ` Maciej W. Rozycki
2024-02-25  7:08     ` Sam Ravnborg
2024-03-02 23:51   ` Randy Dunlap
2024-03-05 15:06   ` Andreas Larsson
2024-03-05 15:26     ` Arnd Bergmann
2024-03-06 14:19       ` Andreas Larsson
2024-03-06 14:45         ` Arnd Bergmann
2024-03-06 15:31           ` Andreas Larsson [this message]
2024-03-06 16:22             ` Arnd Bergmann
2024-03-06 18:19               ` Arnd Bergmann
2024-03-07 12:42                 ` Andreas Larsson
2024-03-07 13:06                   ` Arnd Bergmann
2024-03-06 15:04         ` Christoph Hellwig
2024-03-06 15:24           ` Arnd Bergmann
2024-02-24 17:42 ` [PATCH v2 5/7] sparc32: Do not select GENERIC_ISA_DMA Sam Ravnborg via B4 Relay
2024-02-24 17:42   ` Sam Ravnborg
2024-03-08 20:03   ` Andreas Larsson
2024-03-09  9:04     ` Maciej W. Rozycki
2024-02-24 17:42 ` [PATCH v2 6/7] sparc32: Fix parport build with sparc32 Sam Ravnborg via B4 Relay
2024-02-24 17:42   ` Sam Ravnborg
2024-03-02 23:52   ` Randy Dunlap
2024-03-08 20:04   ` Andreas Larsson
2024-03-09  9:06     ` Maciej W. Rozycki
2024-02-24 17:42 ` [PATCH v2 7/7] sparc32: Fix section mismatch in leon_pci_grpci Sam Ravnborg via B4 Relay
2024-02-24 17:42   ` Sam Ravnborg
2024-03-02 23:54   ` Randy Dunlap
2024-03-05 15:06   ` Andreas Larsson
2024-03-07 18:20     ` Andreas Larsson
2024-03-07 20:16       ` Maciej W. Rozycki
2024-03-08  7:06         ` Andreas Larsson
2024-03-08 12:09           ` Maciej W. Rozycki
2024-03-08 22:08       ` Sam Ravnborg
2024-03-08 20:07   ` Andreas Larsson

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=5d97d50a-9d40-4651-8071-073dee5f9aa8@gaisler.com \
    --to=andreas@gaisler.com \
    --cc=arnd@arndb.de \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-parport@lists.infradead.org \
    --cc=macro@orcam.me.uk \
    --cc=miquel.raynal@bootlin.com \
    --cc=rdunlap@infradead.org \
    --cc=sam@ravnborg.org \
    --cc=sparclinux@vger.kernel.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 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.