From: Len Brown <len.brown@intel.com>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Chris Wright <chrisw@osdl.org>, Adrian Bunk <bunk@stusta.de>,
Bjorn Helgaas <bjorn.helgaas@hp.com>,
Kernel Mailing List <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@osdl.org>
Subject: Re: 2.6.10-rc2 doesn't boot (if no floppy device)
Date: 22 Nov 2004 14:07:49 -0500 [thread overview]
Message-ID: <1101150469.20006.46.camel@d845pe> (raw)
In-Reply-To: <Pine.LNX.4.58.0411200831560.20993@ppc970.osdl.org>
On Sat, 2004-11-20 at 11:41, Linus Torvalds wrote:
>
> On Sat, 20 Nov 2004, Len Brown wrote:
> >
> > It clears the ELCR on Linux boot.
>
> I think this is _really_ wrong.
>
> Basically, you're screwing up more and more PIC state.
>
> Len, the PIC was _correct_ before ACPI touched it. We don't want to
> touch it MORE, we want to touch it LESS.
>
> I'll try this for debugging, but what I want to figure out is where
> ACPI is doing something it shouldn't be doing, and _removing_ that.
>
> We already had one patch where people tried to hide this problem by
> adding more code. Clearly, that patch was bogus. Yes, it hid the
> problem for floppies, but as shown by my other case (and as I was
> trying to say from the beginning), it's not about floppies. It's about
> _any_ non-PCI interrupt that apparently ACPI has done something
> _wrong_ for.
I agree that the system should work properly even if the legacy device
drivers are broken. Please understand, however, that the legacy device
drivers _are_ broken. The BIOS via ACPI clearly tells them if the
devices are present or not, and Linux isn't yet listening.
> So ACPI seems to assume that all interrupts are PCI interrupts, and
> that's just totally wrong. Clearing ELCR is more of this total
> wrongness. ELCR exists for a reason, namely that not all interrupts
> are PCI.
ACPI-compliant systems have three types of interrupts:
1. legacy
2. PCI
3. the ACPI SCI
The first two are described in the DSDT legacy devices and _PRT,
respectively. The third is described in the FADT. The MADT overrides
are available to handle any special cases, though that applies only to
IOAPIC mode.
If there are other interrupts, then it isn't an ACPI-compliant system
and it the BIOS should not enable ACPI. If the BIOS erroneously enables
ACPI on such a system, the workaround is to boot with acpi=off. I'd be
extremly interested to know of such a system, as I've not yet
encountered one.
> Also, you seem to still totally concentrate on PIRQ routing etc.
> Totally ignoring the fact that the problematic cases are about
> interrupts that have _nothing_ to do with PCI. Not the floppy, not the
> PS/2 mouse. NOT PCI! They're both on the southbridge behind a very
> special interface that may or may not look like a PCI bus internally,
> but might quite as well be something totally special-case (ie a
> perfectly normal case is that somebody literally just bolted an old
> 8042 controller core into the system and set up special case magic irq
> routing).
If somebody bolts motherboard hardware on and doesn't tell ACPI about
it, then they need to disable ACPI, which _owns_ configuration of
motherboard devices when it is enabled.
The problem at hand has everything to do with PCI interrupts, and how
they can conflict with legacy interrupts.
PIC hardware is level-HIGH sensitive, it cannot be programmed like
APIC INTIN's can. The only way to effectively use it as level-LOW
sensitive such as that supplied by PCI devices, it so attach those
interrupts sources through inverters. This is what the PIRQ routers
do. I printed out the underlying PIRQ routers for the ICH in
the debug patch because all of the failures at hand seemed
to be in ICH systems and these registers tell us the state
not of the abstract PCI Interrupt link, but of the actual hardware that
can be driving that (legacy) interrupt input.
> > ps. what I think is happening...
> >
> > To its credit, he BIOS correctly recognizes that there is
> > no floppy, and it routes a PIRQ to IRQ6. It correctly sets the
> > ELCR bit for this IRQ.
> >
> > Linux boots and disables all the PCI Interrupt Links,
> > which un-programs the PIRQ directed to IRQ6.
>
> And this is what I think is the bug. There is no reason to disable the
> PCI interrupt link unless you have a damn good reason to do so.
The damn good reason is that doing otherwise breaks systems.
This is the cset comment for the line of code disabling the links:
ChangeSet 1.1608.11.11 2004/06/17 23:21:03 len.brown@intel.com
[ACPI] avoid spurious interrupts on VIA
http://bugzilla.kernel.org/show_bug.cgi?id=2243
drivers/acpi/pci_link.c 1.28.1.1 2004/06/11 10:38:46 len.brown@intel.com
disable all PCI Interrupt Links to be enabled by _SRS
It would sure make my life easier if we didn't support
these VIA/Phoenix systems, but I don't think that breaking
them is what the community wants.
> > However, Linux doesn't clear the ELCR first,
> > and for some reason that causes an interrupt
> > to latch in IRQ6 -- though it is masked.
> >
> > Along comes the broken floppy driver before
> > the PCI devices probe. floppy
> > doesn't realize there is no hardware and
> > unwittingly does a request_irq(6).
>
> You are totally ignoring my other bug report which was for a
> (existing) PSAUX mouse driver on irq12.
>
> If I had had a mouse on that port, it would not have worked.
>
> So the fact is, ACPI does something WRONG.
The PS2 IRQ12 situation is exactly the same as the IRQ6 floppy
situation. If the mouse or floppy were present, the BIOS would not have
given that interrupt to PCI.
-Len
next prev parent reply other threads:[~2004-11-22 19:13 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-11-15 2:49 Linux 2.6.10-rc2 Linus Torvalds
2004-11-15 4:07 ` 2.6.10-rc2 doesn't boot Adrian Bunk
2004-11-15 4:48 ` Linus Torvalds
2004-11-15 5:29 ` Adrian Bunk
2004-11-15 23:27 ` Chris Wright
2004-11-15 23:58 ` Andrew Morton
2004-11-18 23:14 ` 2.6.10-rc2 doesn't boot (if no floppy device) Len Brown
2004-11-19 7:09 ` Chris Wright
2004-11-20 9:02 ` Len Brown
2004-11-20 12:40 ` Adrian Bunk
2004-11-20 18:28 ` Linus Torvalds
2004-11-20 19:10 ` Linus Torvalds
2004-11-22 19:55 ` Len Brown
2004-11-24 16:26 ` Alan Cox
2004-11-21 16:29 ` Adrian Bunk
2004-11-22 19:29 ` Len Brown
2004-11-22 20:02 ` Linus Torvalds
2004-11-22 20:10 ` Linus Torvalds
2004-11-22 20:38 ` Len Brown
2004-11-23 2:45 ` Linus Torvalds
2004-11-23 4:57 ` Linus Torvalds
2004-11-23 7:06 ` Len Brown
2004-11-23 20:13 ` Stian Jordet
2004-11-23 2:00 ` Chris Wright
2004-11-22 18:28 ` Len Brown
2004-11-23 0:46 ` Adrian Bunk
2004-11-23 1:07 ` why use ACPI (Re: 2.6.10-rc2 doesn't boot (if no floppy device)) Len Brown
2004-11-23 1:23 ` Dave Jones
2004-11-23 1:52 ` Adrian Bunk
2004-11-23 1:37 ` Adrian Bunk
2004-11-23 2:47 ` Len Brown
2004-11-23 2:50 ` Dave Jones
2004-11-23 3:13 ` Gene Heskett
2004-11-23 3:45 ` Dave Jones
2004-11-20 16:41 ` 2.6.10-rc2 doesn't boot (if no floppy device) Linus Torvalds
2004-11-22 19:07 ` Len Brown [this message]
2004-11-22 19:23 ` Linus Torvalds
2004-11-22 20:24 ` Len Brown
2004-11-22 20:31 ` Linus Torvalds
2004-11-22 20:36 ` Linus Torvalds
2004-11-22 20:54 ` Len Brown
2004-11-22 20:51 ` Len Brown
2004-11-23 1:58 ` Chris Wright
2004-11-19 13:47 ` Adrian Bunk
2004-11-23 1:57 ` Chris Wright
2004-11-15 7:25 ` 2.6.10-rc2 doesn't boot Andrew Morton
2004-11-15 10:26 ` Linux 2.6.10-rc2 Russell King
2004-11-15 11:24 ` Ben Dooks
2004-11-15 11:55 ` Nick Piggin
2004-11-15 20:20 ` Andrew Morton
2004-11-16 0:29 ` Linux 2.6.10-rc2 [dvb-bt8xx unload oops] Eyal Lebedinsky
2004-11-16 9:57 ` Eyal Lebedinsky
2004-11-17 23:17 ` Eyal Lebedinsky
2004-11-16 7:55 ` Linux 2.6.10-rc2 SAVAGEFB startup crash Philipp Matthias Hahn
2004-11-16 8:17 ` Colin Leroy
2004-11-16 12:43 ` Antonino A. Daplas
2004-11-16 17:27 ` Philipp Matthias Hahn
2004-11-16 21:20 ` Antonino A. Daplas
2004-11-17 11:55 ` Philipp Matthias Hahn
2004-11-16 21:43 ` Antonino A. Daplas
2004-11-16 16:25 ` Linux 2.6.10-rc2 Guido Guenther
2004-11-17 15:54 ` Andrew Walrond
2004-11-17 16:58 ` Linux 2.6.10-rc2 OOPS on boot with 3ware + reiserfs Vladimir B. Savkin
[not found] ` <Pine.LNX.4.58.0411170935040.2222@ppc970.osdl.org>
[not found] ` <20041118103526.GC26240@suse.de>
2004-11-18 16:02 ` Vladimir B. Savkin
2004-11-18 18:39 ` Jens Axboe
2004-11-18 19:10 ` Jens Axboe
2004-11-18 19:22 ` James Bottomley
2004-11-18 21:32 ` Jens Axboe
2004-11-18 21:39 ` James Bottomley
2004-11-19 8:40 ` Jens Axboe
2004-11-17 19:32 ` Linux 2.6.10-rc2 start_udev very slow Andrew Walrond
2004-11-17 23:13 ` Greg KH
2004-12-16 15:56 ` Greg KH
2004-12-16 20:57 ` Andrew Walrond
2004-12-16 21:11 ` Greg KH
2004-12-16 21:20 ` Andrew Walrond
2004-12-16 21:46 ` Greg KH
2004-11-18 17:26 ` Linux 2.6.10-rc2 Vladimir B. Savkin
2004-11-18 17:59 ` Linus Torvalds
2004-11-18 18:01 ` Matthew Wilcox
2004-11-19 8:43 ` Vladimir B. Savkin
[not found] <F7DC2337C7631D4386A2DF6E8FB22B30020B7225@hdsmsx401.amr.corp.intel.com>
2004-11-19 15:57 ` 2.6.10-rc2 doesn't boot (if no floppy device) Adrian Bunk
2004-11-19 17:36 ` Linus Torvalds
2004-11-19 18:51 ` Len Brown
2004-11-19 19:11 ` Adrian Bunk
2004-11-19 21:05 ` Len Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1101150469.20006.46.camel@d845pe \
--to=len.brown@intel.com \
--cc=akpm@osdl.org \
--cc=bjorn.helgaas@hp.com \
--cc=bunk@stusta.de \
--cc=chrisw@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox