[U-Boot-Users] [PATCH] Fixing 'pci' command output

hi!
currently a series of 'pci_bus_to_hose() failed' messages are printed when pciinfo() is called with a invalid (out-of-bounds) bus number.
this patch fixes the output of the 'pci' command by *) checking that the given bus number is actually a number *) checking that the given bus number is not out-of-bounds before doing a scan *) printing 'pci_bus_to_hose() failed' only when DEBUG is defined
Signed-off-by: Horst Kronstorfer <hkronsto <at> frequentis.com>
CHANGELOG
* Fixing 'pci' command output: Patch by Horst Kronstorfer, 26 Jan 2006
diff --git a/common/cmd_pci.c b/common/cmd_pci.c index 4508546..e0e166c 100644 --- a/common/cmd_pci.c +++ b/common/cmd_pci.c @@ -71,6 +71,11 @@ void pciinfo(int BusNum, int ShortPCILis unsigned short VendorID; pci_dev_t dev;
+ if (pci_bus_to_hose(BusNum) == NULL) { + printf("Error: bus no. %d does not exist\n", BusNum); + return; + } + printf("Scanning PCI devices on bus %d\n", BusNum);
if (ShortPCIListing) { @@ -511,9 +516,17 @@ int do_pci (cmd_tbl_t *cmdtp, int flag, if (argv[argc-1][0] == 'l') { value = 0; argc--; + } else if (argv[argc-1][0] == 's') + argc--; + if (argc > 1) { + char *endp; + bdf = simple_strtoul(argv[1], &endp, 16); + if (*endp != '\0') { + printf("Error: `%s' is not a valid " + "bus no.\n", argv[1]); + return 0; + } } - if (argc > 1) - bdf = simple_strtoul(argv[1], NULL, 16); } pciinfo(bdf, value); return 0; diff --git a/drivers/pci.c b/drivers/pci.c index 5360030..34b4055 100644 --- a/drivers/pci.c +++ b/drivers/pci.c @@ -142,7 +142,7 @@ struct pci_controller *pci_bus_to_hose ( if (bus >= hose->first_busno && bus <= hose->last_busno) return hose;
- printf("pci_bus_to_hose() failed\n"); + debug("pci_bus_to_hose() failed\n"); return NULL; }
participants (1)
-
KRONSTORFER Horst