[RFC 09/11] pci/hotplug/pnv-php: Relax check when disabling slot
Andrew Donnellan
ajd at linux.ibm.com
Tue Jul 2 17:36:04 AEST 2019
On 19/6/19 11:28 pm, Frederic Barrat wrote:
> The driver only allows to disable a slot in the POPULATED
> state. However, if an error occurs while enabling the slot, say
> because the link couldn't be trained, then the POPULATED state may not
> be reached, yet the power state of the slot is on. So allow to disable
> a slot in the REGISTERED state. Removing the devices will do nothing
> since it's not populated, and we'll set the power state of the slot
> back to off.
>
> Signed-off-by: Frederic Barrat <fbarrat at linux.ibm.com>
Reviewed-by: Andrew Donnellan <ajd at linux.ibm.com>
> ---
> drivers/pci/hotplug/pnv_php.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pci/hotplug/pnv_php.c b/drivers/pci/hotplug/pnv_php.c
> index f9c624334ef7..74b62a8e11e7 100644
> --- a/drivers/pci/hotplug/pnv_php.c
> +++ b/drivers/pci/hotplug/pnv_php.c
> @@ -523,7 +523,13 @@ static int pnv_php_disable_slot(struct hotplug_slot *slot)
> struct pnv_php_slot *php_slot = to_pnv_php_slot(slot);
> int ret;
>
> - if (php_slot->state != PNV_PHP_STATE_POPULATED)
> + /*
> + * Allow to disable a slot already in the registered state to
> + * cover cases where the slot couldn't be enabled and never
> + * reached the populated state
> + */
> + if (php_slot->state != PNV_PHP_STATE_POPULATED &&
> + php_slot->state != PNV_PHP_STATE_REGISTERED)
> return 0;
>
> /* Remove all devices behind the slot */
>
--
Andrew Donnellan OzLabs, ADL Canberra
ajd at linux.ibm.com IBM Australia Limited
More information about the Linuxppc-dev
mailing list