public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [microcode] 2.6.23.git pulled this morning oopses loading P4 microcode
@ 2007-10-18  4:25 Mike Galbraith
  2007-10-18 17:56 ` [bisected][mismerge?] " Mike Galbraith
  0 siblings, 1 reply; 8+ messages in thread
From: Mike Galbraith @ 2007-10-18  4:25 UTC (permalink / raw)
  To: LKML

Greetings,

Freshly pulled tree oopes per $subject.

[  114.714335] BUG: unable to handle kernel NULL pointer dereference at virtual address 00000031
[  114.732810] printing eip: c03332ff *pde = 00000000 
[  114.747614] Oops: 0000 [#1] PREEMPT SMP 
[  114.761320] Modules linked in: microcode snd_seq edd button battery ac ip6t_REJECT xt_tcpudp ipt_REJECT xt_state iptable_mangle iptable_nat nf_nat iptable_filter ip6table_mangle nf_conntrack_ipv4 nf_conntrack ip_tables ip6table_filter ip6_tables x_tables nls_iso8859_1 nls_cp437 nls_utf8 snd_intel8x0 snd_ac97_codec ac97_bus snd_pcm snd_mpu401 snd_timer snd_mpu401_uart snd_rawmidi prism54 snd_page_alloc snd_seq_device snd soundcore intel_agp agpgart i2c_i801 fan thermal processor
[  114.781462] CPU:    0
[  114.781464] EIP:    0060:[<c03332ff>]    Not tainted VLI
[  114.781468] EFLAGS: 00010293   (2.6.23-smp-git #13)
[  114.781478] EIP is at misc_register+0x53/0x14f
[  114.781483] eax: 00000025   ebx: f8bff858   ecx: f8bff900   edx: 00000031
[  114.781490] esi: 000000b8   edi: f8bff864   ebp: c2e0de88   esp: c2e0de68
[  114.781496] ds: 007b   es: 007b   fs: 00d8  gs: 0033  ss: 0068
[  114.781502] Process modprobe (pid: 6115, ti=c2e0d000 task=c2efa070 task.ti=c2e0d000)
[  114.781508] Stack: c1cb4070 f8bff900 c2e0de88 c014818c f8bff900 f8bff900 f8bff900 00000029 
[  114.781521]        c2e0de9c f8bac011 c01368e6 ffffffff f8bff900 c2e0dfb0 c0149dfa 00000000 
[  114.781533]        00000000 00002000 c04d4060 c2e0ded0 c2e0df58 f8be0058 f8be0054 f8bff948 
[  114.781545] Call Trace:
[  114.781548]  [<c010514a>] show_trace_log_lvl+0x1a/0x30
[  114.781558]  [<c0105205>] show_stack_log_lvl+0xa5/0xca
[  114.781564]  [<c0105426>] show_registers+0x1fc/0x33d
[  114.781571]  [<c010567d>] die+0x116/0x239
[  114.781577]  [<c011d008>] do_page_fault+0x2dc/0x5c4
[  114.781585]  [<c04c0662>] error_code+0x72/0x78
[  114.781594]  [<f8bac011>] microcode_init+0x11/0xbb [microcode]
[  114.781604]  [<c0149dfa>] sys_init_module+0xef/0x19bb
[  114.781612]  [<c01041ba>] syscall_call+0x7/0xb
[  114.781618]  =======================
[  114.781621] Code: 0c 0f 18 02 90 81 3d 60 d5 61 c0 60 d5 61 c0 0f 84 fb 00 00 00 8b 33 39 30 75 0d e9 a9 00 00 00 39 30 0f 84 a1 00 00 00 8d 42 f4 <8b> 50 0c 0f 18 02 90 3d 54 d5 61 c0 75 e7 81 fe ff 00 00 00 0f 
[  114.781677] EIP: [<c03332ff>] misc_register+0x53/0x14f SS:ESP 0068:c2e0de68

(gdb) list *misc_register+0x53
0xc03332ff is in misc_register (drivers/char/misc.c:194).
189             int err = 0;
190
191             INIT_LIST_HEAD(&misc->list);
192
193             mutex_lock(&misc_mtx);
194             list_for_each_entry(c, &misc_list, list) {
195                     if (c->minor == misc->minor) {
196                             mutex_unlock(&misc_mtx);
197                             return -EBUSY;
198                     }





^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bisected][mismerge?] Re: [microcode] 2.6.23.git pulled this morning oopses loading P4 microcode
  2007-10-18  4:25 [microcode] 2.6.23.git pulled this morning oopses loading P4 microcode Mike Galbraith
@ 2007-10-18 17:56 ` Mike Galbraith
  2007-10-18 22:33   ` Samuel Thibault
  0 siblings, 1 reply; 8+ messages in thread
From: Mike Galbraith @ 2007-10-18 17:56 UTC (permalink / raw)
  To: LKML; +Cc: Samuel Thibault

On Thu, 2007-10-18 at 06:25 +0200, Mike Galbraith wrote:
> Greetings,
> 
> Freshly pulled tree oopes per $subject.
> 
> [  114.714335] BUG: unable to handle kernel NULL pointer dereference at virtual address 00000031
> [  114.732810] printing eip: c03332ff *pde = 00000000 
> [  114.747614] Oops: 0000 [#1] PREEMPT SMP 
> [  114.761320] Modules linked in: microcode snd_seq edd button battery ac ip6t_REJECT xt_tcpudp ipt_REJECT xt_state iptable_mangle iptable_nat nf_nat iptable_filter ip6table_mangle nf_conntrack_ipv4 nf_conntrack ip_tables ip6table_filter ip6_tables x_tables nls_iso8859_1 nls_cp437 nls_utf8 snd_intel8x0 snd_ac97_codec ac97_bus snd_pcm snd_mpu401 snd_timer snd_mpu401_uart snd_rawmidi prism54 snd_page_alloc snd_seq_device snd soundcore intel_agp agpgart i2c_i801 fan thermal processor
> [  114.781462] CPU:    0
> [  114.781464] EIP:    0060:[<c03332ff>]    Not tainted VLI
> [  114.781468] EFLAGS: 00010293   (2.6.23-smp-git #13)
> [  114.781478] EIP is at misc_register+0x53/0x14f
> [  114.781483] eax: 00000025   ebx: f8bff858   ecx: f8bff900   edx: 00000031
> [  114.781490] esi: 000000b8   edi: f8bff864   ebp: c2e0de88   esp: c2e0de68
> [  114.781496] ds: 007b   es: 007b   fs: 00d8  gs: 0033  ss: 0068
> [  114.781502] Process modprobe (pid: 6115, ti=c2e0d000 task=c2efa070 task.ti=c2e0d000)
> [  114.781508] Stack: c1cb4070 f8bff900 c2e0de88 c014818c f8bff900 f8bff900 f8bff900 00000029 
> [  114.781521]        c2e0de9c f8bac011 c01368e6 ffffffff f8bff900 c2e0dfb0 c0149dfa 00000000 
> [  114.781533]        00000000 00002000 c04d4060 c2e0ded0 c2e0df58 f8be0058 f8be0054 f8bff948 
> [  114.781545] Call Trace:
> [  114.781548]  [<c010514a>] show_trace_log_lvl+0x1a/0x30
> [  114.781558]  [<c0105205>] show_stack_log_lvl+0xa5/0xca
> [  114.781564]  [<c0105426>] show_registers+0x1fc/0x33d
> [  114.781571]  [<c010567d>] die+0x116/0x239
> [  114.781577]  [<c011d008>] do_page_fault+0x2dc/0x5c4
> [  114.781585]  [<c04c0662>] error_code+0x72/0x78
> [  114.781594]  [<f8bac011>] microcode_init+0x11/0xbb [microcode]
> [  114.781604]  [<c0149dfa>] sys_init_module+0xef/0x19bb
> [  114.781612]  [<c01041ba>] syscall_call+0x7/0xb
> [  114.781618]  =======================
> [  114.781621] Code: 0c 0f 18 02 90 81 3d 60 d5 61 c0 60 d5 61 c0 0f 84 fb 00 00 00 8b 33 39 30 75 0d e9 a9 00 00 00 39 30 0f 84 a1 00 00 00 8d 42 f4 <8b> 50 0c 0f 18 02 90 3d 54 d5 61 c0 75 e7 81 fe ff 00 00 00 0f 
> [  114.781677] EIP: [<c03332ff>] misc_register+0x53/0x14f SS:ESP 0068:c2e0de68
> 
> (gdb) list *misc_register+0x53
> 0xc03332ff is in misc_register (drivers/char/misc.c:194).
> 189             int err = 0;
> 190
> 191             INIT_LIST_HEAD(&misc->list);
> 192
> 193             mutex_lock(&misc_mtx);
> 194             list_for_each_entry(c, &misc_list, list) {
> 195                     if (c->minor == misc->minor) {
> 196                             mutex_unlock(&misc_mtx);
> 197                             return -EBUSY;
> 198                     }
> 

The winner of a very long git bisect session:

04c71976500352d02f60616d2b960267d8c5fe24 is first bad commit
commit 04c71976500352d02f60616d2b960267d8c5fe24
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Tue Oct 16 23:27:04 2007 -0700

    unicode diacritics support


Attempting to revert with git:

root@Homer: git revert 04c71976500352d02f60616d2b960267d8c5fe24
Auto-merged drivers/char/keyboard.c
Auto-merged drivers/char/vt_ioctl.c
CONFLICT (delete/modify): drivers/tc/lk201-map.c_shipped deleted in HEAD and modified in 04c7197... unicode diacritics support. Version 04c7197... unicode diacritics support of drivers/tc/lk201-map.c_shipped left in tree.
Automatic revert failed.  After resolving the conflicts,
mark the corrected paths with 'git-add <paths>'
and commit the result.

I reverted it manually in my working tree, ignoring a couple of bogus
rejects and the missing lk201-map.c_shipped which is _created_ in the
git tree by the attempt to revert, and now have a working kernel.  The
oops on microcode driver load is gone, as is the freeze on shutdown when
scripts attempt to set hardware clock, nmi_watchdog firing when I poke
SysRq-T, and the inability to login via serial console reported in
thread:

http://groups.google.com/group/fa.linux.kernel/msg/1b08c2f15894aaf7

	-Mike


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [bisected][mismerge?] Re: [microcode] 2.6.23.git pulled this morning oopses loading P4 microcode
  2007-10-18 17:56 ` [bisected][mismerge?] " Mike Galbraith
@ 2007-10-18 22:33   ` Samuel Thibault
  2007-10-19  2:48     ` Mike Galbraith
  0 siblings, 1 reply; 8+ messages in thread
From: Samuel Thibault @ 2007-10-18 22:33 UTC (permalink / raw)
  To: Mike Galbraith; +Cc: LKML

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

Hi,

Mike Galbraith, le Thu 18 Oct 2007 19:56:38 +0200, a écrit :
> The winner of a very long git bisect session:
> 
>     unicode diacritics support

Uh, I fail to see how that could have an impact, I've again checked the
boundaries, it looks fine, please people have a look.

Could you try something odd?  On your tree that has the change reverted,
please try the attached patch, which makes the array the same size at it
would be with the change, possibly triggering bugs in completely other
parts of the kernel.

Samuel

[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 394 bytes --]

--- defkeymap.c_shipped.old	2007-10-18 22:44:59.000000000 +0000
+++ defkeymap.c_shipped	2007-10-18 22:44:43.000000000 +0000
@@ -222,7 +222,7 @@
 	NULL,
 };
 
-struct kbdiacr accent_table[MAX_DIACR] = {
+struct kbdiacr accent_table[(MAX_DIACR*3*4-MAX_DIACR*3)/3] = {
 	{'`', 'A', '\300'},	{'`', 'a', '\340'},
 	{'\'', 'A', '\301'},	{'\'', 'a', '\341'},
 	{'^', 'A', '\302'},	{'^', 'a', '\342'},

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [bisected][mismerge?] Re: [microcode] 2.6.23.git pulled this morning oopses loading P4 microcode
  2007-10-18 22:33   ` Samuel Thibault
@ 2007-10-19  2:48     ` Mike Galbraith
  2007-10-19  8:55       ` Samuel Thibault
  2007-10-19 10:18       ` Mike Galbraith
  0 siblings, 2 replies; 8+ messages in thread
From: Mike Galbraith @ 2007-10-19  2:48 UTC (permalink / raw)
  To: Samuel Thibault; +Cc: LKML

On Thu, 2007-10-18 at 23:33 +0100, Samuel Thibault wrote:
> Hi,
> 
> Mike Galbraith, le Thu 18 Oct 2007 19:56:38 +0200, a écrit :
> > The winner of a very long git bisect session:
> > 
> >     unicode diacritics support
> 
> Uh, I fail to see how that could have an impact, I've again checked the
> boundaries, it looks fine, please people have a look.

I too was reluctant to believe the bisect result.  But...

> Could you try something odd?  On your tree that has the change reverted,
> please try the attached patch, which makes the array the same size at it
> would be with the change, possibly triggering bugs in completely other
> parts of the kernel.

That didn't break my box.  However, removing your test patch and
re-applying the revert I generated between git tree and working tree
brought it right back.  With the below applied, diff says there is no
difference between working tree and git tree (except for
vsyscall_32.lds, which is a generated file kbuild leaves lying around).
Per gitk, the git repository is at
d85714d81cc0408daddb68c10f7fd69eafe7c213

diff -uprNX /root/dontdiff git/linux-2.6/drivers/acorn/char/defkeymap-l7200.c linux-2.6.23.git/drivers/acorn/char/defkeymap-l7200.c
--- git/linux-2.6/drivers/acorn/char/defkeymap-l7200.c	2007-10-18 18:55:53.000000000 +0200
+++ linux-2.6.23.git/drivers/acorn/char/defkeymap-l7200.c	2007-10-18 19:02:12.000000000 +0200
@@ -346,7 +346,7 @@ char *func_table[MAX_NR_FUNC] = {
 	0,
 };
 
-struct kbdiacruc accent_table[MAX_DIACR] = {
+struct kbdiacr accent_table[MAX_DIACR] = {
 	{'`', 'A', '\300'},	{'`', 'a', '\340'},
 	{'\'', 'A', '\301'},	{'\'', 'a', '\341'},
 	{'^', 'A', '\302'},	{'^', 'a', '\342'},
diff -uprNX /root/dontdiff git/linux-2.6/drivers/char/consolemap.c linux-2.6.23.git/drivers/char/consolemap.c
--- git/linux-2.6/drivers/char/consolemap.c	2007-10-18 18:55:53.000000000 +0200
+++ linux-2.6.23.git/drivers/char/consolemap.c	2007-10-18 19:02:12.000000000 +0200
@@ -669,29 +669,19 @@ void con_protect_unimap(struct vc_data *
 		p->readonly = rdonly;
 }
 
-/*
- * Always use USER_MAP. These functions are used by the keyboard,
- * which shouldn't be affected by G0/G1 switching, etc.
- * If the user map still contains default values, i.e. the
- * direct-to-font mapping, then assume user is using Latin1.
- */
 /* may be called during an interrupt */
 u32 conv_8bit_to_uni(unsigned char c)
 {
+	/*
+	 * Always use USER_MAP. This function is used by the keyboard,
+	 * which shouldn't be affected by G0/G1 switching, etc.
+	 * If the user map still contains default values, i.e. the
+	 * direct-to-font mapping, then assume user is using Latin1.
+	 */
 	unsigned short uni = translations[USER_MAP][c];
 	return uni == (0xf000 | c) ? c : uni;
 }
 
-int conv_uni_to_8bit(u32 uni)
-{
-	int c;
-	for (c = 0; c < 0x100; c++)
-		if (translations[USER_MAP][c] == uni ||
-		   (translations[USER_MAP][c] == (c | 0xf000) && uni == c))
-			return c;
-	return -1;
-}
-
 int
 conv_uni_to_pc(struct vc_data *conp, long ucs) 
 {
diff -uprNX /root/dontdiff git/linux-2.6/drivers/char/keyboard.c linux-2.6.23.git/drivers/char/keyboard.c
--- git/linux-2.6/drivers/char/keyboard.c	2007-10-18 18:55:53.000000000 +0200
+++ linux-2.6.23.git/drivers/char/keyboard.c	2007-10-18 19:02:19.000000000 +0200
@@ -38,7 +38,6 @@
 #include <linux/kbd_kern.h>
 #include <linux/kbd_diacr.h>
 #include <linux/vt_kern.h>
-#include <linux/consolemap.h>
 #include <linux/sysrq.h>
 #include <linux/input.h>
 #include <linux/reboot.h>
@@ -404,12 +403,9 @@ static unsigned int handle_diacr(struct 
 		return d;
 
 	if (kbd->kbdmode == VC_UNICODE)
-		to_utf8(vc, d);
-	else {
-		int c = conv_uni_to_8bit(d);
-		if (c != -1)
-			put_queue(vc, c);
-	}
+		to_utf8(vc, conv_8bit_to_uni(d));
+	else if (d < 0x100)
+		put_queue(vc, d);
 
 	return ch;
 }
@@ -421,12 +417,9 @@ static void fn_enter(struct vc_data *vc)
 {
 	if (diacr) {
 		if (kbd->kbdmode == VC_UNICODE)
-			to_utf8(vc, diacr);
-		else {
-			int c = conv_uni_to_8bit(diacr);
-			if (c != -1)
-				put_queue(vc, c);
-		}
+			to_utf8(vc, conv_8bit_to_uni(diacr));
+		else if (diacr < 0x100)
+			put_queue(vc, diacr);
 		diacr = 0;
 	}
 	put_queue(vc, 13);
@@ -634,12 +627,9 @@ static void k_unicode(struct vc_data *vc
 		return;
 	}
 	if (kbd->kbdmode == VC_UNICODE)
-		to_utf8(vc, value);
-	else {
-		int c = conv_uni_to_8bit(value);
-		if (c != -1)
-			put_queue(vc, c);
-	}
+		to_utf8(vc, conv_8bit_to_uni(value));
+	else if (value < 0x100)
+		put_queue(vc, value);
 }
 
 /*
@@ -656,12 +646,7 @@ static void k_deadunicode(struct vc_data
 
 static void k_self(struct vc_data *vc, unsigned char value, char up_flag)
 {
-	unsigned int uni;
-	if (kbd->kbdmode == VC_UNICODE)
-		uni = value;
-	else
-		uni = conv_8bit_to_uni(value);
-	k_unicode(vc, uni, up_flag);
+	k_unicode(vc, value, up_flag);
 }
 
 static void k_dead2(struct vc_data *vc, unsigned char value, char up_flag)
diff -uprNX /root/dontdiff git/linux-2.6/drivers/char/vt_ioctl.c linux-2.6.23.git/drivers/char/vt_ioctl.c
--- git/linux-2.6/drivers/char/vt_ioctl.c	2007-10-18 18:55:53.000000000 +0200
+++ linux-2.6.23.git/drivers/char/vt_ioctl.c	2007-10-18 19:02:19.000000000 +0200
@@ -23,7 +23,6 @@
 #include <linux/major.h>
 #include <linux/fs.h>
 #include <linux/console.h>
-#include <linux/consolemap.h>
 #include <linux/signal.h>
 #include <linux/timex.h>
 
@@ -583,27 +582,10 @@ int vt_ioctl(struct tty_struct *tty, str
 	case KDGKBDIACR:
 	{
 		struct kbdiacrs __user *a = up;
-		struct kbdiacr diacr;
-		int i;
 
 		if (put_user(accent_table_size, &a->kb_cnt))
 			return -EFAULT;
-		for (i = 0; i < accent_table_size; i++) {
-			diacr.diacr = conv_uni_to_8bit(accent_table[i].diacr);
-			diacr.base = conv_uni_to_8bit(accent_table[i].base);
-			diacr.result = conv_uni_to_8bit(accent_table[i].result);
-			if (copy_to_user(a->kbdiacr + i, &diacr, sizeof(struct kbdiacr)))
-				return -EFAULT;
-		}
-		return 0;
-	}
-	case KDGKBDIACRUC:
-	{
-		struct kbdiacrsuc __user *a = up;
-
-		if (put_user(accent_table_size, &a->kb_cnt))
-			return -EFAULT;
-		if (copy_to_user(a->kbdiacruc, accent_table, accent_table_size*sizeof(struct kbdiacruc)))
+		if (copy_to_user(a->kbdiacr, accent_table, accent_table_size*sizeof(struct kbdiacr)))
 			return -EFAULT;
 		return 0;
 	}
@@ -611,30 +593,6 @@ int vt_ioctl(struct tty_struct *tty, str
 	case KDSKBDIACR:
 	{
 		struct kbdiacrs __user *a = up;
-		struct kbdiacr diacr;
-		unsigned int ct;
-		int i;
-
-		if (!perm)
-			return -EPERM;
-		if (get_user(ct,&a->kb_cnt))
-			return -EFAULT;
-		if (ct >= MAX_DIACR)
-			return -EINVAL;
-		accent_table_size = ct;
-		for (i = 0; i < ct; i++) {
-			if (copy_from_user(&diacr, a->kbdiacr + i, sizeof(struct kbdiacr)))
-				return -EFAULT;
-			accent_table[i].diacr = conv_8bit_to_uni(diacr.diacr);
-			accent_table[i].base = conv_8bit_to_uni(diacr.base);
-			accent_table[i].result = conv_8bit_to_uni(diacr.result);
-		}
-		return 0;
-	}
-
-	case KDSKBDIACRUC:
-	{
-		struct kbdiacrsuc __user *a = up;
 		unsigned int ct;
 
 		if (!perm)
@@ -644,7 +602,7 @@ int vt_ioctl(struct tty_struct *tty, str
 		if (ct >= MAX_DIACR)
 			return -EINVAL;
 		accent_table_size = ct;
-		if (copy_from_user(accent_table, a->kbdiacruc, ct*sizeof(struct kbdiacruc)))
+		if (copy_from_user(accent_table, a->kbdiacr, ct*sizeof(struct kbdiacr)))
 			return -EFAULT;
 		return 0;
 	}
diff -uprNX /root/dontdiff git/linux-2.6/drivers/s390/char/keyboard.c linux-2.6.23.git/drivers/s390/char/keyboard.c
--- git/linux-2.6/drivers/s390/char/keyboard.c	2007-10-18 18:55:53.000000000 +0200
+++ linux-2.6.23.git/drivers/s390/char/keyboard.c	2007-10-18 19:02:21.000000000 +0200
@@ -11,7 +11,6 @@
 #include <linux/sched.h>
 #include <linux/sysrq.h>
 
-#include <linux/consolemap.h>
 #include <linux/kbd_kern.h>
 #include <linux/kbd_diacr.h>
 #include <asm/uaccess.h>
@@ -83,11 +82,11 @@ kbd_alloc(void) {
 	if (!kbd->fn_handler)
 		goto out_func;
 	kbd->accent_table =
-		kmalloc(sizeof(struct kbdiacruc)*MAX_DIACR, GFP_KERNEL);
+		kmalloc(sizeof(struct kbdiacr)*MAX_DIACR, GFP_KERNEL);
 	if (!kbd->accent_table)
 		goto out_fn_handler;
 	memcpy(kbd->accent_table, accent_table,
-	       sizeof(struct kbdiacruc)*MAX_DIACR);
+	       sizeof(struct kbdiacr)*MAX_DIACR);
 	kbd->accent_table_size = accent_table_size;
 	return kbd;
 
@@ -184,8 +183,8 @@ kbd_ebcasc(struct kbd_data *kbd, unsigne
  * Otherwise, conclude that DIACR was not combining after all,
  * queue it and return CH.
  */
-static unsigned int
-handle_diacr(struct kbd_data *kbd, unsigned int ch)
+static unsigned char
+handle_diacr(struct kbd_data *kbd, unsigned char ch)
 {
 	int i, d;
 
@@ -461,6 +460,7 @@ int
 kbd_ioctl(struct kbd_data *kbd, struct file *file,
 	  unsigned int cmd, unsigned long arg)
 {
+	struct kbdiacrs __user *a;
 	void __user *argp;
 	int ct, perm;
 
@@ -481,40 +481,17 @@ kbd_ioctl(struct kbd_data *kbd, struct f
 	case KDSKBSENT:
 		return do_kdgkb_ioctl(kbd, argp, cmd, perm);
 	case KDGKBDIACR:
-	{
-		struct kbdiacrs __user *a = argp;
-		struct kbdiacr diacr;
-		int i;
+		a = argp;
 
 		if (put_user(kbd->accent_table_size, &a->kb_cnt))
 			return -EFAULT;
-		for (i = 0; i < kbd->accent_table_size; i++) {
-			diacr.diacr = kbd->accent_table[i].diacr;
-			diacr.base = kbd->accent_table[i].base;
-			diacr.result = kbd->accent_table[i].result;
-			if (copy_to_user(a->kbdiacr + i, &diacr, sizeof(struct kbdiacr)))
-			return -EFAULT;
-		}
-		return 0;
-	}
-	case KDGKBDIACRUC:
-	{
-		struct kbdiacrsuc __user *a = argp;
-
 		ct = kbd->accent_table_size;
-		if (put_user(ct, &a->kb_cnt))
-			return -EFAULT;
-		if (copy_to_user(a->kbdiacruc, kbd->accent_table,
-				 ct * sizeof(struct kbdiacruc)))
+		if (copy_to_user(a->kbdiacr, kbd->accent_table,
+				 ct * sizeof(struct kbdiacr)))
 			return -EFAULT;
 		return 0;
-	}
 	case KDSKBDIACR:
-	{
-		struct kbdiacrs __user *a = argp;
-		struct kbdiacr diacr;
-		int i;
-
+		a = argp;
 		if (!perm)
 			return -EPERM;
 		if (get_user(ct, &a->kb_cnt))
@@ -522,31 +499,10 @@ kbd_ioctl(struct kbd_data *kbd, struct f
 		if (ct >= MAX_DIACR)
 			return -EINVAL;
 		kbd->accent_table_size = ct;
-		for (i = 0; i < ct; i++) {
-			if (copy_from_user(&diacr, a->kbdiacr + i, sizeof(struct kbdiacr)))
-				return -EFAULT;
-			kbd->accent_table[i].diacr = diacr.diacr;
-			kbd->accent_table[i].base = diacr.base;
-			kbd->accent_table[i].result = diacr.result;
-		}
-		return 0;
-	}
-	case KDSKBDIACRUC:
-	{
-		struct kbdiacrsuc __user *a = argp;
-
-		if (!perm)
-			return -EPERM;
-		if (get_user(ct, &a->kb_cnt))
-			return -EFAULT;
-		if (ct >= MAX_DIACR)
-			return -EINVAL;
-		kbd->accent_table_size = ct;
-		if (copy_from_user(kbd->accent_table, a->kbdiacruc,
-				   ct * sizeof(struct kbdiacruc)))
+		if (copy_from_user(kbd->accent_table, a->kbdiacr,
+				   ct * sizeof(struct kbdiacr)))
 			return -EFAULT;
 		return 0;
-	}
 	default:
 		return -ENOIOCTLCMD;
 	}
diff -uprNX /root/dontdiff git/linux-2.6/drivers/s390/char/keyboard.h linux-2.6.23.git/drivers/s390/char/keyboard.h
--- git/linux-2.6/drivers/s390/char/keyboard.h	2007-10-18 18:55:53.000000000 +0200
+++ linux-2.6.23.git/drivers/s390/char/keyboard.h	2007-10-18 19:02:21.000000000 +0200
@@ -25,9 +25,9 @@ struct kbd_data {
 	unsigned short **key_maps;
 	char **func_table;
 	fn_handler_fn **fn_handler;
-	struct kbdiacruc *accent_table;
+	struct kbdiacr *accent_table;
 	unsigned int accent_table_size;
-	unsigned int diacr;
+	unsigned char diacr;
 	unsigned short sysrq;
 };
 
diff -uprNX /root/dontdiff git/linux-2.6/include/linux/consolemap.h linux-2.6.23.git/include/linux/consolemap.h
--- git/linux-2.6/include/linux/consolemap.h	2007-10-18 18:55:53.000000000 +0200
+++ linux-2.6.23.git/include/linux/consolemap.h	2007-10-18 19:02:34.000000000 +0200
@@ -16,5 +16,4 @@ extern u16 inverse_translate(struct vc_d
 extern unsigned short *set_translate(int m, struct vc_data *vc);
 extern int conv_uni_to_pc(struct vc_data *conp, long ucs);
 extern u32 conv_8bit_to_uni(unsigned char c);
-extern int conv_uni_to_8bit(u32 uni);
 void console_map_init(void);
diff -uprNX /root/dontdiff git/linux-2.6/include/linux/kbd_diacr.h linux-2.6.23.git/include/linux/kbd_diacr.h
--- git/linux-2.6/include/linux/kbd_diacr.h	2007-10-18 18:55:53.000000000 +0200
+++ linux-2.6.23.git/include/linux/kbd_diacr.h	2007-10-18 19:02:34.000000000 +0200
@@ -2,7 +2,7 @@
 #define _DIACR_H
 #include <linux/kd.h>
 
-extern struct kbdiacruc accent_table[];
+extern struct kbdiacr accent_table[];
 extern unsigned int accent_table_size;
 
 #endif /* _DIACR_H */
diff -uprNX /root/dontdiff git/linux-2.6/include/linux/kd.h linux-2.6.23.git/include/linux/kd.h
--- git/linux-2.6/include/linux/kd.h	2007-10-18 18:55:53.000000000 +0200
+++ linux-2.6.23.git/include/linux/kd.h	2007-10-18 19:02:34.000000000 +0200
@@ -125,16 +125,6 @@ struct kbdiacrs {
 #define KDGKBDIACR      0x4B4A  /* read kernel accent table */
 #define KDSKBDIACR      0x4B4B  /* write kernel accent table */
 
-struct kbdiacruc {
-        __u32 diacr, base, result;
-};
-struct kbdiacrsuc {
-        unsigned int kb_cnt;    /* number of entries in following array */
-	struct kbdiacruc kbdiacruc[256];    /* MAX_DIACR from keyboard.h */
-};
-#define KDGKBDIACRUC    0x4BFA  /* read kernel accent table - UCS */
-#define KDSKBDIACRUC    0x4BFB  /* write kernel accent table - UCS */
-
 struct kbkeycode {
 	unsigned int scancode, keycode;
 };



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [bisected][mismerge?] Re: [microcode] 2.6.23.git pulled this morning oopses loading P4 microcode
  2007-10-19  2:48     ` Mike Galbraith
@ 2007-10-19  8:55       ` Samuel Thibault
  2007-10-19 10:20         ` Mike Galbraith
  2007-10-19 10:18       ` Mike Galbraith
  1 sibling, 1 reply; 8+ messages in thread
From: Samuel Thibault @ 2007-10-19  8:55 UTC (permalink / raw)
  To: Mike Galbraith; +Cc: LKML

Just to make sure, could you check in System.map that accent_table is
correctly 256*3*4=3072 bytes long?

Samuel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [bisected][mismerge?] Re: [microcode] 2.6.23.git pulled this morning oopses loading P4 microcode
  2007-10-19  2:48     ` Mike Galbraith
  2007-10-19  8:55       ` Samuel Thibault
@ 2007-10-19 10:18       ` Mike Galbraith
  2007-10-19 15:34         ` Randy Dunlap
  1 sibling, 1 reply; 8+ messages in thread
From: Mike Galbraith @ 2007-10-19 10:18 UTC (permalink / raw)
  To: Samuel Thibault; +Cc: LKML

On Fri, 2007-10-19 at 04:49 +0200, Mike Galbraith wrote: 
> On Thu, 2007-10-18 at 23:33 +0100, Samuel Thibault wrote:
> > Hi,
> > 
> > Mike Galbraith, le Thu 18 Oct 2007 19:56:38 +0200, a écrit :
> > > The winner of a very long git bisect session:
> > > 
> > >     unicode diacritics support
> > 
> > Uh, I fail to see how that could have an impact, I've again checked the
> > boundaries, it looks fine, please people have a look.
> 
> I too was reluctant to believe the bisect result.  But...

Weeeell now, that skepticism is indeed well founded.  It's dontdiff.  A
diff of trees where defkeymap.c_shipped has been modified produces no
output.  Once a working tree has been afflicted by using diff+dontdiff
to update it, even overwriting the entire tree via git-archive doesn't
lead to a good build unless you also touch defkeymap.c_shipped
afterward.  In my case, the working tree remained buildable yet
thoroughly busted through a lengthy bisect and beyond.  That bisect
positively identified... the victim.

poo.

	-Mike


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [bisected][mismerge?] Re: [microcode] 2.6.23.git pulled this morning oopses loading P4 microcode
  2007-10-19  8:55       ` Samuel Thibault
@ 2007-10-19 10:20         ` Mike Galbraith
  0 siblings, 0 replies; 8+ messages in thread
From: Mike Galbraith @ 2007-10-19 10:20 UTC (permalink / raw)
  To: Samuel Thibault; +Cc: LKML

On Fri, 2007-10-19 at 09:55 +0100, Samuel Thibault wrote:
> Just to make sure, could you check in System.map that accent_table is
> correctly 256*3*4=3072 bytes long?

See mail I just sent.  A day a half wasted here.  Sorry for however much
time you wasted on this.

	-Mike


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [bisected][mismerge?] Re: [microcode] 2.6.23.git pulled this morning oopses loading P4 microcode
  2007-10-19 10:18       ` Mike Galbraith
@ 2007-10-19 15:34         ` Randy Dunlap
  0 siblings, 0 replies; 8+ messages in thread
From: Randy Dunlap @ 2007-10-19 15:34 UTC (permalink / raw)
  To: Mike Galbraith; +Cc: Samuel Thibault, LKML

On Fri, 19 Oct 2007 12:18:19 +0200 Mike Galbraith wrote:

> On Fri, 2007-10-19 at 04:49 +0200, Mike Galbraith wrote: 
> > On Thu, 2007-10-18 at 23:33 +0100, Samuel Thibault wrote:
> > > Hi,
> > > 
> > > Mike Galbraith, le Thu 18 Oct 2007 19:56:38 +0200, a écrit :
> > > > The winner of a very long git bisect session:
> > > > 
> > > >     unicode diacritics support
> > > 
> > > Uh, I fail to see how that could have an impact, I've again checked the
> > > boundaries, it looks fine, please people have a look.
> > 
> > I too was reluctant to believe the bisect result.  But...
> 
> Weeeell now, that skepticism is indeed well founded.  It's dontdiff.  A
> diff of trees where defkeymap.c_shipped has been modified produces no
> output.  Once a working tree has been afflicted by using diff+dontdiff
> to update it, even overwriting the entire tree via git-archive doesn't
> lead to a good build unless you also touch defkeymap.c_shipped
> afterward.  In my case, the working tree remained buildable yet
> thoroughly busted through a lengthy bisect and beyond.  That bisect
> positively identified... the victim.
> 
> poo.

Yes, that's bad.  Sam has asked me to fix some dontdiff problems.
I'll try to get to it soon.  Other people can also update it....


---
~Randy

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2007-10-19 15:34 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-18  4:25 [microcode] 2.6.23.git pulled this morning oopses loading P4 microcode Mike Galbraith
2007-10-18 17:56 ` [bisected][mismerge?] " Mike Galbraith
2007-10-18 22:33   ` Samuel Thibault
2007-10-19  2:48     ` Mike Galbraith
2007-10-19  8:55       ` Samuel Thibault
2007-10-19 10:20         ` Mike Galbraith
2007-10-19 10:18       ` Mike Galbraith
2007-10-19 15:34         ` Randy Dunlap

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox