firmware: arm_scmi: Make Rx chan_setup fail on memory errors
authorCristian Marussi <cristian.marussi@arm.com>
Fri, 28 Oct 2022 14:08:29 +0000 (15:08 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Nov 2022 17:15:36 +0000 (18:15 +0100)
[ Upstream commit be9ba1f7f9e0b565b19f4294f5871da9d654bc6d ]

SCMI Rx channels are optional and they can fail to be setup when not
present but anyway channels setup routines must bail-out on memory errors.

Make channels setup, and related probing, fail when memory errors are
reported on Rx channels.

Fixes: 5c8a47a5a91d ("firmware: arm_scmi: Make scmi core independent of the transport type")
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Link: https://lore.kernel.org/r/20221028140833.280091-4-cristian.marussi@arm.com
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/firmware/arm_scmi/driver.c

index 2c1d5f9..16569af 100644 (file)
@@ -1516,8 +1516,12 @@ scmi_txrx_setup(struct scmi_info *info, struct device *dev, int prot_id)
 {
        int ret = scmi_chan_setup(info, dev, prot_id, true);
 
-       if (!ret) /* Rx is optional, hence no error check */
-               scmi_chan_setup(info, dev, prot_id, false);
+       if (!ret) {
+               /* Rx is optional, report only memory errors */
+               ret = scmi_chan_setup(info, dev, prot_id, false);
+               if (ret && ret != -ENOMEM)
+                       ret = 0;
+       }
 
        return ret;
 }