<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/x86/kernel/traps.c, branch linux-2.6.28.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2009-03-17T00:32:44Z</updated>
<entry>
<title>x86: fix math_emu register frame access</title>
<updated>2009-03-17T00:32:44Z</updated>
<author>
<name>Tejun Heo</name>
</author>
<published>2009-02-09T13:17:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bf7fced49e689f01f0b5c12046e193116aa03221'/>
<id>urn:sha1:bf7fced49e689f01f0b5c12046e193116aa03221</id>
<content type='text'>
commit d315760ffa261c15ff92699ac6f514112543d7ca upstream.

do_device_not_available() is the handler for #NM and it declares that
it takes a unsigned long and calls math_emu(), which takes a long
argument and surprisingly expects the stack frame starting at the zero
argument would match struct math_emu_info, which isn't true regardless
of configuration in the current code.

This patch makes do_device_not_available() take struct pt_regs like
other exception handlers and initialize struct math_emu_info with
pointer to it and pass pointer to the math_emu_info to math_emulate()
like normal C functions do.  This way, unless gcc makes a copy of
struct pt_regs in do_device_not_available(), the register frame is
correctly accessed regardless of kernel configuration or compiler
used.

This doesn't fix all math_emu problems but it at least gets it
somewhat working.

Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>x86, vm86: fix preemption bug</title>
<updated>2009-02-20T22:40:21Z</updated>
<author>
<name>Thomas Gleixner</name>
</author>
<published>2009-01-13T22:36:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=14da78c411a1218764439c0004f0ea2b7d0c0c4c'/>
<id>urn:sha1:14da78c411a1218764439c0004f0ea2b7d0c0c4c</id>
<content type='text'>
commit be716615fe596ee117292dc615e95f707fb67fd1 upstream.

Commit 3d2a71a596bd9c761c8487a2178e95f8a61da083 ("x86, traps: converge
do_debug handlers") changed the preemption disable logic of do_debug()
so vm86_handle_trap() is called with preemption disabled resulting in:

 BUG: sleeping function called from invalid context at include/linux/kernel.h:155
 in_atomic(): 1, irqs_disabled(): 0, pid: 3005, name: dosemu.bin
 Pid: 3005, comm: dosemu.bin Tainted: G        W  2.6.29-rc1 #51
 Call Trace:
  [&lt;c050d669&gt;] copy_to_user+0x33/0x108
  [&lt;c04181f4&gt;] save_v86_state+0x65/0x149
  [&lt;c0418531&gt;] handle_vm86_trap+0x20/0x8f
  [&lt;c064e345&gt;] do_debug+0x15b/0x1a4
  [&lt;c064df1f&gt;] debug_stack_correct+0x27/0x2c
  [&lt;c040365b&gt;] sysenter_do_call+0x12/0x2f
 BUG: scheduling while atomic: dosemu.bin/3005/0x10000001

Restore the original calling convention and reenable preemption before
calling handle_vm86_trap().

Reported-by: Michal Suchanek &lt;hramrach@centrum.cz&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>MCE: Don't run 32bit machine checks with interrupts on</title>
<updated>2008-10-22T11:19:01Z</updated>
<author>
<name>Andi Kleen</name>
</author>
<published>2008-10-21T20:45:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d2f6f7aeee890df445be29a60e34925ec15f620c'/>
<id>urn:sha1:d2f6f7aeee890df445be29a60e34925ec15f620c</id>
<content type='text'>
Running machine checks with interrupt on is a extremly bad idea. The machine
check handler only runs when the system is broken and needs to finish
as quickly as possible.

Remove the respective bogus post 2.6.27 regression and call
the machine check vector directly again.

This removes only code.

Signed-off-by: Andi Kleen &lt;ak@linux.intel.com&gt;
[Cherry-picked from x86/mce]
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>dumpstack: x86: move die_nmi to dumpstack_32.c</title>
<updated>2008-10-13T08:33:39Z</updated>
<author>
<name>Alexander van Heukelum</name>
</author>
<published>2008-10-04T21:12:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=dd6e4eba1c03c9562fced21736453396c045f869'/>
<id>urn:sha1:dd6e4eba1c03c9562fced21736453396c045f869</id>
<content type='text'>
For some reason die_nmi is still defined in traps.c for
i386, but is found in dumpstack_64.c for x86_64. Move it
to dumpstack_32.c

Signed-off-by: Alexander van Heukelum &lt;heukelum@fastmail.fm&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>traps: x86: finalize unification of traps.c</title>
<updated>2008-10-13T08:33:29Z</updated>
<author>
<name>Alexander van Heukelum</name>
</author>
<published>2008-10-03T20:00:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8728861b4fead8119a1b7bb856a387320859cd98'/>
<id>urn:sha1:8728861b4fead8119a1b7bb856a387320859cd98</id>
<content type='text'>
traps_32.c and traps_64.c are now equal. Move one to traps.c,
delete the other one and change the Makefile

Signed-off-by: Alexander van Heukelum &lt;heukelum@fastmail.fm&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
</feed>
