mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-20 10:44:23 +08:00
IB/hfi1: Use EPROM platform configuration read
The driver will now try to read directly from the EPROM as its first choice for the platform configuration file. Reviewed-by: Easwar Hariharan <easwar.hariharan@intel.com> Signed-off-by: Dean Luick <dean.luick@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
107ffbc521
commit
e83eba214d
@ -14566,6 +14566,11 @@ struct hfi1_devdata *hfi1_init_dd(struct pci_dev *pdev,
|
||||
if (ret)
|
||||
goto bail_cleanup;
|
||||
|
||||
/* call before get_platform_config(), after init_chip_resources() */
|
||||
ret = eprom_init(dd);
|
||||
if (ret)
|
||||
goto bail_free_rcverr;
|
||||
|
||||
/* Needs to be called before hfi1_firmware_init */
|
||||
get_platform_config(dd);
|
||||
|
||||
@ -14686,10 +14691,6 @@ struct hfi1_devdata *hfi1_init_dd(struct pci_dev *pdev,
|
||||
if (ret)
|
||||
goto bail_free_cntrs;
|
||||
|
||||
ret = eprom_init(dd);
|
||||
if (ret)
|
||||
goto bail_free_rcverr;
|
||||
|
||||
goto bail;
|
||||
|
||||
bail_free_rcverr:
|
||||
|
@ -47,29 +47,39 @@
|
||||
|
||||
#include "hfi.h"
|
||||
#include "efivar.h"
|
||||
#include "eprom.h"
|
||||
|
||||
void get_platform_config(struct hfi1_devdata *dd)
|
||||
{
|
||||
int ret = 0;
|
||||
unsigned long size = 0;
|
||||
u8 *temp_platform_config = NULL;
|
||||
u32 esize;
|
||||
|
||||
ret = eprom_read_platform_config(dd, (void **)&temp_platform_config,
|
||||
&esize);
|
||||
if (!ret) {
|
||||
/* success */
|
||||
size = esize;
|
||||
goto success;
|
||||
}
|
||||
/* fail, try EFI variable */
|
||||
|
||||
ret = read_hfi1_efi_var(dd, "configuration", &size,
|
||||
(void **)&temp_platform_config);
|
||||
if (ret) {
|
||||
dd_dev_info(dd,
|
||||
"%s: Failed to get platform config from UEFI, falling back to request firmware\n",
|
||||
__func__);
|
||||
/* fall back to request firmware */
|
||||
platform_config_load = 1;
|
||||
goto bail;
|
||||
}
|
||||
if (!ret)
|
||||
goto success;
|
||||
|
||||
dd_dev_info(dd,
|
||||
"%s: Failed to get platform config from UEFI, falling back to request firmware\n",
|
||||
__func__);
|
||||
/* fall back to request firmware */
|
||||
platform_config_load = 1;
|
||||
return;
|
||||
|
||||
success:
|
||||
dd->platform_config.data = temp_platform_config;
|
||||
dd->platform_config.size = size;
|
||||
|
||||
bail:
|
||||
/* exit */;
|
||||
}
|
||||
|
||||
void free_platform_config(struct hfi1_devdata *dd)
|
||||
|
Loading…
Reference in New Issue
Block a user