Re: [PATCH] Don't touch USB controllers with MMIO disabled in quirks

From: Linus Torvalds
Date: Tue Nov 01 2005 - 10:54:21 EST




On Tue, 1 Nov 2005, Alan Stern wrote:
>
> In theory, is it possible for a UHCI controller still to be running, doing
> DMA and/or generating interrupts, even if PCI_COMMAND_IO isn't set?

Yes, it's possible in theory. I guess we could check whether BUS_MASTER is
enabled (which _does_ need to be enabled, otherwise it couldn't function),
and then enable it.

> Or is this scenario not worth worrying about?

It's probably not worth worrying about. After all, this is really just for
when something else (firmware) has enabled the USB controller for its own
nefarious purposes (ie it also wanted keyboard input), and left it
running. If something has left it running by mistake, it won't have
disabled IO access either.

And if it _has_ disabled IO access, we wouldn't know how to enable it at
this point. Sure, we could enable the command bit, but this is too early
for us to know where in the IO address space it would be safe to enable
it.

But an alternative strategy (which might be very sensible) is to forget
about the handoff entirely, and just shut down the bus master flag
unconditionally. Just make sure that the eventual driver will reset the
controller before it re-enables bus mastering.

That would seem to be the simplest possible "handoff". The only danger is
that I could imagine that there would be controllers out there that get
really confused (ie "I'm not going to play nice any more") if we shut them
up that way.

Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/