From: Petr Tesarik <ptesarik@suse.com>
To: Oliver Neukum <oneukum@suse.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] usb: core: warn if a GFP zone flag is passed to hcd_buffer_alloc()
Date: Wed, 16 Apr 2025 12:47:36 +0200 [thread overview]
Message-ID: <20250416124736.3ac2bd55@mordecai> (raw)
In-Reply-To: <e23e72d7-e50b-4a16-b47d-5dcd7cf49641@suse.com>
On Wed, 16 Apr 2025 10:45:19 +0200
Oliver Neukum <oneukum@suse.com> wrote:
> On 16.04.25 09:48, Petr Tesarik wrote:
>
> > Oh, I do, and that's precisely why these GFP flags are no good. The
> > address (and other) constraints imposed by different buses may not
> > (and often do not) match any existing memory zone.
>
> True. So we currently have a non-portable series of flags.
> It would we better if we passed a hypothetical 'struct mem_constraint*'.
> But we don't for now.
We don't have this struct as such, but all required values are stored
directly or indirectly (dma_range_map) in struct device, which is
already passed around.
There's merely no mm API that could allocate based on these raw values,
so there are some ugly kludges to cope with most scenarios.
> > However, zone address ranges are determined statically at compile time,
> > or latest at boot time (e.g. arm64). It's too late to adjust the limits
> > when you hotplug a more constrained bus at run-time. And I haven't even
> > mentioned bus bridges which add a non-zero offset to the address...
>
> Yes. Hence the only time somebody would pass a flag like that would be
> on very arch specific code. That means that such a developer would be on
> his or her own. Hence I'd say the simplest solution is just to do nothing.
I have found no such thing in tree (with the exception of s390-specific
drivers, mentioned elsewhere in this thread). But whatever is possible
with a GFP flag is also possible by setting a bus limit.
If I stay with the USB buffer allocations, AFAICS the mem_flags
parameter should be used only for non-zone flags. If you specify,
GFP_DMA here, it will have no impact whatsoever on allocating DMA
buffers. It may unnecessarily allocate from the DMA zone for doing PIO.
Now I think I should really write an article for LWN to debunk some
myths about GFP_DMA.
HTH
Petr T
next prev parent reply other threads:[~2025-04-16 10:47 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-20 15:47 [PATCH] usb: core: do not allocate buffers from a DMA zone unnecessarily Petr Tesarik
2025-03-25 13:40 ` [PATCH v2] usb: core: warn if a GFP zone flag is passed to hcd_buffer_alloc() Petr Tesarik
2025-03-25 13:54 ` Petr Tesarik
2025-04-09 15:40 ` Petr Tesařík
2025-04-10 6:10 ` Greg Kroah-Hartman
2025-04-11 13:57 ` Greg Kroah-Hartman
2025-04-14 7:02 ` Petr Tesarik
2025-04-14 7:12 ` Greg Kroah-Hartman
2025-04-14 7:57 ` Petr Tesarik
2025-04-15 7:53 ` Oliver Neukum
2025-04-16 7:48 ` Petr Tesarik
2025-04-16 8:45 ` Oliver Neukum
2025-04-16 10:47 ` Petr Tesarik [this message]
2025-04-16 13:08 ` Oliver Neukum
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=20250416124736.3ac2bd55@mordecai \
--to=ptesarik@suse.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=oneukum@suse.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox