1. 24 Oct, 2019 1 commit
    • Zenghui Yu's avatar
      irqchip/gic-v3-its: Use the exact ITSList for VMOVP · 84243125
      Zenghui Yu authored
      On a system without Single VMOVP support (say GITS_TYPER.VMOVP == 0),
      we will map vPEs only on ITSs that will actually control interrupts
      for the given VM.  And when moving a vPE, the VMOVP command will be
      issued only for those ITSs.
      
      But when issuing VMOVPs we seemed fail to present the exact ITSList
      to ITSs who are actually included in the synchronization operation.
      The its_list_map we're currently using includes all ITSs in the system,
      even though some of them don't have the corresponding vPE mapping at all.
      
      Introduce get_its_list() to get the per-VM its_list_map, to indicate
      which ITSs have vPE mappings for the given VM, and use this map as
      the expected ITSList when building VMOVP. This is hopefully a performance
      gain not to do some synchronization with those unsuspecting ITSs.
      And initialize the whole command descriptor to zero at beginning, since
      the seq_num and its_list should be RES0 when GITS_TYPER.VMOVP == 1.
      Signed-off-by: default avatarZenghui Yu <yuzenghui@huawei.com>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/1571802386-2680-1-git-send-email-yuzenghui@huawei.com
      84243125
  2. 18 Sep, 2019 2 commits
  3. 09 Sep, 2019 2 commits
  4. 05 Sep, 2019 2 commits
  5. 03 Sep, 2019 1 commit
    • Dexuan Cui's avatar
      irqdomain: Add the missing assignment of domain->fwnode for named fwnode · 711419e5
      Dexuan Cui authored
      Recently device pass-through stops working for Linux VM running on Hyper-V.
      
      git-bisect shows the regression is caused by the recent commit
      467a3bb9 ("PCI: hv: Allocate a named fwnode ..."), but the root cause
      is that the commit d59f6617 forgets to set the domain->fwnode for
      IRQCHIP_FWNODE_NAMED*, and as a result:
      
      1. The domain->fwnode remains to be NULL.
      
      2. irq_find_matching_fwspec() returns NULL since "h->fwnode == fwnode" is
      false, and pci_set_bus_msi_domain() sets the Hyper-V PCI root bus's
      msi_domain to NULL.
      
      3. When the device is added onto the root bus, the device's dev->msi_domain
      is set to NULL in pci_set_msi_domain().
      
      4. When a device driver tries to enable MSI-X, pci_msi_setup_msi_irqs()
      calls arch_setup_msi_irqs(), which uses the native MSI chip (i.e.
      arch/x86/kernel/apic/msi.c: pci_msi_controller) to set up the irqs, but
      actually pci_msi_setup_msi_irqs() is supposed to call
      msi_domain_alloc_irqs() with the hbus->irq_domain, which is created in
      hv_pcie_init_irq_domain() and is associated with the Hyper-V chip
      hv_msi_irq_chip. Consequently, the irq line is not properly set up, and
      the device driver can not receive any interrupt.
      
      Fixes: d59f6617 ("genirq: Allow fwnode to carry name information only")
      Fixes: 467a3bb9 ("PCI: hv: Allocate a named fwnode instead of an address-based one")
      Reported-by: default avatarLili Deng <v-lide@microsoft.com>
      Signed-off-by: default avatarDexuan Cui <decui@microsoft.com>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/PU1P153MB01694D9AF625AC335C600C5FBFBE0@PU1P153MB0169.APCP153.PROD.OUTLOOK.COM
      711419e5
  6. 30 Aug, 2019 6 commits
  7. 20 Aug, 2019 16 commits
  8. 07 Aug, 2019 8 commits
  9. 05 Aug, 2019 1 commit
  10. 04 Aug, 2019 1 commit