Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4fe55035 authored by Shivasharan S's avatar Shivasharan S Committed by Martin K. Petersen
Browse files

scsi: megaraid_sas: Add formatting option for megasas_dump



Add option to format the buffer that is being dumped.  Currently, the IO
frame and chain frame dumped in the syslog is getting split across multiple
lines based on the formatting.  Fix this by using KERN_CONT in printk.

Signed-off-by: default avatarSumit Saxena <sumit.saxena@broadcom.com>
Signed-off-by: default avatarShivasharan S <shivasharan.srikanteshwara@broadcom.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 2ce43508
Loading
Loading
Loading
Loading
+18 −12
Original line number Original line Diff line number Diff line
@@ -2837,22 +2837,28 @@ blk_eh_timer_return megasas_reset_timer(struct scsi_cmnd *scmd)
}
}


/**
/**
 * megasas_dump -	This function will provide hexdump
 * megasas_dump -	This function will print hexdump of provided buffer.
 * @ptr:		Pointer starting which memory should be dumped
 * @buf:		Buffer to be dumped
 * @size:		Size of memory to be dumped
 * @sz:		Size in bytes
 * @format:		Different formats of dumping e.g. format=n will
 *			cause only 'n' 32 bit words to be dumped in a single
 *			line.
 */
 */
inline void
inline void
megasas_dump(void *ptr, int sz)
megasas_dump(void *buf, int sz, int format)
{
{
	int i;
	int i;
	__le32 *loc = (__le32 *)ptr;
	__le32 *buf_loc = (__le32 *)buf;


	for (i = 0; i < sz / sizeof(__le32); i++) {
	for (i = 0; i < (sz / sizeof(__le32)); i++) {
		if (i && ((i % 8) == 0))
		if ((i % format) == 0) {
			printk("\n\t");
			if (i != 0)
		printk("%08x ", le32_to_cpu(loc[i]));
				printk(KERN_CONT "\n");
			printk(KERN_CONT "%08x: ", (i * 4));
		}
		}
	printk("\n");
		printk(KERN_CONT "%08x ", le32_to_cpu(buf_loc[i]));
	}
	printk(KERN_CONT "\n");
}
}


/**
/**
@@ -2886,10 +2892,10 @@ megasas_dump_fusion_io(struct scsi_cmnd *scmd)


		printk(KERN_INFO "IO request frame:\n");
		printk(KERN_INFO "IO request frame:\n");
		megasas_dump(cmd->io_request,
		megasas_dump(cmd->io_request,
			     MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE);
			     MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE, 8);
		printk(KERN_INFO "Chain frame:\n");
		printk(KERN_INFO "Chain frame:\n");
		megasas_dump(cmd->sg_frame,
		megasas_dump(cmd->sg_frame,
			     instance->max_chain_frame_sz);
			     instance->max_chain_frame_sz, 8);
	}
	}


}
}