diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2007-05-22 04:24:14 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-05-29 05:49:18 -0400 |
commit | 5840fc66bb47fa4382bf3229d4979c3fcd375b01 (patch) | |
tree | f78d353911ce07e0801d8b55e1015ed5aa2a635f /arch/sparc64 | |
parent | 9977e390dd25751fc40e01850da88b37d3c81109 (diff) |
[SPARC64]: PCI device scan is way too verbose by default.
These messages were very useful when bringing up the
OBP based PCI device scan code, but it's just a lot
of noise every bootup now especially on big machines.
The messages can be re-enabled via 'ofpci_debug=1' on
the kernel command line.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64')
-rw-r--r-- | arch/sparc64/kernel/pci.c | 54 |
1 files changed, 40 insertions, 14 deletions
diff --git a/arch/sparc64/kernel/pci.c b/arch/sparc64/kernel/pci.c index d4c077dc5e85..38a32bc95d22 100644 --- a/arch/sparc64/kernel/pci.c +++ b/arch/sparc64/kernel/pci.c | |||
@@ -306,6 +306,20 @@ static void __init pci_controller_probe(void) | |||
306 | pci_controller_scan(pci_controller_init); | 306 | pci_controller_scan(pci_controller_init); |
307 | } | 307 | } |
308 | 308 | ||
309 | static int ofpci_verbose; | ||
310 | |||
311 | static int __init ofpci_debug(char *str) | ||
312 | { | ||
313 | int val = 0; | ||
314 | |||
315 | get_option(&str, &val); | ||
316 | if (val) | ||
317 | ofpci_verbose = 1; | ||
318 | return 1; | ||
319 | } | ||
320 | |||
321 | __setup("ofpci_debug=", ofpci_debug); | ||
322 | |||
309 | static unsigned long pci_parse_of_flags(u32 addr0) | 323 | static unsigned long pci_parse_of_flags(u32 addr0) |
310 | { | 324 | { |
311 | unsigned long flags = 0; | 325 | unsigned long flags = 0; |
@@ -337,7 +351,9 @@ static void pci_parse_of_addrs(struct of_device *op, | |||
337 | addrs = of_get_property(node, "assigned-addresses", &proplen); | 351 | addrs = of_get_property(node, "assigned-addresses", &proplen); |
338 | if (!addrs) | 352 | if (!addrs) |
339 | return; | 353 | return; |
340 | printk(" parse addresses (%d bytes) @ %p\n", proplen, addrs); | 354 | if (ofpci_verbose) |
355 | printk(" parse addresses (%d bytes) @ %p\n", | ||
356 | proplen, addrs); | ||
341 | op_res = &op->resource[0]; | 357 | op_res = &op->resource[0]; |
342 | for (; proplen >= 20; proplen -= 20, addrs += 5, op_res++) { | 358 | for (; proplen >= 20; proplen -= 20, addrs += 5, op_res++) { |
343 | struct resource *res; | 359 | struct resource *res; |
@@ -348,8 +364,9 @@ static void pci_parse_of_addrs(struct of_device *op, | |||
348 | if (!flags) | 364 | if (!flags) |
349 | continue; | 365 | continue; |
350 | i = addrs[0] & 0xff; | 366 | i = addrs[0] & 0xff; |
351 | printk(" start: %lx, end: %lx, i: %x\n", | 367 | if (ofpci_verbose) |
352 | op_res->start, op_res->end, i); | 368 | printk(" start: %lx, end: %lx, i: %x\n", |
369 | op_res->start, op_res->end, i); | ||
353 | 370 | ||
354 | if (PCI_BASE_ADDRESS_0 <= i && i <= PCI_BASE_ADDRESS_5) { | 371 | if (PCI_BASE_ADDRESS_0 <= i && i <= PCI_BASE_ADDRESS_5) { |
355 | res = &dev->resource[(i - PCI_BASE_ADDRESS_0) >> 2]; | 372 | res = &dev->resource[(i - PCI_BASE_ADDRESS_0) >> 2]; |
@@ -393,8 +410,9 @@ struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm, | |||
393 | if (type == NULL) | 410 | if (type == NULL) |
394 | type = ""; | 411 | type = ""; |
395 | 412 | ||
396 | printk(" create device, devfn: %x, type: %s hostcontroller(%d)\n", | 413 | if (ofpci_verbose) |
397 | devfn, type, host_controller); | 414 | printk(" create device, devfn: %x, type: %s\n", |
415 | devfn, type); | ||
398 | 416 | ||
399 | dev->bus = bus; | 417 | dev->bus = bus; |
400 | dev->sysdata = node; | 418 | dev->sysdata = node; |
@@ -434,8 +452,9 @@ struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm, | |||
434 | sprintf(pci_name(dev), "%04x:%02x:%02x.%d", pci_domain_nr(bus), | 452 | sprintf(pci_name(dev), "%04x:%02x:%02x.%d", pci_domain_nr(bus), |
435 | dev->bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn)); | 453 | dev->bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn)); |
436 | } | 454 | } |
437 | printk(" class: 0x%x device name: %s\n", | 455 | if (ofpci_verbose) |
438 | dev->class, pci_name(dev)); | 456 | printk(" class: 0x%x device name: %s\n", |
457 | dev->class, pci_name(dev)); | ||
439 | 458 | ||
440 | /* I have seen IDE devices which will not respond to | 459 | /* I have seen IDE devices which will not respond to |
441 | * the bmdma simplex check reads if bus mastering is | 460 | * the bmdma simplex check reads if bus mastering is |
@@ -469,7 +488,8 @@ struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm, | |||
469 | } | 488 | } |
470 | pci_parse_of_addrs(sd->op, node, dev); | 489 | pci_parse_of_addrs(sd->op, node, dev); |
471 | 490 | ||
472 | printk(" adding to system ...\n"); | 491 | if (ofpci_verbose) |
492 | printk(" adding to system ...\n"); | ||
473 | 493 | ||
474 | pci_device_add(dev, bus); | 494 | pci_device_add(dev, bus); |
475 | 495 | ||
@@ -547,7 +567,8 @@ static void __devinit of_scan_pci_bridge(struct pci_pbm_info *pbm, | |||
547 | unsigned int flags; | 567 | unsigned int flags; |
548 | u64 size; | 568 | u64 size; |
549 | 569 | ||
550 | printk("of_scan_pci_bridge(%s)\n", node->full_name); | 570 | if (ofpci_verbose) |
571 | printk("of_scan_pci_bridge(%s)\n", node->full_name); | ||
551 | 572 | ||
552 | /* parse bus-range property */ | 573 | /* parse bus-range property */ |
553 | busrange = of_get_property(node, "bus-range", &len); | 574 | busrange = of_get_property(node, "bus-range", &len); |
@@ -632,7 +653,8 @@ static void __devinit of_scan_pci_bridge(struct pci_pbm_info *pbm, | |||
632 | simba_cont: | 653 | simba_cont: |
633 | sprintf(bus->name, "PCI Bus %04x:%02x", pci_domain_nr(bus), | 654 | sprintf(bus->name, "PCI Bus %04x:%02x", pci_domain_nr(bus), |
634 | bus->number); | 655 | bus->number); |
635 | printk(" bus name: %s\n", bus->name); | 656 | if (ofpci_verbose) |
657 | printk(" bus name: %s\n", bus->name); | ||
636 | 658 | ||
637 | pci_of_scan_bus(pbm, node, bus); | 659 | pci_of_scan_bus(pbm, node, bus); |
638 | } | 660 | } |
@@ -646,12 +668,14 @@ static void __devinit pci_of_scan_bus(struct pci_pbm_info *pbm, | |||
646 | int reglen, devfn; | 668 | int reglen, devfn; |
647 | struct pci_dev *dev; | 669 | struct pci_dev *dev; |
648 | 670 | ||
649 | printk("PCI: scan_bus[%s] bus no %d\n", | 671 | if (ofpci_verbose) |
650 | node->full_name, bus->number); | 672 | printk("PCI: scan_bus[%s] bus no %d\n", |
673 | node->full_name, bus->number); | ||
651 | 674 | ||
652 | child = NULL; | 675 | child = NULL; |
653 | while ((child = of_get_next_child(node, child)) != NULL) { | 676 | while ((child = of_get_next_child(node, child)) != NULL) { |
654 | printk(" * %s\n", child->full_name); | 677 | if (ofpci_verbose) |
678 | printk(" * %s\n", child->full_name); | ||
655 | reg = of_get_property(child, "reg", ®len); | 679 | reg = of_get_property(child, "reg", ®len); |
656 | if (reg == NULL || reglen < 20) | 680 | if (reg == NULL || reglen < 20) |
657 | continue; | 681 | continue; |
@@ -661,7 +685,9 @@ static void __devinit pci_of_scan_bus(struct pci_pbm_info *pbm, | |||
661 | dev = of_create_pci_dev(pbm, child, bus, devfn, 0); | 685 | dev = of_create_pci_dev(pbm, child, bus, devfn, 0); |
662 | if (!dev) | 686 | if (!dev) |
663 | continue; | 687 | continue; |
664 | printk("PCI: dev header type: %x\n", dev->hdr_type); | 688 | if (ofpci_verbose) |
689 | printk("PCI: dev header type: %x\n", | ||
690 | dev->hdr_type); | ||
665 | 691 | ||
666 | if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE || | 692 | if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE || |
667 | dev->hdr_type == PCI_HEADER_TYPE_CARDBUS) | 693 | dev->hdr_type == PCI_HEADER_TYPE_CARDBUS) |