Skip to content

Commit 4c37460

Browse files
committed
Merge branch '7.0/fixes' into 7.0/base
2 parents 82f5075 + 630e8b3 commit 4c37460

File tree

7 files changed

+11
-36
lines changed

7 files changed

+11
-36
lines changed

arch/x86/kernel/cpu/amd.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,11 +1032,8 @@ static const struct x86_cpu_id zen5_rdseed_microcode[] = {
10321032

10331033
static void init_amd_zen5(struct cpuinfo_x86 *c)
10341034
{
1035-
if (!x86_match_min_microcode_rev(zen5_rdseed_microcode)) {
1036-
clear_cpu_cap(c, X86_FEATURE_RDSEED);
1037-
msr_clear_bit(MSR_AMD64_CPUID_FN_7, 18);
1038-
pr_emerg_once("RDSEED32 is broken. Disabling the corresponding CPUID bit.\n");
1039-
}
1035+
if (!x86_match_min_microcode_rev(zen5_rdseed_microcode))
1036+
pr_emerg_once("RDSEED32 is broken. Please update your firmware.\n");
10401037
}
10411038

10421039
static void init_amd(struct cpuinfo_x86 *c)

include/linux/clockchips.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ enum clock_event_state {
8080
* @shift: nanoseconds to cycles divisor (power of two)
8181
* @state_use_accessors:current state of the device, assigned by the core code
8282
* @features: features
83-
* @next_event_forced: True if the last programming was a forced event
8483
* @retries: number of forced programming retries
8584
* @set_state_periodic: switch state to periodic
8685
* @set_state_oneshot: switch state to oneshot
@@ -109,7 +108,6 @@ struct clock_event_device {
109108
u32 shift;
110109
enum clock_event_state state_use_accessors;
111110
unsigned int features;
112-
unsigned int next_event_forced;
113111
unsigned long retries;
114112

115113
int (*set_state_periodic)(struct clock_event_device *);

kernel/time/clockevents.c

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,6 @@ void clockevents_shutdown(struct clock_event_device *dev)
172172
{
173173
clockevents_switch_state(dev, CLOCK_EVT_STATE_SHUTDOWN);
174174
dev->next_event = KTIME_MAX;
175-
dev->next_event_forced = 0;
176175
}
177176

178177
/**
@@ -306,6 +305,7 @@ int clockevents_program_event(struct clock_event_device *dev, ktime_t expires,
306305
{
307306
unsigned long long clc;
308307
int64_t delta;
308+
int rc;
309309

310310
if (WARN_ON_ONCE(expires < 0))
311311
return -ETIME;
@@ -324,27 +324,16 @@ int clockevents_program_event(struct clock_event_device *dev, ktime_t expires,
324324
return dev->set_next_ktime(expires, dev);
325325

326326
delta = ktime_to_ns(ktime_sub(expires, ktime_get()));
327+
if (delta <= 0)
328+
return force ? clockevents_program_min_delta(dev) : -ETIME;
327329

328-
/* Required for tick_periodic() during early boot */
329-
if (delta <= 0 && !force)
330-
return -ETIME;
331-
332-
if (delta > (int64_t)dev->min_delta_ns) {
333-
delta = min(delta, (int64_t) dev->max_delta_ns);
334-
clc = ((unsigned long long) delta * dev->mult) >> dev->shift;
335-
if (!dev->set_next_event((unsigned long) clc, dev))
336-
return 0;
337-
}
330+
delta = min(delta, (int64_t) dev->max_delta_ns);
331+
delta = max(delta, (int64_t) dev->min_delta_ns);
338332

339-
if (dev->next_event_forced)
340-
return 0;
333+
clc = ((unsigned long long) delta * dev->mult) >> dev->shift;
334+
rc = dev->set_next_event((unsigned long) clc, dev);
341335

342-
if (dev->set_next_event(dev->min_delta_ticks, dev)) {
343-
if (!force || clockevents_program_min_delta(dev))
344-
return -ETIME;
345-
}
346-
dev->next_event_forced = 1;
347-
return 0;
336+
return (rc && force) ? clockevents_program_min_delta(dev) : rc;
348337
}
349338

350339
/*

kernel/time/hrtimer.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1888,7 +1888,6 @@ void hrtimer_interrupt(struct clock_event_device *dev)
18881888
BUG_ON(!cpu_base->hres_active);
18891889
cpu_base->nr_events++;
18901890
dev->next_event = KTIME_MAX;
1891-
dev->next_event_forced = 0;
18921891

18931892
raw_spin_lock_irqsave(&cpu_base->lock, flags);
18941893
entry_time = now = hrtimer_update_base(cpu_base);

kernel/time/tick-broadcast.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,8 @@ const struct clock_event_device *tick_get_wakeup_device(int cpu)
7676
*/
7777
static void tick_broadcast_start_periodic(struct clock_event_device *bc)
7878
{
79-
if (bc) {
80-
bc->next_event_forced = 0;
79+
if (bc)
8180
tick_setup_periodic(bc, 1);
82-
}
8381
}
8482

8583
/*
@@ -405,7 +403,6 @@ static void tick_handle_periodic_broadcast(struct clock_event_device *dev)
405403
bool bc_local;
406404

407405
raw_spin_lock(&tick_broadcast_lock);
408-
tick_broadcast_device.evtdev->next_event_forced = 0;
409406

410407
/* Handle spurious interrupts gracefully */
411408
if (clockevent_state_shutdown(tick_broadcast_device.evtdev)) {
@@ -699,7 +696,6 @@ static void tick_handle_oneshot_broadcast(struct clock_event_device *dev)
699696

700697
raw_spin_lock(&tick_broadcast_lock);
701698
dev->next_event = KTIME_MAX;
702-
tick_broadcast_device.evtdev->next_event_forced = 0;
703699
next_event = KTIME_MAX;
704700
cpumask_clear(tmpmask);
705701
now = ktime_get();
@@ -1067,7 +1063,6 @@ static void tick_broadcast_setup_oneshot(struct clock_event_device *bc,
10671063

10681064

10691065
bc->event_handler = tick_handle_oneshot_broadcast;
1070-
bc->next_event_forced = 0;
10711066
bc->next_event = KTIME_MAX;
10721067

10731068
/*
@@ -1180,7 +1175,6 @@ void hotplug_cpu__broadcast_tick_pull(int deadcpu)
11801175
}
11811176

11821177
/* This moves the broadcast assignment to this CPU: */
1183-
bc->next_event_forced = 0;
11841178
clockevents_program_event(bc, bc->next_event, 1);
11851179
}
11861180
raw_spin_unlock_irqrestore(&tick_broadcast_lock, flags);

kernel/time/tick-common.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ void tick_handle_periodic(struct clock_event_device *dev)
110110
int cpu = smp_processor_id();
111111
ktime_t next = dev->next_event;
112112

113-
dev->next_event_forced = 0;
114113
tick_periodic(cpu);
115114

116115
/*

kernel/time/tick-sched.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1513,7 +1513,6 @@ static void tick_nohz_lowres_handler(struct clock_event_device *dev)
15131513
struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
15141514

15151515
dev->next_event = KTIME_MAX;
1516-
dev->next_event_forced = 0;
15171516

15181517
if (likely(tick_nohz_handler(&ts->sched_timer) == HRTIMER_RESTART))
15191518
tick_program_event(hrtimer_get_expires(&ts->sched_timer), 1);

0 commit comments

Comments
 (0)