From: Tomi Valkeinen <tomi.valkeinen@ti.com>
To: Tina Ruchandani <ruchandani.tina@gmail.com>,
Arnd Bergmann <arnd@arndb.de>
Cc: y2038@lists.linaro.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] fbdev: radeon: Remove 'struct timeval' usage
Date: Wed, 03 Jun 2015 11:59:57 +0000 [thread overview]
Message-ID: <556EEC3D.4010608@ti.com> (raw)
In-Reply-To: <20150525040716.GA4448@tinar>
[-- Attachment #1: Type: text/plain, Size: 3189 bytes --]
On 25/05/15 07:07, Tina Ruchandani wrote:
> 'struct timeval' uses a 32-bit representation for the
> seconds field which will overflow in the year 2038 and beyond.
> This patch replaces the usage of 'struct timeval' with
> ktime_t which uses a 64-bit time representation and does not
> suffer from the y2038 problem. This patch is part of a larger
> effort to remove all instances of 'struct timeval', 'struct
> timespec', time_t and other 32-bit timekeeping variables
> from the kernel.
> The patch also replaces the use of real time (do_gettimeofday)
> with monotonic time (ktime_get).
>
> Signed-off-by: Tina Ruchandani <ruchandani.tina@gmail.com>
> ---
> drivers/video/fbdev/aty/radeon_base.c | 29 ++++++++++++++---------------
> 1 file changed, 14 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/video/fbdev/aty/radeon_base.c b/drivers/video/fbdev/aty/radeon_base.c
> index 01237c8..9747e9e 100644
> --- a/drivers/video/fbdev/aty/radeon_base.c
> +++ b/drivers/video/fbdev/aty/radeon_base.c
> @@ -64,6 +64,7 @@
> #include <linux/slab.h>
> #include <linux/delay.h>
> #include <linux/time.h>
> +#include <linux/ktime.h>
> #include <linux/fb.h>
> #include <linux/ioport.h>
> #include <linux/init.h>
> @@ -461,8 +462,8 @@ static int radeon_probe_pll_params(struct radeonfb_info *rinfo)
> int hTotal, vTotal, num, denom, m, n;
> unsigned long long hz, vclk;
> long xtal;
> - struct timeval start_tv, stop_tv;
> - long total_secs, total_usecs;
> + ktime_t start, stop;
> + s64 delta;
> int i;
>
> /* Ugh, we cut interrupts, bad bad bad, but we want some precision
> @@ -478,7 +479,7 @@ static int radeon_probe_pll_params(struct radeonfb_info *rinfo)
> if (((INREG(CRTC_VLINE_CRNT_VLINE) >> 16) & 0x3ff) == 0)
> break;
>
> - do_gettimeofday(&start_tv);
> + start = ktime_get();
>
> for(i=0; i<1000000; i++)
> if (((INREG(CRTC_VLINE_CRNT_VLINE) >> 16) & 0x3ff) != 0)
> @@ -487,20 +488,18 @@ static int radeon_probe_pll_params(struct radeonfb_info *rinfo)
> for(i=0; i<1000000; i++)
> if (((INREG(CRTC_VLINE_CRNT_VLINE) >> 16) & 0x3ff) == 0)
> break;
> -
> - do_gettimeofday(&stop_tv);
> -
> +
> + stop = ktime_get();
> +
> local_irq_enable();
>
> - total_secs = stop_tv.tv_sec - start_tv.tv_sec;
> - if (total_secs > 10)
> + delta = ktime_us_delta(stop, start);
> +
> + /* Return -1 if more than 10 seconds have elapsed */
> + if (delta > (10*1000000))
> return -1;
> - total_usecs = stop_tv.tv_usec - start_tv.tv_usec;
> - total_usecs += total_secs * 1000000;
> - if (total_usecs < 0)
> - total_usecs = -total_usecs;
> - hz = 1000000/total_usecs;
> -
> + hz = 1000000/delta;
> +
> hTotal = ((INREG(CRTC_H_TOTAL_DISP) & 0x1ff) + 1) * 8;
> vTotal = ((INREG(CRTC_V_TOTAL_DISP) & 0x3ff) + 1);
> vclk = (long long)hTotal * (long long)vTotal * hz;
> @@ -548,7 +547,7 @@ static int radeon_probe_pll_params(struct radeonfb_info *rinfo)
> denom *= 3;
> break;
> case 6:
> - denom *= 6;
> + denom *= 6;
> break;
> case 7:
> denom *= 12;
The above change was extra. I removed it, and queued this for 4.2.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Tomi Valkeinen <tomi.valkeinen@ti.com>
To: Tina Ruchandani <ruchandani.tina@gmail.com>,
Arnd Bergmann <arnd@arndb.de>
Cc: <y2038@lists.linaro.org>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
<linux-fbdev@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] fbdev: radeon: Remove 'struct timeval' usage
Date: Wed, 3 Jun 2015 14:59:57 +0300 [thread overview]
Message-ID: <556EEC3D.4010608@ti.com> (raw)
In-Reply-To: <20150525040716.GA4448@tinar>
[-- Attachment #1: Type: text/plain, Size: 3189 bytes --]
On 25/05/15 07:07, Tina Ruchandani wrote:
> 'struct timeval' uses a 32-bit representation for the
> seconds field which will overflow in the year 2038 and beyond.
> This patch replaces the usage of 'struct timeval' with
> ktime_t which uses a 64-bit time representation and does not
> suffer from the y2038 problem. This patch is part of a larger
> effort to remove all instances of 'struct timeval', 'struct
> timespec', time_t and other 32-bit timekeeping variables
> from the kernel.
> The patch also replaces the use of real time (do_gettimeofday)
> with monotonic time (ktime_get).
>
> Signed-off-by: Tina Ruchandani <ruchandani.tina@gmail.com>
> ---
> drivers/video/fbdev/aty/radeon_base.c | 29 ++++++++++++++---------------
> 1 file changed, 14 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/video/fbdev/aty/radeon_base.c b/drivers/video/fbdev/aty/radeon_base.c
> index 01237c8..9747e9e 100644
> --- a/drivers/video/fbdev/aty/radeon_base.c
> +++ b/drivers/video/fbdev/aty/radeon_base.c
> @@ -64,6 +64,7 @@
> #include <linux/slab.h>
> #include <linux/delay.h>
> #include <linux/time.h>
> +#include <linux/ktime.h>
> #include <linux/fb.h>
> #include <linux/ioport.h>
> #include <linux/init.h>
> @@ -461,8 +462,8 @@ static int radeon_probe_pll_params(struct radeonfb_info *rinfo)
> int hTotal, vTotal, num, denom, m, n;
> unsigned long long hz, vclk;
> long xtal;
> - struct timeval start_tv, stop_tv;
> - long total_secs, total_usecs;
> + ktime_t start, stop;
> + s64 delta;
> int i;
>
> /* Ugh, we cut interrupts, bad bad bad, but we want some precision
> @@ -478,7 +479,7 @@ static int radeon_probe_pll_params(struct radeonfb_info *rinfo)
> if (((INREG(CRTC_VLINE_CRNT_VLINE) >> 16) & 0x3ff) == 0)
> break;
>
> - do_gettimeofday(&start_tv);
> + start = ktime_get();
>
> for(i=0; i<1000000; i++)
> if (((INREG(CRTC_VLINE_CRNT_VLINE) >> 16) & 0x3ff) != 0)
> @@ -487,20 +488,18 @@ static int radeon_probe_pll_params(struct radeonfb_info *rinfo)
> for(i=0; i<1000000; i++)
> if (((INREG(CRTC_VLINE_CRNT_VLINE) >> 16) & 0x3ff) == 0)
> break;
> -
> - do_gettimeofday(&stop_tv);
> -
> +
> + stop = ktime_get();
> +
> local_irq_enable();
>
> - total_secs = stop_tv.tv_sec - start_tv.tv_sec;
> - if (total_secs > 10)
> + delta = ktime_us_delta(stop, start);
> +
> + /* Return -1 if more than 10 seconds have elapsed */
> + if (delta > (10*1000000))
> return -1;
> - total_usecs = stop_tv.tv_usec - start_tv.tv_usec;
> - total_usecs += total_secs * 1000000;
> - if (total_usecs < 0)
> - total_usecs = -total_usecs;
> - hz = 1000000/total_usecs;
> -
> + hz = 1000000/delta;
> +
> hTotal = ((INREG(CRTC_H_TOTAL_DISP) & 0x1ff) + 1) * 8;
> vTotal = ((INREG(CRTC_V_TOTAL_DISP) & 0x3ff) + 1);
> vclk = (long long)hTotal * (long long)vTotal * hz;
> @@ -548,7 +547,7 @@ static int radeon_probe_pll_params(struct radeonfb_info *rinfo)
> denom *= 3;
> break;
> case 6:
> - denom *= 6;
> + denom *= 6;
> break;
> case 7:
> denom *= 12;
The above change was extra. I removed it, and queued this for 4.2.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2015-06-03 11:59 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-25 4:07 [PATCH] fbdev: radeon: Remove 'struct timeval' usage Tina Ruchandani
2015-05-25 4:19 ` Tina Ruchandani
2015-06-03 11:59 ` Tomi Valkeinen [this message]
2015-06-03 11:59 ` Tomi Valkeinen
2015-06-05 4:40 ` Dave Airlie
2015-06-05 4:40 ` Dave Airlie
2015-06-05 7:55 ` Tina Ruchandani
2015-06-05 7:55 ` Tina Ruchandani
2015-06-05 21:12 ` [Y2038] " Arnd Bergmann
2015-06-05 21:12 ` Arnd Bergmann
2015-08-20 7:51 ` Tomi Valkeinen
2015-08-20 7:51 ` Tomi Valkeinen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=556EEC3D.4010608@ti.com \
--to=tomi.valkeinen@ti.com \
--cc=arnd@arndb.de \
--cc=benh@kernel.crashing.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=plagnioj@jcrosoft.com \
--cc=ruchandani.tina@gmail.com \
--cc=y2038@lists.linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.