]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
pci/hotplug/pnv-php: Improve error msg on power state change failure
authorFrederic Barrat <fbarrat@linux.ibm.com>
Thu, 21 Nov 2019 13:49:14 +0000 (14:49 +0100)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 23 Jan 2020 10:31:17 +0000 (21:31 +1100)
When changing the slot state, if opal hits an error and tells as such
in the asynchronous reply, the warning "Wrong msg" is logged, which is
rather confusing. Instead we can reuse the better message which is
already used when we couldn't submit the asynchronous opal request
initially.

Reviewed-by: Alastair D'Silva <alastair@d-silva.org>
Reviewed-by: Andrew Donnellan <ajd@linux.ibm.com>
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20191121134918.7155-8-fbarrat@linux.ibm.com
drivers/pci/hotplug/pnv_php.c

index 6037983c6e46be36a89f15f8dd93b09638cd2786..c5f88e937fd5d6a9ab3f5183dbc0c58c79e72b2c 100644 (file)
@@ -336,18 +336,19 @@ int pnv_php_set_slot_power_state(struct hotplug_slot *slot,
        ret = pnv_pci_set_power_state(php_slot->id, state, &msg);
        if (ret > 0) {
                if (be64_to_cpu(msg.params[1]) != php_slot->dn->phandle ||
-                   be64_to_cpu(msg.params[2]) != state                 ||
-                   be64_to_cpu(msg.params[3]) != OPAL_SUCCESS) {
+                   be64_to_cpu(msg.params[2]) != state) {
                        pci_warn(php_slot->pdev, "Wrong msg (%lld, %lld, %lld)\n",
                                 be64_to_cpu(msg.params[1]),
                                 be64_to_cpu(msg.params[2]),
                                 be64_to_cpu(msg.params[3]));
                        return -ENOMSG;
                }
+               if (be64_to_cpu(msg.params[3]) != OPAL_SUCCESS) {
+                       ret = -ENODEV;
+                       goto error;
+               }
        } else if (ret < 0) {
-               pci_warn(php_slot->pdev, "Error %d powering %s\n",
-                        ret, (state == OPAL_PCI_SLOT_POWER_ON) ? "on" : "off");
-               return ret;
+               goto error;
        }
 
        if (state == OPAL_PCI_SLOT_POWER_OFF || state == OPAL_PCI_SLOT_OFFLINE)
@@ -356,6 +357,11 @@ int pnv_php_set_slot_power_state(struct hotplug_slot *slot,
                ret = pnv_php_add_devtree(php_slot);
 
        return ret;
+
+error:
+       pci_warn(php_slot->pdev, "Error %d powering %s\n",
+                ret, (state == OPAL_PCI_SLOT_POWER_ON) ? "on" : "off");
+       return ret;
 }
 EXPORT_SYMBOL_GPL(pnv_php_set_slot_power_state);