Message ID | 7ac4f3b2104f04c72d287c46d1ccbce20f138fd4.1634309856.git.michal.simek@xilinx.com |
---|---|
State | Accepted |
Commit | b05cc389bac1151aa6b14e2d6a66d06329d7e3fe |
Delegated to: | Michal Simek |
Headers | show |
Series | [1/2] firmware: zynqmp: Handle errors from ipi_req properly | expand |
On 15.10.2021 16:57, Michal Simek wrote: > There are multiple errors what can happen in ipi_req but they are not > propagated properly. That's why propage all error properly. > > Signed-off-by: Michal Simek <michal.simek@xilinx.com> Reviewed-by: Adrian Fiergolski <Adrian.Fiergolski@fastree3d.com> Thanks, Adrian > --- > > drivers/firmware/firmware-zynqmp.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/firmware/firmware-zynqmp.c b/drivers/firmware/firmware-zynqmp.c > index c22bdca282fc..1391aab0a160 100644 > --- a/drivers/firmware/firmware-zynqmp.c > +++ b/drivers/firmware/firmware-zynqmp.c > @@ -165,6 +165,7 @@ int __maybe_unused xilinx_pm_request(u32 api_id, u32 arg0, u32 arg1, u32 arg2, > * firmware API is limited by the SMC call size > */ > u32 regs[] = {api_id, arg0, arg1, arg2, arg3}; > + int ret; > > if (api_id == PM_FPGA_LOAD) { > /* Swap addr_hi/low because of incompatibility */ > @@ -174,7 +175,10 @@ int __maybe_unused xilinx_pm_request(u32 api_id, u32 arg0, u32 arg1, u32 arg2, > regs[2] = temp; > } > > - ipi_req(regs, PAYLOAD_ARG_CNT, ret_payload, PAYLOAD_ARG_CNT); > + ret = ipi_req(regs, PAYLOAD_ARG_CNT, ret_payload, > + PAYLOAD_ARG_CNT); > + if (ret) > + return ret; > #else > return -EPERM; > #endif
On 10/15/21 16:57, Michal Simek wrote: > There are multiple errors what can happen in ipi_req but they are not > propagated properly. That's why propage all error properly. > > Signed-off-by: Michal Simek <michal.simek@xilinx.com> > --- > > drivers/firmware/firmware-zynqmp.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/firmware/firmware-zynqmp.c b/drivers/firmware/firmware-zynqmp.c > index c22bdca282fc..1391aab0a160 100644 > --- a/drivers/firmware/firmware-zynqmp.c > +++ b/drivers/firmware/firmware-zynqmp.c > @@ -165,6 +165,7 @@ int __maybe_unused xilinx_pm_request(u32 api_id, u32 arg0, u32 arg1, u32 arg2, > * firmware API is limited by the SMC call size > */ > u32 regs[] = {api_id, arg0, arg1, arg2, arg3}; > + int ret; > > if (api_id == PM_FPGA_LOAD) { > /* Swap addr_hi/low because of incompatibility */ > @@ -174,7 +175,10 @@ int __maybe_unused xilinx_pm_request(u32 api_id, u32 arg0, u32 arg1, u32 arg2, > regs[2] = temp; > } > > - ipi_req(regs, PAYLOAD_ARG_CNT, ret_payload, PAYLOAD_ARG_CNT); > + ret = ipi_req(regs, PAYLOAD_ARG_CNT, ret_payload, > + PAYLOAD_ARG_CNT); > + if (ret) > + return ret; > #else > return -EPERM; > #endif > Applied. M
diff --git a/drivers/firmware/firmware-zynqmp.c b/drivers/firmware/firmware-zynqmp.c index c22bdca282fc..1391aab0a160 100644 --- a/drivers/firmware/firmware-zynqmp.c +++ b/drivers/firmware/firmware-zynqmp.c @@ -165,6 +165,7 @@ int __maybe_unused xilinx_pm_request(u32 api_id, u32 arg0, u32 arg1, u32 arg2, * firmware API is limited by the SMC call size */ u32 regs[] = {api_id, arg0, arg1, arg2, arg3}; + int ret; if (api_id == PM_FPGA_LOAD) { /* Swap addr_hi/low because of incompatibility */ @@ -174,7 +175,10 @@ int __maybe_unused xilinx_pm_request(u32 api_id, u32 arg0, u32 arg1, u32 arg2, regs[2] = temp; } - ipi_req(regs, PAYLOAD_ARG_CNT, ret_payload, PAYLOAD_ARG_CNT); + ret = ipi_req(regs, PAYLOAD_ARG_CNT, ret_payload, + PAYLOAD_ARG_CNT); + if (ret) + return ret; #else return -EPERM; #endif
There are multiple errors what can happen in ipi_req but they are not propagated properly. That's why propage all error properly. Signed-off-by: Michal Simek <michal.simek@xilinx.com> --- drivers/firmware/firmware-zynqmp.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)