Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer updates from Thomas Gleixner:
"The timer departement delivers:
- more year 2038 rework
- a massive rework of the arm achitected timer
- preparatory patches to allow NTP correction of clock event devices
to avoid early expiry
- the usual pile of fixes and enhancements all over the place"
* 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (91 commits)
timer/sysclt: Restrict timer migration sysctl values to 0 and 1
arm64/arch_timer: Mark errata handlers as __maybe_unused
Clocksource/mips-gic: Remove redundant non devicetree init
MIPS/Malta: Probe gic-timer via devicetree
clocksource: Use GENMASK_ULL in definition of CLOCKSOURCE_MASK
acpi/arm64: Add SBSA Generic Watchdog support in GTDT driver
clocksource: arm_arch_timer: add GTDT support for memory-mapped timer
acpi/arm64: Add memory-mapped timer support in GTDT driver
clocksource: arm_arch_timer: simplify ACPI support code.
acpi/arm64: Add GTDT table parse driver
clocksource: arm_arch_timer: split MMIO timer probing.
clocksource: arm_arch_timer: add structs to describe MMIO timer
clocksource: arm_arch_timer: move arch_timer_needs_of_probing into DT init call
clocksource: arm_arch_timer: refactor arch_timer_needs_probing
clocksource: arm_arch_timer: split dt-only rate handling
x86/uv/time: Set ->min_delta_ticks and ->max_delta_ticks
unicore32/time: Set ->min_delta_ticks and ->max_delta_ticks
um/time: Set ->min_delta_ticks and ->max_delta_ticks
tile/time: Set ->min_delta_ticks and ->max_delta_ticks
score/time: Set ->min_delta_ticks and ->max_delta_ticks
...
This commit is contained in:
+14
-14
@@ -478,18 +478,18 @@ static int sgi_clock_period;
|
||||
static struct timespec sgi_clock_offset;
|
||||
static int sgi_clock_period;
|
||||
|
||||
static int sgi_clock_get(clockid_t clockid, struct timespec *tp)
|
||||
static int sgi_clock_get(clockid_t clockid, struct timespec64 *tp)
|
||||
{
|
||||
u64 nsec;
|
||||
|
||||
nsec = rtc_time() * sgi_clock_period
|
||||
+ sgi_clock_offset.tv_nsec;
|
||||
*tp = ns_to_timespec(nsec);
|
||||
*tp = ns_to_timespec64(nsec);
|
||||
tp->tv_sec += sgi_clock_offset.tv_sec;
|
||||
return 0;
|
||||
};
|
||||
|
||||
static int sgi_clock_set(const clockid_t clockid, const struct timespec *tp)
|
||||
static int sgi_clock_set(const clockid_t clockid, const struct timespec64 *tp)
|
||||
{
|
||||
|
||||
u64 nsec;
|
||||
@@ -657,7 +657,7 @@ static int sgi_timer_del(struct k_itimer *timr)
|
||||
}
|
||||
|
||||
/* Assumption: it_lock is already held with irq's disabled */
|
||||
static void sgi_timer_get(struct k_itimer *timr, struct itimerspec *cur_setting)
|
||||
static void sgi_timer_get(struct k_itimer *timr, struct itimerspec64 *cur_setting)
|
||||
{
|
||||
|
||||
if (timr->it.mmtimer.clock == TIMER_OFF) {
|
||||
@@ -668,14 +668,14 @@ static void sgi_timer_get(struct k_itimer *timr, struct itimerspec *cur_setting)
|
||||
return;
|
||||
}
|
||||
|
||||
cur_setting->it_interval = ns_to_timespec(timr->it.mmtimer.incr * sgi_clock_period);
|
||||
cur_setting->it_value = ns_to_timespec((timr->it.mmtimer.expires - rtc_time()) * sgi_clock_period);
|
||||
cur_setting->it_interval = ns_to_timespec64(timr->it.mmtimer.incr * sgi_clock_period);
|
||||
cur_setting->it_value = ns_to_timespec64((timr->it.mmtimer.expires - rtc_time()) * sgi_clock_period);
|
||||
}
|
||||
|
||||
|
||||
static int sgi_timer_set(struct k_itimer *timr, int flags,
|
||||
struct itimerspec * new_setting,
|
||||
struct itimerspec * old_setting)
|
||||
struct itimerspec64 *new_setting,
|
||||
struct itimerspec64 *old_setting)
|
||||
{
|
||||
unsigned long when, period, irqflags;
|
||||
int err = 0;
|
||||
@@ -687,8 +687,8 @@ static int sgi_timer_set(struct k_itimer *timr, int flags,
|
||||
sgi_timer_get(timr, old_setting);
|
||||
|
||||
sgi_timer_del(timr);
|
||||
when = timespec_to_ns(&new_setting->it_value);
|
||||
period = timespec_to_ns(&new_setting->it_interval);
|
||||
when = timespec64_to_ns(&new_setting->it_value);
|
||||
period = timespec64_to_ns(&new_setting->it_interval);
|
||||
|
||||
if (when == 0)
|
||||
/* Clear timer */
|
||||
@@ -699,11 +699,11 @@ static int sgi_timer_set(struct k_itimer *timr, int flags,
|
||||
return -ENOMEM;
|
||||
|
||||
if (flags & TIMER_ABSTIME) {
|
||||
struct timespec n;
|
||||
struct timespec64 n;
|
||||
unsigned long now;
|
||||
|
||||
getnstimeofday(&n);
|
||||
now = timespec_to_ns(&n);
|
||||
getnstimeofday64(&n);
|
||||
now = timespec64_to_ns(&n);
|
||||
if (when > now)
|
||||
when -= now;
|
||||
else
|
||||
@@ -765,7 +765,7 @@ static int sgi_timer_set(struct k_itimer *timr, int flags,
|
||||
return err;
|
||||
}
|
||||
|
||||
static int sgi_clock_getres(const clockid_t which_clock, struct timespec *tp)
|
||||
static int sgi_clock_getres(const clockid_t which_clock, struct timespec64 *tp)
|
||||
{
|
||||
tp->tv_sec = 0;
|
||||
tp->tv_nsec = sgi_clock_period;
|
||||
|
||||
Reference in New Issue
Block a user