2006-09-05 17:48:26

by Om Narasimhan

[permalink] [raw]
Subject: howto map HDT dumped addresses to AMD64 kernel virtual addresses.

Hi,
I am running a kernel (Suse Enterprise 9 with SP3) and it is hanging
somewhere in the kernel. By hooking up HDT from AMD, I got a the
assembly dump of the routine which causes the infinite loop. How
should I map the addresses dumped by HDT in the format SEG:Offset
(e.g,
0033:00000000_00400C18 mov esi,[loc_0000000000501a64h]
0033:00000000_00400C1E test esi,esi
0033:00000000_00400C20 jz loc_0000000000400c30h
...etc)
to kernel virtual address space?

Regards,
Om.


2006-09-05 18:57:27

by Keith Mannthey

[permalink] [raw]
Subject: Re: howto map HDT dumped addresses to AMD64 kernel virtual addresses.

On 9/5/06, Om Narasimhan <[email protected]> wrote:
> Hi,
> I am running a kernel (Suse Enterprise 9 with SP3) and it is hanging
> somewhere in the kernel. By hooking up HDT from AMD, I got a the
> assembly dump of the routine which causes the infinite loop. How
> should I map the addresses dumped by HDT in the format SEG:Offset
> (e.g,
> 0033:00000000_00400C18 mov esi,[loc_0000000000501a64h]
> 0033:00000000_00400C1E test esi,esi
> 0033:00000000_00400C20 jz loc_0000000000400c30h
> ...etc)
> to kernel virtual address space?

I don't know about your HDT (never used one) but have you already
tried the regular debug paths (nmi watchdog/sysrq/crashdump/kdb) that
SLES9 has?

Thanks,
Keith

2006-09-05 19:33:49

by Om Narasimhan

[permalink] [raw]
Subject: Re: howto map HDT dumped addresses to AMD64 kernel virtual addresses.

On 9/5/06, Keith Mannthey <[email protected]> wrote:
> On 9/5/06, Om Narasimhan <[email protected]> wrote:
> > Hi,
> > I am running a kernel (Suse Enterprise 9 with SP3) and it is hanging
> > somewhere in the kernel. By hooking up HDT from AMD, I got a the
> > assembly dump of the routine which causes the infinite loop. How
> > should I map the addresses dumped by HDT in the format SEG:Offset
> > (e.g,
> > 0033:00000000_00400C18 mov esi,[loc_0000000000501a64h]
> > 0033:00000000_00400C1E test esi,esi
> > 0033:00000000_00400C20 jz loc_0000000000400c30h
> > ...etc)
> > to kernel virtual address space?
>
> I don't know about your HDT (never used one) but have you already
> tried the regular debug paths (nmi watchdog/sysrq/crashdump/kdb) that
> SLES9 has?
No. Thanks. I would try Sysrq and kdb. HDT does not make much sense at
this stage without all those. Thanks for reminding that.
Regards,
Om.

2006-09-05 21:06:35

by Andi Kleen

[permalink] [raw]
Subject: Re: howto map HDT dumped addresses to AMD64 kernel virtual addresses.

"Om Narasimhan" <[email protected]> writes:

> Hi,
> I am running a kernel (Suse Enterprise 9 with SP3) and it is hanging
> somewhere in the kernel. By hooking up HDT from AMD, I got a the
> assembly dump of the routine which causes the infinite loop. How
> should I map the addresses dumped by HDT in the format SEG:Offset
> (e.g,
> 0033:00000000_00400C18 mov esi,[loc_0000000000501a64h]
> 0033:00000000_00400C1E test esi,esi
> 0033:00000000_00400C20 jz loc_0000000000400c30h
> ...etc)
> to kernel virtual address space?

The tool should be able to show you virtual addresses. Those are the virtual
addresses the kernel uses.

-Andi

2006-09-06 05:38:26

by Jan Engelhardt

[permalink] [raw]
Subject: Re: howto map HDT dumped addresses to AMD64 kernel virtual addresses.


> Hi,
> I am running a kernel (Suse Enterprise 9 with SP3) and it is hanging
> somewhere in the kernel. By hooking up HDT from AMD, I got a the
> assembly dump of the routine which causes the infinite loop. How

As long as interrupts are not disabled, sysrq+t should show you the EIP
where it loops.

> should I map the addresses dumped by HDT in the format SEG:Offset
> (e.g,
> 0033:00000000_00400C18 mov esi,[loc_0000000000501a64h]
> 0033:00000000_00400C1E test esi,esi
> 0033:00000000_00400C20 jz loc_0000000000400c30h
> ...etc)
> to kernel virtual address space?


Jan Engelhardt
--