<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/include/asm-i386/processor.h, branch linux-2.6.21.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.21.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.21.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2007-02-26T17:21:46Z</updated>
<entry>
<title>Revert "[PATCH] i386: add idle notifier"</title>
<updated>2007-02-26T17:21:46Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2007-02-26T17:21:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ea3d5226f52ef30f52aa0a04f47f5919c7facacf'/>
<id>urn:sha1:ea3d5226f52ef30f52aa0a04f47f5919c7facacf</id>
<content type='text'>
This reverts commit 2ff2d3d74705d34ab71b21f54634fcf50d57bdd5.

Uwe Bugla reports that he cannot mount a floppy drive any more, and Jiri
Slaby bisected it down to this commit.

Benjamin LaHaise also points out that this is a big hot-path, and that
interrupt delivery while idle is very common and should not go through
all these expensive gyrations.

Fix up conflicts in arch/i386/kernel/apic.c and arch/i386/kernel/irq.c
due to other unrelated irq changes.

Cc: Stephane Eranian &lt;eranian@hpl.hp.com&gt;
Cc: Andi Kleen &lt;ak@suse.de&gt;
Cc: Andrew Morton &lt;akpm@osdl.org&gt;
Cc: Uwe Bugla &lt;uwe.bugla@gmx.de&gt;
Cc: Jiri Slaby &lt;jirislaby@gmail.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] i386: add idle notifier</title>
<updated>2007-02-13T12:26:22Z</updated>
<author>
<name>Stephane Eranian</name>
</author>
<published>2007-02-13T12:26:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2ff2d3d74705d34ab71b21f54634fcf50d57bdd5'/>
<id>urn:sha1:2ff2d3d74705d34ab71b21f54634fcf50d57bdd5</id>
<content type='text'>
Add a notifier mechanism to the low level idle loop.  You can register a
callback function which gets invoked on entry and exit from the low level idle
loop.  The low level idle loop is defined as the polling loop, low-power call,
or the mwait instruction.  Interrupts processed by the idle thread are not
considered part of the low level loop.

The notifier can be used to measure precisely how much is spent in useless
execution (or low power mode).  The perfmon subsystem uses it to turn on/off
monitoring.

Signed-off-by: stephane eranian &lt;eranian@hpl.hp.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Andi Kleen &lt;ak@suse.de&gt;
</content>
</entry>
<entry>
<title>[PATCH] i386: Convert i386 PDA code to use %fs</title>
<updated>2007-02-13T12:26:20Z</updated>
<author>
<name>Jeremy Fitzhardinge</name>
</author>
<published>2007-02-13T12:26:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=464d1a78fbf8cf6c7fd970e7b3e2db50a320ce28'/>
<id>urn:sha1:464d1a78fbf8cf6c7fd970e7b3e2db50a320ce28</id>
<content type='text'>
Convert the PDA code to use %fs rather than %gs as the segment for
per-processor data.  This is because some processors show a small but
measurable performance gain for reloading a NULL segment selector (as %fs
generally is in user-space) versus a non-NULL one (as %gs generally is).

On modern processors the difference is very small, perhaps undetectable.
Some old AMD "K6 3D+" processors are noticably slower when %fs is used
rather than %gs; I have no idea why this might be, but I think they're
sufficiently rare that it doesn't matter much.

This patch also fixes the math emulator, which had not been adjusted to
match the changed struct pt_regs.

[frederik.deweerdt@gmail.com: fixit with gdb]
[mingo@elte.hu: Fix KVM too]

Signed-off-by: Jeremy Fitzhardinge &lt;jeremy@xensource.com&gt;
Signed-off-by: Andi Kleen &lt;ak@suse.de&gt;
Cc: Ian Campbell &lt;Ian.Campbell@XenSource.com&gt;
Acked-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Acked-by: Zachary Amsden &lt;zach@vmware.com&gt;
Cc: Eric Dumazet &lt;dada1@cosmosbay.com&gt;
Signed-off-by: Frederik Deweerdt &lt;frederik.deweerdt@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] x86: fix PDA variables to work during boot</title>
<updated>2007-01-23T03:39:36Z</updated>
<author>
<name>James Bottomley</name>
</author>
<published>2007-01-22T15:18:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9ee79a3d372fcb6729893437f4923c5efd1f85db'/>
<id>urn:sha1:9ee79a3d372fcb6729893437f4923c5efd1f85db</id>
<content type='text'>
The current PDA code, which went in in post 2.6.19 has a flaw in that it
doesn't correctly cycle the GDT and %GS segment through the boot PDA,
the CPU PDA and finally the per-cpu PDA.

The bug generally doesn't show up if the boot CPU id is zero, but
everything falls apart for a non zero boot CPU id.  The basically kills
voyager which is perfectly capable of doing non zero CPU id boots, so
voyager currently won't boot without this.

The fix is to be careful and actually do the GDT setups correctly.

Signed-off-by: James Bottomley &lt;James.Bottomley@SteelEye.com&gt;
Cc: Andi Kleen &lt;ak@suse.de&gt;
Cc: Jeremy Fitzhardinge &lt;jeremy@goop.org&gt;
Cc: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] i386: cpu_detect extraction</title>
<updated>2006-12-07T01:14:08Z</updated>
<author>
<name>Rusty Russell</name>
</author>
<published>2006-12-07T01:14:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d7cd56111f30259e1b532a12e06f59f8e0a20355'/>
<id>urn:sha1:d7cd56111f30259e1b532a12e06f59f8e0a20355</id>
<content type='text'>
Both lhype and Xen want to call the core of the x86 cpu detect code before
calling start_kernel.

(extracted from larger patch)

AK: folded in start_kernel header patch

Signed-off-by: Jeremy Fitzhardinge &lt;jeremy@xensource.com&gt;
Signed-off-by: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
Signed-off-by: Andi Kleen &lt;ak@suse.de&gt;
Cc: Jeremy Fitzhardinge &lt;jeremy@goop.org&gt;
Cc: Andi Kleen &lt;ak@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] paravirt: Patch inline replacements for paravirt intercepts</title>
<updated>2006-12-07T01:14:08Z</updated>
<author>
<name>Rusty Russell</name>
</author>
<published>2006-12-07T01:14:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=139ec7c416248b9ea227d21839235344edfee1e0'/>
<id>urn:sha1:139ec7c416248b9ea227d21839235344edfee1e0</id>
<content type='text'>
It turns out that the most called ops, by several orders of magnitude,
are the interrupt manipulation ops.  These are obvious candidates for
patching, so mark them up and create infrastructure for it.

The method used is that the ops structure has a patch function, which
is called for each place which needs to be patched: this returns a
number of instructions (the rest are NOP-padded).

Usually we can spare a register (%eax) for the binary patched code to
use, but in a couple of critical places in entry.S we can't: we make
the clobbers explicit at the call site, and manually clobber the
allowed registers in debug mode as an extra check.

And:

Don't abuse CONFIG_DEBUG_KERNEL, add CONFIG_DEBUG_PARAVIRT.

And:

AK:  Fix warnings in x86-64 alternative.c build

And:

AK: Fix compilation with defconfig

And:

^From: Andrew Morton &lt;akpm@osdl.org&gt;

Some binutlises still like to emit references to __stop_parainstructions and
__start_parainstructions.

And:

AK: Fix warnings about unused variables when PARAVIRT is disabled.

Signed-off-by: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
Signed-off-by: Jeremy Fitzhardinge &lt;jeremy@xensource.com&gt;
Signed-off-by: Chris Wright &lt;chrisw@sous-sol.org&gt;
Signed-off-by: Zachary Amsden &lt;zach@vmware.com&gt;
Signed-off-by: Andi Kleen &lt;ak@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] paravirt: header and stubs for paravirtualisation</title>
<updated>2006-12-07T01:14:07Z</updated>
<author>
<name>Rusty Russell</name>
</author>
<published>2006-12-07T01:14:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d3561b7fa0fb0fc583bab0eeda32bec9e4c4056d'/>
<id>urn:sha1:d3561b7fa0fb0fc583bab0eeda32bec9e4c4056d</id>
<content type='text'>
Create a paravirt.h header for all the critical operations which need to be
replaced with hypervisor calls, and include that instead of defining native
operations, when CONFIG_PARAVIRT.

This patch does the dumbest possible replacement of paravirtualized
instructions: calls through a "paravirt_ops" structure.  Currently these are
function implementations of native hardware: hypervisors will override the ops
structure with their own variants.

All the pv-ops functions are declared "fastcall" so that a specific
register-based ABI is used, to make inlining assember easier.

And:

+From: Andy Whitcroft &lt;apw@shadowen.org&gt;

The paravirt ops introduce a 'weak' attribute onto memory_setup().
Code ordering leads to the following warnings on x86:

    arch/i386/kernel/setup.c:651: warning: weak declaration of
                `memory_setup' after first use results in unspecified behavior

Move memory_setup() to avoid this.

Signed-off-by: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
Signed-off-by: Chris Wright &lt;chrisw@sous-sol.org&gt;
Signed-off-by: Andi Kleen &lt;ak@suse.de&gt;
Cc: Jeremy Fitzhardinge &lt;jeremy@goop.org&gt;
Cc: Zachary Amsden &lt;zach@vmware.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Andy Whitcroft &lt;apw@shadowen.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] i386: Retrieve CLFLUSH size from CPUID</title>
<updated>2006-12-07T01:14:05Z</updated>
<author>
<name>Andi Kleen</name>
</author>
<published>2006-12-07T01:14:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=770d132f03ac15b12919f1bac481f4beda13e094'/>
<id>urn:sha1:770d132f03ac15b12919f1bac481f4beda13e094</id>
<content type='text'>
Also report it in /proc/cpuinfo similar to x86-64.

Needed for followon patch

Signed-off-by: Andi Kleen &lt;ak@suse.de&gt;
</content>
</entry>
<entry>
<title>[PATCH] i386: Use %gs as the PDA base-segment in the kernel</title>
<updated>2006-12-07T01:14:02Z</updated>
<author>
<name>Jeremy Fitzhardinge</name>
</author>
<published>2006-12-07T01:14:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f95d47caae5302a63d92be9a0292abc90e2a14e1'/>
<id>urn:sha1:f95d47caae5302a63d92be9a0292abc90e2a14e1</id>
<content type='text'>
This patch is the meat of the PDA change.  This patch makes several related
changes:

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

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

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

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

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

Signed-off-by: Jeremy Fitzhardinge &lt;jeremy@xensource.com&gt;
Signed-off-by: Andi Kleen &lt;ak@suse.de&gt;
Cc: Chuck Ebbert &lt;76306.1226@compuserve.com&gt;
Cc: Zachary Amsden &lt;zach@vmware.com&gt;
Cc: Jan Beulich &lt;jbeulich@novell.com&gt;
Cc: Andi Kleen &lt;ak@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] i386: Initialize the per-CPU data area</title>
<updated>2006-12-07T01:14:02Z</updated>
<author>
<name>Jeremy Fitzhardinge</name>
</author>
<published>2006-12-07T01:14:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=62111195800d80c66cdc69063ea3145878c99fbf'/>
<id>urn:sha1:62111195800d80c66cdc69063ea3145878c99fbf</id>
<content type='text'>
When a CPU is brought up, a PDA and GDT are allocated for it.  The GDT's
__KERNEL_PDA entry is pointed to the allocated PDA memory, so that all
references using this segment descriptor will refer to the PDA.

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

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

Signed-off-by: Jeremy Fitzhardinge &lt;jeremy@xensource.com&gt;
Signed-off-by: Andi Kleen &lt;ak@suse.de&gt;
Cc: Chuck Ebbert &lt;76306.1226@compuserve.com&gt;
Cc: Zachary Amsden &lt;zach@vmware.com&gt;
Cc: Jan Beulich &lt;jbeulich@novell.com&gt;
Cc: Andi Kleen &lt;ak@suse.de&gt;
Cc: James Bottomley &lt;James.Bottomley@SteelEye.com&gt;
Cc: Matt Tolentino &lt;matthew.e.tolentino@intel.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
</content>
</entry>
</feed>
