Subject: kern/14921: keyboard support broken
To: None <gnats-bugs@gnats.netbsd.org>
From: Christian Bahls <cb064@stud.uni-rostock.de>
List: netbsd-bugs
Date: 12/12/2001 03:39:51
>Number:         14921
>Category:       kern
>Synopsis:       pc keyboard not working when serial console used
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Dec 11 18:41:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Christian Bahls
>Release:        NetBSD 1.5Z
>Organization:
University of Rostock
>Environment:
System: NetBSD wh5041 1.5Z NetBSD 1.5Z (DEFEAT) #0: Tue Dec 11 13:40:53 CET 2001 root@wh5041:/usr/src/tester i386
Architecture: i386
Machine: i386
>Description:

	kept old kernel config for a while ..
	made cvs-update .. 
	rebuild the kernel
	kernel boots fine ..
	startup is fine ..
	serial console seems to be ok ..
	but:: vga-console:
	login: .. i try to enter the login-name
		i am not able to enter more than 3 characters
	kernel locks up ..
	message on the console about pckbd: lost <sth> ..
	serial console locked as well now ..
	strange enough .. in-kernel-debugger
	 on serial line still works
	sync .. (get a kernel panic .. but .. that is a different issue)

	<<here is what i guess where the mistake is >>
	DEC 10 23:10:25 wh5041 /netbsd: pcib0 at pci0 dev 1 function 0
	Dec 10 23:10:25 wh5041 /netbsd: pcib0: vendor 0x1039 product 0x0008 (rev. 0x00)
	Dec 10 23:10:25 wh5041 /netbsd: vga0 at pci0 dev 9 function 0: vendor 0x1005 product 0x2301 (rev. 0x00)
	Dec 10 23:10:25 wh5041 /netbsd: wsdisplay0 at vga0 kbdmux 1
	Dec 10 23:10:25 wh5041 /netbsd: ex0 at pci0 dev 10 function 0: 3Com 3c905C-TX 10/100 Ethernet with mngmt (rev. 0x74)
	Dec 10 23:10:26 wh5041 /netbsd: ex0: interrupting at irq 9
	Dec 10 23:10:26 wh5041 /netbsd: ex0: MAC address 00:01:02:12:14:04

	>>This is after my fix<<
	Dec 10 23:19:21 wh5041 /netbsd: pcib0 at pci0 dev 1 function 0
	Dec 10 23:19:21 wh5041 /netbsd: pcib0: vendor 0x1039 product 0x0008 (rev. 0x00)
	Dec 10 23:19:21 wh5041 /netbsd: vga0 at pci0 dev 9 function 0: vendor 0x1005 product 0x2301 (rev. 0x00)
	Dec 10 23:19:22 wh5041 /netbsd: wsdisplay0 at vga0 kbdmux -1
	Dec 10 23:19:22 wh5041 /netbsd: ex0 at pci0 dev 10 function 0: 3Com 3c905C-TX 10/100 Ethernet with mngmt (rev. 0x74)
	Dec 10 23:19:22 wh5041 /netbsd: ex0: interrupting at irq 9
	Dec 10 23:19:22 wh5041 /netbsd: ex0: MAC address 00:01:02:12:14:04

	NOTE: "kbdmux 1" <-> "kbdmux -1"

>How-To-Repeat:

	Kernel-Config:

	machine i386
	options 	EXEC_AOUT	# exec a.out binaries
	options		EXEC_ELF32	# exec ELF binaries
	options 	EXEC_SCRIPT	# exec #! scripts
	options 	INET6_MD_CKSUM	# machine-dependant code for in6_cksum
	options 	CRYPTO_MD_DES_ENC	# machine-dependant code for DES
	options 	CRYPTO_MD_DES_CBC	# machine-dependant DES CBC code
	options 	CRYPTO_MD_BF_ENC	# machine-dependant code for BF_encrypt
	options 	CRYPTO_MD_BF_CBC	# careful: uses bswapl, requires 486
	ident 		"DEFEAT"
	maxusers	32		# estimated number of users
	options 	I586_CPU
	options 	VM86		# virtual 8086 emulation
	options 	DUMMY_NOPS
	options		NMBCLUSTERS=4096
	options 	UCONSOLE	# users can use TIOCCONS (for xconsole)
	options 	RTC_OFFSET=0	# hardware clock is this many mins. west of GMT
	options 	NTP		# NTP phase/frequency locked loop
	options 	KTRACE		# system call tracing via ktrace(1)
	options 	SYSVMSG		# System V-like message queues
	options 	SYSVSEM		# System V-like semaphores
	options 	SYSVSHM		# System V-like memory sharing
	options 	LKM		# loadable kernel modules
	options 	DIAGNOSTIC	# expensive kernel consistency checks
	options 	DEBUG		# expensive debugging checks/support
	options 	DDB		# in-kernel debugger
	options 	DDB_HISTORY_SIZE=512	# enable history editing in DDB
	makeoptions	DEBUG="-g"	# compile full symbol table
	options 	COMPAT_15	# NetBSD 1.5,
	options 	COMPAT_LINUX	# binary compatibility with Linux
	file-system 	FFS		# UFS
	file-system 	EXT2FS		# second extended file system (linux)
	file-system 	MFS		# memory file system
	file-system 	NFS		# Network File System client
	file-system 	CD9660		# ISO 9660 + Rock Ridge file system
	file-system 	MSDOSFS		# MS-DOS file system
	file-system 	NULLFS		# loopback file system
	file-system 	PROCFS		# /proc
	file-system 	UNION		# union file system
	options 	SOFTDEP         # FFS soft updates support.
	options 	INET		# IP + ICMP + TCP + UDP
	options 	INET6		# IPV6
	options 	PFIL_HOOKS	# pfil(9) packet filter hooks
	options 	IPFILTER_LOG	# ipmon(8) log support
	options 	WSEMUL_VT100		# VT100 / VT220 emulation
	options 	WS_KERNEL_FG=WSCOL_GREEN
	options 	WS_KERNEL_BG=WSCOL_BLACK
	options 	WSDISPLAY_COMPAT_PCVT		# emulate some ioctls
	options 	WSDISPLAY_COMPAT_SYSCONS	# emulate some ioctls
	options 	WSDISPLAY_COMPAT_USL		# VT handling
	options 	WSDISPLAY_COMPAT_RAWKBD		# can get raw scancodes
	options 	PCKBD_LAYOUT="(KB_DE | KB_NODEAD)"
	config		netbsd	root on wd0a type ffs
	mainbus0 at root
	pci*	at mainbus? bus ?
	pcib*	at pci? dev ? function ?	# PCI-ISA bridges
	isa0	at pcib?
	npx0	at isa? port 0xf0 irq 13	# x86 math coprocessor
	options 	XSERVER		# X server support
	pckbc0		at isa?			# pc keyboard controller
	pckbd*		at pckbc?		# PC keyboard
	vga*		at pci? dev ? function ?
	wsdisplay*	at vga? console ?
	wskbd* 		at pckbd? console ?
	pcppi0		at isa?
	sysbeep0	at pcppi?
	com0	at isa? port 0x3f8 irq 4	# Standard PC serial ports
	com1	at isa? port 0x2f8 irq 3
	lpt0	at isa? port 0x378 irq 7	# standard PC parallel ports
	pciide* at pci? dev ? function ? flags 0x0000
	wd*	at pciide? channel ? drive ? flags 0x0000
	atapibus* at pciide? channel ?
	cd*	at atapibus? drive ? flags 0x0000	# ATAPI CD-ROM drives
	fdc0	at isa? port 0x3f0 irq 6 drq 2	# standard PC floppy controllers
	fd0	at fdc0 drive 0
	ex*	at pci? dev ? function ?	# 3Com 90x[BC]
	bmtphy*	at mii? phy ?			# Broadcom BCM5201 and BCM5202 PHYs
	eap*	at pci? dev ? function ?	# Ensoniq AudioPCI
	audio*	at eap?
	midi*	at eap?			# 137[01] MIDI port
	pseudo-device	vnd		2	# disk-like interface to files
	pseudo-device	bpfilter	4	# Berkeley packet filter
	pseudo-device	ipfilter		# IP filter (firewall) and NAT
	pseudo-device	loop		2	# network loopback
	pseudo-device	gif		4	# IPv[46] over IPv[46] tunnel (RFC1933)
	pseudo-device	pty			# pseudo-terminals
	pseudo-device	rnd			# /dev/random and in-kernel generator
	pseudo-device	wsmux		2
	pseudo-device	wsfont		1

	I would guess .. using a serial console "helps" as well ,-)

>Fix:
	i changed
	wsdisplay*	at vga? console ?
	to:
	wsdisplay0	at vga0 kbdmux -1 console ?
	
	i am not experienced enough to dig into the source code
	.. am willing to apply patches (kernel build takes about 1h though)


	thank you very much in advance
	
	christian bahls
	math student

>Release-Note:
>Audit-Trail:
>Unformatted:
 	CVS update on december 10th 2001 (problem since about 1 week)