07 Dec, 2006

29 commits

  • This patch is the meat of the PDA change. This patch makes several related
    changes:

    1: Most significantly, %gs is now used in the kernel. This means that on
    entry, the old value of %gs is saved away, and it is reloaded with
    __KERNEL_PDA.

    2: entry.S constructs the stack in the shape of struct pt_regs, and this
    is passed around the kernel so that the process's saved register
    state can be accessed.

    Unfortunately struct pt_regs doesn't currently have space for %gs
    (or %fs). This patch extends pt_regs to add space for gs (no space
    is allocated for %fs, since it won't be used, and it would just
    complicate the code in entry.S to work around the space).

    3: Because %gs is now saved on the stack like %ds, %es and the integer
    registers, there are a number of places where it no longer needs to
    be handled specially; namely context switch, and saving/restoring the
    register state in a signal context.

    4: And since kernel threads run in kernel space and call normal kernel
    code, they need to be created with their %gs == __KERNEL_PDA.

    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Andi Kleen
    Cc: Chuck Ebbert
    Cc: Zachary Amsden
    Cc: Jan Beulich
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton

    Jeremy Fitzhardinge
     
  • When a CPU is brought up, a PDA and GDT are allocated for it. The GDT's
    __KERNEL_PDA entry is pointed to the allocated PDA memory, so that all
    references using this segment descriptor will refer to the PDA.

    This patch rearranges CPU initialization a bit, so that the GDT/PDA are set up
    as early as possible in cpu_init(). Also for secondary CPUs, GDT+PDA are
    preallocated and initialized so all the secondary CPU needs to do is set up
    the ldt and load %gs. This will be important once smp_processor_id() and
    current use the PDA.

    In all cases, the PDA is set up in head.S, before a CPU starts running C code,
    so the PDA is always available.

    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Andi Kleen
    Cc: Chuck Ebbert
    Cc: Zachary Amsden
    Cc: Jan Beulich
    Cc: Andi Kleen
    Cc: James Bottomley
    Cc: Matt Tolentino
    Signed-off-by: Andrew Morton

    Jeremy Fitzhardinge
     
  • This patch has the basic definitions of struct i386_pda, and the segment
    selector in the GDT.

    asm-i386/pda.h is more or less a direct copy of asm-x86_64/pda.h. The most
    interesting difference is the use of _proxy_pda, which is used to give gcc a
    model for the actual memory operations on the real pda structure. No actual
    reference is ever made to _proxy_pda, so it is never defined.

    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Andi Kleen
    Cc: Chuck Ebbert
    Cc: Zachary Amsden
    Cc: Jan Beulich
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton

    Jeremy Fitzhardinge
     
  • Use asm-offsets for the offsets of registers into the pt_regs struct, rather
    than having hard-coded constants

    I left the constants in the comments of entry.S because they're useful for
    reference; the code in entry.S is very dependent on the layout of pt_regs,
    even when using asm-offsets.

    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Andi Kleen
    Cc: Keith Owens
    Signed-off-by: Andrew Morton

    Jeremy Fitzhardinge
     
  • This patch:
    - makes ret_from_sys_call no longer global (all external users were
    previously switched to use int_ret_from_sys_call)
    - adjusts placement of a CFI_{REMEMBER,RESTORE}_STATE pair to better
    fit logic flow
    - eliminates an unnecessary pair of CFI_{REMEMBER,RESTORE}_STATE
    - glues together function- and unwinder-wise the previously separate
    system_call and int_ret_from_sys_call function fragments

    Signed-off-by: Jan Beulich
    Signed-off-by: Andi Kleen

    Jan Beulich
     
  • Fix

    BUG: using smp_processor_id() in preemptible [00000001] code:

    in backtracer on preemptible debug kernels.

    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Andi Kleen

    Andrew Morton
     
  • - add Intel Precise-Event Based sampling (PEBS) related MSR
    - add Intel Data Save (DS) Area related MSR
    - add Intel Core microarchitecure performance counter MSRs

    Signed-off-by: stephane eranian
    Signed-off-by: Andi Kleen

    Stephane Eranian
     
  • Add o the x86-64 tree a bunch of MSRs related to performance
    monitoring for the processors based on Intel Core microarchitecture.
    It also adds some architectural MSRs for PEBS. A similar patch for i386 will
    follow.

    changelog:
    - add Intel Precise-Event Based sampling (PEBS) related MSR
    - add Intel Data Save (DS) Area related MSR
    - add Intel Core microarchitecure performance counter MSRs

    Signed-off-by: stephane eranian
    Signed-off-by: Andi Kleen

    Stephane Eranian
     
  • ioremap must be balanced by an iounmap and failing to do so can result
    in a memory leak.

    Tested (compilation only):
    - using allmodconfig
    - making sure the files are compiling without any warning/error due to
    new changes

    Signed-off-by: Amol Lad
    Signed-off-by: Andi Kleen

    Amol Lad
     
  • Signed-off-by: Amol Lad
    Signed-off-by: Andi Kleen

    Amol Lad
     
  • Insert the Local APIC and IO APIC(s) into the resource tree. It allows the
    APIC resources to be visible within /proc/iomem. The patch also takes into
    account IO APIC(s) mapped in the PCI space by deferring the insertion until
    after PCI has allocated its necessary resources.

    Signed-off-by: Aaron Durbin
    Signed-off-by: Andi Kleen
    Cc: Andi Kleen
    Cc: "Eric W. Biederman"
    Signed-off-by: Andrew Morton

    Aaron Durbin
     
  • i386 port of the sLeAZY-fpu feature. Chuck reports that this gives him a +/-
    0.4% improvement on his simple benchmark

    x86_64 description follows:

    Right now the kernel on x86-64 has a 100% lazy fpu behavior: after *every*
    context switch a trap is taken for the first FPU use to restore the FPU
    context lazily. This is of course great for applications that have very
    sporadic or no FPU use (since then you avoid doing the expensive save/restore
    all the time). However for very frequent FPU users... you take an extra trap
    every context switch.

    The patch below adds a simple heuristic to this code: After 5 consecutive
    context switches of FPU use, the lazy behavior is disabled and the context
    gets restored every context switch. If the app indeed uses the FPU, the trap
    is avoided. (the chance of the 6th time slice using FPU after the previous 5
    having done so are quite high obviously).

    After 256 switches, this is reset and lazy behavior is returned (until there
    are 5 consecutive ones again). The reason for this is to give apps that do
    longer bursts of FPU use still the lazy behavior back after some time.

    Signed-off-by: Chuck Ebbert
    Signed-off-by: Arjan van de Ven
    Signed-off-by: Andrew Morton
    Signed-off-by: Andi Kleen

    Chuck Ebbert
     
  • Clean up the espfix code:

    - Introduced PER_CPU() macro to be used from asm
    - Introduced GET_DESC_BASE() macro to be used from asm
    - Rewrote the fixup code in asm, as calling a C code with the altered %ss
    appeared to be unsafe
    - No longer altering the stack from a .fixup section
    - 16bit per-cpu stack is no longer used, instead the stack segment base
    is patched the way so that the high word of the kernel and user %esp
    are the same.
    - Added the limit-patching for the espfix segment. (Chuck Ebbert)

    [jeremy@goop.org: use the x86 scaling addressing mode rather than shifting]
    Signed-off-by: Stas Sergeev
    Signed-off-by: Andi Kleen
    Acked-by: Zachary Amsden
    Acked-by: Chuck Ebbert
    Acked-by: Jan Beulich
    Cc: Andi Kleen
    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Andrew Morton

    Stas Sergeev
     
  • When a spinlock lockup occurs, arrange for the NMI code to emit an all-cpu
    backtrace, so we get to see which CPU is holding the lock, and where.

    Cc: Andi Kleen
    Cc: Ingo Molnar
    Cc: Badari Pulavarty
    Signed-off-by: Andrew Morton
    Signed-off-by: Andi Kleen

    Andrew Morton
     
  • This patch removes the default_ldt[] array, as it has been unused since
    iBCS stopped being supported. This means it is now possible to actually
    set an empty LDT segment.

    In order to deal with this, the set_ldt_desc/load_LDT pair has been
    replaced with a single set_ldt() operation which is responsible for both
    setting up the LDT descriptor in the GDT, and reloading the LDT register.
    If there are no LDT entries, the LDT register is loaded with a NULL
    descriptor.

    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Andi Kleen
    Cc: Andi Kleen
    Acked-by: Zachary Amsden
    Signed-off-by: Andrew Morton

    Jeremy Fitzhardinge
     
  • Signed-off-by: Alexey Dobriyan
    Signed-off-by: Andi Kleen
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton

    Alexey Dobriyan
     
  • Here is a patch (used by perfmon2) to detect the presence of the Precise Event
    Based Sampling (PEBS) feature for i386. The patch also adds the cpu_has_pebs
    macro.

    - adds X86_FEATURE_PEBS

    - adds cpu_has_pebs to test for X86_FEATURE_PEBS

    Signed-off-by: stephane eranian
    Signed-off-by: Andi Kleen
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton

    Stephane Eranian
     
  • Here is a patch (used by perfmon2) that renames X86_FEATURE_DTES to
    X86_FEATURE_DS to match Intel's documentation for the Debug Store save area on
    i386. The patch also adds cpu_has_ds.

    - rename X86_FEATURE_DTES to X86_FEATURE_DS to match documentation

    - adds cpu_has_ds to test for X86_FEATURE_DS

    Signed-off-by: stephane eranian
    Signed-off-by: Andi Kleen
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton

    Stephane Eranian
     
  • inline function cpu_mask_to_apicid in smp.h is duplicated with macro
    in mach_apic.h.

    Signed-off-by: Yinghai Lu
    Signed-off-by: Andi Kleen

    Yinghai Lu
     
  • Here is a patch (used by perfmon2) to detect the presence of the
    Precise Event Based Sampling (PEBS) feature for Intel 64-bit processors.
    The patch also adds the cpu_has_pebs macro.

    changelog:
    - adds X86_FEATURE_PEBS
    - adds cpu_has_pebs to test for X86_FEATURE_PEBS

    Signed-off-by: stephane eranian
    Signed-off-by: Andi Kleen

    Stephane Eranian
     
  • Here is a patch (used by perfmon2) that renamed X86_FEATURE_DTES
    to X86_FEATURE_DS to match Intel's documentation for the Debug Store
    save area. The patch also adds cpu_has_ds.

    changelog:
    - rename X86_FEATURE_DTES to X86_FEATURE_DS to match documentation
    - adds cpu_has_ds to test for X86_FEATURE_DS

    Signed-off-by: stephane eranian
    Signed-off-by: Andi Kleen

    Stephane Eranian
     
  • Follows i386.

    Based on patch from some folks at Google (MikeW, Edward G.?), but
    completely redone by AK.

    Signed-off-by: Andi Kleen

    Andi Kleen
     
  • This just got removed on x86-64, do the same on 32bit.
    It always annoyed me when this ate a line of oops output pushing
    interesting stuff off the screen.

    Signed-off-by: Dave Jones
    Signed-off-by: Andi Kleen

    Dave Jones
     
  • Fix __must_check warnings in i386/math-emu.

    Signed-off-by: Randy Dunlap
    Signed-off-by: Andi Kleen

    Randy Dunlap
     
  • The unwinder has some extra newlines, which eat up loads of screen
    space when it spews. (See https://bugzilla.redhat.com/bugzilla/attachment.cgi?id=137900
    for a nasty example).

    warning_symbol-> and warning-> already printk a newline, so don't add one
    in the strings passed to them.

    [AK: redone for new code]

    Signed-off-by: Dave Jones
    Signed-off-by: Andi Kleen

    Andi Kleen
     
  • Andrew complained about > 80 character lines in the new unwinder.
    Fix that.

    Signed-off-by: Andi Kleen

    Andi Kleen
     
  • Fix checks that failed to realize that values are 4-kB-unit-sized (note the
    format strings in this same diff context which *do* realize the unit size,
    via appended "000"!). Also fix an incorrect below-1MB area check (as
    gathered from Jan Beulich's unapplied patch at
    http://www.ussg.iu.edu/hypermail/linux/kernel/0411.1/1378.html ) Update
    mtrr_add_page() docu to make 4-kB-sized calculation more obvious.

    Given several further items mentioned in Jan's patch mail, all in all MTRR
    code seems surprisingly buggy, for a surprisingly long period of time (many
    years). Further work/investigation would be useful.

    TBD Note that my patch is pretty much UNTESTED, since I can only verify that it
    TBD successfully boots my machine, but I cannot test against actual buggy
    TBD hardware which would require these (formerly broken) checks. Long -mm
    TBD simmering would make sense, especially since these now-working checks might
    TBD turn out to have adverse effects on unaffected hardware.

    Signed-off-by: Andreas Mohr
    Signed-off-by: Andi Kleen
    Acked-by: Jan Beulich
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton

    Andreas Mohr
     
  • Signed-off-by: Andi Kleen

    Andi Kleen
     
  • Signed-off-by: Andi Kleen

    Andi Kleen
     

06 Dec, 2006

11 commits

  • * master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (73 commits)
    [SCSI] aic79xx: Add ASC-29320LPE ids to driver
    [SCSI] stex: version update
    [SCSI] stex: change wait loop code
    [SCSI] stex: add new device type support
    [SCSI] stex: update device id info
    [SCSI] stex: adjust default queue length
    [SCSI] stex: add value check in hard reset routine
    [SCSI] stex: fix controller_info command handling
    [SCSI] stex: fix biosparam calculation
    [SCSI] megaraid: fix MMIO casts
    [SCSI] tgt: fix undefined flush_dcache_page() problem
    [SCSI] libsas: better error handling in sas_expander.c
    [SCSI] lpfc 8.1.11 : Change version number to 8.1.11
    [SCSI] lpfc 8.1.11 : Misc Fixes
    [SCSI] lpfc 8.1.11 : Add soft_wwnn sysfs attribute, rename soft_wwn_enable
    [SCSI] lpfc 8.1.11 : Removed decoding of PCI Subsystem Id
    [SCSI] lpfc 8.1.11 : Add MSI (Message Signalled Interrupts) support
    [SCSI] lpfc 8.1.11 : Adjust LOG_FCP logging
    [SCSI] lpfc 8.1.11 : Fix Memory leaks
    [SCSI] lpfc 8.1.11 : Fix lpfc_multi_ring_support
    ...

    Linus Torvalds
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6:
    [PATCH] pcmcia: at91_cf update
    [PATCH] pcmcia: fix m32r_cfc.c compilation
    [PATCH] pcmcia: ds.c debug enhancements
    [PATCH] pcmcia: at91_cf update
    [PATCH] pcmcia: conf.ConfigBase and conf.Present consolidation
    [PATCH] pcmcia: remove prod_id indirection
    [PATCH] pcmcia: remove manf_id and card_id indirection
    [PATCH] pcmcia: IDs for Elan serial PCMCIA devcies
    [PATCH] pcmcia: allow for four multifunction subdevices
    [PATCH] pcmcia: handle __copy_from_user() return value in ioctl
    [PATCH] pcmcia: multifunction card handling fixes
    [PATCH] pcmcia: allow shared IRQs on pd6729 sockets
    [PATCH] pcmcia: start over after CIS override
    [PATCH] cm4000_cs: fix return value check
    [PATCH] pcmcia: yet another IDE ID
    [PATCH] pcmcia: Add an id to ide-cs.c

    Linus Torvalds
     
  • Simple patch to add the new PCIe version of the 29320 card.

    Signed-off: Mark Salyzyn
    Signed-off-by: James Bottomley

    Salyzyn, Mark
     
  • Update version to 3.1.0.1

    Signed-off-by: Ed Lin
    Signed-off-by: James Bottomley

    Ed Lin
     
  • The original wait loop may be much longer than intended time.
    Use more accurate timer_after for it. Also adjust wait value to
    avoid unnecessary long waiting.

    Signed-off-by: Ed Lin
    Signed-off-by: James Bottomley

    Ed Lin
     
  • Add support for st_vsc1 type device (st_vsc is ok because it does not
    require extra buffer).

    Signed-off-by: Ed Lin
    Signed-off-by: James Bottomley

    Ed Lin
     
  • - add comments for various devices
    - remove unused device ids(0xf350, 0x4301, 0x8301, 0x8302)
    - add new device id(0xe350)
    - fix vendor id of st_vsc
    - modify Kconfig help info

    Signed-off-by: Ed Lin
    Signed-off-by: James Bottomley

    Ed Lin
     
  • Firmware of new version may adjust default queue length. It is
    backward compatible.

    Signed-off-by: Ed Lin
    Signed-off-by: James Bottomley

    Ed Lin
     
  • During hard reset, an all-1 value from PCI_COMMAND should be invalid.

    Signed-off-by: Ed Lin
    Signed-off-by: James Bottomley

    Ed Lin
     
  • This command needs information from both firmware and driver. First copy
    information from firmware to buffer, then fill in driver information.

    Signed-off-by: Ed Lin
    Signed-off-by: James Bottomley

    Ed Lin
     
  • Fix biosparam calculation.

    Signed-off-by: Ed Lin
    Signed-off-by: James Bottomley

    Ed Lin