NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

port-cobalt/55009: Fatal defects on cobalt panel -> lcdpanel rename



>Number:         55009
>Category:       port-cobalt
>Synopsis:       Fatal defects on cobalt panel -> lcdpanel rename
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    port-cobalt-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Feb 24 06:00:01 +0000 2020
>Originator:     Izumi Tsutsui
>Release:        NetBSD 9.0
>Organization:
>Environment:
System: NetBSD 9.0 (GENERIC) #0: Fri Feb 14 00:06:28 UTC 2020 mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/cobalt/compile/GENERIC
Architecture: mipsel
Machine: cobalt
>Description:
/dev/panel device for cobalt was renaned from "panel" to "lcdpanel"
to avoid a conflict against FDT device back on April 2018:
 https://mail-index.netbsd.org/source-changes/2018/04/09/msg094149.html
 https://mail-index.netbsd.org/source-changes/2018/04/09/msg094151.html
 https://mail-index.netbsd.org/source-changes/2018/04/09/msg094156.html
 https://mail-index.netbsd.org/source-changes/2018/04/09/msg094158.html

But there were at least three fatal defects in these changes
so the LCD panel device on NetBSD/cobalt 9.0 is not functional at all.

1) src/sys/arch/cobalt/conf/majors.cobalt was not changed on the rename

This means cobalt kernels have no device node corresponding to
a new renamed "lcdpanel" attribute.

2) The device name in /dev should not be changed

In etc/etc.cobalt/MAKEDEV.conf the device node name "/dev/panel0" was
also renamed to "/dev/lcdpanel0".

However it was not necessary to avoid a confict at all
(cobalt doesn't need FDT and naming strategy can be handled in MD)
and chaning userland exported names breaks compatibility.

3) Updated etc/etc.cobalt/MAKEDEV.conf contains "%lcdpanel_chr%" format

The %foo_chr% format only valid in MI src/etc/MAKEDEV.tmpl template.
/dev/MAKEDEV script in the release etc.tgz created by current
MD etc.cobalt/MAKEDEV.conf fails to create panel device:
>> mtree: invalid number `%lcdpanel_chr%'

>How-To-Repeat:
See above.

>Fix:

(1) Set proper attribute.

Index: sys/arch/cobalt/conf/majors.cobalt
===================================================================
RCS file: /cvsroot/src/sys/arch/cobalt/conf/majors.cobalt,v
retrieving revision 1.32
diff -u -p -d -r1.32 majors.cobalt
--- sys/arch/cobalt/conf/majors.cobalt	28 Jan 2019 02:28:57 -0000	1.32
+++ sys/arch/cobalt/conf/majors.cobalt	23 Feb 2020 14:55:29 -0000
@@ -39,7 +39,7 @@ device-major	ld		char 27  block 10	ld
 device-major	clockctl	char 33			clockctl
 #device-major	obsolete	char 34			obsolete (systrace)
 device-major	cgd		char 35  block 11	cgd
-device-major	panel		char 36			panel
+device-major	lcdpanel	char 36			lcdpanel
 device-major	ksyms		char 37			ksyms
 device-major	pci		char 38			pci
 device-major	zstty		char 39			zstty


(2)(3) Restore old "panel" name and remove invald %foo_chr% format.

Note if device name is different from attribute
(defined in majors.${MACHINE}) src/etc/MAKEDEV.awk
doesn't seem to handle it as before.

Index: etc/etc.cobalt/MAKEDEV.conf
===================================================================
RCS file: /cvsroot/src/etc/etc.cobalt/MAKEDEV.conf,v
retrieving revision 1.16
diff -u -p -d -r1.16 MAKEDEV.conf
--- etc/etc.cobalt/MAKEDEV.conf	23 Sep 2018 09:20:58 -0000	1.16
+++ etc/etc.cobalt/MAKEDEV.conf	23 Feb 2020 14:55:29 -0000
@@ -12,7 +12,7 @@ all_md)
 	makedev ld0 ld1 ld2 ld3
 	makedev usbs
 	makedev pci0
-	makedev lcdpanel
+	makedev panel
 	makedev altq
 	makedev nsmb
 	;;
@@ -25,8 +25,8 @@ minimal)
 	makedev bpf
 	;;
 
-lcdpanel)
-        mkdev lcdpanel0 c %lcdpanel_chr% 0 660
+panel)
+	mkdev panel0 c 36 0 660
 	;;
 
 

---
Izumi Tsutsui



Home | Main Index | Thread Index | Old Index