GitHub/LineageOS/android_kernel_motorola_exynos9610.git
18 years ago[PATCH] i386: Do better early exception handlers
Chuck Ebbert [Tue, 26 Sep 2006 08:52:39 +0000 (10:52 +0200)]
[PATCH] i386: Do better early exception handlers

Add early i386 fault handlers with debug information for common faults.
Handles:

        divide error
        invalid opcode
        protection fault
        page fault

Also adds code to detect early recursive/multiple faults and halt the
system when they happen (taken from x86_64.)

Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Cc: Andi Kleen <ak@muc.de>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
18 years ago[PATCH] i386: Allow a kernel not to be in ring 0
Rusty Russell [Tue, 26 Sep 2006 08:52:39 +0000 (10:52 +0200)]
[PATCH] i386: Allow a kernel not to be in ring 0

We allow for the fact that the guest kernel may not run in ring 0.  This
requires some abstraction in a few places when setting %cs or checking
privilege level (user vs kernel).

This is Chris' [RFC PATCH 15/33] move segment checks to subarch, except rather
than using #define USER_MODE_MASK which depends on a config option, we use
Zach's more flexible approach of assuming ring 3 == userspace.  I also used
"get_kernel_rpl()" over "get_kernel_cs()" because I think it reads better in
the code...

1) Remove the hardcoded 3 and introduce #define SEGMENT_RPL_MASK 3 2) Add a
get_kernel_rpl() macro, and don't assume it's zero.

And:

Clean up of patch for letting kernel run other than ring 0:

a. Add some comments about the SEGMENT_IS_*_CODE() macros.
b. Add a USER_RPL macro.  (Code was comparing a value to a mask
   in some places and to the magic number 3 in other places.)
c. Add macros for table indicator field and use them.
d. Change the entry.S tests for LDT stack segment to use the macros

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Zachary Amsden <zach@vmware.com>
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Abstract sensitive instructions
Rusty Russell [Tue, 26 Sep 2006 08:52:39 +0000 (10:52 +0200)]
[PATCH] i386: Abstract sensitive instructions

Abstract sensitive instructions in assembler code, replacing them with macros
(which currently are #defined to the native versions).  We use long names:
assembler is case-insensitive, so if something goes wrong and macros do not
expand, it would assemble anyway.

Resulting object files are exactly the same as before.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Fix a PDA warning uncovered by the new type checking
Andi Kleen [Tue, 26 Sep 2006 08:52:39 +0000 (10:52 +0200)]
[PATCH] Fix a PDA warning uncovered by the new type checking

Fix
linux/arch/x86_64/kernel/process.c: In function __switch_to:
linux/arch/x86_64/kernel/process.c:626: warning: assignment makes integer from pointer without a cast

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Type checking for write_pda()
Jeremy Fitzhardinge [Tue, 26 Sep 2006 08:52:39 +0000 (10:52 +0200)]
[PATCH] Type checking for write_pda()

I just added type checking for assignments the PDA in the i386 PDA code.
Here's the x86-64 equivalent.  (Obviously this doesn't contain the latest
x86-64 PDA change.)

Signed-off-by: Jeremy Fitzhardinge <jeremy@goop.org>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Use %c instead of %P modifier in pda access
Andi Kleen [Tue, 26 Sep 2006 08:52:39 +0000 (10:52 +0200)]
[PATCH] Use %c instead of %P modifier in pda access

Apparently that is the more official way to get numbers without $ in inline
assembly

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Fix a irqcount comment in entry.S
Andi Kleen [Tue, 26 Sep 2006 08:52:39 +0000 (10:52 +0200)]
[PATCH] Fix a irqcount comment in entry.S

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Add the -fstack-protector option to the CFLAGS
Arjan van de Ven [Tue, 26 Sep 2006 08:52:39 +0000 (10:52 +0200)]
[PATCH] Add the -fstack-protector option to the CFLAGS

Add a feature check that checks that the gcc compiler has stack-protector
support and has the bugfix for PR28281 to make this work in kernel mode.
The easiest solution I could find was to have a shell script in scripts/
to do the detection; if needed we can make this fancier in the future
without making the makefile too complex.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Andi Kleen <ak@suse.de>
CC: Andi Kleen <ak@suse.de>
CC: Sam Ravnborg <sam@ravnborg.org>
18 years ago[PATCH] Add the __stack_chk_fail() function
Arjan van de Ven [Tue, 26 Sep 2006 08:52:39 +0000 (10:52 +0200)]
[PATCH] Add the __stack_chk_fail() function

GCC emits a call to a __stack_chk_fail() function when the stack canary is
not matching the expected value.

Since this is a bad security issue; lets panic the kernel rather than limping
along; the kernel really can't be trusted anymore when this happens.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andi Kleen <ak@suse.de>
CC: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Add the canary field to the PDA area and the task struct
Arjan van de Ven [Tue, 26 Sep 2006 08:52:38 +0000 (10:52 +0200)]
[PATCH] Add the canary field to the PDA area and the task struct

This patch adds the per thread cookie field to the task struct and the PDA.
Also it makes sure that the PDA value gets the new cookie value at context
switch, and that a new task gets a new cookie at task creation time.

Signed-off-by: Arjan van Ven <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andi Kleen <ak@suse.de>
CC: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Add the Kconfig option for the stackprotector feature
Arjan van de Ven [Tue, 26 Sep 2006 08:52:38 +0000 (10:52 +0200)]
[PATCH] Add the Kconfig option for the stackprotector feature

This patch adds the config options for -fstack-protector.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andi Kleen <ak@suse.de>
CC: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Add comments to the PDA structure to annotate offsets
Arjan van de Ven [Tue, 26 Sep 2006 08:52:38 +0000 (10:52 +0200)]
[PATCH] Add comments to the PDA structure to annotate offsets

Change the comments in the pda structure to make the first fields to have
their offset documented and to have the comments aligned.
The stack protector series needs a field at offset 40 (gcc ABI); annotate
upto 40 for that reason.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andi Kleen <ak@suse.de>
CC: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Document my tree in Documentation/HOWTO
Andi Kleen [Tue, 26 Sep 2006 08:52:38 +0000 (10:52 +0200)]
[PATCH] Document my tree in Documentation/HOWTO

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Don't use kernel_text_address in oops context
Andi Kleen [Tue, 26 Sep 2006 08:52:38 +0000 (10:52 +0200)]
[PATCH] Don't use kernel_text_address in oops context

Because it can take spinlocks.

Suggested by Mathieu Desnoyers

Cc: Mathieu Desnoyers <compudj@krystal.dyndns.org>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Avoid overwriting the current pgd (V4, i386)
Magnus Damm [Tue, 26 Sep 2006 08:52:38 +0000 (10:52 +0200)]
[PATCH] i386: Avoid overwriting the current pgd (V4, i386)

kexec: Avoid overwriting the current pgd (V4, i386)

This patch upgrades the i386-specific kexec code to avoid overwriting the
current pgd. Overwriting the current pgd is bad when CONFIG_CRASH_DUMP is used
to start a secondary kernel that dumps the memory of the previous kernel.

The code introduces a new set of page tables. These tables are used to provide
an executable identity mapping without overwriting the current pgd.

Signed-off-by: Magnus Damm <magnus@valinux.co.jp>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Avoid overwriting the current pgd (V4, x86_64)
Magnus Damm [Tue, 26 Sep 2006 08:52:38 +0000 (10:52 +0200)]
[PATCH] Avoid overwriting the current pgd (V4, x86_64)

kexec: Avoid overwriting the current pgd (V4, x86_64)

This patch upgrades the x86_64-specific kexec code to avoid overwriting the
current pgd. Overwriting the current pgd is bad when CONFIG_CRASH_DUMP is used
to start a secondary kernel that dumps the memory of the previous kernel.

The code introduces a new set of page tables. These tables are used to provide
an executable identity mapping without overwriting the current pgd.

Signed-off-by: Magnus Damm <magnus@valinux.co.jp>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove most of the special cases for the debug IST stack
Keith Owens [Tue, 26 Sep 2006 08:52:38 +0000 (10:52 +0200)]
[PATCH] Remove most of the special cases for the debug IST stack

Remove most of the special cases for the debug IST stack.  This is a
follow on clean up patch, it requires the bug fix patch that adds
orig_ist.

Signed-off-by: Keith Owens <kaos@ocs.com.au>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Fix the EDD code misparsing the command line
H. Peter Anvin [Tue, 26 Sep 2006 08:52:38 +0000 (10:52 +0200)]
[PATCH] i386: Fix the EDD code misparsing the command line

The EDD code would scan the command line as a fixed array, without
taking account of either whitespace, null-termination, the old
command-line protocol, late overrides early, or the fact that the
command line may not be reachable from INITSEG.

This should fix those problems, and enable us to use a longer command
line.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Optimize PDA accesses slightly
Andi Kleen [Tue, 26 Sep 2006 08:52:38 +0000 (10:52 +0200)]
[PATCH] Optimize PDA accesses slightly

Based on a idea by Jeremy Fitzhardinge:

Replace the volatiles and memory clobbers in the PDA access with
telling gcc about access to a proxy PDA structure that doesn't
actually exist. But the dummy accesses give a defined ordering for
read/write accesses.

Also add some memory barriers to the early GS initialization to
make sure no PDA access is moved before it.

Advantage is some .text savings (probably most from better
code for accessing "current"):

   text    data     bss     dec     hex filename
4845647 1223688  615864 6685199  66020f vmlinux
4837780 1223688  615864 6677332  65e354 vmlinux-pda

1.2% smaller code

Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] x86: Remove incorrect comment about ACPI e820 entries
Andi Kleen [Tue, 26 Sep 2006 08:52:38 +0000 (10:52 +0200)]
[PATCH] x86: Remove incorrect comment about ACPI e820 entries

They cannot be actually freed because the FACS table has a
shared-with-the-BIOS lock.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Put .note.* sections into a PT_NOTE segment
Ian Campbell [Tue, 26 Sep 2006 08:52:38 +0000 (10:52 +0200)]
[PATCH] Put .note.* sections into a PT_NOTE segment

This patch updates x86_64 linker script to pack any .note.* sections
into a PT_NOTE segment in the output file.

To do this, we tell ld that we need a PT_NOTE segment.  This requires
us to start explicitly mapping sections to segments, so we also need
to explicitly create PT_LOAD segments for text and data, and map the
sections to them appropriately.  Fortunately, each section will
default to its previous section's segment, so it doesn't take many
changes to vmlinux.lds.S.

The corresponding change is already made for i386 in -mm and I'd like
this patch to join it. The section to segment mappings do change as do
the segment flags so some time in -mm would be good for that reason as
well, just in case.

In particular .data and .bss move from the text segment to the data
segment and .data.cacheline_aligned .data.read_mostly are put in the
data segment instead of a separate one.

I think that it would be possible to exactly match the existing section
to segment mapping and flags but it would be a more intrusive change and
I'm not sure there is a reason for the existing layout other than it is
what you get by default if you don't explicitly specify something else.
If there is a reason for the existing layout then I will of course make
the more intrusive change. If there is no reason we could probably drop
the executable or writable flags from some segments but I don't know how
much attention is paid to them anyway so it might not be worth the
effort.

The vsyscall related sections need to go in a different segment to the
normal data segment and so I invented a "user" segment to contain them.
I believe this should appear to be another data segment as far as the
kernel is concerned so the flags are setup accordingly.

The notes will be used in the Xen paravirt_ops backend to provide
additional information to the domain builder. I am in the process of
converting the xen-unstable kernels and tools over to this scheme at the
moment to support this in the future.

It has been suggested to me that the notes segment should have flags 0
(i.e. not readable) since it is only used by the loader and is not used
at runtime. For now I went with a readable segment since that is what
the i386 patch uses.

AK: dropped NOTES addition right now because the needed infrastructure
for that is not merged yet

Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Reload CS when startup_64 is used.
Eric W. Biederman [Tue, 26 Sep 2006 08:52:38 +0000 (10:52 +0200)]
[PATCH] Reload CS when startup_64 is used.

In long mode the %cs is largely a relic.  However there are a few cases
like iret where it matters that we have a valid value.  Without this
patch it is possible to enter the kernel in startup_64 without setting
%cs to a valid value.  With this patch we don't care what %cs value
we enter the kernel with, so long as the cs shadow register indicates
it is a privileged code segment.

Thanks to Magnus Damm for finding this problem and posting the
first workable patch.  I have moved the jump to set %cs down a
few instructions so we don't need to take an extra jump.  Which
keeps the code simpler.

Signed-of-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] optimize hweight64 for x86_64
Andi Kleen [Tue, 26 Sep 2006 08:52:38 +0000 (10:52 +0200)]
[PATCH] optimize hweight64 for x86_64

Based on patch from David Rientjes <rientjes@google.com>, but
changed by AK.

Optimizes the 64-bit hamming weight for x86_64 processors assuming they
have fast multiplication.  Uses five fewer bitops than the generic
hweight64.  Benchmark on one EMT64 showed ~25% speedup with 2^24
consecutive calls.

Define a new ARCH_HAS_FAST_MULTIPLIER that can be set by other
architectures that can also multiply fast.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove non e820 fallbacks in high level code
Andi Kleen [Tue, 26 Sep 2006 08:52:37 +0000 (10:52 +0200)]
[PATCH] Remove non e820 fallbacks in high level code

Drop support for non e820 BIOS calls to get the memory map.

The boot assembler code still has some support, but not the C code now.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Fix boot code head.S warning
Paolo 'Blaisorblade' Giarrusso [Tue, 26 Sep 2006 08:52:37 +0000 (10:52 +0200)]
[PATCH] Fix boot code head.S warning

When compiling a 64-bit kernel on an Ubuntu 6.06 32bit system (whose GCC is also
a cross-compiler for x86_64) I've seen that head.o is compiled as a 64-bit file
(while it should not) and ld complaining about this during linking:
[AK: it happens on all systems with new binutils]

ld: warning: i386:x86-64 architecture of input file
`arch/x86_64/boot/compressed/head.o' is incompatible with i386 output

I've verified that removing -m64 from compilation flags to turn
"-m64 -traditional -m32" into "-traditional -m32" fixes the issue.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Add a missing check for irq flags tracing in NMI
Andi Kleen [Tue, 26 Sep 2006 08:52:37 +0000 (10:52 +0200)]
[PATCH] Add a missing check for irq flags tracing in NMI

NMIs are not supposed to track the irq flags, but TRACE_IRQS_IRETQ
did it anyways. Add a check.

Cc: mingo@elte.hu
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Fix coding style and output of the mptable parser
Andi Kleen [Tue, 26 Sep 2006 08:52:37 +0000 (10:52 +0200)]
[PATCH] Fix coding style and output of the mptable parser

Give the printks a consistent prefix.
Add some missing white space.

Cc: len.brown@intel.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove some cruft in apic id checking during processor setup
Andi Kleen [Tue, 26 Sep 2006 08:52:37 +0000 (10:52 +0200)]
[PATCH] Remove some cruft in apic id checking during processor setup

- Remove a define that was used only once
- Remove the too large APIC ID check because we always support
the full 8bit range of APICs.
- Restructure code a bit to be simpler.

Cc: len.brown@intel.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove APIC version/cpu capability mpparse checking/printing
Andi Kleen [Tue, 26 Sep 2006 08:52:37 +0000 (10:52 +0200)]
[PATCH] Remove APIC version/cpu capability mpparse checking/printing

ACPI went to great trouble to get the APIC version and CPU capabilities
of different CPUs before passing them to the mpparser. But all
that data was used was to print it out.  Actually it even faked some data
based on the boot cpu, not on the actual CPU being booted.

Remove all this code because it's not needed.

Cc: len.brown@intel.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Use proper accessors to change PSE bits in change_page_attr()
Andi Kleen [Tue, 26 Sep 2006 08:52:37 +0000 (10:52 +0200)]
[PATCH] Use proper accessors to change PSE bits in change_page_attr()

Use normal pte accessors in change_page_attr() to access the PSE
bits.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Fix pte_exec/mkexec and use it in change_page_attr()
Andi Kleen [Tue, 26 Sep 2006 08:52:37 +0000 (10:52 +0200)]
[PATCH] Fix pte_exec/mkexec and use it in change_page_attr()

Fix the pte_exec/mkexec page table accessor functions to really
use the NX bit. Previously they only checked the USER bit, but
weren't actually used for anything.

Then use them in change_page_attr() to manipulate the NX bit
properly.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Remove bogus warning from early_ioremap
Andi Kleen [Tue, 26 Sep 2006 08:52:37 +0000 (10:52 +0200)]
[PATCH] Remove bogus warning from early_ioremap

It is correct for its only caller right now, but not for possible
future others.

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

And replace all users with ordinary smp_processor_id.  The function
was originally added to get some basic oops information out even
if the GS register was corrupted. However that didn't
work for some anymore because printk is needed to print the oops
and it uses smp_processor_id() already. Also GS register corruptions
are not particularly common anymore.

This also helps the Xen port which would otherwise need to
do this in a special way because it can't access the local APIC.

Cc: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Detect clock skew during suspend
Rafael J. Wysocki [Tue, 26 Sep 2006 08:52:37 +0000 (10:52 +0200)]
[PATCH] Detect clock skew during suspend

Detect the situations in which the time after a resume from disk would
be earlier than the time before the suspend and prevent them from
happening on x86_64.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: annotate FIX_STACK() and the rest of nmi()
Chuck Ebbert [Tue, 26 Sep 2006 08:52:37 +0000 (10:52 +0200)]
[PATCH] i386: annotate FIX_STACK() and the rest of nmi()

In i386's entry.S, FIX_STACK() needs annotation because it
replaces the stack pointer.  And the rest of nmi() needs
annotation in order to compile with these new annotations.

Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] make numa_emulation() __init
Andrew Morton [Tue, 26 Sep 2006 08:52:37 +0000 (10:52 +0200)]
[PATCH] make numa_emulation() __init

Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Move compiler check for modules to ia64 only
Andi Kleen [Tue, 26 Sep 2006 08:52:37 +0000 (10:52 +0200)]
[PATCH] Move compiler check for modules to ia64 only

Apparently IA64 needs it, but i386/x86-64 don't anymore
since gcc 2.95 support was dropped.  Nobody else on linux-arch
requested keeping it generically

Cc: tony.luck@intel.com
Cc: kaos@sgi.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Don't force reserve the 640k-1MB range
Andi Kleen [Tue, 26 Sep 2006 08:52:36 +0000 (10:52 +0200)]
[PATCH] Don't force reserve the 640k-1MB range

From i386 x86-64 inherited code to force reserve the 640k-1MB area.
That was needed on some old systems.

But we generally trust the e820 map to be correct on 64bit systems
and mark all areas that are not memory correctly.

This patch will allow to use the real memory in there.

Or rather the only way to find out if it's still needed is to
try. So far I'm optimistic.

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] x86: remove config.h includes from asm-i386 & asm-x86_64
Dave Jones [Tue, 26 Sep 2006 08:52:36 +0000 (10:52 +0200)]
[PATCH] x86: remove config.h includes from asm-i386 & asm-x86_64

This is now automatically included by kbuild.

Signed-off-by: Dave Jones <davej@redhat.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Disallow kprobes on NMI handlers
Fernando Luis Vázquez Cao [Tue, 26 Sep 2006 08:52:36 +0000 (10:52 +0200)]
[PATCH] i386: Disallow kprobes on NMI handlers

A kprobe executes IRET early and that could cause NMI recursion and stack
corruption.

Note: This problem was originally spotted and solved by Andi Kleen in the
x86_64 architecture. This patch is an adaption of his patch for i386.

AK: Merged with current code which was a bit different.
AK: Removed printk in nmi handler that shouldn't be there in the first time
AK: Added missing include.
AK: added KPROBES_END

Signed-off-by: Fernando Vazquez <fernando@intellilink.co.jp>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Disallow kprobes on NMI handlers
Fernando Luis Vázquez Cao [Tue, 26 Sep 2006 08:52:36 +0000 (10:52 +0200)]
[PATCH] i386: Disallow kprobes on NMI handlers

A kprobe executes IRET early and that could cause NMI recursion and stack
corruption.

Note: This problem was originally spotted by Andi Kleen. This patch
      adds fixes not included in his original patch.
[AK: Jan Beulich originally discovered these classes of bugs]

Signed-off-by: Fernando Vazquez <fernando@intellilink.co.jp>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: mark cpu cache functions as __cpuinit
Magnus Damm [Tue, 26 Sep 2006 08:52:36 +0000 (10:52 +0200)]
[PATCH] i386: mark cpu cache functions as __cpuinit

Mark i386-specific cpu cache functions as __cpuinit. They are all
only called from arch/i386/common.c:display_cache_info() that already is
marked as __cpuinit.

Signed-off-by: Magnus Damm <magnus@valinux.co.jp>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: mark cpu identify functions as __cpuinit
Magnus Damm [Tue, 26 Sep 2006 08:52:36 +0000 (10:52 +0200)]
[PATCH] i386: mark cpu identify functions as __cpuinit

Mark i386-specific cpu identification functions as __cpuinit. They are all
only called from arch/i386/common.c:identify_cpu() that already is marked as
__cpuinit.

Signed-off-by: Magnus Damm <magnus@valinux.co.jp>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: mark cpu init functions as __cpuinit, data as __cpuinitdata
Magnus Damm [Tue, 26 Sep 2006 08:52:36 +0000 (10:52 +0200)]
[PATCH] i386: mark cpu init functions as __cpuinit, data as __cpuinitdata

Mark i386-specific cpu init functions as __cpuinit. They are all
only called from arch/i386/common.c:identify_cpu() that already is marked as
__cpuinit. This patch also removes the empty function init_umc().

Signed-off-by: Magnus Damm <magnus@valinux.co.jp>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: mark cpu_dev structures as __cpuinitdata
Magnus Damm [Tue, 26 Sep 2006 08:52:36 +0000 (10:52 +0200)]
[PATCH] i386: mark cpu_dev structures as __cpuinitdata

The different cpu_dev structures are all used from __cpuinit callers what
I can tell. So mark them as __cpuinitdata instead of __initdata. I am a
little bit unsure about arch/i386/common.c:default_cpu, especially when it
comes to the purpose of this_cpu.

Signed-off-by: Magnus Damm <magnus@valinux.co.jp>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] mark init_amd() as __cpuinit
Magnus Damm [Tue, 26 Sep 2006 08:52:36 +0000 (10:52 +0200)]
[PATCH] mark init_amd() as __cpuinit

The init_amd() function is only called from identify_cpu() which is already
marked as __cpuinit. So let's mark it as __cpuinit.

Signed-off-by: Magnus Damm <magnus@valinux.co.jp>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: remove redundant generic_identify() calls when identifying cpus
Magnus Damm [Tue, 26 Sep 2006 08:52:36 +0000 (10:52 +0200)]
[PATCH] i386: remove redundant generic_identify() calls when identifying cpus

cpu_dev->c_identify is only called from arch/i386/common.c:identify_cpu(), and
this after generic_identify() already has been called. There is no need to call
this function twice and hook it in c_identify - but I may be wrong, please
double check before applying.

This patch also removes generic_identify() from cpu.h to avoid unnecessary
future nesting.

Signed-off-by: Magnus Damm <magnus@valinux.co.jp>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] x86_64 kernel mapping fix
Keith Mannthey [Tue, 26 Sep 2006 08:52:36 +0000 (10:52 +0200)]
[PATCH] x86_64 kernel mapping fix

Fix for the x86_64 kernel mapping code.  Without this patch the update path
only inits one pmd_page worth of memory and tramples any entries on it.  now
the calling convention to phys_pmd_init and phys_init is to always pass a
[pmd/pud] page not an offset within a page.

Signed-off-by: Keith Mannthey<kmannth@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
18 years ago[PATCH] wire up oops_enter()/oops_exit()
Andrew Morton [Tue, 26 Sep 2006 08:52:36 +0000 (10:52 +0200)]
[PATCH] wire up oops_enter()/oops_exit()

Implement pause_on_oops() on x86_64.

AK: I redid the patch to do the oops_enter/exit in the existing
oops_begin()/end(). This makes it much shorter.

Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] non lazy "sleazy" fpu implementation
Arjan van de Ven [Tue, 26 Sep 2006 08:52:36 +0000 (10:52 +0200)]
[PATCH] non lazy "sleazy" fpu implementation

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.

[akpm@osdl.org: place new task_struct field next to jit_keyring to save space]
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Cc: Andi Kleen <ak@muc.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
18 years ago[PATCH] i386: Support physical cpu hotplug for x86_64
Ashok Raj [Tue, 26 Sep 2006 08:52:35 +0000 (10:52 +0200)]
[PATCH] i386: Support physical cpu hotplug for x86_64

This patch enables ACPI based physical CPU hotplug support for x86_64.
Implements acpi_map_lsapic() and acpi_unmap_lsapic() to support physical cpu
hotplug.

Signed-off-by: Ashok Raj <ashok.raj@intel.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Cc: Andi Kleen <ak@muc.de>
Cc: "Brown, Len" <len.brown@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
18 years ago[PATCH] fix bus numbering format in mmconfig warning
Brice Goglin [Tue, 26 Sep 2006 08:52:35 +0000 (10:52 +0200)]
[PATCH] fix bus numbering format in mmconfig warning

Make an mmconfig warning print the bus id with a regular format.

Signed-off-by: Brice Goglin <brice@myri.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
18 years ago[PATCH] i386: mark two more functions as __init
Magnus Damm [Tue, 26 Sep 2006 08:52:35 +0000 (10:52 +0200)]
[PATCH] i386: mark two more functions as __init

cyrix_identify() should be __init because transmeta_identify() is.
tsc_init() is only called from setup_arch() which is marked as __init.

These two section mismatches have been detected using running modpost on
a vmlinux image compiled with CONFIG_RELOCATABLE=y.

Signed-off-by: Magnus Damm <magnus@valinux.co.jp>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: clean up topology.c
Magnus Damm [Tue, 26 Sep 2006 08:52:35 +0000 (10:52 +0200)]
[PATCH] i386: clean up topology.c

There is no need to duplicate the topology_init() function.

Signed-off-by: Magnus Damm <magnus@valinux.co.jp>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Auto size the per cpu area.
Eric W. Biederman [Tue, 26 Sep 2006 08:52:35 +0000 (10:52 +0200)]
[PATCH] Auto size the per cpu area.

Now for a completely different but trivial approach.
I just boot tested it with 255 CPUS and everything worked.

Currently everything (except module data) we place in
the per cpu area we know about at compile time.  So
instead of allocating a fixed size for the per_cpu area
allocate the number of bytes we need plus a fixed constant
for to be used for modules.

It isn't perfect but it is much less of a pain to
work with than what we are doing now.

AK: fixed warning

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Descriptor and trap table cleanups.
Rusty Russell [Tue, 26 Sep 2006 08:52:35 +0000 (10:52 +0200)]
[PATCH] i386: Descriptor and trap table cleanups.

The implementation comes from Zach's [RFC, PATCH 10/24] i386 Vmi
descriptor changes:

Descriptor and trap table cleanups.  Add cleanly written accessors for
IDT and GDT gates so the subarch may override them.  Note that this
allows the hypervisor to transparently tweak the DPL of the descriptors
as well as the RPL of segments in those descriptors, with no unnecessary
kernel code modification.  It also allows the hypervisor implementation
of the VMI to tweak the gates, allowing for custom exception frames or
extra layers of indirection above the guest fault / IRQ handlers.

Signed-off-by: Zachary Amsden <zach@vmware.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: move kernel_thread_helper into entry.S
Andi Kleen [Tue, 26 Sep 2006 08:52:35 +0000 (10:52 +0200)]
[PATCH] i386: move kernel_thread_helper into entry.S

And add proper CFI annotation to it which was previously
impossible. This prevents "stuck" messages by the dwarf2 unwinder
when reaching the top of a kernel stack.

Includes feedback from Jan Beulich

Cc: jbeulich@novell.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Make enable_local_apic static
Adrian Bunk [Tue, 26 Sep 2006 08:52:35 +0000 (10:52 +0200)]
[PATCH] i386: Make enable_local_apic static

enable_local_apic can now become static.

Cc: len.brown@intel.com
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Make acpi_force static
Adrian Bunk [Tue, 26 Sep 2006 08:52:35 +0000 (10:52 +0200)]
[PATCH] i386: Make acpi_force static

acpi_force can become static.

Cc: len.brown@intel.com
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: make fault notifier unconditional and export it
Andi Kleen [Tue, 26 Sep 2006 08:52:35 +0000 (10:52 +0200)]
[PATCH] i386: make fault notifier unconditional and export it

It's needed for external debuggers and overhead is very small.

Also make the actual notifier chain they use static

Cc: jbeulich@novell.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] make fault notifier unconditional and export it
Andi Kleen [Tue, 26 Sep 2006 08:52:35 +0000 (10:52 +0200)]
[PATCH] make fault notifier unconditional and export it

It's needed for external debuggers and overhead is very small.

Also make the actual notifier chain they use static

Cc: jbeulich@novell.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386: Fix warning in mpparse.c
Andi Kleen [Tue, 26 Sep 2006 08:52:35 +0000 (10:52 +0200)]
[PATCH] i386: Fix warning in mpparse.c

Fix

linux/arch/i386/kernel/mpparse.c: In function #MP_bus_info#:
linux/arch/i386/kernel/mpparse.c:232: warning: comparison is always false due to limited range of data type

Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] Make boot_param_data pure BSS
Andi Kleen [Tue, 26 Sep 2006 08:52:35 +0000 (10:52 +0200)]
[PATCH] Make boot_param_data pure BSS

Since it's all zero.

Actually I think gcc 4+ will do that automatically, but earlier compilers won't
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] i386/x86-64: Improve Kconfig description of CRASH_DUMP
Andi Kleen [Tue, 26 Sep 2006 08:52:35 +0000 (10:52 +0200)]
[PATCH] i386/x86-64: Improve Kconfig description of CRASH_DUMP

Improve Kconfig description of CONFIG_CRASH_DUMP. Previously
it was too brief to be useful.

Cc: vgoyal@in.ibm.com
Cc: ebiederm@xmission.com
Signed-off-by: Andi Kleen <ak@suse.de>
18 years ago[PATCH] X86_64 monotonic_clock goes backwards
Dimitri Sivanich [Tue, 26 Sep 2006 08:52:34 +0000 (10:52 +0200)]
[PATCH] X86_64 monotonic_clock goes backwards

I've noticed some erratic behavior while testing the X86_64 version
of monotonic_clock().

While spinning in a loop reading monotonic clock values (pinned to a
single cpu) I noticed that the difference between subsequent values
occasionally went negative (time going backwards).

I found that in the following code:
                this_offset = get_cycles_sync();
                /* FIXME: 1000 or 1000000? */
-->             offset = (this_offset - last_offset)*1000 / cpu_khz;
        }
        return base + offset;

the offset sometimes turns out to be 0, even though
this_offset > last_offset.

+Added fix From: Toyo Abe <toyoa@mvista.com>

The x86_64-mm-monotonic-clock.patch in 2.6.18-rc4-mm2 made a change to
the updating of monotonic_base. It now uses cycles_2_ns().

I suggest that a set_cyc2ns_scale() should be done prior to the setup_irq().
Because cycles_2_ns() can be called from the timer ISR right after the irq0
is enabled.

Signed-off-by: Toyo Abe <toyoa@mvista.com>
Signed-off-by: Dimitri Sivanich <sivanich@sgi.com>
Signed-off-by: Andi Kleen <ak@suse.de>
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>