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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Wed, 2 Oct 2019 06:43:27 -0700
From:   Guenter Roeck <linux@...ck-us.net>
To:     Amy.Shih@...antech.com.tw
Cc:     she90122@...il.com, oakley.ding@...antech.com.tw,
        bichan.lu@...antech.com.tw, Jean Delvare <jdelvare@...e.com>,
        linux-hwmon@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [v1,1/1] hwmon: (nct7904) Add array fan_alarm and vsen_alarm to
 store the alarms in nct7904_data struct.

On Thu, Sep 19, 2019 at 11:02:05AM +0800, Amy.Shih@...antech.com.tw wrote:
> From: "amy.shih" <amy.shih@...antech.com.tw>
> 
> SMI# interrupt for fan and voltage is Two-Times Interrupt Mode.
> Fan or voltage exceeds high limit or going below low limit,
> it will causes an interrupt if the previous interrupt has been
> reset by reading all the interrupt Status Register. Thus, add the
> array fan_alarm and vsen_alarm to store the alarms for all of the
> fan and voltage sensors.
> 
> Signed-off-by: amy.shih <amy.shih@...antech.com.tw>

Applied.

Thanks,
Guenter

> ---
>  drivers/hwmon/nct7904.c | 22 ++++++++++++++++++++--
>  1 file changed, 20 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/hwmon/nct7904.c b/drivers/hwmon/nct7904.c
> index f62dd1882451..b26419dbe840 100644
> --- a/drivers/hwmon/nct7904.c
> +++ b/drivers/hwmon/nct7904.c
> @@ -99,6 +99,8 @@ struct nct7904_data {
>  	u8 enable_dts;
>  	u8 has_dts;
>  	u8 temp_mode; /* 0: TR mode, 1: TD mode */
> +	u8 fan_alarm[2];
> +	u8 vsen_alarm[3];
>  };
>  
>  /* Access functions */
> @@ -214,7 +216,15 @@ static int nct7904_read_fan(struct device *dev, u32 attr, int channel,
>  				       SMI_STS5_REG + (channel >> 3));
>  		if (ret < 0)
>  			return ret;
> -		*val = (ret >> (channel & 0x07)) & 1;
> +		if (!data->fan_alarm[channel >> 3])
> +			data->fan_alarm[channel >> 3] = ret & 0xff;
> +		else
> +			/* If there is new alarm showing up */
> +			data->fan_alarm[channel >> 3] |= (ret & 0xff);
> +		*val = (data->fan_alarm[channel >> 3] >> (channel & 0x07)) & 1;
> +		/* Needs to clean the alarm if alarm existing */
> +		if (*val)
> +			data->fan_alarm[channel >> 3] ^= 1 << (channel & 0x07);
>  		return 0;
>  	default:
>  		return -EOPNOTSUPP;
> @@ -298,7 +308,15 @@ static int nct7904_read_in(struct device *dev, u32 attr, int channel,
>  				       SMI_STS1_REG + (index >> 3));
>  		if (ret < 0)
>  			return ret;
> -		*val = (ret >> (index & 0x07)) & 1;
> +		if (!data->vsen_alarm[index >> 3])
> +			data->vsen_alarm[index >> 3] = ret & 0xff;
> +		else
> +			/* If there is new alarm showing up */
> +			data->vsen_alarm[index >> 3] |= (ret & 0xff);
> +		*val = (data->vsen_alarm[index >> 3] >> (index & 0x07)) & 1;
> +		/* Needs to clean the alarm if alarm existing */
> +		if (*val)
> +			data->vsen_alarm[index >> 3] ^= 1 << (index & 0x07);
>  		return 0;
>  	default:
>  		return -EOPNOTSUPP;

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ