aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-02-12 02:38:00 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 04:12:30 -0500
commit221b2fb818c307e1cb47e036a1671ca554d9cd0a (patch)
tree8272df9706662098fce37984e9ea0e06ee5922ab /arch/sparc64/kernel
parent6241e5cc6afe2c5b75b51e1c890df18f05838cf6 (diff)
[SPARC64]: Don't expect cfg space in PCI PBM ranges on SUN4V.
PCI cfg space is accessed transparently through the Hypervisor and not through direct cpu PIO operations. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel')
-rw-r--r--arch/sparc64/kernel/pci_sun4v.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/arch/sparc64/kernel/pci_sun4v.c b/arch/sparc64/kernel/pci_sun4v.c
index 3f0e3c09f4d3..699e91e3e429 100644
--- a/arch/sparc64/kernel/pci_sun4v.c
+++ b/arch/sparc64/kernel/pci_sun4v.c
@@ -639,9 +639,9 @@ static void pci_sun4v_resource_adjust(struct pci_dev *pdev,
639 */ 639 */
640static void pci_sun4v_determine_mem_io_space(struct pci_pbm_info *pbm) 640static void pci_sun4v_determine_mem_io_space(struct pci_pbm_info *pbm)
641{ 641{
642 int i, saw_cfg, saw_mem, saw_io; 642 int i, saw_mem, saw_io;
643 643
644 saw_cfg = saw_mem = saw_io = 0; 644 saw_mem = saw_io = 0;
645 for (i = 0; i < pbm->num_pbm_ranges; i++) { 645 for (i = 0; i < pbm->num_pbm_ranges; i++) {
646 struct linux_prom_pci_ranges *pr = &pbm->pbm_ranges[i]; 646 struct linux_prom_pci_ranges *pr = &pbm->pbm_ranges[i];
647 unsigned long a; 647 unsigned long a;
@@ -652,12 +652,6 @@ static void pci_sun4v_determine_mem_io_space(struct pci_pbm_info *pbm)
652 ((unsigned long)pr->parent_phys_lo << 0UL)); 652 ((unsigned long)pr->parent_phys_lo << 0UL));
653 653
654 switch (type) { 654 switch (type) {
655 case 0:
656 /* PCI config space, 16MB */
657 pbm->config_space = a;
658 saw_cfg = 1;
659 break;
660
661 case 1: 655 case 1:
662 /* 16-bit IO space, 16MB */ 656 /* 16-bit IO space, 16MB */
663 pbm->io_space.start = a; 657 pbm->io_space.start = a;
@@ -679,19 +673,15 @@ static void pci_sun4v_determine_mem_io_space(struct pci_pbm_info *pbm)
679 }; 673 };
680 } 674 }
681 675
682 if (!saw_cfg || !saw_io || !saw_mem) { 676 if (!saw_io || !saw_mem) {
683 prom_printf("%s: Fatal error, missing %s PBM range.\n", 677 prom_printf("%s: Fatal error, missing %s PBM range.\n",
684 pbm->name, 678 pbm->name,
685 ((!saw_cfg ? 679 (!saw_io ? "IO" : "MEM"));
686 "CFG" :
687 (!saw_io ?
688 "IO" : "MEM"))));
689 prom_halt(); 680 prom_halt();
690 } 681 }
691 682
692 printk("%s: PCI CFG[%lx] IO[%lx] MEM[%lx]\n", 683 printk("%s: PCI IO[%lx] MEM[%lx]\n",
693 pbm->name, 684 pbm->name,
694 pbm->config_space,
695 pbm->io_space.start, 685 pbm->io_space.start,
696 pbm->mem_space.start); 686 pbm->mem_space.start);
697} 687}