On 6/9/26 14: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 <[email protected]>
Signed-off-by: Sumit Saxena <[email protected]>
---
  drivers/scsi/3w-9xxx.c                    | 2 +-
  drivers/scsi/3w-sas.c                     | 2 +-
  drivers/scsi/3w-xxxx.c                    | 2 +-
  drivers/scsi/53c700.c                     | 2 +-
  drivers/scsi/BusLogic.c                   | 2 +-
  drivers/scsi/a100u2w.c                    | 2 +-
  drivers/scsi/a2091.c                      | 2 +-
  drivers/scsi/a3000.c                      | 2 +-
  drivers/scsi/aacraid/linit.c              | 2 +-
  drivers/scsi/advansys.c                   | 6 +++---
  drivers/scsi/aha152x.c                    | 2 +-
  drivers/scsi/aha1542.c                    | 2 +-
  drivers/scsi/aha1740.c                    | 2 +-
  drivers/scsi/aic7xxx/aic79xx_osm.c        | 2 +-
  drivers/scsi/aic7xxx/aic7xxx_osm.c        | 2 +-
  drivers/scsi/aic94xx/aic94xx_init.c       | 2 +-
  drivers/scsi/am53c974.c                   | 2 +-
  drivers/scsi/arcmsr/arcmsr_hba.c          | 3 ++-
  drivers/scsi/arm/acornscsi.c              | 2 +-
  drivers/scsi/arm/arxescsi.c               | 2 +-
  drivers/scsi/arm/cumana_1.c               | 2 +-
  drivers/scsi/arm/cumana_2.c               | 2 +-
  drivers/scsi/arm/eesox.c                  | 2 +-
  drivers/scsi/arm/oak.c                    | 2 +-
  drivers/scsi/arm/powertec.c               | 2 +-
  drivers/scsi/atari_scsi.c                 | 2 +-
  drivers/scsi/atp870u.c                    | 2 +-
  drivers/scsi/bfa/bfad_im.c                | 2 +-
  drivers/scsi/csiostor/csio_init.c         | 4 ++--
  drivers/scsi/dc395x.c                     | 2 +-
  drivers/scsi/dmx3191d.c                   | 2 +-
  drivers/scsi/elx/efct/efct_xport.c        | 4 ++--
  drivers/scsi/esas2r/esas2r_main.c         | 2 +-
  drivers/scsi/fdomain.c                    | 2 +-
  drivers/scsi/fnic/fnic_main.c             | 2 +-
  drivers/scsi/g_NCR5380.c                  | 2 +-
  drivers/scsi/gvp11.c                      | 2 +-
  drivers/scsi/hisi_sas/hisi_sas_main.c     | 2 +-
  drivers/scsi/hisi_sas/hisi_sas_v3_hw.c    | 2 +-
  drivers/scsi/hosts.c                      | 6 ++++--
  drivers/scsi/hpsa.c                       | 2 +-
  drivers/scsi/hptiop.c                     | 2 +-
  drivers/scsi/ibmvscsi/ibmvfc.c            | 2 +-
  drivers/scsi/ibmvscsi/ibmvscsi.c          | 2 +-
  drivers/scsi/imm.c                        | 2 +-
  drivers/scsi/initio.c                     | 2 +-
  drivers/scsi/ipr.c                        | 2 +-
  drivers/scsi/ips.c                        | 2 +-
  drivers/scsi/isci/init.c                  | 2 +-
  drivers/scsi/jazz_esp.c                   | 2 +-
  drivers/scsi/libiscsi.c                   | 2 +-
  drivers/scsi/lpfc/lpfc_init.c             | 2 +-
  drivers/scsi/mac53c94.c                   | 2 +-
  drivers/scsi/mac_esp.c                    | 2 +-
  drivers/scsi/mac_scsi.c                   | 2 +-
  drivers/scsi/megaraid.c                   | 2 +-
  drivers/scsi/megaraid/megaraid_mbox.c     | 2 +-
  drivers/scsi/megaraid/megaraid_sas_base.c | 2 +-
  drivers/scsi/mesh.c                       | 2 +-
  drivers/scsi/mpi3mr/mpi3mr_os.c           | 2 +-
  drivers/scsi/mpt3sas/mpt3sas_scsih.c      | 4 ++--
  drivers/scsi/mvme147.c                    | 2 +-
  drivers/scsi/mvsas/mv_init.c              | 2 +-
  drivers/scsi/mvumi.c                      | 2 +-
  drivers/scsi/myrb.c                       | 2 +-
  drivers/scsi/myrs.c                       | 2 +-
  drivers/scsi/ncr53c8xx.c                  | 2 +-
  drivers/scsi/nsp32.c                      | 2 +-
  drivers/scsi/pcmcia/nsp_cs.c              | 2 +-
  drivers/scsi/pcmcia/qlogic_stub.c         | 2 +-
  drivers/scsi/pcmcia/sym53c500_cs.c        | 2 +-
  drivers/scsi/pm8001/pm8001_init.c         | 2 +-
  drivers/scsi/pmcraid.c                    | 2 +-
  drivers/scsi/ppa.c                        | 2 +-
  drivers/scsi/ps3rom.c                     | 2 +-
  drivers/scsi/qla1280.c                    | 2 +-
  drivers/scsi/qla2xxx/qla_mid.c            | 2 +-
  drivers/scsi/qla2xxx/qla_os.c             | 2 +-
  drivers/scsi/qlogicfas.c                  | 2 +-
  drivers/scsi/qlogicpti.c                  | 2 +-
  drivers/scsi/scsi_debug.c                 | 2 +-
  drivers/scsi/sgiwd93.c                    | 2 +-
  drivers/scsi/smartpqi/smartpqi_init.c     | 2 +-
  drivers/scsi/snic/snic_main.c             | 2 +-
  drivers/scsi/stex.c                       | 2 +-
  drivers/scsi/storvsc_drv.c                | 2 +-
  drivers/scsi/sun3_scsi.c                  | 2 +-
  drivers/scsi/sun3x_esp.c                  | 2 +-
  drivers/scsi/sun_esp.c                    | 2 +-
  drivers/scsi/sym53c8xx_2/sym_glue.c       | 2 +-
  drivers/scsi/virtio_scsi.c                | 2 +-
  drivers/scsi/vmw_pvscsi.c                 | 2 +-
  drivers/scsi/wd719x.c                     | 2 +-
  drivers/scsi/xen-scsifront.c              | 2 +-
  drivers/scsi/zorro_esp.c                  | 2 +-
  include/scsi/libfc.h                      | 2 +-
  include/scsi/scsi_host.h                  | 3 ++-
  97 files changed, 107 insertions(+), 103 deletions(-)

Quite a lot of churn for such a (relatively) simple change.

I think it might be better to introduce a new function
(scsi_host_alloc_node() ?) with the additional parameter,
and make scsi_host_alloc() a wrapper around that.

That will reduce the size of this patch immensely.

Cheers,

Hannes
--
Dr. Hannes Reinecke                  Kernel Storage Architect
[email protected]                               +49 911 74053 688
SUSE Software Solutions GmbH, Frankenstr. 146, 90461 Nürnberg
HRB 36809 (AG Nürnberg), GF: I. Totev, A. McDonald, W. Knoblich

Reply via email to