Message ID | 20230510225211.111113-2-hare@suse.de |
---|---|
State | New |
Headers | show |
Series | libata: remove references to 'old' error handler | expand |
On 5/11/23 07:52, Hannes Reinecke wrote: > With commit 65a15d6560df ("scsi: ipr: Remove SATA support") all > libata drivers now have the error_handler() callback provided, > so we can stop checking for non-existing error_handler callback. > > Signed-off-by: Hannes Reinecke <hare@suse.de> > --- > drivers/ata/libata-core.c | 158 ++++++++++++++------------------------ > drivers/ata/libata-eh.c | 148 +++++++++++++++-------------------- > drivers/ata/libata-sata.c | 5 +- > drivers/ata/libata-scsi.c | 21 ++--- > drivers/ata/libata-sff.c | 32 +++----- > 5 files changed, 139 insertions(+), 225 deletions(-) > [...] > - case ATA_CMD_SLEEP: > - dev->flags |= ATA_DFLAG_SLEEPING; > + trace_ata_qc_complete_done(qc); > + /* Some commands need post-processing after successful > + * completion. > + */ While at it, can you fix this comment style ? It may actually fit on one line... [...] > + /* Exception might have happened after ->error_handler > + * recovered the port but before this point. Repeat > + * EH in such case. > + */ Same here. Multi-line comment format... [...] > - /* end eh (clear host_eh_scheduled) while holding > - * ap->lock such that if exception occurs after this > - * point but before EH completion, SCSI midlayer will > - * re-initiate EH. > - */ > - ap->ops->end_eh(ap); > + /* end eh (clear host_eh_scheduled) while holding > + * ap->lock such that if exception occurs after this > + * point but before EH completion, SCSI midlayer will > + * re-initiate EH. > + */ And here. [...] > diff --git a/drivers/ata/libata-sata.c b/drivers/ata/libata-sata.c > index f3e7396e3191..bd2a754b645c 100644 > --- a/drivers/ata/libata-sata.c > +++ b/drivers/ata/libata-sata.c > @@ -1138,11 +1138,8 @@ EXPORT_SYMBOL_GPL(ata_sas_port_alloc); > int ata_sas_port_start(struct ata_port *ap) > { > /* > - * the port is marked as frozen at allocation time, but if we don't > - * have new eh, we won't thaw it > + * the port is marked as frozen at allocation time > */ This one can be a single line comment, no ? [...] > diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c > index 9d28badfe41d..aa286d48e847 100644 > --- a/drivers/ata/libata-sff.c > +++ b/drivers/ata/libata-sff.c > @@ -883,31 +883,23 @@ static void ata_hsm_qc_complete(struct ata_queued_cmd *qc, int in_wq) > { > struct ata_port *ap = qc->ap; > > - if (ap->ops->error_handler) { > - if (in_wq) { > - /* EH might have kicked in while host lock is > - * released. > - */ > - qc = ata_qc_from_tag(ap, qc->tag); > - if (qc) { > - if (likely(!(qc->err_mask & AC_ERR_HSM))) { > - ata_sff_irq_on(ap); > - ata_qc_complete(qc); > - } else > - ata_port_freeze(ap); > - } > - } else { > - if (likely(!(qc->err_mask & AC_ERR_HSM))) > + if (in_wq) { > + /* EH might have kicked in while host lock is > + * released. > + */ Comment format again. Also, please add linux-scsi and John to the distribution list when resending.
On Thu, May 11, 2023 at 12:52:06AM +0200, Hannes Reinecke wrote: > With commit 65a15d6560df ("scsi: ipr: Remove SATA support") all > libata drivers now have the error_handler() callback provided, > so we can stop checking for non-existing error_handler callback. > > Signed-off-by: Hannes Reinecke <hare@suse.de> > --- Hello Hannes, I think that you forgot to update the comments in a few places: $ git grep -i "new eh" drivers/ata > > - /* XXX: New EH and old EH use different mechanisms to > - * synchronize EH with regular execution path. > - * > - * In new EH, a qc owned by EH is marked with ATA_QCFLAG_EH. > - * Normal execution path is responsible for not accessing a > - * qc owned by EH. libata core enforces the rule by returning NULL > - * from ata_qc_from_tag() for qcs owned by EH. I think we should keep this part, but rephrase it to not mention "new EH", as it does provide valuable information related to ata_qc_complete(). > @@ -1680,9 +1674,8 @@ static void ata_scsi_qc_complete(struct ata_queued_cmd *qc) > /* Keep the SCSI ML and status byte, clear host byte. */ > cmd->result &= 0x0000ffff; > > - if (need_sense && !ap->ops->error_handler) > - ata_dump_status(ap, &qc->result_tf); > - > + if (!(qc->flags & ATA_QCFLAG_QUIET)) > + ata_dump_status(qc->ap, &qc->result_tf); > ata_qc_done(qc); Why remove the newline before the call to ata_qc_done() ? With your change here, you will start to print all QCs that doesn't have quiet set. That is a functional change and should be in a separate patch if we wanted that behavior, but I don't see why we would want that. I think that you should simply drop the call to ata_dump_status(). Kind regards, Niklas
Hello, kernel test robot noticed a -80.5% regression of fileio.write_operations/s on: commit: 2cd896b9da16e2db4e929af5f3f3ff2973813ce1 ("[PATCH 1/6] ata: remove reference to non-existing error_handler()") url: https://github.com/intel-lab-lkp/linux/commits/Hannes-Reinecke/ata-remove-reference-to-non-existing-error_handler/20230511-065326 base: https://git.kernel.org/cgit/linux/kernel/git/mkp/scsi.git for-next patch link: https://lore.kernel.org/all/20230510225211.111113-2-hare@suse.de/ patch subject: [PATCH 1/6] ata: remove reference to non-existing error_handler() testcase: fileio test machine: 96 threads 2 sockets (Ice Lake) with 256G memory parameters: period: 600s nr_threads: 100% disk: 1HDD fs: ext4 size: 64G filenum: 1024f rwmode: rndrw iomode: sync cpufreq_governor: performance test-description: fileio is a subtest of SysBench benchmark suite to measure file IO performance. test-url: https://github.com/akopytov/sysbench In addition to that, the commit also has significant impact on the following tests: +------------------+----------------------------------------------------------+ | testcase: change | stress-ng: stress-ng.msync.ops_per_sec -43.9% regression | | test machine | 96 threads 2 sockets (Ice Lake) with 256G memory | | test parameters | class=vm | | | cpufreq_governor=performance | | | disk=1HDD | | | fs=ext4 | | | nr_threads=10% | | | test=msync | | | testtime=60s | +------------------+----------------------------------------------------------+ If you fix the issue, kindly add following tag | Reported-by: kernel test robot <yujie.liu@intel.com> | Closes: https://lore.kernel.org/oe-lkp/202305231043.500c1123-yujie.liu@intel.com Details are as below: ========================================================================================= compiler/cpufreq_governor/disk/filenum/fs/iomode/kconfig/nr_threads/period/rootfs/rwmode/size/tbox_group/testcase: gcc-11/performance/1HDD/1024f/ext4/sync/x86_64-rhel-8.3/100%/600s/debian-11.1-x86_64-20220510.cgz/rndrw/64G/lkp-icl-2sp1/fileio commit: 44ef1604ae ("Merge patch series "smartpqi updates"") 2cd896b9da ("ata: remove reference to non-existing error_handler()") 44ef1604ae9492a7 2cd896b9da16e2db4e929af5f3f ---------------- --------------------------- %stddev %change %stddev \ | \ 2777 -76.3% 659.37 fileio.fsync_operations/s 67.60 +228.6% 222.15 fileio.latency_95th_ms 33.06 +348.5% 148.27 fileio.latency_avg_ms 318.66 ± 8% +249.3% 1112 ± 7% fileio.latency_max_ms 2.73 -80.6% 0.53 fileio.read_bytes_MB/s 2.61 -80.5% 0.51 fileio.read_bytes_MiB/s 166.72 -80.6% 32.41 fileio.read_operations/s 1403 +12.5% 1578 fileio.time.elapsed_time 1403 +12.5% 1578 fileio.time.elapsed_time.max 1.364e+08 -1.2% 1.347e+08 fileio.time.file_system_outputs 71049 -72.9% 19222 fileio.time.involuntary_context_switches 5.88 ± 5% -66.0% 2.00 fileio.time.percent_of_cpu_this_job_got 83.27 -48.6% 42.82 fileio.time.system_time 3984907 -58.4% 1656586 ± 6% fileio.time.voluntary_context_switches 1.82 -80.6% 0.35 fileio.write_bytes_MB/s 1.74 -80.5% 0.34 fileio.write_bytes_MiB/s 111.18 -80.5% 21.63 fileio.write_operations/s 1.307e+11 +12.1% 1.465e+11 cpuidle..time 1.397e+08 +11.4% 1.556e+08 cpuidle..usage 21335 ± 12% -26.2% 15749 meminfo.Active(file) 15096 -12.9% 13150 meminfo.Buffers 1499 +13.0% 1694 ± 3% uptime.boot 97035 +22.9% 119268 ± 4% uptime.idle 65.78 +9.5% 72.00 iostat.cpu.idle 31.63 -20.8% 25.04 ± 2% iostat.cpu.iowait 2.57 +14.1% 2.93 iostat.cpu.system 31.68 -6.6 25.08 ± 2% mpstat.cpu.all.iowait% 0.09 ± 2% -0.0 0.07 ± 2% mpstat.cpu.all.soft% 0.09 +0.4 0.48 mpstat.cpu.all.sys% 0.02 ± 8% +0.0 0.02 ± 13% mpstat.cpu.all.usr% 65.25 +9.7% 71.60 vmstat.cpu.id 30.88 -20.3% 24.60 ± 2% vmstat.cpu.wa 49150 -12.2% 43161 vmstat.io.bo 15105 -12.9% 13152 vmstat.memory.buff 38.12 +82.8% 69.70 turbostat.Avg_MHz 1094 +69.4% 1854 turbostat.Bzy_MHz 344750 ± 3% -66.1% 116923 ± 4% turbostat.C1 47242535 -14.7% 40295416 ± 2% turbostat.C1E 31.66 -6.4 25.24 ± 2% turbostat.C1E% 91252914 +22.7% 1.12e+08 turbostat.C6 43.56 -22.8% 33.63 ± 4% turbostat.CPU%c1 52.94 +18.3% 62.62 ± 2% turbostat.CPU%c6 0.07 -41.4% 0.04 ± 7% turbostat.IPC 1.398e+08 +14.2% 1.597e+08 ± 2% turbostat.IRQ 825200 ± 3% +291.9% 3233783 ± 8% turbostat.POLL 0.01 -0.0 0.00 turbostat.POLL% 213.62 +5.1% 224.58 turbostat.PkgWatt 5334 ± 12% -26.2% 3936 proc-vmstat.nr_active_file 17048223 -1.2% 16847214 proc-vmstat.nr_dirtied 2545 -7.0% 2367 proc-vmstat.nr_dirty 17047994 -1.2% 16847214 proc-vmstat.nr_written 5334 ± 12% -26.2% 3936 proc-vmstat.nr_zone_active_file 5737 -2.0% 5623 proc-vmstat.nr_zone_write_pending 609.62 ±210% +710.5% 4940 ± 60% proc-vmstat.numa_hint_faults_local 19908753 +2.8% 20462954 proc-vmstat.pgalloc_normal 2732040 +12.7% 3079594 proc-vmstat.pgfault 2164860 +11.6% 2416649 proc-vmstat.pgfree 69111623 -1.2% 68251093 proc-vmstat.pgpgout 126160 +11.5% 140701 proc-vmstat.pgreuse 365.75 +6241.7% 23194 proc-vmstat.unevictable_pgs_culled 11979648 +880.7% 1.175e+08 proc-vmstat.unevictable_pgs_scanned 71.33 +17.5% 83.80 ± 2% perf-stat.i.MPKI 1.455e+08 +14.6% 1.667e+08 perf-stat.i.branch-instructions 8224513 ± 3% +14.8% 9440272 ± 4% perf-stat.i.branch-misses 4.83 ± 6% -3.3 1.56 ± 3% perf-stat.i.cache-miss-rate% 1452578 -19.3% 1171691 ± 3% perf-stat.i.cache-misses 53734558 +28.5% 69062025 ± 2% perf-stat.i.cache-references 3.21 +110.2% 6.74 perf-stat.i.cpi 2.371e+09 +128.6% 5.421e+09 perf-stat.i.cpu-cycles 139.42 -20.5% 110.89 perf-stat.i.cpu-migrations 1700 +304.5% 6880 ± 3% perf-stat.i.cycles-between-cache-misses 2.076e+08 +10.1% 2.285e+08 perf-stat.i.dTLB-loads 0.15 ± 10% +0.0 0.19 ± 2% perf-stat.i.dTLB-store-miss-rate% 164570 ± 10% +34.9% 222076 ± 2% perf-stat.i.dTLB-store-misses 1.104e+08 +10.5% 1.221e+08 perf-stat.i.dTLB-stores 7.498e+08 +14.3% 8.571e+08 perf-stat.i.instructions 0.34 -54.9% 0.15 perf-stat.i.ipc 0.02 +128.6% 0.06 perf-stat.i.metric.GHz 4.48 +15.5% 5.18 perf-stat.i.metric.M/sec 139923 ± 2% -28.5% 99993 ± 5% perf-stat.i.node-load-misses 902773 -14.3% 773927 ± 3% perf-stat.i.node-stores 71.76 +12.0% 80.34 perf-stat.overall.MPKI 2.70 -1.0 1.71 ± 3% perf-stat.overall.cache-miss-rate% 3.16 +99.1% 6.30 perf-stat.overall.cpi 1631 +181.9% 4600 ± 3% perf-stat.overall.cycles-between-cache-misses 0.32 -49.8% 0.16 perf-stat.overall.ipc 84.50 -4.5 79.96 perf-stat.overall.node-load-miss-rate% 1.457e+08 +15.1% 1.676e+08 perf-stat.ps.branch-instructions 8242156 ± 3% +14.9% 9472331 ± 4% perf-stat.ps.branch-misses 1454753 -18.9% 1180256 ± 3% perf-stat.ps.cache-misses 53858349 +28.5% 69187605 ± 2% perf-stat.ps.cache-references 2.374e+09 +128.4% 5.423e+09 perf-stat.ps.cpu-cycles 139.11 -20.5% 110.64 perf-stat.ps.cpu-migrations 2.079e+08 +10.4% 2.296e+08 perf-stat.ps.dTLB-loads 164808 ± 10% +34.8% 222227 ± 2% perf-stat.ps.dTLB-store-misses 1.105e+08 +10.8% 1.225e+08 perf-stat.ps.dTLB-stores 7.506e+08 +14.7% 8.611e+08 perf-stat.ps.instructions 139475 ± 2% -28.5% 99775 ± 5% perf-stat.ps.node-load-misses 904853 -14.0% 778525 ± 3% perf-stat.ps.node-stores 1.054e+12 +29.0% 1.36e+12 perf-stat.total.instructions 99.38 -0.6 98.82 perf-profile.calltrace.cycles-pp.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state.cpuidle_enter 99.47 -0.5 98.94 perf-profile.calltrace.cycles-pp.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call 99.47 -0.5 98.94 perf-profile.calltrace.cycles-pp.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle 99.48 -0.5 98.97 perf-profile.calltrace.cycles-pp.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle.cpu_startup_entry 99.50 -0.5 99.03 perf-profile.calltrace.cycles-pp.secondary_startup_64_no_verify 5.89 ± 19% +2.3 8.18 ± 14% perf-profile.calltrace.cycles-pp.perf_mux_hrtimer_handler.__hrtimer_run_queues.hrtimer_interrupt.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt 4.84 ± 25% +2.9 7.78 ± 28% perf-profile.calltrace.cycles-pp.ktime_get.perf_mux_hrtimer_handler.__hrtimer_run_queues.hrtimer_interrupt.__sysvec_apic_timer_interrupt 99.48 -0.5 99.01 perf-profile.children.cycles-pp.cpuidle_enter_state 99.48 -0.5 99.01 perf-profile.children.cycles-pp.cpuidle_enter 99.48 -0.5 99.01 perf-profile.children.cycles-pp.cpuidle_idle_call 99.50 -0.5 99.03 perf-profile.children.cycles-pp.do_idle 99.50 -0.5 99.03 perf-profile.children.cycles-pp.secondary_startup_64_no_verify 99.50 -0.5 99.03 perf-profile.children.cycles-pp.cpu_startup_entry 0.91 ± 6% -0.2 0.74 ± 16% perf-profile.children.cycles-pp.end_repeat_nmi 0.34 ± 14% -0.1 0.26 ± 11% perf-profile.children.cycles-pp.cc_platform_has 0.10 ± 21% +0.1 0.16 ± 26% perf-profile.children.cycles-pp.generic_perform_write 0.11 ± 19% +0.1 0.17 ± 23% perf-profile.children.cycles-pp.vfs_write 0.10 ± 20% +0.1 0.16 ± 26% perf-profile.children.cycles-pp.__libc_write 0.11 ± 19% +0.1 0.17 ± 25% perf-profile.children.cycles-pp.ksys_write 0.22 ± 33% +0.1 0.37 ± 25% perf-profile.children.cycles-pp.hrtimer_forward 0.01 ±264% +0.4 0.45 ± 35% perf-profile.children.cycles-pp.drm_atomic_helper_commit_planes 0.01 ±264% +0.4 0.45 ± 35% perf-profile.children.cycles-pp.ast_primary_plane_helper_atomic_update 0.01 ±264% +0.4 0.45 ± 35% perf-profile.children.cycles-pp.drm_fb_memcpy 0.01 ±264% +0.4 0.45 ± 35% perf-profile.children.cycles-pp.memcpy_toio 0.01 ±264% +0.4 0.46 ± 34% perf-profile.children.cycles-pp.drm_atomic_helper_commit_tail_rpm 0.01 ±264% +0.5 0.46 ± 34% perf-profile.children.cycles-pp.commit_tail 0.01 ±264% +0.5 0.46 ± 34% perf-profile.children.cycles-pp.ast_mode_config_helper_atomic_commit_tail 0.01 ±264% +0.5 0.46 ± 34% perf-profile.children.cycles-pp.drm_atomic_helper_dirtyfb 0.01 ±264% +0.5 0.46 ± 34% perf-profile.children.cycles-pp.drm_atomic_commit 0.01 ±264% +0.5 0.46 ± 34% perf-profile.children.cycles-pp.drm_atomic_helper_commit 0.04 ± 79% +0.5 0.49 ± 33% perf-profile.children.cycles-pp.ret_from_fork 0.03 ±102% +0.5 0.49 ± 33% perf-profile.children.cycles-pp.kthread 0.02 ±131% +0.5 0.49 ± 33% perf-profile.children.cycles-pp.process_one_work 0.01 ±173% +0.5 0.48 ± 34% perf-profile.children.cycles-pp.drm_fb_helper_damage_work 0.01 ±173% +0.5 0.48 ± 34% perf-profile.children.cycles-pp.drm_fbdev_generic_helper_fb_dirty 0.02 ±131% +0.5 0.49 ± 33% perf-profile.children.cycles-pp.worker_thread 6.46 ± 16% +2.2 8.64 ± 12% perf-profile.children.cycles-pp.ktime_get 6.08 ± 18% +2.4 8.48 ± 13% perf-profile.children.cycles-pp.perf_mux_hrtimer_handler 0.91 ± 6% -0.2 0.74 ± 16% perf-profile.self.cycles-pp.end_repeat_nmi 0.34 ± 14% -0.1 0.25 ± 12% perf-profile.self.cycles-pp.cc_platform_has 0.59 ± 17% +0.2 0.78 ± 9% perf-profile.self.cycles-pp.ktime_get 9.40 ±121% +9925.4% 942.79 ± 31% sched_debug.cfs_rq:/.MIN_vruntime.avg 674.99 ±121% +9200.4% 62776 ± 27% sched_debug.cfs_rq:/.MIN_vruntime.max 77.35 ±120% +9635.5% 7530 ± 29% sched_debug.cfs_rq:/.MIN_vruntime.stddev 0.04 ± 7% +34.8% 0.06 ± 6% sched_debug.cfs_rq:/.h_nr_running.avg 1.00 +14.2% 1.14 ± 4% sched_debug.cfs_rq:/.h_nr_running.max 0.19 ± 3% +22.4% 0.24 ± 3% sched_debug.cfs_rq:/.h_nr_running.stddev 24082 ± 12% +559.9% 158919 ± 27% sched_debug.cfs_rq:/.load.avg 798444 ± 4% +1182.0% 10235947 ± 29% sched_debug.cfs_rq:/.load.max 119917 ± 5% +909.4% 1210397 ± 29% sched_debug.cfs_rq:/.load.stddev 25.47 ± 11% +617.6% 182.79 ± 10% sched_debug.cfs_rq:/.load_avg.avg 958.80 ± 6% +1198.0% 12445 ± 10% sched_debug.cfs_rq:/.load_avg.max 130.31 ± 6% +989.8% 1420 ± 10% sched_debug.cfs_rq:/.load_avg.stddev 9.40 ±121% +9925.4% 942.79 ± 31% sched_debug.cfs_rq:/.max_vruntime.avg 674.99 ±121% +9200.4% 62776 ± 27% sched_debug.cfs_rq:/.max_vruntime.max 77.35 ±120% +9635.5% 7530 ± 29% sched_debug.cfs_rq:/.max_vruntime.stddev 40961 ± 16% +536.9% 260896 ± 4% sched_debug.cfs_rq:/.min_vruntime.max 5628 ± 11% +431.7% 29924 ± 3% sched_debug.cfs_rq:/.min_vruntime.stddev 0.04 ± 7% +34.6% 0.06 ± 6% sched_debug.cfs_rq:/.nr_running.avg 1.00 +14.2% 1.14 ± 4% sched_debug.cfs_rq:/.nr_running.max 0.19 ± 3% +22.3% 0.24 ± 3% sched_debug.cfs_rq:/.nr_running.stddev 28.38 ± 5% +46.5% 41.57 ± 7% sched_debug.cfs_rq:/.runnable_avg.avg 587.50 +55.4% 912.77 ± 4% sched_debug.cfs_rq:/.runnable_avg.max 88.99 ± 4% +60.3% 142.67 ± 5% sched_debug.cfs_rq:/.runnable_avg.stddev 12240 ± 69% +1748.1% 226217 ± 6% sched_debug.cfs_rq:/.spread0.max 5628 ± 11% +431.6% 29925 ± 3% sched_debug.cfs_rq:/.spread0.stddev 28.29 ± 5% +36.5% 38.62 ± 8% sched_debug.cfs_rq:/.util_avg.avg 586.81 +26.2% 740.46 ± 4% sched_debug.cfs_rq:/.util_avg.max 88.91 ± 4% +40.3% 124.75 ± 5% sched_debug.cfs_rq:/.util_avg.stddev 2.41 ± 13% +423.9% 12.60 ± 13% sched_debug.cfs_rq:/.util_est_enqueued.avg 85.58 ± 10% +637.3% 630.94 ± 10% sched_debug.cfs_rq:/.util_est_enqueued.max 12.96 ± 9% +533.8% 82.13 ± 11% sched_debug.cfs_rq:/.util_est_enqueued.stddev 777673 ± 2% +14.0% 886312 ± 7% sched_debug.cpu.clock.avg 777676 ± 2% +14.0% 886315 ± 7% sched_debug.cpu.clock.max 777671 ± 2% +14.0% 886304 ± 7% sched_debug.cpu.clock.min 1.65 ± 4% +24.9% 2.07 ± 14% sched_debug.cpu.clock.stddev 757329 ± 2% +14.1% 863807 ± 7% sched_debug.cpu.clock_task.avg 762273 ± 2% +15.1% 877089 ± 7% sched_debug.cpu.clock_task.max 722572 -20.3% 576199 ± 8% sched_debug.cpu.clock_task.min 3772 ± 65% +713.7% 30697 ± 8% sched_debug.cpu.clock_task.stddev 0.00 ± 9% +53.5% 0.00 ± 14% sched_debug.cpu.next_balance.stddev 0.03 ± 4% +36.4% 0.03 ± 4% sched_debug.cpu.nr_running.avg 1.01 +14.7% 1.15 ± 5% sched_debug.cpu.nr_running.max 0.15 ± 2% +24.8% 0.18 ± 2% sched_debug.cpu.nr_running.stddev 39929 ± 2% +53.6% 61328 ± 4% sched_debug.cpu.nr_switches.avg 390731 ± 24% +173.0% 1066803 ± 18% sched_debug.cpu.nr_switches.max 8518 ± 29% -48.8% 4365 ± 11% sched_debug.cpu.nr_switches.min 57274 ± 9% +159.0% 148353 ± 12% sched_debug.cpu.nr_switches.stddev 777671 ± 2% +14.0% 886310 ± 7% sched_debug.cpu_clk 776462 ± 2% +14.0% 885098 ± 7% sched_debug.ktime 757929 +12.6% 853196 sched_debug.sched_clk *************************************************************************************************** lkp-icl-2sp1: 96 threads 2 sockets (Ice Lake) with 256G memory ========================================================================================= class/compiler/cpufreq_governor/disk/fs/kconfig/nr_threads/rootfs/tbox_group/test/testcase/testtime: vm/gcc-11/performance/1HDD/ext4/x86_64-rhel-8.3/10%/debian-11.1-x86_64-20220510.cgz/lkp-icl-2sp1/msync/stress-ng/60s commit: 44ef1604ae ("Merge patch series "smartpqi updates"") 2cd896b9da ("ata: remove reference to non-existing error_handler()") 44ef1604ae9492a7 2cd896b9da16e2db4e929af5f3f ---------------- --------------------------- %stddev %change %stddev \ | \ 94.06 -1.0% 93.08 iostat.cpu.idle 2.81 ± 7% +33.8% 3.76 ± 7% iostat.cpu.iowait 2.89 ± 7% +1.0 3.86 ± 7% mpstat.cpu.all.iowait% 0.12 ± 3% -0.0 0.08 ± 4% mpstat.cpu.all.soft% 0.07 +0.3 0.39 ± 3% mpstat.cpu.all.sys% 0.05 ± 2% +0.0 0.06 ± 2% mpstat.cpu.all.usr% 3715 ± 10% -46.8% 1974 ± 13% numa-meminfo.node0.Dirty 161008 ± 9% -30.6% 111771 ± 9% numa-meminfo.node0.Inactive(file) 46375 ± 4% -13.8% 39954 numa-meminfo.node0.Mapped 1608 ± 11% +90.5% 3064 ± 13% numa-meminfo.node1.Active(anon) 244109 ± 12% -22.0% 190330 ± 14% numa-numastat.node0.local_node 273079 ± 7% -15.5% 230681 ± 10% numa-numastat.node0.numa_hit 139061 ± 22% +36.9% 190369 ± 15% numa-numastat.node1.local_node 196986 ± 11% +20.3% 236912 ± 11% numa-numastat.node1.numa_hit 2523 ± 26% +460.8% 14150 ± 41% sched_debug.cfs_rq:/.load.avg 39439 ± 15% +2141.1% 883886 ± 41% sched_debug.cfs_rq:/.load.max 7434 ± 14% +1211.7% 97515 ± 43% sched_debug.cfs_rq:/.load.stddev 91.58 ± 12% +27.6% 116.85 ± 16% sched_debug.cfs_rq:/.util_est_enqueued.stddev 1864 ± 4% -22.0% 1454 ± 14% vmstat.io.bo 6136 -27.9% 4424 ± 2% vmstat.memory.buff 0.00 +1e+102% 1.00 vmstat.procs.r 3247 +37.9% 4478 vmstat.system.cs 4512 -43.8% 2534 ± 3% stress-ng.msync.ops 75.14 -43.9% 42.18 ± 3% stress-ng.msync.ops_per_sec 71009 -43.5% 40152 ± 2% stress-ng.time.file_system_outputs 7168 ± 5% -14.9% 6101 stress-ng.time.maximum_resident_set_size 12203 -27.8% 8813 stress-ng.time.minor_page_faults 18092 -43.0% 10308 ± 2% stress-ng.time.voluntary_context_switches 2794 +52.8% 4270 ± 3% meminfo.Active(anon) 5825 -32.6% 3929 ± 2% meminfo.Active(file) 6080 -27.9% 4386 ± 2% meminfo.Buffers 4296 ± 2% -36.2% 2741 ± 9% meminfo.Dirty 180125 -17.2% 149068 ± 2% meminfo.Inactive(file) 50116 -11.9% 44152 meminfo.Mapped 9424 +18.6% 11175 meminfo.Shmem 46.17 +76.2% 81.33 ± 2% turbostat.Avg_MHz 1092 +83.0% 1998 ± 2% turbostat.Bzy_MHz 246352 ± 4% +21.9% 300341 ± 4% turbostat.C1E 3.16 ± 6% +1.0 4.18 ± 6% turbostat.C1E% 9.63 ± 2% +22.5% 11.80 ± 3% turbostat.CPU%c1 0.11 ± 3% -36.9% 0.07 ± 5% turbostat.IPC 16591 ± 6% +195.9% 49089 ± 2% turbostat.POLL 23.13 ± 33% -39.3% 14.04 ± 55% turbostat.Pkg%pc2 203.71 +4.8% 213.46 turbostat.PkgWatt 165.79 +1.7% 168.56 turbostat.RAMWatt 8064 ± 7% -50.7% 3975 ± 9% numa-vmstat.node0.nr_dirtied 928.33 ± 10% -46.8% 493.50 ± 13% numa-vmstat.node0.nr_dirty 40252 ± 9% -30.6% 27946 ± 9% numa-vmstat.node0.nr_inactive_file 11594 ± 4% -13.9% 9983 numa-vmstat.node0.nr_mapped 7011 ± 8% -50.8% 3447 ± 11% numa-vmstat.node0.nr_written 40252 ± 9% -30.6% 27946 ± 9% numa-vmstat.node0.nr_zone_inactive_file 929.17 ± 11% -46.8% 494.17 ± 13% numa-vmstat.node0.nr_zone_write_pending 273013 ± 7% -15.5% 230818 ± 10% numa-vmstat.node0.numa_hit 244043 ± 12% -22.0% 190466 ± 14% numa-vmstat.node0.numa_local 401.67 ± 11% +90.6% 765.50 ± 13% numa-vmstat.node1.nr_active_anon 401.67 ± 11% +90.6% 765.50 ± 13% numa-vmstat.node1.nr_zone_active_anon 197142 ± 11% +20.2% 237018 ± 11% numa-vmstat.node1.numa_hit 139217 ± 22% +36.8% 190475 ± 15% numa-vmstat.node1.numa_local 698.50 +52.8% 1067 ± 3% proc-vmstat.nr_active_anon 1455 -32.2% 986.83 ± 3% proc-vmstat.nr_active_file 9010 -43.0% 5139 ± 2% proc-vmstat.nr_dirtied 1072 ± 2% -36.2% 684.17 ± 8% proc-vmstat.nr_dirty 45031 -17.3% 37234 ± 2% proc-vmstat.nr_inactive_file 12527 -11.9% 11032 proc-vmstat.nr_mapped 2355 +18.6% 2793 proc-vmstat.nr_shmem 55024 +1.6% 55898 proc-vmstat.nr_slab_unreclaimable 7843 -43.0% 4472 ± 4% proc-vmstat.nr_written 698.50 +52.8% 1067 ± 3% proc-vmstat.nr_zone_active_anon 1455 -32.2% 986.83 ± 3% proc-vmstat.nr_zone_active_file 45031 -17.3% 37234 ± 2% proc-vmstat.nr_zone_inactive_file 1073 ± 3% -36.1% 686.00 ± 9% proc-vmstat.nr_zone_write_pending 9388 -49.9% 4703 ± 38% proc-vmstat.pgactivate 525544 -1.2% 519345 proc-vmstat.pgalloc_normal 380325 -7.3% 352450 ± 6% proc-vmstat.pgfree 2431 ± 2% -14.9% 2068 proc-vmstat.pgmajfault 121421 ± 4% -22.4% 94230 ± 14% proc-vmstat.pgpgout 4531 -14.0% 3897 ± 2% proc-vmstat.unevictable_pgs_culled 4515 -43.9% 2534 ± 3% proc-vmstat.unevictable_pgs_mlocked 4515 -43.9% 2532 ± 3% proc-vmstat.unevictable_pgs_munlocked 4512 -43.9% 2531 ± 3% proc-vmstat.unevictable_pgs_rescued 496000 +617.7% 3559808 ± 2% proc-vmstat.unevictable_pgs_scanned 145.93 -18.1% 119.54 perf-stat.i.MPKI 1.436e+08 +19.7% 1.719e+08 perf-stat.i.branch-instructions 11.29 ± 3% -2.5 8.75 ± 3% perf-stat.i.branch-miss-rate% 83101309 +4.0% 86426456 perf-stat.i.cache-references 2900 +39.1% 4033 perf-stat.i.context-switches 4.90 +78.5% 8.74 ± 2% perf-stat.i.cpi 2.867e+09 +122.1% 6.369e+09 ± 3% perf-stat.i.cpu-cycles 6390 ± 15% +98.7% 12695 ± 2% perf-stat.i.cycles-between-cache-misses 1.54 ± 3% -0.3 1.28 ± 2% perf-stat.i.dTLB-load-miss-rate% 1.973e+08 +16.6% 2.3e+08 perf-stat.i.dTLB-loads 228315 ± 5% +15.7% 264240 ± 4% perf-stat.i.dTLB-store-misses 1.003e+08 +14.7% 1.15e+08 perf-stat.i.dTLB-stores 7.292e+08 +21.4% 8.852e+08 perf-stat.i.instructions 0.23 -39.0% 0.14 ± 3% perf-stat.i.ipc 42.39 ± 2% -17.6% 34.92 perf-stat.i.major-faults 0.03 +121.8% 0.07 ± 3% perf-stat.i.metric.GHz 1572 +5.9% 1665 perf-stat.i.metric.K/sec 3.88 +18.4% 4.60 perf-stat.i.metric.M/sec 89180 ± 9% +26.2% 112567 ± 3% perf-stat.i.node-load-misses 18037 ± 9% +32.0% 23814 ± 11% perf-stat.i.node-loads 114.15 -14.2% 97.89 perf-stat.overall.MPKI 9.13 ± 2% -1.7 7.41 ± 3% perf-stat.overall.branch-miss-rate% 3.94 +83.3% 7.22 ± 3% perf-stat.overall.cpi 4626 ± 9% +112.5% 9828 ± 4% perf-stat.overall.cycles-between-cache-misses 1.23 ± 4% -0.2 1.05 ± 2% perf-stat.overall.dTLB-load-miss-rate% 0.25 -45.4% 0.14 ± 3% perf-stat.overall.ipc 1.41e+08 +19.4% 1.684e+08 perf-stat.ps.branch-instructions 81757672 +3.9% 84918526 perf-stat.ps.cache-references 2853 +38.7% 3957 perf-stat.ps.context-switches 2.82e+09 +122.0% 6.263e+09 ± 3% perf-stat.ps.cpu-cycles 1.939e+08 +16.3% 2.255e+08 perf-stat.ps.dTLB-loads 224620 ± 5% +15.6% 259587 ± 4% perf-stat.ps.dTLB-store-misses 98552081 +14.6% 1.129e+08 perf-stat.ps.dTLB-stores 7.163e+08 +21.1% 8.675e+08 perf-stat.ps.instructions 41.68 ± 2% -17.8% 34.28 perf-stat.ps.major-faults 87767 ± 9% +26.0% 110579 ± 3% perf-stat.ps.node-load-misses 17744 ± 9% +31.8% 23394 ± 11% perf-stat.ps.node-loads 4.498e+10 +21.4% 5.46e+10 perf-stat.total.instructions 96.36 -36.2 60.14 ± 5% perf-profile.calltrace.cycles-pp.secondary_startup_64_no_verify 94.78 -35.4 59.37 ± 5% perf-profile.calltrace.cycles-pp.start_secondary.secondary_startup_64_no_verify 94.78 -35.4 59.37 ± 5% perf-profile.calltrace.cycles-pp.cpu_startup_entry.start_secondary.secondary_startup_64_no_verify 94.65 -35.4 59.30 ± 5% perf-profile.calltrace.cycles-pp.do_idle.cpu_startup_entry.start_secondary.secondary_startup_64_no_verify 92.92 -34.6 58.30 ± 5% perf-profile.calltrace.cycles-pp.cpuidle_idle_call.do_idle.cpu_startup_entry.start_secondary.secondary_startup_64_no_verify 83.27 -30.2 53.06 ± 6% perf-profile.calltrace.cycles-pp.cpuidle_enter.cpuidle_idle_call.do_idle.cpu_startup_entry.start_secondary 82.50 -30.0 52.45 ± 5% perf-profile.calltrace.cycles-pp.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle.cpu_startup_entry 39.54 ± 2% -17.2 22.36 ± 8% perf-profile.calltrace.cycles-pp.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle 33.54 ± 3% -14.4 19.18 ± 7% perf-profile.calltrace.cycles-pp.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call 38.76 ± 2% -14.0 24.71 ± 8% perf-profile.calltrace.cycles-pp.intel_idle.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle 23.58 ± 2% -10.0 13.59 ± 8% perf-profile.calltrace.cycles-pp.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state.cpuidle_enter 22.39 ± 2% -9.4 12.96 ± 8% perf-profile.calltrace.cycles-pp.hrtimer_interrupt.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state 18.66 ± 3% -7.7 10.95 ± 8% perf-profile.calltrace.cycles-pp.__hrtimer_run_queues.hrtimer_interrupt.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt 11.66 ± 4% -4.6 7.06 ± 8% perf-profile.calltrace.cycles-pp.tick_sched_timer.__hrtimer_run_queues.hrtimer_interrupt.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt 10.48 ± 3% -4.1 6.42 ± 8% perf-profile.calltrace.cycles-pp.tick_sched_handle.tick_sched_timer.__hrtimer_run_queues.hrtimer_interrupt.__sysvec_apic_timer_interrupt 7.51 ± 2% -3.5 3.96 ± 5% perf-profile.calltrace.cycles-pp.menu_select.cpuidle_idle_call.do_idle.cpu_startup_entry.start_secondary 9.21 ± 4% -3.5 5.70 ± 8% perf-profile.calltrace.cycles-pp.update_process_times.tick_sched_handle.tick_sched_timer.__hrtimer_run_queues.hrtimer_interrupt 5.00 ± 5% -2.3 2.71 ± 5% perf-profile.calltrace.cycles-pp.__irq_exit_rcu.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state.cpuidle_enter 4.88 ± 2% -2.0 2.83 ± 9% perf-profile.calltrace.cycles-pp.scheduler_tick.update_process_times.tick_sched_handle.tick_sched_timer.__hrtimer_run_queues 4.16 ± 6% -1.9 2.24 ± 5% perf-profile.calltrace.cycles-pp.__do_softirq.__irq_exit_rcu.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state 3.33 ± 2% -1.6 1.76 ± 3% perf-profile.calltrace.cycles-pp.tick_nohz_get_sleep_length.menu_select.cpuidle_idle_call.do_idle.cpu_startup_entry 2.95 ± 6% -1.2 1.73 ± 8% perf-profile.calltrace.cycles-pp.perf_mux_hrtimer_handler.__hrtimer_run_queues.hrtimer_interrupt.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt 2.55 ± 15% -1.1 1.47 ± 16% perf-profile.calltrace.cycles-pp.irq_enter_rcu.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state.cpuidle_enter 2.44 ± 16% -1.0 1.42 ± 17% perf-profile.calltrace.cycles-pp.tick_irq_enter.irq_enter_rcu.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state 2.24 ± 6% -1.0 1.22 ± 11% perf-profile.calltrace.cycles-pp.rebalance_domains.__do_softirq.__irq_exit_rcu.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt 2.28 ± 7% -1.0 1.32 ± 8% perf-profile.calltrace.cycles-pp.perf_rotate_context.perf_mux_hrtimer_handler.__hrtimer_run_queues.hrtimer_interrupt.__sysvec_apic_timer_interrupt 1.95 ± 3% -0.9 1.09 ± 4% perf-profile.calltrace.cycles-pp.tick_nohz_next_event.tick_nohz_get_sleep_length.menu_select.cpuidle_idle_call.do_idle 1.53 ± 4% -0.8 0.77 ± 8% perf-profile.calltrace.cycles-pp.enqueue_hrtimer.__hrtimer_run_queues.hrtimer_interrupt.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt 1.57 ± 8% -0.7 0.83 ± 10% perf-profile.calltrace.cycles-pp.load_balance.rebalance_domains.__do_softirq.__irq_exit_rcu.sysvec_apic_timer_interrupt 1.08 ± 35% -0.7 0.37 ±100% perf-profile.calltrace.cycles-pp.ktime_get.tick_irq_enter.irq_enter_rcu.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt 0.98 ± 9% -0.7 0.28 ±100% perf-profile.calltrace.cycles-pp.update_sd_lb_stats.find_busiest_group.load_balance.rebalance_domains.__do_softirq 1.33 ± 4% -0.7 0.66 ± 10% perf-profile.calltrace.cycles-pp.timerqueue_add.enqueue_hrtimer.__hrtimer_run_queues.hrtimer_interrupt.__sysvec_apic_timer_interrupt 1.02 ± 8% -0.6 0.38 ± 71% perf-profile.calltrace.cycles-pp.update_blocked_averages.run_rebalance_domains.__do_softirq.__irq_exit_rcu.sysvec_apic_timer_interrupt 1.32 ± 3% -0.6 0.69 ± 6% perf-profile.calltrace.cycles-pp.clockevents_program_event.hrtimer_interrupt.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt 1.10 ± 9% -0.6 0.49 ± 47% perf-profile.calltrace.cycles-pp.find_busiest_group.load_balance.rebalance_domains.__do_softirq.__irq_exit_rcu 1.28 ± 6% -0.6 0.72 ± 12% perf-profile.calltrace.cycles-pp.arch_scale_freq_tick.scheduler_tick.update_process_times.tick_sched_handle.tick_sched_timer 0.79 ± 6% -0.5 0.26 ±100% perf-profile.calltrace.cycles-pp.local_clock.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle 1.12 ± 8% -0.5 0.60 ± 6% perf-profile.calltrace.cycles-pp.run_rebalance_domains.__do_softirq.__irq_exit_rcu.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt 1.14 ± 6% -0.5 0.64 ± 6% perf-profile.calltrace.cycles-pp.timerqueue_del.__hrtimer_run_queues.hrtimer_interrupt.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt 1.08 ± 7% -0.5 0.61 ± 11% perf-profile.calltrace.cycles-pp.run_posix_cpu_timers.tick_sched_handle.tick_sched_timer.__hrtimer_run_queues.hrtimer_interrupt 0.74 ± 8% -0.5 0.27 ±100% perf-profile.calltrace.cycles-pp.tick_nohz_stop_idle.tick_irq_enter.irq_enter_rcu.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt 1.00 ± 13% -0.4 0.56 ± 6% perf-profile.calltrace.cycles-pp.ct_idle_exit.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle 1.07 ± 7% -0.4 0.66 ± 12% perf-profile.calltrace.cycles-pp.cpuidle_governor_latency_req.menu_select.cpuidle_idle_call.do_idle.cpu_startup_entry 1.64 ± 8% -0.4 1.26 ± 10% perf-profile.calltrace.cycles-pp.rcu_sched_clock_irq.update_process_times.tick_sched_handle.tick_sched_timer.__hrtimer_run_queues 0.98 ± 5% -0.4 0.61 ± 13% perf-profile.calltrace.cycles-pp.update_rq_clock_task.scheduler_tick.update_process_times.tick_sched_handle.tick_sched_timer 1.38 ± 8% -0.3 1.06 ± 11% perf-profile.calltrace.cycles-pp.rcu_pending.rcu_sched_clock_irq.update_process_times.tick_sched_handle.tick_sched_timer 0.00 +1.0 0.96 ± 19% perf-profile.calltrace.cycles-pp.delay_tsc.wait_for_lsr.wait_for_xmitr.serial8250_console_write.console_flush_all 0.00 +2.3 2.33 ± 11% perf-profile.calltrace.cycles-pp.io_serial_in.wait_for_lsr.wait_for_xmitr.serial8250_console_write.console_flush_all 0.00 +2.7 2.73 ± 30% perf-profile.calltrace.cycles-pp.handle_edge_irq.__common_interrupt.common_interrupt.asm_common_interrupt.cpuidle_enter_state 0.00 +2.7 2.74 ± 30% perf-profile.calltrace.cycles-pp.__common_interrupt.common_interrupt.asm_common_interrupt.cpuidle_enter_state.cpuidle_enter 0.00 +2.8 2.75 ± 30% perf-profile.calltrace.cycles-pp.asm_common_interrupt.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle 0.00 +2.8 2.75 ± 30% perf-profile.calltrace.cycles-pp.common_interrupt.asm_common_interrupt.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call 0.00 +3.8 3.82 ± 15% perf-profile.calltrace.cycles-pp.wait_for_lsr.wait_for_xmitr.serial8250_console_write.console_flush_all.console_unlock 0.00 +3.8 3.82 ± 15% perf-profile.calltrace.cycles-pp.wait_for_xmitr.serial8250_console_write.console_flush_all.console_unlock.vprintk_emit 0.00 +5.6 5.62 ± 8% perf-profile.calltrace.cycles-pp.delay_tsc.wait_for_lsr.serial8250_console_write.console_flush_all.console_unlock 0.00 +6.4 6.45 ± 28% perf-profile.calltrace.cycles-pp.asm_common_interrupt.__do_softirq.__irq_exit_rcu.common_interrupt.asm_common_interrupt 0.00 +6.4 6.45 ± 28% perf-profile.calltrace.cycles-pp.common_interrupt.asm_common_interrupt.__do_softirq.__irq_exit_rcu.common_interrupt 0.00 +6.5 6.46 ± 28% perf-profile.calltrace.cycles-pp.__irq_exit_rcu.common_interrupt.asm_common_interrupt.memcpy_toio.drm_fb_memcpy 0.00 +6.5 6.46 ± 28% perf-profile.calltrace.cycles-pp.__do_softirq.__irq_exit_rcu.common_interrupt.asm_common_interrupt.memcpy_toio 0.00 +7.2 7.20 ± 19% perf-profile.calltrace.cycles-pp.__common_interrupt.common_interrupt.asm_common_interrupt.__do_softirq.__irq_exit_rcu 0.00 +7.2 7.20 ± 19% perf-profile.calltrace.cycles-pp.handle_edge_irq.__common_interrupt.common_interrupt.asm_common_interrupt.__do_softirq 0.63 ± 49% +10.5 11.15 ± 9% perf-profile.calltrace.cycles-pp.io_serial_in.wait_for_lsr.serial8250_console_write.console_flush_all.console_unlock 0.00 +12.5 12.51 ± 19% perf-profile.calltrace.cycles-pp.__common_interrupt.common_interrupt.asm_common_interrupt.memcpy_toio.drm_fb_memcpy 0.00 +12.5 12.51 ± 19% perf-profile.calltrace.cycles-pp.handle_edge_irq.__common_interrupt.common_interrupt.asm_common_interrupt.memcpy_toio 0.00 +12.5 12.53 ± 19% perf-profile.calltrace.cycles-pp.asm_common_interrupt.memcpy_toio.drm_fb_memcpy.ast_primary_plane_helper_atomic_update.drm_atomic_helper_commit_planes 0.00 +12.5 12.53 ± 19% perf-profile.calltrace.cycles-pp.common_interrupt.asm_common_interrupt.memcpy_toio.drm_fb_memcpy.ast_primary_plane_helper_atomic_update 0.88 ± 24% +16.4 17.27 ± 8% perf-profile.calltrace.cycles-pp.wait_for_lsr.serial8250_console_write.console_flush_all.console_unlock.vprintk_emit 1.06 ± 21% +21.2 22.22 ± 8% perf-profile.calltrace.cycles-pp.serial8250_console_write.console_flush_all.console_unlock.vprintk_emit._printk 0.00 +22.3 22.32 ± 8% perf-profile.calltrace.cycles-pp.console_unlock.vprintk_emit._printk.ata_dump_status.ata_scsi_qc_complete 0.00 +22.3 22.32 ± 8% perf-profile.calltrace.cycles-pp.console_flush_all.console_unlock.vprintk_emit._printk.ata_dump_status 0.00 +22.4 22.41 ± 8% perf-profile.calltrace.cycles-pp.vprintk_emit._printk.ata_dump_status.ata_scsi_qc_complete.ata_qc_complete_multiple 0.00 +22.4 22.41 ± 8% perf-profile.calltrace.cycles-pp._printk.ata_dump_status.ata_scsi_qc_complete.ata_qc_complete_multiple.ahci_qc_complete 0.00 +22.4 22.41 ± 8% perf-profile.calltrace.cycles-pp.ata_scsi_qc_complete.ata_qc_complete_multiple.ahci_qc_complete.ahci_handle_port_intr.ahci_single_level_irq_intr 0.00 +22.4 22.41 ± 8% perf-profile.calltrace.cycles-pp.ata_dump_status.ata_scsi_qc_complete.ata_qc_complete_multiple.ahci_qc_complete.ahci_handle_port_intr 0.00 +22.4 22.41 ± 8% perf-profile.calltrace.cycles-pp.ata_qc_complete_multiple.ahci_qc_complete.ahci_handle_port_intr.ahci_single_level_irq_intr.__handle_irq_event_percpu 0.00 +22.4 22.42 ± 8% perf-profile.calltrace.cycles-pp.ahci_qc_complete.ahci_handle_port_intr.ahci_single_level_irq_intr.__handle_irq_event_percpu.handle_irq_event 0.00 +22.4 22.42 ± 8% perf-profile.calltrace.cycles-pp.ahci_handle_port_intr.ahci_single_level_irq_intr.__handle_irq_event_percpu.handle_irq_event.handle_edge_irq 0.00 +22.4 22.44 ± 8% perf-profile.calltrace.cycles-pp.__handle_irq_event_percpu.handle_irq_event.handle_edge_irq.__common_interrupt.common_interrupt 0.00 +22.4 22.44 ± 8% perf-profile.calltrace.cycles-pp.ahci_single_level_irq_intr.__handle_irq_event_percpu.handle_irq_event.handle_edge_irq.__common_interrupt 0.00 +22.4 22.44 ± 8% perf-profile.calltrace.cycles-pp.handle_irq_event.handle_edge_irq.__common_interrupt.common_interrupt.asm_common_interrupt 0.66 ± 8% +33.6 34.26 ± 9% perf-profile.calltrace.cycles-pp.memcpy_toio.drm_fb_memcpy.ast_primary_plane_helper_atomic_update.drm_atomic_helper_commit_planes.drm_atomic_helper_commit_tail_rpm 0.66 ± 8% +33.8 34.43 ± 9% perf-profile.calltrace.cycles-pp.drm_fb_memcpy.ast_primary_plane_helper_atomic_update.drm_atomic_helper_commit_planes.drm_atomic_helper_commit_tail_rpm.ast_mode_config_helper_atomic_commit_tail 0.66 ± 8% +33.8 34.44 ± 9% perf-profile.calltrace.cycles-pp.ast_primary_plane_helper_atomic_update.drm_atomic_helper_commit_planes.drm_atomic_helper_commit_tail_rpm.ast_mode_config_helper_atomic_commit_tail.commit_tail 0.66 ± 8% +33.8 34.44 ± 9% perf-profile.calltrace.cycles-pp.drm_atomic_helper_commit_planes.drm_atomic_helper_commit_tail_rpm.ast_mode_config_helper_atomic_commit_tail.commit_tail.drm_atomic_helper_commit 0.66 ± 8% +33.8 34.46 ± 9% perf-profile.calltrace.cycles-pp.drm_atomic_helper_commit_tail_rpm.ast_mode_config_helper_atomic_commit_tail.commit_tail.drm_atomic_helper_commit.drm_atomic_commit 0.68 ± 7% +33.9 34.55 ± 8% perf-profile.calltrace.cycles-pp.commit_tail.drm_atomic_helper_commit.drm_atomic_commit.drm_atomic_helper_dirtyfb.drm_fbdev_generic_helper_fb_dirty 0.68 ± 7% +33.9 34.55 ± 8% perf-profile.calltrace.cycles-pp.ast_mode_config_helper_atomic_commit_tail.commit_tail.drm_atomic_helper_commit.drm_atomic_commit.drm_atomic_helper_dirtyfb 0.71 ± 7% +34.1 34.81 ± 8% perf-profile.calltrace.cycles-pp.drm_atomic_helper_commit.drm_atomic_commit.drm_atomic_helper_dirtyfb.drm_fbdev_generic_helper_fb_dirty.drm_fb_helper_damage_work 0.71 ± 7% +34.1 34.84 ± 9% perf-profile.calltrace.cycles-pp.drm_atomic_commit.drm_atomic_helper_dirtyfb.drm_fbdev_generic_helper_fb_dirty.drm_fb_helper_damage_work.process_one_work 0.71 ± 7% +34.1 34.85 ± 9% perf-profile.calltrace.cycles-pp.drm_atomic_helper_dirtyfb.drm_fbdev_generic_helper_fb_dirty.drm_fb_helper_damage_work.process_one_work.worker_thread 0.78 ± 7% +34.9 35.71 ± 9% perf-profile.calltrace.cycles-pp.drm_fb_helper_damage_work.process_one_work.worker_thread.kthread.ret_from_fork 0.78 ± 7% +34.9 35.71 ± 9% perf-profile.calltrace.cycles-pp.drm_fbdev_generic_helper_fb_dirty.drm_fb_helper_damage_work.process_one_work.worker_thread.kthread 1.14 ± 7% +36.5 37.66 ± 8% perf-profile.calltrace.cycles-pp.worker_thread.kthread.ret_from_fork 1.40 ± 7% +36.6 37.96 ± 8% perf-profile.calltrace.cycles-pp.ret_from_fork 1.40 ± 7% +36.6 37.96 ± 8% perf-profile.calltrace.cycles-pp.kthread.ret_from_fork 1.06 ± 7% +36.6 37.63 ± 8% perf-profile.calltrace.cycles-pp.process_one_work.worker_thread.kthread.ret_from_fork 96.36 -36.2 60.14 ± 5% perf-profile.children.cycles-pp.secondary_startup_64_no_verify 96.36 -36.2 60.14 ± 5% perf-profile.children.cycles-pp.cpu_startup_entry 96.36 -36.2 60.14 ± 5% perf-profile.children.cycles-pp.do_idle 94.67 -35.5 59.14 ± 5% perf-profile.children.cycles-pp.cpuidle_idle_call 94.78 -35.4 59.37 ± 5% perf-profile.children.cycles-pp.start_secondary 84.77 -31.0 53.75 ± 5% perf-profile.children.cycles-pp.cpuidle_enter 84.37 -30.8 53.53 ± 5% perf-profile.children.cycles-pp.cpuidle_enter_state 37.35 ± 2% -15.0 22.38 ± 6% perf-profile.children.cycles-pp.asm_sysvec_apic_timer_interrupt 39.01 ± 2% -13.9 25.12 ± 8% perf-profile.children.cycles-pp.intel_idle 33.97 ± 3% -13.6 20.42 ± 6% perf-profile.children.cycles-pp.sysvec_apic_timer_interrupt 23.83 ± 2% -10.0 13.82 ± 7% perf-profile.children.cycles-pp.__sysvec_apic_timer_interrupt 22.66 ± 2% -9.5 13.20 ± 7% perf-profile.children.cycles-pp.hrtimer_interrupt 18.94 ± 3% -7.8 11.18 ± 7% perf-profile.children.cycles-pp.__hrtimer_run_queues 11.83 ± 3% -4.6 7.22 ± 8% perf-profile.children.cycles-pp.tick_sched_timer 10.60 ± 3% -4.1 6.54 ± 7% perf-profile.children.cycles-pp.tick_sched_handle 7.65 ± 2% -3.6 4.05 ± 5% perf-profile.children.cycles-pp.menu_select 9.45 ± 4% -3.6 5.88 ± 8% perf-profile.children.cycles-pp.update_process_times 5.02 ± 2% -2.1 2.93 ± 8% perf-profile.children.cycles-pp.scheduler_tick 3.42 ± 2% -1.6 1.81 ± 3% perf-profile.children.cycles-pp.tick_nohz_get_sleep_length 3.02 ± 5% -1.2 1.77 ± 8% perf-profile.children.cycles-pp.perf_mux_hrtimer_handler 2.60 ± 15% -1.1 1.49 ± 16% perf-profile.children.cycles-pp.irq_enter_rcu 2.56 ± 15% -1.1 1.46 ± 16% perf-profile.children.cycles-pp.tick_irq_enter 2.30 ± 6% -1.1 1.24 ± 10% perf-profile.children.cycles-pp.rebalance_domains 2.28 ± 18% -1.0 1.28 ± 21% perf-profile.children.cycles-pp.ktime_get 2.31 ± 6% -1.0 1.34 ± 8% perf-profile.children.cycles-pp.perf_rotate_context 1.54 ± 8% -1.0 0.59 ± 22% perf-profile.children.cycles-pp.irq_work_run_list 1.42 ± 7% -0.9 0.50 ± 25% perf-profile.children.cycles-pp.asm_sysvec_irq_work 1.42 ± 7% -0.9 0.50 ± 25% perf-profile.children.cycles-pp.sysvec_irq_work 1.42 ± 7% -0.9 0.50 ± 25% perf-profile.children.cycles-pp.__sysvec_irq_work 1.42 ± 7% -0.9 0.50 ± 25% perf-profile.children.cycles-pp.irq_work_run 2.10 ± 2% -0.9 1.19 ± 4% perf-profile.children.cycles-pp.tick_nohz_next_event 1.42 ± 7% -0.9 0.51 ± 25% perf-profile.children.cycles-pp.irq_work_single 1.57 ± 3% -0.8 0.79 ± 7% perf-profile.children.cycles-pp.enqueue_hrtimer 1.72 ± 7% -0.8 0.97 ± 10% perf-profile.children.cycles-pp.load_balance 1.38 ± 4% -0.7 0.68 ± 9% perf-profile.children.cycles-pp.timerqueue_add 1.39 ± 3% -0.7 0.72 ± 6% perf-profile.children.cycles-pp.clockevents_program_event 1.25 ± 4% -0.7 0.58 ± 10% perf-profile.children.cycles-pp.__hrtimer_next_event_base 1.29 ± 4% -0.6 0.64 ± 9% perf-profile.children.cycles-pp.irqtime_account_irq 1.26 ± 8% -0.6 0.66 ± 2% perf-profile.children.cycles-pp.native_sched_clock 1.10 ± 3% -0.6 0.51 ± 8% perf-profile.children.cycles-pp.hrtimer_next_event_without 1.19 ± 9% -0.6 0.61 ± 9% perf-profile.children.cycles-pp.native_irq_return_iret 1.29 ± 6% -0.6 0.73 ± 12% perf-profile.children.cycles-pp.arch_scale_freq_tick 1.17 ± 6% -0.6 0.61 ± 12% perf-profile.children.cycles-pp.read_tsc 1.22 ± 8% -0.5 0.69 ± 13% perf-profile.children.cycles-pp.find_busiest_group 1.14 ± 8% -0.5 0.61 ± 6% perf-profile.children.cycles-pp.run_rebalance_domains 1.20 ± 7% -0.5 0.68 ± 6% perf-profile.children.cycles-pp.timerqueue_del 1.01 ± 5% -0.5 0.49 ± 10% perf-profile.children.cycles-pp.get_next_timer_interrupt 0.94 ± 3% -0.5 0.45 ± 14% perf-profile.children.cycles-pp.native_apic_msr_eoi_write 1.00 ± 7% -0.5 0.51 ± 11% perf-profile.children.cycles-pp.sched_clock_cpu 1.05 ± 8% -0.5 0.56 ± 9% perf-profile.children.cycles-pp.update_blocked_averages 0.98 -0.5 0.51 ± 8% perf-profile.children.cycles-pp.lapic_next_deadline 1.11 ± 9% -0.5 0.64 ± 11% perf-profile.children.cycles-pp.update_sd_lb_stats 1.09 ± 6% -0.5 0.62 ± 11% perf-profile.children.cycles-pp.run_posix_cpu_timers 1.03 ± 13% -0.5 0.57 ± 6% perf-profile.children.cycles-pp.ct_idle_exit 1.14 ± 5% -0.4 0.70 ± 12% perf-profile.children.cycles-pp.update_rq_clock_task 1.10 ± 8% -0.4 0.68 ± 13% perf-profile.children.cycles-pp.cpuidle_governor_latency_req 1.68 ± 7% -0.4 1.28 ± 9% perf-profile.children.cycles-pp.rcu_sched_clock_irq 0.76 ± 6% -0.4 0.37 ± 10% perf-profile.children.cycles-pp.hrtimer_update_next_event 0.84 ± 14% -0.4 0.45 ± 3% perf-profile.children.cycles-pp.__intel_pmu_enable_all 0.86 ± 11% -0.4 0.48 ± 9% perf-profile.children.cycles-pp._raw_spin_lock 0.79 ± 10% -0.4 0.42 ± 17% perf-profile.children.cycles-pp.update_sg_lb_stats 0.87 ± 5% -0.3 0.53 ± 9% perf-profile.children.cycles-pp.update_irq_load_avg 1.42 ± 8% -0.3 1.08 ± 12% perf-profile.children.cycles-pp.rcu_pending 0.82 ± 6% -0.3 0.50 ± 11% perf-profile.children.cycles-pp.local_clock 0.68 ± 6% -0.3 0.37 ± 12% perf-profile.children.cycles-pp.rb_next 0.56 ± 9% -0.3 0.26 ± 12% perf-profile.children.cycles-pp.rb_insert_color 0.63 ± 6% -0.3 0.34 ± 16% perf-profile.children.cycles-pp.perf_event_task_tick 0.66 ± 14% -0.3 0.37 ± 11% perf-profile.children.cycles-pp.irq_work_tick 0.58 ± 10% -0.3 0.30 ± 14% perf-profile.children.cycles-pp.get_cpu_device 0.62 ± 14% -0.3 0.36 ± 10% perf-profile.children.cycles-pp.ct_kernel_enter 0.76 ± 8% -0.3 0.51 ± 11% perf-profile.children.cycles-pp.tick_nohz_stop_idle 0.55 ± 11% -0.2 0.32 ± 10% perf-profile.children.cycles-pp.arch_cpu_idle_enter 0.53 ± 10% -0.2 0.32 ± 11% perf-profile.children.cycles-pp.tsc_verify_tsc_adjust 0.42 ± 7% -0.2 0.21 ± 16% perf-profile.children.cycles-pp.ct_kernel_exit_state 0.38 ± 5% -0.2 0.17 ± 9% perf-profile.children.cycles-pp.asm_exc_page_fault 0.48 ± 8% -0.2 0.28 ± 6% perf-profile.children.cycles-pp.rb_erase 0.53 ± 20% -0.2 0.33 ± 16% perf-profile.children.cycles-pp.ktime_get_update_offsets_now 0.55 ± 7% -0.2 0.35 ± 7% perf-profile.children.cycles-pp.irqentry_enter 0.59 ± 12% -0.2 0.40 ± 11% perf-profile.children.cycles-pp.nr_iowait_cpu 0.34 ± 3% -0.2 0.14 ± 10% perf-profile.children.cycles-pp.exc_page_fault 0.34 ± 3% -0.2 0.14 ± 10% perf-profile.children.cycles-pp.do_user_addr_fault 0.40 ± 18% -0.2 0.21 ± 16% perf-profile.children.cycles-pp.ct_kernel_exit 0.36 ± 14% -0.2 0.18 ± 9% perf-profile.children.cycles-pp.tick_nohz_tick_stopped 0.35 ± 14% -0.2 0.17 ± 12% perf-profile.children.cycles-pp._raw_spin_unlock_irqrestore 0.30 ± 7% -0.2 0.13 ± 9% perf-profile.children.cycles-pp.handle_mm_fault 0.36 ± 16% -0.2 0.19 ± 9% perf-profile.children.cycles-pp.error_entry 0.30 ± 22% -0.2 0.13 ± 18% perf-profile.children.cycles-pp.hrtimer_get_next_event 0.34 ± 12% -0.2 0.18 ± 11% perf-profile.children.cycles-pp.rcu_nocb_flush_deferred_wakeup 0.29 ± 7% -0.2 0.13 ± 9% perf-profile.children.cycles-pp.__handle_mm_fault 0.31 ± 23% -0.2 0.16 ± 13% perf-profile.children.cycles-pp.sched_clock_idle_wakeup_event 0.35 ± 14% -0.2 0.20 ± 10% perf-profile.children.cycles-pp.__update_blocked_fair 0.36 ± 12% -0.2 0.21 ± 14% perf-profile.children.cycles-pp.x86_pmu_disable 0.29 ± 15% -0.1 0.14 ± 22% perf-profile.children.cycles-pp._raw_spin_lock_irq 0.30 ± 14% -0.1 0.15 ± 4% perf-profile.children.cycles-pp.irq_work_needs_cpu 0.31 ± 15% -0.1 0.17 ± 13% perf-profile.children.cycles-pp.leave_mm 0.30 ± 18% -0.1 0.16 ± 10% perf-profile.children.cycles-pp.menu_reflect 0.52 ± 9% -0.1 0.39 ± 13% perf-profile.children.cycles-pp.irqtime_account_process_tick 0.32 ± 18% -0.1 0.19 ± 7% perf-profile.children.cycles-pp.update_rq_clock 0.29 ± 18% -0.1 0.16 ± 20% perf-profile.children.cycles-pp.cpuidle_not_available 0.26 ± 12% -0.1 0.14 ± 24% perf-profile.children.cycles-pp.execve 0.36 ± 16% -0.1 0.24 ± 18% perf-profile.children.cycles-pp.calc_global_load_tick 0.26 ± 12% -0.1 0.14 ± 26% perf-profile.children.cycles-pp.__x64_sys_execve 0.26 ± 12% -0.1 0.14 ± 26% perf-profile.children.cycles-pp.do_execveat_common 0.38 ± 10% -0.1 0.25 ± 10% perf-profile.children.cycles-pp.tick_nohz_irq_exit 0.22 ± 7% -0.1 0.10 ± 8% perf-profile.children.cycles-pp.do_fault 0.29 ± 13% -0.1 0.17 ± 24% perf-profile.children.cycles-pp.task_tick_mm_cid 0.32 ± 13% -0.1 0.19 ± 13% perf-profile.children.cycles-pp.irqentry_exit 0.29 ± 14% -0.1 0.17 ± 10% perf-profile.children.cycles-pp._raw_spin_trylock 0.16 ± 23% -0.1 0.04 ± 72% perf-profile.children.cycles-pp.ext4_map_blocks 0.30 ± 13% -0.1 0.19 ± 5% perf-profile.children.cycles-pp.call_cpuidle 0.22 ± 25% -0.1 0.11 ± 22% perf-profile.children.cycles-pp.cpuidle_reflect 0.20 ± 15% -0.1 0.10 ± 29% perf-profile.children.cycles-pp.ct_nmi_exit 0.24 ± 11% -0.1 0.14 ± 19% perf-profile.children.cycles-pp.idle_cpu 0.13 ± 24% -0.1 0.04 ±110% perf-profile.children.cycles-pp.mpage_map_and_submit_extent 0.17 ± 18% -0.1 0.07 ± 53% perf-profile.children.cycles-pp.exec_binprm 0.17 ± 18% -0.1 0.07 ± 53% perf-profile.children.cycles-pp.search_binary_handler 0.19 ± 19% -0.1 0.10 ± 33% perf-profile.children.cycles-pp.bprm_execve 0.22 ± 20% -0.1 0.12 ± 16% perf-profile.children.cycles-pp.check_tsc_unstable 0.16 ± 18% -0.1 0.07 ± 52% perf-profile.children.cycles-pp.load_elf_binary 0.12 ± 24% -0.1 0.03 ±101% perf-profile.children.cycles-pp.tick_check_broadcast_expired 0.22 ± 5% -0.1 0.14 ± 4% perf-profile.children.cycles-pp.ct_nmi_enter 0.21 ± 19% -0.1 0.12 ± 23% perf-profile.children.cycles-pp.perf_adjust_freq_unthr_context 0.20 ± 12% -0.1 0.12 ± 22% perf-profile.children.cycles-pp.read_counters 0.19 ± 23% -0.1 0.12 ± 22% perf-profile.children.cycles-pp._find_next_and_bit 0.20 ± 12% -0.1 0.12 ± 18% perf-profile.children.cycles-pp.cmd_stat 0.20 ± 12% -0.1 0.12 ± 18% perf-profile.children.cycles-pp.dispatch_events 0.20 ± 12% -0.1 0.12 ± 18% perf-profile.children.cycles-pp.process_interval 0.16 ± 22% -0.1 0.09 ± 21% perf-profile.children.cycles-pp.update_rt_rq_load_avg 0.16 ± 17% -0.1 0.08 ± 11% perf-profile.children.cycles-pp.vm_mmap_pgoff 0.14 ± 24% -0.1 0.07 ± 57% perf-profile.children.cycles-pp.note_gp_changes 0.14 ± 15% -0.1 0.06 ± 49% perf-profile.children.cycles-pp.rcu_segcblist_ready_cbs 0.16 ± 16% -0.1 0.08 ± 13% perf-profile.children.cycles-pp.do_mmap 0.13 ± 23% -0.1 0.06 ± 8% perf-profile.children.cycles-pp.__update_load_avg_cfs_rq 0.14 ± 33% -0.1 0.07 ± 50% perf-profile.children.cycles-pp.hrtimer_forward 0.16 ± 16% -0.1 0.10 ± 12% perf-profile.children.cycles-pp.intel_pmu_disable_all 0.16 ± 9% -0.1 0.09 ± 19% perf-profile.children.cycles-pp.rcu_preempt_deferred_qs 0.12 ± 21% -0.1 0.05 ± 46% perf-profile.children.cycles-pp.do_read_fault 0.14 ± 18% -0.1 0.08 ± 18% perf-profile.children.cycles-pp.mmap_region 0.18 ± 11% -0.1 0.11 ± 6% perf-profile.children.cycles-pp.tick_program_event 0.11 ± 34% -0.1 0.05 ± 46% perf-profile.children.cycles-pp.do_filp_open 0.11 ± 34% -0.1 0.05 ± 46% perf-profile.children.cycles-pp.path_openat 0.11 ± 15% -0.1 0.05 ± 48% perf-profile.children.cycles-pp.hrtimer_run_queues 0.12 ± 18% -0.1 0.06 ± 48% perf-profile.children.cycles-pp.__x64_sys_openat 0.12 ± 18% -0.1 0.06 ± 48% perf-profile.children.cycles-pp.do_sys_openat2 0.15 ± 10% -0.1 0.09 ± 23% perf-profile.children.cycles-pp.ct_irq_enter 0.12 ± 14% -0.1 0.06 ± 13% perf-profile.children.cycles-pp.ksys_mmap_pgoff 0.12 ± 33% -0.1 0.06 ± 16% perf-profile.children.cycles-pp.__mmput 0.12 ± 34% -0.1 0.06 ± 16% perf-profile.children.cycles-pp.exit_mmap 0.10 ± 25% -0.1 0.05 ± 45% perf-profile.children.cycles-pp.filemap_map_pages 0.13 ± 20% -0.1 0.08 ± 22% perf-profile.children.cycles-pp.nohz_balancer_kick 0.11 ± 24% -0.1 0.06 ± 46% perf-profile.children.cycles-pp.flush_smp_call_function_queue 0.09 ± 23% -0.0 0.04 ± 72% perf-profile.children.cycles-pp.evlist_cpu_iterator__next 0.04 ± 72% +0.0 0.09 ± 17% perf-profile.children.cycles-pp.ksys_write 0.00 +0.1 0.09 ± 58% perf-profile.children.cycles-pp.drm_atomic_helper_cleanup_planes 0.00 +0.1 0.09 ± 58% perf-profile.children.cycles-pp.drm_gem_fb_vunmap 0.00 +0.1 0.10 ± 17% perf-profile.children.cycles-pp.sys_imageblit 0.00 +0.1 0.10 ± 17% perf-profile.children.cycles-pp.fast_imageblit 0.00 +0.1 0.10 ± 16% perf-profile.children.cycles-pp.drm_fb_helper_sys_imageblit 0.00 +0.1 0.12 ± 20% perf-profile.children.cycles-pp.bit_putcs 0.00 +0.1 0.12 ± 21% perf-profile.children.cycles-pp.check_move_unevictable_pages 0.00 +0.1 0.12 ± 17% perf-profile.children.cycles-pp.fbcon_putcs 0.01 ±223% +0.1 0.14 ± 14% perf-profile.children.cycles-pp.drm_gem_shmem_put_pages_locked 0.01 ±223% +0.1 0.14 ± 14% perf-profile.children.cycles-pp.drm_gem_put_pages 0.00 +0.1 0.14 ± 14% perf-profile.children.cycles-pp.drm_gem_check_release_pagevec 0.00 +0.1 0.14 ± 34% perf-profile.children.cycles-pp.cc_platform_has 0.00 +0.2 0.17 ± 16% perf-profile.children.cycles-pp.fbcon_redraw 0.00 +0.2 0.18 ± 14% perf-profile.children.cycles-pp.fbcon_scroll 0.00 +0.2 0.18 ± 15% perf-profile.children.cycles-pp.lf 0.00 +0.2 0.18 ± 15% perf-profile.children.cycles-pp.con_scroll 0.00 +0.2 0.20 ± 14% perf-profile.children.cycles-pp.vt_console_print 0.01 ±223% +0.2 0.22 ± 58% perf-profile.children.cycles-pp.shmem_get_folio_gfp 0.03 ±100% +0.2 0.26 ± 35% perf-profile.children.cycles-pp.drm_gem_vunmap_unlocked 0.03 ±100% +0.2 0.26 ± 35% perf-profile.children.cycles-pp.drm_gem_vunmap 0.03 ±100% +0.2 0.26 ± 35% perf-profile.children.cycles-pp.drm_gem_shmem_vunmap 0.02 ±142% +0.2 0.26 ± 36% perf-profile.children.cycles-pp.drm_atomic_helper_prepare_planes 0.02 ±142% +0.2 0.26 ± 36% perf-profile.children.cycles-pp.drm_gem_fb_vmap 0.03 ±100% +0.3 0.36 ± 49% perf-profile.children.cycles-pp.shmem_read_mapping_page_gfp 0.03 ±100% +0.3 0.37 ± 49% perf-profile.children.cycles-pp.drm_gem_shmem_get_pages 0.03 ±100% +0.3 0.37 ± 49% perf-profile.children.cycles-pp.drm_gem_shmem_get_pages_locked 0.03 ±100% +0.3 0.37 ± 49% perf-profile.children.cycles-pp.drm_gem_get_pages 0.04 ±101% +0.3 0.38 ± 47% perf-profile.children.cycles-pp.drm_gem_vmap_unlocked 0.04 ±101% +0.3 0.38 ± 47% perf-profile.children.cycles-pp.drm_gem_vmap 0.04 ±101% +0.3 0.38 ± 47% perf-profile.children.cycles-pp.drm_gem_shmem_object_vmap 0.04 ±101% +0.3 0.38 ± 47% perf-profile.children.cycles-pp.drm_gem_shmem_vmap_locked 0.02 ±141% +0.6 0.57 ± 21% perf-profile.children.cycles-pp.drm_fbdev_generic_damage_blit_real 0.02 ±142% +0.6 0.58 ± 21% perf-profile.children.cycles-pp.__memcpy 0.02 ±142% +0.6 0.61 ± 5% perf-profile.children.cycles-pp.io_serial_out 0.10 ± 10% +4.4 4.52 ± 7% perf-profile.children.cycles-pp.wait_for_xmitr 5.10 ± 4% +5.4 10.48 ± 13% perf-profile.children.cycles-pp.__irq_exit_rcu 4.29 ± 6% +5.7 10.01 ± 14% perf-profile.children.cycles-pp.__do_softirq 0.27 ± 44% +7.7 7.93 ± 9% perf-profile.children.cycles-pp.delay_tsc 1.08 ± 17% +13.9 15.01 ± 8% perf-profile.children.cycles-pp.io_serial_in 1.35 ± 8% +21.6 22.98 ± 8% perf-profile.children.cycles-pp.wait_for_lsr 1.38 ± 7% +22.2 23.61 ± 7% perf-profile.children.cycles-pp.serial8250_console_write 1.42 ± 7% +22.4 23.82 ± 7% perf-profile.children.cycles-pp.console_unlock 1.42 ± 7% +22.4 23.82 ± 7% perf-profile.children.cycles-pp.console_flush_all 1.42 ± 7% +22.6 23.97 ± 8% perf-profile.children.cycles-pp._printk 1.42 ± 7% +22.6 23.97 ± 8% perf-profile.children.cycles-pp.vprintk_emit 0.15 ± 33% +23.4 23.54 ± 8% perf-profile.children.cycles-pp.common_interrupt 0.15 ± 33% +23.4 23.54 ± 8% perf-profile.children.cycles-pp.asm_common_interrupt 0.10 ± 33% +23.4 23.49 ± 8% perf-profile.children.cycles-pp.handle_edge_irq 0.09 ± 32% +23.4 23.49 ± 8% perf-profile.children.cycles-pp.ahci_single_level_irq_intr 0.10 ± 30% +23.4 23.51 ± 8% perf-profile.children.cycles-pp.handle_irq_event 0.10 ± 32% +23.4 23.51 ± 8% perf-profile.children.cycles-pp.__common_interrupt 0.10 ± 30% +23.4 23.51 ± 8% perf-profile.children.cycles-pp.__handle_irq_event_percpu 0.05 ± 76% +23.4 23.48 ± 8% perf-profile.children.cycles-pp.ahci_handle_port_intr 0.00 +23.5 23.47 ± 8% perf-profile.children.cycles-pp.ata_scsi_qc_complete 0.00 +23.5 23.47 ± 8% perf-profile.children.cycles-pp.ata_dump_status 0.00 +23.5 23.47 ± 8% perf-profile.children.cycles-pp.ata_qc_complete_multiple 0.00 +23.5 23.47 ± 8% perf-profile.children.cycles-pp.ahci_qc_complete 0.66 ± 8% +33.8 34.42 ± 9% perf-profile.children.cycles-pp.memcpy_toio 0.66 ± 8% +33.8 34.44 ± 9% perf-profile.children.cycles-pp.drm_fb_memcpy 0.66 ± 8% +33.8 34.44 ± 9% perf-profile.children.cycles-pp.ast_primary_plane_helper_atomic_update 0.66 ± 8% +33.8 34.44 ± 9% perf-profile.children.cycles-pp.drm_atomic_helper_commit_planes 0.66 ± 8% +33.8 34.46 ± 9% perf-profile.children.cycles-pp.drm_atomic_helper_commit_tail_rpm 0.68 ± 7% +33.9 34.55 ± 8% perf-profile.children.cycles-pp.commit_tail 0.68 ± 7% +33.9 34.55 ± 8% perf-profile.children.cycles-pp.ast_mode_config_helper_atomic_commit_tail 0.71 ± 7% +34.1 34.81 ± 8% perf-profile.children.cycles-pp.drm_atomic_helper_commit 0.71 ± 7% +34.1 34.84 ± 9% perf-profile.children.cycles-pp.drm_atomic_commit 0.71 ± 7% +34.1 34.85 ± 9% perf-profile.children.cycles-pp.drm_atomic_helper_dirtyfb 0.78 ± 7% +34.9 35.71 ± 9% perf-profile.children.cycles-pp.drm_fb_helper_damage_work 0.78 ± 7% +34.9 35.71 ± 9% perf-profile.children.cycles-pp.drm_fbdev_generic_helper_fb_dirty 1.14 ± 7% +36.5 37.66 ± 8% perf-profile.children.cycles-pp.worker_thread 1.42 ± 6% +36.6 37.97 ± 8% perf-profile.children.cycles-pp.ret_from_fork 1.40 ± 7% +36.6 37.96 ± 8% perf-profile.children.cycles-pp.kthread 1.06 ± 7% +36.6 37.63 ± 8% perf-profile.children.cycles-pp.process_one_work 39.01 ± 2% -13.9 25.12 ± 8% perf-profile.self.cycles-pp.intel_idle 4.68 ± 4% -2.2 2.52 ± 9% perf-profile.self.cycles-pp.cpuidle_enter_state 2.88 ± 6% -1.5 1.42 ± 10% perf-profile.self.cycles-pp.menu_select 1.24 ± 8% -0.6 0.65 ± 2% perf-profile.self.cycles-pp.native_sched_clock 1.19 ± 9% -0.6 0.61 ± 9% perf-profile.self.cycles-pp.native_irq_return_iret 1.28 ± 6% -0.6 0.72 ± 11% perf-profile.self.cycles-pp.arch_scale_freq_tick 1.02 ± 5% -0.5 0.48 ± 12% perf-profile.self.cycles-pp.__hrtimer_next_event_base 1.13 ± 6% -0.5 0.59 ± 12% perf-profile.self.cycles-pp.read_tsc 0.94 ± 3% -0.5 0.44 ± 14% perf-profile.self.cycles-pp.native_apic_msr_eoi_write 0.93 ± 16% -0.5 0.43 ± 8% perf-profile.self.cycles-pp.update_process_times 0.98 ± 2% -0.5 0.50 ± 7% perf-profile.self.cycles-pp.lapic_next_deadline 1.09 ± 6% -0.5 0.62 ± 11% perf-profile.self.cycles-pp.run_posix_cpu_timers 0.84 ± 4% -0.4 0.42 ± 10% perf-profile.self.cycles-pp.timerqueue_add 0.92 ± 7% -0.4 0.53 ± 11% perf-profile.self.cycles-pp.__hrtimer_run_queues 0.84 ± 14% -0.4 0.45 ± 3% perf-profile.self.cycles-pp.__intel_pmu_enable_all 0.66 ± 7% -0.4 0.29 ± 11% perf-profile.self.cycles-pp.rcu_pending 0.65 ± 12% -0.4 0.30 ± 10% perf-profile.self.cycles-pp.scheduler_tick 0.86 ± 4% -0.3 0.52 ± 10% perf-profile.self.cycles-pp.update_irq_load_avg 0.89 ± 13% -0.3 0.55 ± 9% perf-profile.self.cycles-pp.cpuidle_idle_call 0.78 ± 12% -0.3 0.44 ± 9% perf-profile.self.cycles-pp._raw_spin_lock 0.66 ± 9% -0.3 0.34 ± 12% perf-profile.self.cycles-pp.irqtime_account_irq 0.85 ± 6% -0.3 0.54 ± 16% perf-profile.self.cycles-pp.perf_rotate_context 0.66 ± 6% -0.3 0.36 ± 12% perf-profile.self.cycles-pp.rb_next 0.59 ± 11% -0.3 0.30 ± 12% perf-profile.self.cycles-pp.update_sg_lb_stats 0.54 ± 11% -0.3 0.25 ± 13% perf-profile.self.cycles-pp.rb_insert_color 0.67 ± 5% -0.3 0.40 ± 14% perf-profile.self.cycles-pp.hrtimer_interrupt 0.57 ± 10% -0.3 0.30 ± 13% perf-profile.self.cycles-pp.get_cpu_device 0.56 ± 10% -0.3 0.29 ± 15% perf-profile.self.cycles-pp.get_next_timer_interrupt 0.58 ± 15% -0.3 0.33 ± 11% perf-profile.self.cycles-pp.irq_work_tick 0.55 ± 17% -0.2 0.34 ± 10% perf-profile.self.cycles-pp.tick_check_oneshot_broadcast_this_cpu 0.46 ± 9% -0.2 0.24 ± 14% perf-profile.self.cycles-pp.rebalance_domains 0.61 ± 12% -0.2 0.40 ± 8% perf-profile.self.cycles-pp.sysvec_apic_timer_interrupt 0.42 ± 6% -0.2 0.21 ± 20% perf-profile.self.cycles-pp.perf_event_task_tick 0.52 ± 3% -0.2 0.31 ± 16% perf-profile.self.cycles-pp._raw_spin_lock_irqsave 0.46 ± 8% -0.2 0.27 ± 5% perf-profile.self.cycles-pp.rb_erase 0.58 ± 12% -0.2 0.39 ± 12% perf-profile.self.cycles-pp.nr_iowait_cpu 0.52 ± 9% -0.2 0.33 ± 11% perf-profile.self.cycles-pp.tick_nohz_next_event 0.36 ± 7% -0.2 0.18 ± 13% perf-profile.self.cycles-pp.__irq_exit_rcu 0.34 ± 16% -0.2 0.16 ± 13% perf-profile.self.cycles-pp.tick_sched_timer 0.36 ± 6% -0.2 0.19 ± 7% perf-profile.self.cycles-pp.load_balance 0.38 ± 8% -0.2 0.22 ± 10% perf-profile.self.cycles-pp.cpuidle_enter 0.35 ± 18% -0.2 0.19 ± 9% perf-profile.self.cycles-pp.error_entry 0.34 ± 10% -0.2 0.18 ± 18% perf-profile.self.cycles-pp.ct_kernel_exit_state 0.40 ± 18% -0.2 0.24 ± 6% perf-profile.self.cycles-pp.ct_kernel_enter 0.35 ± 13% -0.2 0.20 ± 7% perf-profile.self.cycles-pp.asm_sysvec_apic_timer_interrupt 0.30 ± 20% -0.2 0.14 ± 15% perf-profile.self.cycles-pp._raw_spin_unlock_irqrestore 0.36 ± 12% -0.2 0.21 ± 14% perf-profile.self.cycles-pp.x86_pmu_disable 0.52 ± 9% -0.1 0.38 ± 12% perf-profile.self.cycles-pp.irqtime_account_process_tick 0.33 ± 11% -0.1 0.20 ± 10% perf-profile.self.cycles-pp.tsc_verify_tsc_adjust 0.33 ± 14% -0.1 0.20 ± 21% perf-profile.self.cycles-pp.update_rq_clock_task 0.28 ± 25% -0.1 0.15 ± 15% perf-profile.self.cycles-pp.sched_clock_idle_wakeup_event 0.30 ± 15% -0.1 0.17 ± 15% perf-profile.self.cycles-pp.rcu_nocb_flush_deferred_wakeup 0.25 ± 16% -0.1 0.12 ± 27% perf-profile.self.cycles-pp._raw_spin_lock_irq 0.28 ± 17% -0.1 0.16 ± 19% perf-profile.self.cycles-pp.cpuidle_not_available 0.25 ± 17% -0.1 0.13 ± 8% perf-profile.self.cycles-pp.hrtimer_update_next_event 0.24 ± 26% -0.1 0.12 ± 17% perf-profile.self.cycles-pp.ct_kernel_exit 0.28 ± 13% -0.1 0.17 ± 24% perf-profile.self.cycles-pp.task_tick_mm_cid 0.28 ± 16% -0.1 0.17 ± 12% perf-profile.self.cycles-pp.leave_mm 0.23 ± 21% -0.1 0.12 ± 19% perf-profile.self.cycles-pp.ct_idle_exit 0.28 ± 14% -0.1 0.17 ± 10% perf-profile.self.cycles-pp._raw_spin_trylock 0.21 ± 13% -0.1 0.10 ± 19% perf-profile.self.cycles-pp.hrtimer_next_event_without 0.23 ± 18% -0.1 0.12 ± 11% perf-profile.self.cycles-pp.irq_work_needs_cpu 0.25 ± 12% -0.1 0.14 ± 11% perf-profile.self.cycles-pp.sched_clock_cpu 0.20 ± 18% -0.1 0.10 ± 8% perf-profile.self.cycles-pp.tick_nohz_get_sleep_length 0.23 ± 24% -0.1 0.12 ± 14% perf-profile.self.cycles-pp.menu_reflect 0.33 ± 20% -0.1 0.22 ± 17% perf-profile.self.cycles-pp.calc_global_load_tick 0.34 ± 10% -0.1 0.23 ± 11% perf-profile.self.cycles-pp.do_idle 0.26 ± 6% -0.1 0.15 ± 15% perf-profile.self.cycles-pp.perf_mux_hrtimer_handler 0.33 ± 30% -0.1 0.23 ± 19% perf-profile.self.cycles-pp.ktime_get_update_offsets_now 0.22 ± 12% -0.1 0.12 ± 9% perf-profile.self.cycles-pp.timerqueue_del 0.25 ± 19% -0.1 0.15 ± 7% perf-profile.self.cycles-pp.update_sd_lb_stats 0.25 ± 9% -0.1 0.15 ± 10% perf-profile.self.cycles-pp.irqentry_enter 0.18 ± 18% -0.1 0.08 ± 49% perf-profile.self.cycles-pp.tick_irq_enter 0.22 ± 24% -0.1 0.13 ± 10% perf-profile.self.cycles-pp.tick_nohz_tick_stopped 0.27 ± 13% -0.1 0.17 ± 6% perf-profile.self.cycles-pp.call_cpuidle 0.20 ± 14% -0.1 0.10 ± 30% perf-profile.self.cycles-pp.ct_nmi_exit 0.22 ± 13% -0.1 0.13 ± 21% perf-profile.self.cycles-pp.idle_cpu 0.17 ± 14% -0.1 0.08 ± 18% perf-profile.self.cycles-pp.clockevents_program_event 0.23 ± 26% -0.1 0.15 ± 16% perf-profile.self.cycles-pp.__update_blocked_fair 0.21 ± 19% -0.1 0.12 ± 22% perf-profile.self.cycles-pp.perf_adjust_freq_unthr_context 0.23 ± 21% -0.1 0.15 ± 13% perf-profile.self.cycles-pp.tick_nohz_stop_idle 0.19 ± 22% -0.1 0.11 ± 22% perf-profile.self.cycles-pp._find_next_and_bit 0.17 ± 34% -0.1 0.09 ± 24% perf-profile.self.cycles-pp.cpuidle_reflect 0.13 ± 28% -0.1 0.06 ± 48% perf-profile.self.cycles-pp.update_blocked_averages 0.16 ± 20% -0.1 0.09 ± 21% perf-profile.self.cycles-pp.update_rt_rq_load_avg 0.18 ± 25% -0.1 0.11 ± 9% perf-profile.self.cycles-pp.enqueue_hrtimer 0.21 ± 4% -0.1 0.14 ± 4% perf-profile.self.cycles-pp.ct_nmi_enter 0.16 ± 15% -0.1 0.09 ± 15% perf-profile.self.cycles-pp.intel_pmu_disable_all 0.12 ± 25% -0.1 0.06 ± 9% perf-profile.self.cycles-pp.__update_load_avg_cfs_rq 0.16 ± 9% -0.1 0.09 ± 19% perf-profile.self.cycles-pp.rcu_preempt_deferred_qs 0.13 ± 12% -0.1 0.06 ± 49% perf-profile.self.cycles-pp.rcu_segcblist_ready_cbs 0.12 ± 29% -0.1 0.05 ± 51% perf-profile.self.cycles-pp.__do_softirq 0.11 ± 25% -0.1 0.05 ± 53% perf-profile.self.cycles-pp.find_busiest_group 0.17 ± 11% -0.1 0.11 ± 8% perf-profile.self.cycles-pp.tick_program_event 0.11 ± 13% -0.1 0.05 ± 48% perf-profile.self.cycles-pp.hrtimer_run_queues 0.08 ± 26% -0.1 0.03 ±102% perf-profile.self.cycles-pp.run_rebalance_domains 0.15 ± 20% -0.1 0.09 ± 17% perf-profile.self.cycles-pp.update_rq_clock 0.15 ± 14% -0.1 0.10 ± 18% perf-profile.self.cycles-pp.local_clock 0.13 ± 21% -0.1 0.08 ± 22% perf-profile.self.cycles-pp.nohz_balancer_kick 0.08 ± 20% -0.0 0.04 ± 73% perf-profile.self.cycles-pp.error_return 0.10 ± 15% -0.0 0.07 ± 10% perf-profile.self.cycles-pp.ct_idle_enter 0.00 +0.1 0.10 ± 17% perf-profile.self.cycles-pp.fast_imageblit 0.00 +0.1 0.13 ± 21% perf-profile.self.cycles-pp.cc_platform_has 0.00 +0.1 0.14 ± 45% perf-profile.self.cycles-pp.vprintk_emit 0.02 ±142% +0.3 0.33 ± 23% perf-profile.self.cycles-pp.__memcpy 0.02 ±142% +0.6 0.61 ± 5% perf-profile.self.cycles-pp.io_serial_out 0.27 ± 43% +7.7 7.93 ± 9% perf-profile.self.cycles-pp.delay_tsc 0.65 ± 8% +13.8 14.40 ± 22% perf-profile.self.cycles-pp.memcpy_toio 1.08 ± 17% +13.9 15.01 ± 8% perf-profile.self.cycles-pp.io_serial_in Disclaimer: Results have been estimated based on internal Intel analysis and are provided for informational purposes only. Any difference in system hardware or software design or configuration may affect actual performance.
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 8bf612bdd61a..920ebea69cd8 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -1556,13 +1556,11 @@ static unsigned ata_exec_internal_sg(struct ata_device *dev, } } - if (ap->ops->error_handler) - ata_eh_release(ap); + ata_eh_release(ap); rc = wait_for_completion_timeout(&wait, msecs_to_jiffies(timeout)); - if (ap->ops->error_handler) - ata_eh_acquire(ap); + ata_eh_acquire(ap); ata_sff_flush_pio_task(ap); @@ -1577,10 +1575,7 @@ static unsigned ata_exec_internal_sg(struct ata_device *dev, if (qc->flags & ATA_QCFLAG_ACTIVE) { qc->err_mask |= AC_ERR_TIMEOUT; - if (ap->ops->error_handler) - ata_port_freeze(ap); - else - ata_qc_complete(qc); + ata_port_freeze(ap); ata_dev_warn(dev, "qc timeout after %u msecs (cmd 0x%x)\n", timeout, command); @@ -4713,96 +4708,71 @@ static void ata_verify_xfer(struct ata_queued_cmd *qc) void ata_qc_complete(struct ata_queued_cmd *qc) { struct ata_port *ap = qc->ap; + struct ata_device *dev = qc->dev; + struct ata_eh_info *ehi = &dev->link->eh_info; /* Trigger the LED (if available) */ ledtrig_disk_activity(!!(qc->tf.flags & ATA_TFLAG_WRITE)); - /* XXX: New EH and old EH use different mechanisms to - * synchronize EH with regular execution path. - * - * In new EH, a qc owned by EH is marked with ATA_QCFLAG_EH. - * Normal execution path is responsible for not accessing a - * qc owned by EH. libata core enforces the rule by returning NULL - * from ata_qc_from_tag() for qcs owned by EH. - * - * Old EH depends on ata_qc_complete() nullifying completion - * requests if ATA_QCFLAG_EH_SCHEDULED is set. Old EH does - * not synchronize with interrupt handler. Only PIO task is - * taken care of. - */ - if (ap->ops->error_handler) { - struct ata_device *dev = qc->dev; - struct ata_eh_info *ehi = &dev->link->eh_info; - - if (unlikely(qc->err_mask)) - qc->flags |= ATA_QCFLAG_EH; - - /* - * Finish internal commands without any further processing - * and always with the result TF filled. - */ - if (unlikely(ata_tag_internal(qc->tag))) { - fill_result_tf(qc); - trace_ata_qc_complete_internal(qc); - __ata_qc_complete(qc); - return; - } + if (unlikely(qc->err_mask)) + qc->flags |= ATA_QCFLAG_EH; - /* - * Non-internal qc has failed. Fill the result TF and - * summon EH. - */ - if (unlikely(qc->flags & ATA_QCFLAG_EH)) { - fill_result_tf(qc); - trace_ata_qc_complete_failed(qc); - ata_qc_schedule_eh(qc); - return; - } + /* + * Finish internal commands without any further processing + * and always with the result TF filled. + */ + if (unlikely(ata_tag_internal(qc->tag))) { + fill_result_tf(qc); + trace_ata_qc_complete_internal(qc); + __ata_qc_complete(qc); + return; + } - WARN_ON_ONCE(ata_port_is_frozen(ap)); + /* + * Non-internal qc has failed. Fill the result TF and + * summon EH. + */ + if (unlikely(qc->flags & ATA_QCFLAG_EH)) { + fill_result_tf(qc); + trace_ata_qc_complete_failed(qc); + ata_qc_schedule_eh(qc); + return; + } - /* read result TF if requested */ - if (qc->flags & ATA_QCFLAG_RESULT_TF) - fill_result_tf(qc); + WARN_ON_ONCE(ata_port_is_frozen(ap)); - trace_ata_qc_complete_done(qc); - /* Some commands need post-processing after successful - * completion. - */ - switch (qc->tf.command) { - case ATA_CMD_SET_FEATURES: - if (qc->tf.feature != SETFEATURES_WC_ON && - qc->tf.feature != SETFEATURES_WC_OFF && - qc->tf.feature != SETFEATURES_RA_ON && - qc->tf.feature != SETFEATURES_RA_OFF) - break; - fallthrough; - case ATA_CMD_INIT_DEV_PARAMS: /* CHS translation changed */ - case ATA_CMD_SET_MULTI: /* multi_count changed */ - /* revalidate device */ - ehi->dev_action[dev->devno] |= ATA_EH_REVALIDATE; - ata_port_schedule_eh(ap); - break; + /* read result TF if requested */ + if (qc->flags & ATA_QCFLAG_RESULT_TF) + fill_result_tf(qc); - case ATA_CMD_SLEEP: - dev->flags |= ATA_DFLAG_SLEEPING; + trace_ata_qc_complete_done(qc); + /* Some commands need post-processing after successful + * completion. + */ + switch (qc->tf.command) { + case ATA_CMD_SET_FEATURES: + if (qc->tf.feature != SETFEATURES_WC_ON && + qc->tf.feature != SETFEATURES_WC_OFF && + qc->tf.feature != SETFEATURES_RA_ON && + qc->tf.feature != SETFEATURES_RA_OFF) break; - } - - if (unlikely(dev->flags & ATA_DFLAG_DUBIOUS_XFER)) - ata_verify_xfer(qc); + fallthrough; + case ATA_CMD_INIT_DEV_PARAMS: /* CHS translation changed */ + case ATA_CMD_SET_MULTI: /* multi_count changed */ + /* revalidate device */ + ehi->dev_action[dev->devno] |= ATA_EH_REVALIDATE; + ata_port_schedule_eh(ap); + break; - __ata_qc_complete(qc); - } else { - if (qc->flags & ATA_QCFLAG_EH_SCHEDULED) - return; + case ATA_CMD_SLEEP: + dev->flags |= ATA_DFLAG_SLEEPING; + break; + } - /* read result TF if failed or requested */ - if (qc->err_mask || qc->flags & ATA_QCFLAG_RESULT_TF) - fill_result_tf(qc); + if (unlikely(dev->flags & ATA_DFLAG_DUBIOUS_XFER)) + ata_verify_xfer(qc); - __ata_qc_complete(qc); - } + __ata_qc_complete(qc); } EXPORT_SYMBOL_GPL(ata_qc_complete); @@ -4852,7 +4822,7 @@ void ata_qc_issue(struct ata_queued_cmd *qc) * check is skipped for old EH because it reuses active qc to * request ATAPI sense. */ - WARN_ON_ONCE(ap->ops->error_handler && ata_tag_valid(link->active_tag)); + WARN_ON_ONCE(ata_tag_valid(link->active_tag)); if (ata_is_ncq(prot)) { WARN_ON_ONCE(link->sactive & (1 << qc->hw_tag)); @@ -5725,15 +5695,9 @@ void __ata_port_probe(struct ata_port *ap) int ata_port_probe(struct ata_port *ap) { - int rc = 0; - - if (ap->ops->error_handler) { - __ata_port_probe(ap); - ata_port_wait_eh(ap); - } else { - rc = ata_bus_probe(ap); - } - return rc; + __ata_port_probe(ap); + ata_port_wait_eh(ap); + return 0; } @@ -5938,9 +5902,6 @@ static void ata_port_detach(struct ata_port *ap) struct ata_link *link; struct ata_device *dev; - if (!ap->ops->error_handler) - goto skip_eh; - /* tell EH we're leaving & flush EH */ spin_lock_irqsave(ap->lock, flags); ap->pflags |= ATA_PFLAG_UNLOADING; @@ -5955,7 +5916,6 @@ static void ata_port_detach(struct ata_port *ap) cancel_delayed_work_sync(&ap->hotplug_task); - skip_eh: /* clean up zpodd on port removal */ ata_for_each_link(link, ap, HOST_FIRST) { ata_for_each_dev(dev, link, ALL) { diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index a6c901811802..b41a578a8c8b 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c @@ -571,9 +571,6 @@ void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap, /* make sure sff pio task is not running */ ata_sff_flush_pio_task(ap); - if (!ap->ops->error_handler) - return; - /* synchronize with host lock and sort out timeouts */ /* @@ -659,94 +656,89 @@ EXPORT_SYMBOL(ata_scsi_cmd_error_handler); void ata_scsi_port_error_handler(struct Scsi_Host *host, struct ata_port *ap) { unsigned long flags; + struct ata_link *link; /* invoke error handler */ - if (ap->ops->error_handler) { - struct ata_link *link; - /* acquire EH ownership */ - ata_eh_acquire(ap); + /* acquire EH ownership */ + ata_eh_acquire(ap); repeat: - /* kill fast drain timer */ - del_timer_sync(&ap->fastdrain_timer); + /* kill fast drain timer */ + del_timer_sync(&ap->fastdrain_timer); - /* process port resume request */ - ata_eh_handle_port_resume(ap); + /* process port resume request */ + ata_eh_handle_port_resume(ap); - /* fetch & clear EH info */ - spin_lock_irqsave(ap->lock, flags); + /* fetch & clear EH info */ + spin_lock_irqsave(ap->lock, flags); - ata_for_each_link(link, ap, HOST_FIRST) { - struct ata_eh_context *ehc = &link->eh_context; - struct ata_device *dev; + ata_for_each_link(link, ap, HOST_FIRST) { + struct ata_eh_context *ehc = &link->eh_context; + struct ata_device *dev; - memset(&link->eh_context, 0, sizeof(link->eh_context)); - link->eh_context.i = link->eh_info; - memset(&link->eh_info, 0, sizeof(link->eh_info)); + memset(&link->eh_context, 0, sizeof(link->eh_context)); + link->eh_context.i = link->eh_info; + memset(&link->eh_info, 0, sizeof(link->eh_info)); - ata_for_each_dev(dev, link, ENABLED) { - int devno = dev->devno; + ata_for_each_dev(dev, link, ENABLED) { + int devno = dev->devno; - ehc->saved_xfer_mode[devno] = dev->xfer_mode; - if (ata_ncq_enabled(dev)) - ehc->saved_ncq_enabled |= 1 << devno; - } + ehc->saved_xfer_mode[devno] = dev->xfer_mode; + if (ata_ncq_enabled(dev)) + ehc->saved_ncq_enabled |= 1 << devno; } + } - ap->pflags |= ATA_PFLAG_EH_IN_PROGRESS; - ap->pflags &= ~ATA_PFLAG_EH_PENDING; - ap->excl_link = NULL; /* don't maintain exclusion over EH */ + ap->pflags |= ATA_PFLAG_EH_IN_PROGRESS; + ap->pflags &= ~ATA_PFLAG_EH_PENDING; + ap->excl_link = NULL; /* don't maintain exclusion over EH */ - spin_unlock_irqrestore(ap->lock, flags); + spin_unlock_irqrestore(ap->lock, flags); - /* invoke EH, skip if unloading or suspended */ - if (!(ap->pflags & (ATA_PFLAG_UNLOADING | ATA_PFLAG_SUSPENDED))) - ap->ops->error_handler(ap); - else { - /* if unloading, commence suicide */ - if ((ap->pflags & ATA_PFLAG_UNLOADING) && - !(ap->pflags & ATA_PFLAG_UNLOADED)) - ata_eh_unload(ap); - ata_eh_finish(ap); - } + /* invoke EH, skip if unloading or suspended */ + if (!(ap->pflags & (ATA_PFLAG_UNLOADING | ATA_PFLAG_SUSPENDED))) + ap->ops->error_handler(ap); + else { + /* if unloading, commence suicide */ + if ((ap->pflags & ATA_PFLAG_UNLOADING) && + !(ap->pflags & ATA_PFLAG_UNLOADED)) + ata_eh_unload(ap); + ata_eh_finish(ap); + } - /* process port suspend request */ - ata_eh_handle_port_suspend(ap); + /* process port suspend request */ + ata_eh_handle_port_suspend(ap); - /* Exception might have happened after ->error_handler - * recovered the port but before this point. Repeat - * EH in such case. - */ - spin_lock_irqsave(ap->lock, flags); + /* Exception might have happened after ->error_handler + * recovered the port but before this point. Repeat + * EH in such case. + */ + spin_lock_irqsave(ap->lock, flags); - if (ap->pflags & ATA_PFLAG_EH_PENDING) { - if (--ap->eh_tries) { - spin_unlock_irqrestore(ap->lock, flags); - goto repeat; - } - ata_port_err(ap, - "EH pending after %d tries, giving up\n", - ATA_EH_MAX_TRIES); - ap->pflags &= ~ATA_PFLAG_EH_PENDING; + if (ap->pflags & ATA_PFLAG_EH_PENDING) { + if (--ap->eh_tries) { + spin_unlock_irqrestore(ap->lock, flags); + goto repeat; } + ata_port_err(ap, + "EH pending after %d tries, giving up\n", + ATA_EH_MAX_TRIES); + ap->pflags &= ~ATA_PFLAG_EH_PENDING; + } - /* this run is complete, make sure EH info is clear */ - ata_for_each_link(link, ap, HOST_FIRST) - memset(&link->eh_info, 0, sizeof(link->eh_info)); + /* this run is complete, make sure EH info is clear */ + ata_for_each_link(link, ap, HOST_FIRST) + memset(&link->eh_info, 0, sizeof(link->eh_info)); - /* end eh (clear host_eh_scheduled) while holding - * ap->lock such that if exception occurs after this - * point but before EH completion, SCSI midlayer will - * re-initiate EH. - */ - ap->ops->end_eh(ap); + /* end eh (clear host_eh_scheduled) while holding + * ap->lock such that if exception occurs after this + * point but before EH completion, SCSI midlayer will + * re-initiate EH. + */ + ap->ops->end_eh(ap); - spin_unlock_irqrestore(ap->lock, flags); - ata_eh_release(ap); - } else { - WARN_ON(ata_qc_from_tag(ap, ap->link.active_tag) == NULL); - ap->ops->eng_timeout(ap); - } + spin_unlock_irqrestore(ap->lock, flags); + ata_eh_release(ap); scsi_eh_flush_done_q(&ap->eh_done_q); @@ -912,8 +904,6 @@ void ata_qc_schedule_eh(struct ata_queued_cmd *qc) { struct ata_port *ap = qc->ap; - WARN_ON(!ap->ops->error_handler); - qc->flags |= ATA_QCFLAG_EH; ata_eh_set_pending(ap, 1); @@ -934,8 +924,6 @@ void ata_qc_schedule_eh(struct ata_queued_cmd *qc) */ void ata_std_sched_eh(struct ata_port *ap) { - WARN_ON(!ap->ops->error_handler); - if (ap->pflags & ATA_PFLAG_INITIALIZING) return; @@ -989,8 +977,6 @@ static int ata_do_link_abort(struct ata_port *ap, struct ata_link *link) struct ata_queued_cmd *qc; int tag, nr_aborted = 0; - WARN_ON(!ap->ops->error_handler); - /* we're gonna abort all commands, no need for fast drain */ ata_eh_set_pending(ap, 0); @@ -1065,8 +1051,6 @@ EXPORT_SYMBOL_GPL(ata_port_abort); */ static void __ata_port_freeze(struct ata_port *ap) { - WARN_ON(!ap->ops->error_handler); - if (ap->ops->freeze) ap->ops->freeze(ap); @@ -1091,8 +1075,6 @@ static void __ata_port_freeze(struct ata_port *ap) */ int ata_port_freeze(struct ata_port *ap) { - WARN_ON(!ap->ops->error_handler); - __ata_port_freeze(ap); return ata_port_abort(ap); @@ -1112,9 +1094,6 @@ void ata_eh_freeze_port(struct ata_port *ap) { unsigned long flags; - if (!ap->ops->error_handler) - return; - spin_lock_irqsave(ap->lock, flags); __ata_port_freeze(ap); spin_unlock_irqrestore(ap->lock, flags); @@ -1134,9 +1113,6 @@ void ata_eh_thaw_port(struct ata_port *ap) { unsigned long flags; - if (!ap->ops->error_handler) - return; - spin_lock_irqsave(ap->lock, flags); ap->pflags &= ~ATA_PFLAG_FROZEN; diff --git a/drivers/ata/libata-sata.c b/drivers/ata/libata-sata.c index f3e7396e3191..bd2a754b645c 100644 --- a/drivers/ata/libata-sata.c +++ b/drivers/ata/libata-sata.c @@ -1138,11 +1138,8 @@ EXPORT_SYMBOL_GPL(ata_sas_port_alloc); int ata_sas_port_start(struct ata_port *ap) { /* - * the port is marked as frozen at allocation time, but if we don't - * have new eh, we won't thaw it + * the port is marked as frozen at allocation time */ - if (!ap->ops->error_handler) - ap->pflags &= ~ATA_PFLAG_FROZEN; return 0; } EXPORT_SYMBOL_GPL(ata_sas_port_start); diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index 7bb12deab70c..cad8e826b262 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c @@ -906,7 +906,6 @@ static void ata_gen_passthru_sense(struct ata_queued_cmd *qc) struct ata_taskfile *tf = &qc->result_tf; unsigned char *sb = cmd->sense_buffer; unsigned char *desc = sb + 8; - int verbose = qc->ap->ops->error_handler == NULL; u8 sense_key, asc, ascq; memset(sb, 0, SCSI_SENSE_BUFFERSIZE); @@ -918,7 +917,7 @@ static void ata_gen_passthru_sense(struct ata_queued_cmd *qc) if (qc->err_mask || tf->status & (ATA_BUSY | ATA_DF | ATA_ERR | ATA_DRQ)) { ata_to_sense_error(qc->ap->print_id, tf->status, tf->error, - &sense_key, &asc, &ascq, verbose); + &sense_key, &asc, &ascq, false); ata_scsi_set_sense(qc->dev, cmd, sense_key, asc, ascq); } else { /* @@ -1001,7 +1000,6 @@ static void ata_gen_ata_sense(struct ata_queued_cmd *qc) struct scsi_cmnd *cmd = qc->scsicmd; struct ata_taskfile *tf = &qc->result_tf; unsigned char *sb = cmd->sense_buffer; - int verbose = qc->ap->ops->error_handler == NULL; u64 block; u8 sense_key, asc, ascq; @@ -1019,7 +1017,7 @@ static void ata_gen_ata_sense(struct ata_queued_cmd *qc) if (qc->err_mask || tf->status & (ATA_BUSY | ATA_DF | ATA_ERR | ATA_DRQ)) { ata_to_sense_error(qc->ap->print_id, tf->status, tf->error, - &sense_key, &asc, &ascq, verbose); + &sense_key, &asc, &ascq, false); ata_scsi_set_sense(dev, cmd, sense_key, asc, ascq); } else { /* Could not decode error */ @@ -1181,9 +1179,6 @@ void ata_scsi_slave_destroy(struct scsi_device *sdev) unsigned long flags; struct ata_device *dev; - if (!ap->ops->error_handler) - return; - spin_lock_irqsave(ap->lock, flags); dev = __ata_scsi_find_dev(ap, sdev); if (dev && dev->sdev) { @@ -1656,7 +1651,6 @@ static void ata_qc_done(struct ata_queued_cmd *qc) static void ata_scsi_qc_complete(struct ata_queued_cmd *qc) { - struct ata_port *ap = qc->ap; struct scsi_cmnd *cmd = qc->scsicmd; u8 *cdb = cmd->cmnd; int need_sense = (qc->err_mask != 0) && @@ -1680,9 +1674,8 @@ static void ata_scsi_qc_complete(struct ata_queued_cmd *qc) /* Keep the SCSI ML and status byte, clear host byte. */ cmd->result &= 0x0000ffff; - if (need_sense && !ap->ops->error_handler) - ata_dump_status(ap, &qc->result_tf); - + if (!(qc->flags & ATA_QCFLAG_QUIET)) + ata_dump_status(qc->ap, &qc->result_tf); ata_qc_done(qc); } @@ -2548,8 +2541,7 @@ static void atapi_qc_complete(struct ata_queued_cmd *qc) unsigned int err_mask = qc->err_mask; /* handle completion from new EH */ - if (unlikely(qc->ap->ops->error_handler && - (err_mask || qc->flags & ATA_QCFLAG_SENSE_VALID))) { + if (unlikely(err_mask || qc->flags & ATA_QCFLAG_SENSE_VALID)) { if (!(qc->flags & ATA_QCFLAG_SENSE_VALID)) { /* FIXME: not quite right; we don't want the @@ -4519,9 +4511,6 @@ int ata_scsi_user_scan(struct Scsi_Host *shost, unsigned int channel, unsigned long flags; int devno, rc = 0; - if (!ap->ops->error_handler) - return -EOPNOTSUPP; - if (lun != SCAN_WILD_CARD && lun) return -EINVAL; diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index 9d28badfe41d..aa286d48e847 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c @@ -883,31 +883,23 @@ static void ata_hsm_qc_complete(struct ata_queued_cmd *qc, int in_wq) { struct ata_port *ap = qc->ap; - if (ap->ops->error_handler) { - if (in_wq) { - /* EH might have kicked in while host lock is - * released. - */ - qc = ata_qc_from_tag(ap, qc->tag); - if (qc) { - if (likely(!(qc->err_mask & AC_ERR_HSM))) { - ata_sff_irq_on(ap); - ata_qc_complete(qc); - } else - ata_port_freeze(ap); - } - } else { - if (likely(!(qc->err_mask & AC_ERR_HSM))) + if (in_wq) { + /* EH might have kicked in while host lock is + * released. + */ + qc = ata_qc_from_tag(ap, qc->tag); + if (qc) { + if (likely(!(qc->err_mask & AC_ERR_HSM))) { + ata_sff_irq_on(ap); ata_qc_complete(qc); - else + } else ata_port_freeze(ap); } } else { - if (in_wq) { - ata_sff_irq_on(ap); - ata_qc_complete(qc); - } else + if (likely(!(qc->err_mask & AC_ERR_HSM))) ata_qc_complete(qc); + else + ata_port_freeze(ap); } }
With commit 65a15d6560df ("scsi: ipr: Remove SATA support") all libata drivers now have the error_handler() callback provided, so we can stop checking for non-existing error_handler callback. Signed-off-by: Hannes Reinecke <hare@suse.de> --- drivers/ata/libata-core.c | 158 ++++++++++++++------------------------ drivers/ata/libata-eh.c | 148 +++++++++++++++-------------------- drivers/ata/libata-sata.c | 5 +- drivers/ata/libata-scsi.c | 21 ++--- drivers/ata/libata-sff.c | 32 +++----- 5 files changed, 139 insertions(+), 225 deletions(-)