linux-omap* 2.6.29: add patch that should solve the memhole problem
authorKoen Kooi <koen@openembedded.org>
Mon, 17 Aug 2009 16:15:45 +0000 (18:15 +0200)
committerKoen Kooi <koen@openembedded.org>
Mon, 17 Aug 2009 16:15:45 +0000 (18:15 +0200)
conf/machine/include/omap3.inc
recipes/linux/linux-omap-2.6.29/arch-has-holes.diff [new file with mode: 0644]
recipes/linux/linux-omap-pm-2.6.29/arch-has-holes.diff [new file with mode: 0644]
recipes/linux/linux-omap-pm-2.6.29/beagleboard/defconfig
recipes/linux/linux-omap-pm_2.6.29.bb
recipes/linux/linux-omap_2.6.29.bb

index 6fb5905..7d404a4 100644 (file)
@@ -1,7 +1,7 @@
 require conf/machine/include/tune-cortexa8.inc
 PREFERRED_PROVIDER_virtual/kernel = "linux-omap"
 # Increase this everytime you change something in the kernel
-MACHINE_KERNEL_PR = "r41
+MACHINE_KERNEL_PR = "r42
 
 KERNEL_IMAGETYPE = "uImage"
 
diff --git a/recipes/linux/linux-omap-2.6.29/arch-has-holes.diff b/recipes/linux/linux-omap-2.6.29/arch-has-holes.diff
new file mode 100644 (file)
index 0000000..82cb12c
--- /dev/null
@@ -0,0 +1,235 @@
+diff -purN git2/arch/arm/include/asm/memory.h git/arch/arm/include/asm/memory.h
+--- git2/arch/arm/include/asm/memory.h 2009-06-08 06:42:26.000000000 +0530
++++ git/arch/arm/include/asm/memory.h  2009-08-17 11:58:07.000000000 +0530
+@@ -204,7 +204,6 @@ static inline __deprecated void *bus_to_
+  *
+  *  page_to_pfn(page) convert a struct page * to a PFN number
+  *  pfn_to_page(pfn)  convert a _valid_ PFN number to struct page *
+- *  pfn_valid(pfn)    indicates whether a PFN number is valid
+  *
+  *  virt_to_page(k)   convert a _valid_ virtual address to struct page *
+  *  virt_addr_valid(k)        indicates whether a virtual address is valid
+@@ -213,10 +212,6 @@ static inline __deprecated void *bus_to_
+ #define ARCH_PFN_OFFSET               PHYS_PFN_OFFSET
+-#ifndef CONFIG_SPARSEMEM
+-#define pfn_valid(pfn)                ((pfn) >= PHYS_PFN_OFFSET && (pfn) < (PHYS_PFN_OFFSET + max_mapnr))
+-#endif
+-
+ #define virt_to_page(kaddr)   pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
+ #define virt_addr_valid(kaddr)        ((unsigned long)(kaddr) >= PAGE_OFFSET && (unsigned long)(kaddr) < (unsigned long)high_memory)
+@@ -233,18 +228,6 @@ static inline __deprecated void *bus_to_
+ #define arch_pfn_to_nid(pfn)  PFN_TO_NID(pfn)
+ #define arch_local_page_offset(pfn, nid) LOCAL_MAP_NR((pfn) << PAGE_SHIFT)
+-#define pfn_valid(pfn)                                                \
+-      ({                                                      \
+-              unsigned int nid = PFN_TO_NID(pfn);             \
+-              int valid = nid < MAX_NUMNODES;                 \
+-              if (valid) {                                    \
+-                      pg_data_t *node = NODE_DATA(nid);       \
+-                      valid = (pfn - node->node_start_pfn) <  \
+-                              node->node_spanned_pages;       \
+-              }                                               \
+-              valid;                                          \
+-      })
+-
+ #define virt_to_page(kaddr)                                   \
+       (ADDR_TO_MAPBASE(kaddr) + LOCAL_MAP_NR(kaddr))
+diff -purN git2/arch/arm/include/asm/page.h git/arch/arm/include/asm/page.h
+--- git2/arch/arm/include/asm/page.h   2009-06-08 06:42:26.000000000 +0530
++++ git/arch/arm/include/asm/page.h    2009-08-17 11:58:07.000000000 +0530
+@@ -186,6 +186,10 @@ typedef unsigned long pgprot_t;
+ typedef struct page *pgtable_t;
++#ifndef CONFIG_SPARSEMEM
++extern int pfn_valid(unsigned long);
++#endif
++
+ #include <asm/memory.h>
+ #endif /* !__ASSEMBLY__ */
+diff -purN git2/arch/arm/Kconfig git/arch/arm/Kconfig
+--- git2/arch/arm/Kconfig      2009-07-20 05:07:12.000000000 +0530
++++ git/arch/arm/Kconfig       2009-08-17 12:08:37.000000000 +0530
+@@ -272,6 +272,7 @@ config ARCH_EP93XX
+       select HAVE_CLK
+       select COMMON_CLKDEV
+       select ARCH_REQUIRE_GPIOLIB
++      select ARCH_HAS_HOLES_MEMORYMODEL
+       help
+         This enables support for the Cirrus EP93xx series of CPUs.
+@@ -569,6 +570,7 @@ config ARCH_OMAP
+       select ARCH_REQUIRE_GPIOLIB
+       select GENERIC_TIME
+       select GENERIC_CLOCKEVENTS
++      select ARCH_HAS_HOLES_MEMORYMODEL
+       help
+         Support for TI's OMAP platform (OMAP1 and OMAP2).
+@@ -891,10 +893,9 @@ config OABI_COMPAT
+         UNPREDICTABLE (in fact it can be predicted that it won't work
+         at all). If in doubt say Y.
+-config ARCH_FLATMEM_HAS_HOLES
++config ARCH_HAS_HOLES_MEMORYMODEL
+       bool
+-      default y
+-      depends on FLATMEM
++      default n
+ # Discontigmem is deprecated
+ config ARCH_DISCONTIGMEM_ENABLE
+diff -purN git2/arch/arm/mm/init.c git/arch/arm/mm/init.c
+--- git2/arch/arm/mm/init.c    2009-06-08 06:42:27.000000000 +0530
++++ git/arch/arm/mm/init.c     2009-08-17 12:03:16.000000000 +0530
+@@ -15,7 +15,7 @@
+ #include <linux/mman.h>
+ #include <linux/nodemask.h>
+ #include <linux/initrd.h>
+-
++#include <linux/sort.h>
+ #include <asm/mach-types.h>
+ #include <asm/sections.h>
+ #include <asm/setup.h>
+@@ -333,12 +333,40 @@ static void __init bootmem_free_node(int
+       free_area_init_node(node, zone_size, start_pfn, zhole_size);
+ }
++#ifndef CONFIG_SPARSEMEM
++int pfn_valid(unsigned long pfn)
++{
++      struct meminfo *mi = &meminfo;
++      unsigned int mid, left = 0, right = mi->nr_banks;
++
++      while ((mid = (right - left) / 2) > 0) {
++              struct membank *bank = &mi->bank[mid];
++              
++              if (pfn < bank_pfn_start(bank))
++                      right = mid;
++              else if (pfn >= bank_pfn_end(bank))
++                      left = mid + 1;
++              else
++                      return 1;
++      }
++      return 0;
++}
++EXPORT_SYMBOL(pfn_valid);
++#endif
++
++static int __init meminfo_cmp(const void *_a, const void *_b) {
++      const struct membank *a = _a, *b = _b;
++      long cmp = bank_pfn_start(b) - bank_pfn_start(a);
++      return cmp < 0 ? -1 : cmp > 0 ? 1 : 0; }
++
+ void __init bootmem_init(void)
+ {
+       struct meminfo *mi = &meminfo;
+       unsigned long memend_pfn = 0;
+       int node, initrd_node;
++      sort(&mi->bank, mi->nr_banks, sizeof(mi->bank[0]), meminfo_cmp, NULL);
++
+       /*
+        * Locate which node contains the ramdisk image, if any.
+        */
+diff -purN git2/include/linux/mmzone.h git/include/linux/mmzone.h
+--- git2/include/linux/mmzone.h        2009-06-08 06:42:40.000000000 +0530
++++ git/include/linux/mmzone.h 2009-08-17 11:57:17.000000000 +0530
+@@ -1095,6 +1095,32 @@ unsigned long __init node_memmap_size_by
+ #define pfn_valid_within(pfn) (1)
+ #endif
++#ifdef CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
++/*
++ * pfn_valid() is meant to be able to tell if a given PFN has valid memmap
++ * associated with it or not. In FLATMEM, it is expected that holes always
++ * have valid memmap as long as there is valid PFNs either side of the hole.
++ * In SPARSEMEM, it is assumed that a valid section has a memmap for the
++ * entire section.
++ *
++ * However, an ARM, and maybe other embedded architectures in the future
++ * free memmap backing holes to save memory on the assumption the memmap is
++ * never used. The page_zone linkages are then broken even though pfn_valid()
++ * returns true. A walker of the full memmap must then do this additional
++ * check to ensure the memmap they are looking at is sane by making sure
++ * the zone and PFN linkages are still valid. This is expensive, but walkers
++ * of the full memmap are extremely rare.
++ */
++int memmap_valid_within(unsigned long pfn,
++                                      struct page *page, struct zone *zone);
++#else
++static inline int memmap_valid_within(unsigned long pfn,
++                                      struct page *page, struct zone *zone)
++{
++      return 1;
++}
++#endif /* CONFIG_ARCH_HAS_HOLES_MEMORYMODEL */
++
+ #endif /* !__GENERATING_BOUNDS.H */
+ #endif /* !__ASSEMBLY__ */
+ #endif /* _LINUX_MMZONE_H */
+diff -purN git2/mm/mmzone.c git/mm/mmzone.c
+--- git2/mm/mmzone.c   2009-06-08 06:42:41.000000000 +0530
++++ git/mm/mmzone.c    2009-08-17 11:57:17.000000000 +0530
+@@ -6,6 +6,7 @@
+ #include <linux/stddef.h>
++#include <linux/mm.h>
+ #include <linux/mmzone.h>
+ #include <linux/module.h>
+@@ -72,3 +73,17 @@ struct zoneref *next_zones_zonelist(stru
+       *zone = zonelist_zone(z);
+       return z;
+ }
++
++#ifdef CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
++int memmap_valid_within(unsigned long pfn,
++                                      struct page *page, struct zone *zone)
++{
++      if (page_to_pfn(page) != pfn)
++              return 0;
++
++      if (page_zone(page) != zone)
++              return 0;
++
++      return 1;
++}
++#endif /* CONFIG_ARCH_HAS_HOLES_MEMORYMODEL */
+diff -purN git2/mm/vmstat.c git/mm/vmstat.c
+--- git2/mm/vmstat.c   2009-06-08 06:42:41.000000000 +0530
++++ git/mm/vmstat.c    2009-08-17 11:57:17.000000000 +0530
+@@ -516,22 +516,11 @@ static void pagetypeinfo_showblockcount_
+                       continue;
+               page = pfn_to_page(pfn);
+-#ifdef CONFIG_ARCH_FLATMEM_HAS_HOLES
+-              /*
+-               * Ordinarily, memory holes in flatmem still have a valid
+-               * memmap for the PFN range. However, an architecture for
+-               * embedded systems (e.g. ARM) can free up the memmap backing
+-               * holes to save memory on the assumption the memmap is
+-               * never used. The page_zone linkages are then broken even
+-               * though pfn_valid() returns true. Skip the page if the
+-               * linkages are broken. Even if this test passed, the impact
+-               * is that the counters for the movable type are off but
+-               * fragmentation monitoring is likely meaningless on small
+-               * systems.
+-               */
+-              if (page_zone(page) != zone)
++
++              /* Watch for unexpected holes punched in the memmap */
++              if (!memmap_valid_within(pfn, page, zone))
+                       continue;
+-#endif
++
+               mtype = get_pageblock_migratetype(page);
+               if (mtype < MIGRATE_TYPES)
diff --git a/recipes/linux/linux-omap-pm-2.6.29/arch-has-holes.diff b/recipes/linux/linux-omap-pm-2.6.29/arch-has-holes.diff
new file mode 100644 (file)
index 0000000..82cb12c
--- /dev/null
@@ -0,0 +1,235 @@
+diff -purN git2/arch/arm/include/asm/memory.h git/arch/arm/include/asm/memory.h
+--- git2/arch/arm/include/asm/memory.h 2009-06-08 06:42:26.000000000 +0530
++++ git/arch/arm/include/asm/memory.h  2009-08-17 11:58:07.000000000 +0530
+@@ -204,7 +204,6 @@ static inline __deprecated void *bus_to_
+  *
+  *  page_to_pfn(page) convert a struct page * to a PFN number
+  *  pfn_to_page(pfn)  convert a _valid_ PFN number to struct page *
+- *  pfn_valid(pfn)    indicates whether a PFN number is valid
+  *
+  *  virt_to_page(k)   convert a _valid_ virtual address to struct page *
+  *  virt_addr_valid(k)        indicates whether a virtual address is valid
+@@ -213,10 +212,6 @@ static inline __deprecated void *bus_to_
+ #define ARCH_PFN_OFFSET               PHYS_PFN_OFFSET
+-#ifndef CONFIG_SPARSEMEM
+-#define pfn_valid(pfn)                ((pfn) >= PHYS_PFN_OFFSET && (pfn) < (PHYS_PFN_OFFSET + max_mapnr))
+-#endif
+-
+ #define virt_to_page(kaddr)   pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
+ #define virt_addr_valid(kaddr)        ((unsigned long)(kaddr) >= PAGE_OFFSET && (unsigned long)(kaddr) < (unsigned long)high_memory)
+@@ -233,18 +228,6 @@ static inline __deprecated void *bus_to_
+ #define arch_pfn_to_nid(pfn)  PFN_TO_NID(pfn)
+ #define arch_local_page_offset(pfn, nid) LOCAL_MAP_NR((pfn) << PAGE_SHIFT)
+-#define pfn_valid(pfn)                                                \
+-      ({                                                      \
+-              unsigned int nid = PFN_TO_NID(pfn);             \
+-              int valid = nid < MAX_NUMNODES;                 \
+-              if (valid) {                                    \
+-                      pg_data_t *node = NODE_DATA(nid);       \
+-                      valid = (pfn - node->node_start_pfn) <  \
+-                              node->node_spanned_pages;       \
+-              }                                               \
+-              valid;                                          \
+-      })
+-
+ #define virt_to_page(kaddr)                                   \
+       (ADDR_TO_MAPBASE(kaddr) + LOCAL_MAP_NR(kaddr))
+diff -purN git2/arch/arm/include/asm/page.h git/arch/arm/include/asm/page.h
+--- git2/arch/arm/include/asm/page.h   2009-06-08 06:42:26.000000000 +0530
++++ git/arch/arm/include/asm/page.h    2009-08-17 11:58:07.000000000 +0530
+@@ -186,6 +186,10 @@ typedef unsigned long pgprot_t;
+ typedef struct page *pgtable_t;
++#ifndef CONFIG_SPARSEMEM
++extern int pfn_valid(unsigned long);
++#endif
++
+ #include <asm/memory.h>
+ #endif /* !__ASSEMBLY__ */
+diff -purN git2/arch/arm/Kconfig git/arch/arm/Kconfig
+--- git2/arch/arm/Kconfig      2009-07-20 05:07:12.000000000 +0530
++++ git/arch/arm/Kconfig       2009-08-17 12:08:37.000000000 +0530
+@@ -272,6 +272,7 @@ config ARCH_EP93XX
+       select HAVE_CLK
+       select COMMON_CLKDEV
+       select ARCH_REQUIRE_GPIOLIB
++      select ARCH_HAS_HOLES_MEMORYMODEL
+       help
+         This enables support for the Cirrus EP93xx series of CPUs.
+@@ -569,6 +570,7 @@ config ARCH_OMAP
+       select ARCH_REQUIRE_GPIOLIB
+       select GENERIC_TIME
+       select GENERIC_CLOCKEVENTS
++      select ARCH_HAS_HOLES_MEMORYMODEL
+       help
+         Support for TI's OMAP platform (OMAP1 and OMAP2).
+@@ -891,10 +893,9 @@ config OABI_COMPAT
+         UNPREDICTABLE (in fact it can be predicted that it won't work
+         at all). If in doubt say Y.
+-config ARCH_FLATMEM_HAS_HOLES
++config ARCH_HAS_HOLES_MEMORYMODEL
+       bool
+-      default y
+-      depends on FLATMEM
++      default n
+ # Discontigmem is deprecated
+ config ARCH_DISCONTIGMEM_ENABLE
+diff -purN git2/arch/arm/mm/init.c git/arch/arm/mm/init.c
+--- git2/arch/arm/mm/init.c    2009-06-08 06:42:27.000000000 +0530
++++ git/arch/arm/mm/init.c     2009-08-17 12:03:16.000000000 +0530
+@@ -15,7 +15,7 @@
+ #include <linux/mman.h>
+ #include <linux/nodemask.h>
+ #include <linux/initrd.h>
+-
++#include <linux/sort.h>
+ #include <asm/mach-types.h>
+ #include <asm/sections.h>
+ #include <asm/setup.h>
+@@ -333,12 +333,40 @@ static void __init bootmem_free_node(int
+       free_area_init_node(node, zone_size, start_pfn, zhole_size);
+ }
++#ifndef CONFIG_SPARSEMEM
++int pfn_valid(unsigned long pfn)
++{
++      struct meminfo *mi = &meminfo;
++      unsigned int mid, left = 0, right = mi->nr_banks;
++
++      while ((mid = (right - left) / 2) > 0) {
++              struct membank *bank = &mi->bank[mid];
++              
++              if (pfn < bank_pfn_start(bank))
++                      right = mid;
++              else if (pfn >= bank_pfn_end(bank))
++                      left = mid + 1;
++              else
++                      return 1;
++      }
++      return 0;
++}
++EXPORT_SYMBOL(pfn_valid);
++#endif
++
++static int __init meminfo_cmp(const void *_a, const void *_b) {
++      const struct membank *a = _a, *b = _b;
++      long cmp = bank_pfn_start(b) - bank_pfn_start(a);
++      return cmp < 0 ? -1 : cmp > 0 ? 1 : 0; }
++
+ void __init bootmem_init(void)
+ {
+       struct meminfo *mi = &meminfo;
+       unsigned long memend_pfn = 0;
+       int node, initrd_node;
++      sort(&mi->bank, mi->nr_banks, sizeof(mi->bank[0]), meminfo_cmp, NULL);
++
+       /*
+        * Locate which node contains the ramdisk image, if any.
+        */
+diff -purN git2/include/linux/mmzone.h git/include/linux/mmzone.h
+--- git2/include/linux/mmzone.h        2009-06-08 06:42:40.000000000 +0530
++++ git/include/linux/mmzone.h 2009-08-17 11:57:17.000000000 +0530
+@@ -1095,6 +1095,32 @@ unsigned long __init node_memmap_size_by
+ #define pfn_valid_within(pfn) (1)
+ #endif
++#ifdef CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
++/*
++ * pfn_valid() is meant to be able to tell if a given PFN has valid memmap
++ * associated with it or not. In FLATMEM, it is expected that holes always
++ * have valid memmap as long as there is valid PFNs either side of the hole.
++ * In SPARSEMEM, it is assumed that a valid section has a memmap for the
++ * entire section.
++ *
++ * However, an ARM, and maybe other embedded architectures in the future
++ * free memmap backing holes to save memory on the assumption the memmap is
++ * never used. The page_zone linkages are then broken even though pfn_valid()
++ * returns true. A walker of the full memmap must then do this additional
++ * check to ensure the memmap they are looking at is sane by making sure
++ * the zone and PFN linkages are still valid. This is expensive, but walkers
++ * of the full memmap are extremely rare.
++ */
++int memmap_valid_within(unsigned long pfn,
++                                      struct page *page, struct zone *zone);
++#else
++static inline int memmap_valid_within(unsigned long pfn,
++                                      struct page *page, struct zone *zone)
++{
++      return 1;
++}
++#endif /* CONFIG_ARCH_HAS_HOLES_MEMORYMODEL */
++
+ #endif /* !__GENERATING_BOUNDS.H */
+ #endif /* !__ASSEMBLY__ */
+ #endif /* _LINUX_MMZONE_H */
+diff -purN git2/mm/mmzone.c git/mm/mmzone.c
+--- git2/mm/mmzone.c   2009-06-08 06:42:41.000000000 +0530
++++ git/mm/mmzone.c    2009-08-17 11:57:17.000000000 +0530
+@@ -6,6 +6,7 @@
+ #include <linux/stddef.h>
++#include <linux/mm.h>
+ #include <linux/mmzone.h>
+ #include <linux/module.h>
+@@ -72,3 +73,17 @@ struct zoneref *next_zones_zonelist(stru
+       *zone = zonelist_zone(z);
+       return z;
+ }
++
++#ifdef CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
++int memmap_valid_within(unsigned long pfn,
++                                      struct page *page, struct zone *zone)
++{
++      if (page_to_pfn(page) != pfn)
++              return 0;
++
++      if (page_zone(page) != zone)
++              return 0;
++
++      return 1;
++}
++#endif /* CONFIG_ARCH_HAS_HOLES_MEMORYMODEL */
+diff -purN git2/mm/vmstat.c git/mm/vmstat.c
+--- git2/mm/vmstat.c   2009-06-08 06:42:41.000000000 +0530
++++ git/mm/vmstat.c    2009-08-17 11:57:17.000000000 +0530
+@@ -516,22 +516,11 @@ static void pagetypeinfo_showblockcount_
+                       continue;
+               page = pfn_to_page(pfn);
+-#ifdef CONFIG_ARCH_FLATMEM_HAS_HOLES
+-              /*
+-               * Ordinarily, memory holes in flatmem still have a valid
+-               * memmap for the PFN range. However, an architecture for
+-               * embedded systems (e.g. ARM) can free up the memmap backing
+-               * holes to save memory on the assumption the memmap is
+-               * never used. The page_zone linkages are then broken even
+-               * though pfn_valid() returns true. Skip the page if the
+-               * linkages are broken. Even if this test passed, the impact
+-               * is that the counters for the movable type are off but
+-               * fragmentation monitoring is likely meaningless on small
+-               * systems.
+-               */
+-              if (page_zone(page) != zone)
++
++              /* Watch for unexpected holes punched in the memmap */
++              if (!memmap_valid_within(pfn, page, zone))
+                       continue;
+-#endif
++
+               mtype = get_pageblock_migratetype(page);
+               if (mtype < MIGRATE_TYPES)
index e6f44e8..ca5adf2 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.29-omap1
-# Sun Aug 16 11:34:12 2009
+# Mon Aug 17 17:49:14 2009
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -190,7 +190,7 @@ CONFIG_ARCH_OMAP3=y
 # CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
 # CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
 CONFIG_OMAP_SMARTREFLEX=y
-CONFIG_OMAP_SMARTREFLEX_TESTING=y
+# CONFIG_OMAP_SMARTREFLEX_TESTING is not set
 CONFIG_OMAP_RESET_CLOCKS=y
 CONFIG_OMAP_BOOT_TAG=y
 CONFIG_OMAP_BOOT_REASON=y
@@ -198,8 +198,8 @@ CONFIG_OMAP_BOOT_REASON=y
 # CONFIG_OMAP_GPIO_SWITCH is not set
 # CONFIG_OMAP_MUX is not set
 CONFIG_OMAP_MCBSP=y
-CONFIG_OMAP_MBOX_FWK=y
-CONFIG_OMAP_IOMMU=y
+# CONFIG_OMAP_MBOX_FWK is not set
+# CONFIG_OMAP_IOMMU is not set
 # CONFIG_OMAP_MPU_TIMER is not set
 CONFIG_OMAP_32K_TIMER=y
 # CONFIG_OMAP3_DEBOBS is not set
@@ -276,7 +276,7 @@ CONFIG_PAGE_OFFSET=0xC0000000
 CONFIG_HZ=128
 CONFIG_AEABI=y
 # CONFIG_OABI_COMPAT is not set
-CONFIG_ARCH_FLATMEM_HAS_HOLES=y
+CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
 # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
 # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
 CONFIG_SELECT_MEMORY_MODEL=y
@@ -312,10 +312,10 @@ CONFIG_CPU_FREQ_TABLE=y
 CONFIG_CPU_FREQ_DEBUG=y
 CONFIG_CPU_FREQ_STAT=y
 CONFIG_CPU_FREQ_STAT_DETAILS=y
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
 # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
 CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
 CONFIG_CPU_FREQ_GOV_POWERSAVE=y
@@ -1040,13 +1040,13 @@ CONFIG_MACVLAN=m
 CONFIG_EQUALIZER=m
 CONFIG_TUN=m
 CONFIG_VETH=m
-CONFIG_PHYLIB=y
+CONFIG_PHYLIB=m
 
 #
 # MII PHY device drivers
 #
 # CONFIG_MARVELL_PHY is not set
-# CONFIG_DAVICOM_PHY is not set
+CONFIG_DAVICOM_PHY=m
 # CONFIG_QSEMI_PHY is not set
 # CONFIG_LXT_PHY is not set
 # CONFIG_CICADA_PHY is not set
@@ -1058,16 +1058,17 @@ CONFIG_SMSC_PHY=m
 # CONFIG_NATIONAL_PHY is not set
 # CONFIG_STE10XP is not set
 # CONFIG_LSI_ET1011C_PHY is not set
-# CONFIG_FIXED_PHY is not set
 # CONFIG_MDIO_BITBANG is not set
 CONFIG_NET_ETHERNET=y
 CONFIG_MII=y
 # CONFIG_AX88796 is not set
 # CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
+CONFIG_DM9000=m
+CONFIG_DM9000_DEBUGLEVEL=4
+# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
 CONFIG_ENC28J60=y
 # CONFIG_ENC28J60_WRITEVERIFY is not set
-# CONFIG_SMC911X is not set
+CONFIG_SMC911X=m
 # CONFIG_SMSC911X is not set
 # CONFIG_DNET is not set
 # CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -1513,7 +1514,6 @@ CONFIG_MEDIA_TUNER_MXL5005S=m
 CONFIG_VIDEO_V4L2=m
 CONFIG_VIDEO_V4L1=m
 CONFIG_VIDEOBUF_GEN=m
-CONFIG_VIDEOBUF_DMA_SG=m
 CONFIG_VIDEOBUF_VMALLOC=m
 CONFIG_VIDEOBUF_DVB=m
 CONFIG_VIDEO_IR=m
@@ -1537,8 +1537,8 @@ CONFIG_VIDEO_VIVI=m
 # CONFIG_VIDEO_SAA5246A is not set
 # CONFIG_VIDEO_SAA5249 is not set
 # CONFIG_VIDEO_AU0828 is not set
-CONFIG_VIDEO_OMAP3=m
-CONFIG_VIDEO_OMAP34XX_ISP_RESIZER=m
+# CONFIG_VIDEO_OMAP3 is not set
+# CONFIG_VIDEO_OMAP34XX_ISP_RESIZER is not set
 # CONFIG_SOC_CAMERA is not set
 CONFIG_V4L_USB_DRIVERS=y
 CONFIG_USB_VIDEO_CLASS=m
@@ -2520,7 +2520,7 @@ CONFIG_NLS_ISO8859_8=m
 CONFIG_NLS_CODEPAGE_1250=m
 CONFIG_NLS_CODEPAGE_1251=m
 CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_1=m
 CONFIG_NLS_ISO8859_2=m
 CONFIG_NLS_ISO8859_3=m
 CONFIG_NLS_ISO8859_4=m
index 90e6fe2..e066536 100644 (file)
@@ -125,6 +125,7 @@ SRC_URI_append = " \
            file://vfp/03-vfp-corruption.patch;patch=1 \
            file://vfp/04-vfp-threads.patch;patch=1 \
            file://vfp/05-vfp-signal-handlers.patch;patch=1 \
+           file://arch-has-holes.diff;patch=1 \
 "
 
 
index 843149d..9f390d4 100644 (file)
@@ -162,6 +162,7 @@ SRC_URI_append = " \
            file://vfp/03-vfp-corruption.patch;patch=1 \
            file://vfp/04-vfp-threads.patch;patch=1 \
            file://vfp/05-vfp-signal-handlers.patch;patch=1 \
+           file://arch-has-holes.diff;patch=1 \
 "