1. 09 Jun, 2009 1 commit
    • Andreas Herrmann's avatar
      x86: Detect use of extended APIC ID for AMD CPUs · 42937e81
      Andreas Herrmann authored
      Booting a 32-bit kernel on Magny-Cours results in the following panic:
      
        ...
        Using APIC driver default
        ...
        Overriding APIC driver with bigsmp
        ...
        Getting VERSION: 80050010
        Getting VERSION: 80050010
        Getting ID: 10000000
        Getting ID: ef000000
        Getting LVT0: 700
        Getting LVT1: 10000
        Kernel panic - not syncing: Boot APIC ID in local APIC unexpected (16 vs 0)
        Pid: 1, comm: swapper Not tainted 2.6.30-rcX #2
        Call Trace:
         [<c05194da>] ? panic+0x38/0xd3
         [<c0743102>] ? native_smp_prepare_cpus+0x259/0x31f
         [<c073b19d>] ? kernel_init+0x3e/0x141
         [<c073b15f>] ? kernel_init+0x0/0x141
         [<c020325f>] ? kernel_thread_helper+0x7/0x10
      
      The reason is that default_get_apic_id handled extension of local APIC
      ID field just in case of XAPIC.
      
      Thus for this AMD CPU, default_get_apic_id() returns 0 and
      bigsmp_get_apic_id() returns 16 which leads to the respective kernel
      panic.
      
      This patch introduces a Linux specific feature flag to indicate
      support for extended APIC id (8 bits instead of 4 bits width) and sets
      the flag on AMD CPUs if applicable.
      Signed-off-by: default avatarAndreas Herrmann <andreas.herrmann3@amd.com>
      Cc: <stable@kernel.org>
      LKML-Reference: <20090608135509.GA12431@alberich.amd.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      42937e81
  2. 08 Jun, 2009 2 commits
    • Andreas Herrmann's avatar
      x86: memtest: remove 64-bit division · c9690998
      Andreas Herrmann authored
      Using gcc 3.3.5 a "make allmodconfig" + "CONFIG_KVM=n"
      triggers a build error:
      
       arch/x86/mm/built-in.o(.init.text+0x43f7): In function `__change_page_attr':
       arch/x86/mm/pageattr.c:114: undefined reference to `__udivdi3'
       make: *** [.tmp_vmlinux1] Error 1
      
      The culprit turned out to be a division in arch/x86/mm/memtest.c
      For more info see this thread:
      
        http://marc.info/?l=linux-kernel&m=124416232620683
      
      The patch entirely removes the division that caused the build
      error.
      
      [ Impact: build fix with certain GCC versions ]
      Reported-by: default avatarTetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
      Signed-off-by: default avatarAndreas Herrmann <andreas.herrmann3@amd.com>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: xiyou.wangcong@gmail.com
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: <stable@kernel.org>
      LKML-Reference: <20090608170939.GB12431@alberich.amd.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      c9690998
    • Jack Steiner's avatar
      x86, UV: Fix macros for multiple coherency domains · c4ed3f04
      Jack Steiner authored
      Fix bug in the SGI UV macros that support systems with multiple
      coherency domains.  The macros used for referencing global MMR
      (chipset registers) are failing to correctly "or" the NASID
      (node identifier) bits that reside above M+N. These high bits
      are supplied automatically by the chipset for memory accesses
      coming from the processor socket.
      
      However, the bits must be present for references to the special
      global MMR space used to map chipset registers. (See uv_hub.h
      for more details ...)
      
      The bug results in references to invalid/incorrect nodes.
      Signed-off-by: default avatarJack Steiner <steiner@sgi.com>
      Cc: <stable@kernel.org>
      LKML-Reference: <20090608154405.GA16395@sgi.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      c4ed3f04
  3. 07 Jun, 2009 2 commits
  4. 03 Jun, 2009 1 commit
    • Cliff Wickman's avatar
      x86: Fix UV BAU activation descriptor init · 0e2595cd
      Cliff Wickman authored
      The UV tlb shootdown code has a serious initialization error.
      
      An array of structures [32*8] is initialized as if it were [32].
      The array is indexed by (cpu number on the blade)*8, so the short
      initialization works for up to 4 cpus on a blade.
      But above that, we provide an invalid opcode to the hub's
      broadcast assist unit.
      
      This patch changes the allocation of the array to use its symbolic
      dimensions for better clarity. And initializes all 32*8 entries.
      
      Shortened 'UV_ACTIVATION_DESCRIPTOR_SIZE' to 'UV_ADP_SIZE' per Ingo's
      recommendation.
      
      Tested on the UV simulator.
      Signed-off-by: default avatarCliff Wickman <cpw@sgi.com>
      Cc: <stable@kernel.org>
      LKML-Reference: <E1M6lZR-0007kV-Aq@eag09.americas.sgi.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      0e2595cd
  5. 01 Jun, 2009 10 commits
  6. 30 May, 2009 18 commits
  7. 29 May, 2009 6 commits