diff mbox series

[1/6] ata: remove reference to non-existing error_handler()

Message ID 20230510225211.111113-2-hare@suse.de
State New
Headers show
Series libata: remove references to 'old' error handler | expand

Commit Message

Hannes Reinecke May 10, 2023, 10:52 p.m. UTC
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(-)

Comments

Damien Le Moal May 15, 2023, 7:01 a.m. UTC | #1
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.
Niklas Cassel May 15, 2023, 10:09 a.m. UTC | #2
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
Yujie Liu May 23, 2023, 2:25 a.m. UTC | #3
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 mbox series

Patch

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);
 	}
 }