mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* Oops in emu10k1 driver
@ 2002-04-01 21:51 Adam Huffman
  2002-04-01 22:41 ` Alan Cox
  0 siblings, 1 reply; 5+ messages in thread
From: Adam Huffman @ 2002-04-01 21:51 UTC (permalink / raw)
  To: linux-kernel

VMware died when I put an audio CD into my DVD drive.  I wouldn't have
mentioned it here but for the fact that there was an Oops and when
decoded it pointed to the emu10k1 driver:


ksymoops 2.4.1 on i686 2.4.19-pre5.  Options used
     -V (default)
     -k /proc/ksyms (default)
     -l /proc/modules (default)
     -o /lib/modules/2.4.19-pre5/ (default)
     -m /boot/System.map-2.4.19-pre5 (default)

Warning: You did not tell me where to find symbol information.  I will
assume that the log matches the kernel and modules that are running
right now and I'll use the default options above for symbol resolution.
If the current kernel and/or modules do not match the log, you can get
more accurate output by telling me the kernel version and where to find
map, modules, ksyms etc.  ksymoops -h explains the options.

Warning (compare_maps): mismatch on symbol usb_devfs_handle  , usbcore says f08e7254, /lib/modules/2.4.19-pre5/kernel/drivers/usb/usbcore.o says f08e6d14.  Ignoring /lib/modules/2.4.19-pre5/kernel/drivers/usb/usbcore.o entry
kernel BUG at audio.c:1474!
invalid operand: 0000
CPU:    0
EIP:    0010:[<f091a316>]    Tainted: PF
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00013006
eax: 0000000e   ebx: ecad44c8   ecx: 0000000e   edx: 00003556
esi: 00000002   edi: 0000ffff   ebp: 0000001c   esp: e6465eb8
ds: 0018   es: 0018   ss: 0018
Process vmware (pid: 2674, stackpage=e6465000)
Stack: 00000007 00018000 0001c000 00010000 00014000 00003202 00000000 00000000
       bffff688 f0919637 ecad4480 00000001 00000003 00000003 f0912582 e8fbe0c0
       cfb4fc40 00014560 ecad4480 e6a6e9c0 00000000 00000010 00001f40 02020110
Call Trace: [<f0919637>] [<f0912582>] [<c0131556>] [<c0130503>] [<c013d336>]
   [<c01088bb>]
Code: 0f 0b c2 05 d8 36 92 f0 83 c4 14 5b 5e 5f 5d c3 8d 76 00 8d

>>EIP; f091a316 <[emu10k1]calculate_ifrag+1c6/1e0>   <=====
Trace; f0919637 <[emu10k1]emu10k1_audio_ioctl+11a7/1450>
Trace; f0912582 <[soundcore]soundcore_open+f2/160>
Trace; c0131556 <chrdev_open+36/40>
Trace; c0130503 <dentry_open+e3/180>
Trace; c013d336 <sys_ioctl+176/190>
Trace; c01088bb <system_call+33/38>
Code;  f091a316 <[emu10k1]calculate_ifrag+1c6/1e0>
00000000 <_EIP>:
Code;  f091a316 <[emu10k1]calculate_ifrag+1c6/1e0>   <=====
   0:   0f 0b                     ud2a      <=====
Code;  f091a318 <[emu10k1]calculate_ifrag+1c8/1e0>
   2:   c2 05 d8                  ret    $0xd805
Code;  f091a31b <[emu10k1]calculate_ifrag+1cb/1e0>
   5:   36                        ss
Code;  f091a31c <[emu10k1]calculate_ifrag+1cc/1e0>
   6:   92                        xchg   %eax,%edx
Code;  f091a31d <[emu10k1]calculate_ifrag+1cd/1e0>
   7:   f0 83 c4 14               lock add $0x14,%esp
Code;  f091a321 <[emu10k1]calculate_ifrag+1d1/1e0>
   b:   5b                        pop    %ebx
Code;  f091a322 <[emu10k1]calculate_ifrag+1d2/1e0>
   c:   5e                        pop    %esi
Code;  f091a323 <[emu10k1]calculate_ifrag+1d3/1e0>
   d:   5f                        pop    %edi
Code;  f091a324 <[emu10k1]calculate_ifrag+1d4/1e0>
   e:   5d                        pop    %ebp
Code;  f091a325 <[emu10k1]calculate_ifrag+1d5/1e0>
   f:   c3                        ret    
Code;  f091a326 <[emu10k1]calculate_ifrag+1d6/1e0>
  10:   8d 76 00                  lea    0x0(%esi),%esi
Code;  f091a329 <[emu10k1]calculate_ifrag+1d9/1e0>
  13:   8d 00                     lea    (%eax),%eax


2 warnings issued.  Results may not be reliable.


00:00.0 Host bridge: VIA Technologies, Inc. VT8363/8365 [KT133/KM133] (rev 03)
00:01.0 PCI bridge: VIA Technologies, Inc. VT8363/8365 [KT133/KM133 AGP]
00:07.0 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super South] (rev 40)
00:07.1 IDE interface: VIA Technologies, Inc. Bus Master IDE (rev 06)
00:07.2 USB Controller: VIA Technologies, Inc. UHCI USB (rev 1a)
00:07.3 USB Controller: VIA Technologies, Inc. UHCI USB (rev 1a)
00:07.4 Host bridge: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev 40)
00:07.5 Multimedia audio controller: VIA Technologies, Inc. AC97 Audio Controller (rev 50)
00:09.0 Unknown mass storage controller: Promise Technology, Inc.: Unknown device 4d69 (rev 02)
00:0a.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 (rev 10)
00:0c.0 Multimedia audio controller: Creative Labs SB Live! EMU10000 (rev 08)
00:0c.1 Input device controller: Creative Labs SB Live! (rev 08)
00:0d.0 FireWire (IEEE 1394): Lucent Microelectronics: Unknown device 5811 (rev 04)
01:00.0 VGA compatible controller: nVidia Corporation NV15 (Geforce2 GTS) (rev a3)

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

* Re: Oops in emu10k1 driver
  2002-04-01 21:51 Oops in emu10k1 driver Adam Huffman
@ 2002-04-01 22:41 ` Alan Cox
  2002-04-01 22:45   ` Adam Huffman
  0 siblings, 1 reply; 5+ messages in thread
From: Alan Cox @ 2002-04-01 22:41 UTC (permalink / raw)
  To: Adam Huffman; +Cc: linux-kernel

> VMware died when I put an audio CD into my DVD drive.  I wouldn't have
> mentioned it here but for the fact that there was an Oops and when
> decoded it pointed to the emu10k1 driver:

Yes but we don't know what vmware has been doing. Please try the same thing
a few times without vmware running

> kernel BUG at audio.c:1474!
> invalid operand: 0000


This one does look like a real bug in the emu10k driver, rather than a
vmware caused funny

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

* Re: Oops in emu10k1 driver
  2002-04-01 22:41 ` Alan Cox
@ 2002-04-01 22:45   ` Adam Huffman
  2002-04-02  0:14     ` Rui Sousa
  0 siblings, 1 reply; 5+ messages in thread
From: Adam Huffman @ 2002-04-01 22:45 UTC (permalink / raw)
  To: linux-kernel

On Mon, 01 Apr 2002, Alan Cox wrote:

> > VMware died when I put an audio CD into my DVD drive.  I wouldn't have
> > mentioned it here but for the fact that there was an Oops and when
> > decoded it pointed to the emu10k1 driver:
> 
> Yes but we don't know what vmware has been doing. Please try the same thing
> a few times without vmware running
> 
> > kernel BUG at audio.c:1474!
> > invalid operand: 0000
> 
> 
> This one does look like a real bug in the emu10k driver, rather than a
> vmware caused funny

Haven't been able to reproduce it with the VMware modules removed.

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

* Re: Oops in emu10k1 driver
  2002-04-01 22:45   ` Adam Huffman
@ 2002-04-02  0:14     ` Rui Sousa
  2002-04-02  1:14       ` Rui Sousa
  0 siblings, 1 reply; 5+ messages in thread
From: Rui Sousa @ 2002-04-02  0:14 UTC (permalink / raw)
  To: Adam Huffman; +Cc: linux-kernel

On Mon, 1 Apr 2002, Adam Huffman wrote:

Hi,

First of all, which kernel are you using?
I believe I already fixed this bug in CVS but I haven't
received any confirmation. Can you give it a try?
You can get the CVS repository at:

http://sourceforge.net/cvs/?group_id=44773

Then edit the config file and point it to your kernel source,
make, make install. That should be it.

Otherwise (when I get your kernel version) I can send you a
patch to try out.

Rui Sousa

> On Mon, 01 Apr 2002, Alan Cox wrote:
> 
> > > VMware died when I put an audio CD into my DVD drive.  I wouldn't have
> > > mentioned it here but for the fact that there was an Oops and when
> > > decoded it pointed to the emu10k1 driver:
> > 
> > Yes but we don't know what vmware has been doing. Please try the same thing
> > a few times without vmware running
> > 
> > > kernel BUG at audio.c:1474!
> > > invalid operand: 0000
> > 
> > 
> > This one does look like a real bug in the emu10k driver, rather than a
> > vmware caused funny
> 
> Haven't been able to reproduce it with the VMware modules removed.
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 


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

* Re: Oops in emu10k1 driver
  2002-04-02  0:14     ` Rui Sousa
@ 2002-04-02  1:14       ` Rui Sousa
  0 siblings, 0 replies; 5+ messages in thread
From: Rui Sousa @ 2002-04-02  1:14 UTC (permalink / raw)
  To: Rui Sousa; +Cc: Adam Huffman, emu10k1-devel, linux-kernel

[-- Attachment #1: Type: TEXT/PLAIN, Size: 1855 bytes --]

On Tue, 2 Apr 2002, Rui Sousa wrote:

Can you please try the attached patch (against 2.4.19-pre5)?
I has some other fixes/cleanups, but these need to go
into 2.4 anyway.

Rui

> On Mon, 1 Apr 2002, Adam Huffman wrote:
> 
> Hi,
> 
> First of all, which kernel are you using?
> I believe I already fixed this bug in CVS but I haven't
> received any confirmation. Can you give it a try?
> You can get the CVS repository at:
> 
> http://sourceforge.net/cvs/?group_id=44773
> 
> Then edit the config file and point it to your kernel source,
> make, make install. That should be it.
> 
> Otherwise (when I get your kernel version) I can send you a
> patch to try out.
> 
> Rui Sousa
> 
> > On Mon, 01 Apr 2002, Alan Cox wrote:
> > 
> > > > VMware died when I put an audio CD into my DVD drive.  I wouldn't have
> > > > mentioned it here but for the fact that there was an Oops and when
> > > > decoded it pointed to the emu10k1 driver:
> > > 
> > > Yes but we don't know what vmware has been doing. Please try the same thing
> > > a few times without vmware running
> > > 
> > > > kernel BUG at audio.c:1474!
> > > > invalid operand: 0000
> > > 
> > > 
> > > This one does look like a real bug in the emu10k driver, rather than a
> > > vmware caused funny
> > 
> > Haven't been able to reproduce it with the VMware modules removed.
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at  http://www.tux.org/lkml/
> > 
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 

[-- Attachment #2: emu10k1 patch --]
[-- Type: TEXT/PLAIN, Size: 13184 bytes --]

diff -ur linux-2.4.19-pre5.orig/Documentation/Configure.help linux-2.4.19-pre5/Documentation/Configure.help
--- linux-2.4.19-pre5.orig/Documentation/Configure.help	Tue Apr  2 02:46:01 2002
+++ linux-2.4.19-pre5/Documentation/Configure.help	Tue Apr  2 03:03:43 2002
@@ -18986,7 +18986,7 @@
   processing effects which include for example: signal routing,
   bass/treble control, AC3 passthrough, ...
   Userspace tools to create new patches and load/unload them can be
-  found at <http://opensource.creative.com/dist.html>.
+  found at <http://sourceforge.net/projects/emu10k1>.
 
 Creative SBLive! (EMU10K1) MIDI
 CONFIG_MIDI_EMU10K1
diff -ur linux-2.4.19-pre5.orig/drivers/sound/emu10k1/audio.c linux-2.4.19-pre5/drivers/sound/emu10k1/audio.c
--- linux-2.4.19-pre5.orig/drivers/sound/emu10k1/audio.c	Sat Mar  9 12:26:06 2002
+++ linux-2.4.19-pre5/drivers/sound/emu10k1/audio.c	Tue Apr  2 02:58:05 2002
@@ -1365,6 +1365,13 @@
 
 	buffer->fragment_size = 1 << buffer->ossfragshift;
 
+	while (buffer->fragment_size * WAVEOUT_MINFRAGS > WAVEOUT_MAXBUFSIZE)
+		buffer->fragment_size >>= 1;
+
+	/* now we are sure that:
+	 (2^WAVEOUT_MINFRAGSHIFT) <= (fragment_size = 2^n) <= (WAVEOUT_MAXBUFSIZE / WAVEOUT_MINFRAGS)
+	*/
+
 	if (!buffer->numfrags) {
 		u32 numfrags;
 
@@ -1379,19 +1386,14 @@
 		}
 	}
 
-	if (buffer->numfrags < MINFRAGS)
-		buffer->numfrags = MINFRAGS;
+	if (buffer->numfrags < WAVEOUT_MINFRAGS)
+		buffer->numfrags = WAVEOUT_MINFRAGS;
 
-	if (buffer->numfrags * buffer->fragment_size > WAVEOUT_MAXBUFSIZE) {
+	if (buffer->numfrags * buffer->fragment_size > WAVEOUT_MAXBUFSIZE)
 		buffer->numfrags = WAVEOUT_MAXBUFSIZE / buffer->fragment_size;
 
-		if (buffer->numfrags < MINFRAGS) {
-			buffer->numfrags = MINFRAGS;
-			buffer->fragment_size = WAVEOUT_MAXBUFSIZE / MINFRAGS;
-		}
-
-	} else if (buffer->numfrags * buffer->fragment_size < WAVEOUT_MINBUFSIZE)
-		buffer->numfrags = WAVEOUT_MINBUFSIZE / buffer->fragment_size;
+	if (buffer->numfrags < WAVEOUT_MINFRAGS)
+		BUG();
 
 	buffer->size = buffer->fragment_size * buffer->numfrags;
 	buffer->pages = buffer->size / PAGE_SIZE + ((buffer->size % PAGE_SIZE) ? 1 : 0);
@@ -1425,24 +1427,29 @@
 
 	buffer->fragment_size = 1 << buffer->ossfragshift;
 
+	while (buffer->fragment_size * WAVEIN_MINFRAGS > WAVEIN_MAXBUFSIZE)
+		buffer->fragment_size >>= 1;
+
+	/* now we are sure that:
+	   (2^WAVEIN_MINFRAGSHIFT) <= (fragment_size = 2^n) <= (WAVEIN_MAXBUFSIZE / WAVEIN_MINFRAGS)
+        */
+
+
 	if (!buffer->numfrags)
 		buffer->numfrags = (wiinst->format.bytespersec * WAVEIN_DEFAULTBUFLEN) / (buffer->fragment_size * 1000) - 1;
 
-	if (buffer->numfrags < MINFRAGS)
-		buffer->numfrags = MINFRAGS;
+	if (buffer->numfrags < WAVEIN_MINFRAGS)
+		buffer->numfrags = WAVEIN_MINFRAGS;
 
-	if (buffer->numfrags * buffer->fragment_size > WAVEIN_MAXBUFSIZE) {
+	if (buffer->numfrags * buffer->fragment_size > WAVEIN_MAXBUFSIZE)
 		buffer->numfrags = WAVEIN_MAXBUFSIZE / buffer->fragment_size;
 
-		if (buffer->numfrags < MINFRAGS) {
-			buffer->numfrags = MINFRAGS;
-			buffer->fragment_size = WAVEIN_MAXBUFSIZE / MINFRAGS;
-		}
-	} else if (buffer->numfrags * buffer->fragment_size < WAVEIN_MINBUFSIZE)
-		buffer->numfrags = WAVEIN_MINBUFSIZE / buffer->fragment_size;
+	if (buffer->numfrags < WAVEIN_MINFRAGS)
+		BUG();
 
 	bufsize = buffer->fragment_size * buffer->numfrags;
 
+	/* the buffer size for recording is restricted to certain values, adjust it now */
 	if (bufsize >= 0x10000) {
 		buffer->size = 0x10000;
 		buffer->sizeregval = 0x1f;
@@ -1468,10 +1475,12 @@
 		}
 	}
 
+	/* adjust the fragment size so that buffer size is an integer multiple */
+	while (buffer->size % buffer->fragment_size)
+		buffer->fragment_size >>= 1;
+
 	buffer->numfrags = buffer->size / buffer->fragment_size;
 	buffer->pages =  buffer->size / PAGE_SIZE + ((buffer->size % PAGE_SIZE) ? 1 : 0);
-	if (buffer->size % buffer->fragment_size)
-		BUG();
 
 	DPD(2, " calculated recording fragment_size -> %d\n", buffer->fragment_size);
 	DPD(2, " calculated recording numfrags -> %d\n", buffer->numfrags);
diff -ur linux-2.4.19-pre5.orig/drivers/sound/emu10k1/audio.h linux-2.4.19-pre5/drivers/sound/emu10k1/audio.h
--- linux-2.4.19-pre5.orig/drivers/sound/emu10k1/audio.h	Sat Mar  9 12:26:06 2002
+++ linux-2.4.19-pre5/drivers/sound/emu10k1/audio.h	Tue Apr  2 02:58:05 2002
@@ -33,8 +33,6 @@
 #ifndef _AUDIO_H
 #define _AUDIO_H
 
-#define MINFRAGS	3	/* _don't_ go bellow 3 */
-
 struct emu10k1_wavedevice
 {
         struct emu10k1_card *card;
diff -ur linux-2.4.19-pre5.orig/drivers/sound/emu10k1/cardwi.h linux-2.4.19-pre5/drivers/sound/emu10k1/cardwi.h
--- linux-2.4.19-pre5.orig/drivers/sound/emu10k1/cardwi.h	Sat Mar  9 12:39:41 2002
+++ linux-2.4.19-pre5/drivers/sound/emu10k1/cardwi.h	Tue Apr  2 02:58:05 2002
@@ -69,13 +69,14 @@
 	u16 fxwc;
 };
 
-#define WAVEIN_MAXBUFSIZE         65536
-#define WAVEIN_MINBUFSIZE	  368
+#define WAVEIN_MAXBUFSIZE	65536
+#define WAVEIN_MINBUFSIZE	368
 
-#define WAVEIN_DEFAULTFRAGLEN     100 
-#define WAVEIN_DEFAULTBUFLEN      1000
+#define WAVEIN_DEFAULTFRAGLEN	100 
+#define WAVEIN_DEFAULTBUFLEN	1000
 
-#define WAVEIN_MINFRAGSHIFT   	  8 
+#define WAVEIN_MINFRAGSHIFT	8 
+#define WAVEIN_MINFRAGS		2
 
 int emu10k1_wavein_open(struct emu10k1_wavedevice *);
 void emu10k1_wavein_close(struct emu10k1_wavedevice *);
diff -ur linux-2.4.19-pre5.orig/drivers/sound/emu10k1/cardwo.h linux-2.4.19-pre5/drivers/sound/emu10k1/cardwo.h
--- linux-2.4.19-pre5.orig/drivers/sound/emu10k1/cardwo.h	Sat Mar  9 12:39:41 2002
+++ linux-2.4.19-pre5/drivers/sound/emu10k1/cardwo.h	Tue Apr  2 02:58:05 2002
@@ -39,13 +39,13 @@
 
 /* setting this to other than a power of two may break some applications */
 #define WAVEOUT_MAXBUFSIZE	MAXBUFSIZE
-#define WAVEOUT_MINBUFSIZE	64
 
 #define WAVEOUT_DEFAULTFRAGLEN	20 /* Time to play a fragment in ms (latency) */
 #define WAVEOUT_DEFAULTBUFLEN	500 /* Time to play the entire buffer in ms */
 
-#define WAVEOUT_MINFRAGSHIFT	6
-#define WAVEOUT_MAXVOICES 6
+#define WAVEOUT_MINFRAGSHIFT	6 /* Minimum fragment size in bytes is 2^6 */
+#define WAVEOUT_MINFRAGS	3 /* _don't_ go bellow 3, it would break silence filling */
+#define WAVEOUT_MAXVOICES	6
 
 struct waveout_buffer {
 	u16 ossfragshift;
diff -ur linux-2.4.19-pre5.orig/drivers/sound/emu10k1/efxmgr.c linux-2.4.19-pre5/drivers/sound/emu10k1/efxmgr.c
--- linux-2.4.19-pre5.orig/drivers/sound/emu10k1/efxmgr.c	Sat Mar  9 12:26:06 2002
+++ linux-2.4.19-pre5/drivers/sound/emu10k1/efxmgr.c	Tue Apr  2 02:58:05 2002
@@ -103,7 +103,7 @@
 
 	card->ac97.mixer_state[oss_mixer] = (right << 8) | left;
 
-	if (!card->isaps)
+	if (!card->is_aps)
 		card->ac97.write_mixer(&card->ac97, oss_mixer, left, right);
 	
 	emu10k1_set_volume_gpr(card, card->mgr.ctrl_gpr[oss_mixer][0], left,
diff -ur linux-2.4.19-pre5.orig/drivers/sound/emu10k1/hwaccess.h linux-2.4.19-pre5/drivers/sound/emu10k1/hwaccess.h
--- linux-2.4.19-pre5.orig/drivers/sound/emu10k1/hwaccess.h	Sat Mar  9 12:39:41 2002
+++ linux-2.4.19-pre5/drivers/sound/emu10k1/hwaccess.h	Tue Apr  2 02:58:05 2002
@@ -182,7 +182,7 @@
 
 	u8 chiprev;                    /* Chip revision                */
 
-	int isaps;
+	u8 is_aps;
 
 	struct patch_manager mgr;
 	struct pt_data pt;
diff -ur linux-2.4.19-pre5.orig/drivers/sound/emu10k1/main.c linux-2.4.19-pre5/drivers/sound/emu10k1/main.c
--- linux-2.4.19-pre5.orig/drivers/sound/emu10k1/main.c	Sat Mar  9 12:26:06 2002
+++ linux-2.4.19-pre5/drivers/sound/emu10k1/main.c	Tue Apr  2 02:58:05 2002
@@ -196,7 +196,7 @@
 
 	/* Assign default recording parameters */
 	/* FIXME */
-	if(card->isaps)
+	if (card->is_aps)
 		card->wavein.recsrc = WAVERECORD_FX;
 	else
 		card->wavein.recsrc = WAVERECORD_AC97;
@@ -229,7 +229,7 @@
 
 	card->ac97.private_data = card;
 
-	if (!card->isaps) {
+	if (!card->is_aps) {
 		card->ac97.id = 0;
 		card->ac97.codec_read = emu10k1_ac97_read;
         	card->ac97.codec_write = emu10k1_ac97_write;
@@ -287,7 +287,7 @@
 {
 	char s[32];
 
-	if (!card->isaps) {
+	if (!card->is_aps) {
 		sprintf(s, "driver/emu10k1/%s/ac97", card->pci_dev->slot_name);
 		remove_proc_entry(s, NULL);
 
@@ -867,19 +867,19 @@
 	}
 
 	for (pagecount = 0; pagecount < MAXPAGES; pagecount++)
-		((u32 *) card->virtualpagetable.addr)[pagecount] = cpu_to_le32((card->silentpage.dma_handle * 2) | pagecount);
+		((u32 *) card->virtualpagetable.addr)[pagecount] = cpu_to_le32(((u32)card->silentpage.dma_handle * 2) | pagecount);
 
 	/* Init page table & tank memory base register */
 	sblive_writeptr_tag(card, 0,
-			    PTB, card->virtualpagetable.dma_handle,
+			    PTB, (u32)card->virtualpagetable.dma_handle,
 			    TCB, 0,
 			    TCBS, 0,
 			    TAGLIST_END);
 
 	for (nCh = 0; nCh < NUM_G; nCh++) {
 		sblive_writeptr_tag(card, nCh,
-				    MAPA, MAP_PTI_MASK | (card->silentpage.dma_handle * 2),
-				    MAPB, MAP_PTI_MASK | (card->silentpage.dma_handle * 2),
+				    MAPA, MAP_PTI_MASK |( (u32)card->silentpage.dma_handle * 2),
+				    MAPB, MAP_PTI_MASK |( (u32)card->silentpage.dma_handle * 2),
 				    TAGLIST_END);
 	}
 
@@ -1059,7 +1059,7 @@
 		card->iobase + card->length - 1, card->irq);
 
 	pci_read_config_dword(pci_dev, PCI_SUBSYSTEM_VENDOR_ID, &subsysvid);
-	card->isaps = (subsysvid == EMU_APS_SUBID);
+	card->is_aps = (subsysvid == EMU_APS_SUBID);
 
 	spin_lock_init(&card->lock);
 	init_MUTEX(&card->open_sem);
@@ -1090,7 +1090,7 @@
 		goto err_emu10k1_init;
 	}
 
-	if (card->isaps)
+	if (card->is_aps)
 		emu10k1_ecard_init(card);
 
 	list_add(&card->list, &emu10k1_devs);
@@ -1135,7 +1135,7 @@
 	pci_set_drvdata(pci_dev, NULL);
 }
 
-MODULE_AUTHOR("Bertrand Lee, Cai Ying. (Email to: emu10k1-devel@opensource.creative.com)");
+MODULE_AUTHOR("Bertrand Lee, Cai Ying. (Email to: emu10k1-devel@lists.sourceforge.net)");
 MODULE_DESCRIPTION("Creative EMU10K1 PCI Audio Driver v" DRIVER_VERSION "\nCopyright (C) 1999 Creative Technology Ltd.");
 MODULE_LICENSE("GPL");
 
diff -ur linux-2.4.19-pre5.orig/drivers/sound/emu10k1/mixer.c linux-2.4.19-pre5/drivers/sound/emu10k1/mixer.c
--- linux-2.4.19-pre5.orig/drivers/sound/emu10k1/mixer.c	Sat Mar  9 12:26:06 2002
+++ linux-2.4.19-pre5/drivers/sound/emu10k1/mixer.c	Tue Apr  2 02:58:05 2002
@@ -251,7 +251,7 @@
 		case CMD_SETRECSRC:
 			switch (ctl->val[0]) {
 			case WAVERECORD_AC97:
-				if (card->isaps) {
+				if (card->is_aps) {
 					ret = -EINVAL;
 					break;
 				}
@@ -455,7 +455,7 @@
 
 			card->mgr.ctrl_gpr[id][ch] = addr;
 
-			if (card->isaps)
+			if (card->is_aps)
 				break;
 
 			if (addr >= 0) {
@@ -558,7 +558,7 @@
 
 				card->tankmem.size = size;
 
-				sblive_writeptr_tag(card, 0, TCB, card->tankmem.dma_handle, TCBS, size_reg, TAGLIST_END);
+				sblive_writeptr_tag(card, 0, TCB,(u32) card->tankmem.dma_handle, TCBS, size_reg, TAGLIST_END);
 
 				emu10k1_writefn0(card, HCFG_LOCKTANKCACHE, 0);
 			}
@@ -621,7 +621,7 @@
 	unsigned int oss_mixer = _IOC_NR(cmd);
 	
 	ret = -EINVAL;
-	if (!card->isaps) {
+	if (!card->is_aps) {
 		if (cmd == SOUND_MIXER_INFO) {
 			mixer_info info;
 
diff -ur linux-2.4.19-pre5.orig/drivers/sound/emu10k1/recmgr.c linux-2.4.19-pre5/drivers/sound/emu10k1/recmgr.c
--- linux-2.4.19-pre5.orig/drivers/sound/emu10k1/recmgr.c	Sat Mar  9 12:26:06 2002
+++ linux-2.4.19-pre5/drivers/sound/emu10k1/recmgr.c	Tue Apr  2 02:58:05 2002
@@ -132,7 +132,7 @@
 
 	DPD(2, "bus addx: %#lx\n", (unsigned long) buffer->dma_handle);
 
-	sblive_writeptr(card, buffer->addrreg, 0, buffer->dma_handle);
+	sblive_writeptr(card, buffer->addrreg, 0, (u32)buffer->dma_handle);
 
 	return;
 }
diff -ur linux-2.4.19-pre5.orig/drivers/sound/emu10k1/voicemgr.c linux-2.4.19-pre5/drivers/sound/emu10k1/voicemgr.c
--- linux-2.4.19-pre5.orig/drivers/sound/emu10k1/voicemgr.c	Sat Mar  9 12:26:06 2002
+++ linux-2.4.19-pre5/drivers/sound/emu10k1/voicemgr.c	Tue Apr  2 02:58:05 2002
@@ -66,7 +66,7 @@
 		DPD(2, "Virtual Addx: %p\n", mem->addr[pagecount]);
 
 		for (i = 0; i < PAGE_SIZE / EMUPAGESIZE; i++) {
-			busaddx = mem->dma_handle[pagecount] + i * EMUPAGESIZE;
+			busaddx = (u32)(mem->dma_handle[pagecount]) + i * EMUPAGESIZE;
 
 			DPD(3, "Bus Addx: %#lx\n", busaddx);
 
@@ -102,7 +102,7 @@
 		for (i = 0; i < PAGE_SIZE / EMUPAGESIZE; i++) {
 			pageindex = mem->emupageindex + pagecount * PAGE_SIZE / EMUPAGESIZE + i;
 			((u32 *) card->virtualpagetable.addr)[pageindex] =
-				cpu_to_le32((card->silentpage.dma_handle * 2) | pageindex);
+				cpu_to_le32(((u32)card->silentpage.dma_handle * 2) | pageindex);
 		}
 	}
 
@@ -231,8 +231,8 @@
 				    Z1, 0,
 				    Z2, 0,
 				    /* Invalidate maps */
-				    MAPA, MAP_PTI_MASK | (card->silentpage.dma_handle * 2),
-				    MAPB, MAP_PTI_MASK | (card->silentpage.dma_handle * 2),
+				    MAPA, MAP_PTI_MASK | ((u32)card->silentpage.dma_handle * 2),
+				    MAPB, MAP_PTI_MASK | ((u32)card->silentpage.dma_handle * 2),
 				/* modulation envelope */
 				    CVCF, 0x0000ffff,
 				    VTFT, 0x0000ffff,

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

end of thread, other threads:[~2002-04-02  1:19 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-04-01 21:51 Oops in emu10k1 driver Adam Huffman
2002-04-01 22:41 ` Alan Cox
2002-04-01 22:45   ` Adam Huffman
2002-04-02  0:14     ` Rui Sousa
2002-04-02  1:14       ` Rui Sousa

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

all inboxes | Powered by JetHome®