1. 15 3月, 2009 4 次提交
    • J
      x86: use brk allocation for DMI · 6de6cb44
      Jeremy Fitzhardinge 提交于
      Impact: use new interface instead of previous ad hoc implementation
      
      Use extend_brk() to allocate memory for DMI rather than having an
      ad-hoc allocator.
      Signed-off-by: NJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      6de6cb44
    • J
      x86-32: use brk segment for allocating initial kernel pagetable · ccf3fe02
      Jeremy Fitzhardinge 提交于
      Impact: use new interface instead of previous ad hoc implementation
      
      Rather than having special purpose init_pg_table_start/end variables
      to delimit the kernel pagetable built by head_32.S, just use the brk
      mechanism to extend the bss for the new pagetable.
      
      This patch removes init_pg_table_start/end and pg0, defines __brk_base
      (which is page-aligned and immediately follows _end), initializes
      the brk region to start there, and uses it for the 32-bit pagetable.
      Signed-off-by: NJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      ccf3fe02
    • H
      x86: move brk initialization out of #ifdef CONFIG_BLK_DEV_INITRD · 5368a2be
      H. Peter Anvin 提交于
      Impact: build fix
      
      The brk initialization functions were incorrectly located inside
      an #ifdef CONFIG_VLK_DEV_INITRD block, causing the obvious build failure in
      minimal configurations.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      Cc: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
      5368a2be
    • J
      x86: add brk allocation for very, very early allocations · 93dbda7c
      Jeremy Fitzhardinge 提交于
      Impact: new interface
      
      Add a brk()-like allocator which effectively extends the bss in order
      to allow very early code to do dynamic allocations.  This is better than
      using statically allocated arrays for data in subsystems which may never
      get used.
      
      The space for brk allocations is in the bss ELF segment, so that the
      space is mapped properly by the code which maps the kernel, and so
      that bootloaders keep the space free rather than putting a ramdisk or
      something into it.
      
      The bss itself, delimited by __bss_stop, ends before the brk area
      (__brk_base to __brk_limit).  The kernel text, data and bss is reserved
      up to __bss_stop.
      
      Any brk-allocated data is reserved separately just before the kernel
      pagetable is built, as that code allocates from unreserved spaces
      in the e820 map, potentially allocating from any unused brk memory.
      Ultimately any unused memory in the brk area is used in the general
      kernel memory pool.
      
      Initially the brk space is set to 1MB, which is probably much larger
      than any user needs (the largest current user is i386 head_32.S's code
      to build the pagetables to map the kernel, which can get fairly large
      with a big kernel image and no PSE support).  So long as the system
      has sufficient memory for the bootloader to reserve the kernel+1MB brk,
      there are no bad effects resulting from an over-large brk.
      Signed-off-by: NJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      93dbda7c
  2. 05 3月, 2009 2 次提交
  3. 26 2月, 2009 2 次提交
  4. 23 2月, 2009 2 次提交
    • I
      x86: refactor x86_quirks support · 8e6dafd6
      Ingo Molnar 提交于
      Impact: cleanup
      
      Make x86_quirks support more transparent. The highlevel
      methods are now named:
      
        extern void x86_quirk_pre_intr_init(void);
        extern void x86_quirk_intr_init(void);
      
        extern void x86_quirk_trap_init(void);
      
        extern void x86_quirk_pre_time_init(void);
        extern void x86_quirk_time_init(void);
      
      This makes it clear that if some platform extension has to
      do something here that it is considered ... weird, and is
      discouraged.
      
      Also remove arch_hooks.h and move it into setup.h (and other
      header files where appropriate).
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      8e6dafd6
    • I
      x86: remove various unused subarch hooks · d85a881d
      Ingo Molnar 提交于
      Impact: remove dead code
      
      Remove:
      
       - pre_setup_arch_hook()
       - mca_nmi_hook()
      
      If needed they can be added back via an x86_quirk handler.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      d85a881d
  5. 18 2月, 2009 4 次提交
  6. 17 2月, 2009 1 次提交
  7. 11 2月, 2009 2 次提交
    • I
      x86, apic: make generic_apic_probe() generally available · 160d8dac
      Ingo Molnar 提交于
      Impact: build fix
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      160d8dac
    • A
      x86, apic: fix initialization of wakeup_cpu · 0e81cb59
      Alok Kataria 提交于
      With refactoring of wake_cpu macros the 32bit code in tip doesn't
      execute generic_apic_probe if CONFIG_X86_32_NON_STANDARD is not set.
      
      Even on a x86 STANDARD cpu we need to execute the generic_apic_probe
      function, as we rely on this function to execute the update_genapic
      quirk which initilizes apic->wakeup_cpu.
      
      Failing to do so results in we making a call to a null function in do_boot_cpu.
      
      The stack trace without the patch goes like this.
      
      Booting processor 1 APIC 0x1 ip 0x6000
      BUG: unable to handle kernel NULL pointer dereference at (null)
      IP: [<(null)>] (null)
      *pdpt = 0000000000839001 *pde = 0000000000c97067 *pte = 0000000000000163
      Oops: 0000 [#1] SMP
      last sysfs file:
      Modules linked in:
      
      Pid: 1, comm: swapper Not tainted (2.6.29-rc4-tip #18) VMware Virtual Platform
      EIP: 0062:[<00000000>] EFLAGS: 00010293 CPU: 0
      EIP is at 0x0
      EAX: 00000001 EBX: 00006000 ECX: c077ed00 EDX: 00006000
      ESI: 00000001 EDI: 00000001 EBP: ef04cf40 ESP: ef04cf1c
       DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 006a
      Process swapper (pid: 1, ti=ef04c000 task=ef050000 task.ti=ef04c000)
      Stack:
       c0644e52 00000000 ef04cf24 ef04cf24 c064468d c0886dc0 00000000 c0702aea
       ef055480 00000001 00000101 dead4ead ffffffff ffffffff c08af530 00000000
       c0709715 ef04cf60 ef04cf60 00000001 00000000 00000000 dead4ead ffffffff
      Call Trace:
       [<c0644e52>] ? native_cpu_up+0x2de/0x45b
       [<c064468d>] ? do_fork_idle+0x0/0x19
       [<c0645c5e>] ? _cpu_up+0x88/0xe8
       [<c0645d20>] ? cpu_up+0x42/0x4e
       [<c07e7462>] ? kernel_init+0x99/0x14b
       [<c07e73c9>] ? kernel_init+0x0/0x14b
       [<c040375f>] ? kernel_thread_helper+0x7/0x10
      Code:  Bad EIP value.
      EIP: [<00000000>] 0x0 SS:ESP 006a:ef04cf1c
      
      I think we should call generic_apic_probe unconditionally for 32 bit now.
      Signed-off-by: NAlok N Kataria <akataria@vmware.com>
      Acked-by: NYinghai Lu <yinghai@kernel.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      0e81cb59
  8. 05 2月, 2009 1 次提交
  9. 30 1月, 2009 1 次提交
  10. 29 1月, 2009 8 次提交
  11. 07 1月, 2009 1 次提交
  12. 17 12月, 2008 1 次提交
  13. 15 12月, 2008 1 次提交
  14. 08 12月, 2008 1 次提交
  15. 28 11月, 2008 1 次提交
  16. 20 11月, 2008 1 次提交
  17. 19 11月, 2008 1 次提交
  18. 18 11月, 2008 2 次提交
    • P
      x86: more general identifier for Phoenix BIOS · 0af40a4b
      Philipp Kohlbecher 提交于
      Impact: widen the reach of the low-memory-protect DMI quirk
      
      Phoenix BIOSes variously identify their vendor as "Phoenix Technologies,
      LTD" or "Phoenix Technologies LTD" (without the comma.)
      
      This patch makes the identification string in the bad_bios_dmi_table
      more general (following a suggestion by Ingo Molnar), so that both
      versions are handled.
      
      Again, the patched file compiles cleanly and the patch has been tested
      successfully on my machine.
      Signed-off-by: NPhilipp Kohlbecher <xt28@gmx.de>
      Cc: <stable@kernel.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      0af40a4b
    • Y
      x86: fix wakeup_cpu with numaq/es7000, v2, fix · 54ac14a8
      Yinghai Lu 提交于
      Impact: fix wakeup_secondary_cpu with hotplug
      
      We can not put that into x86_quirks, because that is __initdata.
      So try to move that to genapic, and add update_genapic in x86_quirks.
      
      later we even could use that stub to:
      
       1. autodetect CONFIG_ES7000_CLUSTERED_APIC
       2. more correct inquire_remote_apic with apic_verbosity setting.
      Signed-off-by: NYinghai Lu <yinghai@kernel.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      54ac14a8
  19. 02 11月, 2008 1 次提交
    • A
      x86: Hypervisor detection and get tsc_freq from hypervisor · 88b094fb
      Alok Kataria 提交于
      Impact: Changes timebase calibration on Vmware.
      
      v3->v2 : Abstract the hypervisor detection and feature (tsc_freq) request
      	 behind a hypervisor.c file
      v2->v1 : Add a x86_hyper_vendor field to the cpuinfo_x86 structure.
      	 This avoids multiple calls to the hypervisor detection function.
      
      This patch adds function to detect if we are running under VMware.
      The current way to check if we are on VMware is following,
      #  check if "hypervisor present bit" is set, if so read the 0x40000000
         cpuid leaf and check for "VMwareVMware" signature.
      #  if the above fails, check the DMI vendors name for "VMware" string
         if we find one we query the VMware hypervisor port to check if we are
         under VMware.
      
      The DMI + "VMware hypervisor port check" is needed for older VMware products,
      which don't implement the hypervisor signature cpuid leaf.
      Also note that since we are checking for the DMI signature the hypervisor
      port should never be accessed on native hardware.
      
      This patch also adds a hypervisor_get_tsc_freq function, instead of
      calibrating the frequency which can be error prone in virtualized
      environment, we ask the hypervisor for it. We get the frequency from
      the hypervisor by accessing the hypervisor port if we are running on VMware.
      Other hypervisors too can add code to the generic routine to get frequency on
      their platform.
      Signed-off-by: NAlok N Kataria <akataria@vmware.com>
      Signed-off-by: NDan Hecht <dhecht@vmware.com>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      88b094fb
  20. 28 10月, 2008 2 次提交
  21. 20 10月, 2008 1 次提交
    • V
      kdump: make elfcorehdr_addr independent of CONFIG_PROC_VMCORE · 57cac4d1
      Vivek Goyal 提交于
      o elfcorehdr_addr is used by not only the code under CONFIG_PROC_VMCORE
        but also by the code which is not inside CONFIG_PROC_VMCORE.  For
        example, is_kdump_kernel() is used by powerpc code to determine if
        kernel is booting after a panic then use previous kernel's TCE table.
        So even if CONFIG_PROC_VMCORE is not set in second kernel, one should be
        able to correctly determine that we are booting after a panic and setup
        calgary iommu accordingly.
      
      o So remove the assumption that elfcorehdr_addr is under
        CONFIG_PROC_VMCORE.
      
      o Move definition of elfcorehdr_addr to arch dependent crash files.
        (Unfortunately crash dump does not have an arch independent file
        otherwise that would have been the best place).
      
      o kexec.c is not the right place as one can Have CRASH_DUMP enabled in
        second kernel without KEXEC being enabled.
      
      o I don't see sh setup code parsing the command line for
        elfcorehdr_addr.  I am wondering how does vmcore interface work on sh.
        Anyway, I am atleast defining elfcoredhr_addr so that compilation is not
        broken on sh.
      Signed-off-by: NVivek Goyal <vgoyal@redhat.com>
      Acked-by: N"Eric W. Biederman" <ebiederm@xmission.com>
      Acked-by: NSimon Horman <horms@verge.net.au>
      Acked-by: NPaul Mundt <lethal@linux-sh.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      57cac4d1