1. 27 8月, 2009 10 次提交
    • T
      x86: Move mpc_oem_pci_bus to x86_init_ops · 52fdb568
      Thomas Gleixner 提交于
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      52fdb568
    • T
      x86: Move smp_read_mpc_oem to x86_init_ops. · 72302142
      Thomas Gleixner 提交于
      Move smp_read_mpc_oem from quirks to x86_init.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      72302142
    • T
      x86: Move mpc_apic_id to x86_init_ops · fd6c6661
      Thomas Gleixner 提交于
      The mpc_apic_id setup is handled by a x86_quirk. Make it a
      x86_init_ops function with a default implementation.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      fd6c6661
    • T
      x86: Move ioapic_ids_setup to x86_init_ops · de934103
      Thomas Gleixner 提交于
      32bit and also the numaq code have special requirements on the
      ioapic_id setup. Convert it to a x86_init_ops function and get rid
      of the quirks and #ifdefs
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      de934103
    • T
      x86: Sanitize smp_record and move it to x86_init_ops · f4848472
      Thomas Gleixner 提交于
      The x86 quirkification introduced an extra ugly hackery with a
      variable pointer in the mpparse code. If the pointer is initialized
      then it is dereferenced and the variable set to 0 or incremented.
      
      Create a x86_init_ops function and let the affected numaq code
      hold the function. Default init is a setup noop.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      f4848472
    • T
      x86: Move memory_setup to x86_init_ops · 6b18ae3e
      Thomas Gleixner 提交于
      memory_setup is overridden by x86_quirks and by paravirts with weak
      functions and quirks. Unify the whole mess and make it an
      unconditional x86_init_ops function which defaults to the standard
      function and can be overridden by the early platform code.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      6b18ae3e
    • T
      x86: Add reserve_ebda_region to x86_init_ops · 816c25e7
      Thomas Gleixner 提交于
      reserve_ebda_region needs to be called befor start_kernel. Moorestown
      needs to override it. Make it a x86_init_ops function and initialize
      it with the default reserve_ebda_region.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      816c25e7
    • T
      x86: Add request_standard_resources to x86_init · 8fee697d
      Thomas Gleixner 提交于
      The 32bit and the 64bit code are slighty different in the reservation
      of standard resources. Also the upcoming Moorestown support needs its
      own version of that.
      
      Add it to x86_init_ops and initialize it with the 64bit default. 32bit
      overrides it in early boot. Now moorestown can add it's own override
      w/o sprinkling the code with more #ifdefs
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      8fee697d
    • T
      x86: Add probe_roms to x86_init · f7cf5a5b
      Thomas Gleixner 提交于
      probe_roms is only used on 32bit. Add it to the x86_init ops and
      remove the #ifdefs.
      
      Default initializer is x86_init_noop() which is overridden in
      the 32bit boot code.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      f7cf5a5b
    • T
      x86: Add x86_init infrastructure · 57844a8f
      Thomas Gleixner 提交于
      The upcoming Moorestown support brings the embedded world to x86. The
      setup code of x86 has already a couple of hooks which are either
      x86_quirks or paravirt ops. Some of those setup hooks are pretty
      convoluted like the timer setup and the tsc calibration code. But
      there are other places which could do with a cleanup.
      
      Instead of having inline functions/macros which are modified at
      compile time I decided to introduce x86_init ops which are
      unconditional in the code and make it clear that they can be changed
      either during compile time or in the early boot process. The function
      pointers are initialized by default functions which can be noops so
      that the pointer can be called unconditionally in the most cases. This
      also allows us to remove 32bit/64bit, paravirt and other #ifdeffery.
      
      paravirt guests are just a hardware platform in the setup code, so we
      should treat them as such and not hide all behind multiple layers of
      indirection and compile time dependencies.
      
      It's more obvious that x86_init.timers.timer_init() is a function
      pointer than the late_time_init = choose_time_init() obscurity. It's
      also way simpler to grep for x86_init.timers.timer_init and find all
      the places which modify that function pointer instead of analyzing
      weak functions, macros and paravirt indirections.
      
      Note. This is not a general paravirt_ops replacement. It just will
      move setup related hooks which are potentially useful for other
      platform setup purposes as well out of the paravirt domain.
      
      Add the base infrastructure without any functionality.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      57844a8f