uefi_drivers.ppt
TRANSCRIPT
UEFI / Framework Special Topic UEFI / Framework Special Topic Slide 1UEFI DriversUEFI / Framework Special TopicCopyright 2007 Intel CorporationUEFI / Framework Special Topic UEFI / Framework Special Topic Slide 2UEFI Driver Model Used for devices on industry standard buses !boot devices" Structured model of device/bus #ierarc#y Device Drivers and $us Drivers Device Drivers are topolo%y a%nostic $enefits Simpler Device Drivers Moves comple&ity into $us Drivers and core services Smaller driver footprint Deterministic driver selection by t#e platform '#ic# driver controls w#ic# device Describes comple& bus #ierarc#ies Embedded( Desktop( 'orkstation( Server E&tensible to future bus typesUse of multilayer modularity means Use of multilayer modularity meansmore scenarios just work more scenarios just workUse of multilayer modularity means Use of multilayer modularity meansmore scenarios just work more scenarios just workUEFI / Framework Special Topic UEFI / Framework Special Topic Slide 3UEFI Driver ModelSupports comple& bus #ierarc#ies
Follows t#e or%ani)ation of p#ysical/electrical arc#itecture of t#e mac#ineDriver $indin% *rotocol provides fle&ibility
Function to matc# drivers to devices Driver version mana%ement +ot,plu% and unload supportDrivers not tied to F-.S+ /an be loaded from UEFI System *artitionE&tensible
.ble to e&tend to future bus and device typesUEFI DriversUEFI / Framework Special Topic UEFI / Framework Special Topic Slide 4UEFI Driver Desi%nModular c#unks of code run in pre,boot Mana%e devices or services 0t#ey are 12T 2S,present drivers3Drivers e&port protocol interfaces
*rotocol 4 instance data 5 access met#ods
-ike /55 classes but more code space efficient Identified by 6UID to avoid collisions 7ersion numbers and si%natures provide means to mana%e driver mana%ement policyDrivers may consume protocol interfaces Self,describin% dependencies E8%8 Memory initiali)ation may depend on SM$US serviceUEFI / Framework Special Topic UEFI / Framework Special Topic Slide 5Driver Desi%n Steps98 Determine Driver Type:8 Identify /onsumed I/2 *rotocols;8 Identify *roduced I/2 *rotocols8 Identify Tar%et *latforms
&?>
&>Flush()DM.Settin% Up wit# PciIo->Map()
Do 1ot Use Deturned DeviceAddress
1ot all c#ipsets #ave 9I9 bus/system mappin%s$ri%er -uidelinesUEFI / Framework Special Topic UEFI / Framework Special Topic Slide 27*/I Device DriversStart@AStatus = PciIo->Attributes(PciIo, EfiPciIoAttributeOperationGet,0, &ControllerContext->OriinalPciIoAttributes!"if (E#I$E%%O% (Status!! &'' Error (an)lin*Status = PciIo->Attributes(PciIo, EfiPciIoAttributeOperationEnable,(E#I$PCI$IO$A++%I,-+E$IO . E#I$PCI$IO$A++%I,-+E$/E/O%0 . E#I$PCI$IO$A++%I,-+E$,-S$/AS+E% . E#I$PCI$IO$A++%I,-+E$1-A2$A11%ESS$C0C2E!,0, 3-22!"if (E#I$E%%O% (Status!! &'' Error (an)lin*+a%e 3riginal and "na!le +a%e 3riginal and "na!le$ri%er -uidelinesUEFI / Framework Special Topic UEFI / Framework Special Topic Slide 28*/I Device DriversStop@AStatus = PciIo->Attributes(PciIo, EfiPciIoAttributeOperationSet,&ControllerContext->OriinalPciIoAttributes3-22!"if (E#I$E%%O% (Status!! &'' Error (an)lin*/estore 3riginal /estore 3riginal$ri%er -uidelinesUEFI / Framework Special Topic UEFI / Framework Special Topic Slide 29*reventin% .li%nment Faults4OI1Scsi1e5ice3o)eInit (I3 O-+ SCSI$1E4ICE$PA+(6Scsi1e5ice3o)e,I3 -I3+78Pun,I3 -I3+782un!&Scsi1e5ice3o)e->Scsi9(ea)er9+:pe= /ESSAGI3G$1E4ICE$PA+("Scsi1e5ice3o)e->Scsi9(ea)er9Sub+:pe = /SG$SCSI$1P"Set1e5icePat;3o)e2ent; (&Scsi1e5ice3o)e->Scsi9(ea)er, siScsi92un= 2un"*(*$+csi$e%ice'ode may not !e aligned +csi$e%ice'ode may not !e aligned$ri%er -uidelinesUEFI / Framework Special Topic UEFI / Framework Special Topic Slide 30*reventin% .li%nment Faults4OI1Scsi1e5ice3o)eInit (I3 O-+ SCSI$1E4ICE$PA+(6Scsi1e5ice3o)e,I3 -I3+78Pun,I3 -I3+782un!&SCSI$1E4ICE$PA+(/:1e5ice3o)e"/:1e5ice3o)e9Scsi9(ea)er9+:pe= /ESSAGI3G$1E4ICE$PA+("/:1e5ice3o)e9Scsi9(ea)er9Sub+:pe = /SG$SCSI$1P"Set1e5icePat;3o)e2ent; (&/:1e5ice3o)e9Scsi9(ea)er, siCopyem01 handles all alignments g(+)>Copyem01 handles all alignmentsy$e%ice'ode is aligned y$e%ice'ode is aligned$ri%er -uidelinesUEFI / Framework Special Topic UEFI / Framework Special Topic Slide 31Use UEFI Driver -ibrary FunctionsC(I21$1E4ICEC;il)"C;il) = Efi2ibAllocate>eroPool (si1e5icePat; = EfiAppen)1e5icePat;3o)e (Controller1e5icePat;,C;il)1e5icePat;3o)e!"if (C;il)->1e5icePat; == 3-22! &return(E#I$O-+$O#$%ESO-%CES!"*,S->#reePool (C;il)->1e5icePat;!" EFI_DRIVER_BINDIN!Stop()&arent $e%ice &ath is 3pa?ue &arent $e%ice &ath is 3pa?ue'ot &arsed !y (us $ri%ers 'ot &arsed !y (us $ri%ers$ri%er -uidelinesUEFI / Framework Special Topic UEFI / Framework Special Topic Slide 33$us 'alk TipsUse -ocate+andle$uffer@$us I/2 *rotocolA
Do not scan */I confi%uration spaceImplement support for RemainingDevicePath
+i%#ly recommended for all bus drivers @i8e8 S/SI( Fibre /#annel( etc8A
.llows bus driver to bypass full enumeration8
Deduces boot time $ri%er -uidelinesUEFI / Framework Special Topic UEFI / Framework Special Topic Slide 34/omponent 1ame *rotocol -imit -en%t#s of 1ames to ( &>< and Itanium
Smaller t#an Itanium $inaries
/omparable to &?> $inaries
/ompresses 'ell M =JN$ri%er -uidelinesUEFI / Framework Special Topic UEFI / Framework Special Topic Slide 36+ow To Improve *ortability98 Do 1ot .ssume Ma& 1umber of /#ildren:8 Do 1ot Use Fi&ed Memory .ddresses;8 Do 1ot Use .ssembly8 $us Drivers S#ould Support *roducin% 9 /#ild at a time if possible @improves boot performanceA$ri%er -uidelines Impro%e &orta!ility $ri%er -uidelines Impro%e &orta!ility$ri%er -uidelines Impro%e &orta!ility $ri%er -uidelines Impro%e &orta!ility$ri%er -uidelinesUEFI / Framework Special Topic UEFI / Framework Special Topic Slide 37UEFI Driver 'riterCs 6uide/aptures *ractical E&periencesUse as a Decipe $ookMust Dead for all UEFI Driver Developers-ivin% Document
/ontent $ased on Industry Feedback
Updated as Tec#niFues are Defined
Updated as 1ew Tec#nolo%ies are Introduced"#I @A@0$ri%er BriterCs -uideDra)t )or *evie+ 7ersion J8OPuly :J( :JJ