[Skiboot] [PATCH v2 3/9] core/pci: Return slot cached power state

Andrew Donnellan andrew.donnellan at au1.ibm.com
Thu Oct 13 17:21:20 AEDT 2016


On 13/10/16 12:16, Gavin Shan wrote:
> We should return cached power state instead of retriving it from

retrieving

> hardware, meaning we're allowed to have the situation: the power
> is off in software, but it's on in hardware when the built-in
> power control functionality is ignored for some reasons (e.g.
> surprise hotplug support). Otherwise, the adapter behind the
> slot won't be probed in PCI hot add path.
>
> This returns the cached power state so that OS sees sychronized

synchronised

> power and PCI slot hotplug state (added/removed).
>
> Signed-off-by: Gavin Shan <gwshan at linux.vnet.ibm.com>

Reviewed-by: Andrew Donnellan <andrew.donnellan at au1.ibm.com>

> ---
>  core/pcie-slot.c | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/core/pcie-slot.c b/core/pcie-slot.c
> index 711e2e2..fed3462 100644
> --- a/core/pcie-slot.c
> +++ b/core/pcie-slot.c
> @@ -90,11 +90,15 @@ static int64_t pcie_slot_get_link_state(struct pci_slot *slot,
>  static int64_t pcie_slot_get_power_state(struct pci_slot *slot __unused,
>  					 uint8_t *val)
>  {
> -	/* The power is always on if no functionality is supported */
> -	if (!(slot->slot_cap & PCICAP_EXP_SLOTCAP_PWCTRL))
> -		*val = PCI_SLOT_POWER_ON;
> -	else
> -		*val = slot->power_state;
> +	/* We should return the cached power state that is same to
> +	 * the PCI slot hotplug state (added/removed). Otherwise,
> +	 * the OS will see mismatched states, causing the adapter
> +	 * behind the slot can't be probed successfully on request
> +	 * of hot add. So we could run into the situation where the
> +	 * OS sees power-off but it's on in hardware.
> +	 */
> +	*val = slot->power_state;
> +
>  	return OPAL_SUCCESS;
>  }
>
>

-- 
Andrew Donnellan              OzLabs, ADL Canberra
andrew.donnellan at au1.ibm.com  IBM Australia Limited



More information about the Skiboot mailing list