public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Jan Beulich" <JBeulich@novell.com>
To: <linux-kernel@vger.kernel.org>
Subject: [PATCH 38/39] NLKD/i386 - Remote Debug Agent
Date: Wed, 09 Nov 2005 15:30:37 +0100	[thread overview]
Message-ID: <4372161D.76F0.0078.0@novell.com> (raw)
In-Reply-To: 43721600.76F0.0078.0@novell.com

[-- Attachment #1: Type: text/plain, Size: 135 bytes --]

The i386-dependent part of the Remote Debug Agent of NLKD.

Signed-Off-By: Jan Beulich <jbeulich@novell.com>

(actual patch attached)


[-- Attachment #2: nlkd-rda-i386.patch --]
[-- Type: application/octet-stream, Size: 15695 bytes --]

The i386-dependent part of the Remote Debug Agent of NLKD.

Signed-Off-By: Jan Beulich <jbeulich@novell.com>

Index: 2.6.14-nlkd/debug/nlkd/rda/rdaIA32.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ 2.6.14-nlkd/debug/nlkd/rda/rdaIA32.c	2005-06-27 12:00:41.000000000 +0200
@@ -0,0 +1,431 @@
+/*****************************************************************************
+ *
+ *   File Name:      rdaIA32.c
+ *   Created by:     Jan Beulich
+ *   Date created:   23Jan2003
+ *
+ *   %version:       7 %
+ *   %derived_by:    jbeulich %
+ *   %date_modified: Mon Jun 27 04:00:30 2005 %
+ *
+ *****************************************************************************/
+/*****************************************************************************
+ *                                                                           *
+ * Copyright (c) 2003-2005 Novell, Inc. All Rights Reserved.                 *
+ *                                                                           *
+ * This program is free software; you can redistribute it and/or             *
+ * modify it under the terms of version 2 of the GNU General Public License  *
+ * as published by the Free Software Foundation.                             *
+ *                                                                           *
+ * This program is distributed in the hope that it will be useful,           *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of            *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the              *
+ * GNU General Public License for more details.                              *
+ *                                                                           *
+ * You should have received a copy of the GNU General Public License         *
+ * along with this program; if not, contact Novell, Inc.                     *
+ *                                                                           *
+ * To contact Novell about this file by physical or electronic mail,         *
+ * you may find current contact information at www.novell.com.               *
+ *                                                                           *
+ *****************************************************************************/
+/*****************************************************************************
+ *
+ *	File Description:
+ *
+ *****************************************************************************/
+
+#include <asm/cde.h>
+
+#include "rda.h"
+
+#define r_FTW (r_invalid - 1)
+#define r_FIP (r_invalid - 2)
+#define r_FDP (r_invalid - 3)
+#define r_FOP (r_invalid - 4)
+
+#undef EAX /* colliding with include/asm/ptrace.h */
+#undef ECX
+#undef EDX
+#undef EBX
+#undef EBP
+#undef ESP
+#undef ESI
+#undef EDI
+#undef EIP
+#undef CS
+#undef DS
+#undef ES
+#undef FS
+#undef GS
+#undef SS
+#define REGINFO(gdb, w, cls, idx) gdb,
+enum gdb_registers {
+#include "rdaIA32.incl"
+	gdbCOUNT
+};
+#undef REGINFO
+
+union fpreg_u {
+	float80_t raw;
+	struct {
+		uint32_t mant_lo;
+		uint32_t mant_hi;
+		uint16_t sign_exp;
+	};
+};
+
+cdeBool_t rdaSetPC(RdaSessionState*state, uintptr_t address) {
+	if(!cdeWriteEIP(state->currentFrame, address)) {
+		rdaError(state, RDA_EINVAL);
+		return cdeFalse;
+	}
+	return cdeTrue;
+}
+
+void rdaPutFrameInfo(RdaSessionState*state) {
+	const ftaFullInterruptionCtx_t*frame = state->currentFrame;
+	int sigval;
+	uint32_t value;
+
+	switch(cdeGetInterruptionType(frame, NULL)) {
+	default:
+		sigval = 2;
+		break;
+	case IA32_ILLEGAL_OPCODE:
+		sigval = 4;
+		break;
+	case IA32_DEBUG:
+	case IA32_BREAKPOINT:
+		sigval = 5;
+		break;
+	case IA32_RSVD_0F:
+	case IA32_RSVD_14:
+	case IA32_RSVD_15:
+	case IA32_RSVD_16:
+	case IA32_RSVD_17:
+	case IA32_RSVD_18:
+	case IA32_RSVD_19:
+	case IA32_RSVD_1A:
+	case IA32_RSVD_1B:
+	case IA32_RSVD_1C:
+	case IA32_RSVD_1D:
+	case IA32_RSVD_1E:
+	case IA32_RSVD_1F:
+		sigval = 6;
+		break;
+	case IA32_DOUBLE_FAULT:
+		sigval = 7;
+		break;
+	case IA32_DIVIDE_ERROR:
+	case IA32_DEVICE_NOT_AVAILABLE:
+	case IA32_FP_ERROR:
+	case IA32_SIMD_FP_ERROR:
+		sigval = 8;
+		break;
+	case IA32_ALIGNMENT_CHECK:
+		sigval = 10;
+		break;
+	case IA32_COPROCESSOR_SEGMENT_OVERRUN:
+	case IA32_INVALID_TSS:
+	case IA32_SEGMENT_NOT_PRESENT:
+	case IA32_GENERAL_PROTECTION_FAULT:
+	case IA32_PAGE_FAULT:
+		sigval = 11;
+		break;
+	case IA32_OVERFLOW:
+	case IA32_BOUNDS_CHECK:
+	case IA32_STACK_FAULT:
+		sigval = 16;
+		break;
+	}
+	rdaPutHex(state, sigval, 1);
+	rdaPutHex(state, EIP, 0);
+	rdaPutChar(state, ':');
+	rdaPutHex(state, cdeReadEIP(frame), -4);
+	rdaPutChar(state, ';');
+	if(cdeReadGR(reg_esp, frame, &value)) {
+		rdaPutHex(state, ESP, 0);
+		rdaPutChar(state, ':');
+		rdaPutHex(state, value, -4);
+		rdaPutChar(state, ';');
+	}
+	if(cdeReadGR(reg_ebp, frame, &value)) {
+		rdaPutHex(state, EBP, 0);
+		rdaPutChar(state, ':');
+		rdaPutHex(state, value, -4);
+		rdaPutChar(state, ';');
+	}
+}
+
+#define REGINFO(gdb, w, cls, idx) {r_##cls, idx},
+static const struct regInfo {
+	signed char type;
+	unsigned char index;
+} regInfo[] = {
+#include "rdaIA32.incl"
+};
+#undef REGINFO
+
+void rdaGetRegisters(RdaSessionState*state,
+		const char*input,
+		size_t inputSize) {
+	unsigned i;
+
+	if(state->currentFrame == NULL) {
+		rdaError(state, RDA_EAGAIN);
+		return;
+	}
+	if(inputSize != 0) {
+		rdaError(state, RDA_EINVAL);
+		return;
+	}
+	for(i = 0; i < gdbCOUNT; ++i) {
+		switch(regInfo[i].type) {
+		case r_eip:
+			rdaPutHex(state, cdeReadEIP(state->currentFrame), -4);
+			break;
+		case r_eflags:
+			rdaPutHex(state, cdeReadEFLAGS(state->currentFrame), -4);
+			break;
+		case r_general: {
+				uint32_t value;
+
+				if(!cdeReadGR(regInfo[i].index, state->currentFrame, &value))
+					value = 0;
+				rdaPutHex(state, value, -4);
+			}
+			break;
+		case r_selector: {
+				uint16_t value;
+
+				if(!cdeReadSR(regInfo[i].index, state->currentFrame, &value))
+					value = 0;
+				rdaPutHex(state, value, -4);
+			}
+			break;
+		case r_floating: {
+				union fpreg_u value;
+
+				if(!cdeReadFR(regInfo[i].index, state->currentFrame, &value.raw))
+					dbgZeroMem(&value, sizeof(value));
+				rdaPutHex(state, value.mant_lo, -4);
+				rdaPutHex(state, value.mant_hi, -4);
+				rdaPutHex(state, value.sign_exp, -2);
+			}
+			break;
+		case r_fcw: {
+				uint16_t value;
+
+				if(!cdeReadFpuControlWord(state->currentFrame, &value))
+					value = 0;
+				rdaPutHex(state, value, -4);
+			}
+			break;
+		case r_fsw: {
+				uint16_t value;
+
+				if(!cdeReadFpuStatusWord(state->currentFrame, &value))
+					value = 0;
+				rdaPutHex(state, value, -4);
+			}
+			break;
+		case r_FTW: {
+				uint16_t value;
+
+				if(!cdeReadFpuTagWord(state->currentFrame, &value))
+					value = 0;
+				rdaPutHex(state, value, -4);
+			}
+			break;
+		case r_FIP: {
+				struct CdeAddress address;
+
+				if(!cdeReadFpuCodePointer(state->currentFrame, &address))
+					dbgZeroMem(&address, sizeof(address));
+				rdaPutHex(state, regInfo[i].index ? address.selector : address.offset, -4);
+			}
+			break;
+		case r_FDP: {
+				struct CdeAddress address;
+
+				if(!cdeReadFpuDataPointer(state->currentFrame, &address))
+					dbgZeroMem(&address, sizeof(address));
+				rdaPutHex(state, regInfo[i].index ? address.selector : address.offset, -4);
+			}
+			break;
+		case r_FOP: {
+				uint16_t value;
+
+				if(!cdeReadFpuOpcode(state->currentFrame, &value))
+					value = 0;
+				rdaPutHex(state, value, -4);
+			}
+			break;
+		case r_xmm:
+			if(cdeWriteMXCSR(NULL, 0)) {
+				xmmreg_t value;
+
+				if(!cdeReadXMM(regInfo[i].index, state->currentFrame, &value))
+					dbgZeroMem(&value, sizeof(value));
+				rdaPutHex(state, value.d[0], -4);
+				rdaPutHex(state, value.d[1], -4);
+				rdaPutHex(state, value.d[2], -4);
+				rdaPutHex(state, value.d[3], -4);
+			}
+			break;
+		case r_mxcsr:
+			if(cdeWriteMXCSR(NULL, 0)) {
+				uint32_t value;
+
+				if(!cdeReadMXCSR(state->currentFrame, &value))
+					dbgZeroMem(&value, sizeof(value));
+				rdaPutHex(state, value, -4);
+			}
+			break;
+		default:
+			RTASSERT(!(regInfo + i));
+			break;
+		}
+	}
+}
+
+static cdeBool_t setReg(RdaSessionState*state,
+		const struct regInfo*info,
+		const char**pInput) {
+	cdeBool_t result = cdeFalse;
+
+	switch(info->type) {
+		uint32_t value;
+
+	case r_eip:
+		value = rdaGetHex(*pInput, pInput, -4);
+		if(*pInput != NULL)
+			result = cdeWriteEIP(state->currentFrame, value);
+		break;
+	case r_eflags:
+		value = rdaGetHex(*pInput, pInput, -4);
+		if(*pInput != NULL)
+			result = cdeWriteEFLAGS(state->currentFrame, value);
+		break;
+	case r_general:
+		value = rdaGetHex(*pInput, pInput, -4);
+		if(*pInput != NULL)
+			result = cdeWriteGR(info->index, state->currentFrame, value);
+		break;
+	case r_selector:
+		value = rdaGetHex(*pInput, pInput, -4);
+		if(*pInput != NULL)
+			result = (value == (uint16_t)value && cdeWriteSR(info->index, state->currentFrame, (uint16_t)value));
+		break;
+	case r_floating: {
+			union fpreg_u value;
+
+			value.mant_lo = rdaGetHex(*pInput, pInput, -4);
+			if(*pInput != NULL)
+				value.mant_hi = rdaGetHex(*pInput, pInput, -4);
+			if(*pInput != NULL)
+				value.sign_exp = (uint16_t)rdaGetHex(*pInput, pInput, -2);
+			if(*pInput != NULL)
+				result = cdeWriteFR(info->index, state->currentFrame, &value.raw);
+		}
+		break;
+	case r_fcw:
+		value = rdaGetHex(*pInput, pInput, -4);
+		if(*pInput != NULL)
+			result = (value == (uint16_t)value && cdeWriteFpuControlWord(state->currentFrame, (uint16_t)value));
+		break;
+	case r_fsw:
+		value = rdaGetHex(*pInput, pInput, -4);
+		if(*pInput != NULL)
+			result = (value == (uint16_t)value && cdeWriteFpuStatusWord(state->currentFrame, (uint16_t)value));
+		break;
+	case r_FTW:
+		value = rdaGetHex(*pInput, pInput, -4);
+		if(*pInput != NULL)
+			result = (value == (uint16_t)value && cdeWriteFpuTagWord(state->currentFrame, (uint16_t)value));
+		break;
+	case r_FIP:
+	case r_FDP:
+	case r_FOP:
+		result = cdeFalse;
+		break;
+	case r_xmm: {
+			xmmreg_t value;
+
+			value.d[0] = rdaGetHex(*pInput, pInput, -4);
+			if(*pInput != NULL)
+				value.d[1] = rdaGetHex(*pInput, pInput, -4);
+			if(*pInput != NULL)
+				value.d[2] = rdaGetHex(*pInput, pInput, -4);
+			if(*pInput != NULL)
+				value.d[3] = rdaGetHex(*pInput, pInput, -4);
+			if(*pInput != NULL)
+				result = cdeWriteXMM(info->index, state->currentFrame, &value);
+		}
+		break;
+	case r_mxcsr:
+		value = rdaGetHex(*pInput, pInput, -4);
+		if(*pInput != NULL)
+			result = cdeWriteMXCSR(state->currentFrame, value);
+		break;
+	default:
+		RTASSERT(!info);
+		break;
+	}
+	if(*pInput == NULL) {
+		rdaError(state, RDA_EFORMAT);
+		result = cdeFalse;
+	}
+	else if(!result)
+		rdaError(state, RDA_EINVAL);
+	return result;
+}
+
+void rdaSetRegisters(RdaSessionState*state,
+		const char*input,
+		size_t inputSize) {
+	unsigned index;
+	const char*end;
+
+	if(state->currentFrame == NULL) {
+		rdaError(state, RDA_EAGAIN);
+		return;
+	}
+	if(inputSize & 1) {
+		rdaError(state, RDA_EINVAL);
+		return;
+	}
+	for(index = 0, end = input; index < gdbCOUNT; ++index) {
+		if(!setReg(state, regInfo + index, &end))
+			return;
+		if(input + inputSize == end)
+			break;
+	}
+	if(index == gdbCOUNT)
+		rdaOK(state);
+	else
+		rdaError(state, RDA_EPARTIAL);
+}
+
+void rdaSetRegister(RdaSessionState*state,
+		const char*input,
+		size_t inputSize) {
+	const char*end;
+	uintptr_t index = rdaGetHex(input, &end, 0);
+
+	if(index >= gdbCOUNT) {
+		rdaError(state, RDA_EINVAL);
+		return;
+	}
+	if(state->currentFrame == NULL) {
+		rdaError(state, RDA_EAGAIN);
+		return;
+	}
+	if(!setReg(state, regInfo + index, &input))
+		return;
+	if(input + inputSize == end)
+		rdaOK(state);
+	else
+		rdaError(state, RDA_EFORMAT);
+}
Index: 2.6.14-nlkd/debug/nlkd/rda/rdaIA32.incl
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ 2.6.14-nlkd/debug/nlkd/rda/rdaIA32.incl	2005-06-27 12:01:06.000000000 +0200
@@ -0,0 +1,78 @@
+/*****************************************************************************
+ *
+ *   File Name:      rdaIA32.incl
+ *   Created by:     Jan Beulich
+ *   Date created:   23Jan2003
+ *
+ *   %version:       3 %
+ *   %derived_by:    jbeulich %
+ *   %date_modified: Mon Jun 27 04:00:55 2005 %
+ *
+ *****************************************************************************/
+/*****************************************************************************
+ *                                                                           *
+ * Copyright (c) 2003-2005 Novell, Inc. All Rights Reserved.                 *
+ *                                                                           *
+ * This program is free software; you can redistribute it and/or             *
+ * modify it under the terms of version 2 of the GNU General Public License  *
+ * as published by the Free Software Foundation.                             *
+ *                                                                           *
+ * This program is distributed in the hope that it will be useful,           *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of            *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the              *
+ * GNU General Public License for more details.                              *
+ *                                                                           *
+ * You should have received a copy of the GNU General Public License         *
+ * along with this program; if not, contact Novell, Inc.                     *
+ *                                                                           *
+ * To contact Novell about this file by physical or electronic mail,         *
+ * you may find current contact information at www.novell.com.               *
+ *                                                                           *
+ *****************************************************************************/
+/*****************************************************************************
+ *
+ *	File Description:
+ *
+ *****************************************************************************/
+
+REGINFO(EAX,    4, general,  reg_eax)
+REGINFO(ECX,    4, general,  reg_ecx)
+REGINFO(EDX,    4, general,  reg_edx)
+REGINFO(EBX,    4, general,  reg_ebx)
+REGINFO(ESP,    4, general,  reg_esp)
+REGINFO(EBP,    4, general,  reg_ebp)
+REGINFO(ESI,    4, general,  reg_esi)
+REGINFO(EDI,    4, general,  reg_edi)
+REGINFO(EIP,    4, eip,      0)
+REGINFO(EFLAGS, 4, eflags,   0)
+REGINFO(CS,     4, selector, sreg_cs)
+REGINFO(SS,     4, selector, sreg_ss)
+REGINFO(DS,     4, selector, sreg_ds)
+REGINFO(ES,     4, selector, sreg_es)
+REGINFO(FS,     4, selector, sreg_fs)
+REGINFO(GS,     4, selector, sreg_gs)
+REGINFO(ST0,   10, floating, st0)
+REGINFO(ST1,   10, floating, st1)
+REGINFO(ST2,   10, floating, st2)
+REGINFO(ST3,   10, floating, st3)
+REGINFO(ST4,   10, floating, st4)
+REGINFO(ST5,   10, floating, st5)
+REGINFO(ST6,   10, floating, st6)
+REGINFO(ST7,   10, floating, st7)
+REGINFO(FCTRL,  4, fcw,      0)
+REGINFO(FSTAT,  4, fsw,      0)
+REGINFO(FTAG,   4, FTW,      0)
+REGINFO(FISEG,  4, FIP,      1)
+REGINFO(FIOFF,  4, FIP,      0)
+REGINFO(FOSEG,  4, FDP,      1)
+REGINFO(FOOFF,  4, FDP,      0)
+REGINFO(FOP,    4, FOP,      0)
+REGINFO(XMM0,  16, xmm,      0)
+REGINFO(XMM1,  16, xmm,      1)
+REGINFO(XMM2,  16, xmm,      2)
+REGINFO(XMM3,  16, xmm,      3)
+REGINFO(XMM4,  16, xmm,      4)
+REGINFO(XMM5,  16, xmm,      5)
+REGINFO(XMM6,  16, xmm,      6)
+REGINFO(XMM7,  16, xmm,      7)
+REGINFO(MXCSR,  4, mxcsr,    0)

  parent reply	other threads:[~2005-11-09 14:29 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-11-09 13:54 [PATCH 0/39] NLKD - Novell Linux Kernel Debugger Jan Beulich
2005-11-09 13:56 ` [PATCH 1/39] NLKD - an alternative kallsyms approach Jan Beulich
2005-11-09 13:57   ` [PATCH 2/39] NLKD - an alternative early ioremap approach Jan Beulich
2005-11-09 13:58     ` [PATCH 3/39] NLKD - early/late CPU up/down notification Jan Beulich
2005-11-09 13:59       ` [PATCH 4/39] NLKD/i386 " Jan Beulich
2005-11-09 14:01       ` [PATCH 5/39] NLKD/x86-64 " Jan Beulich
2005-11-10 13:10         ` Andi Kleen
2005-11-14  8:04           ` [discuss] " Jan Beulich
2005-11-14 12:37             ` Andi Kleen
2005-11-09 14:01       ` [PATCH 6/39] NLKD - early panic notification Jan Beulich
2005-11-09 14:02         ` [PATCH 7/39] NLKD - task create/destroy notification Jan Beulich
2005-11-09 14:03           ` [PATCH 8/39] NLKD - rmmod notification Jan Beulich
2005-11-09 14:04             ` [PATCH 9/39] NLKD - hotkey notification Jan Beulich
2005-11-09 14:05               ` [PATCH 10/39] NLKD - console layout change notification Jan Beulich
2005-11-09 14:06                 ` [PATCH 11/39] NLKD - time adjustment Jan Beulich
2005-11-09 14:06                   ` [PATCH 12/39] NLKD/i386 " Jan Beulich
2005-11-09 19:10                     ` George Anzinger
2005-11-10  8:12                       ` Jan Beulich
2005-11-11  0:17                         ` George Anzinger
2005-11-09 14:08                   ` [PATCH 13/39] NLKD/x86-64 " Jan Beulich
2005-11-09 14:13                     ` [PATCH 18/39] NLKD/x86-64 - INT1/INT3 handling changes Jan Beulich
2005-11-09 14:14                       ` [PATCH 19/39] NLKD/x86-64 - stack-pointer-invalid markers Jan Beulich
2005-11-09 14:15                         ` [PATCH 20/39] NLKD/x86-64 - switch_to() floating point adjustment Jan Beulich
2005-11-09 14:16                           ` [PATCH 21/39] NLKD/x86-64 - core adjustments Jan Beulich
2005-11-10 13:24                           ` [PATCH 20/39] NLKD/x86-64 - switch_to() floating point adjustment Andi Kleen
2005-11-10 14:07                             ` Jan Beulich
2005-11-10 13:23                         ` [PATCH 19/39] NLKD/x86-64 - stack-pointer-invalid markers Andi Kleen
2005-11-10 14:25                           ` Jan Beulich
2005-11-10 13:21                       ` [PATCH 18/39] NLKD/x86-64 - INT1/INT3 handling changes Andi Kleen
2005-11-10 14:07                         ` Jan Beulich
2005-11-10 14:25                           ` Andi Kleen
2005-11-10 15:00                             ` Jan Beulich
2005-11-11  3:39                               ` [discuss] " Andi Kleen
2005-11-10 13:19                     ` [PATCH 13/39] NLKD/x86-64 - time adjustment Andi Kleen
2005-11-10 14:23                       ` Jan Beulich
2005-11-11  2:12                         ` Andi Kleen
2005-11-12  9:22                           ` Vojtech Pavlik
2005-11-12 17:21                             ` Andi Kleen
2005-11-12 20:44                               ` Vojtech Pavlik
2005-11-15  0:38                                 ` George Anzinger
2005-11-15  1:05                                   ` [discuss] " Andi Kleen
2005-11-15  7:50                                     ` Vojtech Pavlik
2005-11-15  8:24                                       ` Jan Beulich
2005-11-10 14:43                       ` Vojtech Pavlik
2005-11-09 14:09                   ` [PATCH 14/39] NLKD - kernel trace buffer access Jan Beulich
2005-11-09 14:09                     ` [PATCH 15/39] NLKD - early pseudo-fs Jan Beulich
2005-11-09 14:11                       ` [PATCH 16/39] NLKD - core adjustments Jan Beulich
2005-11-09 14:11                         ` [PATCH 17/39] NLKD/i386 " Jan Beulich
2005-11-09 19:00                           ` Adrian Bunk
2005-11-10  8:04                             ` Jan Beulich
2005-11-10 10:29                               ` Adrian Bunk
2005-11-10 11:52                                 ` Jan Beulich
2005-11-10 12:36                                   ` Lars Marowsky-Bree
2005-11-09 14:18                         ` [PATCH 22/39] NLKD - core Jan Beulich
2005-11-09 14:19                           ` [PATCH 23/39] NLKD/x86 " Jan Beulich
2005-11-09 14:20                             ` [PATCH 24/39] NLKD/i386 " Jan Beulich
2005-11-09 14:21                             ` [PATCH 25/39] NLKD/x86-64 " Jan Beulich
2005-11-10 13:30                               ` Andi Kleen
2005-11-09 14:22                           ` [PATCH 26/39] NLKD - run time library Jan Beulich
2005-11-09 14:23                             ` [PATCH 27/39] NLKD/i386 " Jan Beulich
2005-11-09 14:23                               ` [PATCH 28/39] NLKD/x86-64 " Jan Beulich
2005-11-10 13:32                                 ` Andi Kleen
     [not found]                             ` <437214B7.76F0.0078.0@novell.com>
     [not found]                               ` <4372156A.76F0.0078.0@novell.com>
2005-11-09 14:28                                 ` [PATCH 34/39] NLKD/x86 - Console Debug Agent Jan Beulich
     [not found]                                 ` <43721600.76F0.0078.0@novell.com>
2005-11-09 14:30                                   ` Jan Beulich [this message]
2005-11-09 14:31                                   ` [PATCH 39/39] NLKD/x86-64 - Remote " Jan Beulich
2005-11-09 14:29                       ` [PATCH 15/39] NLKD - early pseudo-fs Al Viro
2005-11-09 14:37                         ` Jan Beulich
2005-11-09 15:00                           ` Al Viro
2005-11-09 16:00                             ` Jan Beulich
2005-11-10  5:44                     ` [PATCH 14/39] NLKD - kernel trace buffer access Keith Owens
2005-11-10  8:02                       ` Jan Beulich
2005-11-09 18:51                   ` [PATCH 11/39] NLKD - time adjustment George Anzinger
2005-11-09 16:50         ` [PATCH 6/39] NLKD - early panic notification Greg KH
2005-11-09 16:45       ` [PATCH 3/39] NLKD - early/late CPU up/down notification Greg KH
2005-11-09 17:09         ` Jan Beulich
2005-11-09 17:19           ` Greg KH
2005-11-10  7:41             ` Jan Beulich
2005-11-10 20:59               ` Sam Ravnborg
2005-11-11  7:52                 ` Jan Beulich
2005-11-12 20:52                   ` Randy.Dunlap
2005-11-10 23:01               ` Greg KH
2005-11-11 10:06     ` [PATCH 2/39] NLKD - an alternative early ioremap approach Pavel Machek
2005-11-11 10:19       ` Jan Beulich
2005-11-09 16:50   ` [PATCH 1/39] NLKD - an alternative kallsyms approach Randy.Dunlap
2005-11-09 16:57     ` Greg KH
2005-11-09 17:20     ` Jan Beulich
2005-11-09 16:59 ` [PATCH 0/39] NLKD - Novell Linux Kernel Debugger Jeff Garzik
2005-11-09 17:06   ` Randy.Dunlap
2005-11-09 17:14     ` Jan Beulich
2005-11-09 17:56       ` Alan Cox
2005-11-09 18:05       ` Greg KH
2005-11-09 18:54       ` Paul Jackson
2005-11-10 12:41       ` Christoph Hellwig
2005-11-13  1:09     ` Andi Kleen
2005-11-13  2:53       ` jmerkey
2005-11-13  3:44         ` Andi Kleen
2005-11-13  3:26           ` Jeff V. Merkey
2005-11-13  3:32             ` Jeff V. Merkey
2005-11-09 17:53   ` Alan Cox
2005-11-09 16:25     ` Jeffrey V. Merkey
2005-11-10 14:48     ` Mark Lord
2005-11-10 15:28       ` Tom Rini
2005-11-10 16:37       ` Alan Cox
2005-11-13  1:11       ` Andi Kleen
     [not found] ` <437214E4.76F0.0078.0@novell.com>
     [not found]   ` <4372153C.76F0.0078.0@novell.com>
2005-11-10 13:33     ` [PATCH 32/39] NLKD/x86-64 - Core Debug Engine Andi Kleen

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=4372161D.76F0.0078.0@novell.com \
    --to=jbeulich@novell.com \
    --cc=linux-kernel@vger.kernel.org \
    /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