Auto merge with /home/aegl/GIT/linus
Tony Luck [Wed, 13 Jul 2005 19:15:43 +0000 (12:15 -0700)]
1  2 
arch/ia64/Kconfig
arch/ia64/kernel/setup.c
include/asm-ia64/pci.h

diff --combined arch/ia64/Kconfig
@@@ -220,6 -220,13 +220,6 @@@ config IOSAPI
        depends on !IA64_HP_SIM
        default y
  
 -config IA64_SGI_SN_SIM
 -      bool "SGI Medusa Simulator Support"
 -      depends on IA64_SGI_SN2 || IA64_GENERIC
 -      help
 -        If you are compiling a kernel that will run under SGI's IA-64
 -        simulator (Medusa) then say Y, otherwise say N.
 -
  config IA64_SGI_SN_XP
        tristate "Support communication between SGI SSIs"
        select IA64_UNCACHED_ALLOCATOR
@@@ -416,6 -423,8 +416,8 @@@ endmen
  
  endif
  
+ source "net/Kconfig"
  source "drivers/Kconfig"
  
  source "fs/Kconfig"
diff --combined arch/ia64/kernel/setup.c
@@@ -20,7 -20,6 +20,7 @@@
   * 02/01/00 R.Seth    fixed get_cpuinfo for SMP
   * 01/07/99 S.Eranian added the support for command line argument
   * 06/24/99 W.Drummond        added boot_cpu_data.
 + * 05/28/05 Z. Menyhart       Dynamic stride size for "flush_icache_range()"
   */
  #include <linux/config.h>
  #include <linux/module.h>
@@@ -41,6 -40,8 +41,8 @@@
  #include <linux/serial_core.h>
  #include <linux/efi.h>
  #include <linux/initrd.h>
+ #include <linux/platform.h>
+ #include <linux/pm.h>
  
  #include <asm/ia32.h>
  #include <asm/machvec.h>
@@@ -84,13 -85,6 +86,13 @@@ EXPORT_SYMBOL(io_space)
  unsigned int num_io_spaces;
  
  /*
 + * "flush_icache_range()" needs to know what processor dependent stride size to use
 + * when it makes i-cache(s) coherent with d-caches.
 + */
 +#define       I_CACHE_STRIDE_SHIFT    5       /* Safest way to go: 32 bytes by 32 bytes */
 +unsigned long ia64_i_cache_stride_shift = ~0;
 +
 +/*
   * The merge_mask variable needs to be set to (max(iommu_page_size(iommu)) - 1).  This
   * mask specifies a mask of address bits that must be 0 in order for two buffers to be
   * mergeable by the I/O MMU (i.e., the end address of the first buffer and the start
@@@ -634,12 -628,6 +636,12 @@@ setup_per_cpu_areas (void
        /* start_kernel() requires this... */
  }
  
 +/*
 + * Calculate the max. cache line size.
 + *
 + * In addition, the minimum of the i-cache stride sizes is calculated for
 + * "flush_icache_range()".
 + */
  static void
  get_max_cacheline_size (void)
  {
                  printk(KERN_ERR "%s: ia64_pal_cache_summary() failed (status=%ld)\n",
                         __FUNCTION__, status);
                  max = SMP_CACHE_BYTES;
 +              /* Safest setup for "flush_icache_range()" */
 +              ia64_i_cache_stride_shift = I_CACHE_STRIDE_SHIFT;
                goto out;
          }
  
                                                    &cci);
                if (status != 0) {
                        printk(KERN_ERR
 -                             "%s: ia64_pal_cache_config_info(l=%lu) failed (status=%ld)\n",
 +                             "%s: ia64_pal_cache_config_info(l=%lu, 2) failed (status=%ld)\n",
                               __FUNCTION__, l, status);
                        max = SMP_CACHE_BYTES;
 +                      /* The safest setup for "flush_icache_range()" */
 +                      cci.pcci_stride = I_CACHE_STRIDE_SHIFT;
 +                      cci.pcci_unified = 1;
                }
                line_size = 1 << cci.pcci_line_size;
                if (line_size > max)
                        max = line_size;
 -        }
 +              if (!cci.pcci_unified) {
 +                      status = ia64_pal_cache_config_info(l,
 +                                                  /* cache_type (instruction)= */ 1,
 +                                                  &cci);
 +                      if (status != 0) {
 +                              printk(KERN_ERR
 +                              "%s: ia64_pal_cache_config_info(l=%lu, 1) failed (status=%ld)\n",
 +                                      __FUNCTION__, l, status);
 +                              /* The safest setup for "flush_icache_range()" */
 +                              cci.pcci_stride = I_CACHE_STRIDE_SHIFT;
 +                      }
 +              }
 +              if (cci.pcci_stride < ia64_i_cache_stride_shift)
 +                      ia64_i_cache_stride_shift = cci.pcci_stride;
 +      }
    out:
        if (max > ia64_max_cacheline_size)
                ia64_max_cacheline_size = max;
@@@ -816,6 -785,7 +818,7 @@@ cpu_init (void
        /* size of physical stacked register partition plus 8 bytes: */
        __get_cpu_var(ia64_phys_stacked_size_p8) = num_phys_stacked*8 + 8;
        platform_cpu_init();
+       pm_idle = default_idle;
  }
  
  void
diff --combined include/asm-ia64/pci.h
@@@ -47,7 -47,7 +47,7 @@@ pcibios_set_master (struct pci_dev *dev
  }
  
  static inline void
- pcibios_penalize_isa_irq (int irq)
+ pcibios_penalize_isa_irq (int irq, int active)
  {
        /* We don't do dynamic PCI IRQ allocation */
  }
@@@ -128,7 -128,6 +128,7 @@@ struct pci_controller 
        void *acpi_handle;
        void *iommu;
        int segment;
 +      int node;               /* nearest node with memory or -1 for global allocation */
  
        unsigned int windows;
        struct pci_window *window;