From: Andi Kleen <ak@suse.de>
To: undisclosed-recipients:;
Subject: [PATCH for review] [27/145] x86_64: Add the vgetcpu vsyscall
Date: Thu, 10 Aug 2006 21:35:40 +0200 (CEST) [thread overview]
Message-ID: <20060810193540.8CCCB13B90@wotan.suse.de> (raw)
In-Reply-To: <20060810 935.775038000@suse.de>
r
From: Vojtech Pavlik <vojtech@suse.cz>
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
TBD benchmark LSL vs RDTSCP
Signed-off-by: Vojtech Pavlik <vojtech@suse.cz>
Signed-off-by: Andi Kleen <ak@suse.de>
---
arch/x86_64/kernel/head.S | 2
arch/x86_64/kernel/time.c | 13 +++--
arch/x86_64/kernel/vmlinux.lds.S | 3 +
arch/x86_64/kernel/vsyscall.c | 86 +++++++++++++++++++++++++++++++++++++--
include/asm-x86_64/segment.h | 5 +-
include/asm-x86_64/smp.h | 12 ++++-
include/asm-x86_64/vsyscall.h | 9 ++++
include/linux/getcpu.h | 16 +++++++
8 files changed, 131 insertions(+), 15 deletions(-)
Index: linux/arch/x86_64/kernel/vsyscall.c
===================================================================
--- linux.orig/arch/x86_64/kernel/vsyscall.c
+++ linux/arch/x86_64/kernel/vsyscall.c
@@ -26,6 +26,7 @@
#include <linux/seqlock.h>
#include <linux/jiffies.h>
#include <linux/sysctl.h>
+#include <linux/getcpu.h>
#include <asm/vsyscall.h>
#include <asm/pgtable.h>
@@ -33,11 +34,15 @@
#include <asm/fixmap.h>
#include <asm/errno.h>
#include <asm/io.h>
+#include <asm/segment.h>
+#include <asm/desc.h>
+#include <asm/topology.h>
#define __vsyscall(nr) __attribute__ ((unused,__section__(".vsyscall_" #nr)))
int __sysctl_vsyscall __section_sysctl_vsyscall = 1;
seqlock_t __xtime_lock __section_xtime_lock = SEQLOCK_UNLOCKED;
+int __vgetcpu_mode __section_vgetcpu_mode;
#include <asm/unistd.h>
@@ -127,9 +132,46 @@ time_t __vsyscall(1) vtime(time_t *t)
return __xtime.tv_sec;
}
-long __vsyscall(2) venosys_0(void)
-{
- return -ENOSYS;
+/* Fast way to get current CPU and node.
+ This helps to do per node and per CPU caches in user space.
+ The result is not guaranteed without CPU affinity, but usually
+ works out because the scheduler tries to keep a thread on the same
+ CPU.
+
+ tcache must point to a two element sized long array.
+ All arguments can be NULL. */
+long __vsyscall(2)
+vgetcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *tcache)
+{
+ unsigned int dummy, p;
+ unsigned long j = 0;
+
+ /* Fast cache - only recompute value once per jiffies and avoid
+ relatively costly rdtscp/cpuid otherwise.
+ This works because the scheduler usually keeps the process
+ on the same CPU and this syscall doesn't guarantee its
+ results anyways.
+ We do this here because otherwise user space would do it on
+ its own in a likely inferior way (no access to jiffies).
+ If you don't like it pass NULL. */
+ if (tcache && tcache->t0 == (j = __jiffies)) {
+ p = tcache->t1;
+ } else if (__vgetcpu_mode == VGETCPU_RDTSCP) {
+ /* Load per CPU data from RDTSCP */
+ rdtscp(dummy, dummy, p);
+ } else {
+ /* Load per CPU data from GDT */
+ asm("lsl %1,%0" : "=r" (p) : "r" (__PER_CPU_SEG));
+ }
+ if (tcache) {
+ tcache->t0 = j;
+ tcache->t1 = p;
+ }
+ if (cpu)
+ *cpu = p & 0xfff;
+ if (node)
+ *node = p >> 12;
+ return 0;
}
long __vsyscall(3) venosys_1(void)
@@ -200,6 +242,43 @@ static ctl_table kernel_root_table2[] =
#endif
+static void __cpuinit write_rdtscp_cb(void *info)
+{
+ write_rdtscp_aux((unsigned long)info);
+}
+
+void __cpuinit vsyscall_set_cpu(int cpu)
+{
+ unsigned long *d;
+ unsigned long node = 0;
+#ifdef CONFIG_NUMA
+ node = cpu_to_node[cpu];
+#endif
+ if (cpu_has(&cpu_data[cpu], X86_FEATURE_RDTSCP)) {
+ void *info = (void *)((node << 12) | cpu);
+ /* Can happen on preemptive kernel */
+ if (get_cpu() == cpu)
+ write_rdtscp_cb(info);
+#ifdef CONFIG_SMP
+ else {
+ /* the notifier is unfortunately not executed on the
+ target CPU */
+ smp_call_function_single(cpu,write_rdtscp_cb,info,0,1);
+ }
+#endif
+ put_cpu();
+ }
+
+ /* Store cpu number in limit so that it can be loaded quickly
+ in user space in vgetcpu.
+ 12 bits for the CPU and 8 bits for the node. */
+ d = (unsigned long *)(cpu_gdt(cpu) + GDT_ENTRY_PER_CPU);
+ *d = 0x0f40000000000ULL;
+ *d |= cpu;
+ *d |= (node & 0xf) << 12;
+ *d |= (node >> 4) << 48;
+}
+
static void __init map_vsyscall(void)
{
extern char __vsyscall_0;
@@ -214,6 +293,7 @@ static int __init vsyscall_init(void)
VSYSCALL_ADDR(__NR_vgettimeofday)));
BUG_ON((unsigned long) &vtime != VSYSCALL_ADDR(__NR_vtime));
BUG_ON((VSYSCALL_ADDR(0) != __fix_to_virt(VSYSCALL_FIRST_PAGE)));
+ BUG_ON((unsigned long) &vgetcpu != VSYSCALL_ADDR(__NR_vgetcpu));
map_vsyscall();
#ifdef CONFIG_SYSCTL
register_sysctl_table(kernel_root_table2, 0);
Index: linux/include/asm-x86_64/vsyscall.h
===================================================================
--- linux.orig/include/asm-x86_64/vsyscall.h
+++ linux/include/asm-x86_64/vsyscall.h
@@ -6,6 +6,7 @@
enum vsyscall_num {
__NR_vgettimeofday,
__NR_vtime,
+ __NR_vgetcpu,
};
#define VSYSCALL_START (-10UL << 20)
@@ -16,6 +17,7 @@ enum vsyscall_num {
#ifdef __KERNEL__
#define __section_vxtime __attribute__ ((unused, __section__ (".vxtime"), aligned(16)))
+#define __section_vgetcpu_mode __attribute__ ((unused, __section__ (".vgetcpu_mode"), aligned(16)))
#define __section_wall_jiffies __attribute__ ((unused, __section__ (".wall_jiffies"), aligned(16)))
#define __section_jiffies __attribute__ ((unused, __section__ (".jiffies"), aligned(16)))
#define __section_sys_tz __attribute__ ((unused, __section__ (".sys_tz"), aligned(16)))
@@ -27,6 +29,9 @@ enum vsyscall_num {
#define VXTIME_HPET 2
#define VXTIME_PMTMR 3
+#define VGETCPU_RDTSCP 1
+#define VGETCPU_LSL 2
+
struct vxtime_data {
long hpet_address; /* HPET base address */
int last;
@@ -41,6 +46,7 @@ struct vxtime_data {
/* vsyscall space (readonly) */
extern struct vxtime_data __vxtime;
+extern int __vgetcpu_mode;
extern struct timespec __xtime;
extern volatile unsigned long __jiffies;
extern unsigned long __wall_jiffies;
@@ -49,6 +55,7 @@ extern seqlock_t __xtime_lock;
/* kernel space (writeable) */
extern struct vxtime_data vxtime;
+extern int vgetcpu_mode;
extern unsigned long wall_jiffies;
extern struct timezone sys_tz;
extern int sysctl_vsyscall;
@@ -56,6 +63,8 @@ extern seqlock_t xtime_lock;
extern int sysctl_vsyscall;
+extern void vsyscall_set_cpu(int cpu);
+
#define ARCH_HAVE_XTIME_LOCK 1
#endif /* __KERNEL__ */
Index: linux/arch/x86_64/kernel/time.c
===================================================================
--- linux.orig/arch/x86_64/kernel/time.c
+++ linux/arch/x86_64/kernel/time.c
@@ -899,12 +899,8 @@ static int __cpuinit
time_cpu_notifier(struct notifier_block *nb, unsigned long action, void *hcpu)
{
unsigned cpu = (unsigned long) hcpu;
- if (action == CPU_ONLINE &&
- cpu_has(&cpu_data[cpu], X86_FEATURE_RDTSCP)) {
- unsigned p;
- p = smp_processor_id() | (cpu_to_node(smp_processor_id())<<12);
- write_rdtscp_aux(p);
- }
+ if (action == CPU_ONLINE)
+ vsyscall_set_cpu(cpu);
return NOTIFY_DONE;
}
@@ -993,6 +989,11 @@ void time_init_gtod(void)
if (unsynchronized_tsc())
notsc = 1;
+ if (cpu_has(&boot_cpu_data, X86_FEATURE_RDTSCP))
+ vgetcpu_mode = VGETCPU_RDTSCP;
+ else
+ vgetcpu_mode = VGETCPU_LSL;
+
if (vxtime.hpet_address && notsc) {
timetype = hpet_use_timer ? "HPET" : "PIT/HPET";
if (hpet_use_timer)
Index: linux/arch/x86_64/kernel/vmlinux.lds.S
===================================================================
--- linux.orig/arch/x86_64/kernel/vmlinux.lds.S
+++ linux/arch/x86_64/kernel/vmlinux.lds.S
@@ -99,6 +99,9 @@ SECTIONS
.vxtime : AT(VLOAD(.vxtime)) { *(.vxtime) }
vxtime = VVIRT(.vxtime);
+ .vgetcpu_mode : AT(VLOAD(.vgetcpu_mode)) { *(.vgetcpu_mode) }
+ vgetcpu_mode = VVIRT(.vgetcpu_mode);
+
.wall_jiffies : AT(VLOAD(.wall_jiffies)) { *(.wall_jiffies) }
wall_jiffies = VVIRT(.wall_jiffies);
Index: linux/arch/x86_64/kernel/head.S
===================================================================
--- linux.orig/arch/x86_64/kernel/head.S
+++ linux/arch/x86_64/kernel/head.S
@@ -370,7 +370,7 @@ ENTRY(cpu_gdt_table)
.quad 0,0 /* TSS */
.quad 0,0 /* LDT */
.quad 0,0,0 /* three TLS descriptors */
- .quad 0 /* unused */
+ .quad 0x0000f40000000000 /* node/CPU stored in limit */
gdt_end:
/* asm/segment.h:GDT_ENTRIES must match this */
/* This should be a multiple of the cache line size */
Index: linux/include/asm-x86_64/segment.h
===================================================================
--- linux.orig/include/asm-x86_64/segment.h
+++ linux/include/asm-x86_64/segment.h
@@ -20,15 +20,16 @@
#define __USER_CS 0x33 /* 6*8+3 */
#define __USER32_DS __USER_DS
-#define GDT_ENTRY_TLS 1
#define GDT_ENTRY_TSS 8 /* needs two entries */
#define GDT_ENTRY_LDT 10 /* needs two entries */
#define GDT_ENTRY_TLS_MIN 12
#define GDT_ENTRY_TLS_MAX 14
-/* 15 free */
#define GDT_ENTRY_TLS_ENTRIES 3
+#define GDT_ENTRY_PER_CPU 15 /* Abused to load per CPU data from limit */
+#define __PER_CPU_SEG (GDT_ENTRY_PER_CPU * 8 + 3)
+
/* TLS indexes for 64bit - hardcoded in arch_prctl */
#define FS_TLS 0
#define GS_TLS 1
Index: linux/include/asm-x86_64/smp.h
===================================================================
--- linux.orig/include/asm-x86_64/smp.h
+++ linux/include/asm-x86_64/smp.h
@@ -133,13 +133,19 @@ static __inline int logical_smp_processo
/* we don't want to mark this access volatile - bad code generation */
return GET_APIC_LOGICAL_ID(*(unsigned long *)(APIC_BASE+APIC_LDR));
}
-#endif
#ifdef CONFIG_SMP
#define cpu_physical_id(cpu) x86_cpu_to_apicid[cpu]
#else
#define cpu_physical_id(cpu) boot_cpu_id
-#endif
-
+static inline int smp_call_function_single(int cpuid, void (*func) (void *info),
+ void *info, int retry, int wait)
+{
+ /* Disable interrupts here? */
+ func(info);
+ return 0;
+}
+#endif /* !CONFIG_SMP */
+#endif /* !__ASSEMBLY */
#endif
Index: linux/include/linux/getcpu.h
===================================================================
--- /dev/null
+++ linux/include/linux/getcpu.h
@@ -0,0 +1,16 @@
+#ifndef _LINUX_GETCPU_H
+#define _LINUX_GETCPU_H 1
+
+/* Cache for getcpu() to speed it up. Results might be upto a jiffie
+ out of date, but will be faster.
+ User programs should not refer to the contents of this structure.
+ It is only a cache for vgetcpu(). It might change in future kernels.
+ The user program must store this information per thread (__thread)
+ If you want 100% accurate information pass NULL instead. */
+struct getcpu_cache {
+ unsigned long t0;
+ unsigned long t1;
+ unsigned long res[4];
+};
+
+#endif
next prev parent reply other threads:[~2006-08-10 19:35 UTC|newest]
Thread overview: 195+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20060810 935.775038000@suse.de>
2006-08-10 19:35 ` [PATCH for review] [1/145] x86_64: Update defconfig Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [2/145] i386: " Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [3/145] i386: Allow to use GENERICARCH for UP kernels Andi Kleen
2006-08-10 19:47 ` Dave Hansen
2006-08-10 19:50 ` Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [4/145] x86_64: Temporarily revert parts of the Core 2 nmi nmi watchdog support Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [5/145] x86_64: Add performance counter reservation framework for UP kernels Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [6/145] x86_64: Utilize performance counter reservation framework in oprofile Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [7/145] x86_64: Add SMP support on x86_64 to reservation framework Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [8/145] x86_64: Add SMP support on i386 " Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [9/145] x86_64: Cleanup NMI interrupt path Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [10/145] x86_64: Add TIF_RESTORE_SIGMASK Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [11/145] x86_64: Add ppoll/pselect syscalls Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [12/145] i386/x86-64: Remove un/set_nmi_callback and reserve/release_lapic_nmi functions Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [13/145] x86_64: Add abilty to enable/disable nmi watchdog with sysctl Andi Kleen
2006-08-10 19:48 ` Oleg Verych
2006-08-11 6:44 ` Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [14/145] x86_64: Add abilty to enable/disable nmi watchdog from procfs (update) Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [15/145] x86_64: Allow users to force a panic on NMI Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [16/145] x86_64: x86 clean up nmi panic messages Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [17/145] i386/x86-64: x86 nmi fix Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [18/145] x86_64: x86 nmi fix 2 Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [19/145] x86_64: Fix up panic messages for different NMI panics Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [20/145] x86_64: make functions static Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [21/145] x86_64: kdump x86_64 nmi event notification fix Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [22/145] x86_64: Kdump i386 " Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [23/145] i386: Enable NMI watchdog by default Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [24/145] x86_64: i386/x86-64 Add nmi watchdog support for new Intel CPUs Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [25/145] x86_64: Add macros for rdtscp Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [26/145] x86_64: Add initalization of the RDTSCP auxilliary values Andi Kleen
2006-08-10 21:49 ` Oleg Verych
2006-08-11 4:09 ` Andi Kleen
2006-08-10 19:35 ` Andi Kleen [this message]
2006-08-10 19:35 ` [PATCH for review] [28/145] x86_64: Add portable getcpu call Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [29/145] x86_64: Clean up asm/smp.h includes Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [30/145] x86_64: x86-64 TIF flags for debug regs and io bitmap in ctxsw Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [31/145] x86_64: Don't print virtual address in HPET initialization Andi Kleen
2006-08-11 16:50 ` Clemens Ladisch
2006-08-10 19:35 ` [PATCH for review] [32/145] x86_64: A few trivial spelling and grammar fixes Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [33/145] i386/x86-64: Don't randomize stack top when no randomization personality is set Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [34/145] i386: Account spinlocks to the caller during profiling for !FP kernels Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [35/145] x86_64: Simplify profile_pc on x86-64 Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [36/145] x86_64: Document backtracer selection options Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [37/145] x86_64: Support patchable lock prefix for pure assembly files Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [38/145] x86_64: Switch rwlocks over to patchable lock prefix Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [39/145] x86_64: Clean up read write lock assembly Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [40/145] i386: Remove const case for rwlocks Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [41/145] x86_64: Add proper alignment to ENTRY Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [42/145] i386: add alternative-asm.h to allow LOCK_PREFIX replacement in .S files Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [43/145] i386: Redo semaphore and rwlock assembly helpers Andi Kleen
2006-08-13 0:53 ` Andrew Morton
2006-08-13 6:50 ` Andi Kleen
2006-08-13 6:54 ` Andrew Morton
2006-08-13 7:42 ` Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [44/145] x86_64: Remove leftover CVS Id in thunk.S Andi Kleen
2006-08-10 19:35 ` [PATCH for review] [45/145] x86_64: Add some comments what tce.c actually does Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [46/145] x86_64: Remove all ifdefs for local/io apic Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [47/145] x86_64: Remove apic mismatch counter Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [48/145] x86_64: Remove old "focus disabled" chipset errata workaround Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [49/145] x86_64: Clean up and minor fixes to TLB flush Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [50/145] i386: Minor fixes & cleanup to tlb flush Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [51/145] x86_64: Add some comments to entry.S Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [52/145] x86_64: Remove pirq overwrite support Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [53/145] x86_64: Remove leftover MCE/EISA support Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [54/145] x86_64: Remove obsolete PIC mode Andi Kleen
2006-08-16 16:31 ` Len Brown
2006-08-16 16:35 ` Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [55/145] i386/x86-64: Remove obsolete sanity check in mptable parsing Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [56/145] x86_64: Factor out common io apic routing entry access Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [57/145] i386: " Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [58/145] x86_64: AUX_DEVICE_INFO is one byte long, use 'movb' Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [59/145] x86_64: Remove MPS table APIC renumbering Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [60/145] x86_64: Move early chipset quirks out to new file Andi Kleen
2006-08-16 15:36 ` Len Brown
2006-08-10 19:36 ` [PATCH for review] [61/145] x86_64: Replace mp bus array with bitmap for bus not pci Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [62/145] x86_64: Remove useless wrapper in mpparse.c code Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [63/145] x86_64: Remove some unneeded ACPI externs in mpparse.c Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [64/145] x86_64: Fix up some non linuxy style in ACPI functions " Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [65/145] i386: Clean up code style in mpparse.c ACPI code Andi Kleen
2006-08-16 16:08 ` Len Brown
2006-08-16 16:30 ` Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [66/145] x86_64: Use BUILD_BUG_ON in apic.c build sanity checking Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [67/145] x86_64: Detect CFI support in the assembler at runtime Andi Kleen
[not found] ` <20060811053932.GA4910@mars.ravnborg.org>
2006-08-11 5:55 ` Andi Kleen
2006-08-11 15:16 ` Sam Ravnborg
2006-08-11 16:10 ` Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [68/145] x86_64: Remove obsolete CVS $ from assembler files in arch/x86_64/kernel/* Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [69/145] x86_64: Disable DAC on VIA PCI bridges Andi Kleen
[not found] ` <20060810205554.GE4745@rhun.haifa.ibm.com>
2006-08-11 6:51 ` Andi Kleen
2006-08-11 19:13 ` Muli Ben-Yehuda
2006-08-11 19:36 ` Andi Kleen
2006-08-11 19:41 ` Muli Ben-Yehuda
2006-08-10 19:36 ` [PATCH for review] [70/145] x86_64: initialize end of memory variables as early as possible Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [71/145] x86_64: remove int_delivery_dest Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [72/145] i386: initialize end-of-memory variables as early as possible Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [73/145] x86_64: Add stack documentation document from Keith Owens Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [74/145] x86_64: Calgary IOMMU: rearrange 'struct iommu_table' members Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [75/145] x86_64: Calgary IOMMU: consolidate per bus data structures Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [76/145] x86_64: Calgary IOMMU: break out of pci_find_device_reverse if dev not found Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [77/145] x86_64: Calgary IOMMU: fix error path memleak in calgary_free_tar Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [78/145] x86_64: Calgary IOMMU: fix reference counting of Calgary PCI devices Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [79/145] x86_64: Calgary IOMMU: calgary_init_one_nontraslated() can return void Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [80/145] x86_64: Calgary IOMMU: save a bit of space in bus_info Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [81/145] i386: Remove lock section support in mutex.h, semaphore.h Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [82/145] x86_64: Don't use lock section for mutexes and semaphores Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [83/145] x86_64: fix is_at_popf() for compat tasks Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [84/145] x86_64: annotate arch/x86_64/lib/*.S Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [85/145] x86_64: Fix gdt table size in trampoline.S Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [86/145] x86_64: remove superflous BUG_ON's in nommu and gart Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [87/145] x86_64: remove lock prefix from is_at_popf() tests Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [88/145] x86_64: Use early CPU identify before early command line parsing Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [89/145] x86_64: Allow early_param and identical __setup to exist Andi Kleen
2006-08-16 16:25 ` Len Brown
2006-08-10 19:36 ` [PATCH for review] [90/145] x86_64: Replace i386 open-coded cmdline parsing with Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [91/145] x86_64: Convert x86-64 to early param Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [92/145] x86_64: Remove need for early lockdep init Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [93/145] i386/x86-64: Move acpi_disabled variables into acpi/boot.c Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [94/145] x86_64: Clean up acpi_numa variable Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [95/145] x86_64: Move e820 map into e820.c Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [96/145] x86_64: Add sparse annotation to vsyscall.c Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [97/145] x86_64: Add sparse annotations to quiet sparse in arch/x86_64/mm/fault.c Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [98/145] x86_64: Fix most sparse warnings in sys_ia32.c Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [99/145] x86_64: Fix sparse warnings in compat aout code Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [100/145] x86_64: Fix broken indentation in iommu_setup Andi Kleen
2006-08-10 19:36 ` [PATCH for review] [101/145] x86_64: Replace local_save_flags+local_irq_disable with Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [102/145] x86_64: Remove unneeded externs in acpi/boot.c Andi Kleen
2006-08-16 15:41 ` Len Brown
2006-08-10 19:37 ` [PATCH for review] [103/145] i386/x86-64: rename is_at_popf(), add iret to tests and fix Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [104/145] x86_64: print whether CONFIG_IOMMU_DEBUG is enabled Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [105/145] x86_64: only verify the allocation bitmap if CONFIG_IOMMU_DEBUG is on Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [106/145] x86_64: remove tce_cache_blast_stress() Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [107/145] x86_64: Calgary IOMMU: eradicate sole remaining 80 chars per line offender Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [108/145] x86_64: Some preparationary cleanup for stack trace Andi Kleen
2006-08-13 6:26 ` Andrew Morton
2006-08-13 6:53 ` Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [109/145] x86_64: Convert modlist_lock to be a raw spinlock Andi Kleen
2006-08-13 5:48 ` Andrew Morton
2006-08-13 6:52 ` Andi Kleen
2006-08-13 7:02 ` Andrew Morton
2006-08-13 7:15 ` Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [110/145] x86_64: Don't access the APIC in safe_smp_processor_id when it is not mapped yet Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [111/145] x86_64: Move unwind_init earlier Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [112/145] x86_64: Merge stacktrace and show_trace Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [113/145] i386: Do stacktracer conversion too Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [114/145] x86_64: Don't force frame pointers for lockdep Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [115/145] x86_64: fix dubious segment register clear in cpu_init() Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [116/145] i386: don't taint UP K7's running SMP kernels Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [117/145] i386: error_code is not safe for kprobes Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [118/145] x86_64: Mark error_entry as forbidden to kprobes Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [119/145] x86_64: X86_64 monotonic_clock goes backwards Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [120/145] i386/x86-64: Improve Kconfig description of CRASH_DUMP Andi Kleen
2006-08-10 21:12 ` Randy.Dunlap
2006-08-10 19:37 ` [PATCH for review] [121/145] x86_64: Make boot_param_data pure BSS Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [122/145] i386: Fix warning in mpparse.c Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [123/145] i386: make fault notifier unconditional and export it Andi Kleen
2006-08-13 15:28 ` Adrian Bunk
2006-08-13 17:11 ` Alan Cox
2006-08-13 17:08 ` Adrian Bunk
2006-08-13 18:04 ` Alan Cox
2006-08-13 20:17 ` Andi Kleen
2006-08-14 0:03 ` Keith Owens
2006-08-10 19:37 ` [PATCH for review] [124/145] " Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [125/145] i376: Make acpi_force static Andi Kleen
2006-08-16 15:47 ` Len Brown
2006-08-16 16:07 ` Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [126/145] i386: Make enable_local_apic static Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [127/145] i386: move kernel_thread_helper into entry.S Andi Kleen
2006-08-11 8:33 ` Jan Beulich
2006-08-11 8:38 ` Andi Kleen
2006-08-11 9:48 ` Jan Beulich
2006-08-11 10:16 ` Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [128/145] i386: Descriptor and trap table cleanups Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [129/145] x86_64: Auto size the per cpu area Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [130/145] i386: clean up topology.c Andi Kleen
2006-08-10 19:50 ` Dave Hansen
2006-08-10 19:55 ` Andi Kleen
2006-08-11 1:32 ` Magnus Damm
2006-08-10 19:37 ` [PATCH for review] [131/145] i386: mark two more functions as __init Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [132/145] x86_64: fix bus numbering format in mmconfig warning Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [133/145] x86_64: Support physical cpu hotplug for x86_64 Andi Kleen
[not found] ` <20060810222056.GA24184@mail.muni.cz>
2006-08-11 4:05 ` Andi Kleen
2006-08-16 16:02 ` Len Brown
2006-08-10 19:37 ` [PATCH for review] [134/145] x86_64: non lazy "sleazy" fpu implementation Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [135/145] x86_64: wire up oops_enter()/oops_exit() Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [136/145] x86_64: x86_64 kernel mapping fix Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [137/145] i386: KPROBE_ENTRY ends up putting code into .fixup Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [138/145] i386: remove redundant generic_identify() calls when identifying cpus Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [139/145] x86_64: mark init_amd() as __cpuinit Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [140/145] i386: mark cpu_dev structures as __cpuinitdata Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [141/145] i386: mark cpu init functions as __cpuinit, data " Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [142/145] i386: mark cpu identify functions as __cpuinit Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [143/145] i386: mark cpu cache " Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [144/145] i386: Disallow kprobes on NMI handlers Andi Kleen
2006-08-10 19:37 ` [PATCH for review] [145/145] " Andi Kleen
[not found] ` <20060810193518.394E413B90__40006.6926530146$1155241071$gmane$org@wotan.suse.de>
2006-08-10 22:42 ` [PATCH for review] [6/145] x86_64: Utilize performance counter reservation framework in oprofile Oleg Verych
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060810193540.8CCCB13B90@wotan.suse.de \
--to=ak@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®