irqchip updates for 5.0-rc3
- Add missing DT translation call in stm32-exti - Fix uninitialized mutex in the GICv3 MBI support code - Drop useless GPIO includes from the madera driver - Fix PCI Multi-MSI allocation with aliasing devices on GICv3 ITS -----BEGIN PGP SIGNATURE----- iQJJBAABCgAzFiEEn9UcU+C1Yxj9lZw9I9DQutE9ekMFAlxB5IUVHG1hcmMuenlu Z2llckBhcm0uY29tAAoJECPQ0LrRPXpD8ckP/Az7ZSYz+WGeVzENeAZ7zs0nFQN9 cG3KiLXaoi37e6sJL/d0UDwa653iXoIw9Uee7VLguGEEgmQgSqbGwhCaw68ZsApW Cq2gvaLDtv24Tn8z/LLghLJ/Gt/VyRn8E01QJcD6mxamHhy7T+Walyi/koChn+6C vu5SjHP75E9uzOa27qi1flSS9OuG2BqzZY9ZXrHkE/KHfT1lf69nbhDlOOdrQVf9 UAoUh3u+XLBwiKJJnWK8IvhBdsAHjthDrNDJ6n+SPFmKMfAu0RfH0nkzApXjJiWG vwnV08vdrT3yic0Z6YjYsnl08yBijKuPE3/3rNEJJ60YCxWaCg3gt7lt3I2F7VmS 9rstvSXKmOiXF/JN6gE6kj48f+U0icodtvEMPpSuZXXhL/IBSRWZZpAKclehvtjm izr57ndB/NoOIkP9nKgSvLMA2OA4iM8PCSLsCzrkrN4rJXAF319ruZHbOCGVd7gK 4eXaP0kRYGOsIeoc2L6xfR+VUG5iRXXMnFbjWFVEYF3f0v4SA+ALBXjdOzKxt48N YFTBj6gDgE+bhZtJfO57uIuOfcBBzSFeaIMaAuav+LAdX3IT3xaU9YyDK73xpAjt kaN/AacVg6EzqdI97F8a6Sa0xkuO8LdqD64VopQl2/fmH2Ez6MINAGVMpk3IAALX FxmfIwT7veiDq9qx =ZA7f -----END PGP SIGNATURE----- Merge tag 'irqchip-5.0-2' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into irq/urgent Pull irqchip updates from Marc Zyngier - Add missing DT translation call in stm32-exti - Fix uninitialized mutex in the GICv3 MBI support code - Drop useless GPIO includes from the madera driver - Fix PCI Multi-MSI allocation with aliasing devices on GICv3 ITS
This commit is contained in:
Коммит
37b144df80
|
@ -2399,13 +2399,14 @@ static void its_free_device(struct its_device *its_dev)
|
|||
kfree(its_dev);
|
||||
}
|
||||
|
||||
static int its_alloc_device_irq(struct its_device *dev, irq_hw_number_t *hwirq)
|
||||
static int its_alloc_device_irq(struct its_device *dev, int nvecs, irq_hw_number_t *hwirq)
|
||||
{
|
||||
int idx;
|
||||
|
||||
idx = find_first_zero_bit(dev->event_map.lpi_map,
|
||||
dev->event_map.nr_lpis);
|
||||
if (idx == dev->event_map.nr_lpis)
|
||||
idx = bitmap_find_free_region(dev->event_map.lpi_map,
|
||||
dev->event_map.nr_lpis,
|
||||
get_count_order(nvecs));
|
||||
if (idx < 0)
|
||||
return -ENOSPC;
|
||||
|
||||
*hwirq = dev->event_map.lpi_base + idx;
|
||||
|
@ -2501,21 +2502,21 @@ static int its_irq_domain_alloc(struct irq_domain *domain, unsigned int virq,
|
|||
int err;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < nr_irqs; i++) {
|
||||
err = its_alloc_device_irq(its_dev, &hwirq);
|
||||
if (err)
|
||||
return err;
|
||||
err = its_alloc_device_irq(its_dev, nr_irqs, &hwirq);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = its_irq_gic_domain_alloc(domain, virq + i, hwirq);
|
||||
for (i = 0; i < nr_irqs; i++) {
|
||||
err = its_irq_gic_domain_alloc(domain, virq + i, hwirq + i);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
irq_domain_set_hwirq_and_chip(domain, virq + i,
|
||||
hwirq, &its_irq_chip, its_dev);
|
||||
hwirq + i, &its_irq_chip, its_dev);
|
||||
irqd_set_single_target(irq_desc_get_irq_data(irq_to_desc(virq + i)));
|
||||
pr_debug("ID:%d pID:%d vID:%d\n",
|
||||
(int)(hwirq - its_dev->event_map.lpi_base),
|
||||
(int) hwirq, virq + i);
|
||||
(int)(hwirq + i - its_dev->event_map.lpi_base),
|
||||
(int)(hwirq + i), virq + i);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -24,7 +24,7 @@ struct mbi_range {
|
|||
unsigned long *bm;
|
||||
};
|
||||
|
||||
static struct mutex mbi_lock;
|
||||
static DEFINE_MUTEX(mbi_lock);
|
||||
static phys_addr_t mbi_phys_base;
|
||||
static struct mbi_range *mbi_ranges;
|
||||
static unsigned int mbi_range_nr;
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/irqdomain.h>
|
||||
|
@ -16,7 +15,6 @@
|
|||
#include <linux/slab.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/irqchip/irq-madera.h>
|
||||
#include <linux/mfd/madera/core.h>
|
||||
|
|
|
@ -822,6 +822,7 @@ out_unmap:
|
|||
static const struct irq_domain_ops stm32_exti_h_domain_ops = {
|
||||
.alloc = stm32_exti_h_domain_alloc,
|
||||
.free = irq_domain_free_irqs_common,
|
||||
.xlate = irq_domain_xlate_twocell,
|
||||
};
|
||||
|
||||
static int
|
||||
|
|
Загрузка…
Ссылка в новой задаче