Re: Add a "enable" sysfs attribute to the pci devices to allow userspace (Xorg) to enable devices without doing foul direct access

From: Jon Smirl
Date: Thu May 04 2006 - 17:18:39 EST


On 5/4/06, Peter Jones <pjones@xxxxxxxxxx> wrote:
On Thu, 2006-05-04 at 16:40 -0400, Jon Smirl wrote:
> On 5/4/06, Matthew Garrett <mgarrett@xxxxxxxxxxxxxxxxxxxxxx> wrote:
> > Bjorn Helgaas <bjorn.helgaas@xxxxxx> wrote:
> >
> > > There's already a "rom" file in sysfs. Could vbetool and friends
> > > use that?
> >
> > Not if you have multiple graphics cards.
>
> Not true, the rom attribute maps the ROM into PCI space where ever the
> kernel tells it to and reads it from there. It is the PCI VGA
> emulation feature that forces the ROM to appear at C000:0. You can
> have the ROM mapped and VGA emulation turned off.

It doesn't matter -- you can accomplish the same thing with e.g.
libx86emu and simply mapping the option rom to 0xc0000. But you want to
do that in userland, not in the kernel.

It is much more complicated than than you describe. Go look at the ROM
code already checked in. Laptop video ROMs are not simple PCI devices
that can be mapped around. They are stored in compressed form inside
the system ROM and expanded at boot. If you lose the shadow copy in
RAM there is no API for getting it back. These compressed ROMs are the
source of a lot of laptop user's problems with suspend/resume on
Linux.

VGA support for multiple cards is a very complicated problem. It
really needs to be comprehenisvely designed (but not necessarily
implemented all at once). What we have now is twenty years worth of
hacks that work 95% of the time. But there are many, many holes in the
current scheme.


> This brings up another major point. X changes the PCI VGA emulation
> routing from user space, another thing that it should not be doing. I
> have posted patches before providing a sysfs VGA attribute on class
> VGA devices. By setting the attribute to 1 you can control the active
> VGA emulation device.
>
> This is yet another way that user space can mess up the kernel. If VGA
> routing is changes under fbdev (my attribute notifies fbdev, the fbdev
> code for processing the notification did get checked in) then the
> console will screw up.

And this change allows userland to avoid doing that.

> The usual screw up is that the console goes
> blank because hardware fonts are not setup correctly on the new
> console.

And that's completely unrelated to this problem.

--
Peter




--
Jon Smirl
jonsmirl@xxxxxxxxx
-
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/