2002-09-09 10:03:38

by Peter Waechtler

[permalink] [raw]
Subject: [PATCH] 10/10 sound/oss/dmasound/dmasound_q40.c

--- vanilla-2.5.33/sound/oss/dmasound/dmasound_q40.c Sun Sep 8 21:52:50 2002
+++ linux-2.5-cli-oss/sound/oss/dmasound/dmasound_q40.c Mon Sep 9 00:41:06 2002
@@ -18,7 +18,7 @@
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/soundcard.h>
-
+#include <linux/spinlock.h>
#include <asm/uaccess.h>
#include <asm/q40ints.h>
#include <asm/q40_master.h>
@@ -49,8 +49,7 @@
static int Q40SetVolume(int volume);
static void Q40PlayNextFrame(int index);
static void Q40Play(void);
-static void Q40StereoInterrupt(int irq, void *dummy, struct pt_regs *fp);
-static void Q40MonoInterrupt(int irq, void *dummy, struct pt_regs *fp);
+static void Q40InterruptHandler(int irq, void *dummy, struct pt_regs *fp);
static void Q40Interrupt(void);


@@ -384,7 +383,7 @@
static int __init Q40IrqInit(void)
{
/* Register interrupt handler. */
- request_irq(Q40_IRQ_SAMPLE, Q40StereoInterrupt, 0,
+ request_irq(Q40_IRQ_SAMPLE, Q40InterruptHandler, 0,
"DMA sound", Q40Interrupt);

return(1);
@@ -430,23 +429,13 @@
speed=(dmasound.hard.speed==10000 ? 0 : 1);

master_outb( 0,SAMPLE_ENABLE_REG);
- free_irq(Q40_IRQ_SAMPLE, Q40Interrupt);
- if (dmasound.soft.stereo)
- request_irq(Q40_IRQ_SAMPLE, Q40StereoInterrupt, 0,
- "Q40 sound", Q40Interrupt);
- else
- request_irq(Q40_IRQ_SAMPLE, Q40MonoInterrupt, 0,
- "Q40 sound", Q40Interrupt);
-
master_outb( speed, SAMPLE_RATE_REG);
master_outb( 1,SAMPLE_CLEAR_REG);
master_outb( 1,SAMPLE_ENABLE_REG);
}

-static void Q40Play(void)
+static void __Q40Play(void)
{
- unsigned long flags;
-
if (write_sq.active || write_sq.count<=0 ) {
/* There's already a frame loaded */
return;
@@ -459,29 +448,35 @@
*/
return;
}
- save_flags(flags); cli();
Q40PlayNextFrame(1);
- restore_flags(flags);
}

-static void Q40StereoInterrupt(int irq, void *dummy, struct pt_regs *fp)
-{
- if (q40_sc>1){
- *DAC_LEFT=*q40_pp++;
- *DAC_RIGHT=*q40_pp++;
- q40_sc -=2;
- master_outb(1,SAMPLE_CLEAR_REG);
- }else Q40Interrupt();
-}
-static void Q40MonoInterrupt(int irq, void *dummy, struct pt_regs *fp)
+static void Q40Play(void)
{
- if (q40_sc>0){
- *DAC_LEFT=*q40_pp;
- *DAC_RIGHT=*q40_pp++;
- q40_sc --;
+ unsigned long flags;
+ spin_lock_irqsave(&dmasound.lock, flags);
+ __Q40Play();
+ spin_unlock_irqrestore(&dmasound.lock, flags);
+}
+
+static void Q40InterruptHandler(int irq, void *dummy, struct pt_regs *fp)
+{
+ spin_lock(&dmasound.lock);
+ if (q40_sc>1){
+ if (dmasound.soft.stereo){
+ *DAC_LEFT=*q40_pp++;
+ *DAC_RIGHT=*q40_pp++;
+ q40_sc -=2;
+ } else {
+ *DAC_LEFT=*q40_pp;
+ *DAC_RIGHT=*q40_pp++;
+ q40_sc --;
+ }
master_outb(1,SAMPLE_CLEAR_REG);
}else Q40Interrupt();
+ spin_unlock(&dmasound.lock);
}
+
static void Q40Interrupt(void)
{
if (!write_sq.active) {
@@ -493,7 +488,7 @@
goto exit;
} else write_sq.active=0;
write_sq.count--;
- Q40Play();
+ __Q40Play();

if (q40_sc<2)
{ /* there was nothing to play, disable irq */


2002-09-09 16:03:04

by Linus Torvalds

[permalink] [raw]
Subject: Re: [PATCH] 10/10 sound/oss/dmasound/dmasound_q40.c


[ More examples of emails that didn't make it to me, with a public warning
to the kernel list. I'm going through my last 1000 received emails to
see which ones were incorrectly marked spam: that seems to have happened
to exactly 2 of them right now, your 5/10 and Hans' 3/3.

On the whole I'm pretty happy, since it automatically deleted 150+ real
spam emails over the last two days alone, so the few false positives
aren't going to make me switch - I'll just try to convince people to
fix their mailers instead. ]

Peter,
your emails tend to be marked as spam for me. This one, for example, came
_really_ close to my not-very-aggressive filter limit, and since I never
received PATCH 5/10 I suspect that got eaten.

The reasons your emails seem to be considered spammish by spamassassing
is:

tests=MSG_ID_ADDED_BY_MTA_2,NO_REAL_NAME,DATE_IN_FUTURE

because of this:

(a) your email software is broken and does not add a message ID, so the
ID gets added by one of the _relaying_ stations instead of your own
mailer:

Message-Id: <[email protected]>
Received: from picmac.adams.family ([145.254.143.74]) by
asmtp02.mac.com (Netscape Messaging Server 4.15) with ESMTP id
H261D300.AEV; Mon, 9 Sep 2002 03:05:27 -0700

Spam detectors consider emails without original message ID's to be
likely bulk output.

(b) Your email From address is

From: [email protected]

which looks more automated than a named person (ie it _likes_ seeing
something like this:

From: [email protected] (Peter Waechtler)

instead, which looks more like a real person than an automated
address - and also allows the quoted reply to look a lot more
natural)

(c) your date is bogus:

Date: Thu, 29 Aug 2002 21:56:27 +0200

even though the mail was received "Mon, 9 Sep 2002". Again, this
tends to make spam detectors _think_ that the email body was
auto-generated rather than generated by a real mail client.

Your mailer seems to be

X-Mailer: Apple Mail (2.482)

which is apparently a total piece of cr*p software.

NOTE! This email actually got past the spam filter despite all these
problems. But the problems get it "close enough" to be considered spam
that any additional issues (if you were to send an all-caps subject line,
for example) would take it over the line. That seems to have happened with
patch 5/10, for example.

Linus

2002-09-09 17:16:23

by Tomas Szepe

[permalink] [raw]
Subject: Re: [PATCH] 10/10 sound/oss/dmasound/dmasound_q40.c

> your emails tend to be marked as spam for me. This one, for example, came
> _really_ close to my not-very-aggressive filter limit, and since I never
> received PATCH 5/10 I suspect that got eaten.

Very likely -- unless you use the UNIFIED_PATCH test.

5/10 ->
X-Spam-Status: No, hits=-1.4 required=5.0
tests=NO_REAL_NAME,PORN_10,UNIFIED_PATCH,MSG_ID_ADDED_BY_MTA_2,
DATE_IN_PAST_96_XX
version=2.31

... as basically it's just the fact that the mail contains a patch that
reverts the spam label here.

T.

2002-09-09 17:29:42

by Andreas Dilger

[permalink] [raw]
Subject: Re: [PATCH] 10/10 sound/oss/dmasound/dmasound_q40.c

On Sep 09, 2002 09:07 -0700, Linus Torvalds wrote:
> The reasons your emails seem to be considered spammish by spamassassing
> is:
>
> tests=MSG_ID_ADDED_BY_MTA_2,NO_REAL_NAME,DATE_IN_FUTURE
>
> That seems to have happened with patch 5/10, for example.

LOL. My spamassassin marked 5/10 in the "P O R N_10" group, and
"DATE_IN_PAST_96_XX", but it was rescued by "UNIFIED_PATCH" and "AWL"
(spamassassin 2.31, but with some scores I set myself). It got marked
that way because of the triple-x beside "fixme". I have AWL set as a
pretty small negative number because people start spamming (viruses more)
with sender addresses of real people on l-k.

Cheers, Andreas
--
Andreas Dilger
http://www-mddsp.enel.ucalgary.ca/People/adilger/
http://sourceforge.net/projects/ext2resize/

2002-09-09 17:35:15

by David Miller

[permalink] [raw]
Subject: Re: [PATCH] 10/10 sound/oss/dmasound/dmasound_q40.c

From: Andreas Dilger <[email protected]>
Date: Mon, 9 Sep 2002 11:32:19 -0600

It got marked that way because of the triple-x beside "fixme".

You should see my (linux-kernel listowner) inbox when someone
posts patches to the Adaptec scsi driver.

2002-09-09 19:42:04

by Peter Waechtler

[permalink] [raw]
Subject: Re: [PATCH] 10/10 sound/oss/dmasound/dmasound_q40.c

Am Montag den, 9. September 2002, um 18:07, schrieb Linus Torvalds:

> The reasons your emails seem to be considered spammish by spamassassing
> is:
>

> ...
> Your mailer seems to be
>
> X-Mailer: Apple Mail (2.482)
>
> which is apparently a total piece of cr*p software.

No, I am the crap - I used a self written script to generate the former
41
OSS fixes - but was too lazy this time and edited the mbox file for
sending these 10 patches :-(

Now, I will add my full name without &auml; (which btw, is not an
&aelig;) - I guess you fetched the patch via an lkml archive, or do I
have to resent 5/10?

2002-09-12 08:48:18

by Richard Z

[permalink] [raw]
Subject: Re: [PATCH] 10/10 sound/oss/dmasound/dmasound_q40.c

On Thu, Aug 29, 2002 at 09:56:27PM +0200, [email protected] wrote:


> -static void Q40StereoInterrupt(int irq, void *dummy, struct pt_regs *fp)
> -{
> - if (q40_sc>1){
> - *DAC_LEFT=*q40_pp++;
> - *DAC_RIGHT=*q40_pp++;
> - q40_sc -=2;
> - master_outb(1,SAMPLE_CLEAR_REG);
> - }else Q40Interrupt();
> -}
> -static void Q40MonoInterrupt(int irq, void *dummy, struct pt_regs *fp)

> +static void Q40InterruptHandler(int irq, void *dummy, struct pt_regs *fp)
> +{
> + spin_lock(&dmasound.lock);
> + if (q40_sc>1){
> + if (dmasound.soft.stereo){
> + *DAC_LEFT=*q40_pp++;
> + *DAC_RIGHT=*q40_pp++;
> + q40_sc -=2;
> + } else {
> + *DAC_LEFT=*q40_pp;
> + *DAC_RIGHT=*q40_pp++;
> + q40_sc --;
> + }
> master_outb(1,SAMPLE_CLEAR_REG);
> }else Q40Interrupt();
> + spin_unlock(&dmasound.lock);
> }
> +


not so good. The interrupt will happen up to 20000/s so any
unneeded code in the interrupt handler like the test for stereo
should be avoided.. I will rewrite it in assembler someday.

Richard