diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-02-12 02:38:00 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-03-20 04:12:30 -0500 |
commit | 221b2fb818c307e1cb47e036a1671ca554d9cd0a (patch) | |
tree | 8272df9706662098fce37984e9ea0e06ee5922ab /arch/sparc64/kernel | |
parent | 6241e5cc6afe2c5b75b51e1c890df18f05838cf6 (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.c | 20 |
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 | */ |
640 | static void pci_sun4v_determine_mem_io_space(struct pci_pbm_info *pbm) | 640 | static 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 | } |