From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>,
"Juergen E. Fischer" <fischer@norbit.de>,
Alan Stern <stern@rowland.harvard.edu>,
Andrew Morton <akpm@linux-foundation.org>,
linux-block@vger.kernel.org, linux-scsi@vger.kernel.org,
linux-usb@vger.kernel.org, usb-storage@lists.one-eyed-alien.net,
linux-mm@kvack.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Hannes Reinecke <hare@suse.de>
Subject: [PATCH 4/7] usb-storage: reject probe of device one non-DMA HCDs when using highmem
Date: Mon, 5 May 2025 10:11:23 +0200 [thread overview]
Message-ID: <20250505081138.3435992-5-hch@lst.de> (raw)
In-Reply-To: <20250505081138.3435992-1-hch@lst.de>
usb-storage is the last user of the block layer bounce buffering now,
and only uses it for HCDs that do not support DMA on highmem configs.
Remove this support and fail the probe so that the block layer bounce
buffering can go away.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
---
drivers/usb/storage/usb.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
index d36f3b6992bb..152ee3376550 100644
--- a/drivers/usb/storage/usb.c
+++ b/drivers/usb/storage/usb.c
@@ -1056,13 +1056,20 @@ int usb_stor_probe1(struct us_data **pus,
goto BadDevice;
/*
- * Some USB host controllers can't do DMA; they have to use PIO.
- * For such controllers we need to make sure the block layer sets
- * up bounce buffers in addressable memory.
+ * Some USB host controllers can't do DMA: They have to use PIO, or they
+ * have to use a small dedicated local memory area, or they have other
+ * restrictions on addressable memory.
+ *
+ * We can't support these controllers on highmem systems as we don't
+ * kmap or bounce buffer.
*/
- if (!hcd_uses_dma(bus_to_hcd(us->pusb_dev->bus)) ||
- bus_to_hcd(us->pusb_dev->bus)->localmem_pool)
- host->no_highmem = true;
+ if (IS_ENABLED(CONFIG_HIGHMEM) &&
+ (!hcd_uses_dma(bus_to_hcd(us->pusb_dev->bus)) ||
+ bus_to_hcd(us->pusb_dev->bus)->localmem_pool)) {
+ dev_warn(&intf->dev, "USB Mass Storage not supported on this host controller\n");
+ result = -EINVAL;
+ goto release;
+ }
/* Get the unusual_devs entries and the descriptors */
result = get_device_info(us, id, unusual_dev);
@@ -1081,6 +1088,7 @@ int usb_stor_probe1(struct us_data **pus,
BadDevice:
usb_stor_dbg(us, "storage_probe() failed\n");
+release:
release_everything(us);
return result;
}
--
2.47.2
next prev parent reply other threads:[~2025-05-05 8:12 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-05 8:11 remove block layer bounce buffering v2 Christoph Hellwig
2025-05-05 8:11 ` [PATCH 1/7] scsi: make aha152x depend on !HIGHMEM Christoph Hellwig
2025-05-05 10:16 ` John Garry
2025-05-05 8:11 ` [PATCH 2/7] scsi: make imm " Christoph Hellwig
2025-05-05 10:16 ` John Garry
2025-05-05 8:11 ` [PATCH 3/7] scsi: make ppa " Christoph Hellwig
2025-05-05 10:16 ` John Garry
2025-05-05 8:11 ` Christoph Hellwig [this message]
2025-05-05 14:13 ` [PATCH 4/7] usb-storage: reject probe of device one non-DMA HCDs when using highmem Alan Stern
2025-05-05 8:11 ` [PATCH 5/7] scsi: remove the no_highmem flag in the host Christoph Hellwig
2025-05-05 10:14 ` John Garry
2025-05-05 8:11 ` [PATCH 6/7] block: remove bounce buffering support Christoph Hellwig
2025-05-05 12:04 ` John Garry
2025-05-05 8:11 ` [PATCH 7/7] mm: remove NR_BOUNCE zone stat Christoph Hellwig
2025-05-05 8:41 ` remove block layer bounce buffering v2 Johannes Thumshirn
2025-05-05 19:23 ` Jens Axboe
-- strict thread matches above, loose matches on Subject: below --
2025-05-02 6:49 remove block layer bounce buffering Christoph Hellwig
2025-05-02 6:49 ` [PATCH 4/7] usb-storage: reject probe of device one non-DMA HCDs when using highmem Christoph Hellwig
2025-05-02 7:02 ` Greg KH
2025-05-02 13:21 ` Alan Stern
2025-05-02 7:25 ` Hannes Reinecke
2025-05-02 8:48 ` Sergey Shtylyov
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=20250505081138.3435992-5-hch@lst.de \
--to=hch@lst.de \
--cc=akpm@linux-foundation.org \
--cc=axboe@kernel.dk \
--cc=fischer@norbit.de \
--cc=gregkh@linuxfoundation.org \
--cc=hare@suse.de \
--cc=linux-block@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=stern@rowland.harvard.edu \
--cc=usb-storage@lists.one-eyed-alien.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox