Merge branches 'core/softlockup', 'core/softirq', 'core/resources', 'core/printk...
Ingo Molnar [Wed, 15 Oct 2008 10:48:44 +0000 (12:48 +0200)]
1  2  3  4  5  6 
arch/x86/Kconfig
arch/x86/kernel/e820.c
arch/x86/mm/ioremap.c
drivers/pci/setup-bus.c
include/asm-x86/page_32.h
include/asm-x86/page_64.h
include/asm-x86/xen/page.h
include/linux/ioport.h
include/linux/kernel.h
kernel/printk.c
kernel/time/tick-sched.c

Simple merge
@@@@@@@ -1279,11 -1274,10 -1274,10 -1274,9 -1274,10 -1279,11 +1279,10 @@@@@@@ void __init e820_reserve_resources(void
        u64 end;
      
        res = alloc_bootmem_low(sizeof(struct resource) * e820.nr_map);
 ++++   e820_res = res;
        for (i = 0; i < e820.nr_map; i++) {
                end = e820.map[i].addr + e820.map[i].size - 1;
--- --#ifndef CONFIG_RESOURCES_64BIT
--- --          if (end > 0x100000000ULL) {
+++ ++          if (end != (resource_size_t)end) {
                        res++;
                        continue;
                }
@@@@@@@ -616,24 -546,18 -546,18 -552,18 -546,20 -616,24 +622,24 @@@@@@@ static inline void __init early_clear_f
                __early_set_fixmap(idx, 0, __pgprot(0));
      }
      
 ---- 
 ---- int __initdata early_ioremap_nested;
 ---- 
 ++++ static void *prev_map[FIX_BTMAPS_SLOTS] __initdata;
 ++++ static unsigned long prev_size[FIX_BTMAPS_SLOTS] __initdata;
      static int __init check_early_ioremap_leak(void)
      {
 ----   if (!early_ioremap_nested)
    -           return 0;
 ++++   int count = 0;
 ++++   int i;
 +++  
    -   printk(KERN_WARNING
 ++++   for (i = 0; i < FIX_BTMAPS_SLOTS; i++)
 ++++           if (prev_map[i])
 ++++                   count++;
 ++++ 
 ++++   if (!count)
    +           return 0;
    +   WARN(1, KERN_WARNING
               "Debug warning: early ioremap leak of %d areas detected.\n",
 ---            early_ioremap_nested);
    -          early_ioremap_nested);
 ++++           count);
        printk(KERN_WARNING
    -          "please boot with early_ioremap_debug and report the dmesg.\n");
    -   WARN_ON(1);
    +           "please boot with early_ioremap_debug and report the dmesg.\n");
      
        return 1;
      }
@@@@@@@ -729,29 -629,11 -629,11 -635,11 -631,11 -729,29 +735,29 @@@@@@@ void __init early_iounmap(void *addr, u
        unsigned long offset;
        unsigned int nrpages;
        enum fixed_addresses idx;
 ----   int nesting;
 ++++   int i, slot;
 ++   
   --   nesting = --early_ioremap_nested;
   --   if (WARN_ON(nesting < 0))
 ++++   slot = -1;
 ++++   for (i = 0; i < FIX_BTMAPS_SLOTS; i++) {
 ++++           if (prev_map[i] == addr) {
 ++++                   slot = i;
 ++++                   break;
 ++++           }
 ++++   }
 ++++ 
 ++++   if (slot < 0) {
 ++++           printk(KERN_INFO "early_iounmap(%p, %08lx) not found slot\n",
 ++++                    addr, size);
 ++++           WARN_ON(1);
 ++ +           return;
 ++++   }
   ++ 
 --     nesting = --early_ioremap_nested;
 --     if (WARN_ON(nesting < 0))
 ++++   if (prev_size[slot] != size) {
 ++++           printk(KERN_INFO "early_iounmap(%p, %08lx) [%d] size not consistent %08lx\n",
 ++++                    addr, size, slot, prev_size[slot]);
 ++++           WARN_ON(1);
   +            return;
 ++++   }
      
        if (early_ioremap_debug) {
                printk(KERN_INFO "early_iounmap(%p, %08lx) [%d]\n", addr,
@@@@@@@ -531,40 -531,40 -531,36 -530,36 -530,6 -531,40 +530,40 @@@@@@@ void __ref pci_bus_assign_resources(str
      }
      EXPORT_SYMBOL(pci_bus_assign_resources);
      
    + static void pci_bus_dump_res(struct pci_bus *bus)
    + {
    +         int i;
    + 
    +         for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) {
    +                 struct resource *res = bus->resource[i];
    +                 if (!res)
    +                         continue;
    + 
  --            printk(KERN_INFO "bus: %02x index %x %s: [%llx, %llx]\n", bus->number, i, (res->flags & IORESOURCE_IO)? "io port":"mmio", res->start, res->end);
  +++           printk(KERN_INFO "bus: %02x index %x %s: [%llx, %llx]\n",
  +++                   bus->number, i,
  +++                   (res->flags & IORESOURCE_IO) ? "io port" : "mmio",
  +++                   (unsigned long long) res->start,
  +++                   (unsigned long long) res->end);
    +         }
    + }
    + 
    + static void pci_bus_dump_resources(struct pci_bus *bus)
    + {
    +   struct pci_bus *b;
    +   struct pci_dev *dev;
    + 
    + 
    +   pci_bus_dump_res(bus);
    + 
    +   list_for_each_entry(dev, &bus->devices, bus_list) {
    +           b = dev->subordinate;
    +           if (!b)
    +                   continue;
    + 
    +           pci_bus_dump_resources(b);
    +   }
    + }
    + 
      void __init
      pci_assign_unassigned_resources(void)
      {
Simple merge
Simple merge
Simple merge
@@@@@@@ -108,11 -108,8 -108,8 -108,11 -108,7 -108,11 +108,11 @@@@@@@ extern struct resource iomem_resource
      
      extern int request_resource(struct resource *root, struct resource *new);
      extern int release_resource(struct resource *new);
 ++ + extern void reserve_region_with_split(struct resource *root,
 ++ +                        resource_size_t start, resource_size_t end,
 ++ +                        const char *name);
      extern int insert_resource(struct resource *parent, struct resource *new);
    + extern void insert_resource_expand_to_fit(struct resource *root, struct resource *new);
      extern int allocate_resource(struct resource *root, struct resource *new,
                             resource_size_t size, resource_size_t min,
                             resource_size_t max, resource_size_t align,
Simple merge
diff --cc kernel/printk.c
Simple merge
Simple merge