Commit eed4bdbe authored by Sam Bobroff's avatar Sam Bobroff Committed by Michael Ellerman
Browse files

powerpc/eeh: Cleanup unnecessary eeh_pe_state_mark_with_cfg()



The function eeh_pe_state_mark_with_cfg() just performs the work of
eeh_pe_state_mark() and then, conditionally, the work of
eeh_pe_state_clear(). However it is only ever called with a constant
state such that the condition is always true, so replace it by direct
calls.

Signed-off-by: default avatarSam Bobroff <sbobroff@linux.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 54644927
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -830,7 +830,8 @@ int pcibios_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state stat
		eeh_pe_state_clear(pe, EEH_PE_ISOLATED);
		break;
	case pcie_hot_reset:
		eeh_pe_state_mark_with_cfg(pe, EEH_PE_ISOLATED);
		eeh_pe_state_mark(pe, EEH_PE_ISOLATED);
		eeh_pe_state_clear(pe, EEH_PE_CFG_BLOCKED);
		eeh_ops->set_option(pe, EEH_OPT_FREEZE_PE);
		eeh_pe_dev_traverse(pe, eeh_disable_and_save_dev_state, dev);
		if (!(pe->type & EEH_PE_VF))
@@ -838,7 +839,8 @@ int pcibios_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state stat
		eeh_ops->reset(pe, EEH_RESET_HOT);
		break;
	case pcie_warm_reset:
		eeh_pe_state_mark_with_cfg(pe, EEH_PE_ISOLATED);
		eeh_pe_state_mark(pe, EEH_PE_ISOLATED);
		eeh_pe_state_clear(pe, EEH_PE_CFG_BLOCKED);
		eeh_ops->set_option(pe, EEH_OPT_FREEZE_PE);
		eeh_pe_dev_traverse(pe, eeh_disable_and_save_dev_state, dev);
		if (!(pe->type & EEH_PE_VF))
+0 −22
Original line number Diff line number Diff line
@@ -670,28 +670,6 @@ void eeh_pe_state_clear(struct eeh_pe *pe, int state)
	eeh_pe_traverse(pe, __eeh_pe_state_clear, &state);
}

/**
 * eeh_pe_state_mark_with_cfg - Mark PE state with unblocked config space
 * @pe: PE
 * @state: PE state to be set
 *
 * Set specified flag to PE and its child PEs. The PCI config space
 * of some PEs is blocked automatically when EEH_PE_ISOLATED is set,
 * which isn't needed in some situations. The function allows to set
 * the specified flag to indicated PEs without blocking their PCI
 * config space.
 */
void eeh_pe_state_mark_with_cfg(struct eeh_pe *pe, int state)
{
	eeh_pe_traverse(pe, __eeh_pe_state_mark, &state);
	if (!(state & EEH_PE_ISOLATED))
		return;

	/* Clear EEH_PE_CFG_BLOCKED, which might be set just now */
	state = EEH_PE_CFG_BLOCKED;
	eeh_pe_traverse(pe, __eeh_pe_state_clear, &state);
}

/*
 * Some PCI bridges (e.g. PLX bridges) have primary/secondary
 * buses assigned explicitly by firmware, and we probably have