Skip to content

Commit

Permalink
Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/li…
Browse files Browse the repository at this point in the history
…nux-2.6

* 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6: (231 commits)
  [PATCH] i386: Don't delete cpu_devs data to identify different x86 types in late_initcall
  [PATCH] i386: type may be unused
  [PATCH] i386: Some additional chipset register values validation.
  [PATCH] i386: Add missing !X86_PAE dependincy to the 2G/2G split.
  [PATCH] x86-64: Don't exclude asm-offsets.c in Documentation/dontdiff
  [PATCH] i386: avoid redundant preempt_disable in __unlazy_fpu
  [PATCH] i386: white space fixes in i387.h
  [PATCH] i386: Drop noisy e820 debugging printks
  [PATCH] x86-64: Fix allnoconfig error in genapic_flat.c
  [PATCH] x86-64: Shut up warnings for vfat compat ioctls on other file systems
  [PATCH] x86-64: Share identical video.S between i386 and x86-64
  [PATCH] x86-64: Remove CONFIG_REORDER
  [PATCH] x86-64: Print type and size correctly for unknown compat ioctls
  [PATCH] i386: Remove copy_*_user BUG_ONs for (size < 0)
  [PATCH] i386: Little cleanups in smpboot.c
  [PATCH] x86-64: Don't enable NUMA for a single node in K8 NUMA scanning
  [PATCH] x86: Use RDTSCP for synchronous get_cycles if possible
  [PATCH] i386: Add X86_FEATURE_RDTSCP
  [PATCH] i386: Implement X86_FEATURE_SYNC_RDTSC on i386
  [PATCH] i386: Implement alternative_io for i386
  ...

Fix up trivial conflict in include/linux/highmem.h manually.

Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Linus Torvalds committed May 5, 2007
2 parents 886a076 + 35060b6 commit ea62ccd
Show file tree
Hide file tree
Showing 319 changed files with 7,564 additions and 10,400 deletions.
5 changes: 3 additions & 2 deletions CREDITS
Original file line number Diff line number Diff line change
Expand Up @@ -1745,8 +1745,9 @@ S: D-64295
S: Germany

N: Andi Kleen
E: [email protected]
D: network hacker, syncookies
E: [email protected]
U: http://www.halobates.de
D: network, x86, NUMA, various hacks
S: Schwalbenstr. 96
S: 85551 Ottobrunn
S: Germany
Expand Down
4 changes: 2 additions & 2 deletions Documentation/dontdiff
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ aic7*seq.h*
aicasm
aicdb.h*
asm
asm-offsets.*
asm_offsets.*
asm-offsets.h
asm_offsets.h
autoconf.h*
bbootsect
bin2c
Expand Down
23 changes: 17 additions & 6 deletions Documentation/i386/boot.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
----------------------------

H. Peter Anvin <[email protected]>
Last update 2007-01-26
Last update 2007-03-06

On the i386 platform, the Linux kernel uses a rather complicated boot
convention. This has evolved partially due to historical aspects, as
Expand Down Expand Up @@ -35,9 +35,13 @@ Protocol 2.03: (Kernel 2.4.18-pre1) Explicitly makes the highest possible
initrd address available to the bootloader.

Protocol 2.04: (Kernel 2.6.14) Extend the syssize field to four bytes.

Protocol 2.05: (Kernel 2.6.20) Make protected mode kernel relocatable.
Introduce relocatable_kernel and kernel_alignment fields.

Protocol 2.06: (Kernel 2.6.22) Added a field that contains the size of
the boot command line


**** MEMORY LAYOUT

Expand Down Expand Up @@ -133,6 +137,8 @@ Offset Proto Name Meaning
022C/4 2.03+ initrd_addr_max Highest legal initrd address
0230/4 2.05+ kernel_alignment Physical addr alignment required for kernel
0234/1 2.05+ relocatable_kernel Whether kernel is relocatable or not
0235/3 N/A pad2 Unused
0238/4 2.06+ cmdline_size Maximum size of the kernel command line

(1) For backwards compatibility, if the setup_sects field contains 0, the
real value is 4.
Expand Down Expand Up @@ -233,6 +239,12 @@ filled out, however:
if your ramdisk is exactly 131072 bytes long and this field is
0x37FFFFFF, you can start your ramdisk at 0x37FE0000.)

cmdline_size:
The maximum size of the command line without the terminating
zero. This means that the command line can contain at most
cmdline_size characters. With protocol version 2.05 and
earlier, the maximum size was 255.


**** THE KERNEL COMMAND LINE

Expand All @@ -241,11 +253,10 @@ loader to communicate with the kernel. Some of its options are also
relevant to the boot loader itself, see "special command line options"
below.

The kernel command line is a null-terminated string currently up to
255 characters long, plus the final null. A string that is too long
will be automatically truncated by the kernel, a boot loader may allow
a longer command line to be passed to permit future kernels to extend
this limit.
The kernel command line is a null-terminated string. The maximum
length can be retrieved from the field cmdline_size. Before protocol
version 2.06, the maximum was 255 characters. A string that is too
long will be automatically truncated by the kernel.

If the boot protocol version is 2.02 or later, the address of the
kernel command line is given by the header field cmd_line_ptr (see
Expand Down
21 changes: 19 additions & 2 deletions Documentation/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ parameter is applicable:
GENERIC_TIME The generic timeofday code is enabled.
NFS Appropriate NFS support is enabled.
OSS OSS sound support is enabled.
PV_OPS A paravirtualized kernel
PARIDE The ParIDE subsystem is enabled.
PARISC The PA-RISC architecture is enabled.
PCI PCI bus support is enabled.
Expand Down Expand Up @@ -695,8 +696,15 @@ and is between 256 and 4096 characters. It is defined in the file
idebus= [HW] (E)IDE subsystem - VLB/PCI bus speed
See Documentation/ide.txt.

idle= [HW]
Format: idle=poll or idle=halt
idle= [X86]
Format: idle=poll or idle=mwait
Poll forces a polling idle loop that can slightly improves the performance
of waking up a idle CPU, but will use a lot of power and make the system
run hot. Not recommended.
idle=mwait. On systems which support MONITOR/MWAIT but the kernel chose
to not use it because it doesn't save as much power as a normal idle
loop use the MONITOR/MWAIT idle loop anyways. Performance should be the same
as idle=poll.

ignore_loglevel [KNL]
Ignore loglevel setting - this will print /all/
Expand Down Expand Up @@ -1157,6 +1165,11 @@ and is between 256 and 4096 characters. It is defined in the file

nomce [IA-32] Machine Check Exception

noreplace-paravirt [IA-32,PV_OPS] Don't patch paravirt_ops

noreplace-smp [IA-32,SMP] Don't replace SMP instructions
with UP alternatives

noresidual [PPC] Don't use residual data on PReP machines.

noresume [SWSUSP] Disables resume and restores original swap
Expand Down Expand Up @@ -1562,6 +1575,9 @@ and is between 256 and 4096 characters. It is defined in the file
smart2= [HW]
Format: <io1>[,<io2>[,...,<io8>]]

smp-alt-once [IA-32,SMP] On a hotplug CPU system, only
attempt to substitute SMP alternatives once at boot.

snd-ad1816a= [HW,ALSA]

snd-ad1848= [HW,ALSA]
Expand Down Expand Up @@ -1820,6 +1836,7 @@ and is between 256 and 4096 characters. It is defined in the file
[USBHID] The interval which mice are to be polled at.

vdso= [IA-32,SH]
vdso=2: enable compat VDSO (default with COMPAT_VDSO)
vdso=1: enable VDSO (default)
vdso=0: disable VDSO mapping

Expand Down
14 changes: 13 additions & 1 deletion Documentation/x86_64/boot-options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,19 @@ NUMA

numa=noacpi Don't parse the SRAT table for NUMA setup

numa=fake=X Fake X nodes and ignore NUMA setup of the actual machine.
numa=fake=CMDLINE
If a number, fakes CMDLINE nodes and ignores NUMA setup of the
actual machine. Otherwise, system memory is configured
depending on the sizes and coefficients listed. For example:
numa=fake=2*512,1024,4*256,*128
gives two 512M nodes, a 1024M node, four 256M nodes, and the
rest split into 128M chunks. If the last character of CMDLINE
is a *, the remaining memory is divided up equally among its
coefficient:
numa=fake=2*512,2*
gives two 512M nodes and the rest split into two nodes.
Otherwise, the remaining system RAM is allocated to an
additional node.

numa=hotadd=percent
Only allow hotadd memory to preallocate page structures upto
Expand Down
66 changes: 66 additions & 0 deletions Documentation/x86_64/fake-numa-for-cpusets
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
Using numa=fake and CPUSets for Resource Management
Written by David Rientjes <[email protected]>

This document describes how the numa=fake x86_64 command-line option can be used
in conjunction with cpusets for coarse memory management. Using this feature,
you can create fake NUMA nodes that represent contiguous chunks of memory and
assign them to cpusets and their attached tasks. This is a way of limiting the
amount of system memory that are available to a certain class of tasks.

For more information on the features of cpusets, see Documentation/cpusets.txt.
There are a number of different configurations you can use for your needs. For
more information on the numa=fake command line option and its various ways of
configuring fake nodes, see Documentation/x86_64/boot-options.txt.

For the purposes of this introduction, we'll assume a very primitive NUMA
emulation setup of "numa=fake=4*512,". This will split our system memory into
four equal chunks of 512M each that we can now use to assign to cpusets. As
you become more familiar with using this combination for resource control,
you'll determine a better setup to minimize the number of nodes you have to deal
with.

A machine may be split as follows with "numa=fake=4*512," as reported by dmesg:

Faking node 0 at 0000000000000000-0000000020000000 (512MB)
Faking node 1 at 0000000020000000-0000000040000000 (512MB)
Faking node 2 at 0000000040000000-0000000060000000 (512MB)
Faking node 3 at 0000000060000000-0000000080000000 (512MB)
...
On node 0 totalpages: 130975
On node 1 totalpages: 131072
On node 2 totalpages: 131072
On node 3 totalpages: 131072

Now following the instructions for mounting the cpusets filesystem from
Documentation/cpusets.txt, you can assign fake nodes (i.e. contiguous memory
address spaces) to individual cpusets:

[root@xroads /]# mkdir exampleset
[root@xroads /]# mount -t cpuset none exampleset
[root@xroads /]# mkdir exampleset/ddset
[root@xroads /]# cd exampleset/ddset
[root@xroads /exampleset/ddset]# echo 0-1 > cpus
[root@xroads /exampleset/ddset]# echo 0-1 > mems

Now this cpuset, 'ddset', will only allowed access to fake nodes 0 and 1 for
memory allocations (1G).

You can now assign tasks to these cpusets to limit the memory resources
available to them according to the fake nodes assigned as mems:

[root@xroads /exampleset/ddset]# echo $$ > tasks
[root@xroads /exampleset/ddset]# dd if=/dev/zero of=tmp bs=1024 count=1G
[1] 13425

Notice the difference between the system memory usage as reported by
/proc/meminfo between the restricted cpuset case above and the unrestricted
case (i.e. running the same 'dd' command without assigning it to a fake NUMA
cpuset):
Unrestricted Restricted
MemTotal: 3091900 kB 3091900 kB
MemFree: 42113 kB 1513236 kB

This allows for coarse memory management for the tasks you assign to particular
cpusets. Since cpusets can form a hierarchy, you can create some pretty
interesting combinations of use-cases for various classes of tasks for your
memory management needs.
7 changes: 6 additions & 1 deletion Documentation/x86_64/machinecheck
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,12 @@ between all CPUs.

check_interval
How often to poll for corrected machine check errors, in seconds
(Note output is hexademical). Default 5 minutes.
(Note output is hexademical). Default 5 minutes. When the poller
finds MCEs it triggers an exponential speedup (poll more often) on
the polling interval. When the poller stops finding MCEs, it
triggers an exponential backoff (poll less often) on the polling
interval. The check_interval variable is both the initial and
maximum polling interval.

tolerant
Tolerance level. When a machine check exception occurs for a non
Expand Down
24 changes: 23 additions & 1 deletion MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -1617,7 +1617,7 @@ S: Maintained

HPET: x86_64
P: Andi Kleen and Vojtech Pavlik
M: [email protected] and [email protected]
M: [email protected] and [email protected]
S: Maintained

HPET: ACPI hpet.c
Expand Down Expand Up @@ -2652,6 +2652,19 @@ T: git kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6.git
T: cvs cvs.parisc-linux.org:/var/cvs/linux-2.6
S: Maintained

PARAVIRT_OPS INTERFACE
P: Jeremy Fitzhardinge
M: [email protected]
P: Chris Wright
M: [email protected]
P: Zachary Amsden
M: [email protected]
P: Rusty Russell
M: [email protected]
L: [email protected]
L: [email protected]
S: Supported

PC87360 HARDWARE MONITORING DRIVER
P: Jim Cromie
M: [email protected]
Expand Down Expand Up @@ -3876,6 +3889,15 @@ M: [email protected]
L: [email protected]
S: Maintained

XEN HYPERVISOR INTERFACE
P: Jeremy Fitzhardinge
M: [email protected]
P: Chris Wright
M: [email protected]
L: [email protected]
L: [email protected]
S: Supported

XFS FILESYSTEM
P: Silicon Graphics Inc
P: Tim Shimmin, David Chatterton
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ endif
include $(srctree)/arch/$(ARCH)/Makefile

ifdef CONFIG_FRAME_POINTER
CFLAGS += -fno-omit-frame-pointer $(call cc-option,-fno-optimize-sibling-calls,)
CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
else
CFLAGS += -fomit-frame-pointer
endif
Expand Down
2 changes: 1 addition & 1 deletion arch/alpha/boot/misc.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ extern int end;
static ulg free_mem_ptr;
static ulg free_mem_ptr_end;

#define HEAP_SIZE 0x2000
#define HEAP_SIZE 0x3000

#include "../../../lib/inflate.c"

Expand Down
2 changes: 1 addition & 1 deletion arch/alpha/kernel/vmlinux.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(8);
SECURITY_INIT

. = ALIGN(64);
. = ALIGN(8192);
__per_cpu_start = .;
.data.percpu : { *(.data.percpu) }
__per_cpu_end = .;
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/boot/compressed/misc.c
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ extern int end;
static ulg free_mem_ptr;
static ulg free_mem_ptr_end;

#define HEAP_SIZE 0x2000
#define HEAP_SIZE 0x3000

#include "../../../../lib/inflate.c"

Expand Down
2 changes: 1 addition & 1 deletion arch/arm/kernel/vmlinux.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ SECTIONS
usr/built-in.o(.init.ramfs)
__initramfs_end = .;
#endif
. = ALIGN(64);
. = ALIGN(4096);
__per_cpu_start = .;
*(.data.percpu)
__per_cpu_end = .;
Expand Down
2 changes: 1 addition & 1 deletion arch/arm26/boot/compressed/misc.c
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ extern int end;
static ulg free_mem_ptr;
static ulg free_mem_ptr_end;

#define HEAP_SIZE 0x2000
#define HEAP_SIZE 0x3000

#include "../../../../lib/inflate.c"

Expand Down
1 change: 1 addition & 0 deletions arch/cris/arch-v32/vmlinux.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ SECTIONS
}
SECURITY_INIT

. = ALIGN (8192);
__per_cpu_start = .;
.data.percpu : { *(.data.percpu) }
__per_cpu_end = .;
Expand Down
1 change: 1 addition & 0 deletions arch/frv/kernel/vmlinux.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ SECTIONS
__alt_instructions_end = .;
.altinstr_replacement : { *(.altinstr_replacement) }

. = ALIGN(4096);
__per_cpu_start = .;
.data.percpu : { *(.data.percpu) }
__per_cpu_end = .;
Expand Down
Loading

0 comments on commit ea62ccd

Please sign in to comment.