From c351c317ed8dc5b9fb562cadf97acfc9ebdfe94e Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Sun, 18 Dec 2005 18:40:46 +0000 Subject: Redo image checking in conversion case Please update to this release if you are using flashrom. Corresponding to flashrom svn r38 and coreboot v2 svn r2147. --- layout.c | 44 +++++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 13 deletions(-) (limited to 'layout.c') diff --git a/layout.c b/layout.c index 8ac3af8..5478782 100644 --- a/layout.c +++ b/layout.c @@ -50,28 +50,46 @@ int show_id(uint8_t *bios, int size) return 0; } - printf("LinuxBIOS last image size (not rom size) is %d bytes.\n", *walk); + printf_debug("LinuxBIOS last image size " + "(not rom size) is %d bytes.\n", *walk); walk--; mainboard_part=strdup((const char *)(bios+size-*walk)); walk--; mainboard_vendor=strdup((const char *)(bios+size-*walk)); - printf("MANUFACTURER: %s\n", mainboard_vendor); - printf("MAINBOARD ID: %s\n", mainboard_part); + printf_debug("MANUFACTURER: %s\n", mainboard_vendor); + printf_debug("MAINBOARD ID: %s\n", mainboard_part); + + + /* + * If lb_vendor is not set, the linuxbios table was + * not found. Nor was -mVENDOR:PART specified + */ + + if(!lb_vendor || !lb_part) { + printf("Note: If the following flash access fails, " + "you might need to specify -m :\n"); + return 0; + } /* These comparisons are case insensitive to make things * a little less user^Werror prone. */ - if(lb_vendor && !strcasecmp(mainboard_vendor, lb_vendor) && - lb_part && !strcasecmp(mainboard_part, lb_part)) { - printf ("This firmware image matches " - "this motherboard.\n"); + + if(!strcasecmp(mainboard_vendor, lb_vendor) && + !strcasecmp(mainboard_part, lb_part)) { + printf_debug("This firmware image matches " + "this motherboard.\n"); } else { if(force) { printf("WARNING: This firmware image does not " - "fit to this machine - forcing it.\n"); + "seem to fit to this machine - forcing it.\n"); } else { - printf("ERROR: This firmware image does not " - "fit to this machine\nOverride with -m if" - "you know exactly what you are doing.\n"); + printf("ERROR: Your firmware image (%s:%s) does not " + "appear to\n be correct for the detected " + "mainboard (%s:%s)\n\nOverride with --force if you " + "are absolutely sure that you\nare using a correct " + "image for this mainboard or override\nthe detected " + "values with --mainboard :.\n\n", + mainboard_vendor, mainboard_part, lb_vendor, lb_part); exit(1); } } @@ -88,7 +106,7 @@ int read_romlayout(char *name) romlayout=fopen (name, "r"); if(!romlayout) { - printf("Error while opening rom layout.\n"); + printf("Error while opening rom layout (%s).\n", name); return -1; } @@ -110,7 +128,7 @@ int read_romlayout(char *name) } for(i=0; i