|
@@ -365,7 +365,7 @@ free_struct:
|
|
|
return status;
|
|
|
}
|
|
|
|
|
|
-static efi_status_t
|
|
|
+static void
|
|
|
setup_efi_pci32(struct boot_params *params, void **pci_handle,
|
|
|
unsigned long size)
|
|
|
{
|
|
@@ -408,8 +408,6 @@ setup_efi_pci32(struct boot_params *params, void **pci_handle,
|
|
|
data = (struct setup_data *)rom;
|
|
|
|
|
|
}
|
|
|
-
|
|
|
- return status;
|
|
|
}
|
|
|
|
|
|
static efi_status_t
|
|
@@ -468,7 +466,7 @@ free_struct:
|
|
|
|
|
|
}
|
|
|
|
|
|
-static efi_status_t
|
|
|
+static void
|
|
|
setup_efi_pci64(struct boot_params *params, void **pci_handle,
|
|
|
unsigned long size)
|
|
|
{
|
|
@@ -511,11 +509,18 @@ setup_efi_pci64(struct boot_params *params, void **pci_handle,
|
|
|
data = (struct setup_data *)rom;
|
|
|
|
|
|
}
|
|
|
-
|
|
|
- return status;
|
|
|
}
|
|
|
|
|
|
-static efi_status_t setup_efi_pci(struct boot_params *params)
|
|
|
+/*
|
|
|
+ * There's no way to return an informative status from this function,
|
|
|
+ * because any analysis (and printing of error messages) needs to be
|
|
|
+ * done directly at the EFI function call-site.
|
|
|
+ *
|
|
|
+ * For example, EFI_INVALID_PARAMETER could indicate a bug or maybe we
|
|
|
+ * just didn't find any PCI devices, but there's no way to tell outside
|
|
|
+ * the context of the call.
|
|
|
+ */
|
|
|
+static void setup_efi_pci(struct boot_params *params)
|
|
|
{
|
|
|
efi_status_t status;
|
|
|
void **pci_handle = NULL;
|
|
@@ -532,7 +537,7 @@ static efi_status_t setup_efi_pci(struct boot_params *params)
|
|
|
size, (void **)&pci_handle);
|
|
|
|
|
|
if (status != EFI_SUCCESS)
|
|
|
- return status;
|
|
|
+ return;
|
|
|
|
|
|
status = efi_call_early(locate_handle,
|
|
|
EFI_LOCATE_BY_PROTOCOL, &pci_proto,
|
|
@@ -543,13 +548,12 @@ static efi_status_t setup_efi_pci(struct boot_params *params)
|
|
|
goto free_handle;
|
|
|
|
|
|
if (efi_early->is64)
|
|
|
- status = setup_efi_pci64(params, pci_handle, size);
|
|
|
+ setup_efi_pci64(params, pci_handle, size);
|
|
|
else
|
|
|
- status = setup_efi_pci32(params, pci_handle, size);
|
|
|
+ setup_efi_pci32(params, pci_handle, size);
|
|
|
|
|
|
free_handle:
|
|
|
efi_call_early(free_pool, pci_handle);
|
|
|
- return status;
|
|
|
}
|
|
|
|
|
|
static void
|
|
@@ -1385,10 +1389,7 @@ struct boot_params *efi_main(struct efi_config *c,
|
|
|
|
|
|
setup_graphics(boot_params);
|
|
|
|
|
|
- status = setup_efi_pci(boot_params);
|
|
|
- if (status != EFI_SUCCESS) {
|
|
|
- efi_printk(sys_table, "setup_efi_pci() failed!\n");
|
|
|
- }
|
|
|
+ setup_efi_pci(boot_params);
|
|
|
|
|
|
status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
|
|
|
sizeof(*gdt), (void **)&gdt);
|