Bug 1211732

Summary: smartpqi - patches for ALP
Product: [SUSE ALP - SUSE Adaptable Linux Platform] Granite Reporter: Don Brace <don.brace>
Component: KernelAssignee: Martin Wilck <martin.wilck>
Status: RESOLVED FIXED QA Contact:
Severity: Normal    
Priority: P2 - High CC: don.brace, gerry.morong, hare, jcheung, poswald, scott.benesh
Version: unspecified   
Target Milestone: ---   
Hardware: Other   
OS: Linux   
Whiteboard:
Found By: Development Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Don Brace 2023-05-25 21:41:12 UTC
Add latest smartpqi patches from Martin Petersen's 6.5/scsi-queue
https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git 6.5/scsi-queue


https://github.com/SUSE/kernel.git ALP-current

fcb405111a24 scsi: smartpqi: Update version to 2.1.22-040
49fd52d4991f scsi: smartpqi: Update copyright to 2023
d2c7583f27cc scsi: smartpqi: Add sysfs entry for NUMA node in /sys/block/sdX/device
2eddf98d0152 scsi: smartpqi: Stop sending driver-initiated TURs
c23efd9eadd8 scsi: smartpqi: Fix byte aligned writew for ARM servers
68f7920492be scsi: smartpqi: Add support for RAID NCQ priority
5c9e3c1c5276 scsi: smartpqi: Validate block layer host tag
80d560d94fa9 scsi: smartpqi: Remove contention for raid_bypass_cnt
2312e844dc8d scsi: smartpqi: Fix rare SAS transport memory leak
889cda36db99 scsi: smartpqi: Remove NULL pointer check
fe0375d48513 scsi: smartpqi: Add new controller PCI IDs
3e7e55aa3df2 scsi: smartpqi: Map full length of PCI BAR 0
077126d6b941 scsi: smartpqi: Declare SCSI host template const
Comment 1 Don Brace 2023-05-25 21:51:34 UTC
After cherry-picking these patches, there are 0 diffs between Martin's tree and ALP-current.

Need to do a compile check.
Comment 2 Don Brace 2023-05-30 20:45:41 UTC
Too soon for patch
"(077126d6b941 scsi: smartpqi: Declare SCSI host template const)"

CC [M]  drivers/scsi/smartpqi/smartpqi_init.o
  CC [M]  drivers/nvme/target/admin-cmd.o
  CC [M]  drivers/nvme/target/discovery.o
drivers/scsi/smartpqi/smartpqi_init.c: In function ‘pqi_register_scsi’:
drivers/scsi/smartpqi/smartpqi_init.c:7381:26: warning: passing argument 1 of ‘scsi_host_alloc’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
  shost = scsi_host_alloc(&pqi_driver_template, sizeof(ctrl_info));
                          ^
In file included from drivers/scsi/smartpqi/smartpqi_init.c:23:0:
./include/scsi/scsi_host.h:750:26: note: expected ‘struct scsi_host_template *’ but argument is of type ‘const struct scsi_host_template *’
 extern struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *, int);
                          ^~~~~~~~~~~~~~~
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_main.o
  CC [M]  drivers/net/ethernet/intel/i40e/i40e_main.o


Patch "(e0d3f2c694e5 scsi: core: Declare SCSI host template pointer members const)"

Has not yet been applied.

The driver still builds and functions with the patch applied.

clyfar:~ # modinfo smartpqi | head -4
filename:       /lib/modules/6.3.4-150400.22-default+/kernel/drivers/scsi/smartpqi/smartpqi.ko
license:        GPL
version:        2.1.22-040
description:    Driver for Microchip Smart Family Controller version 2.1.22-040
clyfar:~ # lsscsi
[0:0:0:0]    storage HP       P440ar           7.02  -        
[0:1:0:0]    disk    HP       LOGICAL VOLUME   7.02  /dev/sda 
[0:1:0:1]    disk    HP       LOGICAL VOLUME   7.02  /dev/sde 
[0:1:0:2]    disk    HP       LOGICAL VOLUME   7.02  /dev/sdf 
[0:1:0:3]    disk    HP       LOGICAL VOLUME   7.02  /dev/sdb 
[0:1:0:4]    disk    HP       LOGICAL VOLUME   7.02  /dev/sdd 
[0:1:0:5]    disk    HP       LOGICAL VOLUME   7.02  /dev/sdg 
[4:0:0:0]    disk    ATA      MK003840GZXRV    HP00  /dev/sdc 
[7:0:0:0]    disk    HP       EO1600JVYPP      HPD7  /dev/sdh 
[7:0:1:0]    disk    HP       MO1600JVYPR      HPD7  /dev/sdi 
[7:0:2:0]    disk    HP       MO1600JVYPR      HPD7  /dev/sdj 
[7:0:3:0]    disk    HP       EO1600JVYPP      HPD7  /dev/sdk 
[7:0:4:0]    disk    SEAGATE  ST1000NX0323     K002  /dev/sdl 
[7:0:5:0]    disk    SEAGATE  ST2000NX0263     K002  /dev/sdm 
[7:0:6:0]    enclosu HPE      Smart Adapter    3.00  -        
[7:2:0:0]    storage HPE      P408i-p SR Gen10 3.00  -        
[8:0:0:0]    disk    ASMT     2105             0     /dev/sdn
Comment 3 Don Brace 2023-05-31 15:34:57 UTC
Tested kdump.


# lsscsi for smartpqi devices
# clyfar:~ # lsscsi
[0:0:0:0]    storage HP       P440ar           7.02  -
[0:1:0:0]    disk    HP       LOGICAL VOLUME   7.02  /dev/sdc
[0:1:0:1]    disk    HP       LOGICAL VOLUME   7.02  /dev/sdd
[0:1:0:2]    disk    HP       LOGICAL VOLUME   7.02  /dev/sdb
[0:1:0:3]    disk    HP       LOGICAL VOLUME   7.02  /dev/sda
[0:1:0:4]    disk    HP       LOGICAL VOLUME   7.02  /dev/sde
[0:1:0:5]    disk    HP       LOGICAL VOLUME   7.02  /dev/sdf
[4:0:0:0]    disk    ATA      MK003840GZXRV    HP00  /dev/sdg
[7:0:0:0]    disk    HP       EO1600JVYPP      HPD7  /dev/sdh
[7:0:1:0]    disk    HP       MO1600JVYPR      HPD7  /dev/sdi
[7:0:2:0]    disk    HP       MO1600JVYPR      HPD7  /dev/sdj
[7:0:3:0]    disk    HP       EO1600JVYPP      HPD7  /dev/sdk
[7:0:4:0]    disk    SEAGATE  ST1000NX0323     K002  /dev/sdm
[7:0:5:0]    disk    SEAGATE  ST2000NX0263     K002  /dev/sdn
[7:0:6:0]    enclosu HPE      Smart Adapter    3.00  -
[7:2:0:0]    storage HPE      P408i-p SR Gen10 3.00  -
[8:0:0:0]    disk    ASMT     2105             0     /dev/sdl

#
# I decided to use /dev/sdh as my kdump device.
#
#
mke2fs /dev/sdh
mkdir /smartpqi/crash

clyfar:~ # ls -ltr /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root  9 May 31 09:59 44d8352f-6cb4-4ae5-b428-e82b59b4756e -> ../../sdg
lrwxrwxrwx 1 root root  9 May 31 09:59 12e9253e-b37a-44fc-9462-b22f2075000c -> ../../sdh
lrwxrwxrwx 1 root root 10 May 31 09:59 0b6d4f4c-345d-4a4a-83ce-a7a19e1f2ac0 -> ../../dm-0
lrwxrwxrwx 1 root root 10 May 31 09:59 d6a6be8e-bc1e-4d73-8c79-64e9500b5099 -> ../../dm-1
lrwxrwxrwx 1 root root 10 May 31 09:59 ebbe0b98-c14d-4e84-820a-f036be8a9b11 -> ../../dm-2
lrwxrwxrwx 1 root root 10 May 31 09:59 49C1-348C -> ../../sdl1
clyfar:~ # 

clyfar:~ # cat /etc/fstab
/dev/system/swap  swap                    swap   defaults                      0  0
/dev/system/root  /                       btrfs  defaults                      0  0
/dev/system/root  /.snapshots             btrfs  subvol=/@/.snapshots          0  0
/dev/system/root  /var                    btrfs  subvol=/@/var                 0  0
/dev/system/root  /usr/local              btrfs  subvol=/@/usr/local           0  0

/dev/system/root  /tmp                    btrfs  subvol=/@/tmp                 0  0
/dev/system/root  /srv                    btrfs  subvol=/@/srv                 0  0
/dev/system/root  /root                   btrfs  subvol=/@/root                0  0
/dev/system/root  /opt                    btrfs  subvol=/@/opt                 0  0
/dev/system/home  /home                   xfs    defaults                      0  0
/dev/system/root  /boot/grub2/x86_64-efi  btrfs  subvol=/@/boot/grub2/x86_64-efi  0  0
/dev/system/root  /boot/grub2/i386-pc     btrfs  subvol=/@/boot/grub2/i386-pc  0  0
#UUID=49C1-348C    /boot/efi               vfat   utf8                          0  2
PARTUUID=a12291d1-47e3-468c-afcb-a2abe19c661f /boot/efi               vfat   utf8                          0  2
# Here is the mountpoint for a smartpqi device.
# I choose ext2 because that is the most common fs used for kdump.
UUID=12e9253e-b37a-44fc-9462-b22f2075000c /smartpqi/crash ext2  defaults 0 0
UUID=44d8352f-6cb4-4ae5-b428-e82b59b4756e /driver_development ext3 defaults 0 0

#
# Showing mount points
#
clyfar:~ # df
Filesystem               1K-blocks     Used  Available Use% Mounted on
devtmpfs                      4096        0       4096   0% /dev
tmpfs                      7881544        4    7881540   1% /dev/shm
tmpfs                      3152620    10004    3142616   1% /run
tmpfs                         4096        0       4096   0% /sys/fs/cgroup
/dev/mapper/system-root   41943040 21878980   18578268  55% /
/dev/mapper/system-root   41943040 21878980   18578268  55% /root
/dev/mapper/system-root   41943040 21878980   18578268  55% /tmp
/dev/mapper/system-root   41943040 21878980   18578268  55% /var
tmpfs                      1576308       44    1576264   1% /run/user/467
tmpfs                      1576308       24    1576284   1% /run/user/0
/dev/mapper/system-root   41943040 21878980   18578268  55% /.snapshots
/dev/mapper/system-root   41943040 21878980   18578268  55% /usr/local
/dev/mapper/system-root   41943040 21878980   18578268  55% /srv
/dev/mapper/system-root   41943040 21878980   18578268  55% /opt
/dev/mapper/system-home   26201600   817260   25384340   4% /home
/dev/mapper/system-root   41943040 21878980   18578268  55% /boot/grub2/x86_64-efi
/dev/mapper/system-root   41943040 21878980   18578268  55% /boot/grub2/i386-pc
/dev/sdl1                   523248     5224     518024   1% /boot/efi
#
# mountpoint for /smartpqi/crash
#
/dev/sdh                1538220140   581980 1459497472   1% /smartpqi/crash
/dev/sdg                3690764992 26651312 3476576768   1% /driver_development

# Looking at /etc/sysconfig/kdump
# kdumptool dump_config works pretty will to show contents of this file
# without commented out lines.
clyfar:~ # kdumptool dump_config
KDUMP_KERNELVER=
KDUMP_CPUS=1
KDUMP_COMMANDLINE=
KDUMP_COMMANDLINE_APPEND='console=ttyS0,115200 console=tty0'
KDUMP_AUTO_RESIZE=no
KEXEC_OPTIONS=
MAKEDUMPFILE_OPTIONS=
KDUMP_IMMEDIATE_REBOOT=yes
KDUMP_TRANSFER=
# This is how kdump knows where to save...
# But an entry is needed in /etc/fstab to have this local file available if
# you want to test on a smartpqi device.
KDUMP_SAVEDIR=file:///smartpqi/crash
KDUMP_KEEP_OLD_DUMPS=5
KDUMP_FREE_DISK_SIZE=64
KDUMP_VERBOSE=3
KDUMP_DUMPLEVEL=31
KDUMP_DUMPFORMAT=lzo
KDUMP_CONTINUE_ON_ERROR=yes
KDUMP_REQUIRED_PROGRAMS=
KDUMP_PRESCRIPT=
KDUMP_POSTSCRIPT=
KDUMP_COPY_KERNEL=yes
KDUMPTOOL_FLAGS=
KDUMP_NETCONFIG=auto
KDUMP_NET_TIMEOUT=30
KDUMP_SMTP_SERVER=
KDUMP_SMTP_USER=
KDUMP_SMTP_PASSWORD=
KDUMP_NOTIFICATION_TO=
KDUMP_NOTIFICATION_CC=
KDUMP_HOST_KEY=
KDUMP_SSH_IDENTITY=

#
# I used yast to increase the crashkernel size from the default of 192M to 385M, then
# rebooted. Then tested kdump after the newer crashkernel size took effect.
# I did this because with I tested the default value of 192M, I saw memory allocation
# errors...
#
clyfar:~ # cat /proc/cmdline 
BOOT_IMAGE=/boot/vmlinuz-6.3.4-150400.22-default+ root=/dev/mapper/system-root mitigations=auto console=ttyS0,115200 console=tty0 crashkernel=385M,high crashkernel=72M,low

clyfar:~ # systemctl status kdump
  kdump.service - Load kdump kernel and initrd
     Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor pre>
     Active: active (exited) since Wed 2023-05-31 09:26:38 CDT; 2min 13s ago
    Process: 13850 ExecStart=/usr/lib/kdump/load.sh --update (code=exited, stat>
   Main PID: 13850 (code=exited, status=0/SUCCESS)

May 31 09:26:13 clyfar systemd[1]: Starting Load kdump kernel and initrd...
May 31 09:26:38 clyfar systemd[1]: Finished Load kdump kernel and initrd.

clyfar:~ # ls -l /smartpqi/crash/2023-05-31-09\:55/
total 431788
-rw------- 1 root root    109579 May 31 09:57 dmesg.txt
-rw-r--r-- 1 root root       185 May 31 09:57 README.txt
-rw-r--r-- 1 root root   6562786 May 31 09:57 System.map-6.3.4-150400.22-default+
-rw------- 1 root root 161808336 May 31 09:57 vmcore
-rw-r--r-- 1 root root 273209764 May 31 09:57 vmlinux-6.3.4-150400.22-default+.gz
Comment 6 Martin Wilck 2023-09-20 17:24:18 UTC
I went one step further and added the commits from 6.6-rc:

3e7e55aa3df2 scsi: smartpqi: Map full length of PCI BAR 0
fe0375d48513 scsi: smartpqi: Add new controller PCI IDs
889cda36db99 scsi: smartpqi: Remove NULL pointer check
2312e844dc8d scsi: smartpqi: Fix rare SAS transport memory leak
80d560d94fa9 scsi: smartpqi: Remove contention for raid_bypass_cnt
5c9e3c1c5276 scsi: smartpqi: Validate block layer host tag
68f7920492be scsi: smartpqi: Add support for RAID NCQ priority
c23efd9eadd8 scsi: smartpqi: Fix byte aligned writew for ARM servers
2eddf98d0152 scsi: smartpqi: Stop sending driver-initiated TURs
d2c7583f27cc scsi: smartpqi: Add sysfs entry for NUMA node in /sys/block/sdX/device
49fd52d4991f scsi: smartpqi: Update copyright to 2023
fcb405111a24 scsi: smartpqi: Update version to 2.1.22-040
41e5d6f64d76 scsi: smartpqi: Replace all non-returning strlcpy() with strscpy()
6f0a92fd7db1 scsi: smartpqi: Replace one-element arrays with flexible-array members
153c45dd63ef scsi: smartpqi: Add abort handler
43cf3a6eab58 scsi: smartpqi: Rename MACRO to clarify purpose
e9c39117b448 scsi: smartpqi: Rename pciinfo to pci_info
dad662c9fe50 scsi: smartpqi: Simplify lun_number assignment
276395d024cc scsi: smartpqi: Enhance shutdown notification
72b737fa73bf scsi: smartpqi: Enhance controller offline notification
e1b919494aa9 scsi: smartpqi: Enhance error messages
08b7ad50c8bc scsi: smartpqi: Change driver version to 2.1.24-046

Let me know if there are reasons not to do so.
Comment 7 Don Brace 2023-09-20 18:55:23 UTC
(In reply to Martin Wilck from comment #6)
> I went one step further and added the commits from 6.6-rc:
> 
> 3e7e55aa3df2 scsi: smartpqi: Map full length of PCI BAR 0
> fe0375d48513 scsi: smartpqi: Add new controller PCI IDs
> 889cda36db99 scsi: smartpqi: Remove NULL pointer check
> 2312e844dc8d scsi: smartpqi: Fix rare SAS transport memory leak
> 80d560d94fa9 scsi: smartpqi: Remove contention for raid_bypass_cnt
> 5c9e3c1c5276 scsi: smartpqi: Validate block layer host tag
> 68f7920492be scsi: smartpqi: Add support for RAID NCQ priority
> c23efd9eadd8 scsi: smartpqi: Fix byte aligned writew for ARM servers
> 2eddf98d0152 scsi: smartpqi: Stop sending driver-initiated TURs
> d2c7583f27cc scsi: smartpqi: Add sysfs entry for NUMA node in
> /sys/block/sdX/device
> 49fd52d4991f scsi: smartpqi: Update copyright to 2023
> fcb405111a24 scsi: smartpqi: Update version to 2.1.22-040
> 41e5d6f64d76 scsi: smartpqi: Replace all non-returning strlcpy() with
> strscpy()
> 6f0a92fd7db1 scsi: smartpqi: Replace one-element arrays with flexible-array
> members
> 153c45dd63ef scsi: smartpqi: Add abort handler
> 43cf3a6eab58 scsi: smartpqi: Rename MACRO to clarify purpose
> e9c39117b448 scsi: smartpqi: Rename pciinfo to pci_info
> dad662c9fe50 scsi: smartpqi: Simplify lun_number assignment
> 276395d024cc scsi: smartpqi: Enhance shutdown notification
> 72b737fa73bf scsi: smartpqi: Enhance controller offline notification
> e1b919494aa9 scsi: smartpqi: Enhance error messages
> 08b7ad50c8bc scsi: smartpqi: Change driver version to 2.1.24-046
> 
> Let me know if there are reasons not to do so.

Thank you for doing all of the patches. We really appreciate it.
Comment 8 Martin Wilck 2023-09-20 19:30:16 UTC
Submitted to my for-next branch.
Comment 12 Jeffrey Cheung 2023-10-15 15:44:39 UTC
I close the bug report as the patches are submitted.