uefi_drivers.ppt

41
UEFI / Framework Special Topic UEFI / Framework Special Topic Slide 1 UEFI Drivers UEFI / Framework Special Topic Copyright © 2007 Intel Corporation

Upload: anonymous-umcq1x2h

Post on 17-Aug-2015

218 views

Category:

Documents


3 download

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