linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Woodhouse <david.woodhouse@intel.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
	Greg Kroah-Hartman <gregkh@suse.de>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Adrian Bunk <bunk@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Natalie Protasevich <protasnb@gmail.com>
Subject: Re: 2.6.32-rc4: Reported regressions from 2.6.31
Date: Mon, 12 Oct 2009 16:56:02 +0100	[thread overview]
Message-ID: <1255362962.32729.63.camel@macbook.infradead.org> (raw)
In-Reply-To: <alpine.LFD.2.01.0910120725350.3438@localhost.localdomain>

On Mon, 2009-10-12 at 16:24 +0100, Linus Torvalds wrote:
> 
> On Mon, 12 Oct 2009, David Woodhouse wrote:
> > 
> > Well, according to the design, the IOMMU code is doing the right thing¹.
> > 
> > The theory is that the BIOS _tells_
> 
> There is no "theory". There is only crap BIOSes. Stop living in a dream 
> world, and stop making arguments that are only relevant in that dream 
> world.

You're preaching to the choir, Linus.

> > The only viable solution (short of an open source BIOS written by sober
> > people)
> 
> Again, you're living in that dream world. Wake up, sheeple.

 ... 

> So your arguments about RMRR tables and "should do" are POINTLESS. Just 
> give it up.

I didn't intend that as an argument. That was just a statement of how
the architecture specifies it's _supposed_ to work. I _said_ it was
nonsense, in my own footnote.

> The sane thing to do is to have a legacy IOMMU mapping until all devices 
> are initialized, so that things work _despite_ the inevitable BIOS 
> crapola. End of story.

Damn right.

That's precisely what the original "kill USB DMA early" patch was
intending to do -- and that's why I've been telling the people
responsible for the RMRR design that it was a stupid idea in the first
place.

The problem with the original patch was just that I didn't realise that
some architectures didn't have ioremap() working at the time that
PCI_FIXUP_HEADER() runs.

> So stop blaming the BIOS. We _know_ firmware is crap - there is no point 
> in blaming it. The response to "firmware bug" should be "oh, of course - 
> and our code was too fragile, since it didn't take that into account".

Yes. That's why our code has grown a metric shitload of BIOS
workarounds, and been refactored to be less fragile, since I've taken
over responsibility for it.

You won't stop me hating the BIOS for it though. And although I agree
that it wouldn't be perfect if we had an open source BIOS, it _would_ be
a whole lot better.

> The other solution would be to just _enable_ (and do all the setup) of the 
> IOMMU early. And then just leave a legacy mapping for the IOMMU, and then 
> _after_all_devices_are_set_up_ can you then remove the legacy mapping.

That involves allocating a _shitload_ of page tables for a 1:1 mapping
of all of physical memory. We used to do that to pander to broken
graphics drivers, and the AMD guys asked me to stop because it was
actually quite painful for them to do the same.

> But your patch looks fine.
> 
> That said, I think your choice of initcall is odd, even if it is 
> understandable. Right now we have, at least on x86:
> 
> 	fs_initcall(pcibios_assign_resources);
> 
> and I assume you picked fs_initcall_sync() so that it happens after that 
> one. No?

Right.

> Which makes sense, but at the same time, it all looks just random. 

No more random than the fact that pcibios_assign_resources() is marked
as a FILE SYSTEM initcall in the first place, surely?

We have a very limited method of expressing ordering constraints for
initcalls; we make do with what we have. Some people around here have
been known to argue _very_ vocally against a more comprehensive
framework for ordering them.

Yes, sometimes it looks odd :)

> And 
> different architectures actually do it in different places (some seem to 
> do it inside pcibios_init() at subsys_initcall time). So I'm not even sure 
> fs_initcall_sync() will do it for other architectures, although it looks 
> like most others do their final PCI setup _earlier_ rather than later.

They will do it earlier; never later. It would be completely broken to
do it any later -- fs_initcall_sync() and rootfs_initcall() are new
inventions, so such an architecture would have to be doing it in
device_initcall(). And that would just be totally broken.

> But I guess there could be random ACPI initcalls etc involved too, and 
> subtle ordering constraints with _those_. And we have way too many 
> arch-specific details here. So your patch may be the simplest one, but I 
> wish we could also make some of this be less of a jungle of different 
> initcalls.

Yeah, it's a complete mess of generic and arch-specific initcalls, all
invoked at different times. It would be good to clean that up, perhaps,
but maybe not for 2.6.32.

> Basically, it seems silly to have this kind of subtlety for just the final 
> quirk, when the _other_ quirks are all handled by generic code in very 
> well-defined places.

I did think briefly about adding it to pci_subsys_init(), but moving it
into arch-specific code didn't seem like a great idea. And the
pcibios_assign_resources() initcall happens _after_ that, anyway.

-- 
David Woodhouse                            Open Source Technology Centre
David.Woodhouse@intel.com                              Intel Corporation


  reply	other threads:[~2009-10-12 15:56 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-11 22:07 2.6.32-rc4: Reported regressions from 2.6.31 Rafael J. Wysocki
2009-10-11 22:15 ` [Bug #14277] Caught 8-bit read from freed memory in b43 driver at association Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14296] spitz boots but suspend/resume is broken Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14278] New message "NOHZ: local_softirq_pending 08" at each ping request Rafael J. Wysocki
2009-10-12 13:15   ` Michael Buesch
2009-10-12 21:49     ` Rafael J. Wysocki
2009-10-13 14:27       ` John W. Linville
2009-10-13 20:50         ` Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14279] Suspend to RAM freeze totally since 2.6.32-rc1 - Acer Aspire 1511Lmi laptop Rafael J. Wysocki
2009-10-12  8:09   ` Jan Beulich
2009-10-12 21:50     ` Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14302] Kernel panic on i386 machine when booting with profile=2 Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14298] warning at manage.c:361 (set_irq_wake), matrix-keypad related? Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14299] oops in wireless, iwl3945 related? Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14352] WARNING: at net/mac80211/scan.c:267 Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14297] console resume broken since ba15ab0e8d Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14334] pcmcia suspend regression from 2.6.31.1 to 2.6.31.2 - Dell Inspiron 600m Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14354] Bad corruption with 2.6.32-rc1 and upwards Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14370] ext4 corruptions Rafael J. Wysocki
2009-10-12  6:50   ` Alexey Fisher
2009-10-12 21:53     ` Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14353] BUG: sleeping function called from invalid context at kernel/mutex.c:280 Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14355] USB serial regression after 2.6.31.1 with Huawei E169 GSM modem Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14373] Task blocked for more than 120 seconds Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14372] Wireless not working after suspend-resume Rafael J. Wysocki
2009-10-12 18:48   ` Fabio Comolli
2009-10-12 21:55     ` Rafael J. Wysocki
2009-10-13  7:07     ` Maciej Rutecki
2009-10-11 22:22 ` [Bug #14374] MCEs caused by commit db8be50c4307dac2b37305fc59c8dc0f978d09ea Rafael J. Wysocki
2009-10-12 13:35   ` Mikael Pettersson
2009-10-12 21:56     ` Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14375] Intel(R) I/OAT DMA Engine init failed Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14376] Kernel NULL pointer dereference/ kvm subsystem Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14378] Problems with net/core/skbuff.c Rafael J. Wysocki
2009-10-12 10:42   ` David Miller
2009-10-12 15:07     ` Massimo "CtRiX" Cetra
2009-10-13  9:11     ` Massimo Cetra
2009-10-13  9:23       ` Massimo Cetra
2009-10-13 10:19       ` Eric Dumazet
2009-10-13 10:25         ` David Miller
2009-10-13 10:26         ` Massimo Cetra
2009-10-14 19:27           ` Massimo Cetra
2009-10-15  0:36             ` [PATCH] virtio_net: use dev_kfree_skb_any() in free_old_xmit_skbs() Eric Dumazet
2009-10-15  6:30               ` David Miller
2009-10-13 10:22       ` [Bug #14378] Problems with net/core/skbuff.c David Miller
2009-10-13 10:27         ` Massimo Cetra
2009-10-11 22:22 ` [Bug #14379] ACPI Warning for _SB_.BAT0._BIF: Converted Buffer to expected String Rafael J. Wysocki
2009-10-12  3:14   ` Justin Mattock
2009-10-12  3:35     ` Lin Ming
2009-10-12  3:58       ` Justin P. Mattock
2009-10-12 21:58         ` Rafael J. Wysocki
2009-10-13  3:12           ` Justin P. Mattock
2009-10-11 22:22 ` [Bug #14381] iwlagn lost connection after s2ram (with warnings) Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14380] Video tearing/glitching with T400 laptops Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14382] Transmit failure in et131x Rafael J. Wysocki
2009-10-11 22:30   ` Alan Cox
2009-10-11 22:22 ` [Bug #14383] hackbench regression with kernel 2.6.32-rc1 Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14386] GPF in snd_hda_intel Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14384] tbench regression with 2.6.32-rc1 Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14387] deadlock with fallocate Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14390] "bind" a device to a driver doesn't not work anymore Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14389] Build system issue Rafael J. Wysocki
2009-10-13 18:53   ` Sam Ravnborg
2009-10-13 20:52     ` Rafael J. Wysocki
2009-10-11 22:22 ` [Bug #14392] Touchpad "paste" stops working after suspend to RAM Rafael J. Wysocki
2009-10-11 23:07 ` 2.6.32-rc4: Reported regressions from 2.6.31 Linus Torvalds
2009-10-12 10:18   ` David Woodhouse
2009-10-12 12:06     ` [PATCH 1/4] Rename pci_init() to pci_apply_final_quirks(), move it to quirks.c David Woodhouse
2009-10-12 12:06     ` [PATCH 2/4] Mark pci_apply_final_quirks() __init rather than __devinit David Woodhouse
2009-10-12 12:06     ` [PATCH 3/4] Run pci_apply_final_quirks() sooner David Woodhouse
2009-10-12 12:06     ` [PATCH 4/4] x86: Move pci_iommu_init to rootfs_initcall() David Woodhouse
2009-10-12 14:26     ` 2.6.32-rc4: Reported regressions from 2.6.31 David Woodhouse
2009-10-12 15:24     ` Linus Torvalds
2009-10-12 15:56       ` David Woodhouse [this message]
2009-10-12 16:13         ` Alan Cox
2009-10-12 17:35         ` Linus Torvalds
2009-10-12 20:29           ` David Woodhouse
2009-10-11 23:11 ` Linus Torvalds
2009-10-12  0:02   ` Theodore Tso

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=1255362962.32729.63.camel@macbook.infradead.org \
    --to=david.woodhouse@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=bunk@kernel.org \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=protasnb@gmail.com \
    --cc=rjw@sisk.pl \
    --cc=torvalds@linux-foundation.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).