From: Alan Stern <stern@rowland.harvard.edu>
To: Greg KH <greg@kroah.com>
Cc: Piergiorgio Sartor <piergiorgio.sartor@nexgo.de>,
Seth Bollinger <Seth.Bollinger@digi.com>,
Christoph Hellwig <hch@lst.de>, Jens Axboe <axboe@kernel.dk>,
USB list <linux-usb@vger.kernel.org>
Subject: [PATCH] usb-storage: Revert commit 747668dbc061 ("usb-storage: Set virt_boundary_mask to avoid SG overflows")
Date: Mon, 21 Oct 2019 11:48:06 -0400 (EDT) [thread overview]
Message-ID: <Pine.LNX.4.44L0.1910211145520.1673-100000@iolanthe.rowland.org> (raw)
In-Reply-To: <20191017175306.GA3014@lazy.lzy>
Commit 747668dbc061 ("usb-storage: Set virt_boundary_mask to avoid SG
overflows") attempted to solve a problem involving scatter-gather I/O
and USB/IP by setting the virt_boundary_mask for mass-storage devices.
However, it now turns out that this interacts badly with commit
09324d32d2a0 ("block: force an unlimited segment size on queues with a
virt boundary"), which was added later. A typical error message is:
ehci-pci 0000:00:13.2: swiotlb buffer is full (sz: 327680 bytes),
total 32768 (slots), used 97 (slots)
There is no longer any reason to keep the virt_boundary_mask setting
for usb-storage. It was needed in the first place only for handling
devices with a block size smaller than the maxpacket size and where
the host controller was not capable of fully general scatter-gather
operation (that is, able to merge two SG segments into a single USB
packet). But:
High-speed or slower connections never use a bulk maxpacket
value larger than 512;
The SCSI layer does not handle block devices with a block size
smaller than 512 bytes;
All the host controllers capable of SuperSpeed operation can
handle fully general SG;
Since commit ea44d190764b ("usbip: Implement SG support to
vhci-hcd and stub driver") was merged, the USB/IP driver can
also handle SG.
Therefore all supported device/controller combinations should be okay
with no need for any special virt_boundary_mask. So in order to fix
the swiotlb problem, this patch reverts commit 747668dbc061.
Reported-and-tested-by: Piergiorgio Sartor <piergiorgio.sartor@nexgo.de>
Link: https://marc.info/?l=linux-usb&m=157134199501202&w=2
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: Seth Bollinger <Seth.Bollinger@digi.com>
CC: <stable@vger.kernel.org>
---
[as1922]
drivers/usb/storage/scsiglue.c | 10 ----------
1 file changed, 10 deletions(-)
Index: usb-devel/drivers/usb/storage/scsiglue.c
===================================================================
--- usb-devel.orig/drivers/usb/storage/scsiglue.c
+++ usb-devel/drivers/usb/storage/scsiglue.c
@@ -68,7 +68,6 @@ static const char* host_info(struct Scsi
static int slave_alloc (struct scsi_device *sdev)
{
struct us_data *us = host_to_us(sdev->host);
- int maxp;
/*
* Set the INQUIRY transfer length to 36. We don't use any of
@@ -78,15 +77,6 @@ static int slave_alloc (struct scsi_devi
sdev->inquiry_len = 36;
/*
- * USB has unusual scatter-gather requirements: the length of each
- * scatterlist element except the last must be divisible by the
- * Bulk maxpacket value. Fortunately this value is always a
- * power of 2. Inform the block layer about this requirement.
- */
- maxp = usb_maxpacket(us->pusb_dev, us->recv_bulk_pipe, 0);
- blk_queue_virt_boundary(sdev->request_queue, maxp - 1);
-
- /*
* Some host controllers may have alignment requirements.
* We'll play it safe by requiring 512-byte alignment always.
*/
next prev parent reply other threads:[~2019-10-21 15:48 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-17 9:54 reeze while write on external usb 3.0 hard disk [Bug 204095] Piergiorgio Sartor
2019-08-19 14:14 ` Alan Stern
2019-08-20 7:23 ` Christoph Hellwig
2019-08-20 16:37 ` Piergiorgio Sartor
2019-08-26 17:38 ` Piergiorgio Sartor
2019-08-29 14:08 ` Christoph Hellwig
2019-09-25 17:07 ` Piergiorgio Sartor
2019-09-25 18:31 ` Alan Stern
2019-09-27 9:04 ` Peter Chen
2019-09-29 20:13 ` Piergiorgio Sartor
2019-09-30 1:01 ` Alan Stern
2019-09-30 18:25 ` Piergiorgio Sartor
2019-10-13 18:11 ` Piergiorgio Sartor
2019-10-16 17:01 ` Alan Stern
2019-10-17 17:53 ` Piergiorgio Sartor
2019-10-17 19:23 ` Alan Stern
2019-11-08 23:05 ` Piergiorgio Sartor
2019-10-21 15:48 ` Alan Stern [this message]
2019-10-23 1:53 ` [PATCH] usb-storage: Revert commit 747668dbc061 ("usb-storage: Set virt_boundary_mask to avoid SG overflows") Christoph Hellwig
2019-10-23 14:12 ` Alan Stern
2019-10-23 15:34 ` [PATCH] UAS: Revert commit 3ae62a42090f ("UAS: fix alignment of scatter/gather segments") Alan Stern
2019-10-24 1:10 ` Christoph Hellwig
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=Pine.LNX.4.44L0.1910211145520.1673-100000@iolanthe.rowland.org \
--to=stern@rowland.harvard.edu \
--cc=Seth.Bollinger@digi.com \
--cc=axboe@kernel.dk \
--cc=greg@kroah.com \
--cc=hch@lst.de \
--cc=linux-usb@vger.kernel.org \
--cc=piergiorgio.sartor@nexgo.de \
/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).