sparse irq

sparse irq

中断分配流程

19)               |  vfio_pci_set_msi_trigger [vfio_pci]() {
19)               |    pci_enable_msi_range() {
19)   0.841 us    |      pci_msi_supported();
19)               |      pci_msi_vec_count() {
19)               |      msi_capability_init() {
19)               |        msi_setup_entry() {
19)               |        arch_msi_mask_irq() {
19)   0.039 us    |          default_msi_mask_irq();
19)               |        arch_setup_msi_irqs() {
19)               |          irq_remapping_setup_msi_irqs() {
19)               |            irq_alloc_hwirqs() {
19)               |              __irq_alloc_descs() {
19)               |              arch_setup_hwirq() {
19)               |                __assign_irq_vector() {
19)               |              irq_modify_status() {
19)               |            intel_msi_alloc_irq() {
19)               |              alloc_irte() {
19)               |            setup_msi_irq() {
19)               |                assign_irq_vector() {
19)               |                  __assign_irq_vector() {
19)               |                compose_remapped_msi_msg() {
19)               |                  intel_compose_msi_msg() {
19)   0.031 us    |                    prepare_irte();
19)               |                    modify_irte() {
19)               |              setup_remapped_irq() {
19)               |                __irq_set_handler() {
19)               |        pci_intx() {
19)   0.027 us    |        pcibios_free_irq();
19)               |        irq_bypass_register_producer [irqbypass]() {
19)               |          __connect [irqbypass]() {
19)   0.029 us    |            kvm_arch_irq_bypass_stop [kvm]();
19)               |            kvm_arch_irq_bypass_add_producer [kvm]() {
19)               |              vmx_update_pi_irte [kvm_intel]() {
19)   0.030 us    |                kvm_arch_has_assigned_device [kvm]();
19)   0.028 us    |                irq_remapping_cap();
19)   0.028 us    |            kvm_arch_irq_bypass_start [kvm]();
4)               |  vfio_pci_set_msi_trigger [vfio_pci]() {
4)               |    vfio_msi_disable [vfio_pci]() {
4)               |      virqfd_disable [vfio_pci]() {
4)               |      vfio_msi_set_block [vfio_pci]() {
4)               |        vfio_msi_set_vector_signal [vfio_pci]() {
4)               |          free_irq() {
4)   0.134 us    |            irq_to_desc();
4)               |            __free_irq() {
4)               |              irq_shutdown() {
4)               |              unregister_handler_proc() {
4)               |          irq_bypass_unregister_producer [irqbypass]() {
4)               |            __disconnect [irqbypass]() {
4)   0.029 us    |              kvm_arch_irq_bypass_stop [kvm]();
4)               |              kvm_arch_irq_bypass_del_producer [kvm]() {
4)               |                vmx_update_pi_irte [kvm_intel]() {
4)   0.028 us    |                  kvm_arch_has_assigned_device [kvm]();
4)   0.040 us    |                  irq_remapping_cap();
4)   0.028 us    |              kvm_arch_irq_bypass_start [kvm]();
4)               |      pci_disable_msi() {
4)               |        pci_msi_shutdown() {
4)               |          pci_intx() {
4)               |          arch_msi_mask_irq() {
4)   0.038 us    |            default_msi_mask_irq();
4)   0.028 us    |          pcibios_alloc_irq();
4)               |        free_msi_irqs() {
4)               |          arch_teardown_msi_irqs() {
4)               |            default_teardown_msi_irqs() {
4)               |              arch_teardown_msi_irq() {
4)               |                native_teardown_msi_irq() {
4)               |                  irq_free_hwirqs() {
4)               |                    irq_modify_status() {
4)               |                    arch_teardown_hwirq() {
4)               |                      free_remapped_irq() {
4)               |                        free_irte() {

Radix trees介绍

https://lwn.net/Articles/175432/
动态分配irq_desc,这里的Radix trees实质有点像页表,与数组比有两个优点:

  • 动态扩展
  • 对于不连续情况,中间空间无需分配
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值