This is a blog article written by Dan Mick, http://blogs.sun.com/dmick/entry/title_pci_device_identification_and
A PCI device has a bunch of device identification numbers associated
with it, which generic code can retrieve. I've listed them here in
most-specific to least-specific order, by their Solaris property name
(shown in the prtconf -pv
output, which is why we always always always
ask for that when diagnosing driver-binding problems):
- revision (not useful on its own)
- vendor-id, device-id (the usual lone source of driver binding)
- subsystem-vendor-id, subsystem-id (the usual source of the "name" property,
and hence the usual source of the /devices node name)
- class-code
The revision number is only useful in conjunction with vendor-id, device-id.
Entry 3, the subsystem, is nearly useless for every purpose, as many
machines now use the same
subsystem ID for every
motherboard device, and if not, at least the same subsystem-vendor-id.
Sun had originally interpreted subsystem to be more specific than
vendor-id, device-id, but that's not how the industry ended up adopting
it. (as usual, the spec was unclear as to its intent).
The only things Solaris normally uses for binding device drivers are 2 and 4.
The way Solaris driver binding works is: for every element in the compatible
property, in order, a) look for a same-named driver; if it's there, use
it; if not, b) look for a same-named device alias, and get the driver
field out of it; if it's there, use it. That's it. (Note that I'm
specifically talking about Solaris, nothing to do with bootconf or the
DCA.)
So most devices are bound through the vendor-id, device-id pair.
Some devices and drivers are generic enough so that one driver is able
to run an entire class of devices (say, for instance, pci-ide); in that
case, the class-code can be used. But for the most part,
vendor-id,device-id is what you want in /etc/driver_aliases, and it's
always
the right thing to talk about when you're trying to describe
which device you have to someone else.
The Broadcom device aliases were added with both
vendor-id, device-id and
subsystem-vendor-id,
subsystem-id, the intent being to try to bind the bge device driver
only
to particular boards and motherboards we had tested
explicitly. (Opinions differed as to whether this was a good idea.)
Since then, I believe the motion is back to just vendor-id,device-id,
but if you see device aliases for bge with four numbers, that's why.
They'll still work with two numbers, just not as pickily.
Now obviously this opens up the possibility that more than one alias
might match for a particular set of numbers in the PCI device...but
that's why we specify what's in the compatible property, not what's in
the device. The compatible property is always constructed in a
specific order, and as of s10_37, contains the following
(intentionally-redundant) elements for PCI devices:
* (possibly) node-name (0)
* pciVVVV,DDDD.SSSS.ssss.RR (1)
* pciVVVV,DDDD.SSSS.ssss (2)
* pciSSSS,ssss (3)
* pciVVVV,DDDD.RR (4)
* pciVVVV,DDDD (5)
* pciclass,CCSSPP (6)
* pciclass,CCSS (7)
(VVVV is vendor-id, DDDD is device-id, SSSS is subsystem-vendor-id,
ssss is subsystem-id, RR revision, CC major class number, SS subclass
number, PP programming-interface-byte)
Form 0 is there for certain special devices, to "override" the
normal matching, mostly older devices. Then, as you can see, we
sorta
go from most-specific to least-specific, which is the intent of
the compatible property on any bus, PCI being no exception. The
exception to that order is number 3, which had to be where it is
because of the original definition of the compatible property in the
original IEEE1275 spec, which all this is based on. But it's OK,
because we (as noted above) virtually never use it for binding drivers
anyway; we almost-always use 5 or 6/7, and sometimes 2.
分享到:
相关推荐
我们可以将Driver Model Driver看作Windows的WDM Driver,从本质上来说,EFI Driver Model Driver与Non Driver Model Driver的区别是,Driver Model Driver被设计用来支持设备的Plug and Play,Driver Model Driver...
PLATELET BINDING, ELECTROPHORESIS AND BIOASSAY BASED IDENTIFICATION OF THE BAOACTIVE COMPONENT IN SNAKE VENOM ,杨坚,赵明,Crude Venom of Agkistrodon halys palls (f0) were separated by use of sepadex...
该标准的全称是“Health informatics — Device interoperability — Part 20701: Point-of-care medical device communication — Service oriented medical device exchange architecture and protocol binding”...
In this study, we propose a deep-learning based model that uses only sequence information of both targets and drugs to predict DT interaction binding affinities. The few studies that focus on DT ...
MCTP PCIe VDM Transport Binding是MCTP协议的一种实现,使用PCIe VDM(Virtual Device Model)作为传输层。 PCIe VDM是一种基于PCI Express总线的虚拟设备模型,提供了一个高效、可靠的数据传输机制。MCTP PCIe ...
Reduce the amount of code in your user interface by letting the WPF and Silverlights binding system eliminate your need to do things like casting controls and dispatching Best practices for dealing ...
这篇文章介绍了一种新型的知识产权保护机制,特别是针对现场可编程门阵列(FPGA)的IP(知识产权)保护。通过特定的绑定方案,这项技术旨在限制知识产权只能在特定的FPGA设备上执行,从而有效防止知识产权被克隆、...
【CXL Type 3 Device Component Command Interface over MCTP Binding】规范详解 计算机技术日新月异,其中CXL(Compute Express Link)是一项新兴的高速互连技术,旨在提升数据中心和高性能计算系统的性能。CXL ...
在C#编程中,`BindingSource`组件是一个非常重要的工具,用于在UI(用户界面)控件和数据源之间建立数据绑定。它提供了一种方便的方式来管理数据的显示、编辑和同步,尤其是在涉及多个控件与同一数据源交互的场景中...
在Windows Forms应用开发中,`BindingSource`组件扮演着至关重要的角色,它是连接数据源与UI控件的关键组件。本文将深入探讨`BindingSource`在WinForm开发中的使用,包括其基本概念、功能、以及如何实现主细表绑定、...
The intended audience of this project is members of the community interested in binding, who want to see where we're headed and to provide feedback. So that's exactly what we're looking for at this ...
Oracle Solaris 11.1的手册页第9部分,DDI(Device Driver Interface)和DKI(Driver Kit Interface)内核函数,是针对操作系统开发者和驱动程序工程师的重要参考资料。这部分文档详细介绍了Oracle Solaris操作系统...
部分内容提供了文件的某些段落,首先提到了PCIBus Binding to IEEE Std 1275-1994 Standard for Boot(Initialization Configuration)Firmware Revision 2.1,这表明文档是关于如何将PCI总线与1994年发布的IEEE ...
在这个“WPF的binding代码实例”中,我们将深入探讨几个基础的绑定用法,帮助开发者更好地理解和应用这一特性。 1. **基本绑定语法** WPF中的数据绑定通常使用`{Binding}`标记来实现。例如,一个`TextBlock`控件的...
Get up to speed on the C# language, from the basics of syntax and variables to advanced topics such as pointers, operator overloading, and dynamic binding Dig deep into LINQ via three chapters ...
Data Structures and Algorithms in Java (2nd Edition) By Robert Lafore Publisher: Sams Number Of Pages: 800 Publication Date: 2002-11-16 ISBN-10 / ASIN: 0672324539 ISBN-13 / EAN: 9780672324536 ...
win32-ia-32-48_binding.node插件去掉node不报错win32-ia-32-48_binding.node插件去掉node不报错win32-ia-32-48_binding.node插件去掉node不报错win32-ia-32-48_binding.node插件去掉node不报错win32-ia-32-48_...
《Pro.NET2.0 Windows Forms and Custom Controls in C# (Dec 2005)》是一本专注于.NET Framework 2.0环境下,使用C#语言进行Windows Forms应用程序开发及自定义控件设计的专业书籍。该书面向有经验的C#程序员,深入...
The identification of potential regulatory motifs in new sequence data is increasingly important for experimental design. Those motifs are commonly located by matches to IUPAC strings derived from ...