[U-Boot-Users] [PATCH] Fixing 'pci' command output
KRONSTORFER Horst
Horst.KRONSTORFER at frequentis.com
Thu Jan 26 17:42:30 CET 2006
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;
}
More information about the U-Boot
mailing list