mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-11 17:10:13 +00:00
Compare commits
7 Commits
d13f3ac64e
...
1af5c1d3a9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1af5c1d3a9 | ||
|
|
e624f73775 | ||
|
|
20739af073 | ||
|
|
7b5ab04f03 | ||
|
|
f1f96511b1 | ||
|
|
807e0d187d | ||
|
|
a24074ca88 |
@ -1325,8 +1325,6 @@ static void uncore_pci_sub_driver_init(void)
|
||||
continue;
|
||||
|
||||
pmu = &type->pmus[UNCORE_PCI_DEV_IDX(ids->driver_data)];
|
||||
if (!pmu)
|
||||
continue;
|
||||
|
||||
if (uncore_pci_get_dev_die_info(pci_sub_dev, &die))
|
||||
continue;
|
||||
|
||||
@ -11901,7 +11901,7 @@ static int cpu_clock_event_add(struct perf_event *event, int flags)
|
||||
|
||||
static void cpu_clock_event_del(struct perf_event *event, int flags)
|
||||
{
|
||||
cpu_clock_event_stop(event, flags);
|
||||
cpu_clock_event_stop(event, PERF_EF_UPDATE);
|
||||
}
|
||||
|
||||
static void cpu_clock_event_read(struct perf_event *event)
|
||||
|
||||
@ -1152,16 +1152,15 @@ static bool report_idle_softirq(void)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ratelimit >= 10)
|
||||
return false;
|
||||
|
||||
/* On RT, softirq handling may be waiting on some lock */
|
||||
if (local_bh_blocked())
|
||||
return false;
|
||||
|
||||
pr_warn("NOHZ tick-stop error: local softirq work is pending, handler #%02x!!!\n",
|
||||
pending);
|
||||
ratelimit++;
|
||||
if (ratelimit < 10) {
|
||||
pr_warn("NOHZ tick-stop error: local softirq work is pending, handler #%02x!!!\n",
|
||||
pending);
|
||||
ratelimit++;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -3060,29 +3060,32 @@ static const struct attribute_group aux_clock_enable_attr_group = {
|
||||
static int __init tk_aux_sysfs_init(void)
|
||||
{
|
||||
struct kobject *auxo, *tko = kobject_create_and_add("time", kernel_kobj);
|
||||
int ret = -ENOMEM;
|
||||
|
||||
if (!tko)
|
||||
return -ENOMEM;
|
||||
return ret;
|
||||
|
||||
auxo = kobject_create_and_add("aux_clocks", tko);
|
||||
if (!auxo) {
|
||||
kobject_put(tko);
|
||||
return -ENOMEM;
|
||||
}
|
||||
if (!auxo)
|
||||
goto err_clean;
|
||||
|
||||
for (int i = 0; i < MAX_AUX_CLOCKS; i++) {
|
||||
char id[2] = { [0] = '0' + i, };
|
||||
struct kobject *clk = kobject_create_and_add(id, auxo);
|
||||
|
||||
if (!clk)
|
||||
return -ENOMEM;
|
||||
|
||||
int ret = sysfs_create_group(clk, &aux_clock_enable_attr_group);
|
||||
goto err_clean;
|
||||
|
||||
ret = sysfs_create_group(clk, &aux_clock_enable_attr_group);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto err_clean;
|
||||
}
|
||||
return 0;
|
||||
|
||||
err_clean:
|
||||
kobject_put(auxo);
|
||||
kobject_put(tko);
|
||||
return ret;
|
||||
}
|
||||
late_initcall(tk_aux_sysfs_init);
|
||||
|
||||
|
||||
@ -1458,10 +1458,11 @@ static int __try_to_del_timer_sync(struct timer_list *timer, bool shutdown)
|
||||
|
||||
base = lock_timer_base(timer, &flags);
|
||||
|
||||
if (base->running_timer != timer)
|
||||
if (base->running_timer != timer) {
|
||||
ret = detach_if_pending(timer, base, true);
|
||||
if (shutdown)
|
||||
timer->function = NULL;
|
||||
if (shutdown)
|
||||
timer->function = NULL;
|
||||
}
|
||||
|
||||
raw_spin_unlock_irqrestore(&base->lock, flags);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user