[ Next Article | Previous Article | Book Contents | Library Home | Legal | Search ]
Kernel and Subsystems Technical Reference, Volume 2

Adapter-Specific Considerations for the Predefined Attribute (PdAt) Object Class

Description

The various bus resources required by an adapter card are represented as attributes in the Predefined Attribute (PdAt) object class. If the currently assigned values differ from the default values, they are represented with other device attributes in the Customized Attribute (CuAt) object class. To assign bus resources, the Bus Configurator obtains the bus resource attributes for an adapter from both the PdAt and CuAt object classes. It also updates the CuAt object class, as necessary, to resolve any bus resource conflicts.

The following additional guidelines apply to bus resource attributes.

The Attribute Type descriptor must indicate the type of bus resource. The values are as follows:

A Indicates a DMA arbitration level.
B Indicates a bus memory address which is not associated with DMA transfers.
M Indicates a bus memory address to be used for DMA transfers.
I Indicates a bus interrupt level that can be shared with another device.
N Indicates a bus interrupt level that cannot be shared with another device.
O Indicates a bus I/O address.
P Indicates an interrupt-priority class.
W Indicates an amount in bytes of bus memory or bus I/O space.
G Indicates a group.
S Indicates an attribute that must be shared with another adapter.

For bus memory and bus I/O addresses, the amount of address space to be assigned must also be specified. This value can be specified by either the attribute's Width descriptor or by a separate type W attribute.

If the value is specified in the attribute's Width descriptor, it is fixed at that value and cannot be customized. If a separate type W attribute is used, the bus memory or bus I/O attribute's Width descriptor must be set to a null string. The type W attribute's Width descriptor must indicate the name of the bus memory or bus I/O attribute to which it applies.

Attribute types G and S are special-purpose types that the Bus Configurator recognizes. If an adapter has resources whose values cannot be assigned independently of each other, a Group attribute will identify them to the Bus Configurator. For example, an adapter card might have an interrupt level that depends on the bus memory address assigned. Suppose that interrupt level 3 must be used with bus memory address 0x1000000, while interrupt level 4 must be used with bus memory address 0x2000000. This relationship can be described using the Group attribute as discussed in "Predefined Attribute (PdAt) Object Class" .

Occasionally, all cards of a particular type or types must use the same bus resource when present in the system. This is especially true of interrupt levels. Although most adapter's resources can be assigned independently of other adapters, even those of the same type, it is not uncommon to find adapters that must share an attribute value. An adapter card having a bus resource that must be shared with another adapter needs a type S attribute to describe the relationship.

PdAt Descriptors for Type S Attributes

The PdAt descriptors for a type S attribute should be set as follows:

Unique Type Indicates the unique type of the adapter.
Attribute Name Specifies the name assigned to this attribute.
Default Value Set to a null string.
Possible Values Contains the name of the attribute that must be shared with another adapter or adapters.
Width Set to a null string.
Attribute Type Set to S.
Generic Attribute Flags Set to a null string. This attribute must neither be displayed nor set by the user.
Attribute Representation Flags Set to sl, indicating an enumerated list of strings, even though the list consists of only one item.
NLS Index Set to 0 since the attribute is not displayable.

The type S attribute identifies a bus resource attribute that must be shared. The other adapters are identifiable by attributes of type S with the same attribute name. The attribute name for the type S attribute serves as a key to identify all the adapters.

For example, suppose an adapter with unique type adapter/mca/X must share its interrupt level with an adapter of unique type adapter/mca/Y. The following attributes describe such a relationship:

The Predefined Attribute object for X's interrupt level:

The predefined attribute object describing X's shared interrupt level:

The Predefined Attribute object for Y's interrupt level:

The Predefined Attribute object describing Y's shared interrupt level:

Note that the two adapters require different attributes to describe their interrupt levels. The attribute name is also different. However, their attributes describing what must be shared have the same name: shared_intr.

Adapter bus resource attributes except those of type W can be displayed but not set by the user. That is, the Generic Attribute Flags descriptor can either be a null string or the character D, but cannot be U or DU. The Bus Configurator has total control over the assignment of bus resources. These resources cannot be changed to user-supplied values by the Change method.

The Bus Configurator uses type W attributes to allocate bus memory address and bus I/O address attributes but never changes the value of a type W attribute. Attributes of type W can be set by users by setting the Generic Attribute flags descriptor to DU. This allows the Change method to change the type W attribute values to a user-supplied value.

The Bus Configurator does not use or modify any other attribute the adapter may have with attribute type R.

Related Information

Customized Attributes (CuAt) object class,Predefined Attribute (PdAt) object class.

Device Methods for Adapter Cards: Guidelines .

Writing a Change Method .

Understanding Interrupts, Understanding Direct Memory Access (DMA), Writing a Device Method in AIX Kernel Extensions and Device Support Programming Concepts.

Object Data Manager (ODM) Overview for Programmers in AIX General Programming Concepts: Writing and Debugging Programs.

Device Configuration Subsystem Programming Introduction in AIX Kernel Extensions and Device Support Programming Concepts.


[ Next Article | Previous Article | Book Contents | Library Home | Legal | Search ]