mirror of https://github.com/ipxe/ipxe.git
[efi] Define an attachment priority order for EFI drivers
Define an ordering for internal EFI drivers on the basis of how close the driver is to the hardware, and attempt to start drivers in this order. Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/1437/head
parent
be33224754
commit
7737fec5c6
|
@ -48,7 +48,7 @@ static int mnp_supported ( EFI_HANDLE device ) {
|
|||
}
|
||||
|
||||
/** EFI MNP driver */
|
||||
struct efi_driver mnp_driver __efi_driver ( EFI_DRIVER_NORMAL ) = {
|
||||
struct efi_driver mnp_driver __efi_driver ( EFI_DRIVER_MNP ) = {
|
||||
.name = "MNP",
|
||||
.supported = mnp_supported,
|
||||
.start = mnpnet_start,
|
||||
|
|
|
@ -57,7 +57,7 @@ static int nii_supported ( EFI_HANDLE device ) {
|
|||
}
|
||||
|
||||
/** EFI SNP driver */
|
||||
struct efi_driver snp_driver __efi_driver ( EFI_DRIVER_NORMAL ) = {
|
||||
struct efi_driver snp_driver __efi_driver ( EFI_DRIVER_SNP ) = {
|
||||
.name = "SNP",
|
||||
.supported = snp_supported,
|
||||
.start = snpnet_start,
|
||||
|
@ -65,7 +65,7 @@ struct efi_driver snp_driver __efi_driver ( EFI_DRIVER_NORMAL ) = {
|
|||
};
|
||||
|
||||
/** EFI NII driver */
|
||||
struct efi_driver nii_driver __efi_driver ( EFI_DRIVER_NORMAL ) = {
|
||||
struct efi_driver nii_driver __efi_driver ( EFI_DRIVER_NII ) = {
|
||||
.name = "NII",
|
||||
.supported = nii_supported,
|
||||
.start = nii_start,
|
||||
|
|
|
@ -207,7 +207,7 @@ static int mnponly_supported ( EFI_HANDLE device ) {
|
|||
}
|
||||
|
||||
/** EFI SNP chainloading-device-only driver */
|
||||
struct efi_driver snponly_driver __efi_driver ( EFI_DRIVER_NORMAL ) = {
|
||||
struct efi_driver snponly_driver __efi_driver ( EFI_DRIVER_SNP ) = {
|
||||
.name = "SNPONLY",
|
||||
.supported = snponly_supported,
|
||||
.start = snpnet_start,
|
||||
|
@ -215,7 +215,7 @@ struct efi_driver snponly_driver __efi_driver ( EFI_DRIVER_NORMAL ) = {
|
|||
};
|
||||
|
||||
/** EFI NII chainloading-device-only driver */
|
||||
struct efi_driver niionly_driver __efi_driver ( EFI_DRIVER_NORMAL ) = {
|
||||
struct efi_driver niionly_driver __efi_driver ( EFI_DRIVER_NII ) = {
|
||||
.name = "NIIONLY",
|
||||
.supported = niionly_supported,
|
||||
.start = nii_start,
|
||||
|
@ -223,7 +223,7 @@ struct efi_driver niionly_driver __efi_driver ( EFI_DRIVER_NORMAL ) = {
|
|||
};
|
||||
|
||||
/** EFI MNP chainloading-device-only driver */
|
||||
struct efi_driver mnponly_driver __efi_driver ( EFI_DRIVER_NORMAL ) = {
|
||||
struct efi_driver mnponly_driver __efi_driver ( EFI_DRIVER_MNP ) = {
|
||||
.name = "MNPONLY",
|
||||
.supported = mnponly_supported,
|
||||
.start = mnpnet_start,
|
||||
|
|
|
@ -1649,7 +1649,7 @@ static void usbio_stop ( struct efi_device *efidev ) {
|
|||
}
|
||||
|
||||
/** EFI USB I/O driver */
|
||||
struct efi_driver usbio_driver __efi_driver ( EFI_DRIVER_NORMAL ) = {
|
||||
struct efi_driver usbio_driver __efi_driver ( EFI_DRIVER_HARDWARE ) = {
|
||||
.name = "USBIO",
|
||||
.supported = usbio_supported,
|
||||
.start = usbio_start,
|
||||
|
|
|
@ -62,8 +62,10 @@ struct efi_driver {
|
|||
#define __efi_driver( order ) __table_entry ( EFI_DRIVERS, order )
|
||||
|
||||
#define EFI_DRIVER_EARLY 01 /**< Early drivers */
|
||||
#define EFI_DRIVER_NORMAL 02 /**< Normal drivers */
|
||||
#define EFI_DRIVER_LATE 03 /**< Late drivers */
|
||||
#define EFI_DRIVER_HARDWARE 02 /**< Hardware drivers */
|
||||
#define EFI_DRIVER_NII 03 /**< NII protocol drivers */
|
||||
#define EFI_DRIVER_SNP 04 /**< SNP protocol drivers */
|
||||
#define EFI_DRIVER_MNP 05 /**< MNP protocol drivers */
|
||||
|
||||
/**
|
||||
* Set EFI driver-private data
|
||||
|
|
|
@ -914,7 +914,7 @@ static void efipci_stop ( struct efi_device *efidev ) {
|
|||
}
|
||||
|
||||
/** EFI PCI driver */
|
||||
struct efi_driver efipci_driver __efi_driver ( EFI_DRIVER_NORMAL ) = {
|
||||
struct efi_driver efipci_driver __efi_driver ( EFI_DRIVER_HARDWARE ) = {
|
||||
.name = "PCI",
|
||||
.supported = efipci_supported,
|
||||
.start = efipci_start,
|
||||
|
|
Loading…
Reference in New Issue