Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3487a1f9e719d36c9b2d4d492994b2dd815a58b7
Commit:     3487a1f9e719d36c9b2d4d492994b2dd815a58b7
Parent:     229177c7f38d6a2b1285b42da4b19d76346b4bac
Author:     David S. Miller <[EMAIL PROTECTED]>
AuthorDate: Thu Mar 8 22:28:17 2007 -0800
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Thu Apr 26 01:55:13 2007 -0700

    [SPARC64]: Kill PBM ranges software state.
    
    It is only used in one spot and we can just fetch the
    OF property right there.
    
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 arch/sparc64/kernel/pci_common.c |   19 +++++++++++++++----
 arch/sparc64/kernel/pci_psycho.c |   10 ----------
 arch/sparc64/kernel/pci_schizo.c |    5 -----
 arch/sparc64/kernel/pci_sun4v.c  |   13 -------------
 include/asm-sparc64/pbm.h        |    2 --
 5 files changed, 15 insertions(+), 34 deletions(-)

diff --git a/arch/sparc64/kernel/pci_common.c b/arch/sparc64/kernel/pci_common.c
index 4945d70..6b5c8e7 100644
--- a/arch/sparc64/kernel/pci_common.c
+++ b/arch/sparc64/kernel/pci_common.c
@@ -73,17 +73,28 @@ static void pci_register_iommu_region(struct pci_pbm_info 
*pbm)
 
 void pci_determine_mem_io_space(struct pci_pbm_info *pbm)
 {
+       struct linux_prom_pci_ranges *pbm_ranges;
        int i, saw_mem, saw_io;
+       int num_pbm_ranges;
 
        saw_mem = saw_io = 0;
-       for (i = 0; i < pbm->num_pbm_ranges; i++) {
-               struct linux_prom_pci_ranges *pr = &pbm->pbm_ranges[i];
+       pbm_ranges = of_get_property(pbm->prom_node, "ranges", &i);
+       num_pbm_ranges = i / sizeof(*pbm_ranges);
+
+       for (i = 0; i < num_pbm_ranges; i++) {
+               struct linux_prom_pci_ranges *pr = &pbm_ranges[i];
                unsigned long a;
+               u32 parent_phys_hi, parent_phys_lo;
                int type;
 
+               parent_phys_hi = pr->parent_phys_hi;
+               parent_phys_lo = pr->parent_phys_lo;
+               if (tlb_type == hypervisor)
+                       parent_phys_hi &= 0x0fffffff;
+
                type = (pr->child_phys_hi >> 24) & 0x3;
-               a = (((unsigned long)pr->parent_phys_hi << 32UL) |
-                    ((unsigned long)pr->parent_phys_lo  <<  0UL));
+               a = (((unsigned long)parent_phys_hi << 32UL) |
+                    ((unsigned long)parent_phys_lo  <<  0UL));
 
                switch (type) {
                case 0:
diff --git a/arch/sparc64/kernel/pci_psycho.c b/arch/sparc64/kernel/pci_psycho.c
index 7b7010a..1717df5 100644
--- a/arch/sparc64/kernel/pci_psycho.c
+++ b/arch/sparc64/kernel/pci_psycho.c
@@ -1136,7 +1136,6 @@ static void psycho_pbm_init(struct pci_controller_info *p,
        unsigned int *busrange;
        struct property *prop;
        struct pci_pbm_info *pbm;
-       int len;
 
        if (is_pbm_a) {
                pbm = &p->pbm_A;
@@ -1166,15 +1165,6 @@ static void psycho_pbm_init(struct pci_controller_info 
*p,
               pbm->name,
               pbm->chip_version, pbm->chip_revision);
 
-       prop = of_find_property(dp, "ranges", &len);
-       if (prop) {
-               pbm->pbm_ranges = prop->value;
-               pbm->num_pbm_ranges =
-                       (len / sizeof(struct linux_prom_pci_ranges));
-       } else {
-               pbm->num_pbm_ranges = 0;
-       }
-
        prop = of_find_property(dp, "bus-range", NULL);
        busrange = prop->value;
        pbm->pci_first_busno = busrange[0];
diff --git a/arch/sparc64/kernel/pci_schizo.c b/arch/sparc64/kernel/pci_schizo.c
index 81daf90..dec8dc9 100644
--- a/arch/sparc64/kernel/pci_schizo.c
+++ b/arch/sparc64/kernel/pci_schizo.c
@@ -1542,7 +1542,6 @@ static void schizo_pbm_init(struct pci_controller_info *p,
        const char *chipset_name;
        u32 *ino_bitmap;
        int is_pbm_a;
-       int len;
 
        switch (chip_type) {
        case PBM_CHIP_TYPE_TOMATILLO:
@@ -1601,10 +1600,6 @@ static void schizo_pbm_init(struct pci_controller_info 
*p,
 
        schizo_pbm_hw_init(pbm);
 
-       pbm->pbm_ranges = of_get_property(dp, "ranges", &len);
-       pbm->num_pbm_ranges =
-               (len / sizeof(struct linux_prom_pci_ranges));
-
        pci_determine_mem_io_space(pbm);
 
        ino_bitmap = of_get_property(dp, "ino-bitmap", NULL);
diff --git a/arch/sparc64/kernel/pci_sun4v.c b/arch/sparc64/kernel/pci_sun4v.c
index 7bee6b1..9b57ba1 100644
--- a/arch/sparc64/kernel/pci_sun4v.c
+++ b/arch/sparc64/kernel/pci_sun4v.c
@@ -1301,8 +1301,6 @@ static void pci_sun4v_msi_init(struct pci_pbm_info *pbm)
 static void pci_sun4v_pbm_init(struct pci_controller_info *p, struct 
device_node *dp, u32 devhandle)
 {
        struct pci_pbm_info *pbm;
-       struct property *prop;
-       int len, i;
 
        if (devhandle & 0x40)
                pbm = &p->pbm_B;
@@ -1319,17 +1317,6 @@ static void pci_sun4v_pbm_init(struct 
pci_controller_info *p, struct device_node
 
        printk("%s: SUN4V PCI Bus Module\n", pbm->name);
 
-       prop = of_find_property(dp, "ranges", &len);
-       pbm->pbm_ranges = prop->value;
-       pbm->num_pbm_ranges =
-               (len / sizeof(struct linux_prom_pci_ranges));
-
-       /* Mask out the top 8 bits of the ranges, leaving the real
-        * physical address.
-        */
-       for (i = 0; i < pbm->num_pbm_ranges; i++)
-               pbm->pbm_ranges[i].parent_phys_hi &= 0x0fffffff;
-
        pci_determine_mem_io_space(pbm);
 
        pci_sun4v_get_bus_range(pbm);
diff --git a/include/asm-sparc64/pbm.h b/include/asm-sparc64/pbm.h
index f31de45..6292909 100644
--- a/include/asm-sparc64/pbm.h
+++ b/include/asm-sparc64/pbm.h
@@ -160,8 +160,6 @@ struct pci_pbm_info {
 
        /* OBP specific information. */
        struct device_node              *prom_node;
-       struct linux_prom_pci_ranges    *pbm_ranges;
-       int                             num_pbm_ranges;
        u64                             ino_bitmap;
 
        /* PBM I/O and Memory space resources. */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to