Re: [PATCH] powerpc: eeh: stop using do_gettimeofday()

2017-11-05 Thread Russell Currey
On Sat, 2017-11-04 at 22:26 +0100, Arnd Bergmann wrote:
> This interface is inefficient and deprecated because of the y2038
> overflow.
> 
> ktime_get_seconds() is an appropriate replacement here, since it
> has sufficient granularity but is more efficient and uses monotonic
> time.
> 
> Signed-off-by: Arnd Bergmann 

Acked-by: Russell Currey 


Re: [PATCH] powerpc: eeh: stop using do_gettimeofday()

2017-11-05 Thread Andrew Donnellan

On 05/11/17 08:26, Arnd Bergmann wrote:

This interface is inefficient and deprecated because of the y2038
overflow.

ktime_get_seconds() is an appropriate replacement here, since it
has sufficient granularity but is more efficient and uses monotonic
time.

Signed-off-by: Arnd Bergmann 


Reviewed-by: Andrew Donnellan 


---
  arch/powerpc/include/asm/eeh.h   | 2 +-
  arch/powerpc/kernel/eeh_driver.c | 2 +-
  arch/powerpc/kernel/eeh_pe.c | 8 
  3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/powerpc/include/asm/eeh.h b/arch/powerpc/include/asm/eeh.h
index cd1df96335e5..5161c37dd039 100644
--- a/arch/powerpc/include/asm/eeh.h
+++ b/arch/powerpc/include/asm/eeh.h
@@ -93,7 +93,7 @@ struct eeh_pe {
struct pci_bus *bus;/* Top PCI bus for bus PE   */
int check_count;/* Times of ignored error   */
int freeze_count;   /* Times of froze up*/
-   struct timeval tstamp;  /* Time on first-time freeze*/
+   time64_t tstamp;/* Time on first-time freeze*/
int false_positives;/* Times of reported #ff's  */
atomic_t pass_dev_cnt;  /* Count of passed through devs */
struct eeh_pe *parent;  /* Parent PE*/
diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c
index 4e1b433f6cb5..4f71e4c9beb7 100644
--- a/arch/powerpc/kernel/eeh_driver.c
+++ b/arch/powerpc/kernel/eeh_driver.c
@@ -623,7 +623,7 @@ static int eeh_reset_device(struct eeh_pe *pe, struct 
pci_bus *bus,
struct eeh_rmv_data *rmv_data)
  {
struct pci_bus *frozen_bus = eeh_pe_bus_get(pe);
-   struct timeval tstamp;
+   time64_t tstamp;
int cnt, rc;
struct eeh_dev *edev;
  
diff --git a/arch/powerpc/kernel/eeh_pe.c b/arch/powerpc/kernel/eeh_pe.c

index 2e8d1b2b5af4..2d4956e97aa9 100644
--- a/arch/powerpc/kernel/eeh_pe.c
+++ b/arch/powerpc/kernel/eeh_pe.c
@@ -526,16 +526,16 @@ int eeh_rmv_from_parent_pe(struct eeh_dev *edev)
   */
  void eeh_pe_update_time_stamp(struct eeh_pe *pe)
  {
-   struct timeval tstamp;
+   time64_t tstamp;
  
  	if (!pe) return;
  
  	if (pe->freeze_count <= 0) {

pe->freeze_count = 0;
-   do_gettimeofday(>tstamp);
+   pe->tstamp = ktime_get_seconds();
} else {
-   do_gettimeofday();
-   if (tstamp.tv_sec - pe->tstamp.tv_sec > 3600) {
+   tstamp = ktime_get_seconds();
+   if (tstamp - pe->tstamp > 3600) {
pe->tstamp = tstamp;
pe->freeze_count = 0;
}



--
Andrew Donnellan  OzLabs, ADL Canberra
andrew.donnel...@au1.ibm.com  IBM Australia Limited



[PATCH] powerpc: eeh: stop using do_gettimeofday()

2017-11-04 Thread Arnd Bergmann
This interface is inefficient and deprecated because of the y2038
overflow.

ktime_get_seconds() is an appropriate replacement here, since it
has sufficient granularity but is more efficient and uses monotonic
time.

Signed-off-by: Arnd Bergmann 
---
 arch/powerpc/include/asm/eeh.h   | 2 +-
 arch/powerpc/kernel/eeh_driver.c | 2 +-
 arch/powerpc/kernel/eeh_pe.c | 8 
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/powerpc/include/asm/eeh.h b/arch/powerpc/include/asm/eeh.h
index cd1df96335e5..5161c37dd039 100644
--- a/arch/powerpc/include/asm/eeh.h
+++ b/arch/powerpc/include/asm/eeh.h
@@ -93,7 +93,7 @@ struct eeh_pe {
struct pci_bus *bus;/* Top PCI bus for bus PE   */
int check_count;/* Times of ignored error   */
int freeze_count;   /* Times of froze up*/
-   struct timeval tstamp;  /* Time on first-time freeze*/
+   time64_t tstamp;/* Time on first-time freeze*/
int false_positives;/* Times of reported #ff's  */
atomic_t pass_dev_cnt;  /* Count of passed through devs */
struct eeh_pe *parent;  /* Parent PE*/
diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c
index 4e1b433f6cb5..4f71e4c9beb7 100644
--- a/arch/powerpc/kernel/eeh_driver.c
+++ b/arch/powerpc/kernel/eeh_driver.c
@@ -623,7 +623,7 @@ static int eeh_reset_device(struct eeh_pe *pe, struct 
pci_bus *bus,
struct eeh_rmv_data *rmv_data)
 {
struct pci_bus *frozen_bus = eeh_pe_bus_get(pe);
-   struct timeval tstamp;
+   time64_t tstamp;
int cnt, rc;
struct eeh_dev *edev;
 
diff --git a/arch/powerpc/kernel/eeh_pe.c b/arch/powerpc/kernel/eeh_pe.c
index 2e8d1b2b5af4..2d4956e97aa9 100644
--- a/arch/powerpc/kernel/eeh_pe.c
+++ b/arch/powerpc/kernel/eeh_pe.c
@@ -526,16 +526,16 @@ int eeh_rmv_from_parent_pe(struct eeh_dev *edev)
  */
 void eeh_pe_update_time_stamp(struct eeh_pe *pe)
 {
-   struct timeval tstamp;
+   time64_t tstamp;
 
if (!pe) return;
 
if (pe->freeze_count <= 0) {
pe->freeze_count = 0;
-   do_gettimeofday(>tstamp);
+   pe->tstamp = ktime_get_seconds();
} else {
-   do_gettimeofday();
-   if (tstamp.tv_sec - pe->tstamp.tv_sec > 3600) {
+   tstamp = ktime_get_seconds();
+   if (tstamp - pe->tstamp > 3600) {
pe->tstamp = tstamp;
pe->freeze_count = 0;
}
-- 
2.9.0