• Arun Easi's avatar
    scsi: qla2xxx: Fix FW initialization error on big endian machines · 8a78dd6e
    Arun Easi authored
    Some fields are not correctly byte swapped causing failure during
    initialization. As probe() returns failure, HBAs will not be claimed when
    this happens.
    
    qla2xxx [0007:01:00.0]-ffff:3: Secure Flash Update in FW: Supported
    qla2xxx [0007:01:00.0]-ffff:3: SCM in FW: Supported
    qla2xxx [0007:01:00.0]-00d2:3: Init Firmware **** FAILED ****.
    qla2xxx [0007:01:00.0]-00d6:3: Failed to initialize adapter - Adapter flags 2.
    qla2xxx 0007:01:00.1: enabling device (0140 -> 0142)
    qla2xxx [0007:01:00.1]-011c: : MSI-X vector count: 128.
    qla2xxx [0007:01:00.1]-001d: : Found an ISP2289 irq 18 iobase 0xd000080080004000.
    qla2xxx 0007:01:00.1: Using 64-bit direct DMA at offset 800000000000000
    BUG: Bad page state in process insmod  pfn:67118 page:f00000000168bd40
    count:-1 mapcount:0 mapping: (null) index:0x0
    page flags: 0x3ffff800000000() page dumped because: nonzero _count
    Modules linked in: qla2xxx(OE+) nvme_fc nvme_fabrics
    	nvme_core scsi_transport_fc scsi_tgt nls_utf8 isofs ip6t_rpfilter
    	ipt_REJECT nf_reject_ipv4 ip6t_REJECT nf_reject_ipv6 xt_conntrack ip_set
    	nfnetlink ebtable_nat ebtable_broute bridge stp llc ip6table_nat
    	nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip6table_mangle
    	ip6table_security ip6table_raw iptable_nat nf_conntrack_ipv4
    	nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack iptable_mangle
    	iptable_security iptable_raw ebtable_filter ebtables ip6table_filter
    	ip6_tables iptable_filter nx_crypto ses enclosure scsi_transport_sas
    	pseries_rng sg ip_tables xfs libcrc32c sr_mod cdrom sd_mod crc_t10dif
    	crct10dif_generic crct10dif_common usb_storage ipr libata tg3 ptp
    	pps_core dm_mirror dm_region_hash dm_log dm_mod
    CPU: 32 PID: 8560 Comm: insmod Kdump: loaded Tainted: G
    	OE  ------------   3.10.0-957.el7.ppc64 #1
    Call Trace:
    [c0000006dd7caa70] [c00000000001cca8] .show_stack+0x88/0x330 (unreliable)
    [c0000006dd7cab30] [c000000000ac3d88] .dump_stack+0x28/0x3c
    [c0000006dd7caba0] [c00000000029e48c] .bad_page+0x15c/0x1c0
    [c0000006dd7cac40] [c00000000029f938] .get_page_from_freelist+0x11e8/0x1ea0
    [c0000006dd7caf40] [c0000000002a1d30] .__alloc_pages_nodemask+0x1c0/0xc70
    [c0000006dd7cb140] [c00000000002ba0c] .__dma_direct_alloc_coherent+0x8c/0x170
    [c0000006dd7cb1e0] [d000000010a94688] .qla2x00_mem_alloc+0x10f8/0x1370 [qla2xxx]
    [c0000006dd7cb2d0] [d000000010a9c790] .qla2x00_probe_one+0xb60/0x22e0 [qla2xxx]
    [c0000006dd7cb540] [c0000000005de764] .pci_device_probe+0x204/0x300
    [c0000006dd7cb600] [c0000000006ca61c] .driver_probe_device+0x2cc/0x6f0
    [c0000006dd7cb6b0] [c0000000006cabec] .__driver_attach+0x10c/0x110
    [c0000006dd7cb740] [c0000000006c5f04] .bus_for_each_dev+0x94/0x100
    [c0000006dd7cb7e0] [c0000000006c94f4] .driver_attach+0x34/0x50
    [c0000006dd7cb860] [c0000000006c8f58] .bus_add_driver+0x298/0x3b0
    [c0000006dd7cb900] [c0000000006cb6e0] .driver_register+0xb0/0x1a0
    [c0000006dd7cb980] [c0000000005dc474] .__pci_register_driver+0xc4/0xf0
    [c0000006dd7cba10] [d000000010b94e20] .qla2x00_module_init+0x2a8/0x328 [qla2xxx]
    [c0000006dd7cbaa0] [c00000000000c130] .do_one_initcall+0x130/0x2e0
    [c0000006dd7cbb50] [c0000000001b2e8c] .load_module+0x1afc/0x2340
    [c0000006dd7cbd40] [c0000000001b3920] .SyS_finit_module+0xd0/0x130
    [c0000006dd7cbe30] [c00000000000a284] 	system_call+0x38/0xfc
    
    Link: https://lore.kernel.org/r/20201202132312.19966-9-njavali@marvell.com
    Fixes: 9f2475fe ("scsi: qla2xxx: SAN congestion management implementation")
    Fixes: cf3c54fb ("scsi: qla2xxx: Add SLER and PI control support”)
    Reviewed-by: default avatarHimanshu Madhani <himanshu.madhani@oracle.com>
    Signed-off-by: default avatarArun Easi <aeasi@marvell.com>
    Signed-off-by: default avatarNilesh Javali <njavali@marvell.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    8a78dd6e
qla_mbx.c 172 KB