Skip to contentSkip to conversation

let PCI_MSI depend on EXPERIMENTAL

RFC PATCH In review Adrian Bunk 6 participants 7 messages Mar 27, 2007 PCI

lore
Share & tools
lore
#0 lore raw

RFC PATCH 1/1 let PCI_MSI depend on EXPERIMENTAL

We had during the last months have quite a few MSI bugs and even regressions due to:
- core kernel bugs,
- device driver bugs and
- hardware bugs

OTOH, MSI doesn't bring any real advantages for most users.

Let's therefore mark PCI_MSI as EXPERIMENTAL.

---

drivers/pci/Kconfig renamed from drivers/pci/Kconfig.old +2 -2
@@ -2,8 +2,8 @@
 # PCI configuration
 #
 config PCI_MSI
-	bool "Message Signaled Interrupts (MSI and MSI-X)"
-	depends on PCI
+	bool "Message Signaled Interrupts (MSI and MSI-X)  (EXPERIMENTAL)"
+	depends on PCI && EXPERIMENTAL
 	depends on (X86_LOCAL_APIC && X86_IO_APIC) || IA64 || (PPC_MERGE && PPC_RTAS) || SPARC64
 	help
 	   This allows device drivers to enable MSI (Message Signaled
#1 lore raw

From: Adrian Bunk <[email protected]>
Date: Tue, 27 Mar 2007 03:02:47 +0200

Quoted 11 lines

We had during the last months have quite a few MSI bugs and even regressions due to:
- core kernel bugs,
- device driver bugs and
- hardware bugs

OTOH, MSI doesn't bring any real advantages for most users.

Let's therefore mark PCI_MSI as EXPERIMENTAL.

This is a good way to ensure that the code doesn't get tested enough to ever fix the problems.

#2 lore raw
Quoted 9 lines · David Miller

From: Adrian Bunk <[email protected]>
Date: Tue, 27 Mar 2007 03:02:47 +0200

Quoted 6 lines

We had during the last months have quite a few MSI bugs and even regressions due to:
- core kernel bugs,
- device driver bugs and
- hardware bugs

Quoted 8 lines
Quoted 5 lines

OTOH, MSI doesn't bring any real advantages for most users.

Let's therefore mark PCI_MSI as EXPERIMENTAL.

This is a good way to ensure that the code doesn't get tested enough to ever fix the problems.

I agree, we need to leave it as it is. Now that Vista is out with support for MSI, we will start to get more hardware that actually works properly with it...

thanks,

greg k-h

#3 lore raw
In reply to David Miller
Quoted 8 lines · David Miller

From: Adrian Bunk <[email protected]>
Date: Tue, 27 Mar 2007 03:02:47 +0200

Quoted 5 lines

We had during the last months have quite a few MSI bugs and even regressions due to:
- core kernel bugs,
- device driver bugs and
- hardware bugs

- architecture bugs
- MSI enabled on hardware that does not support it.

aka. Drivers have started supporting MSI, People have started using and testing MSI, and there has been MSI maintenance. People care.

The most recent regressions involving MSI have been fixes propagating their way through the kernel, and I can't think of a one of them that was MSI specific. Just that the bug didn't happen to show up clearly without MSI enabled.

Finding that pci_save_state/pci_restore_state had serious resources leaks was nasty.

Finding that pci_enable_device isn't suspend/resume safe as implemented on x86 and ia64 is very nasty. Currently on x86 it is only really safe to call pci_enable_device exactly once. But the bugs are small enough we don't generally notice.

Personally I prefer glaring outstanding bugs to little subtle once that only bite you on the second Tuesday of the month.

The recent MSI maintenance has shifted the code around enough that problems became visible. I'm not happy with this but I don't expect this to be an on-going state of affairs.

Quoted 1 line
Quoted 1 line

OTOH, MSI doesn't bring any real advantages for most users.

So default it to off, although I suspect we are approaching the point where it would actually be safe to default it to on. We need a kernel release that doesn't have msi issues yet.

Quoted 6 lines
Quoted 3 lines

Let's therefore mark PCI_MSI as EXPERIMENTAL.

This is a good way to ensure that the code doesn't get tested enough to ever fix the problems.

Dave I agreed. PCI_MSI is not the problem.

I think marking PCI_MSI as EXPERIMENTAL now would be closing the barn door after the horses have fled. I don't know of a core MSI code path that hasn't been scrutinized lately. I wouldn't say they are perfect but they are junk either. Especially given that the code is not good enough where non x86 architectures can support MSI.

There is one big remaining real world problem and that is we enable MSI optimistically. Resulting in it being enabled on chipsets that don't support MSI. We still need to change that behavior. I have been buried in the guts of things so I haven't had the free cycles to worry about that yet, nor have there been enough people complaining that it has crossed my pain threshold to just fix the thing.

I think where we are honestly at is that today MSI works on most new
chipsets. MSI is supported by the hardware. MSI is supported by the
OS. With a little more maturity devices and device drivers will start taking advantage of in ways that matter to users now that it works.

I can guess how they will take advantage of it and make it matter to users but that would just be speculation on my part.

Eric

#4 lore raw
Quoted 65 lines · Eric W. Biederman
Quoted 8 lines · David Miller

From: Adrian Bunk <[email protected]>
Date: Tue, 27 Mar 2007 03:02:47 +0200

Quoted 5 lines

We had during the last months have quite a few MSI bugs and even regressions due to:
- core kernel bugs,
- device driver bugs and
- hardware bugs

- architecture bugs
- MSI enabled on hardware that does not support it.

aka. Drivers have started supporting MSI, People have started using and testing MSI, and there has been MSI maintenance. People care.

The most recent regressions involving MSI have been fixes propagating their way through the kernel, and I can't think of a one of them that was MSI specific. Just that the bug didn't happen to show up clearly without MSI enabled.

Finding that pci_save_state/pci_restore_state had serious resources leaks was nasty.

Finding that pci_enable_device isn't suspend/resume safe as implemented on x86 and ia64 is very nasty. Currently on x86 it is only really safe to call pci_enable_device exactly once. But the bugs are small enough we don't generally notice.

Personally I prefer glaring outstanding bugs to little subtle once that only bite you on the second Tuesday of the month.

The recent MSI maintenance has shifted the code around enough that problems became visible. I'm not happy with this but I don't expect this to be an on-going state of affairs.

Quoted 1 line
Quoted 1 line

OTOH, MSI doesn't bring any real advantages for most users.

So default it to off, although I suspect we are approaching the point where it would actually be safe to default it to on. We need a kernel release that doesn't have msi issues yet.

Quoted 6 lines
Quoted 3 lines

Let's therefore mark PCI_MSI as EXPERIMENTAL.

This is a good way to ensure that the code doesn't get tested enough to ever fix the problems.

Dave I agreed. PCI_MSI is not the problem.

I think marking PCI_MSI as EXPERIMENTAL now would be closing the barn door after the horses have fled. I don't know of a core MSI code path that hasn't been scrutinized lately. I wouldn't say they are perfect but they are junk either. Especially given that the code is not good enough where non x86 architectures can support MSI.

There is one big remaining real world problem and that is we enable MSI optimistically. Resulting in it being enabled on chipsets that don't support MSI. We still need to change that behavior. I have been buried in the guts of things so I haven't had the free cycles to worry about that yet, nor have there been enough people complaining that it has crossed my pain threshold to just fix the thing.

Quoted 4 lines

I think where we are honestly at is that today MSI works on most new
chipsets. MSI is supported by the hardware. MSI is supported by the
OS. With a little more maturity devices and device drivers will start taking advantage of in ways that matter to users now that it works.

.. and we will start to see more and more hardware that _only_ uses MSI. So we need to get it fixed, rather than sweeping the bugs under the carpet 'til later.

cheers

Signature · 8 lines
Michael Ellerman
OzLabs, IBM Australia Development Lab

wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)

We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person
#5 lore raw
In reply to Eric W. Biederman
Quoted 2 lines · Eric W. Biederman

aka. Drivers have started supporting MSI, People have started using and testing MSI, and there has been MSI maintenance. People care.

Agreed, well put.

Quoted 4 lines

The most recent regressions involving MSI have been fixes propagating their way through the kernel, and I can't think of a one of them that was MSI specific. Just that the bug didn't happen to show up clearly without MSI enabled.

Yep.

Quoted 3 lines

So default it to off, although I suspect we are approaching the point where it would actually be safe to default it to on. We need a kernel release that doesn't have msi issues yet.

Now that we are finally getting a handle on the MSI bumps-in-the-road, IMO it would be counterproductive to default it to 'off' now.

Jeff

#6 lore raw
Quoted 15 lines · Jeff Garzik
Quoted 2 lines · Eric W. Biederman

aka. Drivers have started supporting MSI, People have started using and testing MSI, and there has been MSI maintenance. People care.

Agreed, well put.

Quoted 4 lines

The most recent regressions involving MSI have been fixes propagating their way through the kernel, and I can't think of a one of them that was MSI specific. Just that the bug didn't happen to show up clearly without MSI enabled.

Yep.

Quoted 6 lines
Quoted 3 lines

So default it to off, although I suspect we are approaching the point where it would actually be safe to default it to on. We need a kernel release that doesn't have msi issues yet.

Now that we are finally getting a handle on the MSI bumps-in-the-road, IMO it would be counterproductive to default it to 'off' now.

Let's see the Kconfig entry currently reads:

Quoted 10 lines

config PCI_MSI
bool "Message Signaled Interrupts (MSI and MSI-X)" depends on PCI
depends on (X86_LOCAL_APIC && X86_IO_APIC) || IA64 || SPARC64 help
This allows device drivers to enable MSI (Message Signaled Interrupts). Message Signaled Interrupts enable a device to generate an interrupt using an inbound Memory Write on its PCI bus instead of asserting a device IRQ pin.

Quoted 5 lines

Use of PCI MSI interrupts can be disabled at kernel boot time by using the 'pci=nomsi' option. This disables MSI for the entire system.

If you don't know what to do here, say N.

So I don't know if we are defaulting it to off but we are advising it be turned off. So all of the bug reports are coming from people who presumably know what they are doing and deliberately turn it on.

Once things quite down and we fix the chipset support detection then I think we can default it to on. Once that settles down we can remove the manual option entirely except possibly under CONFIG_EMBEDDED.

We certainly don't have the question does this chipset support MSI handled well enough to do better right now. I think non-x86 might but we certainly don't.

Eric