@@ -28,7 +28,7 @@ qla2300_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
28
28
uint16_t __iomem * dmp_reg ;
29
29
unsigned long flags ;
30
30
struct qla2300_fw_dump * fw ;
31
- uint32_t dump_size , data_ram_cnt ;
31
+ uint32_t data_ram_cnt ;
32
32
33
33
risc_address = data_ram_cnt = 0 ;
34
34
mb0 = mb2 = 0 ;
@@ -37,23 +37,16 @@ qla2300_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
37
37
if (!hardware_locked )
38
38
spin_lock_irqsave (& ha -> hardware_lock , flags );
39
39
40
- if (ha -> fw_dump != NULL ) {
40
+ if (! ha -> fw_dump ) {
41
41
qla_printk (KERN_WARNING , ha ,
42
- "Firmware has been previously dumped (%p) -- ignoring "
43
- "request...\n" , ha -> fw_dump );
42
+ "No buffer available for dump!!!\n" );
44
43
goto qla2300_fw_dump_failed ;
45
44
}
46
45
47
- /* Allocate (large) dump buffer. */
48
- dump_size = sizeof (struct qla2300_fw_dump );
49
- dump_size += (ha -> fw_memory_size - 0x11000 ) * sizeof (uint16_t );
50
- ha -> fw_dump_order = get_order (dump_size );
51
- ha -> fw_dump = (struct qla2300_fw_dump * ) __get_free_pages (GFP_ATOMIC ,
52
- ha -> fw_dump_order );
53
- if (ha -> fw_dump == NULL ) {
46
+ if (ha -> fw_dumped ) {
54
47
qla_printk (KERN_WARNING , ha ,
55
- "Unable to allocated memory for firmware dump (%d/%d).\n" ,
56
- ha -> fw_dump_order , dump_size );
48
+ "Firmware has been previously dumped (%p) -- ignoring "
49
+ "request...\n" , ha -> fw_dump );
57
50
goto qla2300_fw_dump_failed ;
58
51
}
59
52
fw = ha -> fw_dump ;
@@ -358,17 +351,16 @@ qla2300_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
358
351
}
359
352
}
360
353
361
-
362
354
if (rval != QLA_SUCCESS ) {
363
355
qla_printk (KERN_WARNING , ha ,
364
356
"Failed to dump firmware (%x)!!!\n" , rval );
357
+ ha -> fw_dumped = 0 ;
365
358
366
- free_pages ((unsigned long )ha -> fw_dump , ha -> fw_dump_order );
367
- ha -> fw_dump = NULL ;
368
359
} else {
369
360
qla_printk (KERN_INFO , ha ,
370
361
"Firmware dump saved to temp buffer (%ld/%p).\n" ,
371
362
ha -> host_no , ha -> fw_dump );
363
+ ha -> fw_dumped = 1 ;
372
364
}
373
365
374
366
qla2300_fw_dump_failed :
@@ -587,21 +579,16 @@ qla2100_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
587
579
if (!hardware_locked )
588
580
spin_lock_irqsave (& ha -> hardware_lock , flags );
589
581
590
- if (ha -> fw_dump != NULL ) {
582
+ if (! ha -> fw_dump ) {
591
583
qla_printk (KERN_WARNING , ha ,
592
- "Firmware has been previously dumped (%p) -- ignoring "
593
- "request...\n" , ha -> fw_dump );
584
+ "No buffer available for dump!!!\n" );
594
585
goto qla2100_fw_dump_failed ;
595
586
}
596
587
597
- /* Allocate (large) dump buffer. */
598
- ha -> fw_dump_order = get_order (sizeof (struct qla2100_fw_dump ));
599
- ha -> fw_dump = (struct qla2100_fw_dump * ) __get_free_pages (GFP_ATOMIC ,
600
- ha -> fw_dump_order );
601
- if (ha -> fw_dump == NULL ) {
588
+ if (ha -> fw_dumped ) {
602
589
qla_printk (KERN_WARNING , ha ,
603
- "Unable to allocated memory for firmware dump (%d/%Zd).\n" ,
604
- ha -> fw_dump_order , sizeof ( struct qla2100_fw_dump ) );
590
+ "Firmware has been previously dumped (%p) -- ignoring "
591
+ "request...\n" , ha -> fw_dump );
605
592
goto qla2100_fw_dump_failed ;
606
593
}
607
594
fw = ha -> fw_dump ;
@@ -777,13 +764,13 @@ qla2100_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
777
764
if (rval != QLA_SUCCESS ) {
778
765
qla_printk (KERN_WARNING , ha ,
779
766
"Failed to dump firmware (%x)!!!\n" , rval );
767
+ ha -> fw_dumped = 0 ;
780
768
781
- free_pages ((unsigned long )ha -> fw_dump , ha -> fw_dump_order );
782
- ha -> fw_dump = NULL ;
783
769
} else {
784
770
qla_printk (KERN_INFO , ha ,
785
771
"Firmware dump saved to temp buffer (%ld/%p).\n" ,
786
772
ha -> host_no , ha -> fw_dump );
773
+ ha -> fw_dumped = 1 ;
787
774
}
788
775
789
776
qla2100_fw_dump_failed :
@@ -988,7 +975,7 @@ qla24xx_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
988
975
if (!hardware_locked )
989
976
spin_lock_irqsave (& ha -> hardware_lock , flags );
990
977
991
- if (!ha -> fw_dump24 ) {
978
+ if (!ha -> fw_dump ) {
992
979
qla_printk (KERN_WARNING , ha ,
993
980
"No buffer available for dump!!!\n" );
994
981
goto qla24xx_fw_dump_failed ;
@@ -997,10 +984,10 @@ qla24xx_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
997
984
if (ha -> fw_dumped ) {
998
985
qla_printk (KERN_WARNING , ha ,
999
986
"Firmware has been previously dumped (%p) -- ignoring "
1000
- "request...\n" , ha -> fw_dump24 );
987
+ "request...\n" , ha -> fw_dump );
1001
988
goto qla24xx_fw_dump_failed ;
1002
989
}
1003
- fw = ( struct qla24xx_fw_dump * ) ha -> fw_dump24 ;
990
+ fw = ha -> fw_dump ;
1004
991
1005
992
rval = QLA_SUCCESS ;
1006
993
fw -> host_status = RD_REG_DWORD (& reg -> host_status );
@@ -1654,7 +1641,7 @@ qla24xx_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
1654
1641
} else {
1655
1642
qla_printk (KERN_INFO , ha ,
1656
1643
"Firmware dump saved to temp buffer (%ld/%p).\n" ,
1657
- ha -> host_no , ha -> fw_dump24 );
1644
+ ha -> host_no , ha -> fw_dump );
1658
1645
ha -> fw_dumped = 1 ;
1659
1646
}
1660
1647
@@ -1672,7 +1659,7 @@ qla24xx_ascii_fw_dump(scsi_qla_host_t *ha)
1672
1659
uint32_t ext_mem_cnt ;
1673
1660
1674
1661
uiter = ha -> fw_dump_buffer ;
1675
- fw = ha -> fw_dump24 ;
1662
+ fw = ha -> fw_dump ;
1676
1663
1677
1664
qla_uprintf (& uiter , "ISP FW Version %d.%02d.%02d Attributes %04x\n" ,
1678
1665
ha -> fw_major_version , ha -> fw_minor_version ,
0 commit comments