linux-2.6
18 years ago[PATCH] x86: error_code is not safe for kprobes
Prasanna S.P [Tue, 26 Sep 2006 08:52:34 +0000 (10:52 +0200)] 
[PATCH] x86: error_code is not safe for kprobes

This patch moves the entry.S:error_entry to .kprobes.text section,
since code marked unsafe for kprobes jumps directly to entry.S::error_entry,
that must be marked unsafe as well.
This patch also moves all the ".previous.text" asm directives to ".previous"
for kprobes section.

AK: Following a similar i386 patch from Chuck Ebbert
AK: Also merged Jeremy's fix in.

+From: Jeremy Fitzhardinge <jeremy@goop.org>

KPROBE_ENTRY does a .section .kprobes.text, and expects its users to
do a .previous at the end of the function.

Unfortunately, if any code within the function switches sections, for
example .fixup, then the .previous ends up putting all subsequent code
into .fixup.  Worse, any subsequent .fixup code gets intermingled with
the code its supposed to be fixing (which is also in .fixup).  It's
surprising this didn't cause more havok.

The fix is to use .pushsection/.popsection, so this stuff nests
properly.  A further cleanup would be to get rid of all
.section/.previous pairs, since they're inherently fragile.

+From: Chuck Ebbert <76306.1226@compuserve.com>

Because code marked unsafe for kprobes jumps directly to
entry.S::error_code, that must be marked unsafe as well.
The easiest way to do that is to move the page fault entry
point to just before error_code and let it inherit the same
section.

Also moved all the ".previous" asm directives for kprobes
sections to column 1 and removed ".text" from them.

Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: don't taint UP K7's running SMP kernels.
Dave Jones [Tue, 26 Sep 2006 08:52:34 +0000 (10:52 +0200)] 
[PATCH] i386: don't taint UP K7's running SMP kernels.

We have a test that looks for invalid pairings of certain athlon/durons
that weren't designed for SMP, and taint accordingly (with 'S') if we find
such a configuration.  However, this test shouldn't fire if there's only
a single CPU present. It's perfectly valid for an SMP kernel to boot on UP
hardware for example.

AK: changed to num_possible_cpus()

Signed-off-by: Dave Jones <davej@redhat.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: fix dubious segment register clear in cpu_init()
Jeremy Fitzhardinge [Tue, 26 Sep 2006 08:52:34 +0000 (10:52 +0200)] 
[PATCH] i386: fix dubious segment register clear in cpu_init()

Fix a very dubious piece of code in
arch/i386/kernel/cpu/common.c:cpu_init().  This clears out %fs and
%gs, but clobbers %eax in the process without telling gcc.  It turns
out that gcc happens to be not using %eax at that point anyway so it
doesn't matter much, but it looks like a bomb waiting to go off.

This does end up saving an instruction, because gcc wants %eax==0 for
the set_debugreg()s below.

Signed-off-by: Jeremy Fitzhardinge <jeremy@goop.org>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Don't force frame pointers for lockdep
Andi Kleen [Tue, 26 Sep 2006 08:52:34 +0000 (10:52 +0200)] 
[PATCH] Don't force frame pointers for lockdep

Now that stacktrace supports dwarf2 don't force frame pointers for lockdep anymore

Cc: mingo@elte.hu
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Get ebp from unwinder state when continuing fallback backtrace
Andi Kleen [Tue, 26 Sep 2006 08:52:34 +0000 (10:52 +0200)] 
[PATCH] i386: Get ebp from unwinder state when continuing fallback backtrace

Cc: jbeulich@novell.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Terminate backtrace fallback early if unwinder stack pointer is zero
Andi Kleen [Tue, 26 Sep 2006 08:52:34 +0000 (10:52 +0200)] 
[PATCH] i386: Terminate backtrace fallback early if unwinder stack pointer is zero

Cc: jbeulich@novell.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Do stacktracer conversion too
Andi Kleen [Tue, 26 Sep 2006 08:52:34 +0000 (10:52 +0200)] 
[PATCH] i386: Do stacktracer conversion too

Following x86-64 patches. Reuses code from them in fact.

Convert the standard backtracer to do all output using
callbacks.   Use the x86-64 stack tracer implementation
that uses these callbacks to implement the stacktrace interface.

This allows to use the new dwarf2 unwinder for stacktrace
and get better backtraces.

Cc: mingo@elte.hu
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Check for end of stack trace before falling back
Andi Kleen [Tue, 26 Sep 2006 08:52:34 +0000 (10:52 +0200)] 
[PATCH] Check for end of stack trace before falling back

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Merge stacktrace and show_trace
Andi Kleen [Tue, 26 Sep 2006 08:52:34 +0000 (10:52 +0200)] 
[PATCH] Merge stacktrace and show_trace

This unifies the standard backtracer and the new stacktrace
in memory backtracer. The standard one is converted to use callbacks
and then reimplement stacktrace using new callbacks.

The main advantage is that stacktrace can now use the new dwarf2 unwinder
and avoid false positives in many cases.

I kept it simple to make sure the standard backtracer stays reliable.

Cc: mingo@elte.hu
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Move unwind_init earlier
Andi Kleen [Tue, 26 Sep 2006 08:52:34 +0000 (10:52 +0200)] 
[PATCH] Move unwind_init earlier

Needed for use of the unwinder in lockdep, because lockdep runs really
early too.

Cc: jbeulich@novell.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Don't access the APIC in safe_smp_processor_id when it is not mapped yet
Andi Kleen [Tue, 26 Sep 2006 08:52:34 +0000 (10:52 +0200)] 
[PATCH] Don't access the APIC in safe_smp_processor_id when it is not mapped yet

Lockdep can call the dwarf2 unwinder early, and the dwarf2 code
uses safe_smp_processor_id which tries to access the local APIC page.
But that doesn't work before the APIC code has set up its fixmap.

Check for this case and always return boot cpu then.

Cc: jbeulich@novell.com
Cc: mingo@elte.hu
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Avoid recursion in lockdep when stack tracer takes locks
Andi Kleen [Tue, 26 Sep 2006 08:52:34 +0000 (10:52 +0200)] 
[PATCH] Avoid recursion in lockdep when stack tracer takes locks

The new dwarf2 unwinder needs to take locks to do backtraces
inside modules. This patch makes sure lockdep which calls
stacktrace is not reentered.

Thanks to Ingo for suggesting this simpler approach.

Cc: mingo@elte.hu
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] x86: Some preparationary cleanup for stack trace
Andi Kleen [Tue, 26 Sep 2006 08:52:34 +0000 (10:52 +0200)] 
[PATCH] x86: Some preparationary cleanup for stack trace

- Remove unused all_contexts parameter
No caller used it
- Move skip argument into the structure (needed for
followon patches)

Cc: mingo@elte.hu
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Calgary IOMMU: eradicate sole remaining 80 chars per line offender
Muli Ben-Yehuda [Tue, 26 Sep 2006 08:52:33 +0000 (10:52 +0200)] 
[PATCH] Calgary IOMMU: eradicate sole remaining 80 chars per line offender

Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Jon Mason <jdmason@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] remove tce_cache_blast_stress()
Muli Ben-Yehuda [Tue, 26 Sep 2006 08:52:33 +0000 (10:52 +0200)] 
[PATCH] remove tce_cache_blast_stress()

tce_cache_blast_stress was useful during bringup to stress the IOMMU's
cache flushing. Now that we quiesce DMAs on every cache flush, using
_stress() brings the machine down to its knees once you put it under
load. Remove this debug / bringup code that isn't useful anymore
completely.

Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Jon Mason <jdmason@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] only verify the allocation bitmap if CONFIG_IOMMU_DEBUG is on
Muli Ben-Yehuda [Tue, 26 Sep 2006 08:52:33 +0000 (10:52 +0200)] 
[PATCH] only verify the allocation bitmap if CONFIG_IOMMU_DEBUG is on

Introduce new function verify_bit_range(). Define two versions, one
for CONFIG_IOMMU_DEBUG enabled and one for disabled. Previously we
were checking that the bitmap was consistent every time we allocated
or freed an entry in the TCE table, which is good for debugging but
incurs an unnecessary penalty on non debug builds.

Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Jon Mason <jdmason@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] print whether CONFIG_IOMMU_DEBUG is enabled
Muli Ben-Yehuda [Tue, 26 Sep 2006 08:52:33 +0000 (10:52 +0200)] 
[PATCH] print whether CONFIG_IOMMU_DEBUG is enabled

Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Jon Mason <jdmason@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386/x86-64: rename is_at_popf(), add iret to tests and fix
Chuck Ebbert [Tue, 26 Sep 2006 08:52:33 +0000 (10:52 +0200)] 
[PATCH] i386/x86-64: rename is_at_popf(), add iret to tests and fix

is_at_popf() needs to test for the iret instruction as well as
popf.  So add that test and rename it to is_setting_trap_flag().

Also change max insn length from 16 to 15 to match reality.

LAHF / SAHF can't affect TF, so the comment in x86_64 is removed.

Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] x86: Remove unneeded externs in acpi/boot.c
Andi Kleen [Tue, 26 Sep 2006 08:52:33 +0000 (10:52 +0200)] 
[PATCH] x86: Remove unneeded externs in acpi/boot.c

And move one into proto.h

Cc: len.brown@intel.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Replace local_save_flags+local_irq_disable with
Fernando Luis Vázquez Cao [Tue, 26 Sep 2006 08:52:33 +0000 (10:52 +0200)] 
[PATCH] Replace local_save_flags+local_irq_disable with

The combination of "local_save_flags" and "local_irq_disable" seems to be
equivalent to "local_irq_save" (see code snips below). Consequently, replace
occurrences of local_save_flags+local_irq_disable with local_irq_save.

* local_irq_save
#define raw_local_irq_save(flags) \
                do { (flags) = __raw_local_irq_save(); } while (0)

static inline unsigned long __raw_local_irq_save(void)
{
        unsigned long flags = __raw_local_save_flags();

        raw_local_irq_disable();

        return flags;
}

* local_save_flags
#define raw_local_save_flags(flags) \
                do { (flags) = __raw_local_save_flags(); } while (0)

Signed-off-by: Fernando Vazquez <fernando@intellilink.co.jp>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Fix sparse warnings in compat aout code
Andi Kleen [Tue, 26 Sep 2006 08:52:33 +0000 (10:52 +0200)] 
[PATCH] Fix sparse warnings in compat aout code

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Fix most sparse warnings in sys_ia32.c
Andi Kleen [Tue, 26 Sep 2006 08:52:33 +0000 (10:52 +0200)] 
[PATCH] Fix most sparse warnings in sys_ia32.c

Mostly by adding casts.

I didn't touch the "invalid access past ..." which are caused
by the sigset conversion.
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Add sparse annotations to quiet sparse in arch/x86_64/mm/fault.c
Andi Kleen [Tue, 26 Sep 2006 08:52:33 +0000 (10:52 +0200)] 
[PATCH] Add sparse annotations to quiet sparse in arch/x86_64/mm/fault.c

Fixes

linux/arch/x86_64/mm/fault.c:125:7: warning: incorrect type in argument 1 (different address spaces)
linux/arch/x86_64/mm/fault.c:125:7:    expected void [noderef] *<noident><asn:1>
linux/arch/x86_64/mm/fault.c:125:7:    got unsigned char *[assigned] instr
linux/arch/x86_64/mm/fault.c:163:8: warning: incorrect type in argument 1 (different address spaces)
linux/arch/x86_64/mm/fault.c:163:8:    expected void [noderef] *<noident><asn:1>
linux/arch/x86_64/mm/fault.c:163:8:    got unsigned char *[assigned] instr
linux/arch/x86_64/mm/fault.c:179:9: warning: incorrect type in argument 1 (different address spaces)
linux/arch/x86_64/mm/fault.c:179:9:    expected void [noderef] *<noident><asn:1>
linux/arch/x86_64/mm/fault.c:179:9:    got unsigned long *<noident>

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Add sparse annotation to vsyscall.c
Andi Kleen [Tue, 26 Sep 2006 08:52:33 +0000 (10:52 +0200)] 
[PATCH] Add sparse annotation to vsyscall.c

Fixes

linux/arch/x86_64/kernel/vsyscall.c:276:7: warning: constant 0x0f40000000000 is so big it is long
linux/arch/x86_64/kernel/vsyscall.c:80:14: warning: incorrect type in argument 1 (different address spaces)
linux/arch/x86_64/kernel/vsyscall.c:80:14:    expected void const volatile [noderef] *addr<asn:2>
linux/arch/x86_64/kernel/vsyscall.c:80:14:    got void *<noident>
linux/arch/x86_64/kernel/vsyscall.c:200:7: warning: incorrect type in assignment (different address spaces)
linux/arch/x86_64/kernel/vsyscall.c:200:7:    expected unsigned short [usertype] *map1
linux/arch/x86_64/kernel/vsyscall.c:200:7:    got void [noderef] *<asn:2>
linux/arch/x86_64/kernel/vsyscall.c:203:7: warning: incorrect type in assignment (different address spaces)
linux/arch/x86_64/kernel/vsyscall.c:203:7:    expected unsigned short [usertype] *map2
linux/arch/x86_64/kernel/vsyscall.c:203:7:    got void [noderef] *<asn:2>
linux/arch/x86_64/kernel/vsyscall.c:215:10: warning: incorrect type in argument 1 (different address spaces)
linux/arch/x86_64/kernel/vsyscall.c:215:10:    expected void volatile [noderef] *addr<asn:2>
linux/arch/x86_64/kernel/vsyscall.c:215:10:    got unsigned short [usertype] *map2
linux/arch/x86_64/kernel/vsyscall.c:217:10: warning: incorrect type in argument 1 (different address spaces)
linux/arch/x86_64/kernel/vsyscall.c:217:10:    expected void volatile [noderef] *addr<asn:2>
linux/arch/x86_64/kernel/vsyscall.c:217:10:    got unsigned short [usertype] *map1

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Move e820 map into e820.c
Andi Kleen [Tue, 26 Sep 2006 08:52:33 +0000 (10:52 +0200)] 
[PATCH] Move e820 map into e820.c

Minor cleanup. Keep setup.c free from unrelated clutter.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Clean up acpi_numa variable
Andi Kleen [Tue, 26 Sep 2006 08:52:33 +0000 (10:52 +0200)] 
[PATCH] Clean up acpi_numa variable

Move it into srat.c No need to clutter up setup.c for it

And remove use in setup.c completely - it only guarded a printk
which can be done unconditionally.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386/x86-64: Move acpi_disabled variables into acpi/boot.c
Andi Kleen [Tue, 26 Sep 2006 08:52:33 +0000 (10:52 +0200)] 
[PATCH] i386/x86-64: Move acpi_disabled variables into acpi/boot.c

Removes code duplication between i386/x86-64.

Not needed anymore in setup.c since early_param cleanup

Cc: len.brown@intel.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove need for early lockdep init
Andi Kleen [Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)] 
[PATCH] Remove need for early lockdep init

I think it was only needed for the printks and we can do them later.

I put in a single early_printk so that we know the kernel is alive
(early_printk doesn't need any locks)

This makes some things easier for initialization of unwind for
lockdep, which is needed by later patches.

cc: mingo@elte.hu

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Convert x86-64 to early param
Andi Kleen [Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)] 
[PATCH] Convert x86-64 to early param

Instead of hackish manual parsing

Requires earlier i386 patchkit, but also fixes i386 early_printk again.

I removed some obsolete really early parameters which didn't do anything useful.
Also made a few parameters that needed it early (mostly oops printing setup)

Also removed one panic check that wasn't visible without
early console anyways (the early console is now initialized after that
panic)

This cleans up a lot of code.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Replace i386 open-coded cmdline parsing with
Rusty Russell [Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)] 
[PATCH] i386: Replace i386 open-coded cmdline parsing with

This patch replaces the open-coded early commandline parsing
throughout the i386 boot code with the generic mechanism (already used
by ppc, powerpc, ia64 and s390).  The code was inconsistent with
whether it deletes the option from the cmdline or not, meaning some of
these will get passed through the environment into init.

This transformation is mainly mechanical, but there are some notable
parts:

1) Grammar: s/linux never set's it up/linux never sets it up/

2) Remove hacked-in earlyprintk= option scanning.  When someone
   actually implements CONFIG_EARLY_PRINTK, then they can use
   early_param().
[AK: actually it is implemented, but I'm adding the early_param it in the next
x86-64 patch]

3) Move declaration of generic_apic_probe() from setup.c into asm/apic.h

4) Various parameters now moved into their appropriate files (thanks Andi).

5) All parse functions which examine arg need to check for NULL,
   except one where it has subtle humor value.

AK: readded acpi_sci handling which was completely dropped
AK: moved some more variables into acpi/boot.c

Cc: len.brown@intel.com
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Allow early_param and identical __setup to exist
Rusty Russell [Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)] 
[PATCH] Allow early_param and identical __setup to exist

We currently assume that boot parameters which are handled by
early_param() will not overlap boot parameters handled by __setup: if
they do, behaviour is dependent on link order, usually meaning __setup
will not get called.

ACPI wants to use early_param("pci"), and pci uses __setup("pci="), so
we modify the core to let them coexist: "pci=noacpi" will now get
passed to both.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Use early CPU identify before early command line parsing
Andi Kleen [Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)] 
[PATCH] Use early CPU identify before early command line parsing

This makes it possible to modify CPU flags in command line
options without hacks.

And remove another copy in head64.c

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] remove lock prefix from is_at_popf() tests
Chuck Ebbert [Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)] 
[PATCH] remove lock prefix from is_at_popf() tests

The lock prefix will cause an exception when used with the
popf instruction, so no need to continue searching after it's
found.

Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] remove superflous BUG_ON's in nommu and gart
Muli Ben-Yehuda [Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)] 
[PATCH] remove superflous BUG_ON's in nommu and gart

There's no need to check for invalid DMA data direction in nommu and
gart since we do it in dma-mapping.h anyway before calling the
individual dma-ops.

Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Fix gdt table size in trampoline.S
Eric W. Biederman [Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)] 
[PATCH] Fix gdt table size in trampoline.S

Allows easier extension of the GDT by using the proper C symbol
for the size in the descriptor.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] annotate arch/x86_64/lib/*.S
Jan Beulich [Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)] 
[PATCH] annotate arch/x86_64/lib/*.S

Add unwind annotations to arch/x86_64/lib/*.S, and also use the macros
provided by linux/linkage.h where-ever possible.

Some of the alternative instructions handling needed to be adjusted so
that the replacement code would also have valid unwind information.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Clean up spin/rwlocks
Andi Kleen [Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)] 
[PATCH] i386: Clean up spin/rwlocks

- Inline spinlock strings into their inline functions
- Convert macros to typesafe inlines
- Replace some leftover __asm__ __volatile__s with asm volatile

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Clean up spin/rwlocks
Andi Kleen [Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)] 
[PATCH] Clean up spin/rwlocks

- Inline spinlock strings into their inline functions
- Convert macros to typesafe inlines
- Replace some leftover __asm__ __volatile__s with asm volatile

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] fix is_at_popf() for compat tasks
Chuck Ebbert [Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)] 
[PATCH] fix is_at_popf() for compat tasks

When testing for the REX instruction prefix, first check
for 32-bit mode because in compat mode the REX prefix is an
increment instruction.

Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Don't use lock section for mutexes and semaphores
Andi Kleen [Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)] 
[PATCH] Don't use lock section for mutexes and semaphores

Lock sections cannot be handled by the dwarf2 unwinder.

Disadvantage is a taken branch in the hot path.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Remove lock section support in semaphore.h
Andi Kleen [Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)] 
[PATCH] i386: Remove lock section support in semaphore.h

Lock sections don't work the new dwarf2 unwinder
This generates slightly smaller code. It adds one more taken
jump to the fast path.

Cc: jbeulich@novell.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Remove lock section support in rwsem.h
Andi Kleen [Tue, 26 Sep 2006 08:52:31 +0000 (10:52 +0200)] 
[PATCH] i386: Remove lock section support in rwsem.h

Lock sections don't work the new dwarf2 unwinder
This generates slightly smaller code. It adds one more taken
jump to the fast path.

Also move the trampolines into semaphore.S and add proper CFI
annotations.

Cc: jbeulich@novell.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Remove lock section support in mutex.h
Andi Kleen [Tue, 26 Sep 2006 08:52:31 +0000 (10:52 +0200)] 
[PATCH] i386: Remove lock section support in mutex.h

Lock sections don't work the new dwarf2 unwinder
This generates slightly smaller code. It adds one more taken
jump to the fast path.

Cc: jbeulich@novell.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Calgary IOMMU: save a bit of space in bus_info
Muli Ben-Yehuda [Tue, 26 Sep 2006 08:52:31 +0000 (10:52 +0200)] 
[PATCH] Calgary IOMMU: save a bit of space in bus_info

Make translation_disabled a uchar rather than an int

Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Jon Mason <jdmason@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Calgary IOMMU: calgary_init_one_nontraslated() can return void
Muli Ben-Yehuda [Tue, 26 Sep 2006 08:52:31 +0000 (10:52 +0200)] 
[PATCH] Calgary IOMMU: calgary_init_one_nontraslated() can return void

Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Jon Mason <jdmason@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Calgary IOMMU: fix reference counting of Calgary PCI devices
Muli Ben-Yehuda [Tue, 26 Sep 2006 08:52:31 +0000 (10:52 +0200)] 
[PATCH] Calgary IOMMU: fix reference counting of Calgary PCI devices

The pci_get_device() API decrements the reference count on the 'from'
parameter when it continues searching. Therefore, take a ref count on
Calgary bus when we initialize them in either translated or
non-translated mode.

Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Jon Mason <jdmason@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Calgary IOMMU: fix error path memleak in calgary_free_tar
Muli Ben-Yehuda [Tue, 26 Sep 2006 08:52:31 +0000 (10:52 +0200)] 
[PATCH] Calgary IOMMU: fix error path memleak in calgary_free_tar

We were freeing the iommu_table and leaking the bitmap pages. Also
rename it to calgary_free_bus, which is more accurate.

Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Jon Mason <jdmason@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Calgary IOMMU: break out of pci_find_device_reverse if dev not found
Muli Ben-Yehuda [Tue, 26 Sep 2006 08:52:31 +0000 (10:52 +0200)] 
[PATCH] Calgary IOMMU: break out of pci_find_device_reverse if dev not found

Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Jon Mason <jdmason@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Calgary IOMMU: consolidate per bus data structures
Muli Ben-Yehuda [Tue, 26 Sep 2006 08:52:31 +0000 (10:52 +0200)] 
[PATCH] Calgary IOMMU: consolidate per bus data structures

Move the tce_table_kva array, disabled bitmap and bus_to_phb array
into a new per bus 'struct calgary_bus_info'. Also slightly reorganize
build_tce_table and tce_table_setparms to avoid exporting bus_info to
tce.c.

Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Jon Mason <jdmason@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Calgary IOMMU: rearrange 'struct iommu_table' members
Muli Ben-Yehuda [Tue, 26 Sep 2006 08:52:31 +0000 (10:52 +0200)] 
[PATCH] Calgary IOMMU: rearrange 'struct iommu_table' members

Rearrange struct members loosely based on size for improved alignment
and to save a few bytes.

Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Jon Mason <jdmason@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Add stack documentation document from Keith Owens
Andi Kleen [Tue, 26 Sep 2006 08:52:31 +0000 (10:52 +0200)] 
[PATCH] Add stack documentation document from Keith Owens

Describes the stack organization on x86-64.

I changed it a bit and removed some obsolete information and the
questions.

Cc: kaos@sgi.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: initialize end-of-memory variables as early as possible
Jan Beulich [Tue, 26 Sep 2006 08:52:31 +0000 (10:52 +0200)] 
[PATCH] i386: initialize end-of-memory variables as early as possible

Move initialization of all memory end variables to as early as
possible, so that dependent code doesn't need to check whether these
variables have already been set.

Change the range check in kunmap_atomic to actually make use of this
so that the no-mapping-estabished path (under CONFIG_DEBUG_HIGHMEM)
gets used only when the address is inside the lowmem area (and BUG()
otherwise).

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] remove int_delivery_dest
Jan Beulich [Tue, 26 Sep 2006 08:52:31 +0000 (10:52 +0200)] 
[PATCH] remove int_delivery_dest

The genapic field and the accessor macro weren't used anywhere.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] initialize end of memory variables as early as possible
Jan Beulich [Tue, 26 Sep 2006 08:52:31 +0000 (10:52 +0200)] 
[PATCH] initialize end of memory variables as early as possible

While an earlier patch already did a small step into that direction,
this patch moves initialization of all memory end variables to as
early as possible, so that dependent code doesn't need to check
whether these variables have already been set.

Also, remove a misleading (perhaps just outdated) comment, and make
static a variable only used in a single file.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove obsolete CVS $Id$ from assembler files in arch/x86_64/kernel/*
Andi Kleen [Tue, 26 Sep 2006 08:52:31 +0000 (10:52 +0200)] 
[PATCH] Remove obsolete CVS $Id$ from assembler files in arch/x86_64/kernel/*

CVS hasn't been used for a long time for them.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] x86: Detect CFI support in the assembler at runtime
Andi Kleen [Tue, 26 Sep 2006 08:52:30 +0000 (10:52 +0200)] 
[PATCH] x86: Detect CFI support in the assembler at runtime

... instead of using a CONFIG option. The config option still controls
if the resulting executable actually has unwind information.

This is useful to prevent compilation errors when users select
CONFIG_STACK_UNWIND on old binutils and also allows to use
CFI in the future for non kernel debugging applications.

Cc: jbeulich@novell.com
Cc: sam@ravnborg.org
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Use BUILD_BUG_ON in apic.c build sanity checking
Andi Kleen [Tue, 26 Sep 2006 08:52:30 +0000 (10:52 +0200)] 
[PATCH] Use BUILD_BUG_ON in apic.c build sanity checking

Makes code a little shorter.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Clean up code style in mpparse.c ACPI code
Andi Kleen [Tue, 26 Sep 2006 08:52:30 +0000 (10:52 +0200)] 
[PATCH] i386: Clean up code style in mpparse.c ACPI code

Remove some unlinuxy ways to write function parameter definitions.
Remove some stray "return;"s

No functional change.

Cc: len.brown@intel.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Fix up some non linuxy style in ACPI functions in mpparse.c
Andi Kleen [Tue, 26 Sep 2006 08:52:30 +0000 (10:52 +0200)] 
[PATCH] Fix up some non linuxy style in ACPI functions in mpparse.c

No functional changes.

Cc: len.brown@intel.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove some unneeded ACPI externs in mpparse.c
Andi Kleen [Tue, 26 Sep 2006 08:52:30 +0000 (10:52 +0200)] 
[PATCH] Remove some unneeded ACPI externs in mpparse.c

They are not used in this file so remove them. i386 didn't have them either.

Cc: len.brown@intel.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove useless wrapper in mpparse.c code
Andi Kleen [Tue, 26 Sep 2006 08:52:30 +0000 (10:52 +0200)] 
[PATCH] Remove useless wrapper in mpparse.c code

It used to contain support code for NUMAQ, but that is long gone already
on 64bit.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Replace mp bus array with bitmap for bus not pci
Andi Kleen [Tue, 26 Sep 2006 08:52:30 +0000 (10:52 +0200)] 
[PATCH] Replace mp bus array with bitmap for bus not pci

Since we only support PCI and ISA legacy busses now there is no need to
have an full array with checking.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Move early chipset quirks out to new file
Andi Kleen [Tue, 26 Sep 2006 08:52:30 +0000 (10:52 +0200)] 
[PATCH] Move early chipset quirks out to new file

They did not really belong into io_apic.c. Move them into a new file
and clean it up a bit.

Also remove outdated ATI quirk that was obsolete,

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove MPS table APIC renumbering
Andi Kleen [Tue, 26 Sep 2006 08:52:30 +0000 (10:52 +0200)] 
[PATCH] Remove MPS table APIC renumbering

The MPS table specification says that the operating system should
renumber the IO-APICs following the table as needed.  However in
ACPI this is not allowed or neeeded and all x86-64 systems are ACPI
compliant.

The code was already disabled on some systems because it caused
problems there. Remove it completely now.

CC: mdomsch@dell.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] x86: AUX_DEVICE_INFO is one byte long, use 'movb'
Diego Calleja [Tue, 26 Sep 2006 08:52:30 +0000 (10:52 +0200)] 
[PATCH] x86: AUX_DEVICE_INFO is one byte long, use 'movb'

Bugzilla #6552 says:

"In arch/i386/boot/setup.S, movw is used instead of movb for PS/2 mouse
information, although it is unsigned char. This does not harm, because
the jmp instruction overwritten by movw is used before executing movw,
and never be used again"

I've no idea if this is a real bug or how it gets fixed, so I'm submitting
it for review instead of letting it die of boredom in bugzilla. Aditionally
to i386, I've changed x86-64, which mirrors the same code.

Credits to Yoshinori K. Okuji, who found the problem and suggested a fix.

Signed-off-by: Diego Calleja <diegocg@gmail.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Factor out common io apic routing entry access
Andi Kleen [Tue, 26 Sep 2006 08:52:30 +0000 (10:52 +0200)] 
[PATCH] i386: Factor out common io apic routing entry access

The IO APIC code had lots of duplicated code to read/write 64bit
routing entries into the IO-APIC. Factor this out int common read/write
functions

In a few cases the IO APIC lock is taken more often now, but this
isn't a problem because it's all initialization/shutdown only
slow path code.

Similar to earlier x86-64 patch.

Includes a fix by Jiri Slaby for a mistake that broke resume

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Factor out common io apic routing entry access
Andi Kleen [Tue, 26 Sep 2006 08:52:30 +0000 (10:52 +0200)] 
[PATCH] Factor out common io apic routing entry access

The IO APIC code had lots of duplicated code to read/write 64bit
routing entries into the IO-APIC. Factor this out int common read/write
functions

In a few cases the IO APIC lock is taken more often now, but this
isn't a problem because it's all initialization/shutdown only
slow path code.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386/x86-64: Remove obsolete sanity check in mptable parsing
Andi Kleen [Tue, 26 Sep 2006 08:52:30 +0000 (10:52 +0200)] 
[PATCH] i386/x86-64: Remove obsolete sanity check in mptable parsing

It apparently has never triggered in many years.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove obsolete PIC mode
Andi Kleen [Tue, 26 Sep 2006 08:52:30 +0000 (10:52 +0200)] 
[PATCH] Remove obsolete PIC mode

PIC mode is an outdated way to drive the APICs that was used on
some early MP boards. It is not supported in the ACPI model.

It is unlikely to be ever configured by any x86-64 system

Remove it thus.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove leftover MCE/EISA support
Andi Kleen [Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)] 
[PATCH] Remove leftover MCE/EISA support

No 64bit EISA or Microchannel systems ever. Remove the left over code
in the IO-APIC driver and the mptable parser

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove pirq overwrite support
Andi Kleen [Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)] 
[PATCH] Remove pirq overwrite support

This was an old workaround for broken MP-BIOS. The user could
specify overwrites on the command line.

I've never seen it being used for anything on 64bit. So get
rid of it for now.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Add some comments to entry.S
Andi Kleen [Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)] 
[PATCH] Add some comments to entry.S

And remove some old obsolete ones.
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Minor fixes & cleanup to tlb flush
Andi Kleen [Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)] 
[PATCH] i386: Minor fixes & cleanup to tlb flush

(based on x86-64 changes)
- Add a proper memory clobber to invlpg
- Remove an unused extern

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Clean up and minor fixes to TLB flush
Andi Kleen [Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)] 
[PATCH] Clean up and minor fixes to TLB flush

- Convert CR* accesses to dedicated inline functions and rewrite
the rest as C inlines
- Don't do a double flush for global flushes (pointed out by Zach Amsden)
This was a bug workaround for old CPUs that don't do 64bit and is obsolete.
- Add a proper memory clobber to invlpg
- Remove an unused extern

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove old "focus disabled" chipset errata workaround
Andi Kleen [Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)] 
[PATCH] Remove old "focus disabled" chipset errata workaround

The new systems already use focus disabled and the comment was
completely outdated.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove apic mismatch counter
Andi Kleen [Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)] 
[PATCH] Remove apic mismatch counter

Nobody has been setting the mismatch counter and the ifdef was never
set so remove it.
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove all ifdefs for local/io apic
Andi Kleen [Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)] 
[PATCH] Remove all ifdefs for local/io apic

IO-APIC or local APIC can only be disabled at runtime anyways and
Kconfig has forced these options on for a long time now.

The Kconfigs are kept only now for the benefit of the shared acpi
boot.c code.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Add some comments what tce.c actually does
Andi Kleen [Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)] 
[PATCH] Add some comments what tce.c actually does

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove leftover CVS Id in thunk.S
Andi Kleen [Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)] 
[PATCH] Remove leftover CVS Id in thunk.S

And move the comment to a proper place.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Redo semaphore and rwlock assembly helpers
Andi Kleen [Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)] 
[PATCH] i386: Redo semaphore and rwlock assembly helpers

- Move them to a pure assembly file. Previously they were in
a C file that only consisted of inline assembly. Doing it in pure
assembler is much nicer.
- Add a frame.i include with FRAME/ENDFRAME macros to easily
add frame pointers to assembly functions
- Add dwarf2 annotation to them so that the new dwarf2 unwinder
doesn't get stuck on them
- Random cleanups

Includes feedback from Jan Beulich and a UML build fix from Andrew
Morton.

Cc: jbeulich@novell.com
Cc: jdike@addtoit.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: add alternative-asm.h to allow LOCK_PREFIX replacement in .S files
Andi Kleen [Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)] 
[PATCH] i386: add alternative-asm.h to allow LOCK_PREFIX replacement in .S files

LOCK_PREFIX is replaced by nops on UP systems, so it has to be a special
macro.  Previously this was only possible from C. Allow it for pure
assembly files too. Similar to earlier x86-64 patch.
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Add proper alignment to ENTRY
Andi Kleen [Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)] 
[PATCH] Add proper alignment to ENTRY

Previously it didn't align. Use the same one as the C compiler
in blended mode, which is good for K8 and Core2 and doesn't hurt
on P4.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Remove const case for rwlocks
Andi Kleen [Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)] 
[PATCH] i386: Remove const case for rwlocks

rwlocks are now out of line, so it near never triggers.  Also it was
incompatible with the new dwarf2 unwinder because it had unannotiatable
push/pops.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Clean up read write lock assembly
Andi Kleen [Tue, 26 Sep 2006 08:52:28 +0000 (10:52 +0200)] 
[PATCH] Clean up read write lock assembly

- Move the slow path fallbacks to their own assembly files
This makes them much easier to read and is needed for the next change.
- Add CFI annotations for unwinding (XXX need review)
- Remove constant case which can never happen with out of line spinlocks
- Use patchable LOCK prefixes
- Don't use lock sections anymore for inline code because they can't
be expressed by the unwinder (this adds one taken jump to the lock
fast path)

Cc: jbeulich@novell.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Support patchable lock prefix for pure assembly files
Andi Kleen [Tue, 26 Sep 2006 08:52:28 +0000 (10:52 +0200)] 
[PATCH] Support patchable lock prefix for pure assembly files

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Document backtracer selection options
Andi Kleen [Tue, 26 Sep 2006 08:52:28 +0000 (10:52 +0200)] 
[PATCH] Document backtracer selection options

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Simplify profile_pc on x86-64
Andi Kleen [Tue, 26 Sep 2006 08:52:28 +0000 (10:52 +0200)] 
[PATCH] Simplify profile_pc on x86-64

Use knowledge about EFLAGS layout (bits 22:63 are always 0) to distingush
EFLAGS word and kernel address in the spin lock stack frame.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Account spinlocks to the caller during profiling for !FP kernels
Andi Kleen [Tue, 26 Sep 2006 08:52:28 +0000 (10:52 +0200)] 
[PATCH] i386: Account spinlocks to the caller during profiling for !FP kernels

This ports the algorithm from x86-64 (with improvements) to i386.
Previously this only worked for frame pointer enabled kernels.
But spinlocks have a very simple stack frame that can be manually
analyzed. Do this.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386/x86-64: Don't randomize stack top when no randomization personality...
Andi Kleen [Tue, 26 Sep 2006 08:52:28 +0000 (10:52 +0200)] 
[PATCH] i386/x86-64: Don't randomize stack top when no randomization personality is set

Based on patch from Frank van Maarseveen <frankvm@frankvm.com>, but
extended.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] A few trivial spelling and grammar fixes
Adam Henley [Tue, 26 Sep 2006 08:52:28 +0000 (10:52 +0200)] 
[PATCH] A few trivial spelling and grammar fixes

A few trivial spelling and grammar mistakes picked up in
"arch/x86_64/aperture.c", "arch/x86_64/crash.c" and
"arch/x86_64/apic.c". I think all are correct fixes but am ever aware
of my fallibility :o) This is my first patch submission so all
feedback is appreciated, esp. WRT CCing to Linus, Andi and
trivial@kernel.org, is this correct? And which is the most appropriate
kernel version to diff against? If any.

Should apply cleanly to 2.6.18-rc1

Signed-off-by: Adam Henley <adamazing@gmail.com>
Signed-off-by: Andi Kleen <ak@suse.de>
-  adam

18 years ago[PATCH] Don't print virtual address in HPET initialization
Andi Kleen [Tue, 26 Sep 2006 08:52:28 +0000 (10:52 +0200)] 
[PATCH] Don't print virtual address in HPET initialization

virtual addresses don't belong into kernel logs for non debugging

Cc: clemens@ladisch.de
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] x86-64 TIF flags for debug regs and io bitmap in ctxsw
Stephane Eranian [Tue, 26 Sep 2006 08:52:28 +0000 (10:52 +0200)] 
[PATCH] x86-64 TIF flags for debug regs and io bitmap in ctxsw

Hello,

Following my discussion with Andi. Here is a patch that introduces
two new TIF flags to simplify the context switch code in __switch_to().
The idea is to minimize the number of cache lines accessed in the common
case, i.e., when neither the debug registers nor the I/O bitmap are used.

This patch covers the x86-64 modifications. A patch for i386 follows.

Changelog:
- add TIF_DEBUG to track when debug registers are active
- add TIF_IO_BITMAP to track when I/O bitmap is used
- modify __switch_to() to use the new TIF flags

<signed-off-by>: eranian@hpl.hp.com

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Clean up asm/smp.h includes
Andi Kleen [Tue, 26 Sep 2006 08:52:28 +0000 (10:52 +0200)] 
[PATCH] Clean up asm/smp.h includes

No need to include it from entry.S
Drop all the #ifdef __ASSEMBLY__

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] x86: Add portable getcpu call
Andi Kleen [Tue, 26 Sep 2006 08:52:28 +0000 (10:52 +0200)] 
[PATCH] x86: Add portable getcpu call

For NUMA optimization and some other algorithms it is useful to have a fast
to get the current CPU and node numbers in user space.

x86-64 added a fast way to do this in a vsyscall. This adds a generic
syscall for other architectures to make it a generic portable facility.

I expect some of them will also implement it as a faster vsyscall.

The cache is an optimization for the x86-64 vsyscall optimization. Since
what the syscall returns is an approximation anyways and user space
often wants very fast results it can be cached for some time.  The norma
methods to get this information in user space are relatively slow

The vsyscall is in a better position to manage the cache because it has direct
access to a fast time stamp (jiffies). For the generic syscall optimization
it doesn't help much, but enforce a valid argument to keep programs
portable

I only added an i386 syscall entry for now. Other architectures can follow
as needed.

AK: Also added some cleanups from Andrew Morton

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Add the vgetcpu vsyscall
Vojtech Pavlik [Tue, 26 Sep 2006 08:52:28 +0000 (10:52 +0200)] 
[PATCH] Add the vgetcpu vsyscall

This patch adds a vgetcpu vsyscall, which depending on the CPU RDTSCP
capability uses either the RDTSCP or CPUID to obtain a CPU and node
numbers and pass them to the program.

AK: Lots of changes over Vojtech's original code:
Better prototype for vgetcpu()
It's better to pass the cpu / node numbers as separate arguments
to avoid mistakes when going from SMP to NUMA.
Also add a fast time stamp based cache using a user supplied
argument to speed things more up.
Use fast method from Chuck Ebbert to retrieve node/cpu from
GDT limit instead of CPUID
Made sure RDTSCP init is always executed after node is known.
Drop printk

Signed-off-by: Vojtech Pavlik <vojtech@suse.cz>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Add initalization of the RDTSCP auxilliary values
Vojtech Pavlik [Tue, 26 Sep 2006 08:52:28 +0000 (10:52 +0200)] 
[PATCH] Add initalization of the RDTSCP auxilliary values

This patch adds initalization of the RDTSCP auxilliary values to CPU numbers
to time.c. If RDTSCP is available, the MSRs are written with the respective
values. It can be later used to initalize per-cpu timekeeping variables.

AK: Some cleanups. Move externs into headers and fix CPU hotplug.

Signed-off-by: Vojtech Pavlik <vojtech@suse.cz>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Add macros for rdtscp
Vojtech Pavlik [Tue, 26 Sep 2006 08:52:28 +0000 (10:52 +0200)] 
[PATCH] Add macros for rdtscp

This patch adds macros for reading tsc via the RDTSCP instruction, as well
as writing the auxilliary MSR read by RDTSCP to msr.h

[AK: changed rdtscp definition for old binutils]

Signed-off-by: Vojtech Pavlik <vojtech@suse.cz>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] x86: i386/x86-64 Add nmi watchdog support for new Intel CPUs
Venkatesh Pallipadi [Tue, 26 Sep 2006 08:52:27 +0000 (10:52 +0200)] 
[PATCH] x86: i386/x86-64 Add nmi watchdog support for new Intel CPUs

AK: This redoes the changes I temporarily reverted.

Intel now has support for Architectural Performance Monitoring Counters
( Refer to IA-32 Intel Architecture Software Developer's Manual
http://www.intel.com/design/pentium4/manuals/253669.htm ). This
feature is present starting from Intel Core Duo and Intel Core Solo processors.

What this means is, the performance monitoring counters and some performance
monitoring events are now defined in an architectural way (using cpuid).
And there will be no need to check for family/model etc for these architectural
events.

Below is the patch to use this performance counters in nmi watchdog driver.
Patch handles both i386 and x86-64 kernels.

Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Enable NMI watchdog by default
Andi Kleen [Tue, 26 Sep 2006 08:52:27 +0000 (10:52 +0200)] 
[PATCH] i386: Enable NMI watchdog by default

I've had good experiences with having this on by default on x86-64.
It turns nasty hangs into easier to debug oopses.

Enable the local APIC wdog by default for systems newer than 2004.

This comes from a strange compromise: according to arjan the reason
it was off by default was some old IBM systems that corrupted
registered when NMI happened in SMI. Can't remember more specific,
but >= 2004 should avoid these. It's probably overly broad
because most older systems should be ok (and the really old systems
won't be supported by the local apic watchdog anyways)

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Kdump i386 nmi event notification fix
Vivek Goyal [Tue, 26 Sep 2006 08:52:27 +0000 (10:52 +0200)] 
[PATCH] i386: Kdump i386 nmi event notification fix

After a crash we should wait for NMI IPI event and not for external NMI or
NMI watchdog tick.

Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>