enable/disable devices behavior
Dave Airlie
airlied at redhat.com
Tue May 5 22:18:52 PDT 2009
On Wed, 2009-05-06 at 15:14 +1000, Dave Airlie wrote:
> On Wed, 2009-05-06 at 15:09 +1000, Dave Airlie wrote:
> > On Wed, 2009-05-06 at 01:56 -0300, Tiago Vignatti wrote:
> > > Dave Airlie escreveu:
> > > > On Wed, 2009-05-06 at 01:37 -0300, Tiago Vignatti wrote:
> > > >> Hi,
> > > >>
> > > >> AFAIK, the existing interface in libpciaccess to enable a device
> > > >> (pci_device_enable) deals always with I/O _and_ memory resources. But
> > > >> I'm confused with the behavior of such interface because it's not
> > > >> working as I expected. For me it has to be equivalent to do the
> > > >> following, in the regs configuration space:
> > > >>
> > > >> ctrl = (PCI_COMMAND_IO | PCI_COMMAND_MEMORY);
> > > >> pci_device_cfg_write_u32(dev, ctrl, PCI_COMMAND);
> > > >>
> > > >>
> > > >> Isn't it? But it's not happening that. When I call pci_device_enable (or
> > > >> just `echo 1 > enable` in device) the kernel sometimes sets only the
> > > >> PCI_COMMAND_MEMORY bit or simply does nothing. What am I missing here?
> > > >>
> > > >> Attached, I'm sending a code that I'm using to play with this.
> > > >
> > > > Its not for that.
> > > >
> > > > Twiddling enable bits from userspace isn't something we want to be able
> > > > to do.
> > >
> > > So what's the intention of the enable field in sysfs?
> > >
> > > What I want in the end is to build an interface inside pci library to
> > > enable/disable a given resource of a device. This is what we were doing
> > > in Xorg (sigh) and what we progressively can move out to libpciaccess to
> > > build (I expected in a near future) the "system-wide PCI access control".
> >
> > The enable field is to let you *enable* cards that haven't been yet.
> >
> > This is just so secondary cards MMIO ranges are enabled. However it
> > won't disable anything for you ever.
> >
> > Machines boot with the secondary disabled, this just lets you enable it,
> > and generally once enabled you can read out the ROM at least.
> >
> > You are not allowed enable/disable PCI device resources from X.org. This
> > isn't the X servers job at all ever again.
> >
> > Start to think of X as a non-priv process and design things accordingly.
> >
> > Dave.
>
> Perhaps I haven't explained it,
>
> but why do we need to ever play with a *PCI* resource?
>
> Linux does all the PCI setup for us, we never get overlapping PCI
> resources.
>
> VGA should be the only thing we are missing.
Okay daniel pointed out we don't enable i/o resources,
well I'd rather we fixed the kernel to do that than just hack around it
all yet again in userspace, else we'll accidentially XFree86.
Dave.
>
> Dave.
>
> >
> >
> > _______________________________________________
> > xorg-devel mailing list
> > xorg-devel at lists.x.org
> > http://lists.x.org/mailman/listinfo/xorg-devel
>
> _______________________________________________
> xorg-devel mailing list
> xorg-devel at lists.x.org
> http://lists.x.org/mailman/listinfo/xorg-devel
More information about the xorg-devel
mailing list