enable/disable devices behavior

Tiago Vignatti vignatti at freedesktop.org
Tue May 5 21:56:44 PDT 2009


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".

                     Tiago


More information about the xorg-devel mailing list