An error occurred fetching the project authors.
  1. 10 Oct, 2020 1 commit
    • Marc Zyngier's avatar
      genirq/irqdomain: Allow partial trimming of irq_data hierarchy · 55567976
      Marc Zyngier authored
      It appears that some HW is ugly enough that not all the interrupts
      connected to a particular interrupt controller end up with the same
      hierarchy depth (some of them are terminated early). This leaves
      the irqchip hacker with only two choices, both equally bad:
      
      - create discrete domain chains, one for each "hierarchy depth",
        which is very hard to maintain
      
      - create fake hierarchy levels for the shallow paths, leading
        to all kind of problems (what are the safe hwirq values for these
        fake levels?)
      
      Implement the ability to cut short a single interrupt hierarchy
      from a level marked as being disconnected by using the new
      irq_domain_disconnect_hierarchy() helper.
      
      The irqdomain allocation code will then perform the trimming
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      55567976
  2. 27 Jul, 2020 2 commits
  3. 21 May, 2020 3 commits
  4. 18 May, 2020 1 commit
  5. 08 Mar, 2020 2 commits
  6. 20 Jan, 2020 2 commits
  7. 04 Nov, 2019 1 commit
  8. 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
  9. 07 Aug, 2019 1 commit
    • Marc Zyngier's avatar
      irqdomain/debugfs: Use PAs to generate fwnode names · b977fcf4
      Marc Zyngier authored
      Booting a large arm64 server (HiSi D05) leads to the following
      shouting at boot time:
      
      [   20.722132] debugfs: File 'irqchip@(____ptrval____)-3' in directory 'domains' already present!
      [   20.730851] debugfs: File 'irqchip@(____ptrval____)-3' in directory 'domains' already present!
      [   20.739560] debugfs: File 'irqchip@(____ptrval____)-3' in directory 'domains' already present!
      [   20.748267] debugfs: File 'irqchip@(____ptrval____)-3' in directory 'domains' already present!
      [   20.756975] debugfs: File 'irqchip@(____ptrval____)-3' in directory 'domains' already present!
      [   20.765683] debugfs: File 'irqchip@(____ptrval____)-3' in directory 'domains' already present!
      [   20.774391] debugfs: File 'irqchip@(____ptrval____)-3' in directory 'domains' already present!
      
      and many more... Evidently, we expect something a bit more informative
      than ____ptrval____, and certainly we want all of our domains, not just
      the first one.
      
      For that, turn the %p used to generate the fwnode name into something
      that won't be repainted (%pa). Given that we've now fixed all users to
      pass a pointer to a PA, it will actually do the right thing.
      Acked-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      b977fcf4
  10. 06 Jul, 2019 1 commit
  11. 28 May, 2019 1 commit
  12. 29 Apr, 2019 1 commit
  13. 21 Feb, 2019 1 commit
    • Marc Zyngier's avatar
      irqdomain: Allow the default irq domain to be retrieved · 9f199dd3
      Marc Zyngier authored
      The default irq domain allows legacy code to create irqdomain
      mappings without having to track the domain it is allocating
      from. Setting the default domain is a one shot, fire and forget
      operation, and no effort was made to be able to retrieve this
      information at a later point in time.
      
      Newer irqdomain APIs (the hierarchical stuff) relies on both
      the irqchip code to track the irqdomain it is allocating from,
      as well as some form of firmware abstraction to easily identify
      which piece of HW maps to which irq domain (DT, ACPI).
      
      For systems without such firmware (or legacy platform that are
      getting dragged into the 21st century), things are a bit harder.
      For these cases (and these cases only!), let's provide a way
      to retrieve the default domain, allowing the use of the v2 API
      without having to resort to platform-specific hacks.
      Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      9f199dd3
  14. 13 Feb, 2019 1 commit
  15. 29 Jan, 2019 1 commit
  16. 19 Dec, 2018 1 commit
    • Dou Liyang's avatar
      genirq/core: Introduce struct irq_affinity_desc · bec04037
      Dou Liyang authored
      The interrupt affinity management uses straight cpumask pointers to convey
      the automatically assigned affinity masks for managed interrupts. The core
      interrupt descriptor allocation also decides based on the pointer being non
      NULL whether an interrupt is managed or not.
      
      Devices which use managed interrupts usually have two classes of
      interrupts:
      
        - Interrupts for multiple device queues
        - Interrupts for general device management
      
      Currently both classes are treated the same way, i.e. as managed
      interrupts. The general interrupts get the default affinity mask assigned
      while the device queue interrupts are spread out over the possible CPUs.
      
      Treating the general interrupts as managed is both a limitation and under
      certain circumstances a bug. Assume the following situation:
      
       default_irq_affinity = 4..7
      
      So if CPUs 4-7 are offlined, then the core code will shut down the device
      management interrupts because the last CPU in their affinity mask went
      offline.
      
      It's also a limitation because it's desired to allow manual placement of
      the general device interrupts for various reasons. If they are marked
      managed then the interrupt affinity setting from both user and kernel space
      is disabled.
      
      To remedy that situation it's required to convey more information than the
      cpumasks through various interfaces related to interrupt descriptor
      allocation.
      
      Instead of adding yet another argument, create a new data structure
      'irq_affinity_desc' which for now just contains the cpumask. This struct
      can be expanded to convey auxilliary information in the next step.
      
      No functional change, just preparatory work.
      
      [ tglx: Simplified logic and clarified changelog ]
      Suggested-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Suggested-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Signed-off-by: default avatarDou Liyang <douliyangs@gmail.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: linux-pci@vger.kernel.org
      Cc: kashyap.desai@broadcom.com
      Cc: shivasharan.srikanteshwara@broadcom.com
      Cc: sumit.saxena@broadcom.com
      Cc: ming.lei@redhat.com
      Cc: hch@lst.de
      Cc: douliyang1@huawei.com
      Link: https://lkml.kernel.org/r/20181204155122.6327-2-douliyangs@gmail.com
      bec04037
  17. 09 Oct, 2018 1 commit
  18. 01 Oct, 2018 2 commits
  19. 20 Mar, 2018 1 commit
  20. 16 Feb, 2018 1 commit
  21. 24 Jan, 2018 1 commit
  22. 29 Dec, 2017 1 commit
    • Thomas Gleixner's avatar
      genirq/irqdomain: Rename early argument of irq_domain_activate_irq() · 702cb0a0
      Thomas Gleixner authored
      The 'early' argument of irq_domain_activate_irq() is actually used to
      denote reservation mode. To avoid confusion, rename it before abuse
      happens.
      
      No functional change.
      
      Fixes: 72491643 ("genirq/irqdomain: Update irq_domain_ops.activate() signature")
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: Alexandru Chirvasitu <achirvasub@gmail.com>
      Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: Dou Liyang <douly.fnst@cn.fujitsu.com>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: Maciej W. Rozycki <macro@linux-mips.org>
      Cc: Mikael Pettersson <mikpelinux@gmail.com>
      Cc: Josh Poulson <jopoulso@microsoft.com>
      Cc: Mihai Costache <v-micos@microsoft.com>
      Cc: Stephen Hemminger <sthemmin@microsoft.com>
      Cc: Marc Zyngier <marc.zyngier@arm.com>
      Cc: linux-pci@vger.kernel.org
      Cc: Haiyang Zhang <haiyangz@microsoft.com>
      Cc: Dexuan Cui <decui@microsoft.com>
      Cc: Simon Xiao <sixiao@microsoft.com>
      Cc: Saeed Mahameed <saeedm@mellanox.com>
      Cc: Jork Loeser <Jork.Loeser@microsoft.com>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: devel@linuxdriverproject.org
      Cc: KY Srinivasan <kys@microsoft.com>
      Cc: Alan Cox <alan@linux.intel.com>
      Cc: Sakari Ailus <sakari.ailus@intel.com>,
      Cc: linux-media@vger.kernel.org
      702cb0a0
  23. 12 Nov, 2017 1 commit
  24. 19 Oct, 2017 2 commits
  25. 25 Sep, 2017 5 commits
  26. 25 Aug, 2017 1 commit
  27. 18 Aug, 2017 3 commits