Question: how to handle tty output buffer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





Dear all

I have a question about the output buffer, it just related hardware flow-control enabled.


Question Description:

When the flow control works, rts works. At this time, the sender stops data transmission and exits the sender with interrupt.

We observed that the output buffer was not empty.

But

1. When the serial port device is used again, it will hang when modifying the properties.(We think the buffer is not empty, change termios property is not OK).

2. the receive side could receive these output buffer(before) next time.(seems strange)

Reproduce steps:

 1. Connect the send and receive side. enable hardware flow-control for
    both Send side and recv side. (start recv.py then send.py)(refer
    attachments)
 2. Waiting for RTS desseart.
 3. Close the send side using CTRL+C
 4. Using stty to show or set the uart attributes(it would hang).  and
start the second round, the receive side would receive the data last sent.

I found FTDI usb-serial device would sent the data out when flow-control is enabled when closing the port ,but the ti omap_8250 device could not sent the data out and keep the buffer.

the behavior is not the same between several serial ports.


Questions:

I'd like to know the common handle logic about the output buffer.

When closing the port, should the output buffer to be sent out or be cleared no matter flow-control is enabled?

Who should be response for these output buffer. kernel or userspace application?

If we keep the output buffer after closing the port, what's thex intend of this?



Looking forward to your kind reply

Thanks a lot


BRs

Chao Zeng
#!/usr/bin/env python3
import serial

ser = serial.Serial('/dev/ttyS2', 9600, rtscts=True)

send_data = "f"

try:
    while 1:
        ser.write(send_data.encode())
        print("cts:{}".format(ser.cts))
except(KeyboardInterrupt):
    ser.close()
#!/usr/bin/env python3
import serial

import time

ser = serial.Serial('/dev/ttyUSB0', 9600, rtscts=True)

try:
    print("ongoing...")
    while 1:
        time.sleep(1)
        recv_data = ser.read()
        print(recv_data)
except(KeyboardInterrupt):
    print("closing----")
    ser.close()
# tracer: function_graph
#
# CPU  DURATION                  FUNCTION CALLS
# |     |   |                     |   |   |   |
 1)               |  tty_release() {
 1)   4.460 us    |    tty_paranoia_check();
 1)               |    tty_lock() {
 1)   1.705 us    |      mutex_lock();
 1)   5.255 us    |    }
 1)               |    check_tty_count.isra.0() {
 1)   1.495 us    |      _raw_spin_lock();
 1)   1.460 us    |      _raw_spin_unlock();
 1)   7.915 us    |    }
 1)   1.425 us    |    tty_paranoia_check();
 1)               |    fasync_helper() {
 1)               |      fasync_remove_entry() {
 1)   1.440 us    |        _raw_spin_lock();
 1)   1.675 us    |        _raw_spin_lock();
 1)   1.470 us    |        _raw_spin_unlock();
 1)   1.515 us    |        _raw_spin_unlock();
 1) + 13.835 us   |      }
 1) + 17.085 us   |    }
 1)               |    uart_close() {
 1)               |      tty_port_close() {
 1)   1.455 us    |        tty_hung_up_p();
 1)               |        tty_port_close_start.part.0() {
 1)   1.660 us    |          _raw_spin_lock_irqsave();
 1)   1.655 us    |          _raw_spin_unlock_irqrestore();
 1)               |          tty_wait_until_sent() {
 1)               |            uart_chars_in_buffer() {
 1)   1.525 us    |              _raw_spin_lock_irqsave();
 1)   1.540 us    |              _raw_spin_unlock_irqrestore();
 1)   7.500 us    |            }
 1)   1.440 us    |            init_wait_entry();
 1)               |            prepare_to_wait_event() {
 1)   ==========> |
 1)               |              gic_handle_irq() {
 1)               |                __handle_domain_irq() {
 1)               |                  irq_enter() {
 1)               |                    irq_enter_rcu() {
 1)   1.665 us    |                      irqtime_account_irq();
 1)   4.690 us    |                    }
 1)   7.650 us    |                  }
 1)               |                  irq_find_mapping() {
 1)   1.435 us    |                    __rcu_read_lock();
 1)   1.540 us    |                    __rcu_read_unlock();
 1)   7.565 us    |                  }
 1)               |                  handle_percpu_devid_irq() {
 1)               |                    arch_timer_handler_phys() {
 1)               |                      hrtimer_interrupt() {
 1)   1.590 us    |                        _raw_spin_lock_irqsave();
 1)               |                        ktime_get_update_offsets_now() {
 1)   1.475 us    |                          arch_counter_read();
 1)   4.665 us    |                        }
 1)               |                        __hrtimer_run_queues() {
 1)   1.460 us    |                          _raw_spin_unlock_irqrestore();
 1)               |                          tick_sched_timer() {
 1)               |                            ktime_get() {
 1)   1.475 us    |                              arch_counter_read();
 1)   4.500 us    |                            }
 1)               |                            tick_sched_do_timer() {
 1)               |                              tick_do_update_jiffies64.part.0() {
 1)   1.685 us    |                                _raw_spin_lock();
 1)               |                                do_timer() {
 1)   1.525 us    |                                  calc_global_load();
 1)   4.570 us    |                                }
 1)   1.455 us    |                                _raw_spin_unlock();
 1)               |                                update_wall_time() {
 1)               |                                  timekeeping_advance() {
 1)   1.640 us    |                                    _raw_spin_lock_irqsave();
 1)   1.475 us    |                                    arch_counter_read();
 1)   1.470 us    |                                    _raw_spin_unlock_irqrestore();
 1) + 10.605 us   |                                  }
 1) + 13.505 us   |                                }
 1) + 29.220 us   |                              }
 1) + 32.070 us   |                            }
 1)               |                            update_process_times() {
 1)               |                              account_process_tick() {
 1)               |                                irqtime_account_process_tick() {
 1)               |                                  account_system_index_time() {
 1)               |                                    cpuacct_account_field() {
 1)   1.420 us    |                                      __rcu_read_lock();
 1)   1.445 us    |                                      __rcu_read_unlock();
 1)   7.485 us    |                                    }
 1)   1.400 us    |                                    __rcu_read_lock();
 1)               |                                    __cgroup_account_cputime_field() {
 1)               |                                      cgroup_base_stat_cputime_account_end.constprop.0() {
 1)   1.475 us    |                                        cgroup_rstat_updated();
 1)   4.485 us    |                                      }
 1)   7.405 us    |                                    }
 1)   1.605 us    |                                    __rcu_read_unlock();
 1)   1.985 us    |                                    acct_account_cputime();
 1) + 34.075 us   |                                  }
 1) + 37.010 us   |                                }
 1) + 40.115 us   |                              }
 1)               |                              run_local_timers() {
 1)   1.520 us    |                                hrtimer_run_queues();
 1)               |                                raise_softirq() {
 1)   1.650 us    |                                  __raise_softirq_irqoff();
 1)   4.595 us    |                                }
 1) + 10.810 us   |                              }
 1)               |                              rcu_sched_clock_irq() {
 1)   1.555 us    |                                rcu_is_cpu_rrupt_from_idle();
 1)   1.430 us    |                                rcu_qs();
 1)   1.440 us    |                                rcu_is_cpu_rrupt_from_idle();
 1)   1.430 us    |                                rcu_segcblist_ready_cbs();
 1) + 13.855 us   |                              }
 1)               |                              scheduler_tick() {
 1)   1.430 us    |                                topology_scale_freq_tick();
 1)   1.665 us    |                                _raw_spin_lock();
 1)               |                                update_rq_clock() {
 1)   1.885 us    |                                  update_irq_load_avg();
 1)   4.970 us    |                                }
 1)   1.775 us    |                                update_thermal_load_avg();
 1)               |                                task_tick_fair() {
 1)               |                                  update_curr() {
 1)   1.470 us    |                                    update_min_vruntime();
 1)               |                                    cpuacct_charge() {
 1)   1.520 us    |                                      __rcu_read_lock();
 1)   1.465 us    |                                      __rcu_read_unlock();
 1)   7.175 us    |                                    }
 1)   1.525 us    |                                    __rcu_read_lock();
 1)               |                                    __cgroup_account_cputime() {
 1)               |                                      cgroup_base_stat_cputime_account_end.constprop.0() {
 1)   1.495 us    |                                        cgroup_rstat_updated();
 1)   4.510 us    |                                      }
 1)   7.300 us    |                                    }
 1)   1.410 us    |                                    __rcu_read_unlock();
 1) + 27.975 us   |                                  }
 1)               |                                  __update_load_avg_se() {
 1)   1.590 us    |                                    __accumulate_pelt_segments();
 1)   4.760 us    |                                  }
 1)               |                                  __update_load_avg_cfs_rq() {
 1)   1.800 us    |                                    __accumulate_pelt_segments();
 1)   4.815 us    |                                  }
 1)   1.435 us    |                                  update_cfs_group();
 1)   1.705 us    |                                  hrtimer_active();
 1)               |                                  update_curr() {
 1)   1.495 us    |                                    update_min_vruntime();
 1)   4.435 us    |                                  }
 1)               |                                  __update_load_avg_se() {
 1)   1.460 us    |                                    __accumulate_pelt_segments();
 1)   4.400 us    |                                  }
 1)               |                                  __update_load_avg_cfs_rq() {
 1)   1.550 us    |                                    __accumulate_pelt_segments();
 1)   4.665 us    |                                  }
 1)               |                                  update_cfs_group() {
 1)               |                                    reweight_entity() {
 1)   1.470 us    |                                      update_curr();
 1)   4.830 us    |                                    }
 1)   7.600 us    |                                  }
 1)   1.650 us    |                                  hrtimer_active();
 1) + 80.700 us   |                                }
 1)   1.655 us    |                                calc_global_load_tick();
 1)   1.655 us    |                                _raw_spin_unlock();
 1)               |                                trigger_load_balance() {
 1)               |                                  raise_softirq() {
 1)   1.445 us    |                                    __raise_softirq_irqoff();
 1)   4.215 us    |                                  }
 1)               |                                  nohz_balance_exit_idle() {
 1)   1.435 us    |                                    __rcu_read_lock();
 1)   1.405 us    |                                    __rcu_read_unlock();
 1)   8.010 us    |                                  }
 1)   1.440 us    |                                  __rcu_read_lock();
 1)   1.465 us    |                                  __rcu_read_unlock();
 1) + 22.705 us   |                                }
 1) ! 130.000 us  |                              }
 1)   1.505 us    |                              run_posix_cpu_timers();
 1) ! 204.610 us  |                            }
 1)   1.730 us    |                            hrtimer_forward();
 1) ! 251.960 us  |                          }
 1)   1.455 us    |                          _raw_spin_lock_irq();
 1)   1.925 us    |                          enqueue_hrtimer();
 1) ! 264.355 us  |                        }
 1)   1.445 us    |                        __hrtimer_next_event_base();
 1)   1.755 us    |                        __hrtimer_next_event_base();
 1)   1.480 us    |                        _raw_spin_unlock_irqrestore();
 1)               |                        tick_program_event() {
 1)               |                          clockevents_program_event() {
 1)               |                            ktime_get() {
 1)   1.500 us    |                              arch_counter_read();
 1)   4.510 us    |                            }
 1)   1.510 us    |                            arch_timer_set_next_event_phys();
 1) + 10.290 us   |                          }
 1) + 13.180 us   |                        }
 1) ! 299.695 us  |                      }
 1) ! 302.835 us  |                    }
 1)   1.475 us    |                    gic_eoimode1_eoi_irq();
 1) ! 308.785 us  |                  }
 1)               |                  irq_exit() {
 1)   1.650 us    |                    irqtime_account_irq();
 1)   1.590 us    |                    ksoftirqd_running();
 1)               |                    __do_softirq() {
 1)   1.575 us    |                      irqtime_account_irq();
 1)               |                      run_timer_softirq() {
 1)   1.705 us    |                        _raw_spin_lock_irq();
 1)   2.750 us    |                        __next_timer_interrupt();
 1)   1.665 us    |                        _raw_spin_unlock();
 1)               |                        call_timer_fn() {
 1)               |                          delayed_work_timer_fn() {
 1)               |                            __queue_work() {
 1)   1.415 us    |                              __rcu_read_lock();
 1)   1.580 us    |                              _raw_spin_lock();
 1)               |                              wake_up_process() {
 1)               |                                try_to_wake_up() {
 1)   1.610 us    |                                  _raw_spin_lock_irqsave();
 1)   1.530 us    |                                  ttwu_queue_wakelist();
 1)   1.460 us    |                                  _raw_spin_lock();
 1)               |                                  update_rq_clock() {
 1)   1.870 us    |                                    update_irq_load_avg();
 1)   4.960 us    |                                  }
 1)               |                                  ttwu_do_activate() {
 1)               |                                    enqueue_task_fair() {
 1)               |                                      enqueue_entity() {
 1)   1.760 us    |                                        update_curr();
 1)   1.610 us    |                                        __update_load_avg_se();
 1)   1.480 us    |                                        __update_load_avg_cfs_rq();
 1)   1.420 us    |                                        update_cfs_group();
 1) + 13.960 us   |                                      }
 1)   1.420 us    |                                      hrtick_update();
 1) + 19.905 us   |                                    }
 1)               |                                    ttwu_do_wakeup() {
 1)               |                                      check_preempt_curr() {
 1)               |                                        check_preempt_wakeup() {
 1)   1.470 us    |                                          update_curr();
 1)   1.705 us    |                                          set_next_buddy();
 1)   1.570 us    |                                          resched_curr();
 1) + 10.605 us   |                                        }
 1) + 13.565 us   |                                      }
 1) + 19.785 us   |                                    }
 1) + 44.195 us   |                                  }
 1)   1.465 us    |                                  _raw_spin_unlock();
 1)   2.055 us    |                                  _raw_spin_unlock_irqrestore();
 1) + 68.885 us   |                                }
 1) + 71.810 us   |                              }
 1)   1.450 us    |                              _raw_spin_unlock();
 1)   1.465 us    |                              __rcu_read_unlock();
 1) + 87.345 us   |                            }
 1) + 90.395 us   |                          }
 1) + 93.335 us   |                        }
 1)   1.495 us    |                        _raw_spin_lock();
 1)   1.680 us    |                        _raw_spin_unlock_irq();
 1) ! 113.180 us  |                      }
 1)               |                      run_rebalance_domains() {
 1)               |                        update_blocked_averages() {
 1)   1.510 us    |                          _raw_spin_lock_irqsave();
 1)               |                          update_rq_clock() {
 1)   1.495 us    |                            update_irq_load_avg();
 1)   4.785 us    |                          }
 1)   1.805 us    |                          update_rt_rq_load_avg();
 1)   1.885 us    |                          update_dl_rq_load_avg();
 1)   1.460 us    |                          update_thermal_load_avg();
 1)   1.480 us    |                          update_irq_load_avg();
 1)   1.600 us    |                          __update_load_avg_cfs_rq();
 1)   1.490 us    |                          __update_load_avg_se();
 1)   1.700 us    |                          __update_load_avg_cfs_rq();
 1)   1.640 us    |                          __update_load_avg_cfs_rq();
 1)   1.435 us    |                          __update_load_avg_cfs_rq();
 1)   1.430 us    |                          _raw_spin_unlock_irqrestore();
 1) + 43.200 us   |                        }
 1)               |                        rebalance_domains() {
 1)   1.455 us    |                          __rcu_read_lock();
 1)   1.835 us    |                          __msecs_to_jiffies();
 1)               |                          load_balance() {
 1)   1.465 us    |                            idle_cpu();
 1)   1.635 us    |                            group_balance_cpu();
 1)               |                            find_busiest_group() {
 1)               |                              update_group_capacity() {
 1)   1.410 us    |                                __msecs_to_jiffies();
 1)   4.585 us    |                              }
 1)   1.535 us    |                              idle_cpu();
 1) + 12.050 us   |                            }
 1) + 22.390 us   |                          }
 1)   1.525 us    |                          __msecs_to_jiffies();
 1)   1.430 us    |                          __msecs_to_jiffies();
 1)               |                          load_balance() {
 1)   1.465 us    |                            idle_cpu();
 1)   4.785 us    |                          }
 1)   1.430 us    |                          __msecs_to_jiffies();
 1)   1.450 us    |                          __rcu_read_unlock();
 1) + 50.045 us   |                        }
 1) + 97.400 us   |                      }
 1)   1.935 us    |                      irqtime_account_irq();
 1) ! 221.370 us  |                    }
 1)   1.640 us    |                    idle_cpu();
 1) ! 233.720 us  |                  }
 1) ! 565.090 us  |                }
 1) ! 568.125 us  |              }
 1)   <========== |
 1)               |              arm64_preempt_schedule_irq() {
 1)               |                preempt_schedule_irq() {
 1)               |                  rcu_note_context_switch() {
 1)   1.500 us    |                    rcu_preempt_deferred_qs();
 1)   1.445 us    |                    rcu_qs();
 1)   7.520 us    |                  }
 1)   1.485 us    |                  _raw_spin_lock();
 1)   1.415 us    |                  update_rq_clock();
 1)               |                  pick_next_task_fair() {
 1)   1.665 us    |                    update_curr();
 1)   1.400 us    |                    check_cfs_rq_runtime();
 1)               |                    pick_next_entity() {
 1)   1.685 us    |                      clear_buddies();
 1)   5.010 us    |                    }
 1)               |                    put_prev_entity() {
 1)   1.490 us    |                      update_curr();
 1)   1.635 us    |                      check_cfs_rq_runtime();
 1)   1.480 us    |                      __update_load_avg_se();
 1)   1.460 us    |                      __update_load_avg_cfs_rq();
 1) + 13.745 us   |                    }
 1)               |                    put_prev_entity() {
 1)   1.465 us    |                      update_curr();
 1)   1.430 us    |                      check_cfs_rq_runtime();
 1)   1.665 us    |                      __update_load_avg_se();
 1)   1.445 us    |                      __update_load_avg_cfs_rq();
 1) + 13.345 us   |                    }
 1)               |                    set_next_entity() {
 1)   1.500 us    |                      __update_load_avg_se();
 1)   1.460 us    |                      __update_load_avg_cfs_rq();
 1)   8.850 us    |                    }
 1) + 54.810 us   |                  }
 1)               |                  fpsimd_thread_switch() {
 1)   1.520 us    |                    __get_cpu_fpsimd_context();
 1)               |                    fpsimd_save() {
 1)   1.430 us    |                      have_cpu_fpsimd_context();
 1)   4.575 us    |                    }
 1)   1.465 us    |                    __put_cpu_fpsimd_context();
 1) + 13.235 us   |                  }
 1)   1.755 us    |                  hw_breakpoint_thread_switch();
 1)   1.650 us    |                  uao_thread_switch();
 1)   1.420 us    |                  mte_thread_switch();
 1)               |                  finish_task_switch() {
 1)   1.570 us    |                    _raw_spin_unlock_irq();
 1)   5.120 us    |                  }
 1) ! 154.335 us  |                }
 1) ! 157.245 us  |              }
 1)   1.595 us    |              _raw_spin_lock_irqsave();
 1)   1.430 us    |              _raw_spin_unlock_irqrestore();
 1) ! 736.305 us  |            }
 1)               |            uart_chars_in_buffer() {
 1)   1.490 us    |              _raw_spin_lock_irqsave();
 1)   1.565 us    |              _raw_spin_unlock_irqrestore();
 1)   7.480 us    |            }
 1)               |            schedule_timeout() {
 1)               |              lock_timer_base() {
 1)   1.505 us    |                _raw_spin_lock_irqsave();
 1)   4.675 us    |              }
 1)   1.630 us    |              detach_if_pending();
 1)   1.485 us    |              get_nohz_timer_target();
 1)   1.590 us    |              calc_wheel_index();
 1)   1.860 us    |              enqueue_timer();
 1)   1.570 us    |              _raw_spin_unlock_irqrestore();
 1)               |              schedule() {
 1)               |                rcu_note_context_switch() {
 1)   1.440 us    |                  rcu_preempt_deferred_qs();
 1)   1.645 us    |                  rcu_qs();
 1)   7.435 us    |                }
 1)   1.440 us    |                _raw_spin_lock();
 1)               |                update_rq_clock() {
 1)   1.555 us    |                  update_irq_load_avg();
 1)   4.620 us    |                }
 1)               |                dequeue_task_fair() {
 1)               |                  dequeue_entity() {
 1)               |                    update_curr() {
 1)   1.435 us    |                      update_min_vruntime();
 1)               |                      cpuacct_charge() {
 1)   1.420 us    |                        __rcu_read_lock();
 1)   1.840 us    |                        __rcu_read_unlock();
 1)   7.935 us    |                      }
 1)   1.415 us    |                      __rcu_read_lock();
 1)               |                      __cgroup_account_cputime() {
 1)               |                        cgroup_base_stat_cputime_account_end.constprop.0() {
 1)   1.495 us    |                          cgroup_rstat_updated();
 1)   4.445 us    |                        }
 1)   7.485 us    |                      }
 1)   1.405 us    |                      __rcu_read_unlock();
 1) + 28.805 us   |                    }
 1)   1.705 us    |                    __update_load_avg_se();
 1)   1.535 us    |                    __update_load_avg_cfs_rq();
 1)   1.445 us    |                    clear_buddies();
 1)   1.450 us    |                    update_cfs_group();
 1)   1.465 us    |                    update_min_vruntime();
 1) + 46.200 us   |                  }
 1)               |                  dequeue_entity() {
 1)               |                    update_curr() {
 1)   1.435 us    |                      update_min_vruntime();
 1)   4.320 us    |                    }
 1)   1.705 us    |                    __update_load_avg_se();
 1)   1.545 us    |                    __update_load_avg_cfs_rq();
 1)   1.425 us    |                    clear_buddies();
 1)               |                    update_cfs_group() {
 1)   1.615 us    |                      reweight_entity();
 1)   4.410 us    |                    }
 1)   1.415 us    |                    update_min_vruntime();
 1) + 26.145 us   |                  }
 1)   1.515 us    |                  hrtick_update();
 1) + 79.970 us   |                }
 1)               |                pick_next_task_fair() {
 1)               |                  newidle_balance() {
 1)   1.455 us    |                    _raw_spin_unlock();
 1)               |                    update_blocked_averages() {
 1)   1.490 us    |                      _raw_spin_lock_irqsave();
 1)   2.055 us    |                      update_rq_clock();
 1)   1.515 us    |                      update_rt_rq_load_avg();
 1)   1.700 us    |                      update_dl_rq_load_avg();
 1)   1.500 us    |                      update_thermal_load_avg();
 1)   1.490 us    |                      update_irq_load_avg();
 1)   1.500 us    |                      __update_load_avg_cfs_rq();
 1)   1.650 us    |                      __update_load_avg_se();
 1)   1.485 us    |                      __update_load_avg_cfs_rq();
 1)   1.665 us    |                      __update_load_avg_cfs_rq();
 1)   1.455 us    |                      _raw_spin_unlock_irqrestore();
 1) + 34.635 us   |                    }
 1)   1.595 us    |                    __rcu_read_lock();
 1)               |                    load_balance() {
 1)               |                      find_busiest_group() {
 1)   1.430 us    |                        idle_cpu();
 1)               |                        update_blocked_averages() {
 1)   1.760 us    |                          _raw_spin_lock_irqsave();
 1)               |                          update_rq_clock() {
 1)   1.665 us    |                            update_irq_load_avg();
 1)   5.000 us    |                          }
 1)   1.810 us    |                          update_rt_rq_load_avg();
 1)   1.665 us    |                          update_dl_rq_load_avg();
 1)   1.935 us    |                          update_thermal_load_avg();
 1)   1.505 us    |                          update_irq_load_avg();
 1)   1.585 us    |                          __update_load_avg_cfs_rq();
 1)   1.580 us    |                          __update_load_avg_cfs_rq();
 1)   1.625 us    |                          __update_load_avg_cfs_rq();
 1)   1.440 us    |                          _raw_spin_unlock_irqrestore();
 1) + 36.785 us   |                        }
 1)   1.495 us    |                        idle_cpu();
 1) + 47.000 us   |                      }
 1) + 50.255 us   |                    }
 1)   1.435 us    |                    __msecs_to_jiffies();
 1)               |                    load_balance() {
 1)               |                      find_busiest_group() {
 1)               |                        update_group_capacity() {
 1)   1.405 us    |                          __msecs_to_jiffies();
 1)   4.520 us    |                        }
 1)   1.470 us    |                        idle_cpu();
 1)   1.465 us    |                        idle_cpu();
 1)               |                        update_blocked_averages() {
 1)   1.660 us    |                          _raw_spin_lock_irqsave();
 1)   2.355 us    |                          update_rq_clock();
 1)   1.740 us    |                          update_rt_rq_load_avg();
 1)   1.775 us    |                          update_dl_rq_load_avg();
 1)   1.745 us    |                          update_thermal_load_avg();
 1)   1.780 us    |                          update_irq_load_avg();
 1)   1.570 us    |                          __update_load_avg_cfs_rq();
 1)   1.670 us    |                          __update_load_avg_cfs_rq();
 1)   1.430 us    |                          _raw_spin_unlock_irqrestore();
 1) + 31.150 us   |                        }
 1)   1.830 us    |                        idle_cpu();
 1)               |                        update_blocked_averages() {
 1)   1.660 us    |                          _raw_spin_lock_irqsave();
 1)   2.280 us    |                          update_rq_clock();
 1)   1.720 us    |                          update_rt_rq_load_avg();
 1)   1.755 us    |                          update_dl_rq_load_avg();
 1)   1.815 us    |                          update_thermal_load_avg();
 1)   1.750 us    |                          update_irq_load_avg();
 1)   2.770 us    |                          __update_load_avg_cfs_rq();
 1)   1.430 us    |                          _raw_spin_unlock_irqrestore();
 1) + 28.655 us   |                        }
 1)   1.620 us    |                        idle_cpu();
 1) + 84.725 us   |                      }
 1) + 87.805 us   |                    }
 1)   1.475 us    |                    __msecs_to_jiffies();
 1)   1.630 us    |                    __rcu_read_unlock();
 1)   1.475 us    |                    _raw_spin_lock();
 1) ! 197.115 us  |                  }
 1) ! 199.900 us  |                }
 1)               |                put_prev_task_fair() {
 1)               |                  put_prev_entity() {
 1)   1.415 us    |                    check_cfs_rq_runtime();
 1)   4.275 us    |                  }
 1)               |                  put_prev_entity() {
 1)   1.520 us    |                    check_cfs_rq_runtime();
 1)   4.335 us    |                  }
 1) + 13.145 us   |                }
 1)   1.425 us    |                pick_next_task_idle();
 1)               |                fpsimd_thread_switch() {
 1)   1.460 us    |                  __get_cpu_fpsimd_context();
 1)               |                  fpsimd_save() {
 1)   1.425 us    |                    have_cpu_fpsimd_context();
 1)   4.850 us    |                  }
 1)   1.430 us    |                  __put_cpu_fpsimd_context();
 1) + 13.420 us   |                }
 1)   1.475 us    |                hw_breakpoint_thread_switch();
 1)   1.445 us    |                uao_thread_switch();
 1)   1.415 us    |                mte_thread_switch();
 1)               |                finish_task_switch() {
 1)   2.365 us    |                  _raw_spin_unlock_irq();
 1) + 17.840 us   |                }
 1) $ 30903388 us |              }
 1)               |              del_timer_sync() {
 1)               |                lock_timer_base() {
 1)   1.525 us    |                  _raw_spin_lock_irqsave();
 1)   4.580 us    |                }
 1)   1.565 us    |                detach_if_pending();
 1)   1.465 us    |                _raw_spin_unlock_irqrestore();
 1) + 13.380 us   |              }
 1) $ 30903428 us |            }
 1)               |            prepare_to_wait_event() {
 1)   1.770 us    |              _raw_spin_lock_irqsave();
 1)   1.430 us    |              _raw_spin_unlock_irqrestore();
 1)   7.775 us    |            }
 1)               |            uart_chars_in_buffer() {
 1)   1.810 us    |              _raw_spin_lock_irqsave();
 1)   1.440 us    |              _raw_spin_unlock_irqrestore();
 1)   9.295 us    |            }
 1)               |            finish_wait() {
 1)   1.445 us    |              _raw_spin_lock_irqsave();
 1)   1.435 us    |              _raw_spin_unlock_irqrestore();
 1)   7.565 us    |            }
 1) $ 30904220 us |          }
 1)               |          tty_ldisc_flush() {
 1)   2.020 us    |            ldsem_down_read_trylock();
 1)               |            tty_buffer_flush() {
 1)   1.740 us    |              mutex_lock();
 1)               |              n_tty_flush_buffer() {
 1)   2.015 us    |                down_write();
 1)   1.465 us    |                n_tty_kick_worker();
 1)   2.005 us    |                up_write();
 1) + 12.395 us   |              }
 1)   1.530 us    |              mutex_unlock();
 1) + 23.210 us   |            }
 1)   1.460 us    |            ldsem_up_read();
 1) + 32.945 us   |          }
 1) $ 30904265 us |        }
 1)               |        tty_port_shutdown() {
 1)   1.800 us    |          mutex_lock();
 1)               |          uart_dtr_rts() {
 1)               |            uart_port_dtr_rts() {
 1)               |              uart_update_mctrl() {
 1)   1.460 us    |                _raw_spin_lock_irqsave();
 1)               |                serial8250_set_mctrl() {
 1)               |                  omap8250_set_mctrl() {
 1)               |                    serial8250_do_set_mctrl() {
 1)   6.590 us    |                      mem_serial_out();
 1)               |                      mctrl_gpio_set() {
 1)               |                        gpiod_set_array_value() {
 1)   2.050 us    |                          gpiod_set_array_value_complex();
 1)   5.625 us    |                        }
 1)   9.575 us    |                      }
 1) + 21.920 us   |                    }
 1)   1.695 us    |                    mctrl_gpio_to_gpiod();
 1)   1.930 us    |                    mem_serial_in();
 1)   1.610 us    |                    mem_serial_out();
 1)   1.445 us    |                    mem_serial_out();
 1)   1.650 us    |                    mem_serial_out();
 1) + 42.045 us   |                  }
 1) + 44.935 us   |                }
 1)   1.425 us    |                _raw_spin_unlock_irqrestore();
 1) + 54.425 us   |              }
 1) + 58.335 us   |            }
 1) + 62.070 us   |          }
 1)               |          uart_tty_port_shutdown() {
 1)   1.485 us    |            _raw_spin_lock_irq();
 1)               |            serial8250_stop_rx() {
 1)               |              __pm_runtime_resume() {
 1)   1.795 us    |                _raw_spin_lock_irqsave();
 1)   2.055 us    |                rpm_resume();
 1)   1.465 us    |                _raw_spin_unlock_irqrestore();
 1) + 11.855 us   |              }
 1)   1.440 us    |              mem_serial_out();
 1)               |              ktime_get_mono_fast_ns() {
 1)   1.530 us    |                arch_counter_read();
 1)   4.420 us    |              }
 1)   1.900 us    |              __pm_runtime_suspend();
 1) + 27.260 us   |            }
 1)   1.455 us    |            _raw_spin_unlock_irq();
 1)               |            uart_port_shutdown() {
 1)               |              __wake_up() {
 1)               |                __wake_up_common_lock() {
 1)   1.735 us    |                  _raw_spin_lock_irqsave();
 1)   2.025 us    |                  __wake_up_common();
 1)   1.445 us    |                  _raw_spin_unlock_irqrestore();
 1) + 10.765 us   |                }
 1) + 13.550 us   |              }
 1)               |              serial8250_shutdown() {
 1)               |                omap_8250_shutdown() {
 1)               |                  flush_work() {
 1)               |                    __flush_work.isra.0() {
 1)   1.425 us    |                      __rcu_read_lock();
 1)   1.595 us    |                      _raw_spin_lock_irq();
 1)   1.465 us    |                      _raw_spin_unlock_irq();
 1)   1.415 us    |                      __rcu_read_unlock();
 1) + 14.490 us   |                    }
 1) + 17.475 us   |                  }
 1)               |                  __pm_runtime_resume() {
 1)   1.490 us    |                    _raw_spin_lock_irqsave();
 1)   1.625 us    |                    rpm_resume();
 1)   1.465 us    |                    _raw_spin_unlock_irqrestore();
 1) + 10.520 us   |                  }
 1)   1.575 us    |                  mem_serial_out();
 1)   1.420 us    |                  mem_serial_out();
 1)   1.615 us    |                  mem_serial_out();
 1)   1.420 us    |                  mem_serial_out();
 1)               |                  ktime_get_mono_fast_ns() {
 1)   1.485 us    |                    arch_counter_read();
 1)   4.465 us    |                  }
 1)   1.505 us    |                  __pm_runtime_suspend();
 1)               |                  free_irq() {
 1)   1.820 us    |                    irq_to_desc();
 1)   1.705 us    |                    mutex_lock();
 1)   1.480 us    |                    _raw_spin_lock_irqsave();
 1)   1.765 us    |                    irq_pm_remove_action();
 1)               |                    irq_shutdown() {
 1)               |                      gic_eoimode1_mask_irq() {
 1)               |                        gic_poke_irq() {
 1)   1.625 us    |                          convert_offset_index();
 1)               |                          gic_dist_wait_for_rwp() {
 1)   1.615 us    |                            gic_do_wait_for_rwp();
 1)   4.610 us    |                          }
 1) + 11.985 us   |                        }
 1) + 16.780 us   |                      }
 1) + 20.740 us   |                    }
 1)   1.450 us    |                    _raw_spin_unlock_irqrestore();
 1)               |                    unregister_handler_proc() {
 1)               |                      proc_remove() {
 1)               |                        remove_proc_subtree() {
 1)   1.795 us    |                          _raw_write_lock();
 1)   1.950 us    |                          __xlate_proc_name();
 1)   3.565 us    |                          pde_subdir_find();
 1)   1.950 us    |                          _raw_write_unlock();
 1)               |                          proc_entry_rundown() {
 1)   1.445 us    |                            _raw_spin_lock();
 1)   1.570 us    |                            _raw_spin_unlock();
 1)   8.035 us    |                          }
 1)               |                          pde_put() {
 1)   1.780 us    |                            _raw_spin_lock_irqsave();
 1)   1.530 us    |                            _raw_spin_unlock_irqrestore();
 1)   2.985 us    |                            kmem_cache_free();
 1) + 15.930 us   |                          }
 1) + 45.040 us   |                        }
 1) + 48.625 us   |                      }
 1) + 51.755 us   |                    }
 1)               |                    __synchronize_hardirq() {
 1)   1.590 us    |                      _raw_spin_lock_irqsave();
 1)               |                      __irq_get_irqchip_state() {
 1)               |                        gic_irq_get_irqchip_state() {
 1)               |                          gic_peek_irq() {
 1)   1.600 us    |                            convert_offset_index();
 1)   4.770 us    |                          }
 1)   7.950 us    |                        }
 1) + 11.170 us   |                      }
 1)   1.425 us    |                      _raw_spin_unlock_irqrestore();
 1) + 20.630 us   |                    }
 1)   1.500 us    |                    _raw_spin_lock_irqsave();
 1)               |                    irq_domain_deactivate_irq() {
 1)   1.990 us    |                      __irq_domain_deactivate_irq();
 1)   5.590 us    |                    }
 1)   1.450 us    |                    _raw_spin_unlock_irqrestore();
 1)   1.715 us    |                    mutex_unlock();
 1)   1.530 us    |                    irq_chip_pm_put();
 1)   1.630 us    |                    module_put();
 1)   1.480 us    |                    kfree();
 1)   2.405 us    |                    kfree();
 1) ! 146.000 us  |                  }
 1)   1.915 us    |                  dev_pm_clear_wake_irq();
 1) ! 205.045 us  |                }
 1) ! 208.880 us  |              }
 1)               |              synchronize_irq() {
 1)   1.585 us    |                irq_to_desc();
 1)               |                __synchronize_hardirq() {
 1)   1.480 us    |                  _raw_spin_lock_irqsave();
 1)               |                  __irq_get_irqchip_state() {
 1)               |                    gic_irq_get_irqchip_state() {
 1)               |                      gic_peek_irq() {
 1)   1.385 us    |                        convert_offset_index();
 1)   4.360 us    |                      }
 1)   7.535 us    |                    }
 1) + 10.465 us   |                  }
 1)   1.425 us    |                  _raw_spin_unlock_irqrestore();
 1) + 19.105 us   |                }
 1) + 25.115 us   |              }
 1) ! 253.705 us  |            }
 1)               |            serial8250_pm() {
 1)               |              omap_8250_pm() {
 1)               |                __pm_runtime_resume() {
 1)   1.630 us    |                  _raw_spin_lock_irqsave();
 1)   1.550 us    |                  rpm_resume();
 1)   1.730 us    |                  _raw_spin_unlock_irqrestore();
 1) + 10.490 us   |                }
 1)   1.455 us    |                mem_serial_out();
 1)   2.210 us    |                mem_serial_in();
 1)   1.445 us    |                mem_serial_out();
 1)   1.425 us    |                mem_serial_out();
 1)   1.445 us    |                mem_serial_out();
 1)   1.420 us    |                mem_serial_out();
 1)   1.445 us    |                mem_serial_out();
 1)   1.920 us    |                mem_serial_out();
 1)               |                ktime_get_mono_fast_ns() {
 1)   1.475 us    |                  arch_counter_read();
 1)   4.625 us    |                }
 1)   1.495 us    |                __pm_runtime_suspend();
 1) + 49.165 us   |              }
 1) + 52.240 us   |            }
 1) ! 346.475 us  |          }
 1)   1.700 us    |          mutex_unlock();
 1) ! 420.175 us  |        }
 1)               |        tty_port_close_end() {
 1)               |          tty_ldisc_flush() {
 1)   1.495 us    |            ldsem_down_read_trylock();
 1)               |            tty_buffer_flush() {
 1)   1.455 us    |              mutex_lock();
 1)               |              n_tty_flush_buffer() {
 1)   1.460 us    |                down_write();
 1)   1.435 us    |                n_tty_kick_worker();
 1)   1.485 us    |                up_write();
 1) + 10.650 us   |              }
 1)   1.455 us    |              mutex_unlock();
 1) + 19.200 us   |            }
 1)   1.515 us    |            ldsem_up_read();
 1) + 28.070 us   |          }
 1)   1.505 us    |          _raw_spin_lock_irqsave();
 1)   1.460 us    |          _raw_spin_unlock_irqrestore();
 1) + 37.065 us   |        }
 1)   1.495 us    |        _raw_spin_lock_irqsave();
 1)   2.125 us    |        tty_kref_put();
 1)   1.435 us    |        _raw_spin_unlock_irqrestore();
 1) $ 30904742 us |      }
 1) $ 30904745 us |    }
 1)   1.980 us    |    tty_lock_slave();
 1)   1.475 us    |    _raw_spin_lock();
 1)   1.465 us    |    _raw_spin_unlock();
 1)   2.080 us    |    kfree();
 1)   1.910 us    |    _raw_read_lock();
 1)   1.805 us    |    session_clear_tty();
 1)   1.725 us    |    _raw_read_unlock();
 1)   1.645 us    |    tty_unlock_slave();
 1)               |    tty_unlock() {
 1)   1.780 us    |      mutex_unlock();
 1)   1.465 us    |      tty_kref_put();
 1)   7.705 us    |    }
 1)               |    tty_release_struct() {
 1)               |      tty_ldisc_release() {
 1)   2.055 us    |        ldsem_down_write();
 1)               |        tty_ldisc_close() {
 1)               |          n_tty_close() {
 1)               |            vfree() {
 1)               |              __vunmap() {
 1)   1.745 us    |                _raw_spin_lock();
 1)   1.700 us    |                _raw_spin_unlock();
 1)               |                remove_vm_area() {
 1)   1.450 us    |                  _raw_spin_lock();
 1)   1.455 us    |                  _raw_spin_unlock();
 1)               |                  unmap_kernel_range_noflush() {
 1)   1.835 us    |                    pud_clear_huge();
 1)   1.540 us    |                    pmd_clear_huge();
 1)   9.700 us    |                  }
 1)               |                  free_vmap_area_noflush() {
 1)   1.455 us    |                    _raw_spin_lock();
 1)   1.470 us    |                    _raw_spin_unlock();
 1)   8.415 us    |                  }
 1) + 28.970 us   |                }
 1)               |                __free_pages() {
 1)               |                  free_unref_page() {
 1)   2.250 us    |                    free_pcp_prepare();
 1)   2.365 us    |                    free_unref_page_commit();
 1)   9.780 us    |                  }
 1) + 13.500 us   |                }
 1)               |                __free_pages() {
 1)               |                  free_unref_page() {
 1)   1.475 us    |                    free_pcp_prepare();
 1)   1.515 us    |                    free_unref_page_commit();
 1)   8.515 us    |                  }
 1) + 11.845 us   |                }
 1)               |                __free_pages() {
 1)               |                  free_unref_page() {
 1)   1.465 us    |                    free_pcp_prepare();
 1)   1.545 us    |                    free_unref_page_commit();
 1)   7.305 us    |                  }
 1) + 10.315 us   |                }
 1)               |                kvfree() {
 1)   1.495 us    |                  is_vmalloc_addr();
 1)   1.900 us    |                  kfree();
 1)   7.730 us    |                }
 1)   1.620 us    |                kfree();
 1) + 95.885 us   |              }
 1) + 98.945 us   |            }
 1) ! 102.335 us  |          }
 1) ! 106.035 us  |        }
 1)               |        tty_ldisc_put() {
 1)   1.760 us    |          _raw_spin_lock_irqsave();
 1)   1.635 us    |          module_put();
 1)   1.465 us    |          _raw_spin_unlock_irqrestore();
 1)   1.920 us    |          kfree();
 1) + 14.035 us   |        }
 1)   1.440 us    |        ldsem_up_write();
 1) ! 132.000 us  |      }
 1)               |      flush_work() {
 1)               |        __flush_work.isra.0() {
 1)   1.600 us    |          __rcu_read_lock();
 1)   1.410 us    |          __rcu_read_unlock();
 1)   7.335 us    |        }
 1) + 10.450 us   |      }
 1)               |      flush_work() {
 1)               |        __flush_work.isra.0() {
 1)   1.420 us    |          __rcu_read_lock();
 1)   1.415 us    |          __rcu_read_unlock();
 1)   7.085 us    |        }
 1)   9.810 us    |      }
 1)   1.835 us    |      mutex_lock();
 1)               |      release_tty() {
 1)   1.575 us    |        mutex_is_locked();
 1)   3.000 us    |        tty_save_termios();
 1)               |        tty_buffer_cancel_work() {
 1)               |          cancel_work_sync() {
 1)               |            __cancel_work_timer() {
 1)   2.170 us    |              try_to_grab_pending();
 1)               |              __flush_work.isra.0() {
 1)   1.435 us    |                __rcu_read_lock();
 1)   1.410 us    |                __rcu_read_unlock();
 1)   7.215 us    |              }
 1) + 14.640 us   |            }
 1) + 17.775 us   |          }
 1) + 20.800 us   |        }
 1)               |        queue_work_on() {
 1)               |          __queue_work() {
 1)   1.420 us    |            __rcu_read_lock();
 1)   1.445 us    |            _raw_spin_lock();
 1)               |            wake_up_process() {
 1)               |              try_to_wake_up() {
 1)   1.800 us    |                _raw_spin_lock_irqsave();
 1)   1.540 us    |                ttwu_queue_wakelist();
 1)   1.630 us    |                _raw_spin_lock();
 1)               |                update_rq_clock() {
 1)   1.710 us    |                  update_irq_load_avg();
 1)   5.000 us    |                }
 1)               |                ttwu_do_activate() {
 1)               |                  enqueue_task_fair() {
 1)               |                    enqueue_entity() {
 1)               |                      update_curr() {
 1)   1.540 us    |                        update_min_vruntime();
 1)   4.480 us    |                      }
 1)   1.830 us    |                      __update_load_avg_se();
 1)               |                      __update_load_avg_cfs_rq() {
 1)   1.620 us    |                        __accumulate_pelt_segments();
 1)   4.625 us    |                      }
 1)   1.540 us    |                      update_cfs_group();
 1) + 20.300 us   |                    }
 1)   1.435 us    |                    hrtick_update();
 1) + 26.590 us   |                  }
 1)               |                  ttwu_do_wakeup() {
 1)               |                    check_preempt_curr() {
 1)               |                      check_preempt_wakeup() {
 1)   1.435 us    |                        update_curr();
 1)   5.635 us    |                      }
 1)   8.735 us    |                    }
 1) + 14.140 us   |                  }
 1) + 45.345 us   |                }
 1)   1.715 us    |                _raw_spin_unlock();
 1)   1.465 us    |                _raw_spin_unlock_irqrestore();
 1) + 70.520 us   |              }
 1) + 73.290 us   |            }
 1)   1.565 us    |            _raw_spin_unlock();
 1)   1.435 us    |            __rcu_read_unlock();
 1) + 88.790 us   |          }
 1) + 92.115 us   |        }
 1) ! 126.405 us  |      }
 1)   1.555 us    |      mutex_unlock();
 1) ! 292.295 us  |    }
 1) $ 30905139 us |  }

[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux