Skip to contentSkip to conversation

firewire: ohci: do not bind to Pinnacle cards, prevent panic

PATCH New Stefan Richter 2 participants 4 messages Jul 9, 2011 – Jul 11, 2011 9 messages not in the archive Firewire

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): 20110604002938.78c85881@stein

A message that is not in the archive (sent off-list or not yet received): 20110604010625.1a37638e@stein

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): 20110612145303.2099aa81@stein

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): 20110612210111.3e979131@stein

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): 20110709235410.08004e5d@stein

#8 lore raw

PATCH 1/1 firewire: ohci: do not bind to Pinnacle cards, prevent panic

When firewire-ohci is bound to a Pinnacle MovieBoard, eventually a "Register access failure" is logged and an interrupt storm or a kernel panic happens. https://bugzilla.kernel.org/show_bug.cgi?id=36622

Until this is sorted out (if that is going to succeed at all), let's just prevent firewire-ohci from touching these devices.

---
 drivers/firewire/ohci.c |    6 ++++++
 1 file changed, 6 insertions(+)
drivers/firewire/ohci.c +6 -0
Index: b/drivers/firewire/ohci.c
===================================================================
@@ -263,6 +263,7 @@ static char ohci_driver_name[] = KBUILD_
 #define PCI_DEVICE_ID_AGERE_FW643	0x5901
 #define PCI_DEVICE_ID_JMICRON_JMB38X_FW	0x2380
 #define PCI_DEVICE_ID_TI_TSB12LV22	0x8009
+#define PCI_VENDOR_ID_PINNACLE_SYSTEMS	0x11bd
 
 #define QUIRK_CYCLE_TIMER		1
 #define QUIRK_RESET_PACKET		2
@@ -3202,6 +3203,11 @@ static int __devinit pci_probe(struct pc
 	int i, err;
 	size_t size;
 
+	if (dev->vendor == PCI_VENDOR_ID_PINNACLE_SYSTEMS) {
+		dev_err(&dev->dev, "Pinnacle MovieBoard not yet supported\n");
+		return -ENOSYS;
+	}
+
 	ohci = kzalloc(sizeof(*ohci), GFP_KERNEL);
 	if (ohci == NULL) {
 		err = -ENOMEM;
Signature · 3 lines
Stefan Richter
-=====-==-== -=== -=-=-
http://arcgraph.de/sr/

A message that is not in the archive (sent off-list or not yet received): [email protected]

#10 lore raw

PATCH 1/1 firewire: ohci: do not bind to Pinnacle or Fujitsu HCI, prevent panic

When firewire-ohci is bound to a Pinnacle MovieBoard, eventually a "Register access failure" is logged and an interrupt storm or a kernel panic happens. https://bugzilla.kernel.org/show_bug.cgi?id=36622

Until this is sorted out (if that is going to succeed at all), let's just prevent firewire-ohci from touching these devices.

This device with link layer PCI IDs 11bd:0015 and 1394 PHY IDs 00000e:086613 is apparently a Fujitsu MB86613 --- hence the PHY IDs. Therefore, blacklist the MB86613 too (PCI IDs 10cf:200c). We only check the vendor ID because there is no other Fujitsu OHCI-1394 PCI device known besides this one.

---
Supersedes patch "firewire: ohci: do not bind to Pinnacle cards, prevent panic"

 drivers/firewire/ohci.c |    8 ++++++++
 1 file changed, 8 insertions(+)
drivers/firewire/ohci.c +8 -0
Index: b/drivers/firewire/ohci.c
===================================================================
@@ -260,6 +260,8 @@ static inline struct fw_ohci *fw_ohci(st
 
 static char ohci_driver_name[] = KBUILD_MODNAME;
 
+#define PCI_VENDOR_ID_FUJITSU		0x10cf
+#define PCI_VENDOR_ID_PINNACLE_SYSTEMS	0x11bd
 #define PCI_DEVICE_ID_AGERE_FW643	0x5901
 #define PCI_DEVICE_ID_JMICRON_JMB38X_FW	0x2380
 #define PCI_DEVICE_ID_TI_TSB12LV22	0x8009
@@ -3202,6 +3204,12 @@ static int __devinit pci_probe(struct pc
 	int i, err;
 	size_t size;
 
+	if (dev->vendor == PCI_VENDOR_ID_FUJITSU ||
+	    dev->vendor == PCI_VENDOR_ID_PINNACLE_SYSTEMS) {
+		dev_err(&dev->dev, "Controller type is not yet supported\n");
+		return -ENOSYS;
+	}
+
 	ohci = kzalloc(sizeof(*ohci), GFP_KERNEL);
 	if (ohci == NULL) {
 		err = -ENOMEM;
Signature · 3 lines
Stefan Richter
-=====-==-== -=== -=-==
http://arcgraph.de/sr/
#11 lore raw

Re: [PATCH] firewire: ohci: do not bind to Pinnacle or Fujitsu HCI, prevent panic

Quoted 3 lines · On Jul 11 Stefan Richter wrote:

This device with link layer PCI IDs 11bd:0015 and 1394 PHY IDs 00000e:086613 is apparently a Fujitsu MB86613 --- hence the PHY IDs. Therefore, blacklist the MB86613 too

On the other hand, maybe the original MB86613 does not exhibit the issue. The Pinnacle device is combined with another device or function, hence not identical with MB86613:

0c:07.0 Multimedia controller [0480]: Pinnacle Systems Inc. AV/DV Studio Capture Card [11bd:bede]
Subsystem: Pinnacle Systems Inc. Device [11bd:0023]
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort+ <MAbort+ >SERR- <PERR- INTx-
Latency: 64 (2000ns min, 4000ns max), Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 10
Region 0: Memory at fb7ff000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-

0c:07.1 FireWire (IEEE 1394) [0c00]: Pinnacle Systems Inc. Device [11bd:0015] (prog-if 10 [OHCI])
Subsystem: Pinnacle Systems Inc. Device [11bd:0023]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (8000ns min, 20000ns max), Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 10
Region 0: Memory at fb7fe800 (32-bit, non-prefetchable) [size=2K]
Capabilities: [44] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel modules: firewire-ohci

BTW, I dimly remember hear-say about Fujitsu controllers, particularly because they are among the few (or the only ones?) that featured a programmable PhysicalUpperBound. So there was at least one Linux users who had such a controller; perhaps as onboard controllers of a Fujitsu notebook. (Which has got a shorter service life expectancy than a PCI card...)

Signature · 3 lines
Stefan Richter
-=====-==-== -=== -=-==
http://arcgraph.de/sr/
#12 lore raw

Re: [PATCH] firewire: ohci: do not bind to Pinnacle or Fujitsu HCI, prevent panic

In reply to Stefan Richter

I saw these mails just now and it's late. I will check my machine and answer tomorrow

Best regards

Bjørn

Den 11. juli 2011 01:24, skrev Stefan Richter:

Quoted 49 lines

When firewire-ohci is bound to a Pinnacle MovieBoard, eventually a "Register access failure" is logged and an interrupt storm or a kernel panic happens. https://bugzilla.kernel.org/show_bug.cgi?id=36622

Until this is sorted out (if that is going to succeed at all), let's just prevent firewire-ohci from touching these devices.

This device with link layer PCI IDs 11bd:0015 and 1394 PHY IDs 00000e:086613 is apparently a Fujitsu MB86613 --- hence the PHY IDs. Therefore, blacklist the MB86613 too (PCI IDs 10cf:200c). We only check the vendor ID because there is no other Fujitsu OHCI-1394 PCI device known besides this one.

---
Supersedes patch "firewire: ohci: do not bind to Pinnacle cards, prevent panic"

  drivers/firewire/ohci.c |    8 ++++++++
  1 file changed, 8 insertions(+)

Index: b/drivers/firewire/ohci.c
===================================================================

drivers/firewire/ohci.c +8 -0
@@ -260,6 +260,8 @@ static inline struct fw_ohci *fw_ohci(st
 
  static char ohci_driver_name[] = KBUILD_MODNAME;
 
+#define PCI_VENDOR_ID_FUJITSU		0x10cf
+#define PCI_VENDOR_ID_PINNACLE_SYSTEMS	0x11bd
  #define PCI_DEVICE_ID_AGERE_FW643	0x5901
  #define PCI_DEVICE_ID_JMICRON_JMB38X_FW	0x2380
  #define PCI_DEVICE_ID_TI_TSB12LV22	0x8009
@@ -3202,6 +3204,12 @@ static int __devinit pci_probe(struct pc
  	int i, err;
  	size_t size;
 
+	if (dev->vendor == PCI_VENDOR_ID_FUJITSU ||
+	    dev->vendor == PCI_VENDOR_ID_PINNACLE_SYSTEMS) {
+		dev_err(&dev->dev, "Controller type is not yet supported\n");
+		return -ENOSYS;
+	}
+
  	ohci = kzalloc(sizeof(*ohci), GFP_KERNEL);
  	if (ohci == NULL) {
  		err = -ENOMEM;