[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 2/4] scsi: host: allocate struct Scsi_Host on the NUMA node of the host adapter
- To: Sumit Saxena <sumit.saxena@xxxxxxxxxxxx>, "Martin K . Petersen" <martin.petersen@xxxxxxxxxx>, Jens Axboe <axboe@xxxxxxxxx>
- From: John Garry <john.g.garry@xxxxxxxxxx>
- Date: Tue, 9 Jun 2026 14:03:45 +0100
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=hkafPhPn2ZUoqC38Axyejl3/HjFZYDX29rq+w+VMToE=; b=oc8braw6m9ksUcltuahYe+Bavyed/Tyw/yRI4VRUJyNighO938VQ6PAyNdLo5tqtvqWJmP+mkhuUuX8azdyxUMY3ukdpPjit6Lb89WPHyb/pnrNkZNTNW7QFlCPmUvIc0EltTHqwm5TQz7lnyvBWVS8nIxedHeyo56NEKo6Vnj1387AmbyMbHOKb/d/lBhsPt053+8LhKseBhPwLbKO7/eXympBc9JTTAAEQj4k1qN+A2MuPCC4+/7k136vG4x+MudfRuKcP0dBV3UeRSAnDCXKwi2L5l5Y8aLjdiHakx8c75qB4JVRQFb3UlLjnw8GrmWxc2D6ufcaxpdqcZe4Z/g==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ye1oqYUnfYSXu7x/41/sMUQTslcdH8Hnnfo0a+wfIZGL8mLzmxjooqc9TI1iByofwMYXCaOoNbxqhhMjQYzuNBP4r2YrDWR4SQuv/oplPIiVysBPwbeZxn7kNtl7vWIVCFkhrvNl3vX/W2zY/AUzAAC67JPypCys20qf+MCXecwUA4KJX/U88ZWwXW6QJR9w/aq1lMjKsGNfH1tv+GwuoXBXxv4OzKXt7uW//sR+ItHCX4JzrNXLdK72a+Da8PCDyCGDNGr8FyS1K2jfJyd5NkCbIyXM9+UYerD2sdFWmAEjufMgGHmU5HEYo9CG9nYyg5Yie6cvQnFlFX0XV2ZUxQ==
- Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=corp-2025-04-25 header.d=oracle.com header.i="@oracle.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-oracle-onmicrosoft-com header.d=oracle.onmicrosoft.com header.i="@oracle.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
- Cc: "James E . J . Bottomley" <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>, linux-scsi@xxxxxxxxxxxxxxx, linux-block@xxxxxxxxxxxxxxx, Adam Radford <aradford@xxxxxxxxx>, Khalid Aziz <khalid@xxxxxxxxxxxxxx>, Adaptec OEM Raid Solutions <aacraid@xxxxxxxxxxxxx>, Matthew Wilcox <willy@xxxxxxxxxxxxx>, Hannes Reinecke <hare@xxxxxxxx>, "Juergen E . Fischer" <fischer@xxxxxxxxx>, Russell King <linux@xxxxxxxxxxxxxxx>, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, Finn Thain <fthain@xxxxxxxxxxxxxx>, Michael Schmitz <schmitzmic@xxxxxxxxx>, Anil Gurumurthy <anil.gurumurthy@xxxxxxxxxx>, Sudarsana Kalluru <sudarsana.kalluru@xxxxxxxxxx>, Oliver Neukum <oliver@xxxxxxxxxx>, Ali Akcaagac <aliakc@xxxxxx>, Jamie Lenehan <lenehan@xxxxxxxxxxx>, Ram Vegesna <ram.vegesna@xxxxxxxxxxxx>, target-devel@xxxxxxxxxxxxxxx, Bradley Grove <linuxdrivers@xxxxxxxxxxxx>, Satish Kharat <satishkh@xxxxxxxxx>, Sesidhar Baddela <sebaddel@xxxxxxxxx>, Karan Tilak Kumar <kartilak@xxxxxxxxx>, Yihang Li <liyihang9@xxxxxxxxxxxxxx>, Don Brace <don.brace@xxxxxxxxxxxxx>, storagedev@xxxxxxxxxxxxx, HighPoint Linux Team <linux@xxxxxxxxxxxxxxxxxx>, Tyrel Datwyler <tyreld@xxxxxxxxxxxxx>, Madhavan Srinivasan <maddy@xxxxxxxxxxxxx>, Michael Ellerman <mpe@xxxxxxxxxxxxxx>, Nicholas Piggin <npiggin@xxxxxxxxx>, Christophe Leroy <chleroy@xxxxxxxxxx>, linuxppc-dev@xxxxxxxxxxxxxxxx, Brian King <brking@xxxxxxxxxx>, Lee Duncan <lduncan@xxxxxxxx>, Chris Leech <cleech@xxxxxxxxxx>, Mike Christie <michael.christie@xxxxxxxxxx>, open-iscsi@xxxxxxxxxxxxxxxx, Justin Tee <justin.tee@xxxxxxxxxxxx>, Paul Ely <paul.ely@xxxxxxxxxxxx>, Kashyap Desai <kashyap.desai@xxxxxxxxxxxx>, Shivasharan S <shivasharan.srikanteshwara@xxxxxxxxxxxx>, Chandrakanth Patil <chandrakanth.patil@xxxxxxxxxxxx>, megaraidlinux.pdl@xxxxxxxxxxxx, Sathya Prakash Veerichetty <sathya.prakash@xxxxxxxxxxxx>, Sreekanth Reddy <sreekanth.reddy@xxxxxxxxxxxx>, mpi3mr-linuxdrv.pdl@xxxxxxxxxxxx, Suganath Prabu Subramani <suganath-prabu.subramani@xxxxxxxxxxxx>, Ranjan Kumar <ranjan.kumar@xxxxxxxxxxxx>, MPT-FusionLinux.pdl@xxxxxxxxxxxx, Daniel Palmer <daniel@xxxxxxxxx>, GOTO Masanori <gotom@xxxxxxxxxxxx>, YOKOTA Hiroshi <yokota@xxxxxxxxxxxxxxxxxxxxxxx>, Jack Wang <jinpu.wang@xxxxxxxxxxxxxxx>, Geoff Levand <geoff@xxxxxxxxxxxxx>, Michael Reed <mdr@xxxxxxx>, Nilesh Javali <njavali@xxxxxxxxxxx>, GR-QLogic-Storage-Upstream@xxxxxxxxxxx, Narsimhulu Musini <nmusini@xxxxxxxxx>, "K . Y . Srinivasan" <kys@xxxxxxxxxxxxx>, Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>, Wei Liu <wei.liu@xxxxxxxxxx>, Dexuan Cui <decui@xxxxxxxxxxxxx>, Long Li <longli@xxxxxxxxxxxxx>, linux-hyperv@xxxxxxxxxxxxxxx, "Michael S . Tsirkin" <mst@xxxxxxxxxx>, Jason Wang <jasowang@xxxxxxxxxx>, Paolo Bonzini <pbonzini@xxxxxxxxxx>, Stefan Hajnoczi <stefanha@xxxxxxxxxx>, Eugenio Perez <eperezma@xxxxxxxxxx>, virtualization@xxxxxxxxxxxxxxx, Vishal Bhakta <vishal.bhakta@xxxxxxxxxxxx>, bcm-kernel-feedback-list@xxxxxxxxxxxx, Juergen Gross <jgross@xxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
- Delivery-date: Tue, 09 Jun 2026 13:10:52 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On 09/06/2026 13:18, Sumit Saxena wrote:
scsi_host_alloc() used kzalloc(), which always picks an arbitrary node.
Extend the function to accept a 'struct device *dev' parameter and use
kzalloc_node() with dev_to_node(dev) so the Scsi_Host struct lands on
the same NUMA node as the HBA, mirroring the treatment already applied
to struct scsi_device, struct scsi_target, and shost_data.
When dev is NULL (legacy ISA/platform drivers without a dma_dev) the
allocation falls back to NUMA_NO_NODE, preserving existing behaviour.
Update all in-tree callers:
- PCI-based HBA drivers pass &pdev->dev (or the equivalent struct
member such as &phba->pcidev->dev, &h->pdev->dev, &ha->pdev->dev)
so their host struct is placed on the adapter's node.
- Non-PCI drivers (ISA, Amiga, ARM PCMCIA, virtio, Hyper-V, PS3, …)
pass NULL.
- libfc's libfc_host_alloc() inline helper passes NULL; FC drivers
that want NUMA awareness can open-code the call with their pdev.
Suggested-by: John Garry <john.g.garry@xxxxxxxxxx>
Signed-off-by: Sumit Saxena <sumit.saxena@xxxxxxxxxxxx>
Wow ... I was not expecting such a large change, but admittedly I did
not consider the implementation.
I did mention that pci-based adapters should already be effectively
doing kzalloc_node() since the adapter driver is probed on the local
NUMA node (and kmalloc first tries local NUMA allocations).
---
diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
index e047747d4ecf..e1f42be79729 100644
--- a/drivers/scsi/hosts.c
+++ b/drivers/scsi/hosts.c
@@ -403,12 +403,14 @@ static const struct device_type scsi_host_type = {
* Return value:
* Pointer to a new Scsi_Host
**/
-struct Scsi_Host *scsi_host_alloc(const struct scsi_host_template *sht, int
privsize)
+struct Scsi_Host *scsi_host_alloc(const struct scsi_host_template *sht, int
privsize,
+ struct device *dev)
{
struct Scsi_Host *shost;
int index;
- shost = kzalloc(sizeof(struct Scsi_Host) + privsize, GFP_KERNEL);
+ shost = kzalloc_node(sizeof(struct Scsi_Host) + privsize, GFP_KERNEL,
+ dev ? dev_to_node(dev) : NUMA_NO_NODE);
if (!shost)
return NULL;
-extern struct Scsi_Host *scsi_host_alloc(const struct scsi_host_template *,
int);
+extern struct Scsi_Host *scsi_host_alloc(const struct scsi_host_template *sht,
+ int privsize, struct device *dev);
extern int __must_check scsi_add_host_with_dma(struct Scsi_Host *,
struct device *,
struct device *);
scsi_add_host_with_dma() and scsi_add_host() do assignment of
shost->dma_dev, so I think that could be moved to scsi_host_alloc().
I can imagine that we always know dev and dma_dev at Scsi_Host alloc
time (and not just scsi_add_host()) time. However those would be very
intrusive changes.
Let me consider this more. Maybe we can have a platform device version
of shost alloc, as I can't imagine that we care about much more. Thanks!
|