powerpc/eeh: Kill off eeh_ops->get_pe_addr()
This is used in precisely one place which is in pseries specific platform code. There's no need to have the callback in eeh_ops since the platform chooses the EEH PE addresses anyway. The PowerNV implementation has always been a stub too so remove it. Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200725081231.39076-5-oohall@gmail.com
This commit is contained in:
parent
c408ce9075
commit
a40db93431
@ -220,7 +220,6 @@ struct eeh_ops {
|
||||
int (*init)(void);
|
||||
struct eeh_dev *(*probe)(struct pci_dev *pdev);
|
||||
int (*set_option)(struct eeh_pe *pe, int option);
|
||||
int (*get_pe_addr)(struct eeh_pe *pe);
|
||||
int (*get_state)(struct eeh_pe *pe, int *delay);
|
||||
int (*reset)(struct eeh_pe *pe, int option);
|
||||
int (*get_log)(struct eeh_pe *pe, int severity, char *drv_log, unsigned long len);
|
||||
|
@ -535,18 +535,6 @@ static int pnv_eeh_set_option(struct eeh_pe *pe, int option)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* pnv_eeh_get_pe_addr - Retrieve PE address
|
||||
* @pe: EEH PE
|
||||
*
|
||||
* Retrieve the PE address according to the given tranditional
|
||||
* PCI BDF (Bus/Device/Function) address.
|
||||
*/
|
||||
static int pnv_eeh_get_pe_addr(struct eeh_pe *pe)
|
||||
{
|
||||
return pe->addr;
|
||||
}
|
||||
|
||||
static void pnv_eeh_get_phb_diag(struct eeh_pe *pe)
|
||||
{
|
||||
struct pnv_phb *phb = pe->phb->private_data;
|
||||
@ -1670,7 +1658,6 @@ static struct eeh_ops pnv_eeh_ops = {
|
||||
.init = pnv_eeh_init,
|
||||
.probe = pnv_eeh_probe,
|
||||
.set_option = pnv_eeh_set_option,
|
||||
.get_pe_addr = pnv_eeh_get_pe_addr,
|
||||
.get_state = pnv_eeh_get_state,
|
||||
.reset = pnv_eeh_reset,
|
||||
.get_log = pnv_eeh_get_log,
|
||||
|
@ -33,6 +33,8 @@
|
||||
#include <asm/ppc-pci.h>
|
||||
#include <asm/rtas.h>
|
||||
|
||||
static int pseries_eeh_get_pe_addr(struct pci_dn *pdn);
|
||||
|
||||
/* RTAS tokens */
|
||||
static int ibm_set_eeh_option;
|
||||
static int ibm_set_slot_reset;
|
||||
@ -468,7 +470,7 @@ void pseries_eeh_init_edev(struct pci_dn *pdn)
|
||||
eeh_edev_dbg(edev, "EEH failed to enable on device (code %d)\n", ret);
|
||||
} else {
|
||||
/* Retrieve PE address */
|
||||
edev->pe_config_addr = eeh_ops->get_pe_addr(&pe);
|
||||
edev->pe_config_addr = pseries_eeh_get_pe_addr(pdn);
|
||||
pe.addr = edev->pe_config_addr;
|
||||
|
||||
/* Some older systems (Power4) allow the ibm,set-eeh-option
|
||||
@ -598,8 +600,10 @@ static int pseries_eeh_set_option(struct eeh_pe *pe, int option)
|
||||
* It's notable that zero'ed return value means invalid PE config
|
||||
* address.
|
||||
*/
|
||||
static int pseries_eeh_get_pe_addr(struct eeh_pe *pe)
|
||||
static int pseries_eeh_get_pe_addr(struct pci_dn *pdn)
|
||||
{
|
||||
int config_addr = rtas_config_addr(pdn->busno, pdn->devfn, 0);
|
||||
unsigned long buid = pdn->phb->buid;
|
||||
int ret = 0;
|
||||
int rets[3];
|
||||
|
||||
@ -610,18 +614,16 @@ static int pseries_eeh_get_pe_addr(struct eeh_pe *pe)
|
||||
* meaningless.
|
||||
*/
|
||||
ret = rtas_call(ibm_get_config_addr_info2, 4, 2, rets,
|
||||
pe->config_addr, BUID_HI(pe->phb->buid),
|
||||
BUID_LO(pe->phb->buid), 1);
|
||||
config_addr, BUID_HI(buid), BUID_LO(buid), 1);
|
||||
if (ret || (rets[0] == 0))
|
||||
return 0;
|
||||
|
||||
/* Retrieve the associated PE config address */
|
||||
ret = rtas_call(ibm_get_config_addr_info2, 4, 2, rets,
|
||||
pe->config_addr, BUID_HI(pe->phb->buid),
|
||||
BUID_LO(pe->phb->buid), 0);
|
||||
config_addr, BUID_HI(buid), BUID_LO(buid), 0);
|
||||
if (ret) {
|
||||
pr_warn("%s: Failed to get address for PHB#%x-PE#%x\n",
|
||||
__func__, pe->phb->global_number, pe->config_addr);
|
||||
__func__, pdn->phb->global_number, config_addr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -630,11 +632,10 @@ static int pseries_eeh_get_pe_addr(struct eeh_pe *pe)
|
||||
|
||||
if (ibm_get_config_addr_info != RTAS_UNKNOWN_SERVICE) {
|
||||
ret = rtas_call(ibm_get_config_addr_info, 4, 2, rets,
|
||||
pe->config_addr, BUID_HI(pe->phb->buid),
|
||||
BUID_LO(pe->phb->buid), 0);
|
||||
config_addr, BUID_HI(buid), BUID_LO(buid), 0);
|
||||
if (ret) {
|
||||
pr_warn("%s: Failed to get address for PHB#%x-PE#%x\n",
|
||||
__func__, pe->phb->global_number, pe->config_addr);
|
||||
__func__, pdn->phb->global_number, config_addr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -945,7 +946,6 @@ static struct eeh_ops pseries_eeh_ops = {
|
||||
.init = pseries_eeh_init,
|
||||
.probe = pseries_eeh_probe,
|
||||
.set_option = pseries_eeh_set_option,
|
||||
.get_pe_addr = pseries_eeh_get_pe_addr,
|
||||
.get_state = pseries_eeh_get_state,
|
||||
.reset = pseries_eeh_reset,
|
||||
.get_log = pseries_eeh_get_log,
|
||||
|
Loading…
Reference in New Issue
Block a user