kernel-rt update to 5.10.0-249.0.0.65
n 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交
This commit is contained in:
parent
1fad2a4b6d
commit
17d59642bf
@ -1,7 +1,7 @@
|
||||
From 83ee0e767be39ee3ef72bb0e58da531dd5cf677f Mon Sep 17 00:00:00 2001
|
||||
From a56ac45605ecd8d924f3ade7b35e9975a10b546e Mon Sep 17 00:00:00 2001
|
||||
From: zhangyu <zhangyu4@kylinos.cn>
|
||||
Date: Mon, 20 Jan 2025 15:17:29 +0800
|
||||
Subject: [PATCH] zz-rt1
|
||||
Date: Wed, 19 Feb 2025 17:38:08 +0800
|
||||
Subject: [PATCH 1/2] rt1
|
||||
|
||||
---
|
||||
.../Expedited-Grace-Periods.rst | 4 +-
|
||||
@ -347,7 +347,7 @@ Subject: [PATCH] zz-rt1
|
||||
kernel/rcu/Kconfig | 4 +-
|
||||
kernel/rcu/tree.c | 4 +-
|
||||
kernel/rcu/update.c | 4 +-
|
||||
kernel/sched/core.c | 1276 +++++++++---
|
||||
kernel/sched/core.c | 1277 +++++++++---
|
||||
kernel/sched/cpudeadline.c | 4 +-
|
||||
kernel/sched/cpupri.c | 4 +-
|
||||
kernel/sched/cputime.c | 36 +-
|
||||
@ -403,7 +403,7 @@ Subject: [PATCH] zz-rt1
|
||||
net/sched/sch_generic.c | 10 +
|
||||
net/sunrpc/svc_xprt.c | 4 +-
|
||||
net/xfrm/xfrm_state.c | 3 +-
|
||||
399 files changed, 8950 insertions(+), 4841 deletions(-)
|
||||
399 files changed, 8951 insertions(+), 4841 deletions(-)
|
||||
delete mode 100644 arch/alpha/include/asm/kmap_types.h
|
||||
delete mode 100644 arch/arc/include/asm/kmap_types.h
|
||||
delete mode 100644 arch/arm/include/asm/kmap_types.h
|
||||
@ -665,7 +665,7 @@ index fb3ff76c3..3b2b1479f 100644
|
||||
read-side critical sections. It also permits
|
||||
spinlocks blocking while in RCU read-side critical
|
||||
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
|
||||
index 1bcc53b0c..b5249966e 100644
|
||||
index 1e017d0ad..2d2ba26f8 100644
|
||||
--- a/Documentation/admin-guide/kernel-parameters.txt
|
||||
+++ b/Documentation/admin-guide/kernel-parameters.txt
|
||||
@@ -4431,6 +4431,10 @@
|
||||
@ -3193,7 +3193,7 @@ diff --git a/arch/powerpc/kernel/syscall_64.c b/arch/powerpc/kernel/syscall_64.c
|
||||
index 310bcd768..ae3212dcf 100644
|
||||
--- a/arch/powerpc/kernel/syscall_64.c
|
||||
+++ b/arch/powerpc/kernel/syscall_64.c
|
||||
@@ -193,7 +193,7 @@ again:
|
||||
@@ -193,7 +193,7 @@ notrace unsigned long syscall_exit_prepare(unsigned long r3,
|
||||
ti_flags = READ_ONCE(*ti_flagsp);
|
||||
while (unlikely(ti_flags & (_TIF_USER_WORK_MASK & ~_TIF_RESTORE_TM))) {
|
||||
local_irq_enable();
|
||||
@ -3202,7 +3202,7 @@ index 310bcd768..ae3212dcf 100644
|
||||
schedule();
|
||||
} else {
|
||||
/*
|
||||
@@ -277,7 +277,7 @@ again:
|
||||
@@ -277,7 +277,7 @@ notrace unsigned long interrupt_exit_user_prepare(struct pt_regs *regs, unsigned
|
||||
ti_flags = READ_ONCE(*ti_flagsp);
|
||||
while (unlikely(ti_flags & (_TIF_USER_WORK_MASK & ~_TIF_RESTORE_TM))) {
|
||||
local_irq_enable(); /* returning to user: may enable */
|
||||
@ -5143,7 +5143,7 @@ diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
|
||||
index 7c055259d..da31c2635 100644
|
||||
--- a/arch/x86/mm/init_32.c
|
||||
+++ b/arch/x86/mm/init_32.c
|
||||
@@ -394,19 +394,6 @@ repeat:
|
||||
@@ -394,19 +394,6 @@ kernel_physical_mapping_init(unsigned long start,
|
||||
return last_map_addr;
|
||||
}
|
||||
|
||||
@ -5672,7 +5672,7 @@ index 9fcc49be4..a31ffe16e 100644
|
||||
tasklet_enable(&ENI_DEV(vcc->dev)->task);
|
||||
if (res == enq_ok) return 0;
|
||||
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
|
||||
index 8b1ef1dc7..4f0f77971 100644
|
||||
index bb20a8be4..29ec71b09 100644
|
||||
--- a/drivers/block/zram/zram_drv.c
|
||||
+++ b/drivers/block/zram/zram_drv.c
|
||||
@@ -59,6 +59,40 @@ static void zram_free_page(struct zram *zram, size_t index);
|
||||
@ -7138,7 +7138,7 @@ diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
|
||||
index 30afcbbe1..4ae5b8152 100644
|
||||
--- a/drivers/scsi/fcoe/fcoe.c
|
||||
+++ b/drivers/scsi/fcoe/fcoe.c
|
||||
@@ -1452,11 +1452,11 @@ err2:
|
||||
@@ -1452,11 +1452,11 @@ static int fcoe_rcv(struct sk_buff *skb, struct net_device *netdev,
|
||||
static int fcoe_alloc_paged_crc_eof(struct sk_buff *skb, int tlen)
|
||||
{
|
||||
struct fcoe_percpu_s *fps;
|
||||
@ -7889,7 +7889,7 @@ index 5dccce5bc..12a576121 100644
|
||||
r_seq = read_seqbegin(&rename_lock);
|
||||
dentry = __d_lookup_rcu(parent, name, &d_seq);
|
||||
if (unlikely(dentry)) {
|
||||
@@ -2668,7 +2673,7 @@ retry:
|
||||
@@ -2668,7 +2673,7 @@ struct dentry *d_alloc_parallel(struct dentry *parent,
|
||||
}
|
||||
|
||||
hlist_bl_lock(b);
|
||||
@ -12302,7 +12302,7 @@ index 6b6e6e1a2..45c45bfd2 100644
|
||||
}
|
||||
|
||||
static inline bool qdisc_is_percpu_stats(const struct Qdisc *q)
|
||||
@@ -187,17 +192,35 @@ nolock_empty:
|
||||
@@ -187,17 +192,35 @@ static inline bool qdisc_run_begin(struct Qdisc *qdisc)
|
||||
} else if (qdisc_is_running(qdisc)) {
|
||||
return false;
|
||||
}
|
||||
@ -12679,7 +12679,7 @@ index 7ecff06d2..a9fe99b9f 100644
|
||||
|
||||
if (cpus_updated)
|
||||
update_tasks_cpumask(cs);
|
||||
@@ -3344,10 +3344,10 @@ retry:
|
||||
@@ -3344,10 +3344,10 @@ static void cpuset_hotplug_update_tasks(struct cpuset *cs, struct tmpmasks *tmp)
|
||||
if (is_partition_root(cs) && (cpumask_empty(&new_cpus) ||
|
||||
(parent->partition_root_state == PRS_ERROR))) {
|
||||
if (cs->nr_subparts_cpus) {
|
||||
@ -12692,7 +12692,7 @@ index 7ecff06d2..a9fe99b9f 100644
|
||||
compute_effective_cpumask(&new_cpus, cs, parent);
|
||||
}
|
||||
|
||||
@@ -3361,9 +3361,9 @@ retry:
|
||||
@@ -3361,9 +3361,9 @@ static void cpuset_hotplug_update_tasks(struct cpuset *cs, struct tmpmasks *tmp)
|
||||
cpumask_empty(&new_cpus)) {
|
||||
update_parent_subparts_cpumask(cs, partcmd_disable,
|
||||
NULL, tmp);
|
||||
@ -13035,7 +13035,7 @@ index cde0ca876..909dcd708 100644
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -2165,6 +2167,16 @@ retry_private:
|
||||
@@ -2165,6 +2167,16 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags,
|
||||
*/
|
||||
requeue_pi_wake_futex(this, &key2, hb2);
|
||||
continue;
|
||||
@ -13052,7 +13052,7 @@ index cde0ca876..909dcd708 100644
|
||||
} else if (ret) {
|
||||
/*
|
||||
* rt_mutex_start_proxy_lock() detected a
|
||||
@@ -2857,7 +2869,7 @@ retry_private:
|
||||
@@ -2857,7 +2869,7 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags,
|
||||
goto no_block;
|
||||
}
|
||||
|
||||
@ -14199,7 +14199,7 @@ index b909b559a..6e935cc78 100644
|
||||
/*
|
||||
* The current top waiter stays enqueued. We
|
||||
* don't have to change anything in the lock
|
||||
@@ -934,6 +976,329 @@ takeit:
|
||||
@@ -934,6 +976,329 @@ static int try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task,
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -16646,7 +16646,7 @@ index fd53eebd5..599fd0cf8 100644
|
||||
int dmesg_restrict = IS_ENABLED(CONFIG_SECURITY_DMESG_RESTRICT);
|
||||
|
||||
static int syslog_action_restricted(int type)
|
||||
@@ -680,7 +622,7 @@ out:
|
||||
@@ -680,7 +622,7 @@ static ssize_t msg_print_ext_body(char *buf, size_t size,
|
||||
|
||||
/* /dev/kmsg - userspace message inject/listen interface */
|
||||
struct devkmsg_user {
|
||||
@ -19276,7 +19276,7 @@ index 0e3821783..2beba0dfd 100644
|
||||
|
||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
|
||||
index 457eeebc7..bf88a1034 100644
|
||||
index 457eeebc7..e539d1635 100644
|
||||
--- a/kernel/sched/core.c
|
||||
+++ b/kernel/sched/core.c
|
||||
@@ -67,7 +67,11 @@ const_debug unsigned int sysctl_sched_features =
|
||||
@ -20040,7 +20040,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
out:
|
||||
task_rq_unlock(rq, p, &rf);
|
||||
|
||||
@@ -2321,7 +2818,7 @@ out:
|
||||
@@ -2321,7 +2818,7 @@ static int __set_cpus_allowed_ptr(struct task_struct *p,
|
||||
|
||||
int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask)
|
||||
{
|
||||
@ -20058,7 +20058,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
#endif
|
||||
|
||||
trace_sched_migrate_task(p, new_cpu);
|
||||
@@ -2494,6 +2993,18 @@ out:
|
||||
@@ -2494,6 +2993,18 @@ int migrate_swap(struct task_struct *cur, struct task_struct *p,
|
||||
}
|
||||
#endif /* CONFIG_NUMA_BALANCING */
|
||||
|
||||
@ -20441,7 +20441,15 @@ index 457eeebc7..bf88a1034 100644
|
||||
static inline void
|
||||
prepare_lock_switch(struct rq *rq, struct task_struct *next, struct rq_flags *rf)
|
||||
{
|
||||
@@ -3983,6 +4643,22 @@ static inline void finish_lock_switch(struct rq *rq)
|
||||
@@ -3968,6 +4628,7 @@ static inline void finish_lock_switch(struct rq *rq)
|
||||
* prev into current:
|
||||
*/
|
||||
spin_acquire(&__rq_lockp(rq)->dep_map, 0, 0, _THIS_IP_);
|
||||
+ balance_switch(rq);
|
||||
raw_spin_rq_unlock_irq(rq);
|
||||
}
|
||||
|
||||
@@ -3983,6 +4644,22 @@ static inline void finish_lock_switch(struct rq *rq)
|
||||
# define finish_arch_post_lock_switch() do { } while (0)
|
||||
#endif
|
||||
|
||||
@ -20464,7 +20472,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
/**
|
||||
* prepare_task_switch - prepare to switch tasks
|
||||
* @rq: the runqueue preparing to switch
|
||||
@@ -4005,6 +4681,7 @@ prepare_task_switch(struct rq *rq, struct task_struct *prev,
|
||||
@@ -4005,6 +4682,7 @@ prepare_task_switch(struct rq *rq, struct task_struct *prev,
|
||||
perf_event_task_sched_out(prev, next);
|
||||
rseq_preempt(prev);
|
||||
fire_sched_out_preempt_notifiers(prev, next);
|
||||
@ -20472,7 +20480,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
prepare_task(next);
|
||||
prepare_arch_switch(next);
|
||||
}
|
||||
@@ -4073,6 +4750,7 @@ static struct rq *finish_task_switch(struct task_struct *prev)
|
||||
@@ -4073,6 +4751,7 @@ static struct rq *finish_task_switch(struct task_struct *prev)
|
||||
finish_lock_switch(rq);
|
||||
finish_arch_post_lock_switch();
|
||||
kcov_finish_switch(current);
|
||||
@ -20480,7 +20488,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
|
||||
fire_sched_in_preempt_notifiers(current);
|
||||
/*
|
||||
@@ -4089,63 +4767,19 @@ static struct rq *finish_task_switch(struct task_struct *prev)
|
||||
@@ -4089,63 +4768,19 @@ static struct rq *finish_task_switch(struct task_struct *prev)
|
||||
*/
|
||||
if (mm) {
|
||||
membarrier_mm_sync_core_before_usermode(mm);
|
||||
@ -20545,7 +20553,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
|
||||
/**
|
||||
* schedule_tail - first thing a freshly forked thread must call.
|
||||
@@ -4166,7 +4800,6 @@ asmlinkage __visible void schedule_tail(struct task_struct *prev)
|
||||
@@ -4166,7 +4801,6 @@ asmlinkage __visible void schedule_tail(struct task_struct *prev)
|
||||
*/
|
||||
|
||||
rq = finish_task_switch(prev);
|
||||
@ -20553,7 +20561,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
preempt_enable();
|
||||
|
||||
if (current->set_child_tid)
|
||||
@@ -5327,7 +5960,7 @@ pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
|
||||
@@ -5327,7 +5961,7 @@ pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
|
||||
*
|
||||
* WARNING: must be called with preemption disabled!
|
||||
*/
|
||||
@ -20562,7 +20570,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
{
|
||||
struct task_struct *prev, *next;
|
||||
unsigned long *switch_count;
|
||||
@@ -5380,7 +6013,7 @@ static void __sched notrace __schedule(bool preempt)
|
||||
@@ -5380,7 +6014,7 @@ static void __sched notrace __schedule(bool preempt)
|
||||
* - ptrace_{,un}freeze_traced() can change ->state underneath us.
|
||||
*/
|
||||
prev_state = prev->state;
|
||||
@ -20571,7 +20579,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
if (signal_pending_state(prev_state, prev)) {
|
||||
prev->state = TASK_RUNNING;
|
||||
} else {
|
||||
@@ -5415,6 +6048,7 @@ static void __sched notrace __schedule(bool preempt)
|
||||
@@ -5415,6 +6049,7 @@ static void __sched notrace __schedule(bool preempt)
|
||||
|
||||
next = pick_next_task(rq, prev, &rf);
|
||||
clear_tsk_need_resched(prev);
|
||||
@ -20579,7 +20587,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
clear_preempt_need_resched();
|
||||
|
||||
if (likely(prev != next)) {
|
||||
@@ -5440,6 +6074,7 @@ static void __sched notrace __schedule(bool preempt)
|
||||
@@ -5440,6 +6075,7 @@ static void __sched notrace __schedule(bool preempt)
|
||||
*/
|
||||
++*switch_count;
|
||||
|
||||
@ -20587,7 +20595,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
psi_sched_switch(prev, next, !task_on_rq_queued(prev));
|
||||
|
||||
trace_sched_switch(preempt, prev, next);
|
||||
@@ -5448,10 +6083,11 @@ static void __sched notrace __schedule(bool preempt)
|
||||
@@ -5448,10 +6084,11 @@ static void __sched notrace __schedule(bool preempt)
|
||||
rq = context_switch(rq, prev, next, &rf);
|
||||
} else {
|
||||
rq->clock_update_flags &= ~(RQCF_ACT_SKIP|RQCF_REQ_SKIP);
|
||||
@ -20602,7 +20610,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
}
|
||||
|
||||
void __noreturn do_task_dead(void)
|
||||
@@ -5462,7 +6098,7 @@ void __noreturn do_task_dead(void)
|
||||
@@ -5462,7 +6099,7 @@ void __noreturn do_task_dead(void)
|
||||
/* Tell freezer to ignore us: */
|
||||
current->flags |= PF_NOFREEZE;
|
||||
|
||||
@ -20611,7 +20619,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
BUG();
|
||||
|
||||
/* Avoid "noreturn function does return" - but don't continue if BUG() is a NOP: */
|
||||
@@ -5495,9 +6131,6 @@ static inline void sched_submit_work(struct task_struct *tsk)
|
||||
@@ -5495,9 +6132,6 @@ static inline void sched_submit_work(struct task_struct *tsk)
|
||||
preempt_enable_no_resched();
|
||||
}
|
||||
|
||||
@ -20621,7 +20629,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
/*
|
||||
* If we are going to sleep and we have plugged IO queued,
|
||||
* make sure to submit it to avoid deadlocks.
|
||||
@@ -5523,7 +6156,7 @@ asmlinkage __visible void __sched schedule(void)
|
||||
@@ -5523,7 +6157,7 @@ asmlinkage __visible void __sched schedule(void)
|
||||
sched_submit_work(tsk);
|
||||
do {
|
||||
preempt_disable();
|
||||
@ -20630,7 +20638,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
sched_preempt_enable_no_resched();
|
||||
} while (need_resched());
|
||||
sched_update_worker(tsk);
|
||||
@@ -5551,7 +6184,7 @@ void __sched schedule_idle(void)
|
||||
@@ -5551,7 +6185,7 @@ void __sched schedule_idle(void)
|
||||
*/
|
||||
WARN_ON_ONCE(current->state);
|
||||
do {
|
||||
@ -20639,7 +20647,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
} while (need_resched());
|
||||
}
|
||||
|
||||
@@ -5604,7 +6237,7 @@ static void __sched notrace preempt_schedule_common(void)
|
||||
@@ -5604,7 +6238,7 @@ static void __sched notrace preempt_schedule_common(void)
|
||||
*/
|
||||
preempt_disable_notrace();
|
||||
preempt_latency_start(1);
|
||||
@ -20648,7 +20656,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
preempt_latency_stop(1);
|
||||
preempt_enable_no_resched_notrace();
|
||||
|
||||
@@ -5615,6 +6248,30 @@ static void __sched notrace preempt_schedule_common(void)
|
||||
@@ -5615,6 +6249,30 @@ static void __sched notrace preempt_schedule_common(void)
|
||||
} while (need_resched());
|
||||
}
|
||||
|
||||
@ -20679,7 +20687,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
#ifdef CONFIG_PREEMPTION
|
||||
/*
|
||||
* This is the entry point to schedule() from in-kernel preemption
|
||||
@@ -5628,12 +6285,26 @@ asmlinkage __visible void __sched notrace preempt_schedule(void)
|
||||
@@ -5628,12 +6286,26 @@ asmlinkage __visible void __sched notrace preempt_schedule(void)
|
||||
*/
|
||||
if (likely(!preemptible()))
|
||||
return;
|
||||
@ -20707,7 +20715,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
#ifdef CONFIG_PREEMPT_DYNAMIC
|
||||
DEFINE_STATIC_CALL(preempt_schedule, __preempt_schedule_func);
|
||||
EXPORT_STATIC_CALL(preempt_schedule);
|
||||
@@ -5661,6 +6332,9 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void)
|
||||
@@ -5661,6 +6333,9 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void)
|
||||
if (likely(!preemptible()))
|
||||
return;
|
||||
|
||||
@ -20717,7 +20725,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
do {
|
||||
/*
|
||||
* Because the function tracer can trace preempt_count_sub()
|
||||
@@ -5683,7 +6357,7 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void)
|
||||
@@ -5683,7 +6358,7 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void)
|
||||
* an infinite recursion.
|
||||
*/
|
||||
prev_ctx = exception_enter();
|
||||
@ -20726,7 +20734,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
exception_exit(prev_ctx);
|
||||
|
||||
preempt_latency_stop(1);
|
||||
@@ -5901,7 +6575,7 @@ asmlinkage __visible void __sched preempt_schedule_irq(void)
|
||||
@@ -5901,7 +6576,7 @@ asmlinkage __visible void __sched preempt_schedule_irq(void)
|
||||
do {
|
||||
preempt_disable();
|
||||
local_irq_enable();
|
||||
@ -20735,7 +20743,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
local_irq_disable();
|
||||
sched_preempt_enable_no_resched();
|
||||
} while (need_resched());
|
||||
@@ -6067,9 +6741,11 @@ void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task)
|
||||
@@ -6067,9 +6742,11 @@ void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task)
|
||||
out_unlock:
|
||||
/* Avoid rq from going away on us: */
|
||||
preempt_disable();
|
||||
@ -20749,7 +20757,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
preempt_enable();
|
||||
}
|
||||
#else
|
||||
@@ -6312,6 +6988,7 @@ static int __sched_setscheduler(struct task_struct *p,
|
||||
@@ -6312,6 +6989,7 @@ static int __sched_setscheduler(struct task_struct *p,
|
||||
int oldpolicy = -1, policy = attr->sched_policy;
|
||||
int retval, oldprio, newprio, queued, running;
|
||||
const struct sched_class *prev_class;
|
||||
@ -20757,7 +20765,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
struct rq_flags rf;
|
||||
int reset_on_fork;
|
||||
int queue_flags = DEQUEUE_SAVE | DEQUEUE_MOVE | DEQUEUE_NOCLOCK;
|
||||
@@ -6573,6 +7250,7 @@ change:
|
||||
@@ -6573,6 +7251,7 @@ static int __sched_setscheduler(struct task_struct *p,
|
||||
|
||||
/* Avoid rq from going away on us: */
|
||||
preempt_disable();
|
||||
@ -20765,7 +20773,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
task_rq_unlock(rq, p, &rf);
|
||||
|
||||
if (pi) {
|
||||
@@ -6582,7 +7260,7 @@ change:
|
||||
@@ -6582,7 +7261,7 @@ static int __sched_setscheduler(struct task_struct *p,
|
||||
}
|
||||
|
||||
/* Run balance callbacks after we've adjusted the PI chain: */
|
||||
@ -20774,7 +20782,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
preempt_enable();
|
||||
|
||||
return 0;
|
||||
@@ -7077,7 +7755,7 @@ long sched_setaffinity(pid_t pid, const struct cpumask *in_mask)
|
||||
@@ -7077,7 +7756,7 @@ long sched_setaffinity(pid_t pid, const struct cpumask *in_mask)
|
||||
}
|
||||
#endif
|
||||
again:
|
||||
@ -20783,7 +20791,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
|
||||
if (!retval) {
|
||||
cpuset_cpus_allowed(p, cpus_allowed);
|
||||
@@ -7703,7 +8381,7 @@ void __init init_idle(struct task_struct *idle, int cpu)
|
||||
@@ -7703,7 +8382,7 @@ void __init init_idle(struct task_struct *idle, int cpu)
|
||||
*
|
||||
* And since this is boot we can forgo the serialization.
|
||||
*/
|
||||
@ -20792,7 +20800,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
#endif
|
||||
/*
|
||||
* We're having a chicken and egg problem, even though we are
|
||||
@@ -7730,7 +8408,9 @@ void __init init_idle(struct task_struct *idle, int cpu)
|
||||
@@ -7730,7 +8409,9 @@ void __init init_idle(struct task_struct *idle, int cpu)
|
||||
|
||||
/* Set the preempt count _outside_ the spinlocks! */
|
||||
init_idle_preempt_count(idle, cpu);
|
||||
@ -20803,7 +20811,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
/*
|
||||
* The idle tasks have their own, simple scheduling class:
|
||||
*/
|
||||
@@ -7827,6 +8507,7 @@ void sched_setnuma(struct task_struct *p, int nid)
|
||||
@@ -7827,6 +8508,7 @@ void sched_setnuma(struct task_struct *p, int nid)
|
||||
#endif /* CONFIG_NUMA_BALANCING */
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
@ -20811,7 +20819,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
/*
|
||||
* Ensure that the idle task is using init_mm right before its CPU goes
|
||||
* offline.
|
||||
@@ -7846,119 +8527,126 @@ void idle_task_exit(void)
|
||||
@@ -7846,119 +8528,126 @@ void idle_task_exit(void)
|
||||
/* finish_cpu(), as ran on the BP, will clean up the active_mm state */
|
||||
}
|
||||
|
||||
@ -21028,7 +21036,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
#endif /* CONFIG_HOTPLUG_CPU */
|
||||
|
||||
void set_rq_online(struct rq *rq)
|
||||
@@ -8061,7 +8749,8 @@ int sched_cpu_activate(unsigned int cpu)
|
||||
@@ -8061,7 +8750,8 @@ int sched_cpu_activate(unsigned int cpu)
|
||||
{
|
||||
struct rq *rq = cpu_rq(cpu);
|
||||
struct rq_flags rf;
|
||||
@ -21038,7 +21046,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
/*
|
||||
* When going up, increment the number of cores with SMT present.
|
||||
*/
|
||||
@@ -8097,6 +8786,8 @@ int sched_cpu_activate(unsigned int cpu)
|
||||
@@ -8097,6 +8787,8 @@ int sched_cpu_activate(unsigned int cpu)
|
||||
|
||||
int sched_cpu_deactivate(unsigned int cpu)
|
||||
{
|
||||
@ -21047,7 +21055,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
int ret;
|
||||
|
||||
set_cpu_active(cpu, false);
|
||||
@@ -8108,6 +8799,15 @@ int sched_cpu_deactivate(unsigned int cpu)
|
||||
@@ -8108,6 +8800,15 @@ int sched_cpu_deactivate(unsigned int cpu)
|
||||
* Do sync before park smpboot threads to take care the rcu boost case.
|
||||
*/
|
||||
synchronize_rcu();
|
||||
@ -21063,7 +21071,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
|
||||
/*
|
||||
* When going down, decrement the number of cores with SMT present.
|
||||
@@ -8151,6 +8851,41 @@ int sched_cpu_starting(unsigned int cpu)
|
||||
@@ -8151,6 +8852,41 @@ int sched_cpu_starting(unsigned int cpu)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
@ -21105,7 +21113,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
int sched_cpu_dying(unsigned int cpu)
|
||||
{
|
||||
struct rq *rq = cpu_rq(cpu);
|
||||
@@ -8160,12 +8895,7 @@ int sched_cpu_dying(unsigned int cpu)
|
||||
@@ -8160,12 +8896,7 @@ int sched_cpu_dying(unsigned int cpu)
|
||||
sched_tick_stop(cpu);
|
||||
|
||||
rq_lock_irqsave(rq, &rf);
|
||||
@ -21119,7 +21127,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
rq_unlock_irqrestore(rq, &rf);
|
||||
|
||||
calc_load_migrate(rq);
|
||||
@@ -8399,6 +9129,9 @@ void __init sched_init(void)
|
||||
@@ -8399,6 +9130,9 @@ void __init sched_init(void)
|
||||
|
||||
INIT_CSD(&rq->nohz_csd, nohz_csd_func, rq);
|
||||
#endif
|
||||
@ -21129,7 +21137,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
#endif /* CONFIG_SMP */
|
||||
hrtick_rq_init(rq);
|
||||
atomic_set(&rq->nr_iowait, 0);
|
||||
@@ -8449,7 +9182,7 @@ void __init sched_init(void)
|
||||
@@ -8449,7 +9183,7 @@ void __init sched_init(void)
|
||||
#ifdef CONFIG_DEBUG_ATOMIC_SLEEP
|
||||
static inline int preempt_count_equals(int preempt_offset)
|
||||
{
|
||||
@ -21138,7 +21146,7 @@ index 457eeebc7..bf88a1034 100644
|
||||
|
||||
return (nested == preempt_offset);
|
||||
}
|
||||
@@ -8546,6 +9279,39 @@ void __cant_sleep(const char *file, int line, int preempt_offset)
|
||||
@@ -8546,6 +9280,39 @@ void __cant_sleep(const char *file, int line, int preempt_offset)
|
||||
add_taint(TAINT_WARN, LOCKDEP_STILL_OK);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__cant_sleep);
|
||||
@ -21637,7 +21645,7 @@ index ddbc857a2..9dc62a542 100644
|
||||
if (WARN_ON(next_task == rq->curr))
|
||||
return 0;
|
||||
|
||||
@@ -1949,12 +1982,10 @@ retry:
|
||||
@@ -1949,12 +1982,10 @@ static int push_rt_task(struct rq *rq)
|
||||
deactivate_task(rq, next_task, 0);
|
||||
set_task_cpu(next_task, lowest_rq->cpu);
|
||||
activate_task(lowest_rq, next_task, 0);
|
||||
@ -21651,7 +21659,7 @@ index ddbc857a2..9dc62a542 100644
|
||||
out:
|
||||
put_task_struct(next_task);
|
||||
|
||||
@@ -1964,7 +1995,7 @@ out:
|
||||
@@ -1964,7 +1995,7 @@ static int push_rt_task(struct rq *rq)
|
||||
static void push_rt_tasks(struct rq *rq)
|
||||
{
|
||||
/* push_rt_task will return true if it moved an RT */
|
||||
@ -22039,7 +22047,7 @@ index eed7a3a38..9769b462e 100644
|
||||
/*
|
||||
* Flush all pending signals for this kthread.
|
||||
*/
|
||||
@@ -596,7 +654,7 @@ still_pending:
|
||||
@@ -596,7 +654,7 @@ static void collect_signal(int sig, struct sigpending *list, kernel_siginfo_t *i
|
||||
(info->si_code == SI_TIMER) &&
|
||||
(info->si_sys_private);
|
||||
|
||||
@ -22480,7 +22488,7 @@ index 4196b9f84..aebf2d468 100644
|
||||
|
||||
restart:
|
||||
/* Reset the pending bitmask before enabling irqs */
|
||||
@@ -307,8 +566,10 @@ restart:
|
||||
@@ -307,8 +566,10 @@ asmlinkage __visible void __softirq_entry __do_softirq(void)
|
||||
pending >>= softirq_bit;
|
||||
}
|
||||
|
||||
@ -22492,7 +22500,7 @@ index 4196b9f84..aebf2d468 100644
|
||||
local_irq_disable();
|
||||
|
||||
pending = local_softirq_pending();
|
||||
@@ -320,29 +581,10 @@ restart:
|
||||
@@ -320,29 +581,10 @@ asmlinkage __visible void __softirq_entry __do_softirq(void)
|
||||
wakeup_softirqd();
|
||||
}
|
||||
|
||||
@ -22777,7 +22785,7 @@ index d0bf6da49..7a74b501a 100644
|
||||
return cpu_stop_queue_work(cpu, work_buf);
|
||||
}
|
||||
|
||||
@@ -500,6 +517,8 @@ repeat:
|
||||
@@ -500,6 +517,8 @@ static void cpu_stopper_thread(unsigned int cpu)
|
||||
int ret;
|
||||
|
||||
/* cpu stop callbacks must not sleep, make in_atomic() == T */
|
||||
@ -22786,7 +22794,7 @@ index d0bf6da49..7a74b501a 100644
|
||||
preempt_count_inc();
|
||||
ret = fn(arg);
|
||||
if (done) {
|
||||
@@ -508,6 +527,8 @@ repeat:
|
||||
@@ -508,6 +527,8 @@ static void cpu_stopper_thread(unsigned int cpu)
|
||||
cpu_stop_signal_done(done);
|
||||
}
|
||||
preempt_count_dec();
|
||||
@ -23854,7 +23862,7 @@ index efe38ab47..ad72e587c 100644
|
||||
#if defined(HASHED_PAGE_VIRTUAL)
|
||||
|
||||
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
|
||||
index d02e91662..68ae58698 100644
|
||||
index d9467b38e..e93b743af 100644
|
||||
--- a/mm/memcontrol.c
|
||||
+++ b/mm/memcontrol.c
|
||||
@@ -67,6 +67,7 @@
|
||||
@ -24453,7 +24461,7 @@ index 7cf3cd1d0..024baa31c 100644
|
||||
|
||||
out:
|
||||
/* Separate test+clear to avoid unnecessary atomics */
|
||||
@@ -3522,7 +3592,7 @@ out:
|
||||
@@ -3522,7 +3592,7 @@ struct page *rmqueue(struct zone *preferred_zone,
|
||||
return page;
|
||||
|
||||
failed:
|
||||
@ -24888,7 +24896,7 @@ index ca71d3f3e..c2653a84b 100644
|
||||
if (n->shared) {
|
||||
struct array_cache *shared_array = n->shared;
|
||||
int max = shared_array->limit - shared_array->avail;
|
||||
@@ -3413,7 +3413,7 @@ free_done:
|
||||
@@ -3413,7 +3413,7 @@ static void cache_flusharray(struct kmem_cache *cachep, struct array_cache *ac)
|
||||
STATS_SET_FREEABLE(cachep, i);
|
||||
}
|
||||
#endif
|
||||
@ -24953,7 +24961,7 @@ index a0e92203e..7d5d941de 100644
|
||||
#ifdef CONFIG_SLAB
|
||||
struct list_head slabs_partial; /* partial list first, better asm code */
|
||||
diff --git a/mm/slub.c b/mm/slub.c
|
||||
index 9dd4cc478..46764081e 100644
|
||||
index d4e7e88df..ca6ec9f48 100644
|
||||
--- a/mm/slub.c
|
||||
+++ b/mm/slub.c
|
||||
@@ -458,7 +458,7 @@ static inline bool cmpxchg_double_slab(struct kmem_cache *s, struct page *page,
|
||||
@ -24992,7 +25000,7 @@ index 9dd4cc478..46764081e 100644
|
||||
slab_lock(page);
|
||||
|
||||
if (s->flags & SLAB_CONSISTENCY_CHECKS) {
|
||||
@@ -1273,7 +1273,7 @@ out:
|
||||
@@ -1273,7 +1273,7 @@ static noinline int free_debug_processing(
|
||||
bulk_cnt, cnt);
|
||||
|
||||
slab_unlock(page);
|
||||
@ -25090,7 +25098,7 @@ index 9dd4cc478..46764081e 100644
|
||||
return object;
|
||||
}
|
||||
|
||||
@@ -2267,7 +2297,7 @@ redo:
|
||||
@@ -2267,7 +2297,7 @@ static void deactivate_slab(struct kmem_cache *s, struct page *page,
|
||||
* that acquire_slab() will see a slab page that
|
||||
* is frozen
|
||||
*/
|
||||
@ -25099,7 +25107,7 @@ index 9dd4cc478..46764081e 100644
|
||||
}
|
||||
} else {
|
||||
m = M_FULL;
|
||||
@@ -2279,7 +2309,7 @@ redo:
|
||||
@@ -2279,7 +2309,7 @@ static void deactivate_slab(struct kmem_cache *s, struct page *page,
|
||||
* slabs from diagnostic functions will not see
|
||||
* any frozen slabs.
|
||||
*/
|
||||
@ -25108,7 +25116,7 @@ index 9dd4cc478..46764081e 100644
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -2304,7 +2334,7 @@ redo:
|
||||
@@ -2304,7 +2334,7 @@ static void deactivate_slab(struct kmem_cache *s, struct page *page,
|
||||
goto redo;
|
||||
|
||||
if (lock)
|
||||
@ -25199,14 +25207,14 @@ index 9dd4cc478..46764081e 100644
|
||||
*/
|
||||
static void *___slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
|
||||
- unsigned long addr, struct kmem_cache_cpu *c)
|
||||
+ unsigned long addr, struct kmem_cache_cpu *c,
|
||||
+ struct list_head *to_free)
|
||||
+ unsigned long addr, struct kmem_cache_cpu *c,
|
||||
+ struct list_head *to_free)
|
||||
{
|
||||
+ struct slub_free_list *f;
|
||||
void *freelist;
|
||||
struct page *page;
|
||||
|
||||
@@ -2753,6 +2804,13 @@ load_freelist:
|
||||
bool try_thisnode = true;
|
||||
@@ -2755,6 +2806,13 @@ static void *___slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
|
||||
VM_BUG_ON(!c->page->frozen);
|
||||
c->freelist = get_freepointer(s, freelist);
|
||||
c->tid = next_tid(c->tid);
|
||||
@ -25220,16 +25228,16 @@ index 9dd4cc478..46764081e 100644
|
||||
return freelist;
|
||||
|
||||
new_slab:
|
||||
@@ -2768,7 +2826,7 @@ new_slab:
|
||||
@@ -2794,7 +2852,7 @@ static void *___slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
|
||||
}
|
||||
|
||||
if (unlikely(!freelist)) {
|
||||
slab_out_of_memory(s, gfpflags, node);
|
||||
- return NULL;
|
||||
+ goto out;
|
||||
}
|
||||
|
||||
page = c->page;
|
||||
@@ -2781,7 +2839,7 @@ new_slab:
|
||||
@@ -2807,7 +2865,7 @@ static void *___slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
|
||||
goto new_slab; /* Slab failed checks. Next slab needed */
|
||||
|
||||
deactivate_slab(s, page, get_freepointer(s, freelist), c);
|
||||
@ -25238,7 +25246,7 @@ index 9dd4cc478..46764081e 100644
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2793,6 +2851,7 @@ static void *__slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
|
||||
@@ -2819,6 +2877,7 @@ static void *__slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
|
||||
{
|
||||
void *p;
|
||||
unsigned long flags;
|
||||
@ -25246,7 +25254,7 @@ index 9dd4cc478..46764081e 100644
|
||||
|
||||
local_irq_save(flags);
|
||||
#ifdef CONFIG_PREEMPTION
|
||||
@@ -2804,8 +2863,9 @@ static void *__slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
|
||||
@@ -2830,8 +2889,9 @@ static void *__slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
|
||||
c = this_cpu_ptr(s->cpu_slab);
|
||||
#endif
|
||||
|
||||
@ -25257,7 +25265,7 @@ index 9dd4cc478..46764081e 100644
|
||||
return p;
|
||||
}
|
||||
|
||||
@@ -2839,6 +2899,10 @@ static __always_inline void *slab_alloc_node(struct kmem_cache *s,
|
||||
@@ -2865,6 +2925,10 @@ static __always_inline void *slab_alloc_node(struct kmem_cache *s,
|
||||
unsigned long tid;
|
||||
struct obj_cgroup *objcg = NULL;
|
||||
|
||||
@ -25268,7 +25276,7 @@ index 9dd4cc478..46764081e 100644
|
||||
s = slab_pre_alloc_hook(s, &objcg, 1, gfpflags);
|
||||
if (!s)
|
||||
return NULL;
|
||||
@@ -3013,7 +3077,7 @@ static void __slab_free(struct kmem_cache *s, struct page *page,
|
||||
@@ -3039,7 +3103,7 @@ static void __slab_free(struct kmem_cache *s, struct page *page,
|
||||
|
||||
do {
|
||||
if (unlikely(n)) {
|
||||
@ -25277,7 +25285,7 @@ index 9dd4cc478..46764081e 100644
|
||||
n = NULL;
|
||||
}
|
||||
prior = page->freelist;
|
||||
@@ -3045,7 +3109,7 @@ static void __slab_free(struct kmem_cache *s, struct page *page,
|
||||
@@ -3071,7 +3135,7 @@ static void __slab_free(struct kmem_cache *s, struct page *page,
|
||||
* Otherwise the list_lock will synchronize with
|
||||
* other processors updating the list of slabs.
|
||||
*/
|
||||
@ -25286,7 +25294,7 @@ index 9dd4cc478..46764081e 100644
|
||||
|
||||
}
|
||||
}
|
||||
@@ -3087,7 +3151,7 @@ static void __slab_free(struct kmem_cache *s, struct page *page,
|
||||
@@ -3113,7 +3177,7 @@ static void __slab_free(struct kmem_cache *s, struct page *page,
|
||||
add_partial(n, page, DEACTIVATE_TO_TAIL);
|
||||
stat(s, FREE_ADD_PARTIAL);
|
||||
}
|
||||
@ -25295,7 +25303,7 @@ index 9dd4cc478..46764081e 100644
|
||||
return;
|
||||
|
||||
slab_empty:
|
||||
@@ -3102,7 +3166,7 @@ slab_empty:
|
||||
@@ -3128,7 +3192,7 @@ static void __slab_free(struct kmem_cache *s, struct page *page,
|
||||
remove_full(s, n, page);
|
||||
}
|
||||
|
||||
@ -25304,7 +25312,7 @@ index 9dd4cc478..46764081e 100644
|
||||
stat(s, FREE_SLAB);
|
||||
discard_slab(s, page);
|
||||
}
|
||||
@@ -3329,9 +3393,14 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size,
|
||||
@@ -3355,9 +3419,14 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size,
|
||||
void **p)
|
||||
{
|
||||
struct kmem_cache_cpu *c;
|
||||
@ -25319,7 +25327,7 @@ index 9dd4cc478..46764081e 100644
|
||||
/* memcg and kmem_cache debug support */
|
||||
s = slab_pre_alloc_hook(s, &objcg, size, flags);
|
||||
if (unlikely(!s))
|
||||
@@ -3368,7 +3437,7 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size,
|
||||
@@ -3394,7 +3463,7 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size,
|
||||
* of re-populating per CPU c->freelist
|
||||
*/
|
||||
p[i] = ___slab_alloc(s, flags, NUMA_NO_NODE,
|
||||
@ -25328,7 +25336,7 @@ index 9dd4cc478..46764081e 100644
|
||||
if (unlikely(!p[i]))
|
||||
goto error;
|
||||
|
||||
@@ -3383,6 +3452,7 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size,
|
||||
@@ -3409,6 +3478,7 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size,
|
||||
}
|
||||
c->tid = next_tid(c->tid);
|
||||
local_irq_enable();
|
||||
@ -25336,7 +25344,7 @@ index 9dd4cc478..46764081e 100644
|
||||
|
||||
/* Clear memory outside IRQ disabled fastpath loop */
|
||||
if (unlikely(slab_want_init_on_alloc(flags, s))) {
|
||||
@@ -3397,6 +3467,7 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size,
|
||||
@@ -3423,6 +3493,7 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size,
|
||||
return i;
|
||||
error:
|
||||
local_irq_enable();
|
||||
@ -25344,7 +25352,7 @@ index 9dd4cc478..46764081e 100644
|
||||
slab_post_alloc_hook(s, objcg, flags, i, p);
|
||||
__kmem_cache_free_bulk(s, i, p);
|
||||
return 0;
|
||||
@@ -3532,7 +3603,7 @@ static void
|
||||
@@ -3558,7 +3629,7 @@ static void
|
||||
init_kmem_cache_node(struct kmem_cache_node *n)
|
||||
{
|
||||
n->nr_partial = 0;
|
||||
@ -25353,7 +25361,7 @@ index 9dd4cc478..46764081e 100644
|
||||
INIT_LIST_HEAD(&n->partial);
|
||||
#ifdef CONFIG_SLUB_DEBUG
|
||||
atomic_long_set(&n->nr_slabs, 0);
|
||||
@@ -3927,7 +3998,7 @@ static void free_partial(struct kmem_cache *s, struct kmem_cache_node *n)
|
||||
@@ -3953,7 +4024,7 @@ static void free_partial(struct kmem_cache *s, struct kmem_cache_node *n)
|
||||
struct page *page, *h;
|
||||
|
||||
BUG_ON(irqs_disabled());
|
||||
@ -25362,7 +25370,7 @@ index 9dd4cc478..46764081e 100644
|
||||
list_for_each_entry_safe(page, h, &n->partial, slab_list) {
|
||||
if (!page->inuse) {
|
||||
remove_partial(n, page);
|
||||
@@ -3937,7 +4008,7 @@ static void free_partial(struct kmem_cache *s, struct kmem_cache_node *n)
|
||||
@@ -3963,7 +4034,7 @@ static void free_partial(struct kmem_cache *s, struct kmem_cache_node *n)
|
||||
"Objects remaining in %s on __kmem_cache_shutdown()");
|
||||
}
|
||||
}
|
||||
@ -25371,7 +25379,7 @@ index 9dd4cc478..46764081e 100644
|
||||
|
||||
list_for_each_entry_safe(page, h, &discard, slab_list)
|
||||
discard_slab(s, page);
|
||||
@@ -4206,7 +4277,7 @@ int __kmem_cache_shrink(struct kmem_cache *s)
|
||||
@@ -4232,7 +4303,7 @@ int __kmem_cache_shrink(struct kmem_cache *s)
|
||||
for (i = 0; i < SHRINK_PROMOTE_MAX; i++)
|
||||
INIT_LIST_HEAD(promote + i);
|
||||
|
||||
@ -25380,7 +25388,7 @@ index 9dd4cc478..46764081e 100644
|
||||
|
||||
/*
|
||||
* Build lists of slabs to discard or promote.
|
||||
@@ -4237,7 +4308,7 @@ int __kmem_cache_shrink(struct kmem_cache *s)
|
||||
@@ -4263,7 +4334,7 @@ int __kmem_cache_shrink(struct kmem_cache *s)
|
||||
for (i = SHRINK_PROMOTE_MAX - 1; i >= 0; i--)
|
||||
list_splice(promote + i, &n->partial);
|
||||
|
||||
@ -25389,7 +25397,7 @@ index 9dd4cc478..46764081e 100644
|
||||
|
||||
/* Release empty slabs */
|
||||
list_for_each_entry_safe(page, t, &discard, slab_list)
|
||||
@@ -4413,6 +4484,12 @@ void __init kmem_cache_init(void)
|
||||
@@ -4439,6 +4510,12 @@ void __init kmem_cache_init(void)
|
||||
static __initdata struct kmem_cache boot_kmem_cache,
|
||||
boot_kmem_cache_node;
|
||||
int node;
|
||||
@ -25402,7 +25410,7 @@ index 9dd4cc478..46764081e 100644
|
||||
|
||||
if (debug_guardpage_minorder())
|
||||
slub_max_order = 0;
|
||||
@@ -4611,7 +4688,7 @@ static int validate_slab_node(struct kmem_cache *s,
|
||||
@@ -4637,7 +4714,7 @@ static int validate_slab_node(struct kmem_cache *s,
|
||||
struct page *page;
|
||||
unsigned long flags;
|
||||
|
||||
@ -25411,7 +25419,7 @@ index 9dd4cc478..46764081e 100644
|
||||
|
||||
list_for_each_entry(page, &n->partial, slab_list) {
|
||||
validate_slab(s, page);
|
||||
@@ -4633,7 +4710,7 @@ static int validate_slab_node(struct kmem_cache *s,
|
||||
@@ -4659,7 +4736,7 @@ static int validate_slab_node(struct kmem_cache *s,
|
||||
s->name, count, atomic_long_read(&n->nr_slabs));
|
||||
|
||||
out:
|
||||
@ -25420,7 +25428,7 @@ index 9dd4cc478..46764081e 100644
|
||||
return count;
|
||||
}
|
||||
|
||||
@@ -4684,6 +4761,9 @@ static int alloc_loc_track(struct loc_track *t, unsigned long max, gfp_t flags)
|
||||
@@ -4710,6 +4787,9 @@ static int alloc_loc_track(struct loc_track *t, unsigned long max, gfp_t flags)
|
||||
struct location *l;
|
||||
int order;
|
||||
|
||||
@ -25430,7 +25438,7 @@ index 9dd4cc478..46764081e 100644
|
||||
order = get_order(sizeof(struct location) * max);
|
||||
|
||||
l = (void *)__get_free_pages(flags, order);
|
||||
@@ -4812,12 +4892,12 @@ static int list_locations(struct kmem_cache *s, char *buf,
|
||||
@@ -4838,12 +4918,12 @@ static int list_locations(struct kmem_cache *s, char *buf,
|
||||
if (!atomic_long_read(&n->nr_slabs))
|
||||
continue;
|
||||
|
||||
@ -25658,7 +25666,7 @@ index f75c638c6..6fdf4774f 100644
|
||||
for_each_unbuddied_list(i, chunks) {
|
||||
struct list_head *l = &unbuddied[i];
|
||||
|
||||
@@ -899,7 +902,7 @@ lookup:
|
||||
@@ -899,7 +902,7 @@ static inline struct z3fold_header *__z3fold_alloc(struct z3fold_pool *pool,
|
||||
!z3fold_page_trylock(zhdr)) {
|
||||
spin_unlock(&pool->lock);
|
||||
zhdr = NULL;
|
||||
@ -25667,7 +25675,7 @@ index f75c638c6..6fdf4774f 100644
|
||||
if (can_sleep)
|
||||
cond_resched();
|
||||
goto lookup;
|
||||
@@ -913,7 +916,7 @@ lookup:
|
||||
@@ -913,7 +916,7 @@ static inline struct z3fold_header *__z3fold_alloc(struct z3fold_pool *pool,
|
||||
test_bit(PAGE_CLAIMED, &page->private)) {
|
||||
z3fold_page_unlock(zhdr);
|
||||
zhdr = NULL;
|
||||
@ -25676,7 +25684,7 @@ index f75c638c6..6fdf4774f 100644
|
||||
if (can_sleep)
|
||||
cond_resched();
|
||||
goto lookup;
|
||||
@@ -928,7 +931,7 @@ lookup:
|
||||
@@ -928,7 +931,7 @@ static inline struct z3fold_header *__z3fold_alloc(struct z3fold_pool *pool,
|
||||
kref_get(&zhdr->refcount);
|
||||
break;
|
||||
}
|
||||
@ -25938,7 +25946,7 @@ index c49f3d306..5f9b8d26f 100644
|
||||
if (unlikely(contended))
|
||||
spin_lock(&q->busylock);
|
||||
|
||||
@@ -4618,6 +4624,7 @@ drop:
|
||||
@@ -4618,6 +4624,7 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu,
|
||||
rps_unlock(sd);
|
||||
|
||||
local_irq_restore(flags);
|
||||
|
||||
@ -9,9 +9,9 @@
|
||||
|
||||
%global upstream_version 5.10
|
||||
%global upstream_sublevel 0
|
||||
%global devel_release 246
|
||||
%global devel_release 249
|
||||
%global maintenance_release .0.0
|
||||
%global pkg_release .64
|
||||
%global pkg_release .65
|
||||
%global rt_release .rt62
|
||||
|
||||
%define with_debuginfo 1
|
||||
@ -958,6 +958,9 @@ fi
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Wed Feb 19 2025 zhangyu <zhangyu4@kylinos.cn> - 5.10.0-249.0.0.65
|
||||
- update kernel-rt version to 5.10.0-249.0.0
|
||||
|
||||
* Mon Jan 20 2025 zhangyu <zhangyu4@kylinos.cn> - 5.10.0-246.0.0.64
|
||||
- update kernel-rt version to 5.10.0-246.0.0
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user