2010-12-06 00:03:21

by Robin Cook

[permalink] [raw]
Subject: Issue with firewire from 2.6.35.9 to 2.6.36.1

Hello,

I recently upgraded from 26.35.9 to 2.6.36.1 and now the /dev/fwX
devices are not being created. I have udev 164 installed.

2.6.35.9 dmesg firewire lines...

firewire_ohci 0000:07:00.0: PCI INT A -> GSI 44 (level, low) -> IRQ 44
firewire_ohci 0000:07:00.0: setting latency timer to 64
firewire_ohci: Added fw-ohci device 0000:07:00.0, OHCI v1.10, 4 IR + 8 IT contexts, quirks 0x1
firewire_core: created device fw0: GUID 0010dc0001adc862, S400
firewire_core: created device fw1: GUID 00808803072803a5, S100
firewire_core: phy config: card 0, new root=ffc1, gap_count=5

2.6.36.1 dmesg firewire lines...

firewire_ohci 0000:07:00.0: PCI INT A -> GSI 44 (level, low) -> IRQ 44
firewire_ohci 0000:07:00.0: setting latency timer to 64
firewire_ohci 0000:07:00.0: irq 75 for MSI/MSI-X
firewire_ohci: Added fw-ohci device 0000:07:00.0, OHCI v1.10, 4 IR + 8 IT contexts, quirks 0x1

I have compared the difference between the two kernel configs and the
only differences that I see that may apply to the firewire are:

CONFIG_DNOTIFY=y
-CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y

# CONFIG_IEEE1394 is not set
+CONFIG_FIREWIRE_NOSY=m
CONFIG_I2O=m

On the ieee1394 wiki page it says that these kernel option are expected
to be on for the libraw1394:

CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_EPOLL=y

These option are correct in the 2.6.35.9 kernel but the CONFIG_INOTIFY
option is missing completely in the 2.6.36.1 kernel.

Is this a change in how the firewire works in the kernel and that udev
needs to be modified or is there something else wrong?


Attachments:
signature.asc (836.00 B)
This is a digitally signed message part

2010-12-06 00:11:27

by Maxim Levitsky

[permalink] [raw]
Subject: Re: Issue with firewire from 2.6.35.9 to 2.6.36.1

On Sun, 2010-12-05 at 17:37 -0600, Robin Cook wrote:
> Hello,
>
> I recently upgraded from 26.35.9 to 2.6.36.1 and now the /dev/fwX
> devices are not being created. I have udev 164 installed.
>
> 2.6.35.9 dmesg firewire lines...
>
> firewire_ohci 0000:07:00.0: PCI INT A -> GSI 44 (level, low) -> IRQ 44
> firewire_ohci 0000:07:00.0: setting latency timer to 64
> firewire_ohci: Added fw-ohci device 0000:07:00.0, OHCI v1.10, 4 IR + 8 IT contexts, quirks 0x1
> firewire_core: created device fw0: GUID 0010dc0001adc862, S400
> firewire_core: created device fw1: GUID 00808803072803a5, S100
> firewire_core: phy config: card 0, new root=ffc1, gap_count=5
>
> 2.6.36.1 dmesg firewire lines...
>
> firewire_ohci 0000:07:00.0: PCI INT A -> GSI 44 (level, low) -> IRQ 44
> firewire_ohci 0000:07:00.0: setting latency timer to 64
> firewire_ohci 0000:07:00.0: irq 75 for MSI/MSI-X
> firewire_ohci: Added fw-ohci device 0000:07:00.0, OHCI v1.10, 4 IR + 8 IT contexts, quirks 0x1
>
> I have compared the difference between the two kernel configs and the
> only differences that I see that may apply to the firewire are:
>
> CONFIG_DNOTIFY=y
> -CONFIG_INOTIFY=y
> CONFIG_INOTIFY_USER=y
>
> # CONFIG_IEEE1394 is not set
> +CONFIG_FIREWIRE_NOSY=m
> CONFIG_I2O=m
>
> On the ieee1394 wiki page it says that these kernel option are expected
> to be on for the libraw1394:
>
> CONFIG_INOTIFY=y
> CONFIG_INOTIFY_USER=y
> CONFIG_EPOLL=y
>
> These option are correct in the 2.6.35.9 kernel but the CONFIG_INOTIFY
> option is missing completely in the 2.6.36.1 kernel.
>
> Is this a change in how the firewire works in the kernel and that udev
> needs to be modified or is there something else wrong?

CC'ed linux1394-devel

It looks like now firewire stack doesn't discover any devices?
I don't think its Kconfig issue.

Best regards,
Maxim Levitsky

2010-12-06 07:29:31

by Stefan Richter

[permalink] [raw]
Subject: Re: Issue with firewire from 2.6.35.9 to 2.6.36.1

> On Sun, 2010-12-05 at 17:37 -0600, Robin Cook wrote:
> > Hello,
> >
> > I recently upgraded from 26.35.9 to 2.6.36.1 and now the /dev/fwX
> > devices are not being created. I have udev 164 installed.
> >
> > 2.6.35.9 dmesg firewire lines...
> >
> > firewire_ohci 0000:07:00.0: PCI INT A -> GSI 44 (level, low) -> IRQ 44
> > firewire_ohci 0000:07:00.0: setting latency timer to 64
> > firewire_ohci: Added fw-ohci device 0000:07:00.0, OHCI v1.10, 4 IR + 8 IT contexts, quirks 0x1
> > firewire_core: created device fw0: GUID 0010dc0001adc862, S400
> > firewire_core: created device fw1: GUID 00808803072803a5, S100
> > firewire_core: phy config: card 0, new root=ffc1, gap_count=5
> >
> > 2.6.36.1 dmesg firewire lines...
> >
> > firewire_ohci 0000:07:00.0: PCI INT A -> GSI 44 (level, low) -> IRQ 44
> > firewire_ohci 0000:07:00.0: setting latency timer to 64
> > firewire_ohci 0000:07:00.0: irq 75 for MSI/MSI-X
> > firewire_ohci: Added fw-ohci device 0000:07:00.0, OHCI v1.10, 4 IR + 8 IT contexts, quirks 0x1
> >
> > I have compared the difference between the two kernel configs and the
> > only differences that I see that may apply to the firewire are:
> >
> > CONFIG_DNOTIFY=y
> > -CONFIG_INOTIFY=y
> > CONFIG_INOTIFY_USER=y
> >
> > # CONFIG_IEEE1394 is not set
> > +CONFIG_FIREWIRE_NOSY=m
> > CONFIG_I2O=m
> >
> > On the ieee1394 wiki page it says that these kernel option are expected
> > to be on for the libraw1394:
> >
> > CONFIG_INOTIFY=y
> > CONFIG_INOTIFY_USER=y
> > CONFIG_EPOLL=y
> >
> > These option are correct in the 2.6.35.9 kernel but the CONFIG_INOTIFY
> > option is missing completely in the 2.6.36.1 kernel.
> >
> > Is this a change in how the firewire works in the kernel and that udev
> > needs to be modified or is there something else wrong?

I hadn't noticed that the INOTIFY kconfig options changed relative to
what is documented at the wiki. I'll update that.

It is most likely not the cause for your issue. Rather, MSI support
(messages signaled interrupts, added to firewire-ohci in kernel 2.6.36)
of your controller might be buggy. Which controller do you have
according to "lspci -nn"?

Try "modprobe -r firewire-ohci", "modprobe firewire-ohci quirks=17".
The unrelated quirks flag 1 is already present in firewire-ohci's
quirks list; the additional flag 16 switches off MSI.
--
Stefan Richter
-=====-==-=- ==-- --==-
http://arcgraph.de/sr/

2010-12-06 09:38:08

by Clemens Ladisch

[permalink] [raw]
Subject: Re: Issue with firewire from 2.6.35.9 to 2.6.36.1

Stefan Richter wrote:
> > On Sun, 2010-12-05 at 17:37 -0600, Robin Cook wrote:
> > > I recently upgraded from 26.35.9 to 2.6.36.1 and now the /dev/fwX
> > > devices are not being created. I have udev 164 installed.
> > >
> > > 2.6.35.9 dmesg firewire lines...
> > >
> > > firewire_ohci 0000:07:00.0: PCI INT A -> GSI 44 (level, low) -> IRQ 44
> > > firewire_ohci 0000:07:00.0: setting latency timer to 64
> > > firewire_ohci: Added fw-ohci device 0000:07:00.0, OHCI v1.10, 4 IR + 8 IT contexts, quirks 0x1
> > > firewire_core: created device fw0: GUID 0010dc0001adc862, S400
> > > firewire_core: created device fw1: GUID 00808803072803a5, S100
> > > firewire_core: phy config: card 0, new root=ffc1, gap_count=5
> > >
> > > 2.6.36.1 dmesg firewire lines...
> > >
> > > firewire_ohci 0000:07:00.0: PCI INT A -> GSI 44 (level, low) -> IRQ 44
> > > firewire_ohci 0000:07:00.0: setting latency timer to 64
> > > firewire_ohci 0000:07:00.0: irq 75 for MSI/MSI-X
> > > firewire_ohci: Added fw-ohci device 0000:07:00.0, OHCI v1.10, 4 IR + 8 IT contexts, quirks 0x1
>
> ... Rather, MSI support
> (messages signaled interrupts, added to firewire-ohci in kernel 2.6.36)
> of your controller might be buggy.

I'd guess if you check in /proc/interrupts you see that no interrupts
have arrived for IRQ 75 (firewire-ohci).

> Which controller do you have according to "lspci -nn"?

"0010DC" is MSI. I've heard about VT6315 and JMB381 controllers on
their mainboards; since the driver tries to enable MSI, it must be the
VT6315.


Regards,
Clemens

2010-12-06 22:04:47

by Robin Cook

[permalink] [raw]
Subject: Re: Issue with firewire from 2.6.35.9 to 2.6.36.1

On Mon, 2010-12-06 at 08:29 +0100, Stefan Richter wrote:
> > On Sun, 2010-12-05 at 17:37 -0600, Robin Cook wrote:
> > > Hello,
> > >
> > > I recently upgraded from 26.35.9 to 2.6.36.1 and now the /dev/fwX
> > > devices are not being created. I have udev 164 installed.
> > >
> > > 2.6.35.9 dmesg firewire lines...
> > >
> > > firewire_ohci 0000:07:00.0: PCI INT A -> GSI 44 (level, low) -> IRQ 44
> > > firewire_ohci 0000:07:00.0: setting latency timer to 64
> > > firewire_ohci: Added fw-ohci device 0000:07:00.0, OHCI v1.10, 4 IR + 8 IT contexts, quirks 0x1
> > > firewire_core: created device fw0: GUID 0010dc0001adc862, S400
> > > firewire_core: created device fw1: GUID 00808803072803a5, S100
> > > firewire_core: phy config: card 0, new root=ffc1, gap_count=5
> > >
> > > 2.6.36.1 dmesg firewire lines...
> > >
> > > firewire_ohci 0000:07:00.0: PCI INT A -> GSI 44 (level, low) -> IRQ 44
> > > firewire_ohci 0000:07:00.0: setting latency timer to 64
> > > firewire_ohci 0000:07:00.0: irq 75 for MSI/MSI-X
> > > firewire_ohci: Added fw-ohci device 0000:07:00.0, OHCI v1.10, 4 IR + 8 IT contexts, quirks 0x1
> > >
> > > I have compared the difference between the two kernel configs and the
> > > only differences that I see that may apply to the firewire are:
> > >
> > > CONFIG_DNOTIFY=y
> > > -CONFIG_INOTIFY=y
> > > CONFIG_INOTIFY_USER=y
> > >
> > > # CONFIG_IEEE1394 is not set
> > > +CONFIG_FIREWIRE_NOSY=m
> > > CONFIG_I2O=m
> > >
> > > On the ieee1394 wiki page it says that these kernel option are expected
> > > to be on for the libraw1394:
> > >
> > > CONFIG_INOTIFY=y
> > > CONFIG_INOTIFY_USER=y
> > > CONFIG_EPOLL=y
> > >
> > > These option are correct in the 2.6.35.9 kernel but the CONFIG_INOTIFY
> > > option is missing completely in the 2.6.36.1 kernel.
> > >
> > > Is this a change in how the firewire works in the kernel and that udev
> > > needs to be modified or is there something else wrong?
>
> I hadn't noticed that the INOTIFY kconfig options changed relative to
> what is documented at the wiki. I'll update that.
>
> It is most likely not the cause for your issue. Rather, MSI support
> (messages signaled interrupts, added to firewire-ohci in kernel 2.6.36)
> of your controller might be buggy. Which controller do you have
> according to "lspci -nn"?
>
> Try "modprobe -r firewire-ohci", "modprobe firewire-ohci quirks=17".
> The unrelated quirks flag 1 is already present in firewire-ohci's
> quirks list; the additional flag 16 switches off MSI.

Output from lspci -nn on the firewire controller.

07:00.0 FireWire (IEEE 1394) [0c00]: VIA Technologies, Inc. VT6315 Series Firewire Controller [1106:3403]

The modprobe firewire-ohci quirks=17 worked to get the devices being
created again.



Attachments:
signature.asc (836.00 B)
This is a digitally signed message part

2010-12-07 08:27:53

by Stefan Richter

[permalink] [raw]
Subject: Re: Issue with firewire from 2.6.35.9 to 2.6.36.1

On Dec 06 Robin Cook wrote:
> 07:00.0 FireWire (IEEE 1394) [0c00]: VIA Technologies, Inc. VT6315 Series Firewire Controller [1106:3403]
>
> The modprobe firewire-ohci quirks=17 worked to get the devices being
> created again.

I wonder which of our options is preferable:
- Change fw-ohci from MSI blacklisting to whitelisting. Agere FW643
rev 07 is the only chip that can be whitelisted.
- Simply drop MSI support altogether.
--
Stefan Richter
-=====-==-=- ==-- --===
http://arcgraph.de/sr/

2010-12-07 09:15:47

by Clemens Ladisch

[permalink] [raw]
Subject: Re: Issue with firewire from 2.6.35.9 to 2.6.36.1

Stefan Richter wrote:
> I wonder which of our options is preferable:
> - Change fw-ohci from MSI blacklisting to whitelisting. Agere FW643
> rev 07 is the only chip that can be whitelisted.
> - Simply drop MSI support altogether.

That depends on whether the maintainer can afford the effort of
maintaining the whitelist.


Regards,
Clemens

2010-12-07 14:04:26

by Stefan Richter

[permalink] [raw]
Subject: Re: Issue with firewire from 2.6.35.9 to 2.6.36.1

On Dec 07 Clemens Ladisch wrote:
> Stefan Richter wrote:
> > I wonder which of our options is preferable:
> > - Change fw-ohci from MSI blacklisting to whitelisting. Agere FW643
> > rev 07 is the only chip that can be whitelisted.
> > - Simply drop MSI support altogether.

Blacklisting is also still an option if we extend the table by a
revision field:
match = ... && (ohci_quirks[i].revision == ANY_REVISION ||
dev->revision <= ohci_quirks[i].revision) && ...;
If we ever need an dev->revision >= ohci_quirks[i].revision match, the
"break after first match" rule can be put to use or more tricks be
added.

> That depends on whether the maintainer can afford the effort of
> maintaining the whitelist.

I heard the maintainer is an FW643-E owner. Maybe he accepts the
maintenance burden for personal gain (less MMIO reads than with shared
IRQs). He might get fed up when new 1394 controllers with working MSI
support start to appear on the market in a monthly rhythm or so.

Blacklist maintenance OTOH would be worse for all concerned, since
evidently not every MSI related bug is so easy to identify like with
JMB38x and VT6315. Even such simple cases will become more problematic
as more time goes by since the 2.6.36 release. Though with the current
rate of OHCI 1394 product releases, blacklisting seems not to be a big
deal either.
--
Stefan Richter
-=====-==-=- ==-- --===
http://arcgraph.de/sr/