[openib-general] [PATCH] improve tvflash output (verbose and error cases)
Grant Grundler
iod00d at hp.com
Fri Apr 1 17:51:29 PST 2005
Roland,
This patch adds more output when "-v" is specified and adds details
to output from some of the error cases.
BTW, this is the version of code I used to flash all my
cards to v3.3.2 on rx2600 and rx4640 (HP IA64/ZX1 boxen).
thanks,
grant
Signed-off-by: Grant Grundler <iod00d at hp.com>
Index: src/userspace/tvflash/src/tvflash.c
===================================================================
--- src/userspace/tvflash/src/tvflash.c (revision 2103)
+++ src/userspace/tvflash/src/tvflash.c (working copy)
@@ -460,6 +460,9 @@ static int open_hca(struct tvdevice *tvd
{
cur_hca = tvdev->pdev;
+ if (verbose)
+ fprintf(stderr, "open_hca(%d)\n", tvdev->num);
+
if (!config && tvdev->can_map) {
int fd = open("/dev/mem", O_RDWR, O_SYNC);
if (fd < 0) {
@@ -485,6 +488,9 @@ static int open_hca(struct tvdevice *tvd
static void close_hca(void)
{
+ if (verbose)
+ fprintf(stderr, "close_hca()\n");
+
if (bar0)
munmap(bar0, 1 << 20);
}
@@ -563,6 +569,9 @@ static void flash_write_cmd(unsigned int
static void flash_chip_reset(void)
{
+ if (verbose)
+ fprintf(stderr, "flash_chip_reset()\n");
+
/* Issue Flash Reset Command*/
flash_write_cmd(0x0, 0xf0);
}
@@ -784,6 +793,9 @@ static int flash_image_read_from_file(ch
char *buf;
unsigned int sector_sz;
+ if (verbose)
+ fprintf(stderr, "flash_image_read_from_file(%s)\n", fname);
+
/* Open and read image files */
fimg = fopen(fname, "r");
if (fimg == NULL) {
@@ -872,6 +884,9 @@ static int flash_check_failsafe(void)
char *psbuf;
int i;
+ if (verbose)
+ fprintf(stderr, "flash_check_failsafe()\n");
+
/* Grab the sector size first */
sector_sz_ptr = (flash_byte_read(0x16) << 8) | flash_byte_read(0x17);
sector_sz = (flash_byte_read(0x32 + sector_sz_ptr) << 8) |
@@ -882,6 +897,8 @@ static int flash_check_failsafe(void)
* than 1MB is suspicious and thrown out
*/
if (sector_sz < 12 || sector_sz > 20) {
+ fprintf(stderr, "flash_check_failsafe(): sector_sz (%d) not"
+ " valid. Set to zero.\n", sector_sz);
failsafe.sector_sz = TV_FLASH_DEFAULT_SECTOR_SIZE;
failsafe.valid = 0;
return 0;
@@ -1192,6 +1209,8 @@ static int identify_hca(int num, struct
case PCI_DEVICE_MELLANOX_MT25208_COMPAT:
printf("HCA #%d: Found MT25208 (MT23108 mode)", num);
break;
+ default:
+ printf("HCA #%d: WTF? 0x%x", num, tvdev->pdev->device_id);
}
switch (identify_board(tvdev)) {
@@ -1236,7 +1255,10 @@ static int identify_hca(int num, struct
ver_str,
failsafe.images[0].vsd.data.vendor.topspin.hw_label);
} else
- printf(" Primary image is valid, unknown source\n");
+ printf(" Primary image is valid, "
+ "unknown source (sig 0x%x/0x%x)\n",
+ failsafe.images[0].vsd.data.signature,
+ failsafe.images[0].vsd.data.vendor.topspin.signature2);
} else
printf(" Primary image is NOT valid\n");
@@ -1257,7 +1279,10 @@ static int identify_hca(int num, struct
ver_str,
failsafe.images[1].vsd.data.vendor.topspin.hw_label);
} else
- printf(" Secondary image is valid, unknown source\n");
+ printf(" Secondary image is valid,"
+ " unknown source (sig 0x%x/0x%x)\n",
+ failsafe.images[1].vsd.data.signature,
+ failsafe.images[1].vsd.data.vendor.topspin.signature2);
} else
printf(" Secondary image is NOT valid\n");
} else
@@ -1429,6 +1454,9 @@ static int flash_image_write_to_file(cha
int i, fd;
unsigned int offset;
+ if (verbose)
+ fprintf(stderr, "flash_image_write_to_file(%s)\n", fname);
+
buffer = malloc(failsafe.sector_sz);
if (!buffer) {
fprintf(stderr, "couldn't allocated %d bytes of memory for buffer\n",
@@ -1460,12 +1488,10 @@ static int flash_image_write_to_file(cha
}
write(fd, buffer, failsafe.sector_sz);
-
offset += failsafe.sector_sz;
}
close(fd);
-
return 0;
}
@@ -1474,6 +1500,9 @@ static int download_firmware(int hca, ch
struct tvdevice *tvdev;
int ret;
+ if (verbose)
+ fprintf(stderr, "download_firmware(%d,%s)\n", hca, ofname);
+
tvdev = find_device(hca);
if (!tvdev) {
fprintf(stderr, "couldn't find HCA #%d on the PCI bus\n", hca);
More information about the general
mailing list