kdb
[Top] [All Lists]

Re: [kdb] 2.6.29-rc2 patches are broken for x86

To: kdb@xxxxxxxxxxx
Subject: Re: [kdb] 2.6.29-rc2 patches are broken for x86
From: Martin Hicks <mort@xxxxxxx>
Date: Wed, 28 Jan 2009 12:42:19 -0600
In-reply-to: <20090122140519.GL204212@xxxxxxxxxxxxxxxxxxxxxxxxx>
References: <20090119211653.GA204212@xxxxxxxxxxxxxxxxxxxxxxxxx> <20090122140519.GL204212@xxxxxxxxxxxxxxxxxxxxxxxxx>
User-agent: Mutt/1.4.2.2i
On Thu, Jan 22, 2009 at 08:05:19AM -0600, Martin Hicks wrote:
> 
> On Mon, Jan 19, 2009 at 03:16:54PM -0600, Martin Hicks wrote:
> > 
> > Hi,
> > 
> > I've been trying to get patches for 2.6.29-rc out, but I've been unable
> > to get it working correctly for x86_64.  The patches are here
> > 
> 
> ...
> 
> > This happens right in the "nasty" interrupt stack fix-up at the
> > end of kdba_get_stack_info_alternate()
> > 
> > Any ideas why this be happening?  Did I mis-merge somewhere?
> 
> d99015b1abbad743aa049b439c1e1dede6d0fa49 is first bad commit
> commit d99015b1abbad743aa049b439c1e1dede6d0fa49
> Author: Alexander van Heukelum <heukelum@xxxxxxxxxxxxx>
> Date:   Wed Nov 19 01:18:11 2008 +0100
> 
> That's the commit that breaks kdb.  I still haven't figured out how this
> changes the stack contents when the fixup happens.


In 2.6.28 the top few bytes (highest addresses) of the interrupt stack
look like this (top == highest addr, bottom == lowest addr):

<next stack pointer>     <- top of irqstack and pointer to the previous stack
<ret_from_intr     >     <- return address
< 5 stack addrs    >     <- local stackspace
<do_IRQ            >     <- the next function down the stack

2.6.29 has the ret_from_intr address right at the top address of the
stack, so ar.next is incorrect and tries to modify kernel code in
ret_from_intr.


What pushes this stack pointer that we use to find the pre-interrupt
stack?  Is that done by hardwware?

mh

<Prev in Thread] Current Thread [Next in Thread>