All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Jolly Shah <jolly.shah@xilinx.com>
Cc: Tejas Patel <tejas.patel@xilinx.com>,
	keescook@chromium.org, Rajan Vaja <rajan.vaja@xilinx.com>,
	ard.biesheuvel@linaro.org, matt@codeblueprint.co.uk,
	dmitry.torokhov@gmail.com, michal.simek@xilinx.com,
	linux-kernel@vger.kernel.org, Jolly Shah <jollys@xilinx.com>,
	rajanv@xilinx.com, sudeep.holla@arm.com, mingo@kernel.org,
	linux-arm-kernel@lists.infradead.org, hkallweit1@gmail.com
Subject: Re: [PATCH v3 24/24] firmware: xilinx: Add sysfs and API to set boot health status
Date: Wed, 18 Mar 2020 12:53:58 +0100	[thread overview]
Message-ID: <20200318115358.GE2472686@kroah.com> (raw)
In-Reply-To: <1583538452-1992-25-git-send-email-jolly.shah@xilinx.com>

On Fri, Mar 06, 2020 at 03:47:32PM -0800, Jolly Shah wrote:
> From: Rajan Vaja <rajan.vaja@xilinx.com>
> 
> Add sysfs interface to set boot health status from user space.
> Add API used by this interface to communicate with firmware.
> 
> If PMUFW is compiled with CHECK_HEALTHY_BOOT, it will check the
> healthy bit on FPD WDT expiration. If healthy bit is set by a user
> application running in Linux, PMUFW will do APU only restart. If
> healthy bit is not set during FPD WDT expiration, PMUFW will do
> system restart.
> 
> Signed-off-by: Rajan Vaja <rajan.vaja@xilinx.com>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> Signed-off-by: Jolly Shah <jollys@xilinx.com>
> Signed-off-by: Tejas Patel <tejas.patel@xilinx.com>
> Signed-off-by: Jolly Shah <jolly.shah@xilinx.com>
> ---
>  .../ABI/stable/sysfs-driver-firmware-zynqmp        | 21 ++++++++
>  drivers/firmware/xilinx/zynqmp.c                   | 63 ++++++++++++++++++++++
>  include/linux/firmware/xlnx-zynqmp.h               |  3 ++
>  3 files changed, 87 insertions(+)
> 
> diff --git a/Documentation/ABI/stable/sysfs-driver-firmware-zynqmp b/Documentation/ABI/stable/sysfs-driver-firmware-zynqmp
> index b46ec0c..a37b408 100644
> --- a/Documentation/ABI/stable/sysfs-driver-firmware-zynqmp
> +++ b/Documentation/ABI/stable/sysfs-driver-firmware-zynqmp
> @@ -80,3 +80,24 @@ Description:
>  		# echo "subsystem" > /sys/devices/platform/firmware\:zynqmp-firmware/shutdown_scope
>  
>  Users:		Xilinx
> +
> +What:		/sys/devices/platform/firmware\:zynqmp-firmware/health_status
> +Date:		March 2020
> +KernelVersion:	5.6
> +Contact:	"Jolly Shah" <jollys@xilinx.com>
> +Description:
> +		This sysfs interface allows to set the health status. If PMUFW
> +		is compiled with CHECK_HEALTHY_BOOT, it will check the healthy
> +		bit on FPD WDT expiration. If healthy bit is set by a user
> +		application running in Linux, PMUFW will do APU only restart. If
> +		healthy bit is not set during FPD WDT expiration, PMUFW will do
> +		system restart.
> +
> +		Usage:
> +		Set healthy bit
> +		# echo 1 > /sys/devices/platform/firmware\:zynqmp-firmware/health_status
> +
> +		Unset healthy bit
> +		# echo 0 > /sys/devices/platform/firmware\:zynqmp-firmware/health_status
> +
> +Users:		Xilinx
> diff --git a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zynqmp.c
> index 9caf1cf..fc3aa4e 100644
> --- a/drivers/firmware/xilinx/zynqmp.c
> +++ b/drivers/firmware/xilinx/zynqmp.c
> @@ -667,6 +667,21 @@ int zynqmp_pm_read_pggs(u32 index, u32 *value)
>  EXPORT_SYMBOL_GPL(zynqmp_pm_read_pggs);
>  
>  /**
> + * zynqmp_pm_set_boot_health_status() - PM API for setting healthy boot status
> + * @value	Status value to be written
> + *
> + * This function sets healthy bit value to indicate boot health status
> + * to firmware.
> + *
> + * @return      Returns status, either success or error+reason
> + */
> +int zynqmp_pm_set_boot_health_status(u32 value)
> +{
> +	return zynqmp_pm_invoke_fn(PM_IOCTL, 0, IOCTL_SET_BOOT_HEALTH_STATUS,
> +				   value, 0, NULL);
> +}
> +
> +/**
>   * zynqmp_pm_reset_assert - Request setting of reset (1 - assert, 0 - release)
>   * @reset:		Reset to be configured
>   * @assert_flag:	Flag stating should reset be asserted (1) or
> @@ -995,6 +1010,53 @@ static const struct attribute_group shutdown_scope_attribute_group = {
>  };
>  
>  /**
> + * health_status_store - Store health_status sysfs attribute
> + * @device:	Device structure
> + * @attr:	Device attribute structure
> + * @buf:	User entered health_status attribute string
> + * @count:	Buffer size
> + *
> + * User-space interface for setting the boot health status.
> + * Usage: echo <value> > /sys/devices/platform/firmware\:zynqmp-firmware/health_status
> + *
> + * Value:
> + *	1 - Set healthy bit to 1
> + *	0 - Unset healthy bit
> + *
> + * Return:	count argument if request succeeds, the corresponding error
> + *		code otherwise
> + */
> +static ssize_t health_status_store(struct device *device,
> +				   struct device_attribute *attr,
> +				   const char *buf, size_t count)
> +{
> +	int ret;
> +	unsigned int value;
> +
> +	ret = kstrtouint(buf, 10, &value);
> +	if (ret)
> +		return ret;
> +
> +	ret = zynqmp_pm_set_boot_health_status(value);
> +	if (ret) {
> +		pr_err("unable to set healthy bit value to %u\n", value);

You have a valid struct device right there, use it!

dev_err() please...

thanks,

greg k-h

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Greg KH <gregkh@linuxfoundation.org>
To: Jolly Shah <jolly.shah@xilinx.com>
Cc: ard.biesheuvel@linaro.org, mingo@kernel.org,
	matt@codeblueprint.co.uk, sudeep.holla@arm.com,
	hkallweit1@gmail.com, keescook@chromium.org,
	dmitry.torokhov@gmail.com, michal.simek@xilinx.com,
	rajanv@xilinx.com, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, Rajan Vaja <rajan.vaja@xilinx.com>,
	Jolly Shah <jollys@xilinx.com>,
	Tejas Patel <tejas.patel@xilinx.com>
Subject: Re: [PATCH v3 24/24] firmware: xilinx: Add sysfs and API to set boot health status
Date: Wed, 18 Mar 2020 12:53:58 +0100	[thread overview]
Message-ID: <20200318115358.GE2472686@kroah.com> (raw)
In-Reply-To: <1583538452-1992-25-git-send-email-jolly.shah@xilinx.com>

On Fri, Mar 06, 2020 at 03:47:32PM -0800, Jolly Shah wrote:
> From: Rajan Vaja <rajan.vaja@xilinx.com>
> 
> Add sysfs interface to set boot health status from user space.
> Add API used by this interface to communicate with firmware.
> 
> If PMUFW is compiled with CHECK_HEALTHY_BOOT, it will check the
> healthy bit on FPD WDT expiration. If healthy bit is set by a user
> application running in Linux, PMUFW will do APU only restart. If
> healthy bit is not set during FPD WDT expiration, PMUFW will do
> system restart.
> 
> Signed-off-by: Rajan Vaja <rajan.vaja@xilinx.com>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> Signed-off-by: Jolly Shah <jollys@xilinx.com>
> Signed-off-by: Tejas Patel <tejas.patel@xilinx.com>
> Signed-off-by: Jolly Shah <jolly.shah@xilinx.com>
> ---
>  .../ABI/stable/sysfs-driver-firmware-zynqmp        | 21 ++++++++
>  drivers/firmware/xilinx/zynqmp.c                   | 63 ++++++++++++++++++++++
>  include/linux/firmware/xlnx-zynqmp.h               |  3 ++
>  3 files changed, 87 insertions(+)
> 
> diff --git a/Documentation/ABI/stable/sysfs-driver-firmware-zynqmp b/Documentation/ABI/stable/sysfs-driver-firmware-zynqmp
> index b46ec0c..a37b408 100644
> --- a/Documentation/ABI/stable/sysfs-driver-firmware-zynqmp
> +++ b/Documentation/ABI/stable/sysfs-driver-firmware-zynqmp
> @@ -80,3 +80,24 @@ Description:
>  		# echo "subsystem" > /sys/devices/platform/firmware\:zynqmp-firmware/shutdown_scope
>  
>  Users:		Xilinx
> +
> +What:		/sys/devices/platform/firmware\:zynqmp-firmware/health_status
> +Date:		March 2020
> +KernelVersion:	5.6
> +Contact:	"Jolly Shah" <jollys@xilinx.com>
> +Description:
> +		This sysfs interface allows to set the health status. If PMUFW
> +		is compiled with CHECK_HEALTHY_BOOT, it will check the healthy
> +		bit on FPD WDT expiration. If healthy bit is set by a user
> +		application running in Linux, PMUFW will do APU only restart. If
> +		healthy bit is not set during FPD WDT expiration, PMUFW will do
> +		system restart.
> +
> +		Usage:
> +		Set healthy bit
> +		# echo 1 > /sys/devices/platform/firmware\:zynqmp-firmware/health_status
> +
> +		Unset healthy bit
> +		# echo 0 > /sys/devices/platform/firmware\:zynqmp-firmware/health_status
> +
> +Users:		Xilinx
> diff --git a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zynqmp.c
> index 9caf1cf..fc3aa4e 100644
> --- a/drivers/firmware/xilinx/zynqmp.c
> +++ b/drivers/firmware/xilinx/zynqmp.c
> @@ -667,6 +667,21 @@ int zynqmp_pm_read_pggs(u32 index, u32 *value)
>  EXPORT_SYMBOL_GPL(zynqmp_pm_read_pggs);
>  
>  /**
> + * zynqmp_pm_set_boot_health_status() - PM API for setting healthy boot status
> + * @value	Status value to be written
> + *
> + * This function sets healthy bit value to indicate boot health status
> + * to firmware.
> + *
> + * @return      Returns status, either success or error+reason
> + */
> +int zynqmp_pm_set_boot_health_status(u32 value)
> +{
> +	return zynqmp_pm_invoke_fn(PM_IOCTL, 0, IOCTL_SET_BOOT_HEALTH_STATUS,
> +				   value, 0, NULL);
> +}
> +
> +/**
>   * zynqmp_pm_reset_assert - Request setting of reset (1 - assert, 0 - release)
>   * @reset:		Reset to be configured
>   * @assert_flag:	Flag stating should reset be asserted (1) or
> @@ -995,6 +1010,53 @@ static const struct attribute_group shutdown_scope_attribute_group = {
>  };
>  
>  /**
> + * health_status_store - Store health_status sysfs attribute
> + * @device:	Device structure
> + * @attr:	Device attribute structure
> + * @buf:	User entered health_status attribute string
> + * @count:	Buffer size
> + *
> + * User-space interface for setting the boot health status.
> + * Usage: echo <value> > /sys/devices/platform/firmware\:zynqmp-firmware/health_status
> + *
> + * Value:
> + *	1 - Set healthy bit to 1
> + *	0 - Unset healthy bit
> + *
> + * Return:	count argument if request succeeds, the corresponding error
> + *		code otherwise
> + */
> +static ssize_t health_status_store(struct device *device,
> +				   struct device_attribute *attr,
> +				   const char *buf, size_t count)
> +{
> +	int ret;
> +	unsigned int value;
> +
> +	ret = kstrtouint(buf, 10, &value);
> +	if (ret)
> +		return ret;
> +
> +	ret = zynqmp_pm_set_boot_health_status(value);
> +	if (ret) {
> +		pr_err("unable to set healthy bit value to %u\n", value);

You have a valid struct device right there, use it!

dev_err() please...

thanks,

greg k-h

  reply	other threads:[~2020-03-18 11:54 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-06 23:47 [PATCH v3 00/24] firmware: xilinx: Add xilinx specific sysfs interface Jolly Shah
2020-03-06 23:47 ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 01/24] firmware: xilinx: Remove eemi ops for get_api_version Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 02/24] firmware: xilinx: Remove eemi ops for get_chipid Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 03/24] firmware: xilinx: Remove eemi ops for query_data Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 04/24] firmware: xilinx: Remove eemi ops for clock_enable Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 05/24] firmware: xilinx: Remove eemi ops for clock_disable Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 06/24] firmware: xilinx: Remove eemi ops for clock_getstate Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 07/24] firmware: xilinx: Remove eemi ops for clock_setdivider Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 08/24] firmware: xilinx: Remove eemi ops for clock_getdivider Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 09/24] firmware: xilinx: Remove eemi ops for clock set/get rate Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 10/24] firmware: xilinx: Remove eemi ops for clock set/get parent Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 11/24] firmware: xilinx: Use APIs instead of IOCTLs Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 12/24] firmware: xilinx: Remove eemi ops for reset_assert Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 13/24] firmware: xilinx: Remove eemi ops for reset_get_status Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 14/24] firmware: xilinx: Remove eemi ops for init_finalize Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 15/24] firmware: xilinx: Remove eemi ops for set_suspend_mode Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 16/24] firmware: xilinx: Remove eemi ops for request_node Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 17/24] firmware: xilinx: Remove eemi ops for release_node Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 18/24] firmware: xilinx: Remove eemi ops for set_requirement Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 19/24] firmware: xilinx: Remove eemi ops for fpga related APIs Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-06 23:47 ` [PATCH v3 20/24] firmware: xilinx: Add APIs to read/write GGS/PGGS registers Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-18 11:51   ` Greg KH
2020-03-18 11:51     ` Greg KH
2020-03-18 12:41     ` Rajan Vaja
2020-03-18 12:41       ` Rajan Vaja
2020-03-18 12:50       ` Greg KH
2020-03-18 12:50         ` Greg KH
2020-03-06 23:47 ` [PATCH v3 21/24] firmware: xilinx: Add sysfs interface Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-18 11:51   ` Greg KH
2020-03-18 11:51     ` Greg KH
2020-03-06 23:47 ` [PATCH v3 22/24] firmware: xilinx: Add system shutdown API interface Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-18 11:52   ` Greg KH
2020-03-18 11:52     ` Greg KH
2020-03-06 23:47 ` [PATCH v3 23/24] firmware: xilinx: Add sysfs to set shutdown scope Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-18 11:53   ` Greg KH
2020-03-18 11:53     ` Greg KH
2020-03-06 23:47 ` [PATCH v3 24/24] firmware: xilinx: Add sysfs and API to set boot health status Jolly Shah
2020-03-06 23:47   ` Jolly Shah
2020-03-18 11:53   ` Greg KH [this message]
2020-03-18 11:53     ` Greg KH
2020-03-18 11:54 ` [PATCH v3 00/24] firmware: xilinx: Add xilinx specific sysfs interface Greg KH
2020-03-18 11:54   ` Greg KH
2020-04-09 19:17   ` Jolly Shah
2020-04-09 19:17     ` Jolly Shah

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200318115358.GE2472686@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=ard.biesheuvel@linaro.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=hkallweit1@gmail.com \
    --cc=jolly.shah@xilinx.com \
    --cc=jollys@xilinx.com \
    --cc=keescook@chromium.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matt@codeblueprint.co.uk \
    --cc=michal.simek@xilinx.com \
    --cc=mingo@kernel.org \
    --cc=rajan.vaja@xilinx.com \
    --cc=rajanv@xilinx.com \
    --cc=sudeep.holla@arm.com \
    --cc=tejas.patel@xilinx.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.