EDAC, sb_edac: Fix Knights Landing
In commit 2c1ea4c700af ("EDAC, sb_edac: Use cpu family/model in driver detection") I broke Knights Landing because I failed to notice that it called a wrapper macro "sbridge_get_all_devices_knl" instead of "sbridge_get_all_devices" like all the other types. Now that we include the processor type in the pci_id_table structure we can skip the wrappers and just have the sbridge_get_all_devices() check the type to decide whether to allow duplicate devices and controllers to have registers spread across buses. Fixes: 2c1ea4c700af ("EDAC, sb_edac: Use cpu family/model in driver detection") Tested-by: Lukasz Odzioba <lukasz.odzioba@intel.com> Acked-by: Aristeu Rozanski <aris@redhat.com> Signed-off-by: Tony Luck <tony.luck@intel.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
fa3a9f5744
commit
0ba169ac36
@ -2378,22 +2378,19 @@ static int sbridge_get_onedevice(struct pci_dev **prev,
|
|||||||
* @num_mc: pointer to the memory controllers count, to be incremented in case
|
* @num_mc: pointer to the memory controllers count, to be incremented in case
|
||||||
* of success.
|
* of success.
|
||||||
* @table: model specific table
|
* @table: model specific table
|
||||||
* @allow_dups: allow for multiple devices to exist with the same device id
|
|
||||||
* (as implemented, this isn't expected to work correctly in the
|
|
||||||
* multi-socket case).
|
|
||||||
* @multi_bus: don't assume devices on different buses belong to different
|
|
||||||
* memory controllers.
|
|
||||||
*
|
*
|
||||||
* returns 0 in case of success or error code
|
* returns 0 in case of success or error code
|
||||||
*/
|
*/
|
||||||
static int sbridge_get_all_devices_full(u8 *num_mc,
|
static int sbridge_get_all_devices(u8 *num_mc,
|
||||||
const struct pci_id_table *table,
|
const struct pci_id_table *table)
|
||||||
int allow_dups,
|
|
||||||
int multi_bus)
|
|
||||||
{
|
{
|
||||||
int i, rc;
|
int i, rc;
|
||||||
struct pci_dev *pdev = NULL;
|
struct pci_dev *pdev = NULL;
|
||||||
|
int allow_dups = 0;
|
||||||
|
int multi_bus = 0;
|
||||||
|
|
||||||
|
if (table->type == KNIGHTS_LANDING)
|
||||||
|
allow_dups = multi_bus = 1;
|
||||||
while (table && table->descr) {
|
while (table && table->descr) {
|
||||||
for (i = 0; i < table->n_devs; i++) {
|
for (i = 0; i < table->n_devs; i++) {
|
||||||
if (!allow_dups || i == 0 ||
|
if (!allow_dups || i == 0 ||
|
||||||
@ -2420,11 +2417,6 @@ static int sbridge_get_all_devices_full(u8 *num_mc,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define sbridge_get_all_devices(num_mc, table) \
|
|
||||||
sbridge_get_all_devices_full(num_mc, table, 0, 0)
|
|
||||||
#define sbridge_get_all_devices_knl(num_mc, table) \
|
|
||||||
sbridge_get_all_devices_full(num_mc, table, 1, 1)
|
|
||||||
|
|
||||||
static int sbridge_mci_bind_devs(struct mem_ctl_info *mci,
|
static int sbridge_mci_bind_devs(struct mem_ctl_info *mci,
|
||||||
struct sbridge_dev *sbridge_dev)
|
struct sbridge_dev *sbridge_dev)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user