Intel Extensible Firmware Interface User Manual

Page 65

Advertising
background image

Overview

Version 1.10

12/01/02

2-25

OM13153

Bus Controller

Bus Controller

Start()

Stop()

A

B

C

D

E

Figure 2-12. Connecting Bus Drivers

A bus driver that supports creating one child on each call to

Start()

might choose to create child

C first, and then child E, and then the remaining children A, B, and D. The

Supported()

,

Start()

, and

Stop()

functions of the Driver Binding Protocol are flexible enough to allow this

type of behavior.

A bus driver must install protocol interfaces onto every child handle that is creates. At a minimum,
it must install a protocol interface that provides an I/Oabstraction of the bus’s services to the child
controllers. If the bus driver creates a child handle that represents a physical device, then the bus
driver must also install a Device Path Protocol instance onto the child handle. A bus driver may
optionally install a Bus Specific Driver Override Protocol onto each child handle. This protocol is
used when drivers are connected to the child controllers. The boot service

ConnectController()

uses architecturally defined precedence rules to choose the best set of

drivers for a given controller. The Bus Specific Driver Override Protocol has higher precedence
than a general driver search algorithm, and lower precedence than platform overrides. An example
of a bus specific driver selection occurs with PCI. A PCI Bus Driver gives a driver stored in a PCI
controller’s option ROM a higher precedence than drivers stored elsewhere in the platform.
Figure 2-13 shows an example child device handle that was created by the XYZ Bus Driver that
supports a bus specific driver override mechanism.

Advertising