Ășt 12. 5. 2020 v 8:25 odesĂlatel Michal Simek <[email protected]> napsal: > > There is no need to panic all the time when pmufw config object loading > failed. The patch improves function logic to report permission deny case > and also panic only for SPL case. > > Signed-off-by: Michal Simek <[email protected]> > --- > > drivers/firmware/firmware-zynqmp.c | 19 +++++++++++++++---- > 1 file changed, 15 insertions(+), 4 deletions(-) > > diff --git a/drivers/firmware/firmware-zynqmp.c > b/drivers/firmware/firmware-zynqmp.c > index c37642569dda..bef6fc05dc69 100644 > --- a/drivers/firmware/firmware-zynqmp.c > +++ b/drivers/firmware/firmware-zynqmp.c > @@ -15,6 +15,8 @@ > > #define PMUFW_PAYLOAD_ARG_CNT 8 > > +#define XST_PM_NO_ACCESS 2002L > + > struct zynqmp_power { > struct mbox_chan tx_chan; > struct mbox_chan rx_chan; > @@ -96,16 +98,25 @@ void zynqmp_pmufw_load_config_object(const void *cfg_obj, > size_t size) > PM_SET_CONFIGURATION, > (u32)((u64)cfg_obj) > }; > - u32 response; > + u32 response = 0; > int err; > > printf("Loading new PMUFW cfg obj (%ld bytes)\n", size); > > err = send_req(request, ARRAY_SIZE(request), &response, 1); > + if (err == XST_PM_NO_ACCESS) { > + printf("PMUFW no permission to change config object\n"); > + return; > + } > + > if (err) > - panic("Cannot load PMUFW configuration object (%d)\n", err); > - if (response != 0) > - panic("PMUFW returned 0x%08x status!\n", response); > + printf("Cannot load PMUFW configuration object (%d)\n", err); > + > + if (response) > + printf("PMUFW returned 0x%08x status!\n", response); > + > + if ((err || response) && IS_ENABLED(CONFIG_SPL_BUILD)) > + panic("PMUFW config object loading failed in EL3\n"); > } > > static int zynqmp_power_probe(struct udevice *dev) > -- > 2.26.2 >
Applied. M -- Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91 w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel - Xilinx Microblaze Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal SoCs

