Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1d350544 authored by Gavin Shan's avatar Gavin Shan Committed by Benjamin Herrenschmidt
Browse files

powerpc/eeh: Add restore_config operation



After reset on the specific PE or PHB, we never configure AER
correctly on PowerNV platform. We needn't care it on pSeries
platform. The patch introduces additional EEH operation eeh_ops::
restore_config() so that we have chance to configure AER correctly
for PowerNV platform.

Signed-off-by: default avatarGavin Shan <shangw@linux.vnet.ibm.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 8184616f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -157,6 +157,7 @@ struct eeh_ops {
	int (*read_config)(struct device_node *dn, int where, int size, u32 *val);
	int (*write_config)(struct device_node *dn, int where, int size, u32 val);
	int (*next_error)(struct eeh_pe **pe);
	int (*restore_config)(struct device_node *dn);
};

extern struct eeh_ops *eeh_ops;
+3 −0
Original line number Diff line number Diff line
@@ -736,6 +736,9 @@ static void *eeh_restore_one_device_bars(void *data, void *flag)
	else
		eeh_restore_device_bars(edev, dn);

	if (eeh_ops->restore_config)
		eeh_ops->restore_config(dn);

	return NULL;
}

+2 −1
Original line number Diff line number Diff line
@@ -359,7 +359,8 @@ static struct eeh_ops powernv_eeh_ops = {
	.configure_bridge       = powernv_eeh_configure_bridge,
	.read_config            = pnv_pci_cfg_read,
	.write_config           = pnv_pci_cfg_write,
	.next_error		= powernv_eeh_next_error
	.next_error		= powernv_eeh_next_error,
	.restore_config		= NULL
};

/**
+3 −1
Original line number Diff line number Diff line
@@ -689,7 +689,9 @@ static struct eeh_ops pseries_eeh_ops = {
	.get_log		= pseries_eeh_get_log,
	.configure_bridge       = pseries_eeh_configure_bridge,
	.read_config		= pseries_eeh_read_config,
	.write_config		= pseries_eeh_write_config
	.write_config		= pseries_eeh_write_config,
	.next_error		= NULL,
	.restore_config		= NULL
};

/**