Re: [BUG] flexcop lockdep

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

 



Patrick Boettcher wrote:
On Fri, 6 Apr 2007, Antti Seppälä wrote:

Patrick Boettcher wrote:

Someone outthere with a SMP-system and a flexcop who could see if e.g.
dvbscan or dvbtraffic is killing the system/flexcop when removing the
irq_lock?

Patrick.

I've now been torturing my SMP box for over three hours with various dvb
-related activities (dvbtraffic, dvbscan, vdr) without the irq_lock in flexcop
driver. So far I haven't noticed any problems in operation whatsoever.

Maybe the spinlock really should go?

I vote for it, too.

If someone will have a problem with the flexcop we will see during development phase of the kernel after integration.

regards,
Patrick.


I've created a patch for removing the spinlock from latest v4l-dvb -tree:


Removing of unnecessary spinlock

Based on the discussion on linux-dvb it seems that ISR:s are already
serialized by the linux kernel and thus drivers won't have to specify
their own facilities for ISR serialization.

Signed-off-by: Antti Seppälä <ajhseppa@xxxxxxxxxxxxxx>


--
Antti Seppälä
--- linux/drivers/media/dvb/b2c2/flexcop-pci.c~	2007-04-07 09:44:50.000000000 +0300
+++ linux/drivers/media/dvb/b2c2/flexcop-pci.c	2007-04-07 09:43:27.000000000 +0300
@@ -59,8 +59,6 @@
 	u32 last_dma1_cur_pos; /* position of the pointer last time the timer/packet irq occured */
 	int count;
 
-	spinlock_t irq_lock;
-
 	unsigned long last_irq;
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
@@ -143,12 +141,9 @@
 {
 	struct flexcop_pci *fc_pci = dev_id;
 	struct flexcop_device *fc = fc_pci->fc_dev;
-	unsigned long flags;
 	flexcop_ibi_value v;
 	irqreturn_t ret = IRQ_HANDLED;
 
-	spin_lock_irqsave(&fc_pci->irq_lock,flags);
-
 	v = fc->read_ibi_reg(fc,irq_20c);
 
    /* errors */
@@ -211,8 +206,6 @@
 		ret = IRQ_NONE;
 	}
 
-	spin_unlock_irqrestore(&fc_pci->irq_lock,flags);
-
 	return ret;
 }
 
@@ -310,7 +303,6 @@
 	}
 
 	pci_set_drvdata(fc_pci->pdev, fc_pci);
-	spin_lock_init(&fc_pci->irq_lock);
 	if ((ret = request_irq(fc_pci->pdev->irq, flexcop_pci_isr,
 					IRQF_SHARED, DRIVER_NAME, fc_pci)) != 0)
 		goto err_pci_iounmap;
_______________________________________________
linux-dvb mailing list
linux-dvb@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux