linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 2/4] powerpc/85xx: add hardware automatically enter altivec idle state
@ 2013-09-24  9:28 Dongsheng Wang
  2013-09-24  9:28 ` [PATCH v4 3/4] powerpc/85xx: add hardware automatically enter pw20 state Dongsheng Wang
  2013-09-24  9:28 ` [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle Dongsheng Wang
  0 siblings, 2 replies; 18+ messages in thread
From: Dongsheng Wang @ 2013-09-24  9:28 UTC (permalink / raw)
  To: scottwood; +Cc: linuxppc-dev, Wang Dongsheng

From: Wang Dongsheng <dongsheng.wang@freescale.com>

Each core's AltiVec unit may be placed into a power savings mode
by turning off power to the unit. Core hardware will automatically
power down the AltiVec unit after no AltiVec instructions have
executed in N cycles. The AltiVec power-control is triggered by hardware.

Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
---
*v3:
Assembly code instead of C code.

*v2:
Remove:
delete setup_idle_hw_governor function.
delete "Fix erratum" for rev1.

Move:
move setup_* into __setup/restore_cpu_e6500.

 arch/powerpc/kernel/cpu_setup_fsl_booke.S | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/arch/powerpc/kernel/cpu_setup_fsl_booke.S b/arch/powerpc/kernel/cpu_setup_fsl_booke.S
index bfb18c7..4789056 100644
--- a/arch/powerpc/kernel/cpu_setup_fsl_booke.S
+++ b/arch/powerpc/kernel/cpu_setup_fsl_booke.S
@@ -53,11 +53,31 @@ _GLOBAL(__e500_dcache_setup)
 	isync
 	blr
 
+/*
+ * FIXME - we haven't yet done testing to determine a reasonable default
+ * value for AV_WAIT_IDLE_BIT.
+ */
+#define AV_WAIT_IDLE_BIT		50 /* 1ms, TB frequency is 41.66MHZ */
+_GLOBAL(setup_altivec_idle)
+	mfspr	r3, SPRN_PWRMGTCR0
+
+	/* Enable Altivec Idle */
+	oris	r3, r3, PWRMGTCR0_AV_IDLE_PD_EN@h
+	li	r11, AV_WAIT_IDLE_BIT
+
+	/* Set Automatic AltiVec Idle Count */
+	rlwimi	r3, r11, PWRMGTCR0_AV_IDLE_CNT_SHIFT, PWRMGTCR0_AV_IDLE_CNT
+
+	mtspr	SPRN_PWRMGTCR0, r3
+
+	blr
+
 _GLOBAL(__setup_cpu_e6500)
 	mflr	r6
 #ifdef CONFIG_PPC64
 	bl	.setup_altivec_ivors
 #endif
+	bl	setup_altivec_idle
 	bl	__setup_cpu_e5500
 	mtlr	r6
 	blr
@@ -119,6 +139,7 @@ _GLOBAL(__setup_cpu_e5500)
 _GLOBAL(__restore_cpu_e6500)
 	mflr	r5
 	bl	.setup_altivec_ivors
+	bl	.setup_altivec_idle
 	bl	__restore_cpu_e5500
 	mtlr	r5
 	blr
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 3/4] powerpc/85xx: add hardware automatically enter pw20 state
  2013-09-24  9:28 [PATCH v4 2/4] powerpc/85xx: add hardware automatically enter altivec idle state Dongsheng Wang
@ 2013-09-24  9:28 ` Dongsheng Wang
  2013-09-24  9:28 ` [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle Dongsheng Wang
  1 sibling, 0 replies; 18+ messages in thread
From: Dongsheng Wang @ 2013-09-24  9:28 UTC (permalink / raw)
  To: scottwood; +Cc: linuxppc-dev, Wang Dongsheng

From: Wang Dongsheng <dongsheng.wang@freescale.com>

Using hardware features make core automatically enter PW20 state.
Set a TB count to hardware, the effective count begins when PW10
is entered. When the effective period has expired, the core will
proceed from PW10 to PW20 if no exit conditions have occurred during
the period.

Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
---
*v3:
Assembly code instead of C code.

*v2:
Remove:
delete setup_idle_hw_governor function.
delete "Fix erratum" for rev1.

Move:
move setup_* into __setup/restore_cpu_e6500.

 arch/powerpc/kernel/cpu_setup_fsl_booke.S | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/arch/powerpc/kernel/cpu_setup_fsl_booke.S b/arch/powerpc/kernel/cpu_setup_fsl_booke.S
index 4789056..49e738e 100644
--- a/arch/powerpc/kernel/cpu_setup_fsl_booke.S
+++ b/arch/powerpc/kernel/cpu_setup_fsl_booke.S
@@ -55,6 +55,25 @@ _GLOBAL(__e500_dcache_setup)
 
 /*
  * FIXME - we haven't yet done testing to determine a reasonable default
+ * value for PW20_WAIT_IDLE_BIT.
+ */
+#define PW20_WAIT_IDLE_BIT		50 /* 1ms, TB frequency is 41.66MHZ */
+_GLOBAL(setup_pw20_idle)
+	mfspr	r3, SPRN_PWRMGTCR0
+
+	/* Set PW20_WAIT bit, enable pw20 state*/
+	ori	r3, r3, PWRMGTCR0_PW20_WAIT
+	li	r11, PW20_WAIT_IDLE_BIT
+
+	/* Set Automatic PW20 Core Idle Count */
+	rlwimi	r3, r11, PWRMGTCR0_PW20_ENT_SHIFT, PWRMGTCR0_PW20_ENT
+
+	mtspr	SPRN_PWRMGTCR0, r3
+
+	blr
+
+/*
+ * FIXME - we haven't yet done testing to determine a reasonable default
  * value for AV_WAIT_IDLE_BIT.
  */
 #define AV_WAIT_IDLE_BIT		50 /* 1ms, TB frequency is 41.66MHZ */
@@ -77,6 +96,7 @@ _GLOBAL(__setup_cpu_e6500)
 #ifdef CONFIG_PPC64
 	bl	.setup_altivec_ivors
 #endif
+	bl	setup_pw20_idle
 	bl	setup_altivec_idle
 	bl	__setup_cpu_e5500
 	mtlr	r6
@@ -139,6 +159,7 @@ _GLOBAL(__setup_cpu_e5500)
 _GLOBAL(__restore_cpu_e6500)
 	mflr	r5
 	bl	.setup_altivec_ivors
+	bl	.setup_pw20_idle
 	bl	.setup_altivec_idle
 	bl	__restore_cpu_e5500
 	mtlr	r5
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-09-24  9:28 [PATCH v4 2/4] powerpc/85xx: add hardware automatically enter altivec idle state Dongsheng Wang
  2013-09-24  9:28 ` [PATCH v4 3/4] powerpc/85xx: add hardware automatically enter pw20 state Dongsheng Wang
@ 2013-09-24  9:28 ` Dongsheng Wang
  2013-09-25  6:22   ` Bhushan Bharat-R65777
  1 sibling, 1 reply; 18+ messages in thread
From: Dongsheng Wang @ 2013-09-24  9:28 UTC (permalink / raw)
  To: scottwood; +Cc: linuxppc-dev, Wang Dongsheng

From: Wang Dongsheng <dongsheng.wang@freescale.com>

Add a sys interface to enable/diable pw20 state or altivec idle, and
control the wait entry time.

Enable/Disable interface:
0, disable. 1, enable.
/sys/devices/system/cpu/cpuX/pw20_state
/sys/devices/system/cpu/cpuX/altivec_idle

Set wait time interface:(Nanosecond)
/sys/devices/system/cpu/cpuX/pw20_wait_time
/sys/devices/system/cpu/cpuX/altivec_idle_wait_time
Example: Base on TBfreq is 41MHZ.
1~47(ns): TB[63]
48~95(ns): TB[62]
96~191(ns): TB[61]
192~383(ns): TB[62]
384~767(ns): TB[60]
...

Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
---
*v4:
Move code from 85xx/common.c to kernel/sysfs.c.

Remove has_pw20_altivec_idle function.

Change wait "entry_bit" to wait time.

 arch/powerpc/kernel/sysfs.c | 291 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 291 insertions(+)

diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c
index 27a90b9..23fece6 100644
--- a/arch/powerpc/kernel/sysfs.c
+++ b/arch/powerpc/kernel/sysfs.c
@@ -85,6 +85,279 @@ __setup("smt-snooze-delay=", setup_smt_snooze_delay);
 
 #endif /* CONFIG_PPC64 */
 
+#ifdef CONFIG_FSL_SOC
+#define MAX_BIT		63
+
+static u64 pw20_wt;
+static u64 altivec_idle_wt;
+
+static unsigned int get_idle_ticks_bit(u64 ns)
+{
+	u64 cycle;
+
+	cycle = div_u64(ns, 1000 / tb_ticks_per_usec);
+	if (!cycle)
+		return 0;
+
+	return ilog2(cycle);
+}
+
+static void do_show_pwrmgtcr0(void *val)
+{
+	u32 *value = val;
+
+	*value = mfspr(SPRN_PWRMGTCR0);
+}
+
+static ssize_t show_pw20_state(struct device *dev,
+				struct device_attribute *attr, char *buf)
+{
+	u32 value;
+	unsigned int cpu = dev->id;
+
+	smp_call_function_single(cpu, do_show_pwrmgtcr0, &value, 1);
+
+	value &= PWRMGTCR0_PW20_WAIT;
+
+	return sprintf(buf, "%u\n", value ? 1 : 0);
+}
+
+static void do_store_pw20_state(void *val)
+{
+	u32 *value = val;
+	u32 pw20_state;
+
+	pw20_state = mfspr(SPRN_PWRMGTCR0);
+
+	if (*value)
+		pw20_state |= PWRMGTCR0_PW20_WAIT;
+	else
+		pw20_state &= ~PWRMGTCR0_PW20_WAIT;
+
+	mtspr(SPRN_PWRMGTCR0, pw20_state);
+}
+
+static ssize_t store_pw20_state(struct device *dev,
+				struct device_attribute *attr,
+				const char *buf, size_t count)
+{
+	u32 value;
+	unsigned int cpu = dev->id;
+
+	if (kstrtou32(buf, 0, &value))
+		return -EINVAL;
+
+	if (value > 1)
+		return -EINVAL;
+
+	smp_call_function_single(cpu, do_store_pw20_state, &value, 1);
+
+	return count;
+}
+
+static ssize_t show_pw20_wait_time(struct device *dev,
+				struct device_attribute *attr, char *buf)
+{
+	u32 value;
+	u64 tb_cycle;
+	u64 time;
+
+	unsigned int cpu = dev->id;
+
+	if (!pw20_wt) {
+		smp_call_function_single(cpu, do_show_pwrmgtcr0, &value, 1);
+		value = (value & PWRMGTCR0_PW20_ENT) >>
+					PWRMGTCR0_PW20_ENT_SHIFT;
+
+		tb_cycle = (1 << (MAX_BIT - value)) * 2;
+		time = tb_cycle * (1000 / tb_ticks_per_usec) - 1;
+	} else {
+		time = pw20_wt;
+	}
+
+	return sprintf(buf, "%llu\n", time);
+}
+
+static void set_pw20_wait_entry_bit(void *val)
+{
+	u32 *value = val;
+	u32 pw20_idle;
+
+	pw20_idle = mfspr(SPRN_PWRMGTCR0);
+
+	/* Set Automatic PW20 Core Idle Count */
+	/* clear count */
+	pw20_idle &= ~PWRMGTCR0_PW20_ENT;
+
+	/* set count */
+	pw20_idle |= ((MAX_BIT - *value) << PWRMGTCR0_PW20_ENT_SHIFT);
+
+	mtspr(SPRN_PWRMGTCR0, pw20_idle);
+}
+
+static ssize_t store_pw20_wait_time(struct device *dev,
+				struct device_attribute *attr,
+				const char *buf, size_t count)
+{
+	u32 entry_bit;
+	u64 value;
+
+	unsigned int cpu = dev->id;
+
+	if (kstrtou64(buf, 0, &value))
+		return -EINVAL;
+
+	if (!value)
+		return -EINVAL;
+
+	entry_bit = get_idle_ticks_bit(value);
+	if (entry_bit > MAX_BIT)
+		return -EINVAL;
+
+	pw20_wt = value;
+	smp_call_function_single(cpu, set_pw20_wait_entry_bit,
+				&entry_bit, 1);
+
+	return count;
+}
+
+static ssize_t show_altivec_idle(struct device *dev,
+				struct device_attribute *attr, char *buf)
+{
+	u32 value;
+	unsigned int cpu = dev->id;
+
+	smp_call_function_single(cpu, do_show_pwrmgtcr0, &value, 1);
+
+	value &= PWRMGTCR0_AV_IDLE_PD_EN;
+
+	return sprintf(buf, "%u\n", value ? 1 : 0);
+}
+
+static void do_store_altivec_idle(void *val)
+{
+	u32 *value = val;
+	u32 altivec_idle;
+
+	altivec_idle = mfspr(SPRN_PWRMGTCR0);
+
+	if (*value)
+		altivec_idle |= PWRMGTCR0_AV_IDLE_PD_EN;
+	else
+		altivec_idle &= ~PWRMGTCR0_AV_IDLE_PD_EN;
+
+	mtspr(SPRN_PWRMGTCR0, altivec_idle);
+}
+
+static ssize_t store_altivec_idle(struct device *dev,
+				struct device_attribute *attr,
+				const char *buf, size_t count)
+{
+	u32 value;
+	unsigned int cpu = dev->id;
+
+	if (kstrtou32(buf, 0, &value))
+		return -EINVAL;
+
+	if (value > 1)
+		return -EINVAL;
+
+	smp_call_function_single(cpu, do_store_altivec_idle, &value, 1);
+
+	return count;
+}
+
+static ssize_t show_altivec_idle_wait_time(struct device *dev,
+				struct device_attribute *attr, char *buf)
+{
+	u32 value;
+	u64 tb_cycle;
+	u64 time;
+
+	unsigned int cpu = dev->id;
+
+	if (!altivec_idle_wt) {
+		smp_call_function_single(cpu, do_show_pwrmgtcr0, &value, 1);
+		value = (value & PWRMGTCR0_AV_IDLE_CNT) >>
+					PWRMGTCR0_AV_IDLE_CNT_SHIFT;
+
+		tb_cycle = (1 << (MAX_BIT - value)) * 2;
+		time = tb_cycle * (1000 / tb_ticks_per_usec) - 1;
+	} else {
+		time = altivec_idle_wt;
+	}
+
+	return sprintf(buf, "%llu\n", time);
+}
+
+static void set_altivec_idle_wait_entry_bit(void *val)
+{
+	u32 *value = val;
+	u32 altivec_idle;
+
+	altivec_idle = mfspr(SPRN_PWRMGTCR0);
+
+	/* Set Automatic AltiVec Idle Count */
+	/* clear count */
+	altivec_idle &= ~PWRMGTCR0_AV_IDLE_CNT;
+
+	/* set count */
+	altivec_idle |= ((MAX_BIT - *value) << PWRMGTCR0_AV_IDLE_CNT_SHIFT);
+
+	mtspr(SPRN_PWRMGTCR0, altivec_idle);
+}
+
+static ssize_t store_altivec_idle_wait_time(struct device *dev,
+				struct device_attribute *attr,
+				const char *buf, size_t count)
+{
+	u32 entry_bit;
+	u64 value;
+
+	unsigned int cpu = dev->id;
+
+	if (kstrtou64(buf, 0, &value))
+		return -EINVAL;
+
+	if (!value)
+		return -EINVAL;
+
+	entry_bit = get_idle_ticks_bit(value);
+	if (entry_bit > MAX_BIT)
+		return -EINVAL;
+
+	altivec_idle_wt = value;
+	smp_call_function_single(cpu, set_altivec_idle_wait_entry_bit,
+				&entry_bit, 1);
+
+	return count;
+}
+
+/*
+ * Enable/Disable interface:
+ * 0, disable. 1, enable.
+ */
+static DEVICE_ATTR(pw20_state, 0600, show_pw20_state, store_pw20_state);
+static DEVICE_ATTR(altivec_idle, 0600, show_altivec_idle, store_altivec_idle);
+
+/*
+ * Set wait time interface:(Nanosecond)
+ * Example: Base on TBfreq is 41MHZ.
+ * 1~47(ns): TB[63]
+ * 48~95(ns): TB[62]
+ * 96~191(ns): TB[61]
+ * 192~383(ns): TB[62]
+ * 384~767(ns): TB[60]
+ * ...
+ */
+static DEVICE_ATTR(pw20_wait_time, 0600,
+			show_pw20_wait_time,
+			store_pw20_wait_time);
+static DEVICE_ATTR(altivec_idle_wait_time, 0600,
+			show_altivec_idle_wait_time,
+			store_altivec_idle_wait_time);
+#endif
+
 /*
  * Enabling PMCs will slow partition context switch times so we only do
  * it the first time we write to the PMCs.
@@ -407,6 +680,15 @@ static void register_cpu_online(unsigned int cpu)
 		device_create_file(s, &dev_attr_pir);
 #endif /* CONFIG_PPC64 */
 
+#ifdef CONFIG_FSL_SOC
+	if (PVR_VER(cur_cpu_spec->pvr_value) == PVR_VER_E6500) {
+		device_create_file(s, &dev_attr_pw20_state);
+		device_create_file(s, &dev_attr_pw20_wait_time);
+
+		device_create_file(s, &dev_attr_altivec_idle);
+		device_create_file(s, &dev_attr_altivec_idle_wait_time);
+	}
+#endif
 	cacheinfo_cpu_online(cpu);
 }
 
@@ -479,6 +761,15 @@ static void unregister_cpu_online(unsigned int cpu)
 		device_remove_file(s, &dev_attr_pir);
 #endif /* CONFIG_PPC64 */
 
+#ifdef CONFIG_FSL_SOC
+	if (PVR_VER(cur_cpu_spec->pvr_value) == PVR_VER_E6500) {
+		device_remove_file(s, &dev_attr_pw20_state);
+		device_remove_file(s, &dev_attr_pw20_wait_time);
+
+		device_remove_file(s, &dev_attr_altivec_idle);
+		device_remove_file(s, &dev_attr_altivec_idle_wait_time);
+	}
+#endif
 	cacheinfo_cpu_offline(cpu);
 }
 
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-09-24  9:28 ` [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle Dongsheng Wang
@ 2013-09-25  6:22   ` Bhushan Bharat-R65777
  2013-09-25  8:10     ` Wang Dongsheng-B40534
  0 siblings, 1 reply; 18+ messages in thread
From: Bhushan Bharat-R65777 @ 2013-09-25  6:22 UTC (permalink / raw)
  To: Wang Dongsheng-B40534, Wood Scott-B07421
  Cc: Wang Dongsheng-B40534, linuxppc-dev



> -----Original Message-----
> From: Linuxppc-dev [mailto:linuxppc-dev-
> bounces+bharat.bhushan=3Dfreescale.com@lists.ozlabs.org] On Behalf Of Don=
gsheng
> Wang
> Sent: Tuesday, September 24, 2013 2:59 PM
> To: Wood Scott-B07421
> Cc: linuxppc-dev@lists.ozlabs.org; Wang Dongsheng-B40534
> Subject: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altive=
c idle
>=20
> From: Wang Dongsheng <dongsheng.wang@freescale.com>
>=20
> Add a sys interface to enable/diable pw20 state or altivec idle, and
> control the wait entry time.
>=20
> Enable/Disable interface:
> 0, disable. 1, enable.
> /sys/devices/system/cpu/cpuX/pw20_state
> /sys/devices/system/cpu/cpuX/altivec_idle
>=20
> Set wait time interface:(Nanosecond)
> /sys/devices/system/cpu/cpuX/pw20_wait_time
> /sys/devices/system/cpu/cpuX/altivec_idle_wait_time
> Example: Base on TBfreq is 41MHZ.
> 1~47(ns): TB[63]
> 48~95(ns): TB[62]
> 96~191(ns): TB[61]
> 192~383(ns): TB[62]
> 384~767(ns): TB[60]
> ...
>=20
> Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
> ---
> *v4:
> Move code from 85xx/common.c to kernel/sysfs.c.
>=20
> Remove has_pw20_altivec_idle function.
>=20
> Change wait "entry_bit" to wait time.
>=20
>  arch/powerpc/kernel/sysfs.c | 291 ++++++++++++++++++++++++++++++++++++++=
++++++
>  1 file changed, 291 insertions(+)
>=20
> diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c
> index 27a90b9..23fece6 100644
> --- a/arch/powerpc/kernel/sysfs.c
> +++ b/arch/powerpc/kernel/sysfs.c
> @@ -85,6 +85,279 @@ __setup("smt-snooze-delay=3D", setup_smt_snooze_delay=
);
>=20
>  #endif /* CONFIG_PPC64 */
>=20
> +#ifdef CONFIG_FSL_SOC
> +#define MAX_BIT		63
> +
> +static u64 pw20_wt;
> +static u64 altivec_idle_wt;
> +
> +static unsigned int get_idle_ticks_bit(u64 ns)
> +{
> +	u64 cycle;
> +
> +	cycle =3D div_u64(ns, 1000 / tb_ticks_per_usec);

When tb_ticks_per_usec  > 1000 (timebase frequency > 1GHz) then this will a=
lways be ns, which is not correct, no?=20

> +	if (!cycle)
> +		return 0;
> +
> +	return ilog2(cycle);
> +}
> +
> +static void do_show_pwrmgtcr0(void *val)
> +{
> +	u32 *value =3D val;
> +
> +	*value =3D mfspr(SPRN_PWRMGTCR0);
> +}
> +
> +static ssize_t show_pw20_state(struct device *dev,
> +				struct device_attribute *attr, char *buf)
> +{
> +	u32 value;
> +	unsigned int cpu =3D dev->id;
> +
> +	smp_call_function_single(cpu, do_show_pwrmgtcr0, &value, 1);
> +
> +	value &=3D PWRMGTCR0_PW20_WAIT;
> +
> +	return sprintf(buf, "%u\n", value ? 1 : 0);
> +}
> +
> +static void do_store_pw20_state(void *val)
> +{
> +	u32 *value =3D val;
> +	u32 pw20_state;
> +
> +	pw20_state =3D mfspr(SPRN_PWRMGTCR0);
> +
> +	if (*value)
> +		pw20_state |=3D PWRMGTCR0_PW20_WAIT;
> +	else
> +		pw20_state &=3D ~PWRMGTCR0_PW20_WAIT;
> +
> +	mtspr(SPRN_PWRMGTCR0, pw20_state);
> +}
> +
> +static ssize_t store_pw20_state(struct device *dev,
> +				struct device_attribute *attr,
> +				const char *buf, size_t count)
> +{
> +	u32 value;
> +	unsigned int cpu =3D dev->id;
> +
> +	if (kstrtou32(buf, 0, &value))
> +		return -EINVAL;
> +
> +	if (value > 1)
> +		return -EINVAL;
> +
> +	smp_call_function_single(cpu, do_store_pw20_state, &value, 1);
> +
> +	return count;
> +}
> +
> +static ssize_t show_pw20_wait_time(struct device *dev,
> +				struct device_attribute *attr, char *buf)
> +{
> +	u32 value;
> +	u64 tb_cycle;
> +	u64 time;
> +
> +	unsigned int cpu =3D dev->id;
> +
> +	if (!pw20_wt) {
> +		smp_call_function_single(cpu, do_show_pwrmgtcr0, &value, 1);
> +		value =3D (value & PWRMGTCR0_PW20_ENT) >>
> +					PWRMGTCR0_PW20_ENT_SHIFT;
> +
> +		tb_cycle =3D (1 << (MAX_BIT - value)) * 2;
> +		time =3D tb_cycle * (1000 / tb_ticks_per_usec) - 1;

Similar to above comment.

-Bharat

> +	} else {
> +		time =3D pw20_wt;
> +	}
> +
> +	return sprintf(buf, "%llu\n", time);
> +}
> +
> +static void set_pw20_wait_entry_bit(void *val)
> +{
> +	u32 *value =3D val;
> +	u32 pw20_idle;
> +
> +	pw20_idle =3D mfspr(SPRN_PWRMGTCR0);
> +
> +	/* Set Automatic PW20 Core Idle Count */
> +	/* clear count */
> +	pw20_idle &=3D ~PWRMGTCR0_PW20_ENT;
> +
> +	/* set count */
> +	pw20_idle |=3D ((MAX_BIT - *value) << PWRMGTCR0_PW20_ENT_SHIFT);
> +
> +	mtspr(SPRN_PWRMGTCR0, pw20_idle);
> +}
> +
> +static ssize_t store_pw20_wait_time(struct device *dev,
> +				struct device_attribute *attr,
> +				const char *buf, size_t count)
> +{
> +	u32 entry_bit;
> +	u64 value;
> +
> +	unsigned int cpu =3D dev->id;
> +
> +	if (kstrtou64(buf, 0, &value))
> +		return -EINVAL;
> +
> +	if (!value)
> +		return -EINVAL;
> +
> +	entry_bit =3D get_idle_ticks_bit(value);
> +	if (entry_bit > MAX_BIT)
> +		return -EINVAL;
> +
> +	pw20_wt =3D value;
> +	smp_call_function_single(cpu, set_pw20_wait_entry_bit,
> +				&entry_bit, 1);
> +
> +	return count;
> +}
> +
> +static ssize_t show_altivec_idle(struct device *dev,
> +				struct device_attribute *attr, char *buf)
> +{
> +	u32 value;
> +	unsigned int cpu =3D dev->id;
> +
> +	smp_call_function_single(cpu, do_show_pwrmgtcr0, &value, 1);
> +
> +	value &=3D PWRMGTCR0_AV_IDLE_PD_EN;
> +
> +	return sprintf(buf, "%u\n", value ? 1 : 0);
> +}
> +
> +static void do_store_altivec_idle(void *val)
> +{
> +	u32 *value =3D val;
> +	u32 altivec_idle;
> +
> +	altivec_idle =3D mfspr(SPRN_PWRMGTCR0);
> +
> +	if (*value)
> +		altivec_idle |=3D PWRMGTCR0_AV_IDLE_PD_EN;
> +	else
> +		altivec_idle &=3D ~PWRMGTCR0_AV_IDLE_PD_EN;
> +
> +	mtspr(SPRN_PWRMGTCR0, altivec_idle);
> +}
> +
> +static ssize_t store_altivec_idle(struct device *dev,
> +				struct device_attribute *attr,
> +				const char *buf, size_t count)
> +{
> +	u32 value;
> +	unsigned int cpu =3D dev->id;
> +
> +	if (kstrtou32(buf, 0, &value))
> +		return -EINVAL;
> +
> +	if (value > 1)
> +		return -EINVAL;
> +
> +	smp_call_function_single(cpu, do_store_altivec_idle, &value, 1);
> +
> +	return count;
> +}
> +
> +static ssize_t show_altivec_idle_wait_time(struct device *dev,
> +				struct device_attribute *attr, char *buf)
> +{
> +	u32 value;
> +	u64 tb_cycle;
> +	u64 time;
> +
> +	unsigned int cpu =3D dev->id;
> +
> +	if (!altivec_idle_wt) {
> +		smp_call_function_single(cpu, do_show_pwrmgtcr0, &value, 1);
> +		value =3D (value & PWRMGTCR0_AV_IDLE_CNT) >>
> +					PWRMGTCR0_AV_IDLE_CNT_SHIFT;
> +
> +		tb_cycle =3D (1 << (MAX_BIT - value)) * 2;
> +		time =3D tb_cycle * (1000 / tb_ticks_per_usec) - 1;
> +	} else {
> +		time =3D altivec_idle_wt;
> +	}
> +
> +	return sprintf(buf, "%llu\n", time);
> +}
> +
> +static void set_altivec_idle_wait_entry_bit(void *val)
> +{
> +	u32 *value =3D val;
> +	u32 altivec_idle;
> +
> +	altivec_idle =3D mfspr(SPRN_PWRMGTCR0);
> +
> +	/* Set Automatic AltiVec Idle Count */
> +	/* clear count */
> +	altivec_idle &=3D ~PWRMGTCR0_AV_IDLE_CNT;
> +
> +	/* set count */
> +	altivec_idle |=3D ((MAX_BIT - *value) << PWRMGTCR0_AV_IDLE_CNT_SHIFT);
> +
> +	mtspr(SPRN_PWRMGTCR0, altivec_idle);
> +}
> +
> +static ssize_t store_altivec_idle_wait_time(struct device *dev,
> +				struct device_attribute *attr,
> +				const char *buf, size_t count)
> +{
> +	u32 entry_bit;
> +	u64 value;
> +
> +	unsigned int cpu =3D dev->id;
> +
> +	if (kstrtou64(buf, 0, &value))
> +		return -EINVAL;
> +
> +	if (!value)
> +		return -EINVAL;
> +
> +	entry_bit =3D get_idle_ticks_bit(value);
> +	if (entry_bit > MAX_BIT)
> +		return -EINVAL;
> +
> +	altivec_idle_wt =3D value;
> +	smp_call_function_single(cpu, set_altivec_idle_wait_entry_bit,
> +				&entry_bit, 1);
> +
> +	return count;
> +}
> +
> +/*
> + * Enable/Disable interface:
> + * 0, disable. 1, enable.
> + */
> +static DEVICE_ATTR(pw20_state, 0600, show_pw20_state, store_pw20_state);
> +static DEVICE_ATTR(altivec_idle, 0600, show_altivec_idle, store_altivec_=
idle);
> +
> +/*
> + * Set wait time interface:(Nanosecond)
> + * Example: Base on TBfreq is 41MHZ.
> + * 1~47(ns): TB[63]
> + * 48~95(ns): TB[62]
> + * 96~191(ns): TB[61]
> + * 192~383(ns): TB[62]
> + * 384~767(ns): TB[60]
> + * ...
> + */
> +static DEVICE_ATTR(pw20_wait_time, 0600,
> +			show_pw20_wait_time,
> +			store_pw20_wait_time);
> +static DEVICE_ATTR(altivec_idle_wait_time, 0600,
> +			show_altivec_idle_wait_time,
> +			store_altivec_idle_wait_time);
> +#endif
> +
>  /*
>   * Enabling PMCs will slow partition context switch times so we only do
>   * it the first time we write to the PMCs.
> @@ -407,6 +680,15 @@ static void register_cpu_online(unsigned int cpu)
>  		device_create_file(s, &dev_attr_pir);
>  #endif /* CONFIG_PPC64 */
>=20
> +#ifdef CONFIG_FSL_SOC
> +	if (PVR_VER(cur_cpu_spec->pvr_value) =3D=3D PVR_VER_E6500) {
> +		device_create_file(s, &dev_attr_pw20_state);
> +		device_create_file(s, &dev_attr_pw20_wait_time);
> +
> +		device_create_file(s, &dev_attr_altivec_idle);
> +		device_create_file(s, &dev_attr_altivec_idle_wait_time);
> +	}
> +#endif
>  	cacheinfo_cpu_online(cpu);
>  }
>=20
> @@ -479,6 +761,15 @@ static void unregister_cpu_online(unsigned int cpu)
>  		device_remove_file(s, &dev_attr_pir);
>  #endif /* CONFIG_PPC64 */
>=20
> +#ifdef CONFIG_FSL_SOC
> +	if (PVR_VER(cur_cpu_spec->pvr_value) =3D=3D PVR_VER_E6500) {
> +		device_remove_file(s, &dev_attr_pw20_state);
> +		device_remove_file(s, &dev_attr_pw20_wait_time);
> +
> +		device_remove_file(s, &dev_attr_altivec_idle);
> +		device_remove_file(s, &dev_attr_altivec_idle_wait_time);
> +	}
> +#endif
>  	cacheinfo_cpu_offline(cpu);
>  }
>=20
> --
> 1.8.0
>=20
>=20
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev

^ permalink raw reply	[flat|nested] 18+ messages in thread

* RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-09-25  6:22   ` Bhushan Bharat-R65777
@ 2013-09-25  8:10     ` Wang Dongsheng-B40534
  2013-09-25  8:33       ` Bhushan Bharat-R65777
  2013-09-25 17:56       ` Scott Wood
  0 siblings, 2 replies; 18+ messages in thread
From: Wang Dongsheng-B40534 @ 2013-09-25  8:10 UTC (permalink / raw)
  To: Bhushan Bharat-R65777, Wood Scott-B07421; +Cc: linuxppc-dev



> -----Original Message-----
> From: Bhushan Bharat-R65777
> Sent: Wednesday, September 25, 2013 2:23 PM
> To: Wang Dongsheng-B40534; Wood Scott-B07421
> Cc: linuxppc-dev@lists.ozlabs.org; Wang Dongsheng-B40534
> Subject: RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and
> altivec idle
>=20
>=20
>=20
> > -----Original Message-----
> > From: Linuxppc-dev [mailto:linuxppc-dev-
> > bounces+bharat.bhushan=3Dfreescale.com@lists.ozlabs.org] On Behalf Of
> > bounces+Dongsheng
> > Wang
> > Sent: Tuesday, September 24, 2013 2:59 PM
> > To: Wood Scott-B07421
> > Cc: linuxppc-dev@lists.ozlabs.org; Wang Dongsheng-B40534
> > Subject: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and
> > altivec idle
> >
> > From: Wang Dongsheng <dongsheng.wang@freescale.com>
> >
> > Add a sys interface to enable/diable pw20 state or altivec idle, and
> > control the wait entry time.
> >
> > Enable/Disable interface:
> > 0, disable. 1, enable.
> > /sys/devices/system/cpu/cpuX/pw20_state
> > /sys/devices/system/cpu/cpuX/altivec_idle
> >
> > Set wait time interface:(Nanosecond)
> > /sys/devices/system/cpu/cpuX/pw20_wait_time
> > /sys/devices/system/cpu/cpuX/altivec_idle_wait_time
> > Example: Base on TBfreq is 41MHZ.
> > 1~47(ns): TB[63]
> > 48~95(ns): TB[62]
> > 96~191(ns): TB[61]
> > 192~383(ns): TB[62]
> > 384~767(ns): TB[60]
> > ...
> >
> > Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
> > ---
> > *v4:
> > Move code from 85xx/common.c to kernel/sysfs.c.
> >
> > Remove has_pw20_altivec_idle function.
> >
> > Change wait "entry_bit" to wait time.
> >
> >  arch/powerpc/kernel/sysfs.c | 291
> > ++++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 291 insertions(+)
> >
> > diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c
> > index 27a90b9..23fece6 100644
> > --- a/arch/powerpc/kernel/sysfs.c
> > +++ b/arch/powerpc/kernel/sysfs.c
> > @@ -85,6 +85,279 @@ __setup("smt-snooze-delay=3D",
> > setup_smt_snooze_delay);
> >
> >  #endif /* CONFIG_PPC64 */
> >
> > +#ifdef CONFIG_FSL_SOC
> > +#define MAX_BIT		63
> > +
> > +static u64 pw20_wt;
> > +static u64 altivec_idle_wt;
> > +
> > +static unsigned int get_idle_ticks_bit(u64 ns) {
> > +	u64 cycle;
> > +
> > +	cycle =3D div_u64(ns, 1000 / tb_ticks_per_usec);
>=20
> When tb_ticks_per_usec  > 1000 (timebase frequency > 1GHz) then this will
> always be ns, which is not correct, no?
>=20
"1000 / tb_ticks_per_usec" means nsec_ticks_per_tb

If timebase frequency > 1GHz, this should be "tb_ticks_per_usec / 1000" and=
 to get tb_ticks_per_nsec.
This should be changed to "cycle =3D ns * tb_ticks_per_nsec;"

But at present we do not have such a platform that timebase frequency more =
than 1GHz. And I think it is not need to support such a situation. Because =
we have no environment to test it.

If later there will be more than 1GHZ platform at that time to add this sup=
port.

Thanks.

-dongsheng

^ permalink raw reply	[flat|nested] 18+ messages in thread

* RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-09-25  8:10     ` Wang Dongsheng-B40534
@ 2013-09-25  8:33       ` Bhushan Bharat-R65777
  2013-09-25 17:56       ` Scott Wood
  1 sibling, 0 replies; 18+ messages in thread
From: Bhushan Bharat-R65777 @ 2013-09-25  8:33 UTC (permalink / raw)
  To: Wang Dongsheng-B40534, Wood Scott-B07421; +Cc: linuxppc-dev



> -----Original Message-----
> From: Wang Dongsheng-B40534
> Sent: Wednesday, September 25, 2013 1:40 PM
> To: Bhushan Bharat-R65777; Wood Scott-B07421
> Cc: linuxppc-dev@lists.ozlabs.org
> Subject: RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and al=
tivec
> idle
>=20
>=20
>=20
> > -----Original Message-----
> > From: Bhushan Bharat-R65777
> > Sent: Wednesday, September 25, 2013 2:23 PM
> > To: Wang Dongsheng-B40534; Wood Scott-B07421
> > Cc: linuxppc-dev@lists.ozlabs.org; Wang Dongsheng-B40534
> > Subject: RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and
> > altivec idle
> >
> >
> >
> > > -----Original Message-----
> > > From: Linuxppc-dev [mailto:linuxppc-dev-
> > > bounces+bharat.bhushan=3Dfreescale.com@lists.ozlabs.org] On Behalf Of
> > > bounces+Dongsheng
> > > Wang
> > > Sent: Tuesday, September 24, 2013 2:59 PM
> > > To: Wood Scott-B07421
> > > Cc: linuxppc-dev@lists.ozlabs.org; Wang Dongsheng-B40534
> > > Subject: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and
> > > altivec idle
> > >
> > > From: Wang Dongsheng <dongsheng.wang@freescale.com>
> > >
> > > Add a sys interface to enable/diable pw20 state or altivec idle, and
> > > control the wait entry time.
> > >
> > > Enable/Disable interface:
> > > 0, disable. 1, enable.
> > > /sys/devices/system/cpu/cpuX/pw20_state
> > > /sys/devices/system/cpu/cpuX/altivec_idle
> > >
> > > Set wait time interface:(Nanosecond)
> > > /sys/devices/system/cpu/cpuX/pw20_wait_time
> > > /sys/devices/system/cpu/cpuX/altivec_idle_wait_time
> > > Example: Base on TBfreq is 41MHZ.
> > > 1~47(ns): TB[63]
> > > 48~95(ns): TB[62]
> > > 96~191(ns): TB[61]
> > > 192~383(ns): TB[62]
> > > 384~767(ns): TB[60]
> > > ...
> > >
> > > Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
> > > ---
> > > *v4:
> > > Move code from 85xx/common.c to kernel/sysfs.c.
> > >
> > > Remove has_pw20_altivec_idle function.
> > >
> > > Change wait "entry_bit" to wait time.
> > >
> > >  arch/powerpc/kernel/sysfs.c | 291
> > > ++++++++++++++++++++++++++++++++++++++++++++
> > >  1 file changed, 291 insertions(+)
> > >
> > > diff --git a/arch/powerpc/kernel/sysfs.c
> > > b/arch/powerpc/kernel/sysfs.c index 27a90b9..23fece6 100644
> > > --- a/arch/powerpc/kernel/sysfs.c
> > > +++ b/arch/powerpc/kernel/sysfs.c
> > > @@ -85,6 +85,279 @@ __setup("smt-snooze-delay=3D",
> > > setup_smt_snooze_delay);
> > >
> > >  #endif /* CONFIG_PPC64 */
> > >
> > > +#ifdef CONFIG_FSL_SOC
> > > +#define MAX_BIT		63
> > > +
> > > +static u64 pw20_wt;
> > > +static u64 altivec_idle_wt;
> > > +
> > > +static unsigned int get_idle_ticks_bit(u64 ns) {
> > > +	u64 cycle;
> > > +
> > > +	cycle =3D div_u64(ns, 1000 / tb_ticks_per_usec);
> >
> > When tb_ticks_per_usec  > 1000 (timebase frequency > 1GHz) then this
> > will always be ns, which is not correct, no?
> >
> "1000 / tb_ticks_per_usec" means nsec_ticks_per_tb
>=20
> If timebase frequency > 1GHz, this should be "tb_ticks_per_usec / 1000" a=
nd to
> get tb_ticks_per_nsec.
> This should be changed to "cycle =3D ns * tb_ticks_per_nsec;"

Yes, we need to change this to two line.

>=20
> But at present we do not have such a platform that timebase frequency mor=
e than
> 1GHz. And I think it is not need to support such a situation. Because we =
have no
> environment to test it.
>=20
> If later there will be more than 1GHZ platform at that time to add this s=
upport.

Would like to leave it to Scott, but personally I think that if there is so=
mething simple to fix then it must be fixed rather than waiting for some er=
ror to happen and then fixing.

-Bharat

>=20
> Thanks.
>=20
> -dongsheng

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-09-25  8:10     ` Wang Dongsheng-B40534
  2013-09-25  8:33       ` Bhushan Bharat-R65777
@ 2013-09-25 17:56       ` Scott Wood
  2013-09-26  2:32         ` Wang Dongsheng-B40534
  1 sibling, 1 reply; 18+ messages in thread
From: Scott Wood @ 2013-09-25 17:56 UTC (permalink / raw)
  To: Wang Dongsheng-B40534
  Cc: Wood Scott-B07421, linuxppc-dev, Bhushan Bharat-R65777

On Wed, 2013-09-25 at 03:10 -0500, Wang Dongsheng-B40534 wrote:
> 
> > -----Original Message-----
> > From: Bhushan Bharat-R65777
> > Sent: Wednesday, September 25, 2013 2:23 PM
> > To: Wang Dongsheng-B40534; Wood Scott-B07421
> > Cc: linuxppc-dev@lists.ozlabs.org; Wang Dongsheng-B40534
> > Subject: RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and
> > altivec idle
> > 
> > 
> > 
> > > -----Original Message-----
> > > From: Linuxppc-dev [mailto:linuxppc-dev-
> > > bounces+bharat.bhushan=freescale.com@lists.ozlabs.org] On Behalf Of
> > > bounces+Dongsheng
> > > Wang
> > > Sent: Tuesday, September 24, 2013 2:59 PM
> > > To: Wood Scott-B07421
> > > Cc: linuxppc-dev@lists.ozlabs.org; Wang Dongsheng-B40534
> > > Subject: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and
> > > altivec idle
> > >
> > > From: Wang Dongsheng <dongsheng.wang@freescale.com>
> > >
> > > Add a sys interface to enable/diable pw20 state or altivec idle, and
> > > control the wait entry time.
> > >
> > > Enable/Disable interface:
> > > 0, disable. 1, enable.
> > > /sys/devices/system/cpu/cpuX/pw20_state
> > > /sys/devices/system/cpu/cpuX/altivec_idle
> > >
> > > Set wait time interface:(Nanosecond)
> > > /sys/devices/system/cpu/cpuX/pw20_wait_time
> > > /sys/devices/system/cpu/cpuX/altivec_idle_wait_time
> > > Example: Base on TBfreq is 41MHZ.
> > > 1~47(ns): TB[63]
> > > 48~95(ns): TB[62]
> > > 96~191(ns): TB[61]
> > > 192~383(ns): TB[62]
> > > 384~767(ns): TB[60]
> > > ...
> > >
> > > Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
> > > ---
> > > *v4:
> > > Move code from 85xx/common.c to kernel/sysfs.c.
> > >
> > > Remove has_pw20_altivec_idle function.
> > >
> > > Change wait "entry_bit" to wait time.
> > >
> > >  arch/powerpc/kernel/sysfs.c | 291
> > > ++++++++++++++++++++++++++++++++++++++++++++
> > >  1 file changed, 291 insertions(+)
> > >
> > > diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c
> > > index 27a90b9..23fece6 100644
> > > --- a/arch/powerpc/kernel/sysfs.c
> > > +++ b/arch/powerpc/kernel/sysfs.c
> > > @@ -85,6 +85,279 @@ __setup("smt-snooze-delay=",
> > > setup_smt_snooze_delay);
> > >
> > >  #endif /* CONFIG_PPC64 */
> > >
> > > +#ifdef CONFIG_FSL_SOC
> > > +#define MAX_BIT		63
> > > +
> > > +static u64 pw20_wt;
> > > +static u64 altivec_idle_wt;
> > > +
> > > +static unsigned int get_idle_ticks_bit(u64 ns) {
> > > +	u64 cycle;
> > > +
> > > +	cycle = div_u64(ns, 1000 / tb_ticks_per_usec);
> > 
> > When tb_ticks_per_usec  > 1000 (timebase frequency > 1GHz) then this will
> > always be ns, which is not correct, no?

Actually it'll be a divide by zero in that case.

> "1000 / tb_ticks_per_usec" means nsec_ticks_per_tb
> 
> If timebase frequency > 1GHz, this should be "tb_ticks_per_usec / 1000" and to get tb_ticks_per_nsec.
> This should be changed to "cycle = ns * tb_ticks_per_nsec;"
> 
> But at present we do not have such a platform that timebase frequency
> more than 1GHz. And I think it is not need to support such a situation.
> Because we have no environment to test it.

You can test it by hacking a wrong timebase frequency in and seeing what
the calculation does.

Or do something like this:

	if (ns >= 10000)
		cycle = ((ns + 500) / 1000) * tb_ticks_per_usec;
	else
		cycle = div_u64((u64)ns * tb_ticks_per_usec, 1000);

...which can be tested just by varying ns.

> If later there will be more than 1GHZ platform at that time to add this support.

There almost certainly won't be timebases that run that fast, but divide
by zero is a rather nasty way of responding if such a thing does happen.

-Scott

^ permalink raw reply	[flat|nested] 18+ messages in thread

* RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-09-25 17:56       ` Scott Wood
@ 2013-09-26  2:32         ` Wang Dongsheng-B40534
  2013-09-26  4:23           ` Bhushan Bharat-R65777
  0 siblings, 1 reply; 18+ messages in thread
From: Wang Dongsheng-B40534 @ 2013-09-26  2:32 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: linuxppc-dev, Bhushan Bharat-R65777

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyNiwgMjAxMyAxOjU3IEFNDQo+IFRvOiBX
YW5nIERvbmdzaGVuZy1CNDA1MzQNCj4gQ2M6IEJodXNoYW4gQmhhcmF0LVI2NTc3NzsgV29vZCBT
Y290dC1CMDc0MjE7IGxpbnV4cHBjLQ0KPiBkZXZAbGlzdHMub3psYWJzLm9yZw0KPiBTdWJqZWN0
OiBSZTogW1BBVENIIHY0IDQvNF0gcG93ZXJwYy84NXh4OiBhZGQgc3lzZnMgZm9yIHB3MjAgc3Rh
dGUgYW5kDQo+IGFsdGl2ZWMgaWRsZQ0KPiANCj4gT24gV2VkLCAyMDEzLTA5LTI1IGF0IDAzOjEw
IC0wNTAwLCBXYW5nIERvbmdzaGVuZy1CNDA1MzQgd3JvdGU6DQo+ID4NCj4gPiA+IC0tLS0tT3Jp
Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBCaHVzaGFuIEJoYXJhdC1SNjU3NzcNCj4g
PiA+IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDI1LCAyMDEzIDI6MjMgUE0NCj4gPiA+IFRv
OiBXYW5nIERvbmdzaGVuZy1CNDA1MzQ7IFdvb2QgU2NvdHQtQjA3NDIxDQo+ID4gPiBDYzogbGlu
dXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7IFdhbmcgRG9uZ3NoZW5nLUI0MDUzNA0KPiA+ID4g
U3ViamVjdDogUkU6IFtQQVRDSCB2NCA0LzRdIHBvd2VycGMvODV4eDogYWRkIHN5c2ZzIGZvciBw
dzIwIHN0YXRlDQo+ID4gPiBhbmQgYWx0aXZlYyBpZGxlDQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+
ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IExpbnV4cHBj
LWRldiBbbWFpbHRvOmxpbnV4cHBjLWRldi0NCj4gPiA+ID4gYm91bmNlcytiaGFyYXQuYmh1c2hh
bj1mcmVlc2NhbGUuY29tQGxpc3RzLm96bGFicy5vcmddIE9uIEJlaGFsZg0KPiA+ID4gPiBib3Vu
Y2VzK09mIERvbmdzaGVuZw0KPiA+ID4gPiBXYW5nDQo+ID4gPiA+IFNlbnQ6IFR1ZXNkYXksIFNl
cHRlbWJlciAyNCwgMjAxMyAyOjU5IFBNDQo+ID4gPiA+IFRvOiBXb29kIFNjb3R0LUIwNzQyMQ0K
PiA+ID4gPiBDYzogbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7IFdhbmcgRG9uZ3NoZW5n
LUI0MDUzNA0KPiA+ID4gPiBTdWJqZWN0OiBbUEFUQ0ggdjQgNC80XSBwb3dlcnBjLzg1eHg6IGFk
ZCBzeXNmcyBmb3IgcHcyMCBzdGF0ZSBhbmQNCj4gPiA+ID4gYWx0aXZlYyBpZGxlDQo+ID4gPiA+
DQo+ID4gPiA+IEZyb206IFdhbmcgRG9uZ3NoZW5nIDxkb25nc2hlbmcud2FuZ0BmcmVlc2NhbGUu
Y29tPg0KPiA+ID4gPg0KPiA+ID4gPiBBZGQgYSBzeXMgaW50ZXJmYWNlIHRvIGVuYWJsZS9kaWFi
bGUgcHcyMCBzdGF0ZSBvciBhbHRpdmVjIGlkbGUsDQo+ID4gPiA+IGFuZCBjb250cm9sIHRoZSB3
YWl0IGVudHJ5IHRpbWUuDQo+ID4gPiA+DQo+ID4gPiA+IEVuYWJsZS9EaXNhYmxlIGludGVyZmFj
ZToNCj4gPiA+ID4gMCwgZGlzYWJsZS4gMSwgZW5hYmxlLg0KPiA+ID4gPiAvc3lzL2RldmljZXMv
c3lzdGVtL2NwdS9jcHVYL3B3MjBfc3RhdGUNCj4gPiA+ID4gL3N5cy9kZXZpY2VzL3N5c3RlbS9j
cHUvY3B1WC9hbHRpdmVjX2lkbGUNCj4gPiA+ID4NCj4gPiA+ID4gU2V0IHdhaXQgdGltZSBpbnRl
cmZhY2U6KE5hbm9zZWNvbmQpDQo+ID4gPiA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdVgv
cHcyMF93YWl0X3RpbWUNCj4gPiA+ID4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC9hbHRp
dmVjX2lkbGVfd2FpdF90aW1lDQo+ID4gPiA+IEV4YW1wbGU6IEJhc2Ugb24gVEJmcmVxIGlzIDQx
TUhaLg0KPiA+ID4gPiAxfjQ3KG5zKTogVEJbNjNdDQo+ID4gPiA+IDQ4fjk1KG5zKTogVEJbNjJd
DQo+ID4gPiA+IDk2fjE5MShucyk6IFRCWzYxXQ0KPiA+ID4gPiAxOTJ+MzgzKG5zKTogVEJbNjJd
DQo+ID4gPiA+IDM4NH43NjcobnMpOiBUQls2MF0NCj4gPiA+ID4gLi4uDQo+ID4gPiA+DQo+ID4g
PiA+IFNpZ25lZC1vZmYtYnk6IFdhbmcgRG9uZ3NoZW5nIDxkb25nc2hlbmcud2FuZ0BmcmVlc2Nh
bGUuY29tPg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4gKnY0Og0KPiA+ID4gPiBNb3ZlIGNvZGUgZnJv
bSA4NXh4L2NvbW1vbi5jIHRvIGtlcm5lbC9zeXNmcy5jLg0KPiA+ID4gPg0KPiA+ID4gPiBSZW1v
dmUgaGFzX3B3MjBfYWx0aXZlY19pZGxlIGZ1bmN0aW9uLg0KPiA+ID4gPg0KPiA+ID4gPiBDaGFu
Z2Ugd2FpdCAiZW50cnlfYml0IiB0byB3YWl0IHRpbWUuDQo+ID4gPiA+DQo+ID4gPiA+ICBhcmNo
L3Bvd2VycGMva2VybmVsL3N5c2ZzLmMgfCAyOTENCj4gPiA+ID4gKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAyOTEg
aW5zZXJ0aW9ucygrKQ0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBj
L2tlcm5lbC9zeXNmcy5jDQo+ID4gPiA+IGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNmcy5jIGlu
ZGV4IDI3YTkwYjkuLjIzZmVjZTYgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2FyY2gvcG93ZXJwYy9r
ZXJuZWwvc3lzZnMuYw0KPiA+ID4gPiArKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3N5c2ZzLmMN
Cj4gPiA+ID4gQEAgLTg1LDYgKzg1LDI3OSBAQCBfX3NldHVwKCJzbXQtc25vb3plLWRlbGF5PSIs
DQo+ID4gPiA+IHNldHVwX3NtdF9zbm9vemVfZGVsYXkpOw0KPiA+ID4gPg0KPiA+ID4gPiAgI2Vu
ZGlmIC8qIENPTkZJR19QUEM2NCAqLw0KPiA+ID4gPg0KPiA+ID4gPiArI2lmZGVmIENPTkZJR19G
U0xfU09DDQo+ID4gPiA+ICsjZGVmaW5lIE1BWF9CSVQJCTYzDQo+ID4gPiA+ICsNCj4gPiA+ID4g
K3N0YXRpYyB1NjQgcHcyMF93dDsNCj4gPiA+ID4gK3N0YXRpYyB1NjQgYWx0aXZlY19pZGxlX3d0
Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgdW5zaWduZWQgaW50IGdldF9pZGxlX3RpY2tz
X2JpdCh1NjQgbnMpIHsNCj4gPiA+ID4gKwl1NjQgY3ljbGU7DQo+ID4gPiA+ICsNCj4gPiA+ID4g
KwljeWNsZSA9IGRpdl91NjQobnMsIDEwMDAgLyB0Yl90aWNrc19wZXJfdXNlYyk7DQo+ID4gPg0K
PiA+ID4gV2hlbiB0Yl90aWNrc19wZXJfdXNlYyAgPiAxMDAwICh0aW1lYmFzZSBmcmVxdWVuY3kg
PiAxR0h6KSB0aGVuIHRoaXMNCj4gPiA+IHdpbGwgYWx3YXlzIGJlIG5zLCB3aGljaCBpcyBub3Qg
Y29ycmVjdCwgbm8/DQo+IA0KPiBBY3R1YWxseSBpdCdsbCBiZSBhIGRpdmlkZSBieSB6ZXJvIGlu
IHRoYXQgY2FzZS4NCj4gDQp0Yl90aWNrc19wZXJfdXNlYyA9IHBwY190Yl9mcmVxIC8gMTAwMDAw
MDsgTWVhbnMgVEIgZnJlcSBzaG91bGQgYmUgbW9yZSB0aGFuIDFNSFouDQoNCmlmIHBwY190Yl9m
cmVxIGxlc3MgdGhhbiAxMDAwMDAwLCB0aGUgdGJfdGlja3NfcGVyX3VzZWMgd2lsbCBiZSBhIGRp
dmlkZSBieSB6ZXJvLg0KSWYgdGhpcyBjb25kaXRpb24gaXMgZXN0YWJsaXNoZWQsIEkgdGhpbmsg
a2VybmVsIGNhbm5vdCB3b3JrIGFzIGEgbm9ybWFsLg0KDQpTbyBJIHRoaW5rIHdlIG5lZWQgdG8g
YmVsaWV2ZSB0aGF0IHRoZSB2YXJpYWJsZSBpcyBub3QgemVyby4gQW5kIEkgdGhpbmsgVEIgZnJl
cSBzaG91bGQgbm90IGxlc3MgdGhhbiAxTUhaIG9uIFBQQyBwbGF0Zm9ybSwgYmVjYXVzZSBpZiBU
QiBmcmVxIGxlc3MgdGhhbiAxTUhaLCB0aGUgcHJlY2lzaW9uIHRpbWUgd2lsbCBiZWNvbWUgdmVy
eSBwb29yIGFuZCBzeXN0ZW0gcmVzcG9uc2UgdGltZSB3aWxsIGJlIHNsb3dlci4NCg0KPiA+ICIx
MDAwIC8gdGJfdGlja3NfcGVyX3VzZWMiIG1lYW5zIG5zZWNfdGlja3NfcGVyX3RiDQo+ID4NCj4g
PiBJZiB0aW1lYmFzZSBmcmVxdWVuY3kgPiAxR0h6LCB0aGlzIHNob3VsZCBiZSAidGJfdGlja3Nf
cGVyX3VzZWMgLyAxMDAwIg0KPiBhbmQgdG8gZ2V0IHRiX3RpY2tzX3Blcl9uc2VjLg0KPiA+IFRo
aXMgc2hvdWxkIGJlIGNoYW5nZWQgdG8gImN5Y2xlID0gbnMgKiB0Yl90aWNrc19wZXJfbnNlYzsi
DQo+ID4NCj4gPiBCdXQgYXQgcHJlc2VudCB3ZSBkbyBub3QgaGF2ZSBzdWNoIGEgcGxhdGZvcm0g
dGhhdCB0aW1lYmFzZSBmcmVxdWVuY3kNCj4gPiBtb3JlIHRoYW4gMUdIei4gQW5kIEkgdGhpbmsg
aXQgaXMgbm90IG5lZWQgdG8gc3VwcG9ydCBzdWNoIGEgc2l0dWF0aW9uLg0KPiA+IEJlY2F1c2Ug
d2UgaGF2ZSBubyBlbnZpcm9ubWVudCB0byB0ZXN0IGl0Lg0KPiANCj4gWW91IGNhbiB0ZXN0IGl0
IGJ5IGhhY2tpbmcgYSB3cm9uZyB0aW1lYmFzZSBmcmVxdWVuY3kgaW4gYW5kIHNlZWluZyB3aGF0
DQo+IHRoZSBjYWxjdWxhdGlvbiBkb2VzLg0KPiANCj4gT3IgZG8gc29tZXRoaW5nIGxpa2UgdGhp
czoNCj4gDQo+IAlpZiAobnMgPj0gMTAwMDApDQo+IAkJY3ljbGUgPSAoKG5zICsgNTAwKSAvIDEw
MDApICogdGJfdGlja3NfcGVyX3VzZWM7DQo+IAllbHNlDQo+IAkJY3ljbGUgPSBkaXZfdTY0KCh1
NjQpbnMgKiB0Yl90aWNrc19wZXJfdXNlYywgMTAwMCk7DQo+IA0KV2UgY2Fubm90IGRvIHRoaXMs
IGJlY2F1c2UgaWYgKG5zKzUwMCkgPCAxMDAwLCB3ZSBjYW5ub3QgZ2V0IHRoZSBlbnRyeSBiaXQs
IGl0J2xsIGFsd2F5cyB6ZXJvIGJpdC4NCg0KV2UgbXVzdCB0byB1c2UgcGVyX25zZWNfdGJfdGlj
a3MsIGxpa2UgbXkgY29kZSAxMDAwIC8gdGJfdGlja3NfcGVyX3VzZWMuDQoNCj4gLi4ud2hpY2gg
Y2FuIGJlIHRlc3RlZCBqdXN0IGJ5IHZhcnlpbmcgbnMuDQo+IA0KPiA+IElmIGxhdGVyIHRoZXJl
IHdpbGwgYmUgbW9yZSB0aGFuIDFHSFogcGxhdGZvcm0gYXQgdGhhdCB0aW1lIHRvIGFkZCB0aGlz
DQo+IHN1cHBvcnQuDQo+IA0KWWVzLCBJIGFncmVlIHRoaXMgcG9pbnQuIDopDQoNCi1kb25nc2hl
bmcNCg0KPiBUaGVyZSBhbG1vc3QgY2VydGFpbmx5IHdvbid0IGJlIHRpbWViYXNlcyB0aGF0IHJ1
biB0aGF0IGZhc3QsIGJ1dCBkaXZpZGUNCj4gYnkgemVybyBpcyBhIHJhdGhlciBuYXN0eSB3YXkg
b2YgcmVzcG9uZGluZyBpZiBzdWNoIGEgdGhpbmcgZG9lcyBoYXBwZW4uDQo+IA0KPiAtU2NvdHQN
Cj4gDQoNCg==

^ permalink raw reply	[flat|nested] 18+ messages in thread

* RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-09-26  2:32         ` Wang Dongsheng-B40534
@ 2013-09-26  4:23           ` Bhushan Bharat-R65777
  2013-09-26  6:18             ` Wang Dongsheng-B40534
  0 siblings, 1 reply; 18+ messages in thread
From: Bhushan Bharat-R65777 @ 2013-09-26  4:23 UTC (permalink / raw)
  To: Wang Dongsheng-B40534, Wood Scott-B07421; +Cc: linuxppc-dev

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV2FuZyBEb25nc2hlbmct
QjQwNTM0DQo+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMjYsIDIwMTMgODowMiBBTQ0KPiBU
bzogV29vZCBTY290dC1CMDc0MjENCj4gQ2M6IEJodXNoYW4gQmhhcmF0LVI2NTc3NzsgbGludXhw
cGMtZGV2QGxpc3RzLm96bGFicy5vcmcNCj4gU3ViamVjdDogUkU6IFtQQVRDSCB2NCA0LzRdIHBv
d2VycGMvODV4eDogYWRkIHN5c2ZzIGZvciBwdzIwIHN0YXRlIGFuZCBhbHRpdmVjDQo+IGlkbGUN
Cj4gDQo+IA0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFdv
b2QgU2NvdHQtQjA3NDIxDQo+ID4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyNiwgMjAxMyAx
OjU3IEFNDQo+ID4gVG86IFdhbmcgRG9uZ3NoZW5nLUI0MDUzNA0KPiA+IENjOiBCaHVzaGFuIEJo
YXJhdC1SNjU3Nzc7IFdvb2QgU2NvdHQtQjA3NDIxOyBsaW51eHBwYy0NCj4gPiBkZXZAbGlzdHMu
b3psYWJzLm9yZw0KPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjQgNC80XSBwb3dlcnBjLzg1eHg6
IGFkZCBzeXNmcyBmb3IgcHcyMCBzdGF0ZSBhbmQNCj4gPiBhbHRpdmVjIGlkbGUNCj4gPg0KPiA+
IE9uIFdlZCwgMjAxMy0wOS0yNSBhdCAwMzoxMCAtMDUwMCwgV2FuZyBEb25nc2hlbmctQjQwNTM0
IHdyb3RlOg0KPiA+ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+
ID4gRnJvbTogQmh1c2hhbiBCaGFyYXQtUjY1Nzc3DQo+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwg
U2VwdGVtYmVyIDI1LCAyMDEzIDI6MjMgUE0NCj4gPiA+ID4gVG86IFdhbmcgRG9uZ3NoZW5nLUI0
MDUzNDsgV29vZCBTY290dC1CMDc0MjENCj4gPiA+ID4gQ2M6IGxpbnV4cHBjLWRldkBsaXN0cy5v
emxhYnMub3JnOyBXYW5nIERvbmdzaGVuZy1CNDA1MzQNCj4gPiA+ID4gU3ViamVjdDogUkU6IFtQ
QVRDSCB2NCA0LzRdIHBvd2VycGMvODV4eDogYWRkIHN5c2ZzIGZvciBwdzIwIHN0YXRlDQo+ID4g
PiA+IGFuZCBhbHRpdmVjIGlkbGUNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4g
PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206IExpbnV4cHBjLWRl
diBbbWFpbHRvOmxpbnV4cHBjLWRldi0NCj4gPiA+ID4gPiBib3VuY2VzK2JoYXJhdC5iaHVzaGFu
PWZyZWVzY2FsZS5jb21AbGlzdHMub3psYWJzLm9yZ10gT24gQmVoYWxmDQo+ID4gPiA+ID4gYm91
bmNlcytPZiBEb25nc2hlbmcNCj4gPiA+ID4gPiBXYW5nDQo+ID4gPiA+ID4gU2VudDogVHVlc2Rh
eSwgU2VwdGVtYmVyIDI0LCAyMDEzIDI6NTkgUE0NCj4gPiA+ID4gPiBUbzogV29vZCBTY290dC1C
MDc0MjENCj4gPiA+ID4gPiBDYzogbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7IFdhbmcg
RG9uZ3NoZW5nLUI0MDUzNA0KPiA+ID4gPiA+IFN1YmplY3Q6IFtQQVRDSCB2NCA0LzRdIHBvd2Vy
cGMvODV4eDogYWRkIHN5c2ZzIGZvciBwdzIwIHN0YXRlDQo+ID4gPiA+ID4gYW5kIGFsdGl2ZWMg
aWRsZQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gRnJvbTogV2FuZyBEb25nc2hlbmcgPGRvbmdzaGVu
Zy53YW5nQGZyZWVzY2FsZS5jb20+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBBZGQgYSBzeXMgaW50
ZXJmYWNlIHRvIGVuYWJsZS9kaWFibGUgcHcyMCBzdGF0ZSBvciBhbHRpdmVjIGlkbGUsDQo+ID4g
PiA+ID4gYW5kIGNvbnRyb2wgdGhlIHdhaXQgZW50cnkgdGltZS4NCj4gPiA+ID4gPg0KPiA+ID4g
PiA+IEVuYWJsZS9EaXNhYmxlIGludGVyZmFjZToNCj4gPiA+ID4gPiAwLCBkaXNhYmxlLiAxLCBl
bmFibGUuDQo+ID4gPiA+ID4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC9wdzIwX3N0YXRl
DQo+ID4gPiA+ID4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC9hbHRpdmVjX2lkbGUNCj4g
PiA+ID4gPg0KPiA+ID4gPiA+IFNldCB3YWl0IHRpbWUgaW50ZXJmYWNlOihOYW5vc2Vjb25kKQ0K
PiA+ID4gPiA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdVgvcHcyMF93YWl0X3RpbWUNCj4g
PiA+ID4gPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVYL2FsdGl2ZWNfaWRsZV93YWl0X3Rp
bWUNCj4gPiA+ID4gPiBFeGFtcGxlOiBCYXNlIG9uIFRCZnJlcSBpcyA0MU1IWi4NCj4gPiA+ID4g
PiAxfjQ3KG5zKTogVEJbNjNdDQo+ID4gPiA+ID4gNDh+OTUobnMpOiBUQls2Ml0NCj4gPiA+ID4g
PiA5Nn4xOTEobnMpOiBUQls2MV0NCj4gPiA+ID4gPiAxOTJ+MzgzKG5zKTogVEJbNjJdDQo+ID4g
PiA+ID4gMzg0fjc2Nyhucyk6IFRCWzYwXQ0KPiA+ID4gPiA+IC4uLg0KPiA+ID4gPiA+DQo+ID4g
PiA+ID4gU2lnbmVkLW9mZi1ieTogV2FuZyBEb25nc2hlbmcgPGRvbmdzaGVuZy53YW5nQGZyZWVz
Y2FsZS5jb20+DQo+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ID4gKnY0Og0KPiA+ID4gPiA+IE1vdmUg
Y29kZSBmcm9tIDg1eHgvY29tbW9uLmMgdG8ga2VybmVsL3N5c2ZzLmMuDQo+ID4gPiA+ID4NCj4g
PiA+ID4gPiBSZW1vdmUgaGFzX3B3MjBfYWx0aXZlY19pZGxlIGZ1bmN0aW9uLg0KPiA+ID4gPiA+
DQo+ID4gPiA+ID4gQ2hhbmdlIHdhaXQgImVudHJ5X2JpdCIgdG8gd2FpdCB0aW1lLg0KPiA+ID4g
PiA+DQo+ID4gPiA+ID4gIGFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzZnMuYyB8IDI5MQ0KPiA+ID4g
PiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gPiA+
ID4gIDEgZmlsZSBjaGFuZ2VkLCAyOTEgaW5zZXJ0aW9ucygrKQ0KPiA+ID4gPiA+DQo+ID4gPiA+
ID4gZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvc3lzZnMuYw0KPiA+ID4gPiA+IGIv
YXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNmcy5jIGluZGV4IDI3YTkwYjkuLjIzZmVjZTYgMTAwNjQ0
DQo+ID4gPiA+ID4gLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNmcy5jDQo+ID4gPiA+ID4g
KysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNmcy5jDQo+ID4gPiA+ID4gQEAgLTg1LDYgKzg1
LDI3OSBAQCBfX3NldHVwKCJzbXQtc25vb3plLWRlbGF5PSIsDQo+ID4gPiA+ID4gc2V0dXBfc210
X3Nub296ZV9kZWxheSk7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgI2VuZGlmIC8qIENPTkZJR19Q
UEM2NCAqLw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gKyNpZmRlZiBDT05GSUdfRlNMX1NPQw0KPiA+
ID4gPiA+ICsjZGVmaW5lIE1BWF9CSVQJCTYzDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICtzdGF0
aWMgdTY0IHB3MjBfd3Q7DQo+ID4gPiA+ID4gK3N0YXRpYyB1NjQgYWx0aXZlY19pZGxlX3d0Ow0K
PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArc3RhdGljIHVuc2lnbmVkIGludCBnZXRfaWRsZV90aWNr
c19iaXQodTY0IG5zKSB7DQo+ID4gPiA+ID4gKwl1NjQgY3ljbGU7DQo+ID4gPiA+ID4gKw0KPiA+
ID4gPiA+ICsJY3ljbGUgPSBkaXZfdTY0KG5zLCAxMDAwIC8gdGJfdGlja3NfcGVyX3VzZWMpOw0K
PiA+ID4gPg0KPiA+ID4gPiBXaGVuIHRiX3RpY2tzX3Blcl91c2VjICA+IDEwMDAgKHRpbWViYXNl
IGZyZXF1ZW5jeSA+IDFHSHopIHRoZW4NCj4gPiA+ID4gdGhpcyB3aWxsIGFsd2F5cyBiZSBucywg
d2hpY2ggaXMgbm90IGNvcnJlY3QsIG5vPw0KPiA+DQo+ID4gQWN0dWFsbHkgaXQnbGwgYmUgYSBk
aXZpZGUgYnkgemVybyBpbiB0aGF0IGNhc2UuDQo+ID4NCj4gdGJfdGlja3NfcGVyX3VzZWMgPSBw
cGNfdGJfZnJlcSAvIDEwMDAwMDA7IE1lYW5zIFRCIGZyZXEgc2hvdWxkIGJlIG1vcmUgdGhhbg0K
PiAxTUhaLg0KPiANCj4gaWYgcHBjX3RiX2ZyZXEgbGVzcyB0aGFuIDEwMDAwMDAsIHRoZSB0Yl90
aWNrc19wZXJfdXNlYyB3aWxsIGJlIGEgZGl2aWRlIGJ5DQo+IHplcm8uDQo+IElmIHRoaXMgY29u
ZGl0aW9uIGlzIGVzdGFibGlzaGVkLCBJIHRoaW5rIGtlcm5lbCBjYW5ub3Qgd29yayBhcyBhIG5v
cm1hbC4NCj4gDQo+IFNvIEkgdGhpbmsgd2UgbmVlZCB0byBiZWxpZXZlIHRoYXQgdGhlIHZhcmlh
YmxlIGlzIG5vdCB6ZXJvLg0KDQpXZSBkbyBiZWxpZXZlIGl0IGlzIG5vbi16ZXJvIGJ1dCBncmVh
dGVyIHRoYW4gMTAwMCA6KQ0KDQo+IEFuZCBJIHRoaW5rIFRCIGZyZXENCj4gc2hvdWxkIG5vdCBs
ZXNzIHRoYW4gMU1IWiBvbiBQUEMgcGxhdGZvcm0sIGJlY2F1c2UgaWYgVEIgZnJlcSBsZXNzIHRo
YW4gMU1IWiwNCj4gdGhlIHByZWNpc2lvbiB0aW1lIHdpbGwgYmVjb21lIHZlcnkgcG9vciBhbmQg
c3lzdGVtIHJlc3BvbnNlIHRpbWUgd2lsbCBiZQ0KPiBzbG93ZXIuDQoNCk5vdCBzdXJlIHdoYXQg
eW91IGFyZSBkZXNjcmliaW5nIGhlcmUgcmVsYXRlZCB0byBkaXZpZGUgYnkgemVybyB3ZSBhcmUg
bWVudGlvbmluZy4NCllvdSBhcmUgdGFsa2luZyBhYm91dCBpZiB0Yl90aWNrc19wZXJfdXNlYyBp
cyBaRVJPIGFuZCB3ZSBhcmUgdGFsa2luZyBhYm91dCBpZiAoMTAwMC90Yl90aWNrc19wZXJfdXNl
Yykgd2lsbCBiZSB6ZXJvLg0KDQpCVFcsIGRpdl91NjQoKSBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUg
ZGl2aWRlciBpcyB6ZXJvLg0KDQo+IA0KPiA+ID4gIjEwMDAgLyB0Yl90aWNrc19wZXJfdXNlYyIg
bWVhbnMgbnNlY190aWNrc19wZXJfdGINCj4gPiA+DQo+ID4gPiBJZiB0aW1lYmFzZSBmcmVxdWVu
Y3kgPiAxR0h6LCB0aGlzIHNob3VsZCBiZSAidGJfdGlja3NfcGVyX3VzZWMgLyAxMDAwIg0KPiA+
IGFuZCB0byBnZXQgdGJfdGlja3NfcGVyX25zZWMuDQo+ID4gPiBUaGlzIHNob3VsZCBiZSBjaGFu
Z2VkIHRvICJjeWNsZSA9IG5zICogdGJfdGlja3NfcGVyX25zZWM7Ig0KPiA+ID4NCj4gPiA+IEJ1
dCBhdCBwcmVzZW50IHdlIGRvIG5vdCBoYXZlIHN1Y2ggYSBwbGF0Zm9ybSB0aGF0IHRpbWViYXNl
DQo+ID4gPiBmcmVxdWVuY3kgbW9yZSB0aGFuIDFHSHouIEFuZCBJIHRoaW5rIGl0IGlzIG5vdCBu
ZWVkIHRvIHN1cHBvcnQgc3VjaCBhDQo+IHNpdHVhdGlvbi4NCj4gPiA+IEJlY2F1c2Ugd2UgaGF2
ZSBubyBlbnZpcm9ubWVudCB0byB0ZXN0IGl0Lg0KPiA+DQo+ID4gWW91IGNhbiB0ZXN0IGl0IGJ5
IGhhY2tpbmcgYSB3cm9uZyB0aW1lYmFzZSBmcmVxdWVuY3kgaW4gYW5kIHNlZWluZw0KPiA+IHdo
YXQgdGhlIGNhbGN1bGF0aW9uIGRvZXMuDQo+ID4NCj4gPiBPciBkbyBzb21ldGhpbmcgbGlrZSB0
aGlzOg0KPiA+DQo+ID4gCWlmIChucyA+PSAxMDAwMCkNCgleXl4NCg0KPiA+IAkJY3ljbGUgPSAo
KG5zICsgNTAwKSAvIDEwMDApICogdGJfdGlja3NfcGVyX3VzZWM7DQo+ID4gCWVsc2UNCj4gPiAJ
CWN5Y2xlID0gZGl2X3U2NCgodTY0KW5zICogdGJfdGlja3NfcGVyX3VzZWMsIDEwMDApOw0KPiA+
DQo+IFdlIGNhbm5vdCBkbyB0aGlzLCBiZWNhdXNlIGlmIChucys1MDApIDwgMTAwMCwgd2UgY2Fu
bm90IGdldCB0aGUgZW50cnkgYml0LA0KPiBpdCdsbCBhbHdheXMgemVybyBiaXQuDQoNClRoZXJl
IGlzIGEgaWYgY29uZGl0aW9uIG9mIG5zID49IDEwMDAwLCBzbyBucys1MDAgY2FuIG5vdCBiZSBs
ZXNzIHRoYW4gMTAwMC4NCg0KPiANCj4gV2UgbXVzdCB0byB1c2UgcGVyX25zZWNfdGJfdGlja3Ms
IGxpa2UgbXkgY29kZSAxMDAwIC8gdGJfdGlja3NfcGVyX3VzZWMuDQo+IA0KPiA+IC4uLndoaWNo
IGNhbiBiZSB0ZXN0ZWQganVzdCBieSB2YXJ5aW5nIG5zLg0KPiA+DQo+ID4gPiBJZiBsYXRlciB0
aGVyZSB3aWxsIGJlIG1vcmUgdGhhbiAxR0haIHBsYXRmb3JtIGF0IHRoYXQgdGltZSB0byBhZGQN
Cj4gPiA+IHRoaXMNCj4gPiBzdXBwb3J0Lg0KPiA+DQo+IFllcywgSSBhZ3JlZSB0aGlzIHBvaW50
LiA6KQ0KDQpPbmUgc2hvdWxkIGFncmVlIHdpdGggaGltc2VsZiA6KQ0KDQotQmhhcmF0DQoNCj4g
DQo+IC1kb25nc2hlbmcNCj4gDQo+ID4gVGhlcmUgYWxtb3N0IGNlcnRhaW5seSB3b24ndCBiZSB0
aW1lYmFzZXMgdGhhdCBydW4gdGhhdCBmYXN0LCBidXQNCj4gPiBkaXZpZGUgYnkgemVybyBpcyBh
IHJhdGhlciBuYXN0eSB3YXkgb2YgcmVzcG9uZGluZyBpZiBzdWNoIGEgdGhpbmcgZG9lcw0KPiBo
YXBwZW4uDQo+ID4NCj4gPiAtU2NvdHQNCj4gPg0KDQo=

^ permalink raw reply	[flat|nested] 18+ messages in thread

* RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-09-26  4:23           ` Bhushan Bharat-R65777
@ 2013-09-26  6:18             ` Wang Dongsheng-B40534
  2013-09-26 21:37               ` Scott Wood
  0 siblings, 1 reply; 18+ messages in thread
From: Wang Dongsheng-B40534 @ 2013-09-26  6:18 UTC (permalink / raw)
  To: Bhushan Bharat-R65777, Wood Scott-B07421; +Cc: linuxppc-dev

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQmh1c2hhbiBCaGFyYXQt
UjY1Nzc3DQo+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMjYsIDIwMTMgMTI6MjMgUE0NCj4g
VG86IFdhbmcgRG9uZ3NoZW5nLUI0MDUzNDsgV29vZCBTY290dC1CMDc0MjENCj4gQ2M6IGxpbnV4
cHBjLWRldkBsaXN0cy5vemxhYnMub3JnDQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjQgNC80XSBw
b3dlcnBjLzg1eHg6IGFkZCBzeXNmcyBmb3IgcHcyMCBzdGF0ZSBhbmQNCj4gYWx0aXZlYyBpZGxl
DQo+IA0KPiANCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBX
YW5nIERvbmdzaGVuZy1CNDA1MzQNCj4gPiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDI2LCAy
MDEzIDg6MDIgQU0NCj4gPiBUbzogV29vZCBTY290dC1CMDc0MjENCj4gPiBDYzogQmh1c2hhbiBC
aGFyYXQtUjY1Nzc3OyBsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZw0KPiA+IFN1YmplY3Q6
IFJFOiBbUEFUQ0ggdjQgNC80XSBwb3dlcnBjLzg1eHg6IGFkZCBzeXNmcyBmb3IgcHcyMCBzdGF0
ZSBhbmQNCj4gPiBhbHRpdmVjIGlkbGUNCj4gPg0KPiA+DQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2lu
YWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBXb29kIFNjb3R0LUIwNzQyMQ0KPiA+ID4gU2Vu
dDogVGh1cnNkYXksIFNlcHRlbWJlciAyNiwgMjAxMyAxOjU3IEFNDQo+ID4gPiBUbzogV2FuZyBE
b25nc2hlbmctQjQwNTM0DQo+ID4gPiBDYzogQmh1c2hhbiBCaGFyYXQtUjY1Nzc3OyBXb29kIFNj
b3R0LUIwNzQyMTsgbGludXhwcGMtDQo+ID4gPiBkZXZAbGlzdHMub3psYWJzLm9yZw0KPiA+ID4g
U3ViamVjdDogUmU6IFtQQVRDSCB2NCA0LzRdIHBvd2VycGMvODV4eDogYWRkIHN5c2ZzIGZvciBw
dzIwIHN0YXRlDQo+ID4gPiBhbmQgYWx0aXZlYyBpZGxlDQo+ID4gPg0KPiA+ID4gT24gV2VkLCAy
MDEzLTA5LTI1IGF0IDAzOjEwIC0wNTAwLCBXYW5nIERvbmdzaGVuZy1CNDA1MzQgd3JvdGU6DQo+
ID4gPiA+DQo+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiBG
cm9tOiBCaHVzaGFuIEJoYXJhdC1SNjU3NzcNCj4gPiA+ID4gPiBTZW50OiBXZWRuZXNkYXksIFNl
cHRlbWJlciAyNSwgMjAxMyAyOjIzIFBNDQo+ID4gPiA+ID4gVG86IFdhbmcgRG9uZ3NoZW5nLUI0
MDUzNDsgV29vZCBTY290dC1CMDc0MjENCj4gPiA+ID4gPiBDYzogbGludXhwcGMtZGV2QGxpc3Rz
Lm96bGFicy5vcmc7IFdhbmcgRG9uZ3NoZW5nLUI0MDUzNA0KPiA+ID4gPiA+IFN1YmplY3Q6IFJF
OiBbUEFUQ0ggdjQgNC80XSBwb3dlcnBjLzg1eHg6IGFkZCBzeXNmcyBmb3IgcHcyMA0KPiA+ID4g
PiA+IHN0YXRlIGFuZCBhbHRpdmVjIGlkbGUNCj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+
ID4NCj4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiBG
cm9tOiBMaW51eHBwYy1kZXYgW21haWx0bzpsaW51eHBwYy1kZXYtDQo+ID4gPiA+ID4gPiBib3Vu
Y2VzK2JoYXJhdC5iaHVzaGFuPWZyZWVzY2FsZS5jb21AbGlzdHMub3psYWJzLm9yZ10gT24NCj4g
PiA+ID4gPiA+IGJvdW5jZXMrQmVoYWxmIE9mIERvbmdzaGVuZw0KPiA+ID4gPiA+ID4gV2FuZw0K
PiA+ID4gPiA+ID4gU2VudDogVHVlc2RheSwgU2VwdGVtYmVyIDI0LCAyMDEzIDI6NTkgUE0NCj4g
PiA+ID4gPiA+IFRvOiBXb29kIFNjb3R0LUIwNzQyMQ0KPiA+ID4gPiA+ID4gQ2M6IGxpbnV4cHBj
LWRldkBsaXN0cy5vemxhYnMub3JnOyBXYW5nIERvbmdzaGVuZy1CNDA1MzQNCj4gPiA+ID4gPiA+
IFN1YmplY3Q6IFtQQVRDSCB2NCA0LzRdIHBvd2VycGMvODV4eDogYWRkIHN5c2ZzIGZvciBwdzIw
IHN0YXRlDQo+ID4gPiA+ID4gPiBhbmQgYWx0aXZlYyBpZGxlDQo+ID4gPiA+ID4gPg0KPiA+ID4g
PiA+ID4gRnJvbTogV2FuZyBEb25nc2hlbmcgPGRvbmdzaGVuZy53YW5nQGZyZWVzY2FsZS5jb20+
DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gQWRkIGEgc3lzIGludGVyZmFjZSB0byBlbmFibGUv
ZGlhYmxlIHB3MjAgc3RhdGUgb3IgYWx0aXZlYw0KPiA+ID4gPiA+ID4gaWRsZSwgYW5kIGNvbnRy
b2wgdGhlIHdhaXQgZW50cnkgdGltZS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBFbmFibGUv
RGlzYWJsZSBpbnRlcmZhY2U6DQo+ID4gPiA+ID4gPiAwLCBkaXNhYmxlLiAxLCBlbmFibGUuDQo+
ID4gPiA+ID4gPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVYL3B3MjBfc3RhdGUNCj4gPiA+
ID4gPiA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdVgvYWx0aXZlY19pZGxlDQo+ID4gPiA+
ID4gPg0KPiA+ID4gPiA+ID4gU2V0IHdhaXQgdGltZSBpbnRlcmZhY2U6KE5hbm9zZWNvbmQpDQo+
ID4gPiA+ID4gPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVYL3B3MjBfd2FpdF90aW1lDQo+
ID4gPiA+ID4gPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVYL2FsdGl2ZWNfaWRsZV93YWl0
X3RpbWUNCj4gPiA+ID4gPiA+IEV4YW1wbGU6IEJhc2Ugb24gVEJmcmVxIGlzIDQxTUhaLg0KPiA+
ID4gPiA+ID4gMX40Nyhucyk6IFRCWzYzXQ0KPiA+ID4gPiA+ID4gNDh+OTUobnMpOiBUQls2Ml0N
Cj4gPiA+ID4gPiA+IDk2fjE5MShucyk6IFRCWzYxXQ0KPiA+ID4gPiA+ID4gMTkyfjM4Myhucyk6
IFRCWzYyXQ0KPiA+ID4gPiA+ID4gMzg0fjc2Nyhucyk6IFRCWzYwXQ0KPiA+ID4gPiA+ID4gLi4u
DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogV2FuZyBEb25nc2hlbmcg
PGRvbmdzaGVuZy53YW5nQGZyZWVzY2FsZS5jb20+DQo+ID4gPiA+ID4gPiAtLS0NCj4gPiA+ID4g
PiA+ICp2NDoNCj4gPiA+ID4gPiA+IE1vdmUgY29kZSBmcm9tIDg1eHgvY29tbW9uLmMgdG8ga2Vy
bmVsL3N5c2ZzLmMuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gUmVtb3ZlIGhhc19wdzIwX2Fs
dGl2ZWNfaWRsZSBmdW5jdGlvbi4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBDaGFuZ2Ugd2Fp
dCAiZW50cnlfYml0IiB0byB3YWl0IHRpbWUuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gIGFy
Y2gvcG93ZXJwYy9rZXJuZWwvc3lzZnMuYyB8IDI5MQ0KPiA+ID4gPiA+ID4gKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiA+ID4gPiA+ICAxIGZpbGUgY2hh
bmdlZCwgMjkxIGluc2VydGlvbnMoKykNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBkaWZmIC0t
Z2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNmcy5jDQo+ID4gPiA+ID4gPiBiL2FyY2gvcG93
ZXJwYy9rZXJuZWwvc3lzZnMuYyBpbmRleCAyN2E5MGI5Li4yM2ZlY2U2IDEwMDY0NA0KPiA+ID4g
PiA+ID4gLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNmcy5jDQo+ID4gPiA+ID4gPiArKysg
Yi9hcmNoL3Bvd2VycGMva2VybmVsL3N5c2ZzLmMNCj4gPiA+ID4gPiA+IEBAIC04NSw2ICs4NSwy
NzkgQEAgX19zZXR1cCgic210LXNub296ZS1kZWxheT0iLA0KPiA+ID4gPiA+ID4gc2V0dXBfc210
X3Nub296ZV9kZWxheSk7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICNlbmRpZiAvKiBDT05G
SUdfUFBDNjQgKi8NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiArI2lmZGVmIENPTkZJR19GU0xf
U09DDQo+ID4gPiA+ID4gPiArI2RlZmluZSBNQVhfQklUCQk2Mw0KPiA+ID4gPiA+ID4gKw0KPiA+
ID4gPiA+ID4gK3N0YXRpYyB1NjQgcHcyMF93dDsNCj4gPiA+ID4gPiA+ICtzdGF0aWMgdTY0IGFs
dGl2ZWNfaWRsZV93dDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtzdGF0aWMgdW5zaWdu
ZWQgaW50IGdldF9pZGxlX3RpY2tzX2JpdCh1NjQgbnMpIHsNCj4gPiA+ID4gPiA+ICsJdTY0IGN5
Y2xlOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwljeWNsZSA9IGRpdl91NjQobnMsIDEw
MDAgLyB0Yl90aWNrc19wZXJfdXNlYyk7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBXaGVuIHRiX3Rp
Y2tzX3Blcl91c2VjICA+IDEwMDAgKHRpbWViYXNlIGZyZXF1ZW5jeSA+IDFHSHopIHRoZW4NCj4g
PiA+ID4gPiB0aGlzIHdpbGwgYWx3YXlzIGJlIG5zLCB3aGljaCBpcyBub3QgY29ycmVjdCwgbm8/
DQo+ID4gPg0KPiA+ID4gQWN0dWFsbHkgaXQnbGwgYmUgYSBkaXZpZGUgYnkgemVybyBpbiB0aGF0
IGNhc2UuDQo+ID4gPg0KPiA+IHRiX3RpY2tzX3Blcl91c2VjID0gcHBjX3RiX2ZyZXEgLyAxMDAw
MDAwOyBNZWFucyBUQiBmcmVxIHNob3VsZCBiZQ0KPiA+IG1vcmUgdGhhbiAxTUhaLg0KPiA+DQo+
ID4gaWYgcHBjX3RiX2ZyZXEgbGVzcyB0aGFuIDEwMDAwMDAsIHRoZSB0Yl90aWNrc19wZXJfdXNl
YyB3aWxsIGJlIGENCj4gPiBkaXZpZGUgYnkgemVyby4NCj4gPiBJZiB0aGlzIGNvbmRpdGlvbiBp
cyBlc3RhYmxpc2hlZCwgSSB0aGluayBrZXJuZWwgY2Fubm90IHdvcmsgYXMgYQ0KPiBub3JtYWwu
DQo+ID4NCj4gPiBTbyBJIHRoaW5rIHdlIG5lZWQgdG8gYmVsaWV2ZSB0aGF0IHRoZSB2YXJpYWJs
ZSBpcyBub3QgemVyby4NCj4gDQo+IFdlIGRvIGJlbGlldmUgaXQgaXMgbm9uLXplcm8gYnV0IGdy
ZWF0ZXIgdGhhbiAxMDAwIDopDQo+IA0KPiA+IEFuZCBJIHRoaW5rIFRCIGZyZXENCj4gPiBzaG91
bGQgbm90IGxlc3MgdGhhbiAxTUhaIG9uIFBQQyBwbGF0Zm9ybSwgYmVjYXVzZSBpZiBUQiBmcmVx
IGxlc3MNCj4gPiB0aGFuIDFNSFosIHRoZSBwcmVjaXNpb24gdGltZSB3aWxsIGJlY29tZSB2ZXJ5
IHBvb3IgYW5kIHN5c3RlbQ0KPiA+IHJlc3BvbnNlIHRpbWUgd2lsbCBiZSBzbG93ZXIuDQo+IA0K
PiBOb3Qgc3VyZSB3aGF0IHlvdSBhcmUgZGVzY3JpYmluZyBoZXJlIHJlbGF0ZWQgdG8gZGl2aWRl
IGJ5IHplcm8gd2UgYXJlDQo+IG1lbnRpb25pbmcuDQo+IFlvdSBhcmUgdGFsa2luZyBhYm91dCBp
ZiB0Yl90aWNrc19wZXJfdXNlYyBpcyBaRVJPIGFuZCB3ZSBhcmUgdGFsa2luZw0KPiBhYm91dCBp
ZiAoMTAwMC90Yl90aWNrc19wZXJfdXNlYykgd2lsbCBiZSB6ZXJvLg0KPiANCj4gQlRXLCBkaXZf
dTY0KCkgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIGRpdmlkZXIgaXMgemVyby4NCj4gDQpjeWNsZSA9
IGRpdl91NjQobnMsIDEwMDAgLyB0Yl90aWNrc19wZXJfdXNlYyk7DQpGb3IgdGhpcywgSSB0aGlu
ayB3ZSB3ZXJlIGRpc2N1c3NpbmcgdGhlIHR3byBpc3N1ZXM6DQoNCjEuIFNjb3R0IHRhbGtpbmcg
YWJvdXQsIHdoZW4gdGhlIHRiX3RpY2tzX3Blcl91c2VjIGlzIGEgemVyby4NClRoaXMgc2l0dWF0
aW9uIGlzIGFib3V0IHRiX3RpY2tzX3Blcl91c2VjLCBhbmQgcG9zc2libGUgdG8gemVyby4gU28g
SSBhbnN3ZXJlZCBTY290dC4NCklmIEkgbWlzdW5kZXJzdGFuZCBzY290dCwgcGxlYXNlIGlnbm9y
ZSBpdC4gOikNCg0KMi4gWW91IGFyZSB0YWxraW5nIGFib3V0IDEwMDAvdGJfdGlja3NfcGVyX3Vz
ZWMgaXMgYSB6ZXJvLg0KVGhpcyBzaXR1YXRpb24gaXMgYWJvdXQgVEIgZnJlcSA+IDFHSFouDQoN
Ckkgd2lsbCBmaXggdGhpcyBpc3N1ZS4gTGlrZSBJIHNhaWQgYmVmb3JlLA0KIklmIHRpbWViYXNl
IGZyZXF1ZW5jeSA+IDFHSHosIHRoaXMgc2hvdWxkIGJlICJ0Yl90aWNrc19wZXJfdXNlYyAvIDEw
MDAiIGFuZCB0byBnZXQgdGJfdGlja3NfcGVyX25zZWMuDQpUaGlzIHNob3VsZCBiZSBjaGFuZ2Vk
IHRvICJjeWNsZSA9IG5zICogdGJfdGlja3NfcGVyX25zZWM7IiINCg0KI2RlZmluZSBUQl9GUkVR
XzFHSFoJMTAwMA0KDQpJZiAodGJfdGlja3NfcGVyX3VzZWMgPiBUQl9GUkVRXzFHSFopDQoJY3lj
bGUgPSBucyAqICh0Yl90aWNrc19wZXJfdXNlYyAvIDEwMDApOw0KZWxzZQ0KCWN5Y2xlID0gZGl2
X3U2NChucywgMTAwMCAvIHRiX3RpY2tzX3Blcl91c2VjKTsNCg0KaG93IGFib3V0IHRoaXM/IDop
DQoNCj4gPg0KPiA+ID4gPiAiMTAwMCAvIHRiX3RpY2tzX3Blcl91c2VjIiBtZWFucyBuc2VjX3Rp
Y2tzX3Blcl90Yg0KPiA+ID4gPg0KPiA+ID4gPiBJZiB0aW1lYmFzZSBmcmVxdWVuY3kgPiAxR0h6
LCB0aGlzIHNob3VsZCBiZSAidGJfdGlja3NfcGVyX3VzZWMgLw0KPiAxMDAwIg0KPiA+ID4gYW5k
IHRvIGdldCB0Yl90aWNrc19wZXJfbnNlYy4NCj4gPiA+ID4gVGhpcyBzaG91bGQgYmUgY2hhbmdl
ZCB0byAiY3ljbGUgPSBucyAqIHRiX3RpY2tzX3Blcl9uc2VjOyINCj4gPiA+ID4NCj4gPiA+ID4g
QnV0IGF0IHByZXNlbnQgd2UgZG8gbm90IGhhdmUgc3VjaCBhIHBsYXRmb3JtIHRoYXQgdGltZWJh
c2UNCj4gPiA+ID4gZnJlcXVlbmN5IG1vcmUgdGhhbiAxR0h6LiBBbmQgSSB0aGluayBpdCBpcyBu
b3QgbmVlZCB0byBzdXBwb3J0DQo+ID4gPiA+IHN1Y2ggYQ0KPiA+IHNpdHVhdGlvbi4NCj4gPiA+
ID4gQmVjYXVzZSB3ZSBoYXZlIG5vIGVudmlyb25tZW50IHRvIHRlc3QgaXQuDQo+ID4gPg0KPiA+
ID4gWW91IGNhbiB0ZXN0IGl0IGJ5IGhhY2tpbmcgYSB3cm9uZyB0aW1lYmFzZSBmcmVxdWVuY3kg
aW4gYW5kIHNlZWluZw0KPiA+ID4gd2hhdCB0aGUgY2FsY3VsYXRpb24gZG9lcy4NCj4gPiA+DQo+
ID4gPiBPciBkbyBzb21ldGhpbmcgbGlrZSB0aGlzOg0KPiA+ID4NCj4gPiA+IAlpZiAobnMgPj0g
MTAwMDApDQo+IAleXl4NCj4gDQo+ID4gPiAJCWN5Y2xlID0gKChucyArIDUwMCkgLyAxMDAwKSAq
IHRiX3RpY2tzX3Blcl91c2VjOw0KPiA+ID4gCWVsc2UNCj4gPiA+IAkJY3ljbGUgPSBkaXZfdTY0
KCh1NjQpbnMgKiB0Yl90aWNrc19wZXJfdXNlYywgMTAwMCk7DQo+ID4gPg0KPiA+IFdlIGNhbm5v
dCBkbyB0aGlzLCBiZWNhdXNlIGlmIChucys1MDApIDwgMTAwMCwgd2UgY2Fubm90IGdldCB0aGUg
ZW50cnkNCj4gPiBiaXQsIGl0J2xsIGFsd2F5cyB6ZXJvIGJpdC4NCj4gDQo+IFRoZXJlIGlzIGEg
aWYgY29uZGl0aW9uIG9mIG5zID49IDEwMDAwLCBzbyBucys1MDAgY2FuIG5vdCBiZSBsZXNzIHRo
YW4NCj4gMTAwMC4NCj4gDQpTb3JyeSBhYm91dCB0aGF0LCBJIG1pc3JlYWQgaXQuIDopDQoNCj4g
Pg0KPiA+IFdlIG11c3QgdG8gdXNlIHBlcl9uc2VjX3RiX3RpY2tzLCBsaWtlIG15IGNvZGUgMTAw
MCAvIHRiX3RpY2tzX3Blcl91c2VjLg0KPiA+DQo+ID4gPiAuLi53aGljaCBjYW4gYmUgdGVzdGVk
IGp1c3QgYnkgdmFyeWluZyBucy4NCj4gPiA+DQo+ID4gPiA+IElmIGxhdGVyIHRoZXJlIHdpbGwg
YmUgbW9yZSB0aGFuIDFHSFogcGxhdGZvcm0gYXQgdGhhdCB0aW1lIHRvIGFkZA0KPiA+ID4gPiB0
aGlzDQo+ID4gPiBzdXBwb3J0Lg0KPiA+ID4NCj4gPiBZZXMsIEkgYWdyZWUgdGhpcyBwb2ludC4g
OikNCj4gDQo+IE9uZSBzaG91bGQgYWdyZWUgd2l0aCBoaW1zZWxmIDopDQo+IA0KPiAtQmhhcmF0
DQo+IA0KPiA+DQo+ID4gLWRvbmdzaGVuZw0KPiA+DQo+ID4gPiBUaGVyZSBhbG1vc3QgY2VydGFp
bmx5IHdvbid0IGJlIHRpbWViYXNlcyB0aGF0IHJ1biB0aGF0IGZhc3QsIGJ1dA0KPiA+ID4gZGl2
aWRlIGJ5IHplcm8gaXMgYSByYXRoZXIgbmFzdHkgd2F5IG9mIHJlc3BvbmRpbmcgaWYgc3VjaCBh
IHRoaW5nDQo+ID4gPiBkb2VzDQo+ID4gaGFwcGVuLg0KPiA+ID4NCj4gPiA+IC1TY290dA0KPiA+
ID4NCg0K

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-09-26  6:18             ` Wang Dongsheng-B40534
@ 2013-09-26 21:37               ` Scott Wood
  2013-09-27  3:34                 ` Wang Dongsheng-B40534
  0 siblings, 1 reply; 18+ messages in thread
From: Scott Wood @ 2013-09-26 21:37 UTC (permalink / raw)
  To: Wang Dongsheng-B40534
  Cc: Wood Scott-B07421, linuxppc-dev, Bhushan Bharat-R65777

On Thu, 2013-09-26 at 01:18 -0500, Wang Dongsheng-B40534 wrote:
> 
> > -----Original Message-----
> > From: Bhushan Bharat-R65777
> > Sent: Thursday, September 26, 2013 12:23 PM
> > To: Wang Dongsheng-B40534; Wood Scott-B07421
> > Cc: linuxppc-dev@lists.ozlabs.org
> > Subject: RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and
> > altivec idle
> > 
> > 
> > 
> > > -----Original Message-----
> > > From: Wang Dongsheng-B40534
> > > Sent: Thursday, September 26, 2013 8:02 AM
> > > To: Wood Scott-B07421
> > > Cc: Bhushan Bharat-R65777; linuxppc-dev@lists.ozlabs.org
> > > Subject: RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and
> > > altivec idle
> > >
> > >
> > >
> > > > -----Original Message-----
> > > > From: Wood Scott-B07421
> > > > Sent: Thursday, September 26, 2013 1:57 AM
> > > > To: Wang Dongsheng-B40534
> > > > Cc: Bhushan Bharat-R65777; Wood Scott-B07421; linuxppc-
> > > > dev@lists.ozlabs.org
> > > > Subject: Re: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state
> > > > and altivec idle
> > > >
> > > > On Wed, 2013-09-25 at 03:10 -0500, Wang Dongsheng-B40534 wrote:
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Bhushan Bharat-R65777
> > > > > > Sent: Wednesday, September 25, 2013 2:23 PM
> > > > > > To: Wang Dongsheng-B40534; Wood Scott-B07421
> > > > > > Cc: linuxppc-dev@lists.ozlabs.org; Wang Dongsheng-B40534
> > > > > > Subject: RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20
> > > > > > state and altivec idle
> > > > > >
> > > > > >
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Linuxppc-dev [mailto:linuxppc-dev-
> > > > > > > bounces+bharat.bhushan=freescale.com@lists.ozlabs.org] On
> > > > > > > bounces+Behalf Of Dongsheng
> > > > > > > Wang
> > > > > > > Sent: Tuesday, September 24, 2013 2:59 PM
> > > > > > > To: Wood Scott-B07421
> > > > > > > Cc: linuxppc-dev@lists.ozlabs.org; Wang Dongsheng-B40534
> > > > > > > Subject: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state
> > > > > > > and altivec idle
> > > > > > >
> > > > > > > From: Wang Dongsheng <dongsheng.wang@freescale.com>
> > > > > > >
> > > > > > > Add a sys interface to enable/diable pw20 state or altivec
> > > > > > > idle, and control the wait entry time.
> > > > > > >
> > > > > > > Enable/Disable interface:
> > > > > > > 0, disable. 1, enable.
> > > > > > > /sys/devices/system/cpu/cpuX/pw20_state
> > > > > > > /sys/devices/system/cpu/cpuX/altivec_idle
> > > > > > >
> > > > > > > Set wait time interface:(Nanosecond)
> > > > > > > /sys/devices/system/cpu/cpuX/pw20_wait_time
> > > > > > > /sys/devices/system/cpu/cpuX/altivec_idle_wait_time
> > > > > > > Example: Base on TBfreq is 41MHZ.
> > > > > > > 1~47(ns): TB[63]
> > > > > > > 48~95(ns): TB[62]
> > > > > > > 96~191(ns): TB[61]
> > > > > > > 192~383(ns): TB[62]
> > > > > > > 384~767(ns): TB[60]
> > > > > > > ...
> > > > > > >
> > > > > > > Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
> > > > > > > ---
> > > > > > > *v4:
> > > > > > > Move code from 85xx/common.c to kernel/sysfs.c.
> > > > > > >
> > > > > > > Remove has_pw20_altivec_idle function.
> > > > > > >
> > > > > > > Change wait "entry_bit" to wait time.
> > > > > > >
> > > > > > >  arch/powerpc/kernel/sysfs.c | 291
> > > > > > > ++++++++++++++++++++++++++++++++++++++++++++
> > > > > > >  1 file changed, 291 insertions(+)
> > > > > > >
> > > > > > > diff --git a/arch/powerpc/kernel/sysfs.c
> > > > > > > b/arch/powerpc/kernel/sysfs.c index 27a90b9..23fece6 100644
> > > > > > > --- a/arch/powerpc/kernel/sysfs.c
> > > > > > > +++ b/arch/powerpc/kernel/sysfs.c
> > > > > > > @@ -85,6 +85,279 @@ __setup("smt-snooze-delay=",
> > > > > > > setup_smt_snooze_delay);
> > > > > > >
> > > > > > >  #endif /* CONFIG_PPC64 */
> > > > > > >
> > > > > > > +#ifdef CONFIG_FSL_SOC
> > > > > > > +#define MAX_BIT		63
> > > > > > > +
> > > > > > > +static u64 pw20_wt;
> > > > > > > +static u64 altivec_idle_wt;
> > > > > > > +
> > > > > > > +static unsigned int get_idle_ticks_bit(u64 ns) {
> > > > > > > +	u64 cycle;
> > > > > > > +
> > > > > > > +	cycle = div_u64(ns, 1000 / tb_ticks_per_usec);
> > > > > >
> > > > > > When tb_ticks_per_usec  > 1000 (timebase frequency > 1GHz) then
> > > > > > this will always be ns, which is not correct, no?
> > > >
> > > > Actually it'll be a divide by zero in that case.
> > > >
> > > tb_ticks_per_usec = ppc_tb_freq / 1000000; Means TB freq should be
> > > more than 1MHZ.
> > >
> > > if ppc_tb_freq less than 1000000, the tb_ticks_per_usec will be a
> > > divide by zero.
> > > If this condition is established, I think kernel cannot work as a
> > normal.
> > >
> > > So I think we need to believe that the variable is not zero.
> > 
> > We do believe it is non-zero but greater than 1000 :)
> > 
> > > And I think TB freq
> > > should not less than 1MHZ on PPC platform, because if TB freq less
> > > than 1MHZ, the precision time will become very poor and system
> > > response time will be slower.
> > 
> > Not sure what you are describing here related to divide by zero we are
> > mentioning.
> > You are talking about if tb_ticks_per_usec is ZERO and we are talking
> > about if (1000/tb_ticks_per_usec) will be zero.
> > 
> > BTW, div_u64() handle the case where divider is zero.

How?  When I checked yesterday it looked like div_u64() mapped to a
hardware division on 64-bit targets.  In any case it's not good to rely
on such behavior.

> cycle = div_u64(ns, 1000 / tb_ticks_per_usec);
> For this, I think we were discussing the two issues:
> 
> 1. Scott talking about, when the tb_ticks_per_usec is a zero.

No I wasn't.  I was talking about when tb_ticks_per_usec > 1000, and
thus "1000 / tb_ticks_per_usec" is zero.  You said that the result would
be ns in that case.

> 2. You are talking about 1000/tb_ticks_per_usec is a zero.
> This situation is about TB freq > 1GHZ.
> 
> I will fix this issue. Like I said before,
> "If timebase frequency > 1GHz, this should be "tb_ticks_per_usec / 1000" and to get tb_ticks_per_nsec.
> This should be changed to "cycle = ns * tb_ticks_per_nsec;""
> 
> #define TB_FREQ_1GHZ	1000
> 
> If (tb_ticks_per_usec > TB_FREQ_1GHZ)
> 	cycle = ns * (tb_ticks_per_usec / 1000);
> else
> 	cycle = div_u64(ns, 1000 / tb_ticks_per_usec);
> 
> how about this? :)

I suggested an alternative to satisfy your complaint that it's hard to
test one of those if/else branches.

Plus, your version will be quite inaccurate if (e.g.) tb_ticks_per_usec
is 501, or 1999.

-Scott

^ permalink raw reply	[flat|nested] 18+ messages in thread

* RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-09-26 21:37               ` Scott Wood
@ 2013-09-27  3:34                 ` Wang Dongsheng-B40534
  2013-09-27 21:33                   ` Scott Wood
  0 siblings, 1 reply; 18+ messages in thread
From: Wang Dongsheng-B40534 @ 2013-09-27  3:34 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: linuxppc-dev, Bhushan Bharat-R65777

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogRnJpZGF5LCBTZXB0ZW1iZXIgMjcsIDIwMTMgNTozNyBBTQ0KPiBUbzogV2Fu
ZyBEb25nc2hlbmctQjQwNTM0DQo+IENjOiBCaHVzaGFuIEJoYXJhdC1SNjU3Nzc7IFdvb2QgU2Nv
dHQtQjA3NDIxOyBsaW51eHBwYy0NCj4gZGV2QGxpc3RzLm96bGFicy5vcmcNCj4gU3ViamVjdDog
UmU6IFtQQVRDSCB2NCA0LzRdIHBvd2VycGMvODV4eDogYWRkIHN5c2ZzIGZvciBwdzIwIHN0YXRl
IGFuZA0KPiBhbHRpdmVjIGlkbGUNCj4gDQo+IE9uIFRodSwgMjAxMy0wOS0yNiBhdCAwMToxOCAt
MDUwMCwgV2FuZyBEb25nc2hlbmctQjQwNTM0IHdyb3RlOg0KPiA+DQo+ID4gPiAtLS0tLU9yaWdp
bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogQmh1c2hhbiBCaGFyYXQtUjY1Nzc3DQo+ID4g
PiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDI2LCAyMDEzIDEyOjIzIFBNDQo+ID4gPiBUbzog
V2FuZyBEb25nc2hlbmctQjQwNTM0OyBXb29kIFNjb3R0LUIwNzQyMQ0KPiA+ID4gQ2M6IGxpbnV4
cHBjLWRldkBsaXN0cy5vemxhYnMub3JnDQo+ID4gPiBTdWJqZWN0OiBSRTogW1BBVENIIHY0IDQv
NF0gcG93ZXJwYy84NXh4OiBhZGQgc3lzZnMgZm9yIHB3MjAgc3RhdGUNCj4gPiA+IGFuZCBhbHRp
dmVjIGlkbGUNCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNz
YWdlLS0tLS0NCj4gPiA+ID4gRnJvbTogV2FuZyBEb25nc2hlbmctQjQwNTM0DQo+ID4gPiA+IFNl
bnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMjYsIDIwMTMgODowMiBBTQ0KPiA+ID4gPiBUbzogV29v
ZCBTY290dC1CMDc0MjENCj4gPiA+ID4gQ2M6IEJodXNoYW4gQmhhcmF0LVI2NTc3NzsgbGludXhw
cGMtZGV2QGxpc3RzLm96bGFicy5vcmcNCj4gPiA+ID4gU3ViamVjdDogUkU6IFtQQVRDSCB2NCA0
LzRdIHBvd2VycGMvODV4eDogYWRkIHN5c2ZzIGZvciBwdzIwIHN0YXRlDQo+ID4gPiA+IGFuZCBh
bHRpdmVjIGlkbGUNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gPiAtLS0tLU9y
aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206IFdvb2QgU2NvdHQtQjA3NDIxDQo+
ID4gPiA+ID4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyNiwgMjAxMyAxOjU3IEFNDQo+ID4g
PiA+ID4gVG86IFdhbmcgRG9uZ3NoZW5nLUI0MDUzNA0KPiA+ID4gPiA+IENjOiBCaHVzaGFuIEJo
YXJhdC1SNjU3Nzc7IFdvb2QgU2NvdHQtQjA3NDIxOyBsaW51eHBwYy0NCj4gPiA+ID4gPiBkZXZA
bGlzdHMub3psYWJzLm9yZw0KPiA+ID4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjQgNC80XSBw
b3dlcnBjLzg1eHg6IGFkZCBzeXNmcyBmb3IgcHcyMA0KPiA+ID4gPiA+IHN0YXRlIGFuZCBhbHRp
dmVjIGlkbGUNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IE9uIFdlZCwgMjAxMy0wOS0yNSBhdCAwMzox
MCAtMDUwMCwgV2FuZyBEb25nc2hlbmctQjQwNTM0IHdyb3RlOg0KPiA+ID4gPiA+ID4NCj4gPiA+
ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4gRnJvbTog
Qmh1c2hhbiBCaGFyYXQtUjY1Nzc3DQo+ID4gPiA+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgU2Vw
dGVtYmVyIDI1LCAyMDEzIDI6MjMgUE0NCj4gPiA+ID4gPiA+ID4gVG86IFdhbmcgRG9uZ3NoZW5n
LUI0MDUzNDsgV29vZCBTY290dC1CMDc0MjENCj4gPiA+ID4gPiA+ID4gQ2M6IGxpbnV4cHBjLWRl
dkBsaXN0cy5vemxhYnMub3JnOyBXYW5nIERvbmdzaGVuZy1CNDA1MzQNCj4gPiA+ID4gPiA+ID4g
U3ViamVjdDogUkU6IFtQQVRDSCB2NCA0LzRdIHBvd2VycGMvODV4eDogYWRkIHN5c2ZzIGZvciBw
dzIwDQo+ID4gPiA+ID4gPiA+IHN0YXRlIGFuZCBhbHRpdmVjIGlkbGUNCj4gPiA+ID4gPiA+ID4N
Cj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiAtLS0tLU9yaWdp
bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ID4gPiA+IEZyb206IExpbnV4cHBjLWRldiBbbWFp
bHRvOmxpbnV4cHBjLWRldi0NCj4gPiA+ID4gPiA+ID4gPiBib3VuY2VzK2JoYXJhdC5iaHVzaGFu
PWZyZWVzY2FsZS5jb21AbGlzdHMub3psYWJzLm9yZ10gT24NCj4gPiA+ID4gPiA+ID4gPiBib3Vu
Y2VzK0JlaGFsZiBPZiBEb25nc2hlbmcNCj4gPiA+ID4gPiA+ID4gPiBXYW5nDQo+ID4gPiA+ID4g
PiA+ID4gU2VudDogVHVlc2RheSwgU2VwdGVtYmVyIDI0LCAyMDEzIDI6NTkgUE0NCj4gPiA+ID4g
PiA+ID4gPiBUbzogV29vZCBTY290dC1CMDc0MjENCj4gPiA+ID4gPiA+ID4gPiBDYzogbGludXhw
cGMtZGV2QGxpc3RzLm96bGFicy5vcmc7IFdhbmcgRG9uZ3NoZW5nLUI0MDUzNA0KPiA+ID4gPiA+
ID4gPiA+IFN1YmplY3Q6IFtQQVRDSCB2NCA0LzRdIHBvd2VycGMvODV4eDogYWRkIHN5c2ZzIGZv
ciBwdzIwDQo+ID4gPiA+ID4gPiA+ID4gc3RhdGUgYW5kIGFsdGl2ZWMgaWRsZQ0KPiA+ID4gPiA+
ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gRnJvbTogV2FuZyBEb25nc2hlbmcgPGRvbmdzaGVuZy53
YW5nQGZyZWVzY2FsZS5jb20+DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBBZGQg
YSBzeXMgaW50ZXJmYWNlIHRvIGVuYWJsZS9kaWFibGUgcHcyMCBzdGF0ZSBvciBhbHRpdmVjDQo+
ID4gPiA+ID4gPiA+ID4gaWRsZSwgYW5kIGNvbnRyb2wgdGhlIHdhaXQgZW50cnkgdGltZS4NCj4g
PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IEVuYWJsZS9EaXNhYmxlIGludGVyZmFjZToN
Cj4gPiA+ID4gPiA+ID4gPiAwLCBkaXNhYmxlLiAxLCBlbmFibGUuDQo+ID4gPiA+ID4gPiA+ID4g
L3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC9wdzIwX3N0YXRlDQo+ID4gPiA+ID4gPiA+ID4g
L3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC9hbHRpdmVjX2lkbGUNCj4gPiA+ID4gPiA+ID4g
Pg0KPiA+ID4gPiA+ID4gPiA+IFNldCB3YWl0IHRpbWUgaW50ZXJmYWNlOihOYW5vc2Vjb25kKQ0K
PiA+ID4gPiA+ID4gPiA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdVgvcHcyMF93YWl0X3Rp
bWUNCj4gPiA+ID4gPiA+ID4gPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVYL2FsdGl2ZWNf
aWRsZV93YWl0X3RpbWUNCj4gPiA+ID4gPiA+ID4gPiBFeGFtcGxlOiBCYXNlIG9uIFRCZnJlcSBp
cyA0MU1IWi4NCj4gPiA+ID4gPiA+ID4gPiAxfjQ3KG5zKTogVEJbNjNdDQo+ID4gPiA+ID4gPiA+
ID4gNDh+OTUobnMpOiBUQls2Ml0NCj4gPiA+ID4gPiA+ID4gPiA5Nn4xOTEobnMpOiBUQls2MV0N
Cj4gPiA+ID4gPiA+ID4gPiAxOTJ+MzgzKG5zKTogVEJbNjJdDQo+ID4gPiA+ID4gPiA+ID4gMzg0
fjc2Nyhucyk6IFRCWzYwXQ0KPiA+ID4gPiA+ID4gPiA+IC4uLg0KPiA+ID4gPiA+ID4gPiA+DQo+
ID4gPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogV2FuZyBEb25nc2hlbmcNCj4gPiA+ID4gPiA+
ID4gPiA8ZG9uZ3NoZW5nLndhbmdAZnJlZXNjYWxlLmNvbT4NCj4gPiA+ID4gPiA+ID4gPiAtLS0N
Cj4gPiA+ID4gPiA+ID4gPiAqdjQ6DQo+ID4gPiA+ID4gPiA+ID4gTW92ZSBjb2RlIGZyb20gODV4
eC9jb21tb24uYyB0byBrZXJuZWwvc3lzZnMuYy4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+
ID4gPiA+IFJlbW92ZSBoYXNfcHcyMF9hbHRpdmVjX2lkbGUgZnVuY3Rpb24uDQo+ID4gPiA+ID4g
PiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBDaGFuZ2Ugd2FpdCAiZW50cnlfYml0IiB0byB3YWl0IHRp
bWUuDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiAgYXJjaC9wb3dlcnBjL2tlcm5l
bC9zeXNmcy5jIHwgMjkxDQo+ID4gPiA+ID4gPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysNCj4gPiA+ID4gPiA+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDI5
MSBpbnNlcnRpb25zKCspDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBkaWZmIC0t
Z2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNmcy5jDQo+ID4gPiA+ID4gPiA+ID4gYi9hcmNo
L3Bvd2VycGMva2VybmVsL3N5c2ZzLmMgaW5kZXggMjdhOTBiOS4uMjNmZWNlNg0KPiA+ID4gPiA+
ID4gPiA+IDEwMDY0NA0KPiA+ID4gPiA+ID4gPiA+IC0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwv
c3lzZnMuYw0KPiA+ID4gPiA+ID4gPiA+ICsrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvc3lzZnMu
Yw0KPiA+ID4gPiA+ID4gPiA+IEBAIC04NSw2ICs4NSwyNzkgQEAgX19zZXR1cCgic210LXNub296
ZS1kZWxheT0iLA0KPiA+ID4gPiA+ID4gPiA+IHNldHVwX3NtdF9zbm9vemVfZGVsYXkpOw0KPiA+
ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gICNlbmRpZiAvKiBDT05GSUdfUFBDNjQgKi8N
Cj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ICsjaWZkZWYgQ09ORklHX0ZTTF9TT0MN
Cj4gPiA+ID4gPiA+ID4gPiArI2RlZmluZSBNQVhfQklUCQk2Mw0KPiA+ID4gPiA+ID4gPiA+ICsN
Cj4gPiA+ID4gPiA+ID4gPiArc3RhdGljIHU2NCBwdzIwX3d0Ow0KPiA+ID4gPiA+ID4gPiA+ICtz
dGF0aWMgdTY0IGFsdGl2ZWNfaWRsZV93dDsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g
PiA+ID4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X2lkbGVfdGlja3NfYml0KHU2NCBucykgew0K
PiA+ID4gPiA+ID4gPiA+ICsJdTY0IGN5Y2xlOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g
PiA+ID4gPiArCWN5Y2xlID0gZGl2X3U2NChucywgMTAwMCAvIHRiX3RpY2tzX3Blcl91c2VjKTsN
Cj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gV2hlbiB0Yl90aWNrc19wZXJfdXNlYyAgPiAx
MDAwICh0aW1lYmFzZSBmcmVxdWVuY3kgPiAxR0h6KQ0KPiA+ID4gPiA+ID4gPiB0aGVuIHRoaXMg
d2lsbCBhbHdheXMgYmUgbnMsIHdoaWNoIGlzIG5vdCBjb3JyZWN0LCBubz8NCj4gPiA+ID4gPg0K
PiA+ID4gPiA+IEFjdHVhbGx5IGl0J2xsIGJlIGEgZGl2aWRlIGJ5IHplcm8gaW4gdGhhdCBjYXNl
Lg0KPiA+ID4gPiA+DQo+ID4gPiA+IHRiX3RpY2tzX3Blcl91c2VjID0gcHBjX3RiX2ZyZXEgLyAx
MDAwMDAwOyBNZWFucyBUQiBmcmVxIHNob3VsZCBiZQ0KPiA+ID4gPiBtb3JlIHRoYW4gMU1IWi4N
Cj4gPiA+ID4NCj4gPiA+ID4gaWYgcHBjX3RiX2ZyZXEgbGVzcyB0aGFuIDEwMDAwMDAsIHRoZSB0
Yl90aWNrc19wZXJfdXNlYyB3aWxsIGJlIGENCj4gPiA+ID4gZGl2aWRlIGJ5IHplcm8uDQo+ID4g
PiA+IElmIHRoaXMgY29uZGl0aW9uIGlzIGVzdGFibGlzaGVkLCBJIHRoaW5rIGtlcm5lbCBjYW5u
b3Qgd29yayBhcyBhDQo+ID4gPiBub3JtYWwuDQo+ID4gPiA+DQo+ID4gPiA+IFNvIEkgdGhpbmsg
d2UgbmVlZCB0byBiZWxpZXZlIHRoYXQgdGhlIHZhcmlhYmxlIGlzIG5vdCB6ZXJvLg0KPiA+ID4N
Cj4gPiA+IFdlIGRvIGJlbGlldmUgaXQgaXMgbm9uLXplcm8gYnV0IGdyZWF0ZXIgdGhhbiAxMDAw
IDopDQo+ID4gPg0KPiA+ID4gPiBBbmQgSSB0aGluayBUQiBmcmVxDQo+ID4gPiA+IHNob3VsZCBu
b3QgbGVzcyB0aGFuIDFNSFogb24gUFBDIHBsYXRmb3JtLCBiZWNhdXNlIGlmIFRCIGZyZXEgbGVz
cw0KPiA+ID4gPiB0aGFuIDFNSFosIHRoZSBwcmVjaXNpb24gdGltZSB3aWxsIGJlY29tZSB2ZXJ5
IHBvb3IgYW5kIHN5c3RlbQ0KPiA+ID4gPiByZXNwb25zZSB0aW1lIHdpbGwgYmUgc2xvd2VyLg0K
PiA+ID4NCj4gPiA+IE5vdCBzdXJlIHdoYXQgeW91IGFyZSBkZXNjcmliaW5nIGhlcmUgcmVsYXRl
ZCB0byBkaXZpZGUgYnkgemVybyB3ZQ0KPiA+ID4gYXJlIG1lbnRpb25pbmcuDQo+ID4gPiBZb3Ug
YXJlIHRhbGtpbmcgYWJvdXQgaWYgdGJfdGlja3NfcGVyX3VzZWMgaXMgWkVSTyBhbmQgd2UgYXJl
DQo+ID4gPiB0YWxraW5nIGFib3V0IGlmICgxMDAwL3RiX3RpY2tzX3Blcl91c2VjKSB3aWxsIGJl
IHplcm8uDQo+ID4gPg0KPiA+ID4gQlRXLCBkaXZfdTY0KCkgaGFuZGxlIHRoZSBjYXNlIHdoZXJl
IGRpdmlkZXIgaXMgemVyby4NCj4gDQo+IEhvdz8gIFdoZW4gSSBjaGVja2VkIHllc3RlcmRheSBp
dCBsb29rZWQgbGlrZSBkaXZfdTY0KCkgbWFwcGVkIHRvIGENCj4gaGFyZHdhcmUgZGl2aXNpb24g
b24gNjQtYml0IHRhcmdldHMuICBJbiBhbnkgY2FzZSBpdCdzIG5vdCBnb29kIHRvIHJlbHkNCj4g
b24gc3VjaCBiZWhhdmlvci4NCj4gDQo+ID4gY3ljbGUgPSBkaXZfdTY0KG5zLCAxMDAwIC8gdGJf
dGlja3NfcGVyX3VzZWMpOyBGb3IgdGhpcywgSSB0aGluayB3ZQ0KPiA+IHdlcmUgZGlzY3Vzc2lu
ZyB0aGUgdHdvIGlzc3VlczoNCj4gPg0KPiA+IDEuIFNjb3R0IHRhbGtpbmcgYWJvdXQsIHdoZW4g
dGhlIHRiX3RpY2tzX3Blcl91c2VjIGlzIGEgemVyby4NCj4gDQo+IE5vIEkgd2Fzbid0LiAgSSB3
YXMgdGFsa2luZyBhYm91dCB3aGVuIHRiX3RpY2tzX3Blcl91c2VjID4gMTAwMCwgYW5kIHRodXMN
Cj4gIjEwMDAgLyB0Yl90aWNrc19wZXJfdXNlYyIgaXMgemVyby4gIFlvdSBzYWlkIHRoYXQgdGhl
IHJlc3VsdCB3b3VsZCBiZSBucw0KPiBpbiB0aGF0IGNhc2UuDQo+IA0KPiA+IDIuIFlvdSBhcmUg
dGFsa2luZyBhYm91dCAxMDAwL3RiX3RpY2tzX3Blcl91c2VjIGlzIGEgemVyby4NCj4gPiBUaGlz
IHNpdHVhdGlvbiBpcyBhYm91dCBUQiBmcmVxID4gMUdIWi4NCj4gPg0KPiA+IEkgd2lsbCBmaXgg
dGhpcyBpc3N1ZS4gTGlrZSBJIHNhaWQgYmVmb3JlLCAiSWYgdGltZWJhc2UgZnJlcXVlbmN5ID4N
Cj4gPiAxR0h6LCB0aGlzIHNob3VsZCBiZSAidGJfdGlja3NfcGVyX3VzZWMgLyAxMDAwIiBhbmQg
dG8gZ2V0DQo+IHRiX3RpY2tzX3Blcl9uc2VjLg0KPiA+IFRoaXMgc2hvdWxkIGJlIGNoYW5nZWQg
dG8gImN5Y2xlID0gbnMgKiB0Yl90aWNrc19wZXJfbnNlYzsiIg0KPiA+DQo+ID4gI2RlZmluZSBU
Ql9GUkVRXzFHSFoJMTAwMA0KPiA+DQo+ID4gSWYgKHRiX3RpY2tzX3Blcl91c2VjID4gVEJfRlJF
UV8xR0haKQ0KPiA+IAljeWNsZSA9IG5zICogKHRiX3RpY2tzX3Blcl91c2VjIC8gMTAwMCk7IGVs
c2UNCj4gPiAJY3ljbGUgPSBkaXZfdTY0KG5zLCAxMDAwIC8gdGJfdGlja3NfcGVyX3VzZWMpOw0K
PiA+DQo+ID4gaG93IGFib3V0IHRoaXM/IDopDQo+IA0KPiBJIHN1Z2dlc3RlZCBhbiBhbHRlcm5h
dGl2ZSB0byBzYXRpc2Z5IHlvdXIgY29tcGxhaW50IHRoYXQgaXQncyBoYXJkIHRvDQo+IHRlc3Qg
b25lIG9mIHRob3NlIGlmL2Vsc2UgYnJhbmNoZXMuDQo+IA0KPiBQbHVzLCB5b3VyIHZlcnNpb24g
d2lsbCBiZSBxdWl0ZSBpbmFjY3VyYXRlIGlmIChlLmcuKSB0Yl90aWNrc19wZXJfdXNlYw0KPiBp
cyA1MDEsIG9yIDE5OTkuDQo+IA0KY3ljbGUgPSBkaXZfdTY0KG5zICogdGJfdGlja3NfcGVyX3Vz
ZWMsIDEwMDApOyBJdCdzIGxvb2sgZ29vZC4NCkJ1dCB3aHkgd2UgbmVlZDoNCglpZiAobnMgPj0g
MTAwMDApDQoJCWN5Y2xlID0gKChucyArIDUwMCkgLyAxMDAwKSAqIHRiX3RpY2tzX3Blcl91c2Vj
Ow0KPw0KDQpJIHRoaW5rICJjeWNsZSA9IGRpdl91NjQobnMgKiB0Yl90aWNrc19wZXJfdXNlYywg
MTAwMCkiIGlzIGdvb2QgZW5vdWdoLiA6KQ0KDQotZG9uZ3NoZW5nDQoNCj4gLVNjb3R0DQo+IA0K
DQo=

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-09-27  3:34                 ` Wang Dongsheng-B40534
@ 2013-09-27 21:33                   ` Scott Wood
  2013-09-29  6:57                     ` Wang Dongsheng-B40534
  0 siblings, 1 reply; 18+ messages in thread
From: Scott Wood @ 2013-09-27 21:33 UTC (permalink / raw)
  To: Wang Dongsheng-B40534
  Cc: Wood Scott-B07421, linuxppc-dev, Bhushan Bharat-R65777

On Thu, 2013-09-26 at 22:34 -0500, Wang Dongsheng-B40534 wrote:
> 
> > -----Original Message-----
> > From: Wood Scott-B07421
> > Sent: Friday, September 27, 2013 5:37 AM
> > To: Wang Dongsheng-B40534
> > Cc: Bhushan Bharat-R65777; Wood Scott-B07421; linuxppc-
> > dev@lists.ozlabs.org
> > Subject: Re: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and
> > altivec idle
> > 
> > On Thu, 2013-09-26 at 01:18 -0500, Wang Dongsheng-B40534 wrote:
> > >
> > > > -----Original Message-----
> > > > From: Bhushan Bharat-R65777
> > > > Sent: Thursday, September 26, 2013 12:23 PM
> > > > To: Wang Dongsheng-B40534; Wood Scott-B07421
> > > > Cc: linuxppc-dev@lists.ozlabs.org
> > > > Subject: RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state
> > > > and altivec idle
> > > >
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: Wang Dongsheng-B40534
> > > > > Sent: Thursday, September 26, 2013 8:02 AM
> > > > > To: Wood Scott-B07421
> > > > > Cc: Bhushan Bharat-R65777; linuxppc-dev@lists.ozlabs.org
> > > > > Subject: RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state
> > > > > and altivec idle
> > > > >
> > > > >
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Wood Scott-B07421
> > > > > > Sent: Thursday, September 26, 2013 1:57 AM
> > > > > > To: Wang Dongsheng-B40534
> > > > > > Cc: Bhushan Bharat-R65777; Wood Scott-B07421; linuxppc-
> > > > > > dev@lists.ozlabs.org
> > > > > > Subject: Re: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20
> > > > > > state and altivec idle
> > > > > >
> > > > > > On Wed, 2013-09-25 at 03:10 -0500, Wang Dongsheng-B40534 wrote:
> > > > > > >
> > > > > > > > -----Original Message-----
> > > > > > > > From: Bhushan Bharat-R65777
> > > > > > > > Sent: Wednesday, September 25, 2013 2:23 PM
> > > > > > > > To: Wang Dongsheng-B40534; Wood Scott-B07421
> > > > > > > > Cc: linuxppc-dev@lists.ozlabs.org; Wang Dongsheng-B40534
> > > > > > > > Subject: RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20
> > > > > > > > state and altivec idle
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: Linuxppc-dev [mailto:linuxppc-dev-
> > > > > > > > > bounces+bharat.bhushan=freescale.com@lists.ozlabs.org] On
> > > > > > > > > bounces+Behalf Of Dongsheng
> > > > > > > > > Wang
> > > > > > > > > Sent: Tuesday, September 24, 2013 2:59 PM
> > > > > > > > > To: Wood Scott-B07421
> > > > > > > > > Cc: linuxppc-dev@lists.ozlabs.org; Wang Dongsheng-B40534
> > > > > > > > > Subject: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20
> > > > > > > > > state and altivec idle
> > > > > > > > >
> > > > > > > > > From: Wang Dongsheng <dongsheng.wang@freescale.com>
> > > > > > > > >
> > > > > > > > > Add a sys interface to enable/diable pw20 state or altivec
> > > > > > > > > idle, and control the wait entry time.
> > > > > > > > >
> > > > > > > > > Enable/Disable interface:
> > > > > > > > > 0, disable. 1, enable.
> > > > > > > > > /sys/devices/system/cpu/cpuX/pw20_state
> > > > > > > > > /sys/devices/system/cpu/cpuX/altivec_idle
> > > > > > > > >
> > > > > > > > > Set wait time interface:(Nanosecond)
> > > > > > > > > /sys/devices/system/cpu/cpuX/pw20_wait_time
> > > > > > > > > /sys/devices/system/cpu/cpuX/altivec_idle_wait_time
> > > > > > > > > Example: Base on TBfreq is 41MHZ.
> > > > > > > > > 1~47(ns): TB[63]
> > > > > > > > > 48~95(ns): TB[62]
> > > > > > > > > 96~191(ns): TB[61]
> > > > > > > > > 192~383(ns): TB[62]
> > > > > > > > > 384~767(ns): TB[60]
> > > > > > > > > ...
> > > > > > > > >
> > > > > > > > > Signed-off-by: Wang Dongsheng
> > > > > > > > > <dongsheng.wang@freescale.com>
> > > > > > > > > ---
> > > > > > > > > *v4:
> > > > > > > > > Move code from 85xx/common.c to kernel/sysfs.c.
> > > > > > > > >
> > > > > > > > > Remove has_pw20_altivec_idle function.
> > > > > > > > >
> > > > > > > > > Change wait "entry_bit" to wait time.
> > > > > > > > >
> > > > > > > > >  arch/powerpc/kernel/sysfs.c | 291
> > > > > > > > > ++++++++++++++++++++++++++++++++++++++++++++
> > > > > > > > >  1 file changed, 291 insertions(+)
> > > > > > > > >
> > > > > > > > > diff --git a/arch/powerpc/kernel/sysfs.c
> > > > > > > > > b/arch/powerpc/kernel/sysfs.c index 27a90b9..23fece6
> > > > > > > > > 100644
> > > > > > > > > --- a/arch/powerpc/kernel/sysfs.c
> > > > > > > > > +++ b/arch/powerpc/kernel/sysfs.c
> > > > > > > > > @@ -85,6 +85,279 @@ __setup("smt-snooze-delay=",
> > > > > > > > > setup_smt_snooze_delay);
> > > > > > > > >
> > > > > > > > >  #endif /* CONFIG_PPC64 */
> > > > > > > > >
> > > > > > > > > +#ifdef CONFIG_FSL_SOC
> > > > > > > > > +#define MAX_BIT		63
> > > > > > > > > +
> > > > > > > > > +static u64 pw20_wt;
> > > > > > > > > +static u64 altivec_idle_wt;
> > > > > > > > > +
> > > > > > > > > +static unsigned int get_idle_ticks_bit(u64 ns) {
> > > > > > > > > +	u64 cycle;
> > > > > > > > > +
> > > > > > > > > +	cycle = div_u64(ns, 1000 / tb_ticks_per_usec);
> > > > > > > >
> > > > > > > > When tb_ticks_per_usec  > 1000 (timebase frequency > 1GHz)
> > > > > > > > then this will always be ns, which is not correct, no?
> > > > > >
> > > > > > Actually it'll be a divide by zero in that case.
> > > > > >
> > > > > tb_ticks_per_usec = ppc_tb_freq / 1000000; Means TB freq should be
> > > > > more than 1MHZ.
> > > > >
> > > > > if ppc_tb_freq less than 1000000, the tb_ticks_per_usec will be a
> > > > > divide by zero.
> > > > > If this condition is established, I think kernel cannot work as a
> > > > normal.
> > > > >
> > > > > So I think we need to believe that the variable is not zero.
> > > >
> > > > We do believe it is non-zero but greater than 1000 :)
> > > >
> > > > > And I think TB freq
> > > > > should not less than 1MHZ on PPC platform, because if TB freq less
> > > > > than 1MHZ, the precision time will become very poor and system
> > > > > response time will be slower.
> > > >
> > > > Not sure what you are describing here related to divide by zero we
> > > > are mentioning.
> > > > You are talking about if tb_ticks_per_usec is ZERO and we are
> > > > talking about if (1000/tb_ticks_per_usec) will be zero.
> > > >
> > > > BTW, div_u64() handle the case where divider is zero.
> > 
> > How?  When I checked yesterday it looked like div_u64() mapped to a
> > hardware division on 64-bit targets.  In any case it's not good to rely
> > on such behavior.
> > 
> > > cycle = div_u64(ns, 1000 / tb_ticks_per_usec); For this, I think we
> > > were discussing the two issues:
> > >
> > > 1. Scott talking about, when the tb_ticks_per_usec is a zero.
> > 
> > No I wasn't.  I was talking about when tb_ticks_per_usec > 1000, and thus
> > "1000 / tb_ticks_per_usec" is zero.  You said that the result would be ns
> > in that case.
> > 
> > > 2. You are talking about 1000/tb_ticks_per_usec is a zero.
> > > This situation is about TB freq > 1GHZ.
> > >
> > > I will fix this issue. Like I said before, "If timebase frequency >
> > > 1GHz, this should be "tb_ticks_per_usec / 1000" and to get
> > tb_ticks_per_nsec.
> > > This should be changed to "cycle = ns * tb_ticks_per_nsec;""
> > >
> > > #define TB_FREQ_1GHZ	1000
> > >
> > > If (tb_ticks_per_usec > TB_FREQ_1GHZ)
> > > 	cycle = ns * (tb_ticks_per_usec / 1000); else
> > > 	cycle = div_u64(ns, 1000 / tb_ticks_per_usec);
> > >
> > > how about this? :)
> > 
> > I suggested an alternative to satisfy your complaint that it's hard to
> > test one of those if/else branches.
> > 
> > Plus, your version will be quite inaccurate if (e.g.) tb_ticks_per_usec
> > is 501, or 1999.
> > 
> cycle = div_u64(ns * tb_ticks_per_usec, 1000); It's look good.
> But why we need:
> 	if (ns >= 10000)
> 		cycle = ((ns + 500) / 1000) * tb_ticks_per_usec;
> ?
> 
> I think "cycle = div_u64(ns * tb_ticks_per_usec, 1000)" is good enough. :)

It's to deal with overflow if a very large value of ns is provided
(and/or tb_ticks_per_usec is larger than we expect).

-Scott

^ permalink raw reply	[flat|nested] 18+ messages in thread

* RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-09-27 21:33                   ` Scott Wood
@ 2013-09-29  6:57                     ` Wang Dongsheng-B40534
  2013-09-30 23:06                       ` Scott Wood
  0 siblings, 1 reply; 18+ messages in thread
From: Wang Dongsheng-B40534 @ 2013-09-29  6:57 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: linuxppc-dev, Bhushan Bharat-R65777

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogU2F0dXJkYXksIFNlcHRlbWJlciAyOCwgMjAxMyA1OjMzIEFNDQo+IFRvOiBX
YW5nIERvbmdzaGVuZy1CNDA1MzQNCj4gQ2M6IFdvb2QgU2NvdHQtQjA3NDIxOyBCaHVzaGFuIEJo
YXJhdC1SNjU3Nzc7IGxpbnV4cHBjLQ0KPiBkZXZAbGlzdHMub3psYWJzLm9yZw0KPiBTdWJqZWN0
OiBSZTogW1BBVENIIHY0IDQvNF0gcG93ZXJwYy84NXh4OiBhZGQgc3lzZnMgZm9yIHB3MjAgc3Rh
dGUgYW5kDQo+IGFsdGl2ZWMgaWRsZQ0KPiANCj4gT24gVGh1LCAyMDEzLTA5LTI2IGF0IDIyOjM0
IC0wNTAwLCBXYW5nIERvbmdzaGVuZy1CNDA1MzQgd3JvdGU6DQo+ID4NCj4gPiA+IC0tLS0tT3Jp
Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBXb29kIFNjb3R0LUIwNzQyMQ0KPiA+ID4g
U2VudDogRnJpZGF5LCBTZXB0ZW1iZXIgMjcsIDIwMTMgNTozNyBBTQ0KPiA+ID4gVG86IFdhbmcg
RG9uZ3NoZW5nLUI0MDUzNA0KPiA+ID4gQ2M6IEJodXNoYW4gQmhhcmF0LVI2NTc3NzsgV29vZCBT
Y290dC1CMDc0MjE7IGxpbnV4cHBjLQ0KPiA+ID4gZGV2QGxpc3RzLm96bGFicy5vcmcNCj4gPiA+
IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjQgNC80XSBwb3dlcnBjLzg1eHg6IGFkZCBzeXNmcyBmb3Ig
cHcyMCBzdGF0ZQ0KPiA+ID4gYW5kIGFsdGl2ZWMgaWRsZQ0KPiA+ID4NCj4gPiA+IE9uIFRodSwg
MjAxMy0wOS0yNiBhdCAwMToxOCAtMDUwMCwgV2FuZyBEb25nc2hlbmctQjQwNTM0IHdyb3RlOg0K
PiA+ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4g
RnJvbTogQmh1c2hhbiBCaGFyYXQtUjY1Nzc3DQo+ID4gPiA+ID4gU2VudDogVGh1cnNkYXksIFNl
cHRlbWJlciAyNiwgMjAxMyAxMjoyMyBQTQ0KPiA+ID4gPiA+IFRvOiBXYW5nIERvbmdzaGVuZy1C
NDA1MzQ7IFdvb2QgU2NvdHQtQjA3NDIxDQo+ID4gPiA+ID4gQ2M6IGxpbnV4cHBjLWRldkBsaXN0
cy5vemxhYnMub3JnDQo+ID4gPiA+ID4gU3ViamVjdDogUkU6IFtQQVRDSCB2NCA0LzRdIHBvd2Vy
cGMvODV4eDogYWRkIHN5c2ZzIGZvciBwdzIwDQo+ID4gPiA+ID4gc3RhdGUgYW5kIGFsdGl2ZWMg
aWRsZQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLS0tLS1P
cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+IEZyb206IFdhbmcgRG9uZ3NoZW5nLUI0
MDUzNA0KPiA+ID4gPiA+ID4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyNiwgMjAxMyA4OjAy
IEFNDQo+ID4gPiA+ID4gPiBUbzogV29vZCBTY290dC1CMDc0MjENCj4gPiA+ID4gPiA+IENjOiBC
aHVzaGFuIEJoYXJhdC1SNjU3Nzc7IGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnDQo+ID4g
PiA+ID4gPiBTdWJqZWN0OiBSRTogW1BBVENIIHY0IDQvNF0gcG93ZXJwYy84NXh4OiBhZGQgc3lz
ZnMgZm9yIHB3MjANCj4gPiA+ID4gPiA+IHN0YXRlIGFuZCBhbHRpdmVjIGlkbGUNCj4gPiA+ID4g
PiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gLS0tLS1PcmlnaW5h
bCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4gRnJvbTogV29vZCBTY290dC1CMDc0MjENCj4g
PiA+ID4gPiA+ID4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyNiwgMjAxMyAxOjU3IEFNDQo+
ID4gPiA+ID4gPiA+IFRvOiBXYW5nIERvbmdzaGVuZy1CNDA1MzQNCj4gPiA+ID4gPiA+ID4gQ2M6
IEJodXNoYW4gQmhhcmF0LVI2NTc3NzsgV29vZCBTY290dC1CMDc0MjE7IGxpbnV4cHBjLQ0KPiA+
ID4gPiA+ID4gPiBkZXZAbGlzdHMub3psYWJzLm9yZw0KPiA+ID4gPiA+ID4gPiBTdWJqZWN0OiBS
ZTogW1BBVENIIHY0IDQvNF0gcG93ZXJwYy84NXh4OiBhZGQgc3lzZnMgZm9yIHB3MjANCj4gPiA+
ID4gPiA+ID4gc3RhdGUgYW5kIGFsdGl2ZWMgaWRsZQ0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+
ID4gPiBPbiBXZWQsIDIwMTMtMDktMjUgYXQgMDM6MTAgLTA1MDAsIFdhbmcgRG9uZ3NoZW5nLUI0
MDUzNA0KPiB3cm90ZToNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gLS0tLS1P
cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4gPiA+IEZyb206IEJodXNoYW4gQmhh
cmF0LVI2NTc3Nw0KPiA+ID4gPiA+ID4gPiA+ID4gU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIg
MjUsIDIwMTMgMjoyMyBQTQ0KPiA+ID4gPiA+ID4gPiA+ID4gVG86IFdhbmcgRG9uZ3NoZW5nLUI0
MDUzNDsgV29vZCBTY290dC1CMDc0MjENCj4gPiA+ID4gPiA+ID4gPiA+IENjOiBsaW51eHBwYy1k
ZXZAbGlzdHMub3psYWJzLm9yZzsgV2FuZyBEb25nc2hlbmctQjQwNTM0DQo+ID4gPiA+ID4gPiA+
ID4gPiBTdWJqZWN0OiBSRTogW1BBVENIIHY0IDQvNF0gcG93ZXJwYy84NXh4OiBhZGQgc3lzZnMg
Zm9yDQo+ID4gPiA+ID4gPiA+ID4gPiBwdzIwIHN0YXRlIGFuZCBhbHRpdmVjIGlkbGUNCj4gPiA+
ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+
ID4gPiA+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4g
PiA+ID4gRnJvbTogTGludXhwcGMtZGV2IFttYWlsdG86bGludXhwcGMtZGV2LQ0KPiA+ID4gPiA+
ID4gPiA+ID4gPiBib3VuY2VzK2JoYXJhdC5iaHVzaGFuPWZyZWVzY2FsZS5jb21AbGlzdHMub3ps
YWJzLm9yZ10NCj4gPiA+ID4gPiA+ID4gPiA+ID4gYm91bmNlcytPbiBCZWhhbGYgT2YgRG9uZ3No
ZW5nDQo+ID4gPiA+ID4gPiA+ID4gPiA+IFdhbmcNCj4gPiA+ID4gPiA+ID4gPiA+ID4gU2VudDog
VHVlc2RheSwgU2VwdGVtYmVyIDI0LCAyMDEzIDI6NTkgUE0NCj4gPiA+ID4gPiA+ID4gPiA+ID4g
VG86IFdvb2QgU2NvdHQtQjA3NDIxDQo+ID4gPiA+ID4gPiA+ID4gPiA+IENjOiBsaW51eHBwYy1k
ZXZAbGlzdHMub3psYWJzLm9yZzsgV2FuZw0KPiA+ID4gPiA+ID4gPiA+ID4gPiBEb25nc2hlbmct
QjQwNTM0DQo+ID4gPiA+ID4gPiA+ID4gPiA+IFN1YmplY3Q6IFtQQVRDSCB2NCA0LzRdIHBvd2Vy
cGMvODV4eDogYWRkIHN5c2ZzIGZvcg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBwdzIwIHN0YXRlIGFu
ZCBhbHRpdmVjIGlkbGUNCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4g
RnJvbTogV2FuZyBEb25nc2hlbmcgPGRvbmdzaGVuZy53YW5nQGZyZWVzY2FsZS5jb20+DQo+ID4g
PiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+IEFkZCBhIHN5cyBpbnRlcmZhY2Ug
dG8gZW5hYmxlL2RpYWJsZSBwdzIwIHN0YXRlIG9yDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGFsdGl2
ZWMgaWRsZSwgYW5kIGNvbnRyb2wgdGhlIHdhaXQgZW50cnkgdGltZS4NCj4gPiA+ID4gPiA+ID4g
PiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gRW5hYmxlL0Rpc2FibGUgaW50ZXJmYWNlOg0KPiA+
ID4gPiA+ID4gPiA+ID4gPiAwLCBkaXNhYmxlLiAxLCBlbmFibGUuDQo+ID4gPiA+ID4gPiA+ID4g
PiA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdVgvcHcyMF9zdGF0ZQ0KPiA+ID4gPiA+ID4g
PiA+ID4gPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVYL2FsdGl2ZWNfaWRsZQ0KPiA+ID4g
PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBTZXQgd2FpdCB0aW1lIGludGVyZmFj
ZTooTmFub3NlY29uZCkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gL3N5cy9kZXZpY2VzL3N5c3RlbS9j
cHUvY3B1WC9wdzIwX3dhaXRfdGltZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiAvc3lzL2RldmljZXMv
c3lzdGVtL2NwdS9jcHVYL2FsdGl2ZWNfaWRsZV93YWl0X3RpbWUNCj4gPiA+ID4gPiA+ID4gPiA+
ID4gRXhhbXBsZTogQmFzZSBvbiBUQmZyZXEgaXMgNDFNSFouDQo+ID4gPiA+ID4gPiA+ID4gPiA+
IDF+NDcobnMpOiBUQls2M10NCj4gPiA+ID4gPiA+ID4gPiA+ID4gNDh+OTUobnMpOiBUQls2Ml0N
Cj4gPiA+ID4gPiA+ID4gPiA+ID4gOTZ+MTkxKG5zKTogVEJbNjFdDQo+ID4gPiA+ID4gPiA+ID4g
PiA+IDE5Mn4zODMobnMpOiBUQls2Ml0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gMzg0fjc2Nyhucyk6
IFRCWzYwXQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiAuLi4NCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4g
PiA+ID4gPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogV2FuZyBEb25nc2hlbmcNCj4gPiA+ID4g
PiA+ID4gPiA+ID4gPGRvbmdzaGVuZy53YW5nQGZyZWVzY2FsZS5jb20+DQo+ID4gPiA+ID4gPiA+
ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiAqdjQ6DQo+ID4gPiA+ID4gPiA+ID4gPiA+
IE1vdmUgY29kZSBmcm9tIDg1eHgvY29tbW9uLmMgdG8ga2VybmVsL3N5c2ZzLmMuDQo+ID4gPiA+
ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+IFJlbW92ZSBoYXNfcHcyMF9hbHRpdmVj
X2lkbGUgZnVuY3Rpb24uDQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+
IENoYW5nZSB3YWl0ICJlbnRyeV9iaXQiIHRvIHdhaXQgdGltZS4NCj4gPiA+ID4gPiA+ID4gPiA+
ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gIGFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzZnMuYyB8IDI5
MQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKw0KPiA+ID4gPiA+ID4gPiA+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDI5MSBpbnNl
cnRpb25zKCspDQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+IGRpZmYg
LS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3N5c2ZzLmMNCj4gPiA+ID4gPiA+ID4gPiA+ID4g
Yi9hcmNoL3Bvd2VycGMva2VybmVsL3N5c2ZzLmMgaW5kZXggMjdhOTBiOS4uMjNmZWNlNg0KPiA+
ID4gPiA+ID4gPiA+ID4gPiAxMDA2NDQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gLS0tIGEvYXJjaC9w
b3dlcnBjL2tlcm5lbC9zeXNmcy5jDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsrKyBiL2FyY2gvcG93
ZXJwYy9rZXJuZWwvc3lzZnMuYw0KPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtODUsNiArODUsMjc5
IEBAIF9fc2V0dXAoInNtdC1zbm9vemUtZGVsYXk9IiwNCj4gPiA+ID4gPiA+ID4gPiA+ID4gc2V0
dXBfc210X3Nub296ZV9kZWxheSk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+
ID4gPiA+ICAjZW5kaWYgLyogQ09ORklHX1BQQzY0ICovDQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+
ID4gPiA+ID4gPiA+ID4gPiA+ICsjaWZkZWYgQ09ORklHX0ZTTF9TT0MNCj4gPiA+ID4gPiA+ID4g
PiA+ID4gKyNkZWZpbmUgTUFYX0JJVAkJNjMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4g
PiA+ID4gPiA+ID4gPiArc3RhdGljIHU2NCBwdzIwX3d0Ow0KPiA+ID4gPiA+ID4gPiA+ID4gPiAr
c3RhdGljIHU2NCBhbHRpdmVjX2lkbGVfd3Q7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+
ID4gPiA+ID4gPiA+ID4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X2lkbGVfdGlja3NfYml0KHU2
NCBucykgew0KPiA+ID4gPiA+ID4gPiA+ID4gPiArCXU2NCBjeWNsZTsNCj4gPiA+ID4gPiA+ID4g
PiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ID4gPiArCWN5Y2xlID0gZGl2X3U2NChucywgMTAwMCAv
IHRiX3RpY2tzX3Blcl91c2VjKTsNCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g
PiBXaGVuIHRiX3RpY2tzX3Blcl91c2VjICA+IDEwMDAgKHRpbWViYXNlIGZyZXF1ZW5jeSA+DQo+
ID4gPiA+ID4gPiA+ID4gPiAxR0h6KSB0aGVuIHRoaXMgd2lsbCBhbHdheXMgYmUgbnMsIHdoaWNo
IGlzIG5vdCBjb3JyZWN0LA0KPiBubz8NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gQWN0
dWFsbHkgaXQnbGwgYmUgYSBkaXZpZGUgYnkgemVybyBpbiB0aGF0IGNhc2UuDQo+ID4gPiA+ID4g
PiA+DQo+ID4gPiA+ID4gPiB0Yl90aWNrc19wZXJfdXNlYyA9IHBwY190Yl9mcmVxIC8gMTAwMDAw
MDsgTWVhbnMgVEIgZnJlcQ0KPiA+ID4gPiA+ID4gc2hvdWxkIGJlIG1vcmUgdGhhbiAxTUhaLg0K
PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IGlmIHBwY190Yl9mcmVxIGxlc3MgdGhhbiAxMDAwMDAw
LCB0aGUgdGJfdGlja3NfcGVyX3VzZWMgd2lsbA0KPiA+ID4gPiA+ID4gYmUgYSBkaXZpZGUgYnkg
emVyby4NCj4gPiA+ID4gPiA+IElmIHRoaXMgY29uZGl0aW9uIGlzIGVzdGFibGlzaGVkLCBJIHRo
aW5rIGtlcm5lbCBjYW5ub3Qgd29yaw0KPiA+ID4gPiA+ID4gYXMgYQ0KPiA+ID4gPiA+IG5vcm1h
bC4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBTbyBJIHRoaW5rIHdlIG5lZWQgdG8gYmVsaWV2
ZSB0aGF0IHRoZSB2YXJpYWJsZSBpcyBub3QgemVyby4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFdl
IGRvIGJlbGlldmUgaXQgaXMgbm9uLXplcm8gYnV0IGdyZWF0ZXIgdGhhbiAxMDAwIDopDQo+ID4g
PiA+ID4NCj4gPiA+ID4gPiA+IEFuZCBJIHRoaW5rIFRCIGZyZXENCj4gPiA+ID4gPiA+IHNob3Vs
ZCBub3QgbGVzcyB0aGFuIDFNSFogb24gUFBDIHBsYXRmb3JtLCBiZWNhdXNlIGlmIFRCIGZyZXEN
Cj4gPiA+ID4gPiA+IGxlc3MgdGhhbiAxTUhaLCB0aGUgcHJlY2lzaW9uIHRpbWUgd2lsbCBiZWNv
bWUgdmVyeSBwb29yIGFuZA0KPiA+ID4gPiA+ID4gc3lzdGVtIHJlc3BvbnNlIHRpbWUgd2lsbCBi
ZSBzbG93ZXIuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBOb3Qgc3VyZSB3aGF0IHlvdSBhcmUgZGVz
Y3JpYmluZyBoZXJlIHJlbGF0ZWQgdG8gZGl2aWRlIGJ5IHplcm8NCj4gPiA+ID4gPiB3ZSBhcmUg
bWVudGlvbmluZy4NCj4gPiA+ID4gPiBZb3UgYXJlIHRhbGtpbmcgYWJvdXQgaWYgdGJfdGlja3Nf
cGVyX3VzZWMgaXMgWkVSTyBhbmQgd2UgYXJlDQo+ID4gPiA+ID4gdGFsa2luZyBhYm91dCBpZiAo
MTAwMC90Yl90aWNrc19wZXJfdXNlYykgd2lsbCBiZSB6ZXJvLg0KPiA+ID4gPiA+DQo+ID4gPiA+
ID4gQlRXLCBkaXZfdTY0KCkgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIGRpdmlkZXIgaXMgemVyby4N
Cj4gPiA+DQo+ID4gPiBIb3c/ICBXaGVuIEkgY2hlY2tlZCB5ZXN0ZXJkYXkgaXQgbG9va2VkIGxp
a2UgZGl2X3U2NCgpIG1hcHBlZCB0byBhDQo+ID4gPiBoYXJkd2FyZSBkaXZpc2lvbiBvbiA2NC1i
aXQgdGFyZ2V0cy4gIEluIGFueSBjYXNlIGl0J3Mgbm90IGdvb2QgdG8NCj4gPiA+IHJlbHkgb24g
c3VjaCBiZWhhdmlvci4NCj4gPiA+DQo+ID4gPiA+IGN5Y2xlID0gZGl2X3U2NChucywgMTAwMCAv
IHRiX3RpY2tzX3Blcl91c2VjKTsgRm9yIHRoaXMsIEkgdGhpbmsNCj4gPiA+ID4gd2Ugd2VyZSBk
aXNjdXNzaW5nIHRoZSB0d28gaXNzdWVzOg0KPiA+ID4gPg0KPiA+ID4gPiAxLiBTY290dCB0YWxr
aW5nIGFib3V0LCB3aGVuIHRoZSB0Yl90aWNrc19wZXJfdXNlYyBpcyBhIHplcm8uDQo+ID4gPg0K
PiA+ID4gTm8gSSB3YXNuJ3QuICBJIHdhcyB0YWxraW5nIGFib3V0IHdoZW4gdGJfdGlja3NfcGVy
X3VzZWMgPiAxMDAwLCBhbmQNCj4gPiA+IHRodXMNCj4gPiA+ICIxMDAwIC8gdGJfdGlja3NfcGVy
X3VzZWMiIGlzIHplcm8uICBZb3Ugc2FpZCB0aGF0IHRoZSByZXN1bHQgd291bGQNCj4gPiA+IGJl
IG5zIGluIHRoYXQgY2FzZS4NCj4gPiA+DQo+ID4gPiA+IDIuIFlvdSBhcmUgdGFsa2luZyBhYm91
dCAxMDAwL3RiX3RpY2tzX3Blcl91c2VjIGlzIGEgemVyby4NCj4gPiA+ID4gVGhpcyBzaXR1YXRp
b24gaXMgYWJvdXQgVEIgZnJlcSA+IDFHSFouDQo+ID4gPiA+DQo+ID4gPiA+IEkgd2lsbCBmaXgg
dGhpcyBpc3N1ZS4gTGlrZSBJIHNhaWQgYmVmb3JlLCAiSWYgdGltZWJhc2UgZnJlcXVlbmN5DQo+
ID4gPiA+ID4gMUdIeiwgdGhpcyBzaG91bGQgYmUgInRiX3RpY2tzX3Blcl91c2VjIC8gMTAwMCIg
YW5kIHRvIGdldA0KPiA+ID4gdGJfdGlja3NfcGVyX25zZWMuDQo+ID4gPiA+IFRoaXMgc2hvdWxk
IGJlIGNoYW5nZWQgdG8gImN5Y2xlID0gbnMgKiB0Yl90aWNrc19wZXJfbnNlYzsiIg0KPiA+ID4g
Pg0KPiA+ID4gPiAjZGVmaW5lIFRCX0ZSRVFfMUdIWgkxMDAwDQo+ID4gPiA+DQo+ID4gPiA+IElm
ICh0Yl90aWNrc19wZXJfdXNlYyA+IFRCX0ZSRVFfMUdIWikNCj4gPiA+ID4gCWN5Y2xlID0gbnMg
KiAodGJfdGlja3NfcGVyX3VzZWMgLyAxMDAwKTsgZWxzZQ0KPiA+ID4gPiAJY3ljbGUgPSBkaXZf
dTY0KG5zLCAxMDAwIC8gdGJfdGlja3NfcGVyX3VzZWMpOw0KPiA+ID4gPg0KPiA+ID4gPiBob3cg
YWJvdXQgdGhpcz8gOikNCj4gPiA+DQo+ID4gPiBJIHN1Z2dlc3RlZCBhbiBhbHRlcm5hdGl2ZSB0
byBzYXRpc2Z5IHlvdXIgY29tcGxhaW50IHRoYXQgaXQncyBoYXJkDQo+ID4gPiB0byB0ZXN0IG9u
ZSBvZiB0aG9zZSBpZi9lbHNlIGJyYW5jaGVzLg0KPiA+ID4NCj4gPiA+IFBsdXMsIHlvdXIgdmVy
c2lvbiB3aWxsIGJlIHF1aXRlIGluYWNjdXJhdGUgaWYgKGUuZy4pDQo+ID4gPiB0Yl90aWNrc19w
ZXJfdXNlYyBpcyA1MDEsIG9yIDE5OTkuDQo+ID4gPg0KPiA+IGN5Y2xlID0gZGl2X3U2NChucyAq
IHRiX3RpY2tzX3Blcl91c2VjLCAxMDAwKTsgSXQncyBsb29rIGdvb2QuDQo+ID4gQnV0IHdoeSB3
ZSBuZWVkOg0KPiA+IAlpZiAobnMgPj0gMTAwMDApDQo+ID4gCQljeWNsZSA9ICgobnMgKyA1MDAp
IC8gMTAwMCkgKiB0Yl90aWNrc19wZXJfdXNlYzsgPw0KPiA+DQo+ID4gSSB0aGluayAiY3ljbGUg
PSBkaXZfdTY0KG5zICogdGJfdGlja3NfcGVyX3VzZWMsIDEwMDApIiBpcyBnb29kDQo+ID4gZW5v
dWdoLiA6KQ0KPiANCj4gSXQncyB0byBkZWFsIHdpdGggb3ZlcmZsb3cgaWYgYSB2ZXJ5IGxhcmdl
IHZhbHVlIG9mIG5zIGlzIHByb3ZpZGVkDQo+IChhbmQvb3IgdGJfdGlja3NfcGVyX3VzZWMgaXMg
bGFyZ2VyIHRoYW4gd2UgZXhwZWN0KS4NCj4gDQo6KSwgYXMgSSB0aGluaywgaXQncyB0byBkZWFs
IHdpdGggb3ZlcmZsb3cuIEJ1dCB5b3UgdmVyc2lvbiBjYW5ub3QgZG8gZGVhbCB3aXRoIGl0Lg0K
QmVjYXVzZSBucyBpcyB1NjQsIGlmIG5zID4gMHhmZmZmZmZmZl9mZmZmZmUwYiwgbnMgKyA1MDAg
d2lsbCBvdmVyZmxvdywgQW5kIGlmIHRiX3RpY2tzX3Blcl91c2VjID4gMTAwMCBhbmQgbnMgPiAo
MHhmZmZmZmZmZl9mZmZmZmZmZiAvIDEwKSBjeWNsZSBhbHNvIHdpbGwgb3ZlcmZsb3cuDQoNCkkg
dGhpbmsgd2UgbmVlZCB0byBkbyB0aGlzOg0KDQojZGVmaW5lIFU2NF9MT1dfTUFTSyAgICAgICAg
ICAgIDB4ZmZmZmZmZmZVTEwNCiNkZWZpbmUgVTY0X01BU0sgICAgICAgICAgICAgICAgMHhmZmZm
ZmZmZmZmZmZmZmZmVUxMDQoNCiAgICAgICAgdTMyIHRtcF9yZW07DQogICAgICAgIHU2NCBuc191
X3JlbSwgbnNfdSwgbnNfbCwgbnNfbF9jYXJyeTsNCiAgICAgICAgdTY0IGN5Y2xlOw0KDQogICAg
ICAgIG5zX3UgPSBucyA+PiAzMjsNCiAgICAgICAgbnNfbCA9IG5zICYgVTY0X0xPV19NQVNLOw0K
DQogICAgICAgIG5zX2wgKj0gdGJfdGlja3NfcGVyX3VzZWM7DQogICAgICAgIG5zX2xfY2Fycnkg
PSBuc19sID4+IDMyOw0KICAgICAgICBuc191ICo9IHRiX3RpY2tzX3Blcl91c2VjOw0KICAgICAg
ICBuc191ICs9IG5zX2xfY2Fycnk7DQoNCiAgICAgICAgbnNfdSA9IGRpdl91NjRfcmVtKG5zX3Us
IDEwMDAsICZ0bXBfcmVtKTsNCiAgICAgICAgbnNfdV9yZW0gPSB0bXBfcmVtOw0KICAgICAgICBu
c19sID0gKG5zX2wgJiBVNjRfTE9XX01BU0spIHwgKChuc191X3JlbSkgPDwgMzIpOw0KICAgICAg
ICBuc19sID0gZGl2X3U2NChuc19sLCAxMDAwKTsNCg0KICAgICAgICBpZiAobnNfdSA+PiAzMikN
CiAgICAgICAgICAgICAgICBjeWNsZSA9IFU2NF9NQVNLOw0KICAgICAgICBlbHNlDQogICAgICAg
ICAgICAgICAgY3ljbGUgPSAobnNfdSA8PCAzMikgfCAobnNfbCAmIFU2NF9MT1dfTUFTSyk7DQoN
CkkgaGFzIGFscmVhZHkgdGVzdGVkIHRoaXMgY29kZSwgYW5kIHdvcmtzIGdvb2QuIDopDQoNCj4g
LVNjb3R0DQo+IA0KDQo=

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-09-29  6:57                     ` Wang Dongsheng-B40534
@ 2013-09-30 23:06                       ` Scott Wood
  2013-10-08  3:58                         ` Wang Dongsheng-B40534
  0 siblings, 1 reply; 18+ messages in thread
From: Scott Wood @ 2013-09-30 23:06 UTC (permalink / raw)
  To: Wang Dongsheng-B40534
  Cc: Wood Scott-B07421, linuxppc-dev, Bhushan Bharat-R65777

On Sun, 2013-09-29 at 01:57 -0500, Wang Dongsheng-B40534 wrote:
> 
> > -----Original Message-----
> > From: Wood Scott-B07421
> > Sent: Saturday, September 28, 2013 5:33 AM
> > To: Wang Dongsheng-B40534
> > Cc: Wood Scott-B07421; Bhushan Bharat-R65777; linuxppc-
> > dev@lists.ozlabs.org
> > Subject: Re: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and
> > altivec idle
> > 
> > On Thu, 2013-09-26 at 22:34 -0500, Wang Dongsheng-B40534 wrote:
> > > cycle = div_u64(ns * tb_ticks_per_usec, 1000); It's look good.
> > > But why we need:
> > > 	if (ns >= 10000)
> > > 		cycle = ((ns + 500) / 1000) * tb_ticks_per_usec; ?
> > >
> > > I think "cycle = div_u64(ns * tb_ticks_per_usec, 1000)" is good
> > > enough. :)
> > 
> > It's to deal with overflow if a very large value of ns is provided
> > (and/or tb_ticks_per_usec is larger than we expect).
> > 
> :), as I think, it's to deal with overflow. But you version cannot do deal with it.
> Because ns is u64, if ns > 0xffffffff_fffffe0b, ns + 500 will overflow, And if tb_ticks_per_usec > 1000 and ns > (0xffffffff_ffffffff / 10) cycle also will overflow.

Sigh... It significantly increases the value of ns at which you'll get
overflow problems. :-)  I was more concerned with
large-but-somewhat-reasonable values of ns (e.g. than with trying to
handle every possible input.  Even without that test, getting overflow
is stretching the bounds of reasonableness (e.g. a 1 GHz timebase would
require a timeout of over 7 months to overflow), but it was low-hanging
fruit.  And the worst case is we go to pw20 sooner than the user wanted,
so let's not go too overboard.

I doubt you would see > 0xffffffff_fffffe0b except if someone is trying
to disable it by setting 0xffffffff_ffffffff even though a separate API
is provided to cleanly disable it.

> I think we need to do this:
> 
> #define U64_LOW_MASK            0xffffffffULL
> #define U64_MASK                0xffffffffffffffffULL
> 
>         u32 tmp_rem;
>         u64 ns_u_rem, ns_u, ns_l, ns_l_carry;
>         u64 cycle;
> 
>         ns_u = ns >> 32;
>         ns_l = ns & U64_LOW_MASK;
> 
>         ns_l *= tb_ticks_per_usec;
>         ns_l_carry = ns_l >> 32;
>         ns_u *= tb_ticks_per_usec;
>         ns_u += ns_l_carry;
> 
>         ns_u = div_u64_rem(ns_u, 1000, &tmp_rem);
>         ns_u_rem = tmp_rem;
>         ns_l = (ns_l & U64_LOW_MASK) | ((ns_u_rem) << 32);
>         ns_l = div_u64(ns_l, 1000);
> 
>         if (ns_u >> 32)
>                 cycle = U64_MASK;
>         else
>                 cycle = (ns_u << 32) | (ns_l & U64_LOW_MASK);
> 
> I has already tested this code, and works good. :)

Ugh.  I don't think we need to get this complicated (and I'd rather not
spend the time verifying the correctness of this).

If for some reason we did need something like this in some other context
(I don't want to see it just for pw20), I'd be more inclined to see
general 128-bit mult/divide support.

-Scott

^ permalink raw reply	[flat|nested] 18+ messages in thread

* RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-09-30 23:06                       ` Scott Wood
@ 2013-10-08  3:58                         ` Wang Dongsheng-B40534
  2013-10-08 14:50                           ` Scott Wood
  0 siblings, 1 reply; 18+ messages in thread
From: Wang Dongsheng-B40534 @ 2013-10-08  3:58 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: linuxppc-dev, Bhushan Bharat-R65777

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogVHVlc2RheSwgT2N0b2JlciAwMSwgMjAxMyA3OjA2IEFNDQo+IFRvOiBXYW5n
IERvbmdzaGVuZy1CNDA1MzQNCj4gQ2M6IFdvb2QgU2NvdHQtQjA3NDIxOyBCaHVzaGFuIEJoYXJh
dC1SNjU3Nzc7IGxpbnV4cHBjLQ0KPiBkZXZAbGlzdHMub3psYWJzLm9yZw0KPiBTdWJqZWN0OiBS
ZTogW1BBVENIIHY0IDQvNF0gcG93ZXJwYy84NXh4OiBhZGQgc3lzZnMgZm9yIHB3MjAgc3RhdGUg
YW5kDQo+IGFsdGl2ZWMgaWRsZQ0KPiANCj4gT24gU3VuLCAyMDEzLTA5LTI5IGF0IDAxOjU3IC0w
NTAwLCBXYW5nIERvbmdzaGVuZy1CNDA1MzQgd3JvdGU6DQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2lu
YWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBXb29kIFNjb3R0LUIwNzQyMQ0KPiA+ID4gU2Vu
dDogU2F0dXJkYXksIFNlcHRlbWJlciAyOCwgMjAxMyA1OjMzIEFNDQo+ID4gPiBUbzogV2FuZyBE
b25nc2hlbmctQjQwNTM0DQo+ID4gPiBDYzogV29vZCBTY290dC1CMDc0MjE7IEJodXNoYW4gQmhh
cmF0LVI2NTc3NzsgbGludXhwcGMtDQo+ID4gPiBkZXZAbGlzdHMub3psYWJzLm9yZw0KPiA+ID4g
U3ViamVjdDogUmU6IFtQQVRDSCB2NCA0LzRdIHBvd2VycGMvODV4eDogYWRkIHN5c2ZzIGZvciBw
dzIwIHN0YXRlDQo+ID4gPiBhbmQgYWx0aXZlYyBpZGxlDQo+ID4gPg0KPiA+ID4gT24gVGh1LCAy
MDEzLTA5LTI2IGF0IDIyOjM0IC0wNTAwLCBXYW5nIERvbmdzaGVuZy1CNDA1MzQgd3JvdGU6DQo+
ID4gPiA+IGN5Y2xlID0gZGl2X3U2NChucyAqIHRiX3RpY2tzX3Blcl91c2VjLCAxMDAwKTsgSXQn
cyBsb29rIGdvb2QuDQo+ID4gPiA+IEJ1dCB3aHkgd2UgbmVlZDoNCj4gPiA+ID4gCWlmIChucyA+
PSAxMDAwMCkNCj4gPiA+ID4gCQljeWNsZSA9ICgobnMgKyA1MDApIC8gMTAwMCkgKiB0Yl90aWNr
c19wZXJfdXNlYzsgPw0KPiA+ID4gPg0KPiA+ID4gPiBJIHRoaW5rICJjeWNsZSA9IGRpdl91NjQo
bnMgKiB0Yl90aWNrc19wZXJfdXNlYywgMTAwMCkiIGlzIGdvb2QNCj4gPiA+ID4gZW5vdWdoLiA6
KQ0KPiA+ID4NCj4gPiA+IEl0J3MgdG8gZGVhbCB3aXRoIG92ZXJmbG93IGlmIGEgdmVyeSBsYXJn
ZSB2YWx1ZSBvZiBucyBpcyBwcm92aWRlZA0KPiA+ID4gKGFuZC9vciB0Yl90aWNrc19wZXJfdXNl
YyBpcyBsYXJnZXIgdGhhbiB3ZSBleHBlY3QpLg0KPiA+ID4NCj4gPiA6KSwgYXMgSSB0aGluaywg
aXQncyB0byBkZWFsIHdpdGggb3ZlcmZsb3cuIEJ1dCB5b3UgdmVyc2lvbiBjYW5ub3QgZG8NCj4g
ZGVhbCB3aXRoIGl0Lg0KPiA+IEJlY2F1c2UgbnMgaXMgdTY0LCBpZiBucyA+IDB4ZmZmZmZmZmZf
ZmZmZmZlMGIsIG5zICsgNTAwIHdpbGwgb3ZlcmZsb3csDQo+IEFuZCBpZiB0Yl90aWNrc19wZXJf
dXNlYyA+IDEwMDAgYW5kIG5zID4gKDB4ZmZmZmZmZmZfZmZmZmZmZmYgLyAxMCkgY3ljbGUNCj4g
YWxzbyB3aWxsIG92ZXJmbG93Lg0KPiANCj4gU2lnaC4uLiBJdCBzaWduaWZpY2FudGx5IGluY3Jl
YXNlcyB0aGUgdmFsdWUgb2YgbnMgYXQgd2hpY2ggeW91J2xsIGdldA0KPiBvdmVyZmxvdyBwcm9i
bGVtcy4gOi0pICBJIHdhcyBtb3JlIGNvbmNlcm5lZCB3aXRoIGxhcmdlLWJ1dC1zb21ld2hhdC0N
Cj4gcmVhc29uYWJsZSB2YWx1ZXMgb2YgbnMgKGUuZy4gdGhhbiB3aXRoIHRyeWluZyB0byBoYW5k
bGUgZXZlcnkgcG9zc2libGUNCj4gaW5wdXQuICBFdmVuIHdpdGhvdXQgdGhhdCB0ZXN0LCBnZXR0
aW5nIG92ZXJmbG93IGlzIHN0cmV0Y2hpbmcgdGhlIGJvdW5kcw0KPiBvZiByZWFzb25hYmxlbmVz
cyAoZS5nLiBhIDEgR0h6IHRpbWViYXNlIHdvdWxkIHJlcXVpcmUgYSB0aW1lb3V0IG9mIG92ZXIN
Cj4gNyBtb250aHMgdG8gb3ZlcmZsb3cpLCBidXQgaXQgd2FzIGxvdy1oYW5naW5nIGZydWl0LiAg
QW5kIHRoZSB3b3JzdCBjYXNlDQo+IGlzIHdlIGdvIHRvIHB3MjAgc29vbmVyIHRoYW4gdGhlIHVz
ZXIgd2FudGVkLCBzbyBsZXQncyBub3QgZ28gdG9vDQo+IG92ZXJib2FyZC4NCj4gDQo+IEkgZG91
YnQgeW91IHdvdWxkIHNlZSA+IDB4ZmZmZmZmZmZfZmZmZmZlMGIgZXhjZXB0IGlmIHNvbWVvbmUg
aXMgdHJ5aW5nDQo+IHRvIGRpc2FibGUgaXQgYnkgc2V0dGluZyAweGZmZmZmZmZmX2ZmZmZmZmZm
IGV2ZW4gdGhvdWdoIGEgc2VwYXJhdGUgQVBJDQo+IGlzIHByb3ZpZGVkIHRvIGNsZWFubHkgZGlz
YWJsZSBpdC4NCj4gDQo+ID4gSSB0aGluayB3ZSBuZWVkIHRvIGRvIHRoaXM6DQo+ID4NCj4gPiAj
ZGVmaW5lIFU2NF9MT1dfTUFTSyAgICAgICAgICAgIDB4ZmZmZmZmZmZVTEwNCj4gPiAjZGVmaW5l
IFU2NF9NQVNLICAgICAgICAgICAgICAgIDB4ZmZmZmZmZmZmZmZmZmZmZlVMTA0KPiA+DQo+ID4g
ICAgICAgICB1MzIgdG1wX3JlbTsNCj4gPiAgICAgICAgIHU2NCBuc191X3JlbSwgbnNfdSwgbnNf
bCwgbnNfbF9jYXJyeTsNCj4gPiAgICAgICAgIHU2NCBjeWNsZTsNCj4gPg0KPiA+ICAgICAgICAg
bnNfdSA9IG5zID4+IDMyOw0KPiA+ICAgICAgICAgbnNfbCA9IG5zICYgVTY0X0xPV19NQVNLOw0K
PiA+DQo+ID4gICAgICAgICBuc19sICo9IHRiX3RpY2tzX3Blcl91c2VjOw0KPiA+ICAgICAgICAg
bnNfbF9jYXJyeSA9IG5zX2wgPj4gMzI7DQo+ID4gICAgICAgICBuc191ICo9IHRiX3RpY2tzX3Bl
cl91c2VjOw0KPiA+ICAgICAgICAgbnNfdSArPSBuc19sX2NhcnJ5Ow0KPiA+DQo+ID4gICAgICAg
ICBuc191ID0gZGl2X3U2NF9yZW0obnNfdSwgMTAwMCwgJnRtcF9yZW0pOw0KPiA+ICAgICAgICAg
bnNfdV9yZW0gPSB0bXBfcmVtOw0KPiA+ICAgICAgICAgbnNfbCA9IChuc19sICYgVTY0X0xPV19N
QVNLKSB8ICgobnNfdV9yZW0pIDw8IDMyKTsNCj4gPiAgICAgICAgIG5zX2wgPSBkaXZfdTY0KG5z
X2wsIDEwMDApOw0KPiA+DQo+ID4gICAgICAgICBpZiAobnNfdSA+PiAzMikNCj4gPiAgICAgICAg
ICAgICAgICAgY3ljbGUgPSBVNjRfTUFTSzsNCj4gPiAgICAgICAgIGVsc2UNCj4gPiAgICAgICAg
ICAgICAgICAgY3ljbGUgPSAobnNfdSA8PCAzMikgfCAobnNfbCAmIFU2NF9MT1dfTUFTSyk7DQo+
ID4NCj4gPiBJIGhhcyBhbHJlYWR5IHRlc3RlZCB0aGlzIGNvZGUsIGFuZCB3b3JrcyBnb29kLiA6
KQ0KPiANCj4gVWdoLiAgSSBkb24ndCB0aGluayB3ZSBuZWVkIHRvIGdldCB0aGlzIGNvbXBsaWNh
dGVkIChhbmQgSSdkIHJhdGhlciBub3QNCj4gc3BlbmQgdGhlIHRpbWUgdmVyaWZ5aW5nIHRoZSBj
b3JyZWN0bmVzcyBvZiB0aGlzKS4NCj4gDQo+IElmIGZvciBzb21lIHJlYXNvbiB3ZSBkaWQgbmVl
ZCBzb21ldGhpbmcgbGlrZSB0aGlzIGluIHNvbWUgb3RoZXIgY29udGV4dA0KPiAoSSBkb24ndCB3
YW50IHRvIHNlZSBpdCBqdXN0IGZvciBwdzIwKSwgSSdkIGJlIG1vcmUgaW5jbGluZWQgdG8gc2Vl
DQo+IGdlbmVyYWwgMTI4LWJpdCBtdWx0L2RpdmlkZSBzdXBwb3J0Lg0KPiANCkkgd291bGQgbGlr
ZSB0byB1c2UgbXkgdmVyc2lvbiw6KSwgYmVjYXVzZSBpdCBjYW4gaGFuZGxlIGFueSBzaXR1YXRp
b24gYW5kIHdlIGRvIG5vdCBuZWVkIHRvIHJlc3RyaWN0IHVzZXJzLg0KSGVyZSBpcyBhIGtpbmQg
b2Ygc3BlY2lhbCB3YXkgdG8gZ2V0IHRoZSBjeWNsZS4gSWYgdGhpcyAxMjgtYml0IHNpdHVhdGlv
biBpcyBtb3JlIGFuZCBtb3JlLCBhdCB0aGF0IHRpbWUgd2UgZ28gdG8gc3VwcG9ydCBpdC4NCg0K
LWRvbmdzaGVuZw0KDQo+IC1TY290dA0KPiANCg0K

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-10-08  3:58                         ` Wang Dongsheng-B40534
@ 2013-10-08 14:50                           ` Scott Wood
  2013-10-11  7:43                             ` Wang Dongsheng-B40534
  0 siblings, 1 reply; 18+ messages in thread
From: Scott Wood @ 2013-10-08 14:50 UTC (permalink / raw)
  To: Wang Dongsheng-B40534
  Cc: Wood Scott-B07421, linuxppc-dev, Bhushan Bharat-R65777

On Mon, 2013-10-07 at 22:58 -0500, Wang Dongsheng-B40534 wrote:
> 
> > -----Original Message-----
> > From: Wood Scott-B07421
> > Sent: Tuesday, October 01, 2013 7:06 AM
> > To: Wang Dongsheng-B40534
> > Cc: Wood Scott-B07421; Bhushan Bharat-R65777; linuxppc-
> > dev@lists.ozlabs.org
> > Subject: Re: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and
> > altivec idle
> > 
> > On Sun, 2013-09-29 at 01:57 -0500, Wang Dongsheng-B40534 wrote:
> > > I think we need to do this:
> > >
> > > #define U64_LOW_MASK            0xffffffffULL
> > > #define U64_MASK                0xffffffffffffffffULL
> > >
> > >         u32 tmp_rem;
> > >         u64 ns_u_rem, ns_u, ns_l, ns_l_carry;
> > >         u64 cycle;
> > >
> > >         ns_u = ns >> 32;
> > >         ns_l = ns & U64_LOW_MASK;
> > >
> > >         ns_l *= tb_ticks_per_usec;
> > >         ns_l_carry = ns_l >> 32;
> > >         ns_u *= tb_ticks_per_usec;
> > >         ns_u += ns_l_carry;
> > >
> > >         ns_u = div_u64_rem(ns_u, 1000, &tmp_rem);
> > >         ns_u_rem = tmp_rem;
> > >         ns_l = (ns_l & U64_LOW_MASK) | ((ns_u_rem) << 32);
> > >         ns_l = div_u64(ns_l, 1000);
> > >
> > >         if (ns_u >> 32)
> > >                 cycle = U64_MASK;
> > >         else
> > >                 cycle = (ns_u << 32) | (ns_l & U64_LOW_MASK);
> > >
> > > I has already tested this code, and works good. :)
> > 
> > Ugh.  I don't think we need to get this complicated (and I'd rather not
> > spend the time verifying the correctness of this).
> > 
> > If for some reason we did need something like this in some other context
> > (I don't want to see it just for pw20), I'd be more inclined to see
> > general 128-bit mult/divide support.
> > 
> I would like to use my version,:), because it can handle any situation and we do not need to restrict users.

It also would take more time to review than I have to spend on it, not
to mention the impact on anyone in the future that wants to understand
or maintain this code -- all for very unlikely situations (and the
"failure" in those very unlikely situations is just that we go into PW20
more often than intended).

-Scott

^ permalink raw reply	[flat|nested] 18+ messages in thread

* RE: [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle
  2013-10-08 14:50                           ` Scott Wood
@ 2013-10-11  7:43                             ` Wang Dongsheng-B40534
  0 siblings, 0 replies; 18+ messages in thread
From: Wang Dongsheng-B40534 @ 2013-10-11  7:43 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: linuxppc-dev, Bhushan Bharat-R65777

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogVHVlc2RheSwgT2N0b2JlciAwOCwgMjAxMyAxMDo1MCBQTQ0KPiBUbzogV2Fu
ZyBEb25nc2hlbmctQjQwNTM0DQo+IENjOiBXb29kIFNjb3R0LUIwNzQyMTsgQmh1c2hhbiBCaGFy
YXQtUjY1Nzc3OyBsaW51eHBwYy0NCj4gZGV2QGxpc3RzLm96bGFicy5vcmcNCj4gU3ViamVjdDog
UmU6IFtQQVRDSCB2NCA0LzRdIHBvd2VycGMvODV4eDogYWRkIHN5c2ZzIGZvciBwdzIwIHN0YXRl
IGFuZA0KPiBhbHRpdmVjIGlkbGUNCj4gDQo+IE9uIE1vbiwgMjAxMy0xMC0wNyBhdCAyMjo1OCAt
MDUwMCwgV2FuZyBEb25nc2hlbmctQjQwNTM0IHdyb3RlOg0KPiA+DQo+ID4gPiAtLS0tLU9yaWdp
bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogV29vZCBTY290dC1CMDc0MjENCj4gPiA+IFNl
bnQ6IFR1ZXNkYXksIE9jdG9iZXIgMDEsIDIwMTMgNzowNiBBTQ0KPiA+ID4gVG86IFdhbmcgRG9u
Z3NoZW5nLUI0MDUzNA0KPiA+ID4gQ2M6IFdvb2QgU2NvdHQtQjA3NDIxOyBCaHVzaGFuIEJoYXJh
dC1SNjU3Nzc7IGxpbnV4cHBjLQ0KPiA+ID4gZGV2QGxpc3RzLm96bGFicy5vcmcNCj4gPiA+IFN1
YmplY3Q6IFJlOiBbUEFUQ0ggdjQgNC80XSBwb3dlcnBjLzg1eHg6IGFkZCBzeXNmcyBmb3IgcHcy
MCBzdGF0ZQ0KPiBhbmQNCj4gPiA+IGFsdGl2ZWMgaWRsZQ0KPiA+ID4NCj4gPiA+IE9uIFN1biwg
MjAxMy0wOS0yOSBhdCAwMTo1NyAtMDUwMCwgV2FuZyBEb25nc2hlbmctQjQwNTM0IHdyb3RlOg0K
PiA+ID4gPiBJIHRoaW5rIHdlIG5lZWQgdG8gZG8gdGhpczoNCj4gPiA+ID4NCj4gPiA+ID4gI2Rl
ZmluZSBVNjRfTE9XX01BU0sgICAgICAgICAgICAweGZmZmZmZmZmVUxMDQo+ID4gPiA+ICNkZWZp
bmUgVTY0X01BU0sgICAgICAgICAgICAgICAgMHhmZmZmZmZmZmZmZmZmZmZmVUxMDQo+ID4gPiA+
DQo+ID4gPiA+ICAgICAgICAgdTMyIHRtcF9yZW07DQo+ID4gPiA+ICAgICAgICAgdTY0IG5zX3Vf
cmVtLCBuc191LCBuc19sLCBuc19sX2NhcnJ5Ow0KPiA+ID4gPiAgICAgICAgIHU2NCBjeWNsZTsN
Cj4gPiA+ID4NCj4gPiA+ID4gICAgICAgICBuc191ID0gbnMgPj4gMzI7DQo+ID4gPiA+ICAgICAg
ICAgbnNfbCA9IG5zICYgVTY0X0xPV19NQVNLOw0KPiA+ID4gPg0KPiA+ID4gPiAgICAgICAgIG5z
X2wgKj0gdGJfdGlja3NfcGVyX3VzZWM7DQo+ID4gPiA+ICAgICAgICAgbnNfbF9jYXJyeSA9IG5z
X2wgPj4gMzI7DQo+ID4gPiA+ICAgICAgICAgbnNfdSAqPSB0Yl90aWNrc19wZXJfdXNlYzsNCj4g
PiA+ID4gICAgICAgICBuc191ICs9IG5zX2xfY2Fycnk7DQo+ID4gPiA+DQo+ID4gPiA+ICAgICAg
ICAgbnNfdSA9IGRpdl91NjRfcmVtKG5zX3UsIDEwMDAsICZ0bXBfcmVtKTsNCj4gPiA+ID4gICAg
ICAgICBuc191X3JlbSA9IHRtcF9yZW07DQo+ID4gPiA+ICAgICAgICAgbnNfbCA9IChuc19sICYg
VTY0X0xPV19NQVNLKSB8ICgobnNfdV9yZW0pIDw8IDMyKTsNCj4gPiA+ID4gICAgICAgICBuc19s
ID0gZGl2X3U2NChuc19sLCAxMDAwKTsNCj4gPiA+ID4NCj4gPiA+ID4gICAgICAgICBpZiAobnNf
dSA+PiAzMikNCj4gPiA+ID4gICAgICAgICAgICAgICAgIGN5Y2xlID0gVTY0X01BU0s7DQo+ID4g
PiA+ICAgICAgICAgZWxzZQ0KPiA+ID4gPiAgICAgICAgICAgICAgICAgY3ljbGUgPSAobnNfdSA8
PCAzMikgfCAobnNfbCAmIFU2NF9MT1dfTUFTSyk7DQo+ID4gPiA+DQo+ID4gPiA+IEkgaGFzIGFs
cmVhZHkgdGVzdGVkIHRoaXMgY29kZSwgYW5kIHdvcmtzIGdvb2QuIDopDQo+ID4gPg0KPiA+ID4g
VWdoLiAgSSBkb24ndCB0aGluayB3ZSBuZWVkIHRvIGdldCB0aGlzIGNvbXBsaWNhdGVkIChhbmQg
SSdkIHJhdGhlcg0KPiBub3QNCj4gPiA+IHNwZW5kIHRoZSB0aW1lIHZlcmlmeWluZyB0aGUgY29y
cmVjdG5lc3Mgb2YgdGhpcykuDQo+ID4gPg0KPiA+ID4gSWYgZm9yIHNvbWUgcmVhc29uIHdlIGRp
ZCBuZWVkIHNvbWV0aGluZyBsaWtlIHRoaXMgaW4gc29tZSBvdGhlcg0KPiBjb250ZXh0DQo+ID4g
PiAoSSBkb24ndCB3YW50IHRvIHNlZSBpdCBqdXN0IGZvciBwdzIwKSwgSSdkIGJlIG1vcmUgaW5j
bGluZWQgdG8gc2VlDQo+ID4gPiBnZW5lcmFsIDEyOC1iaXQgbXVsdC9kaXZpZGUgc3VwcG9ydC4N
Cj4gPiA+DQo+ID4gSSB3b3VsZCBsaWtlIHRvIHVzZSBteSB2ZXJzaW9uLDopLCBiZWNhdXNlIGl0
IGNhbiBoYW5kbGUgYW55IHNpdHVhdGlvbg0KPiBhbmQgd2UgZG8gbm90IG5lZWQgdG8gcmVzdHJp
Y3QgdXNlcnMuDQo+IA0KPiBJdCBhbHNvIHdvdWxkIHRha2UgbW9yZSB0aW1lIHRvIHJldmlldyB0
aGFuIEkgaGF2ZSB0byBzcGVuZCBvbiBpdCwgbm90DQo+IHRvIG1lbnRpb24gdGhlIGltcGFjdCBv
biBhbnlvbmUgaW4gdGhlIGZ1dHVyZSB0aGF0IHdhbnRzIHRvIHVuZGVyc3RhbmQNCj4gb3IgbWFp
bnRhaW4gdGhpcyBjb2RlIC0tIGFsbCBmb3IgdmVyeSB1bmxpa2VseSBzaXR1YXRpb25zIChhbmQg
dGhlDQo+ICJmYWlsdXJlIiBpbiB0aG9zZSB2ZXJ5IHVubGlrZWx5IHNpdHVhdGlvbnMgaXMganVz
dCB0aGF0IHdlIGdvIGludG8gUFcyMA0KPiBtb3JlIG9mdGVuIHRoYW4gaW50ZW5kZWQpLg0KPiAN
Ck9LLCBJIHdpbGwgdXNlIHlvdXIgdmVyaXNvbiwgOikNCg0KICAgICAgICBpZiAobnMgPj0gMTAw
MDApDQogICAgICAgICAgICAgICAgY3ljbGUgPSAoKG5zICsgNTAwKSAvIDEwMDApICogdGJfdGlj
a3NfcGVyX3VzZWM7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICBjeWNsZSA9IGRpdl91
NjQoKHU2NClucyAqIHRiX3RpY2tzX3Blcl91c2VjLCAxMDAwKTsNCg0KLWRvbmdzaGVuZw0KDQo+
IC1TY290dA0KPiANCg0K

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2013-10-11  7:43 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-24  9:28 [PATCH v4 2/4] powerpc/85xx: add hardware automatically enter altivec idle state Dongsheng Wang
2013-09-24  9:28 ` [PATCH v4 3/4] powerpc/85xx: add hardware automatically enter pw20 state Dongsheng Wang
2013-09-24  9:28 ` [PATCH v4 4/4] powerpc/85xx: add sysfs for pw20 state and altivec idle Dongsheng Wang
2013-09-25  6:22   ` Bhushan Bharat-R65777
2013-09-25  8:10     ` Wang Dongsheng-B40534
2013-09-25  8:33       ` Bhushan Bharat-R65777
2013-09-25 17:56       ` Scott Wood
2013-09-26  2:32         ` Wang Dongsheng-B40534
2013-09-26  4:23           ` Bhushan Bharat-R65777
2013-09-26  6:18             ` Wang Dongsheng-B40534
2013-09-26 21:37               ` Scott Wood
2013-09-27  3:34                 ` Wang Dongsheng-B40534
2013-09-27 21:33                   ` Scott Wood
2013-09-29  6:57                     ` Wang Dongsheng-B40534
2013-09-30 23:06                       ` Scott Wood
2013-10-08  3:58                         ` Wang Dongsheng-B40534
2013-10-08 14:50                           ` Scott Wood
2013-10-11  7:43                             ` Wang Dongsheng-B40534

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).