scheduler changes for v2.6.40
Subsystems (18)
Linus,
Please pull the latest sched-core-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git sched-core-for-linus
Thanks,
Ingo
------------------>
Hillf Danton (2):
sched: Remove noop in alloc_rt_sched_group()
sched: Shorten the construction of the span cpu mask of sched domain
Jonathan Corbet (1):
sched: Get rid of lock_depth
Mike Galbraith (1):
sched, rt: Update rq clock when unthrottling of an otherwise idle CPU
Peter Zijlstra (46):
sched: Remove obsolete arch_ prefixes
sched: Simplify ->cpu_power initialization
sched: Simplify build_sched_groups()
sched: Change NODE sched_domain group creation
sched: Clean up some ALLNODES code
sched: Simplify sched_group creation
sched: Simplify finding the lowest sched_domain
sched: Simplify sched_groups_power initialization
sched: Dynamically allocate sched_domain/sched_group data-structures
sched: Simplify the free path some
sched: Avoid using sd->level
sched: Reduce some allocation pressure
sched: Simplify NODE/ALLNODES domain creation
sched: Remove nodemask allocation
sched: Remove some dead code
sched: Create persistent sched_domains_tmpmask
sched: Avoid allocations in sched_domain_debug()
sched: Create proper cpu_$DOM_mask() functions
sched: Stuff the sched_domain creation in a data-structure
sched: Unify the sched_domain build functions
sched: Reverse the topology list
sched: Move sched domain storage into the topology list
sched: Dynamic sched_domain::level
sched: Provide scheduler_ipi() callback in response to smp_send_reschedule()
sched: Always provide p->on_cpu
mutex: Use p->on_cpu for the adaptive spin
sched: Move wq_worker_waking to the correct site
sched: Change the ttwu() success details
sched: Clean up ttwu() stats
sched: Provide p->on_rq
sched: Serialize p->cpus_allowed and ttwu() using p->pi_lock
sched: Drop the rq argument to sched_class::select_task_rq()
sched: Remove rq argument to sched_class::task_waking()
sched: Deal with non-atomic min_vruntime reads on 32bits
sched: Delay task_contributes_to_load()
sched: Also serialize ttwu_local() with p->pi_lock
sched: Add p->pi_lock to task_rq_lock()
sched: Drop rq->lock from first part of wake_up_new_task()
sched: Drop rq->lock from sched_exec()
sched: Remove rq->lock from the first half of ttwu()
sched: Remove rq argument from ttwu_stat()
sched: Rename ttwu_post_activation() to ttwu_do_wakeup()
sched: Restructure ttwu() some more
sched: Move the second half of ttwu() to the remote cpu
sched: Remove need_migrate_task()
sched: Fix sched_domain iterations vs. RCU
Rakib Mullick (2):
sched: Remove obsolete comment from scheduler_tick()
sched: Wrap the 'cfs_rq->nr_spread_over' field with CONFIG_SCHED_DEBUG
Samir Bellabes (1):
sched: Remove unused parameters from sched_fork() and wake_up_new_task()
Shaohua Li (1):
sched: Eliminate dead code from wakeup_gran()
Stephan Baerwolf (1):
sched: Fix and optimise calculation of the weight-inverse
Stephen Rothwell (1):
sched, sparc64: Turn cpu_coregroup_mask() into a real function
Venkatesh Pallipadi (2):
sched: Make set_*_buddy() work on non-task entities
sched: Next buddy hint on sleep and preempt path
Vladimir Davydov (1):
sched: Remove unused 'this_best_prio arg' from balance_tasks()
Yong Zhang (1):
sched: Avoid going ahead if ->cpus_allowed is not changed
Documentation/trace/kprobetrace.txt | 1 - arch/alpha/kernel/smp.c | 3 +- arch/arm/kernel/smp.c | 5 +- arch/blackfin/mach-common/smp.c | 3 + arch/cris/arch-v32/kernel/smp.c | 13 +- arch/ia64/kernel/irq_ia64.c | 2 + arch/ia64/xen/irq_xen.c | 10 +- arch/m32r/kernel/smp.c | 4 +- arch/mips/cavium-octeon/smp.c | 2 + arch/mips/kernel/smtc.c | 2 +- arch/mips/mti-malta/malta-int.c | 2 + arch/mips/pmc-sierra/yosemite/smp.c | 4 + arch/mips/sgi-ip27/ip27-irq.c | 2 + arch/mips/sibyte/bcm1480/smp.c | 7 +- arch/mips/sibyte/sb1250/smp.c | 7 +- arch/mn10300/kernel/smp.c | 5 +- arch/parisc/kernel/smp.c | 5 +- arch/powerpc/kernel/smp.c | 4 +- arch/s390/kernel/smp.c | 6 +- arch/sh/kernel/smp.c | 2 + arch/sparc/include/asm/topology_64.h | 6 +- arch/sparc/kernel/smp_32.c | 4 +- arch/sparc/kernel/smp_64.c | 1 + arch/tile/kernel/smp.c | 6 +- arch/um/kernel/smp.c | 2 +- arch/x86/kernel/smp.c | 5 +- arch/x86/xen/smp.c | 5 +- include/linux/init_task.h | 1 - include/linux/mutex.h | 2 +- include/linux/sched.h | 61 +- init/Kconfig | 5 + kernel/cpuset.c | 2 +- kernel/fork.c | 5 +- kernel/mutex-debug.c | 2 +- kernel/mutex-debug.h | 2 +- kernel/mutex.c | 9 +- kernel/mutex.h | 2 +- kernel/sched.c | 1658 +++++++++-------------- kernel/sched_debug.c | 6 +- kernel/sched_fair.c | 126 ++- kernel/sched_features.h | 6 + kernel/sched_idletask.c | 2 +- kernel/sched_rt.c | 61 +- kernel/sched_stoptask.c | 5 +- kernel/trace/trace_kprobe.c | 1 - tools/perf/Documentation/perf-script-perl.txt | 1 - tools/perf/Documentation/perf-script-python.txt | 1 - 47 files changed, 909 insertions(+), 1167 deletions(-)
Documentation/trace/kprobetrace.txt +0 -1
@@ -120,7 +120,6 @@ format: field:unsigned char common_flags; offset:2; size:1; signed:0; field:unsigned char common_preempt_count; offset:3; size:1;signed:0; field:int common_pid; offset:4; size:4; signed:1; - field:int common_lock_depth; offset:8; size:4; signed:1; field:unsigned long __probe_ip; offset:12; size:4; signed:0; field:int __probe_nargs; offset:16; size:4; signed:1;
arch/alpha/kernel/smp.c +1 -2
@@ -585,8 +585,7 @@ handle_ipi(struct pt_regs *regs)switch (which) {case IPI_RESCHEDULE : -/* Reschedule callback. Everything to be done -is done by the interrupt return path. */ +scheduler_ipi ();break ;case IPI_CALL_FUNC :
arch/arm/kernel/smp.c +1 -4
@@ -560,10 +560,7 @@ asmlinkage void __exception_irq_entry do_IPI(int ipinr, struct pt_regs *regs)break ;case IPI_RESCHEDULE : -/* -* nothing more to do - eveything is -* done on the interrupt return path -*/ +scheduler_ipi ();break ;case IPI_CALL_FUNC :
arch/blackfin/mach-common/smp.c +3 -0
@@ -177,6 +177,9 @@ static irqreturn_t ipi_handler_int1(int irq, void *dev_instance)while (msg_queue->count) { msg = &msg_queue->ipi_message[msg_queue->head];switch (msg->type) { +case BFIN_IPI_RESCHEDULE : +scheduler_ipi (); +break ;case BFIN_IPI_CALL_FUNC :spin_unlock_irqrestore (&msg_queue->lock, flags);ipi_call_function (cpu, msg);
arch/cris/arch-v32/kernel/smp.c +8 -5
@@ -342,15 +342,18 @@ irqreturn_t crisv32_ipi_interrupt(int irq, void *dev_id) ipi =REG_RD (intr_vect, irq_regs[smp_processor_id ()], rw_ipi); +if (ipi.vector &IPI_SCHEDULE ) { +scheduler_ipi (); + }if (ipi.vector &IPI_CALL ) { -func (info); +func (info); }if (ipi.vector &IPI_FLUSH_TLB ) { -if (flush_mm ==FLUSH_ALL ) -__flush_tlb_all (); -else if (flush_vma ==FLUSH_ALL ) +if (flush_mm ==FLUSH_ALL ) +__flush_tlb_all (); +else if (flush_vma ==FLUSH_ALL )__flush_tlb_mm (flush_mm); -else +else __flush_tlb_page (flush_vma, flush_addr); }
arch/ia64/kernel/irq_ia64.c +2 -0
@@ -31,6 +31,7 @@#include <linux/irq.h> #include <linux/ratelimit.h> #include <linux/acpi.h> +#include <linux/sched.h> #include <asm/delay.h> #include <asm/intrinsics.h>
@@ -496,6 +497,7 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs)smp_local_flush_tlb ();kstat_incr_irqs_this_cpu (irq, desc); }else if (unlikely (IS_RESCHEDULE (vector))) { +scheduler_ipi ();kstat_incr_irqs_this_cpu (irq, desc); }else {ia64_setreg (_IA64_REG_CR_TPR, vector);
arch/ia64/xen/irq_xen.c +9 -1
@@ -92,6 +92,8 @@ static unsigned short saved_irq_cnt;static int xen_slab_ready;#ifdef CONFIG_SMP +#include <linux/sched.h> +/* Dummy stub. Though we may check XEN_RESCHEDULE_VECTOR before __do_IRQ, * it ends up to issue several memory accesses upon percpu data and * thus adds unnecessary traffic to other paths.
@@ -99,7 +101,13 @@ static int xen_slab_ready;static irqreturn_t xen_dummy_handler (int irq,void *dev_id) { +return IRQ_HANDLED ; +} +static irqreturn_t +xen_resched_handler (int irq,void *dev_id) +{ +scheduler_ipi ();return IRQ_HANDLED ; }
@@ -110,7 +118,7 @@ static struct irqaction xen_ipi_irqaction = { };static struct irqaction xen_resched_irqaction = { - .handler = xen_dummy_handler, + .handler = xen_resched_handler, .flags =IRQF_DISABLED , .name ="resched" };
arch/m32r/kernel/smp.c +1 -3
@@ -122,8 +122,6 @@ void smp_send_reschedule(int cpu_id)* * Description: This routine executes on CPU which received * 'RESCHEDULE_IPI'. -* Rescheduling is processed at the exit of interrupt -* operation. * * Born on Date: 2002.02.05 *
@@ -138,7 +136,7 @@ void smp_send_reschedule(int cpu_id)*==========================================================================*/ void smp_reschedule_interrupt (void ) { -/* nothing to do */ +scheduler_ipi (); }/*==========================================================================*
arch/mips/cavium-octeon/smp.c +2 -0
@@ -44,6 +44,8 @@ static irqreturn_t mailbox_interrupt(int irq, void *dev_id)if (action &SMP_CALL_FUNCTION )smp_call_function_interrupt (); +if (action &SMP_RESCHEDULE_YOURSELF ) +scheduler_ipi ();/* Check if we've been told to flush the icache */ if (action &SMP_ICACHE_FLUSH )
arch/mips/kernel/smtc.c +1 -1
@@ -929,7 +929,7 @@ static void post_direct_ipi(int cpu, struct smtc_ipi *pipi)static void ipi_resched_interrupt (void ) { -/* Return from interrupt should be enough to cause scheduler check */ +scheduler_ipi (); }static void ipi_call_interrupt (void )
arch/mips/mti-malta/malta-int.c +2 -0
@@ -309,6 +309,8 @@ static void ipi_call_dispatch(void)static irqreturn_t ipi_resched_interrupt (int irq,void *dev_id) { +scheduler_ipi (); +return IRQ_HANDLED ; }
arch/mips/pmc-sierra/yosemite/smp.c +4 -0
@@ -55,6 +55,8 @@ void titan_mailbox_irq(void)if (status &0x2 )smp_call_function_interrupt (); +if (status &0x4 ) +scheduler_ipi ();break ;case 1 :
@@ -63,6 +65,8 @@ void titan_mailbox_irq(void)if (status &0x2 )smp_call_function_interrupt (); +if (status &0x4 ) +scheduler_ipi ();break ; } }
arch/mips/sgi-ip27/ip27-irq.c +2 -0
@@ -147,8 +147,10 @@ static void ip27_do_irq_mask0(void) #ifdef CONFIG_SMP if (pend0 & (1UL << CPU_RESCHED_A_IRQ)) { LOCAL_HUB_CLR_INTR(CPU_RESCHED_A_IRQ); + scheduler_ipi(); } else if (pend0 & (1UL << CPU_RESCHED_B_IRQ)) { LOCAL_HUB_CLR_INTR(CPU_RESCHED_B_IRQ); + scheduler_ipi(); } else if (pend0 & (1UL << CPU_CALL_A_IRQ)) { LOCAL_HUB_CLR_INTR(CPU_CALL_A_IRQ); smp_call_function_interrupt();
arch/mips/sibyte/bcm1480/smp.c +3 -4
@@ -20,6 +20,7 @@#include <linux/delay.h> #include <linux/smp.h> #include <linux/kernel_stat.h> +#include <linux/sched.h> #include <asm/mmu_context.h> #include <asm/io.h>
@@ -189,10 +190,8 @@ void bcm1480_mailbox_interrupt(void)/* Clear the mailbox to clear the interrupt */ __raw_writeq (((u64 )action)<<48 , mailbox_0_clear_regs[cpu]); -/* -* Nothing to do for SMP_RESCHEDULE_YOURSELF; returning from the -* interrupt will do the reschedule for us -*/ +if (action &SMP_RESCHEDULE_YOURSELF ) +scheduler_ipi ();if (action &SMP_CALL_FUNCTION )smp_call_function_interrupt ();
arch/mips/sibyte/sb1250/smp.c +3 -4
@@ -21,6 +21,7 @@#include <linux/interrupt.h> #include <linux/smp.h> #include <linux/kernel_stat.h> +#include <linux/sched.h> #include <asm/mmu_context.h> #include <asm/io.h>
@@ -177,10 +178,8 @@ void sb1250_mailbox_interrupt(void)/* Clear the mailbox to clear the interrupt */ ____raw_writeq (((u64 )action) <<48 , mailbox_clear_regs[cpu]); -/* -* Nothing to do for SMP_RESCHEDULE_YOURSELF; returning from the -* interrupt will do the reschedule for us -*/ +if (action &SMP_RESCHEDULE_YOURSELF ) +scheduler_ipi ();if (action &SMP_CALL_FUNCTION )smp_call_function_interrupt ();
arch/mn10300/kernel/smp.c +1 -4
@@ -494,14 +494,11 @@ void smp_send_stop(void)* @irq: The interrupt number. * @dev_id: The device ID. * -* We need do nothing here, since the scheduling will be effected on our way -* back through entry.S. -* * Returns IRQ_HANDLED to indicate we handled the interrupt successfully. */ static irqreturn_t smp_reschedule_interrupt (int irq,void *dev_id) { -/* do nothing */ +scheduler_ipi ();return IRQ_HANDLED ; }
arch/parisc/kernel/smp.c +1 -4
@@ -155,10 +155,7 @@ ipi_interrupt(int irq, void *dev_id)case IPI_RESCHEDULE :smp_debug (100 ,KERN_DEBUG "CPU%d IPI_RESCHEDULE\n" , this_cpu); -/* -* Reschedule callback. Everything to be -* done is done by the interrupt return path. -*/ +scheduler_ipi ();break ;case IPI_CALL_FUNC :
arch/powerpc/kernel/smp.c +2 -2
@@ -116,7 +116,7 @@ void smp_message_recv(int msg)generic_smp_call_function_interrupt ();break ;case PPC_MSG_RESCHEDULE : -/* we notice need_resched on exit */ +scheduler_ipi ();break ;case PPC_MSG_CALL_FUNC_SINGLE :generic_smp_call_function_single_interrupt ();
@@ -146,7 +146,7 @@ static irqreturn_t call_function_action(int irq, void *data)static irqreturn_t reschedule_action (int irq,void *data) { -/* we just need the return path side effect of checking need_resched */ +scheduler_ipi ();return IRQ_HANDLED ; }
arch/s390/kernel/smp.c +3 -3
@@ -165,12 +165,12 @@ static void do_ext_call_interrupt(unsigned int ext_int_code,kstat_cpu (smp_processor_id ()).irqs[EXTINT_IPI ]++;/* * handle bit signal external calls -* -* For the ec_schedule signal we have to do nothing. All the work -* is done automatically when we return from the interrupt. */ bits =xchg (&S390_lowcore.ext_call_fast,0 ); +if (test_bit (ec_schedule, &bits)) +scheduler_ipi (); +if (test_bit (ec_call_function, &bits))generic_smp_call_function_interrupt ();
arch/sh/kernel/smp.c +2 -0
@@ -20,6 +20,7 @@#include <linux/module.h> #include <linux/cpu.h> #include <linux/interrupt.h> +#include <linux/sched.h> #include <asm/atomic.h> #include <asm/processor.h> #include <asm/system.h>
@@ -323,6 +324,7 @@ void smp_message_recv(unsigned int msg)generic_smp_call_function_interrupt ();break ;case SMP_MSG_RESCHEDULE : +scheduler_ipi ();break ;case SMP_MSG_FUNCTION_SINGLE :generic_smp_call_function_single_interrupt ();
arch/sparc/include/asm/topology_64.h +5 -1
@@ -65,6 +65,10 @@ static inline int pcibus_to_node(struct pci_bus *pbus)#define smt_capable () (sparc64_multi_core)#endif /* CONFIG_SMP */ -#define cpu_coregroup_mask (cpu) (&cpu_core_map[cpu]) +extern cpumask_t cpu_core_map[NR_CPUS ]; +static inline const struct cpumask *cpu_coregroup_mask (int cpu) +{ +return &cpu_core_map[cpu]; +}#endif /* _ASM_SPARC64_TOPOLOGY_H */
arch/sparc/kernel/smp_32.c +3 -1
@@ -125,7 +125,9 @@ struct linux_prom_registers smp_penguin_ctable __cpuinitdata = { 0 };void smp_send_reschedule (int cpu) { -/* See sparc64 */ +/* +* XXX missing reschedule IPI, see scheduler_ipi() +*/ }void smp_send_stop (void )
arch/sparc/kernel/smp_64.c +1 -0
@@ -1368,6 +1368,7 @@ void smp_send_reschedule(int cpu) void __irq_entry smp_receive_signal_client(int irq, struct pt_regs *regs) {clear_softint (1 << irq); +scheduler_ipi (); }/* This is a nop because we capture all other cpus
arch/tile/kernel/smp.c +1 -5
@@ -189,12 +189,8 @@ void flush_icache_range(unsigned long start, unsigned long end)/* Called when smp_send_reschedule() triggers IRQ_RESCHEDULE. */ static irqreturn_t handle_reschedule_ipi (int irq,void *token) { -/* -* Nothing to do here; when we return from interrupt, the -* rescheduling will occur there. But do bump the interrupt -* profiler count in the meantime. -*/ __get_cpu_var (irq_stat).irq_resched_count++; +scheduler_ipi ();return IRQ_HANDLED ; }
arch/um/kernel/smp.c +1 -1
@@ -173,7 +173,7 @@ void IPI_handler(int cpu)break ;case 'R' : -set_tsk_need_resched (current); +scheduler_ipi ();break ;case 'S' :
arch/x86/kernel/smp.c +2 -3
@@ -194,14 +194,13 @@ static void native_stop_other_cpus(int wait) }/* -* Reschedule call back. Nothing to do, -* all the work is done automatically when -* we return from the interrupt. +* Reschedule call back. */ void smp_reschedule_interrupt (struct pt_regs *regs) {ack_APIC_irq ();inc_irq_stat (irq_resched_count); +scheduler_ipi ();/* * KVM uses this interrupt to force a cpu out of guest mode */
arch/x86/xen/smp.c +2 -3
@@ -46,13 +46,12 @@ static irqreturn_t xen_call_function_interrupt(int irq, void *dev_id);static irqreturn_t xen_call_function_single_interrupt (int irq,void *dev_id);/* -* Reschedule call back. Nothing to do, -* all the work is done automatically when -* we return from the interrupt. +* Reschedule call back. */ static irqreturn_t xen_reschedule_interrupt (int irq,void *dev_id) {inc_irq_stat (irq_resched_count); +scheduler_ipi ();return IRQ_HANDLED ; }
include/linux/init_task.h +0 -1
@@ -134,7 +134,6 @@ extern struct cred init_cred; .stack = &init_thread_info, \ .usage = ATOMIC_INIT(2), \ .flags = PF_KTHREAD, \ - .lock_depth = -1, \ .prio = MAX_PRIO-20, \ .static_prio = MAX_PRIO-20, \ .normal_prio = MAX_PRIO-20, \
include/linux/mutex.h +1 -1
@@ -51,7 +51,7 @@ struct mutex {spinlock_t wait_lock;struct list_head wait_list;#if defined(CONFIG_DEBUG_MUTEXES ) || defined(CONFIG_SMP ) -struct thread_info *owner; +struct task_struct *owner;#endif #ifdef CONFIG_DEBUG_MUTEXES const char *name;
include/linux/sched.h +25 -36
163 lines not on this page · raw message
init/Kconfig +5 -0
@@ -827,6 +827,11 @@ config SCHED_AUTOGROUP desktop applications. Task group autogeneration is currently based upon task session. +config SCHED_TTWU_QUEUE + bool + depends on !SPARC32 + default y + config MM_OWNER bool
kernel/cpuset.c +1 -1
@@ -1159,7 +1159,7 @@ int current_cpuset_is_being_rebound(void)static int update_relax_domain_level (struct cpuset *cs,s64 val) {#ifdef CONFIG_SMP -if (val <-1 || val >=SD_LV_MAX ) +if (val <-1 || val >= sched_domain_level_max)return -EINVAL ;#endif
kernel/fork.c +2 -3
@@ -1103,7 +1103,6 @@ static struct task_struct *copy_process(unsigned long clone_flags,posix_cpu_timers_init (p); - p->lock_depth =-1 ;/* -1 = no lock */ do_posix_clock_monotonic_gettime (&p->start_time); p->real_start_time = p->start_time;monotonic_to_bootbased (&p->real_start_time);
@@ -1153,7 +1152,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,#endif /* Perform scheduler related setup. Assign this task to a CPU. */ -sched_fork (p, clone_flags); +sched_fork (p); retval =perf_event_init_task (p);if (retval)
@@ -1464,7 +1463,7 @@ long do_fork(unsigned long clone_flags,*/ p->flags &= ~PF_STARTING ; -wake_up_new_task (p, clone_flags); +wake_up_new_task (p);tracehook_report_clone_complete (trace, regs, clone_flags, nr, p);
kernel/mutex-debug.c +1 -1
@@ -75,7 +75,7 @@ void debug_mutex_unlock(struct mutex *lock)return ;DEBUG_LOCKS_WARN_ON (lock->magic != lock); -DEBUG_LOCKS_WARN_ON (lock->owner !=current_thread_info ()); +DEBUG_LOCKS_WARN_ON (lock->owner != current);DEBUG_LOCKS_WARN_ON (!lock->wait_list.prev && !lock->wait_list.next);mutex_clear_owner (lock); }
kernel/mutex-debug.h +1 -1
@@ -29,7 +29,7 @@ extern void debug_mutex_init(struct mutex *lock, const char *name,static inline void mutex_set_owner (struct mutex *lock) { - lock->owner =current_thread_info (); + lock->owner = current; }static inline void mutex_clear_owner (struct mutex *lock)
kernel/mutex.c +1 -8
@@ -160,14 +160,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,*/ for (;;) { -struct thread_info *owner; - -/* -* If we own the BKL, then don't spin. The owner of -* the mutex might be waiting on us to release the BKL. -*/ -if (unlikely (current->lock_depth >=0 )) -break ; +struct task_struct *owner;/* * If there's an owner, wait for it to either
kernel/mutex.h +1 -1
@@ -19,7 +19,7 @@#ifdef CONFIG_SMP static inline void mutex_set_owner (struct mutex *lock) { - lock->owner =current_thread_info (); + lock->owner = current; }static inline void mutex_clear_owner (struct mutex *lock)
kernel/sched.c +667 -991
2,384 lines not on this page · raw message
kernel/sched_fair.c +87 -39
126 lines not on this page · raw message
kernel/sched_rt.c +41 -20
61 lines not on this page · raw message
tools/perf/Documentation/perf-script-perl.txt +0 -1
Lines of this file are not shown. View the raw message.
tools/perf/Documentation/perf-script-python.txt +0 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.