linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Len Brown <len.brown@intel.com>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Adrian Bunk <bunk@stusta.de>, Chris Wright <chrisw@osdl.org>,
	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:29:40 -0500	[thread overview]
Message-ID: <1101151780.20006.69.camel@d845pe> (raw)
In-Reply-To: <Pine.LNX.4.58.0411200940410.20993@ppc970.osdl.org>

On Sat, 2004-11-20 at 13:28, Linus Torvalds wrote:
> 
> On Sat, 20 Nov 2004, Adrian Bunk wrote:
> >
> > With your patch, the boot failure goes away.
> > This was with a kernel without Linus' patch applied.
> 
> It boots for me too, but it all seems pretty accidental.
> 
> In particular, the code will disable irq12 (mouse interrupt), so the
> mouse has no chance of working. Having tested it, it so happens that
> if I boot with a mouse actually conntected, the BIOS will not use
> irq12 for PCI devices, so that will hide the problem since ACPI won't
> try to disable it when it doesn't see it.

This is not an accident that is being hidden by mistake.
The BIOS probes for the legacy mouse.

If it finds one, it gives it IRQ12.
If it doesn't find one it gives IRQ12 to PCI.

Other BIOS's are not as good as these and they don't give the free IRQs
to PCI.  Sub-optimal, but perfectly legal.

Exact same situation Chris and Adrian see with the floppy and IRQ6.
Exact same situation could potentially be seen with any motherboard
device and any IRQ -- except, of course, those that can't be probed or
are otherwise hard-coded for well known legacy devices, such as the RTC
on IRQ8.

> But if I had more PCI devices, or another legacy device that doesn't
> have the same kind of "test if something is connected" logic, it
> really looks like it would break again. (It's entirely possible that
> Windows has the exact same issue, of course, at which point it's
> fairly safe to say that manufacturers will have tested this and just
> not done it, but I don't feel all that safe making that assumption).

Windows uses ACPI to probe the legacy motherboard devices, and ACPI uses
what the BIOS finds.  If the BIOS and ACPI don't know about the
motherboard device, then it isn't an ACPI system and among other
failures, it would never have got a nifty Made for Windows sticker, and
thus would have market penetration of approximately 0.

Linux is just now learning to use ACPI for probing legacy motherboard
devices.  I believe that this transition can be made safely and that
legacy probes should continue to work both during and after the
transition.

> So I think the simpler fix is just this one-liner: we should not
> disable preexisting links, because non-PCI devices may depend on the
> same routing information, and thus the comments about "being activated
> on use" is not actually true.
> 

>                 Linus
> 
> ===== drivers/acpi/pci_link.c 1.34 vs edited =====
> --- 1.34/drivers/acpi/pci_link.c        2004-11-01 23:40:09 -08:00
> +++ edited/drivers/acpi/pci_link.c      2004-11-20 09:43:56 -08:00
> @@ -685,9 +685,6 @@
>         acpi_link.count++;
> 
>  end:
> -       /* disable all links -- to be activated on use */
> -       acpi_ut_evaluate_object(link->handle, "_DIS", 0, NULL);
> -
>         if (result)
>                 kfree(link);

This is not a fix, it will break systems in the field.

When we enable a link, we must set the ELCR.
When we disable a link, we must clear the ELCR.
We need to be able to enable and disable all links in the system.

The bug was that while we were were setting the ELCR
when we enabled a link, we were not clearing it when we disabled one.

We also have an issue when we move the destiation of a link,
though we don't do that very often.

My debug patch cleared every bit in the ELCR even if no PCI interrupt
link device pointed to that entry.  Yes, this assumes that ACPI knows
about every level triggered interrupt in the system.

I think that is a valid assumption on an ACPI-compliant system.

But if you're more comfortable with disabling the associated ELCR bit
only when we disable links directed at that entry, we can do that too. 
The complication with that approach is that links are many to one, so
clearing the bit without disabling all links directed to that entry
would result in a failure.  Also, the SCI uses the ELCR too, and it
isn't described by links at all.

-Len



  parent reply	other threads:[~2004-11-22 19:39 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 [this message]
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
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=1101151780.20006.69.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;
as well as URLs for NNTP newsgroup(s).