lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 24 Apr 2020 01:11:52 +0000
From:   Peng Fan <peng.fan@....com>
To:     Aisheng Dong <aisheng.dong@....com>,
        "shawnguo@...nel.org" <shawnguo@...nel.org>,
        "s.hauer@...gutronix.de" <s.hauer@...gutronix.de>
CC:     "kernel@...gutronix.de" <kernel@...gutronix.de>,
        "festevam@...il.com" <festevam@...il.com>,
        "linux@...pel-privat.de" <linux@...pel-privat.de>,
        Leonard Crestez <leonard.crestez@....com>,
        Daniel Baluta <daniel.baluta@....com>,
        Joakim Zhang <qiangqing.zhang@....com>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
        "linux-arm-kernel@...ts.infradead.org" 
        <linux-arm-kernel@...ts.infradead.org>,
        dl-linux-imx <linux-imx@....com>
Subject: RE: [PATCH 2/4] firmware: imx: add resource management api

> Subject: RE: [PATCH 2/4] firmware: imx: add resource management api
> 
> > From: Peng Fan <peng.fan@....com>
> > Sent: Thursday, April 23, 2020 6:57 PM
> > > > From: Peng Fan <peng.fan@....com>
> > > > Sent: Thursday, April 23, 2020 3:00 PM
> > > >
> > > > Add resource management API, when we have multiple partition
> > > > running together, resources not owned to current partition should not be
> used.
> > > >
> > > > Reviewed-by: Leonard Crestez <leonard.crestez@....com>
> > > > Signed-off-by: Peng Fan <peng.fan@....com>
> > >
> > > Right now I'm still not quite understand if we really need this.
> > > As current resource is bound to power domains, if it's not owned by
> > > one specific SW execution environment, power on will also fail.
> > > Can you clarify if any exceptions?
> >
> > There will be lots of failures when boot Linux domu if no check.
> >
> 
> What kind of features did you mean?
> Could you clarify a bit more? I'd like to understand this issue better.

When supporting hypervisor with dual Linux running, 1st Linux and the
2nd Linux will have their own dedicated resources.

If no resource check, that means 1st/2nd Linux will register all the
resources, then both will see fail logs when register resources not
owned to itself.

Same to partitioned m4 case.

Would it be better without the failure log?

Thanks,
Peng.


> 
> Regards
> Aisheng
> 
> > Thanks,
> > Peng.
> >
> > >
> > > Regards
> > > Aisheng
> > >
> > > > ---
> > > >  drivers/firmware/imx/Makefile       |  2 +-
> > > >  drivers/firmware/imx/rm.c           | 40
> +++++++++++++++++++++
> > > >  include/linux/firmware/imx/sci.h    |  1 +
> > > >  include/linux/firmware/imx/svc/rm.h | 69
> > > > +++++++++++++++++++++++++++++++++++++
> > > >  4 files changed, 111 insertions(+), 1 deletion(-)  create mode
> > > > 100644 drivers/firmware/imx/rm.c  create mode 100644
> > > > include/linux/firmware/imx/svc/rm.h
> > > >
> > > > diff --git a/drivers/firmware/imx/Makefile
> > > > b/drivers/firmware/imx/Makefile index 08bc9ddfbdfb..17ea3613e142
> > > > 100644
> > > > --- a/drivers/firmware/imx/Makefile
> > > > +++ b/drivers/firmware/imx/Makefile
> > > > @@ -1,4 +1,4 @@
> > > >  # SPDX-License-Identifier: GPL-2.0
> > > >  obj-$(CONFIG_IMX_DSP)		+= imx-dsp.o
> > > > -obj-$(CONFIG_IMX_SCU)		+= imx-scu.o misc.o imx-scu-irq.o
> > > > +obj-$(CONFIG_IMX_SCU)		+= imx-scu.o misc.o imx-scu-irq.o rm.o
> > > >  obj-$(CONFIG_IMX_SCU_PD)	+= scu-pd.o
> > > > diff --git a/drivers/firmware/imx/rm.c b/drivers/firmware/imx/rm.c
> > > > new file mode 100644 index 000000000000..7b0334de5486
> > > > --- /dev/null
> > > > +++ b/drivers/firmware/imx/rm.c
> > > > @@ -0,0 +1,40 @@
> > > > +// SPDX-License-Identifier: GPL-2.0+
> > > > +/*
> > > > + * Copyright 2020 NXP
> > > > + *
> > > > + * File containing client-side RPC functions for the RM service.
> > > > +These
> > > > + * function are ported to clients that communicate to the SC.
> > > > + */
> > > > +
> > > > +#include <linux/firmware/imx/svc/rm.h>
> > > > +
> > > > +struct imx_sc_msg_rm_rsrc_owned {
> > > > +	struct imx_sc_rpc_msg hdr;
> > > > +	u16 resource;
> > > > +} __packed __aligned(4);
> > > > +
> > > > +/*
> > > > + * This function check @resource is owned by current partition or
> > > > +not
> > > > + *
> > > > + * @param[in]     ipc         IPC handle
> > > > + * @param[in]     resource    resource the control is associated
> with
> > > > + *
> > > > + * @return Returns 0 for success and < 0 for errors.
> > > > + */
> > > > +bool imx_sc_rm_is_resource_owned(struct imx_sc_ipc *ipc, u16
> > > > +resource) {
> > > > +	struct imx_sc_msg_rm_rsrc_owned msg;
> > > > +	struct imx_sc_rpc_msg *hdr = &msg.hdr;
> > > > +
> > > > +	hdr->ver = IMX_SC_RPC_VERSION;
> > > > +	hdr->svc = IMX_SC_RPC_SVC_RM;
> > > > +	hdr->func = IMX_SC_RM_FUNC_IS_RESOURCE_OWNED;
> > > > +	hdr->size = 2;
> > > > +
> > > > +	msg.resource = resource;
> > > > +
> > > > +	imx_scu_call_rpc(ipc, &msg, true);
> > > > +
> > > > +	return hdr->func;
> > > > +}
> > > > +EXPORT_SYMBOL(imx_sc_rm_is_resource_owned);
> > > > diff --git a/include/linux/firmware/imx/sci.h
> > > > b/include/linux/firmware/imx/sci.h
> > > > index 17ba4e405129..b5c5a56f29be 100644
> > > > --- a/include/linux/firmware/imx/sci.h
> > > > +++ b/include/linux/firmware/imx/sci.h
> > > > @@ -15,6 +15,7 @@
> > > >
> > > >  #include <linux/firmware/imx/svc/misc.h>  #include
> > > > <linux/firmware/imx/svc/pm.h>
> > > > +#include <linux/firmware/imx/svc/rm.h>
> > > >
> > > >  int imx_scu_enable_general_irq_channel(struct device *dev);  int
> > > > imx_scu_irq_register_notifier(struct notifier_block *nb); diff
> > > > --git a/include/linux/firmware/imx/svc/rm.h
> > > > b/include/linux/firmware/imx/svc/rm.h
> > > > new file mode 100644
> > > > index 000000000000..fc6ea62d9d0e
> > > > --- /dev/null
> > > > +++ b/include/linux/firmware/imx/svc/rm.h
> > > > @@ -0,0 +1,69 @@
> > > > +/* SPDX-License-Identifier: GPL-2.0+ */
> > > > +/*
> > > > + * Copyright (C) 2016 Freescale Semiconductor, Inc.
> > > > + * Copyright 2017-2019 NXP
> > > > + *
> > > > + * Header file containing the public API for the System
> > > > +Controller
> > > > +(SC)
> > > > + * Power Management (PM) function. This includes functions for
> > > > +power state
> > > > + * control, clock control, reset control, and wake-up event control.
> > > > + *
> > > > + * RM_SVC (SVC) Resource Management Service
> > > > + *
> > > > + * Module for the Resource Management (RM) service.
> > > > + */
> > > > +
> > > > +#ifndef _SC_RM_API_H
> > > > +#define _SC_RM_API_H
> > > > +
> > > > +#include <linux/firmware/imx/sci.h>
> > > > +
> > > > +/*
> > > > + * This type is used to indicate RPC RM function calls.
> > > > + */
> > > > +enum imx_sc_rm_func {
> > > > +	IMX_SC_RM_FUNC_UNKNOWN = 0,
> > > > +	IMX_SC_RM_FUNC_PARTITION_ALLOC = 1,
> > > > +	IMX_SC_RM_FUNC_SET_CONFIDENTIAL = 31,
> > > > +	IMX_SC_RM_FUNC_PARTITION_FREE = 2,
> > > > +	IMX_SC_RM_FUNC_GET_DID = 26,
> > > > +	IMX_SC_RM_FUNC_PARTITION_STATIC = 3,
> > > > +	IMX_SC_RM_FUNC_PARTITION_LOCK = 4,
> > > > +	IMX_SC_RM_FUNC_GET_PARTITION = 5,
> > > > +	IMX_SC_RM_FUNC_SET_PARENT = 6,
> > > > +	IMX_SC_RM_FUNC_MOVE_ALL = 7,
> > > > +	IMX_SC_RM_FUNC_ASSIGN_RESOURCE = 8,
> > > > +	IMX_SC_RM_FUNC_SET_RESOURCE_MOVABLE = 9,
> > > > +	IMX_SC_RM_FUNC_SET_SUBSYS_RSRC_MOVABLE = 28,
> > > > +	IMX_SC_RM_FUNC_SET_MASTER_ATTRIBUTES = 10,
> > > > +	IMX_SC_RM_FUNC_SET_MASTER_SID = 11,
> > > > +	IMX_SC_RM_FUNC_SET_PERIPHERAL_PERMISSIONS = 12,
> > > > +	IMX_SC_RM_FUNC_IS_RESOURCE_OWNED = 13,
> > > > +	IMX_SC_RM_FUNC_GET_RESOURCE_OWNER = 33,
> > > > +	IMX_SC_RM_FUNC_IS_RESOURCE_MASTER = 14,
> > > > +	IMX_SC_RM_FUNC_IS_RESOURCE_PERIPHERAL = 15,
> > > > +	IMX_SC_RM_FUNC_GET_RESOURCE_INFO = 16,
> > > > +	IMX_SC_RM_FUNC_MEMREG_ALLOC = 17,
> > > > +	IMX_SC_RM_FUNC_MEMREG_SPLIT = 29,
> > > > +	IMX_SC_RM_FUNC_MEMREG_FRAG = 32,
> > > > +	IMX_SC_RM_FUNC_MEMREG_FREE = 18,
> > > > +	IMX_SC_RM_FUNC_FIND_MEMREG = 30,
> > > > +	IMX_SC_RM_FUNC_ASSIGN_MEMREG = 19,
> > > > +	IMX_SC_RM_FUNC_SET_MEMREG_PERMISSIONS = 20,
> > > > +	IMX_SC_RM_FUNC_IS_MEMREG_OWNED = 21,
> > > > +	IMX_SC_RM_FUNC_GET_MEMREG_INFO = 22,
> > > > +	IMX_SC_RM_FUNC_ASSIGN_PAD = 23,
> > > > +	IMX_SC_RM_FUNC_SET_PAD_MOVABLE = 24,
> > > > +	IMX_SC_RM_FUNC_IS_PAD_OWNED = 25,
> > > > +	IMX_SC_RM_FUNC_DUMP = 27,
> > > > +};
> > > > +
> > > > +#if IS_ENABLED(CONFIG_IMX_SCU)
> > > > +bool imx_sc_rm_is_resource_owned(struct imx_sc_ipc *ipc, u16
> > > > +resource); #else static inline bool
> > > > +imx_sc_rm_is_resource_owned(struct imx_sc_ipc *ipc, u16 resource) {
> > > > +	return true;
> > > > +}
> > > > +#endif
> > > > +#endif
> > > > --
> > > > 2.16.4

Powered by blists - more mailing lists