Skip to content

Commit

Permalink
IB/hfi1: Use EPROM platform configuration read
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Dean Luick authored and Doug Ledford committed Oct 2, 2016
1 parent 107ffbc commit e83eba2
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 15 deletions.
9 changes: 5 additions & 4 deletions drivers/infiniband/hw/hfi1/chip.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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:
Expand Down
32 changes: 21 additions & 11 deletions drivers/infiniband/hw/hfi1/platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit e83eba2

Please sign in to comment.