From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id DD8BBC3ABAA for ; Fri, 2 May 2025 13:19:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id ABD106B0088; Fri, 2 May 2025 09:19:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A41EE6B0089; Fri, 2 May 2025 09:19:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8BBF36B008A; Fri, 2 May 2025 09:19:31 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 697666B0088 for ; Fri, 2 May 2025 09:19:31 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 331A71A1A0C for ; Fri, 2 May 2025 13:19:32 +0000 (UTC) X-FDA: 83398024584.25.27708B1 Received: from mail-qv1-f51.google.com (mail-qv1-f51.google.com [209.85.219.51]) by imf28.hostedemail.com (Postfix) with ESMTP id 3B5B9C0010 for ; Fri, 2 May 2025 13:19:30 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=rowland.harvard.edu header.s=google header.b=sBhhLm7B; dmarc=pass (policy=none) header.from=rowland.harvard.edu; spf=pass (imf28.hostedemail.com: domain of stern@g.harvard.edu designates 209.85.219.51 as permitted sender) smtp.mailfrom=stern@g.harvard.edu ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746191970; a=rsa-sha256; cv=none; b=611O0C9+mC7vwArV1wrGiIDdUhYcrtkBMlpopJNTFbdlBfhQeiZzrUBR7H9gjDNJUGqo53 eG5gkD4kcsbqOWwUqt0QTStlH7nLAeA+67AnL9Lh3eXv5bdd7Agxwp6MXoXuepXlqxlTUj xnSti9bq43QqIe+4991COCDRpnSzaQI= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=rowland.harvard.edu header.s=google header.b=sBhhLm7B; dmarc=pass (policy=none) header.from=rowland.harvard.edu; spf=pass (imf28.hostedemail.com: domain of stern@g.harvard.edu designates 209.85.219.51 as permitted sender) smtp.mailfrom=stern@g.harvard.edu ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746191970; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=5WUJiFwz9tA1axHBomA0f5a1PzA/tnvyABxskYnOa/4=; b=OxN/HY7eylc7RLlycNMbm2n5zipUZSWA4irb6bJTsiNAvBv30JnNBNBr1dyJslpB6CJ6ZX od1CH48UATEi5ZkBLxhKEmxg11hLo4p1Ij/kYYDXlsJJyU2RTiVfYfO/VwGOvpWl+X7wFp C90HLmvsasGCDgflbcUUm1Shu8WL6Z8= Received: by mail-qv1-f51.google.com with SMTP id 6a1803df08f44-6f4e3618437so24971236d6.1 for ; Fri, 02 May 2025 06:19:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rowland.harvard.edu; s=google; t=1746191969; x=1746796769; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=5WUJiFwz9tA1axHBomA0f5a1PzA/tnvyABxskYnOa/4=; b=sBhhLm7Bf5BYCx7/Xc3TCzmDS+q8e3GhfY2ucuxHj5hIgU68BP0ytYwT98M0Mr0eRz G+iEkIhLEVbKA7sz2qpOs9t1XrDPJJYsvFedo2t3DyqqtNFcVpSjGQn2RGmxM/LSqfdT /gME2Up1mw5DzX4q3gfkd6k+Mz+ACLxEwqEKLNnSwh3wJ6xkM/+3iHhtqOCut+DSZaJj FDi5nSIDlcj2jKBFqio14s5Z2WyeYkF8hdeNvqpXFvKElvxO9n+k4+GkQYCd5RGJUu4Y 8+t8zikmMXebLrXs0w0c8QPSbxBs9SvPK4Pw9w/01iY5fFr0sW0GqXHuZPyi34NrfyCK Xxnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746191969; x=1746796769; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5WUJiFwz9tA1axHBomA0f5a1PzA/tnvyABxskYnOa/4=; b=OOLC26ILvzafaa6o38Gyg+iHElSOzq72YRoz5N2ktwj8gyRh7zILlXoTErFNxoLSw7 xoT4MJEcVNhCk4g7weJdYtdTlIEK1WrWYbi551IoBxCoNFbp1ieVpN6K7ekUdyqYiLaO +eB2FjSNEeu+1QbIkfkDzR5CYn56gMzhnmehEiylG+bdT2HBMCo08qM+5DRMj+LcFlAl Ndz1+8050k34xsIK+AESc4J041Pi/cu42w6vNOwQxMvIl63f0CC1fMthgmogu+iDVi1z j4VL1KI8nWqTKOSS1wM8sKCY0hPea1Z2KvyRQaPf/5ygJWnMpvLG489Dp9PrGHL1srYU GJgw== X-Forwarded-Encrypted: i=1; AJvYcCUWvOlZM40nuhqzQcPad2r7pr5PWjC2M+PFCjBC87Lcve5VfuBg99BVHwrR4ozdk2H1LDM2Wz/mmg==@kvack.org X-Gm-Message-State: AOJu0YxM3dxTYoASshKBPzFvEdRJ6P1D9IMJun85Wb80dWG73E82Qagz cIbfBXqtX0IYbt7fzzLf2B3bGybAc+1hXdjcC3OmFCfluhH2pgapwcSgY3jjRQ== X-Gm-Gg: ASbGncsP64X7Zwn0SNy0ulYpz7bwu9DiiI8xTa9dLwNfhYSIxmqBbpCOs5eXENZW2CY zOyvSa67arT+BjE5v6zGoPBfvlDzg8orBTI9SgW60GGSA0NtKMvsWJIT/oiz3A6MHSEOBHwfXdB PVPJJPsS36vTWyUd+F8+bVbLcEaz0T7u4b++zJrMGrkdN2igZvZ4adw5+coO8Gg3Xt+CDaECDxd q/0akWTnpotB7peQcdg8JEAaXp7xvi1HzAcpsjG/qpUNqwxmKRB2NxFLcq0AG/Z5ALzZ4lrSExV gc9XdWsQuXQVauk1ZVIr5GMScJ2nfaJmma70/JT+bw== X-Google-Smtp-Source: AGHT+IGlcBwB16tahLVxdSB0Wot3Tj6EDv1iYyh3TXaKw2DqKck7oKxQGfqXc0Is+sHoX1UBlXJWxA== X-Received: by 2002:a05:6214:21eb:b0:6ec:f51f:30e9 with SMTP id 6a1803df08f44-6f515255abamr46140116d6.4.1746191969163; Fri, 02 May 2025 06:19:29 -0700 (PDT) Received: from rowland.harvard.edu ([2601:19b:681:fd10::283f]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6f50f3b0556sm18196596d6.17.2025.05.02.06.19.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 May 2025 06:19:28 -0700 (PDT) Date: Fri, 2 May 2025 09:19:25 -0400 From: Alan Stern To: Christoph Hellwig Cc: Jens Axboe , "Martin K. Petersen" , "Juergen E. Fischer" , Andrew Morton , 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 Subject: Re: [usb-storage] [PATCH 4/7] usb-storage: reject probe of device one non-DMA HCDs when using highmem Message-ID: <34cb4621-5275-4c46-b652-01a4a708b4de@rowland.harvard.edu> References: <20250502064930.2981820-1-hch@lst.de> <20250502064930.2981820-5-hch@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250502064930.2981820-5-hch@lst.de> X-Rspam-User: X-Rspamd-Queue-Id: 3B5B9C0010 X-Rspamd-Server: rspam04 X-Stat-Signature: tdf9pq7r7sgyt9rykyjhy6rpafwpu4dy X-HE-Tag: 1746191970-724213 X-HE-Meta: U2FsdGVkX1/34QCkXE+1gm4bAgfkj12p/W7xAdOXyZLEEi/LxtL3GX6CqsjnXm2CYQWV7Bqg1TvvxLRRPwBuSQ3v8MWyW3H9Pj0itIHZKOe+C76t8CaJWQfObwhdiHYN2JB5FkI4w8hyaR664EXKJS3u+pRu0me17/ycb7yxxPwfPYbbCdpnVu6R4z2ZZTDRUEaGDU4WEBuxoNVnSHLJ5i5G9s1RfnksL2/QsI/PMTABjEKBLewI81ANW5FMjcUijvd00TjK8aBfuJqZon/Uha0GNaKRngV7dNxVyTrwdlpdODBnCsIOkgdKhPA5XWzXNjz7h/KeyV/22ql9gsnHq481TkatFkAcOnRqmp+ivH3CctsYgtp0H1b6BInTho/fqUzrMpsPXmrdx87AuiSl61XLNkPtQ64yBkNUTsKZvh5qk91qaZQlQYUKJ/Hi/RQ3ibcxgJS5yDt3OS/TYQRNu12zDsODBwpUNahicbIRUuZWYvOn1j7yVDrmKVkQnbrooAlz/tnojR9lyf+yDQ634K78t//Gk9qwP3WVMbVPdfhZmo4t43H/qgyW6JEAtUwn4p5YIACIT01x7cdt+gZIegm/euiQPqcQ/fF3yBirahLMpWG70/NY/BEwvyT0aNj/rkMuaJLgemTubEZHf4I/AFUZlPPdpS1Cs5jhzHGYRk0OVxAWQon/tYDAZf9xgmYBEhtqzQwxLs9eL1FB+tdduKou8dbtYz+jeSVicAOG6j0FGQa/41zLTOXKqSDCLkHfN1nCA5E29CWcuANVSyklVZS3PRnA7nbVpjNn7UXpovQO8yj66WZJ3tPKbPNtBMz2iX3qPd0EB3Gvthov3S3Kh4uUIi/VPPg7HBZPgBE20nw6Fkt8zDcj17I6dnODWlhudE2Ddo9Ek6EomWUjNHSiCjkbkZDA8WyvR80lCBygMz/PjQLHjUE9FIGPxN2t8fnrdzmVowPqUrqPKTbHDGV P293MP9X 38IequBGijqWpahyfcFcUUH+cJiJZ0Mf7XlpCG7m9H93RUtcdnrOmkVq4yjelM1gmpDleMiX12oBUfWPnVZQeuymWgPMmxgwgcTI6TfzoxPN2DWxCUO56rmAO9Yhn2MwKPajhnbUwgi7DK/Y/s67f/bTMxngC5HS7ZwcthYi2v/wQ4FVvv0pYxRIEypsCzIiEKPI16Nvl1UaVXK/wJO2ylkp5iqQdI4S7OPtIDUuB065kAbEAXDv+UtdCTETC6vZ+HrGfMybZD4jChjf4Ltknsw4jgCj7CNb4JjOxdy7aNfFxsK2I6My+loY/SP3s+KddsrAezKmu4/TwFa6NVZx6h2mBTqJHEOlsI7JSFg82Ib9bh7LKAHdrW5R7KxTpDzxhex6XtVqTAx/SXJoLy2v0asQmGS0KcMB8TVMIoNPw6dxz/MBcbZ7TxfVO84K4xzmS0Km7zp0bI56mRKCp2h4UmjwSzj54RDR8RAYpdtggCXT3D0qBGRIhlt4MD5tm++WHI3gm2++wujNp24zn7zFEhQLxXgot8wapMtTl X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri, May 02, 2025 at 07:49:21AM +0100, Christoph Hellwig wrote: > 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. I'm not certain this reasoning is correct. The code being changed is pretty old; it may be that the relevant HCDs now implement bounce buffering on their own. However, the combination of USB mass storage with these restricted host controllers is probably pretty rare. > Signed-off-by: Christoph Hellwig > --- > drivers/usb/storage/usb.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c > index d36f3b6992bb..49bbfe4610d5 100644 > --- a/drivers/usb/storage/usb.c > +++ b/drivers/usb/storage/usb.c > @@ -1057,12 +1057,15 @@ int usb_stor_probe1(struct us_data **pus, > > /* > * Some USB host controllers can't do DMA; they have to use PIO. I'd like to see this part of the comment updated: * 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. That explains the reason for the check of hcd->localmem_pool. > - * For such controllers we need to make sure the block layer sets > - * up bounce buffers in addressable memory. > + * We can't support these controllers on highmem systems as the > + * usb-storage code lacks the code to kmap or bounce buffer. This looks a little stange. How about instead: ... as we don't kmap or bounce buffers. > */ > - 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 device not support on this HCD\n"); Please say "host controller" instead of "HCD", and delete "device" (and say "supported" instead of "support"). More importantly, set result to a negative error value before returning so that it won't look like the probe succeeded. > + goto release; > + } > > /* Get the unusual_devs entries and the descriptors */ > result = get_device_info(us, id, unusual_dev); > @@ -1081,6 +1084,7 @@ int usb_stor_probe1(struct us_data **pus, > > BadDevice: > usb_stor_dbg(us, "storage_probe() failed\n"); > +release: > release_everything(us); > return result; > } Alan Stern