working with PCI config registers (extensively)

M. Warner Losh imp at bsdimp.com
Fri Jun 9 05:37:48 UTC 2006


In message: <4487045F.4000301 at icyb.net.ua>
            Andriy Gapon <avg at icyb.net.ua> writes:
: 
: I am writing a driver for some PCI hardware that does not have any IO
: ports or IO memory (and thus does not have any useful BARs), but rather
: it is controlled and communicated with by writes and reads of certain
: vendor-specific PCI configuration registers.
: 
: I see that I can use pci_read_config() and pci_write_config() to do
: this, but I am not sure if there are any caveats that I should be aware
: of, any precautions that I should take and any conventions/rules that I
: should follow.
: 
: To explain my question - I am concerned about PCI configuration space
: resources ownership, concurrency, etc. Basically things that should not
: matter in practice :-)

The PCI bus will write to the standard TYPE 0 headers of a device on
the pci bus to manage it.  All other configuration registers are the
responsibility of the driver.  The driver can also access the
registers that the pci bus manages, but care must be taken.  Sounds
like there'd be no conflict for you.

Warner


More information about the freebsd-hackers mailing list