]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 5 Aug 2010 16:03:46 +0000 (09:03 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 5 Aug 2010 16:03:46 +0000 (09:03 -0700)
* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (79 commits)
  powerpc/8xx: Add support for the MPC8xx based boards from TQC
  powerpc/85xx: Introduce support for the Freescale P1022DS reference board
  powerpc/85xx: Adding DTS for the STx GP3-SSA MPC8555 board
  powerpc/85xx: Change deprecated binding for 85xx-based boards
  powerpc/tqm85xx: add a quirk for ti1520 PCMCIA bridge
  powerpc/tqm85xx: update PCI interrupt-map attribute
  powerpc/mpc8308rdb: support for MPC8308RDB board from Freescale
  powerpc/fsl_pci: add quirk for mpc8308 pcie bridge
  powerpc/85xx: Cleanup QE initialization for MPC85xxMDS boards
  powerpc/85xx: Fix booting for P1021MDS boards
  powerpc/85xx: Fix SWIOTLB initalization for MPC85xxMDS boards
  powerpc/85xx: kexec for SMP 85xx BookE systems
  powerpc/5200/i2c: improve i2c bus error recovery
  of/xilinxfb: update tft compatible versions
  powerpc/fsl-diu-fb: Support setting display mode using EDID
  powerpc/5121: doc/dts-bindings: update doc of FSL DIU bindings
  powerpc/5121: shared DIU framebuffer support
  powerpc/5121: move fsl-diu-fb.h to include/linux
  powerpc/5121: fsl-diu-fb: fix issue with re-enabling DIU area descriptor
  powerpc/512x: add clock structure for Video-IN (VIU) unit
  ...

1  2 
arch/powerpc/mm/numa.c
drivers/net/Kconfig
drivers/video/Kconfig
include/linux/pci_ids.h

diff --combined arch/powerpc/mm/numa.c
index aa731af720c04e4816f0e9826d7f05109631bccb,338c6f39eab236edff5f591fa5ac75910cfecb86..002878ccf90b04bc46b12e1556d6e7f8775595be
@@@ -42,6 -42,12 +42,12 @@@ EXPORT_SYMBOL(node_data)
  
  static int min_common_depth;
  static int n_mem_addr_cells, n_mem_size_cells;
+ static int form1_affinity;
+ #define MAX_DISTANCE_REF_POINTS 4
+ static int distance_ref_points_depth;
+ static const unsigned int *distance_ref_points;
+ static int distance_lookup_table[MAX_NUMNODES][MAX_DISTANCE_REF_POINTS];
  
  /*
   * Allocate node_to_cpumask_map based on number of available nodes
@@@ -204,6 -210,39 +210,39 @@@ static const u32 *of_get_usable_memory(
        return prop;
  }
  
+ int __node_distance(int a, int b)
+ {
+       int i;
+       int distance = LOCAL_DISTANCE;
+       if (!form1_affinity)
+               return distance;
+       for (i = 0; i < distance_ref_points_depth; i++) {
+               if (distance_lookup_table[a][i] == distance_lookup_table[b][i])
+                       break;
+               /* Double the distance for each NUMA level */
+               distance *= 2;
+       }
+       return distance;
+ }
+ static void initialize_distance_lookup_table(int nid,
+               const unsigned int *associativity)
+ {
+       int i;
+       if (!form1_affinity)
+               return;
+       for (i = 0; i < distance_ref_points_depth; i++) {
+               distance_lookup_table[nid][i] =
+                       associativity[distance_ref_points[i]];
+       }
+ }
  /* Returns nid in the range [0..MAX_NUMNODES-1], or -1 if no useful numa
   * info is found.
   */
@@@ -225,6 -264,10 +264,10 @@@ static int of_node_to_nid_single(struc
        /* POWER4 LPAR uses 0xffff as invalid node */
        if (nid == 0xffff || nid >= MAX_NUMNODES)
                nid = -1;
+       if (nid > 0 && tmp[0] >= distance_ref_points_depth)
+               initialize_distance_lookup_table(nid, tmp);
  out:
        return nid;
  }
@@@ -251,26 -294,10 +294,10 @@@ int of_node_to_nid(struct device_node *
  }
  EXPORT_SYMBOL_GPL(of_node_to_nid);
  
- /*
-  * In theory, the "ibm,associativity" property may contain multiple
-  * associativity lists because a resource may be multiply connected
-  * into the machine.  This resource then has different associativity
-  * characteristics relative to its multiple connections.  We ignore
-  * this for now.  We also assume that all cpu and memory sets have
-  * their distances represented at a common level.  This won't be
-  * true for hierarchical NUMA.
-  *
-  * In any case the ibm,associativity-reference-points should give
-  * the correct depth for a normal NUMA system.
-  *
-  * - Dave Hansen <haveblue@us.ibm.com>
-  */
  static int __init find_min_common_depth(void)
  {
-       int depth, index;
-       const unsigned int *ref_points;
+       int depth;
        struct device_node *rtas_root;
-       unsigned int len;
        struct device_node *chosen;
        const char *vec5;
  
                return -1;
  
        /*
-        * this property is 2 32-bit integers, each representing a level of
-        * depth in the associativity nodes.  The first is for an SMP
-        * configuration (should be all 0's) and the second is for a normal
-        * NUMA configuration.
+        * This property is a set of 32-bit integers, each representing
+        * an index into the ibm,associativity nodes.
+        *
+        * With form 0 affinity the first integer is for an SMP configuration
+        * (should be all 0's) and the second is for a normal NUMA
+        * configuration. We have only one level of NUMA.
+        *
+        * With form 1 affinity the first integer is the most significant
+        * NUMA boundary and the following are progressively less significant
+        * boundaries. There can be more than one level of NUMA.
         */
-       index = 1;
-       ref_points = of_get_property(rtas_root,
-                       "ibm,associativity-reference-points", &len);
+       distance_ref_points = of_get_property(rtas_root,
+                                       "ibm,associativity-reference-points",
+                                       &distance_ref_points_depth);
+       if (!distance_ref_points) {
+               dbg("NUMA: ibm,associativity-reference-points not found.\n");
+               goto err;
+       }
+       distance_ref_points_depth /= sizeof(int);
  
-       /*
-        * For form 1 affinity information we want the first field
-        */
  #define VEC5_AFFINITY_BYTE    5
  #define VEC5_AFFINITY         0x80
        chosen = of_find_node_by_path("/chosen");
                vec5 = of_get_property(chosen, "ibm,architecture-vec-5", NULL);
                if (vec5 && (vec5[VEC5_AFFINITY_BYTE] & VEC5_AFFINITY)) {
                        dbg("Using form 1 affinity\n");
-                       index = 0;
+                       form1_affinity = 1;
                }
        }
  
-       if ((len >= 2 * sizeof(unsigned int)) && ref_points) {
-               depth = ref_points[index];
+       if (form1_affinity) {
+               depth = distance_ref_points[0];
        } else {
-               dbg("NUMA: ibm,associativity-reference-points not found.\n");
-               depth = -1;
+               if (distance_ref_points_depth < 2) {
+                       printk(KERN_WARNING "NUMA: "
+                               "short ibm,associativity-reference-points\n");
+                       goto err;
+               }
+               depth = distance_ref_points[1];
        }
-       of_node_put(rtas_root);
  
+       /*
+        * Warn and cap if the hardware supports more than
+        * MAX_DISTANCE_REF_POINTS domains.
+        */
+       if (distance_ref_points_depth > MAX_DISTANCE_REF_POINTS) {
+               printk(KERN_WARNING "NUMA: distance array capped at "
+                       "%d entries\n", MAX_DISTANCE_REF_POINTS);
+               distance_ref_points_depth = MAX_DISTANCE_REF_POINTS;
+       }
+       of_node_put(rtas_root);
        return depth;
+ err:
+       of_node_put(rtas_root);
+       return -1;
  }
  
  static void __init get_n_mem_cells(int *n_addr_cells, int *n_size_cells)
@@@ -398,15 -454,15 +454,15 @@@ static int of_get_drconf_memory(struct 
  }
  
  /*
 - * Retreive and validate the ibm,memblock-size property for drconf memory
 + * Retreive and validate the ibm,lmb-size property for drconf memory
   * from the device tree.
   */
 -static u64 of_get_memblock_size(struct device_node *memory)
 +static u64 of_get_lmb_size(struct device_node *memory)
  {
        const u32 *prop;
        u32 len;
  
 -      prop = of_get_property(memory, "ibm,memblock-size", &len);
 +      prop = of_get_property(memory, "ibm,lmb-size", &len);
        if (!prop || len < sizeof(unsigned int))
                return 0;
  
@@@ -562,7 -618,7 +618,7 @@@ static unsigned long __init numa_enforc
  static inline int __init read_usm_ranges(const u32 **usm)
  {
        /*
 -       * For each memblock in ibm,dynamic-memory a corresponding
 +       * For each lmb in ibm,dynamic-memory a corresponding
         * entry in linux,drconf-usable-memory property contains
         * a counter followed by that many (base, size) duple.
         * read the counter from linux,drconf-usable-memory
@@@ -578,7 -634,7 +634,7 @@@ static void __init parse_drconf_memory(
  {
        const u32 *dm, *usm;
        unsigned int n, rc, ranges, is_kexec_kdump = 0;
 -      unsigned long memblock_size, base, size, sz;
 +      unsigned long lmb_size, base, size, sz;
        int nid;
        struct assoc_arrays aa;
  
        if (!n)
                return;
  
 -      memblock_size = of_get_memblock_size(memory);
 -      if (!memblock_size)
 +      lmb_size = of_get_lmb_size(memory);
 +      if (!lmb_size)
                return;
  
        rc = of_get_assoc_arrays(memory, &aa);
                        continue;
  
                base = drmem.base_addr;
 -              size = memblock_size;
 +              size = lmb_size;
                ranges = 1;
  
                if (is_kexec_kdump) {
@@@ -1072,7 -1128,7 +1128,7 @@@ static int hot_add_drconf_scn_to_nid(st
  {
        const u32 *dm;
        unsigned int drconf_cell_cnt, rc;
 -      unsigned long memblock_size;
 +      unsigned long lmb_size;
        struct assoc_arrays aa;
        int nid = -1;
  
        if (!drconf_cell_cnt)
                return -1;
  
 -      memblock_size = of_get_memblock_size(memory);
 -      if (!memblock_size)
 +      lmb_size = of_get_lmb_size(memory);
 +      if (!lmb_size)
                return -1;
  
        rc = of_get_assoc_arrays(memory, &aa);
                        continue;
  
                if ((scn_addr < drmem.base_addr)
 -                  || (scn_addr >= (drmem.base_addr + memblock_size)))
 +                  || (scn_addr >= (drmem.base_addr + lmb_size)))
                        continue;
  
                nid = of_drconf_to_nid_single(&drmem, &aa);
diff --combined drivers/net/Kconfig
index 23c13180ff14811dd5925e231db7ac795c99c05c,313d3060fc1d64e646c41370bd23f1cfa42e4445..5a6895320b48a8d7774acfb4e6b239713cc6bd9d
@@@ -484,7 -484,7 +484,7 @@@ config XTENSA_XT2000_SONI
  
  config MIPS_AU1X00_ENET
        tristate "MIPS AU1000 Ethernet support"
 -      depends on SOC_AU1X00
 +      depends on MIPS_ALCHEMY
        select PHYLIB
        select CRC32
        help
@@@ -530,15 -530,14 +530,15 @@@ config SH_ET
        depends on SUPERH && \
                (CPU_SUBTYPE_SH7710 || CPU_SUBTYPE_SH7712 || \
                 CPU_SUBTYPE_SH7763 || CPU_SUBTYPE_SH7619 || \
 -               CPU_SUBTYPE_SH7724)
 +               CPU_SUBTYPE_SH7724 || CPU_SUBTYPE_SH7757)
        select CRC32
        select MII
        select MDIO_BITBANG
        select PHYLIB
        help
          Renesas SuperH Ethernet device driver.
 -        This driver support SH7710, SH7712, SH7763, SH7619, and SH7724.
 +        This driver supporting CPUs are:
 +              - SH7710, SH7712, SH7763, SH7619, SH7724, and SH7757.
  
  config SUNLANCE
        tristate "Sun LANCE support"
@@@ -914,7 -913,7 +914,7 @@@ config SMC91
        tristate "SMC 91C9x/91C1xxx support"
        select CRC32
        select MII
-       depends on ARM || REDWOOD_5 || REDWOOD_6 || M32R || SUPERH || \
+       depends on ARM || M32R || SUPERH || \
                MIPS || BLACKFIN || MN10300 || COLDFIRE
        help
          This is a driver for SMC's 91x series of Ethernet chipsets,
@@@ -1464,7 -1463,7 +1464,7 @@@ config FORCEDET
  config CS89x0
        tristate "CS89x0 support"
        depends on NET_ETHERNET && (ISA || EISA || MACH_IXDP2351 \
 -              || ARCH_IXDP2X01 || ARCH_PNX010X || MACH_MX31ADS)
 +              || ARCH_IXDP2X01 || MACH_MX31ADS)
        ---help---
          Support for CS89x0 chipset based Ethernet cards. If you have a
          network (Ethernet) card of this type, say Y and read the
  config CS89x0_NONISA_IRQ
        def_bool y
        depends on CS89x0 != n
 -      depends on MACH_IXDP2351 || ARCH_IXDP2X01 || ARCH_PNX010X || MACH_MX31ADS
 +      depends on MACH_IXDP2351 || ARCH_IXDP2X01 || MACH_MX31ADS
  
  config TC35815
        tristate "TOSHIBA TC35815 Ethernet support"
@@@ -1660,7 -1659,6 +1660,7 @@@ config R604
        depends on NET_PCI && PCI
        select CRC32
        select MII
 +      select PHYLIB
        help
          This is a driver for the R6040 Fast Ethernet MACs found in the
          the RDC R-321x System-on-chips.
@@@ -1750,12 -1748,11 +1750,12 @@@ config TLA
          Please email feedback to <torben.mathiasen@compaq.com>.
  
  config KS8842
 -      tristate "Micrel KSZ8842"
 -      depends on HAS_IOMEM
 +      tristate "Micrel KSZ8841/42 with generic bus interface"
 +      depends on HAS_IOMEM && DMA_ENGINE
        help
 -        This platform driver is for Micrel KSZ8842 / KS8842
 -        2-port ethernet switch chip (managed, VLAN, QoS).
 +       This platform driver is for KSZ8841(1-port) / KS8842(2-port)
 +       ethernet switch chip (managed, VLAN, QoS) from Micrel or
 +       Timberdale(FPGA).
  
  config KS8851
         tristate "Micrel KS8851 SPI"
@@@ -2604,29 -2601,6 +2604,29 @@@ config CHELSIO_T
          To compile this driver as a module choose M here; the module
          will be called cxgb4.
  
 +config CHELSIO_T4VF_DEPENDS
 +      tristate
 +      depends on PCI && INET
 +      default y
 +
 +config CHELSIO_T4VF
 +      tristate "Chelsio Communications T4 Virtual Function Ethernet support"
 +      depends on CHELSIO_T4VF_DEPENDS
 +      help
 +        This driver supports Chelsio T4-based gigabit and 10Gb Ethernet
 +        adapters with PCI-E SR-IOV Virtual Functions.
 +
 +        For general information about Chelsio and our products, visit
 +        our website at <http://www.chelsio.com>.
 +
 +        For customer support, please visit our customer support page at
 +        <http://www.chelsio.com/support.htm>.
 +
 +        Please send feedback to <linux-bugs@chelsio.com>.
 +
 +        To compile this driver as a module choose M here; the module
 +        will be called cxgb4vf.
 +
  config EHEA
        tristate "eHEA Ethernet support"
        depends on IBMEBUS && INET && SPARSEMEM
  config ENIC
        tristate "Cisco VIC Ethernet NIC Support"
        depends on PCI && INET
 -      select INET_LRO
        help
          This enables the support for the Cisco VIC Ethernet card.
  
diff --combined drivers/video/Kconfig
index 9e711a1d0d97131bfc557229885e6458a9af4188,114aeb0d9971c0926f52273a2f76570ffd58b186..7b11ea68c80e86cbf85387d6ba39eb84cb0c700b
@@@ -1871,6 -1871,7 +1871,7 @@@ config FB_MBX_DEBU
  config FB_FSL_DIU
        tristate "Freescale DIU framebuffer support"
        depends on FB && FSL_SOC
+       select FB_MODE_HELPERS
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
@@@ -2229,15 -2230,6 +2230,15 @@@ config FB_BROADSHEE
          and could also have been called by other names when coupled with
          a bridge adapter.
  
 +config FB_JZ4740
 +      tristate "JZ4740 LCD framebuffer support"
 +      depends on FB && MACH_JZ4740
 +      select FB_SYS_FILLRECT
 +      select FB_SYS_COPYAREA
 +      select FB_SYS_IMAGEBLIT
 +      help
 +        Framebuffer support for the JZ4740 SoC.
 +
  source "drivers/video/omap/Kconfig"
  source "drivers/video/omap2/Kconfig"
  
diff --combined include/linux/pci_ids.h
index e69612cace616745d1fdd0b29139832b245ab9da,79bb11f35c4b29569b56af92220ee4f955490fda..33145408f04508e2b10f451ccaa9bdff48486366
  #define PCI_DEVICE_ID_SBE_WANXL100    0x0301
  #define PCI_DEVICE_ID_SBE_WANXL200    0x0302
  #define PCI_DEVICE_ID_SBE_WANXL400    0x0104
 +#define PCI_SUBDEVICE_ID_SBE_T3E3     0x0009
 +#define PCI_SUBDEVICE_ID_SBE_2T3E3_P0 0x0901
 +#define PCI_SUBDEVICE_ID_SBE_2T3E3_P1 0x0902
  
  #define PCI_VENDOR_ID_TOSHIBA         0x1179
  #define PCI_DEVICE_ID_TOSHIBA_PICCOLO_1       0x0101
  #define PCI_DEVICE_ID_NX2_57711E      0x1650
  #define PCI_DEVICE_ID_TIGON3_5705     0x1653
  #define PCI_DEVICE_ID_TIGON3_5705_2   0x1654
 -#define PCI_DEVICE_ID_TIGON3_5720     0x1658
  #define PCI_DEVICE_ID_TIGON3_5721     0x1659
  #define PCI_DEVICE_ID_TIGON3_5722     0x165a
  #define PCI_DEVICE_ID_TIGON3_5723     0x165b
  #define PCI_DEVICE_ID_TIGON3_5754M    0x1672
  #define PCI_DEVICE_ID_TIGON3_5755M    0x1673
  #define PCI_DEVICE_ID_TIGON3_5756     0x1674
 -#define PCI_DEVICE_ID_TIGON3_5750     0x1676
  #define PCI_DEVICE_ID_TIGON3_5751     0x1677
  #define PCI_DEVICE_ID_TIGON3_5715     0x1678
  #define PCI_DEVICE_ID_TIGON3_5715S    0x1679
  #define PCI_DEVICE_ID_TIGON3_5754     0x167a
  #define PCI_DEVICE_ID_TIGON3_5755     0x167b
 -#define PCI_DEVICE_ID_TIGON3_5750M    0x167c
  #define PCI_DEVICE_ID_TIGON3_5751M    0x167d
  #define PCI_DEVICE_ID_TIGON3_5751F    0x167e
  #define PCI_DEVICE_ID_TIGON3_5787F    0x167f
  #define PCI_DEVICE_ID_TDI_EHCI          0x0101
  
  #define PCI_VENDOR_ID_FREESCALE               0x1957
+ #define PCI_DEVICE_ID_MPC8308         0xc006
  #define PCI_DEVICE_ID_MPC8315E                0x00b4
  #define PCI_DEVICE_ID_MPC8315         0x00b5
  #define PCI_DEVICE_ID_MPC8314E                0x00b6