Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Oct 2001 14:28:24 -0400 (EDT)
From:      "Alexander N. Kabaev" <ak03@gte.com>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   kern/31316: kldxref introduction broke snd_driver.ko
Message-ID:  <200110161828.f9GISO449220@h132-197-97-45.gte.com>

next in thread | raw e-mail | index | archive | help

>Number:         31316
>Category:       kern
>Synopsis:       kldxref introduction broke snd_driver.ko
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Oct 16 11:30:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Alexander N. Kabaev
>Release:        FreeBSD 5.0-CURRENT i386
>Organization:
Verizon Data Services
>Environment:
System: FreeBSD kanpc.gte.com 5.0-CURRENT FreeBSD 5.0-CURRENT #6: Tue Oct 16 11:03:35 EDT 2001 root@kanpc.gte.com:/usr/src/sys/i386/compile/KANPC i386


	
>Description:
	snd_driver uses MODULE_DEPEND(name, ....) to load specific cards
	drivers. Previously, the 'name' above was treated as a name of
	the kernel module binary, i.e system would try to load name.ko
	in the above case. This has changed with kldxref and corresponding
	kernel module linker changes. Linker currently looks for the name, 
	specified in the DRIVER_MODULE() macro instead.

	Several sound drivers currently have driver name which differs
	from the module filename, and since snd_driver tries to
	depend on them using their filenames, it is unable to load
	and fails with an 'unavailable dependency' error.

	The patch below simply restores one-to-one mapping 
	between driver name and its module name. This way 
	the same code will work as expected on both -CURRENT and
	-STABLE.
>How-To-Repeat:
	kldload snd_driver.ko should suffice.
>Fix:

Index: pci/als4000.c
===================================================================
RCS file: /usr/ncvs/src/sys/dev/sound/pci/als4000.c,v
retrieving revision 1.7
diff -u -r1.7 als4000.c
--- pci/als4000.c	10 Oct 2001 17:56:35 -0000	1.7
+++ pci/als4000.c	16 Oct 2001 18:00:36 -0000
@@ -897,6 +897,6 @@
 	PCM_SOFTC_SIZE,
 };
 
-DRIVER_MODULE(snd_als, pci, als_driver, pcm_devclass, 0, 0);
-MODULE_DEPEND(snd_als, snd_pcm, PCM_MINVER, PCM_PREFVER, PCM_MAXVER);
-MODULE_VERSION(snd_als, 1);
+DRIVER_MODULE(snd_als4000, pci, als_driver, pcm_devclass, 0, 0);
+MODULE_DEPEND(snd_als4000, snd_pcm, PCM_MINVER, PCM_PREFVER, PCM_MAXVER);
+MODULE_VERSION(snd_als4000, 1);
Index: pci/cmi.c
===================================================================
RCS file: /usr/ncvs/src/sys/dev/sound/pci/cmi.c,v
retrieving revision 1.13
diff -u -r1.13 cmi.c
--- pci/cmi.c	10 Oct 2001 17:56:35 -0000	1.13
+++ pci/cmi.c	16 Oct 2001 18:03:06 -0000
@@ -981,6 +981,6 @@
 	PCM_SOFTC_SIZE
 };
 
-DRIVER_MODULE(snd_cmipci, pci, cmi_driver, pcm_devclass, 0, 0);
-MODULE_DEPEND(snd_cmipci, snd_pcm, PCM_MINVER, PCM_PREFVER, PCM_MAXVER);
-MODULE_VERSION(snd_cmipci, 1);
+DRIVER_MODULE(snd_cmi, pci, cmi_driver, pcm_devclass, 0, 0);
+MODULE_DEPEND(snd_cmi, snd_pcm, PCM_MINVER, PCM_PREFVER, PCM_MAXVER);
+MODULE_VERSION(snd_cmi, 1);
Index: pci/via82c686.c
===================================================================
RCS file: /usr/ncvs/src/sys/dev/sound/pci/via82c686.c,v
retrieving revision 1.15
diff -u -r1.15 via82c686.c
--- pci/via82c686.c	8 Oct 2001 05:55:03 -0000	1.15
+++ pci/via82c686.c	16 Oct 2001 18:10:51 -0000
@@ -584,8 +584,8 @@
 	PCM_SOFTC_SIZE,
 };
 
-DRIVER_MODULE(via, pci, via_driver, pcm_devclass, 0, 0);
-MODULE_DEPEND(via, snd_pcm, PCM_MINVER, PCM_PREFVER, PCM_MAXVER);
-MODULE_VERSION(via, 1);
+DRIVER_MODULE(snd_via82c686, pci, via_driver, pcm_devclass, 0, 0);
+MODULE_DEPEND(snd_via82c686, snd_pcm, PCM_MINVER, PCM_PREFVER, PCM_MAXVER);
+MODULE_VERSION(snd_via82c686, 1);
 
 
Index: pci/vibes.c
===================================================================
RCS file: /usr/ncvs/src/sys/dev/sound/pci/vibes.c,v
retrieving revision 1.10
diff -u -r1.10 vibes.c
--- pci/vibes.c	10 Oct 2001 17:56:35 -0000	1.10
+++ pci/vibes.c	16 Oct 2001 18:12:11 -0000
@@ -940,6 +940,6 @@
         PCM_SOFTC_SIZE
 };
 
-DRIVER_MODULE(snd_sonicvibes, pci, sonicvibes_driver, pcm_devclass, 0, 0);
-MODULE_DEPEND(snd_sonicvibes, snd_pcm, PCM_MINVER, PCM_PREFVER, PCM_MAXVER);
-MODULE_VERSION(snd_sonicvibes, 1);
+DRIVER_MODULE(snd_vibes, pci, sonicvibes_driver, pcm_devclass, 0, 0);
+MODULE_DEPEND(snd_vibes, snd_pcm, PCM_MINVER, PCM_PREFVER, PCM_MAXVER);
+MODULE_VERSION(snd_vibes, 1);
>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200110161828.f9GISO449220>