Message ID | 20150127101948.GA5656@tinar |
---|---|
State | Not Applicable |
Delegated to: | David Miller |
Headers | show |
On Tuesday 27 January 2015 15:49:48 Tina Ruchandani wrote: > Function pdc_detect_pll_input_clock uses 'struct timeval' > to measure start and end times, used to compute the pll_clock value. > 'struct timeval' on 32-bit systems will have its tv_sec field > overflow in year 2038 and beyond. This patch uses 'ktime_t' > (which uses 64 bits for seconds) for start and end times instead. > > Suggested-by: Arnd Bergmann <arnd@arndb.de> > Signed-off-by: Tina Ruchandani <ruchandani.tina@gmail.com> Looks great, Reviewed-by: Arnd Bergmann <arnd@arndb.de> -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Jan 27, 2015 at 03:49:48PM +0530, Tina Ruchandani wrote: > Function pdc_detect_pll_input_clock uses 'struct timeval' > to measure start and end times, used to compute the pll_clock value. > 'struct timeval' on 32-bit systems will have its tv_sec field > overflow in year 2038 and beyond. This patch uses 'ktime_t' > (which uses 64 bits for seconds) for start and end times instead. > > Suggested-by: Arnd Bergmann <arnd@arndb.de> > Signed-off-by: Tina Ruchandani <ruchandani.tina@gmail.com> Applied to libata/for-3.20 w/ subject updated to indicate that its scope is pata_pdc2027x. Thanks.
diff --git a/drivers/ata/pata_pdc2027x.c b/drivers/ata/pata_pdc2027x.c index 4d06a5c..dca8251 100644 --- a/drivers/ata/pata_pdc2027x.c +++ b/drivers/ata/pata_pdc2027x.c @@ -28,6 +28,7 @@ #include <linux/blkdev.h> #include <linux/delay.h> #include <linux/device.h> +#include <linux/ktime.h> #include <scsi/scsi.h> #include <scsi/scsi_host.h> #include <scsi/scsi_cmnd.h> @@ -605,7 +606,7 @@ static long pdc_detect_pll_input_clock(struct ata_host *host) void __iomem *mmio_base = host->iomap[PDC_MMIO_BAR]; u32 scr; long start_count, end_count; - struct timeval start_time, end_time; + ktime_t start_time, end_time; long pll_clock, usec_elapsed; /* Start the test mode */ @@ -616,14 +617,14 @@ static long pdc_detect_pll_input_clock(struct ata_host *host) /* Read current counter value */ start_count = pdc_read_counter(host); - do_gettimeofday(&start_time); + start_time = ktime_get(); /* Let the counter run for 100 ms. */ mdelay(100); /* Read the counter values again */ end_count = pdc_read_counter(host); - do_gettimeofday(&end_time); + end_time = ktime_get(); /* Stop the test mode */ scr = ioread32(mmio_base + PDC_SYS_CTL); @@ -632,8 +633,7 @@ static long pdc_detect_pll_input_clock(struct ata_host *host) ioread32(mmio_base + PDC_SYS_CTL); /* flush */ /* calculate the input clock in Hz */ - usec_elapsed = (end_time.tv_sec - start_time.tv_sec) * 1000000 + - (end_time.tv_usec - start_time.tv_usec); + usec_elapsed = (long) ktime_us_delta(end_time, start_time); pll_clock = ((start_count - end_count) & 0x3fffffff) / 100 * (100000000 / usec_elapsed);
Function pdc_detect_pll_input_clock uses 'struct timeval' to measure start and end times, used to compute the pll_clock value. 'struct timeval' on 32-bit systems will have its tv_sec field overflow in year 2038 and beyond. This patch uses 'ktime_t' (which uses 64 bits for seconds) for start and end times instead. Suggested-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Tina Ruchandani <ruchandani.tina@gmail.com> --- Changes in v3: - Switch back to usec_elapsed being a 'long'. Changes in v2: - Switch from timespec64 to ktime_t - more efficient. - Use ktime_us_delta to get usec_elapsed, it is more efficient than manual computation of usecs from timespec64. --- drivers/ata/pata_pdc2027x.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)