Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f5f155f4 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Revert "PCI/MSI: Protect msi_desc::masked for multi-MSI"



This reverts commit ec25d05e which is
commit 77e89afc25f30abd56e76a809ee2884d7c1b63ce upstream.

It breaks the Android KABI and is not needed for any current Android
hardware devices, so can be safely reverted.

Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
Change-Id: If4d9769c8cbfca6872c9a745fec8ab28bc39199e
parent 5395faca
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -2386,7 +2386,6 @@ void device_initialize(struct device *dev)
	device_pm_init(dev);
	device_pm_init(dev);
	set_dev_node(dev, -1);
	set_dev_node(dev, -1);
#ifdef CONFIG_GENERIC_MSI_IRQ
#ifdef CONFIG_GENERIC_MSI_IRQ
	raw_spin_lock_init(&dev->msi_lock);
	INIT_LIST_HEAD(&dev->msi_list);
	INIT_LIST_HEAD(&dev->msi_list);
#endif
#endif
	INIT_LIST_HEAD(&dev->links.consumers);
	INIT_LIST_HEAD(&dev->links.consumers);
+9 −10
Original line number Original line Diff line number Diff line
@@ -170,25 +170,24 @@ static inline __attribute_const__ u32 msi_mask(unsigned x)
 * reliably as devices without an INTx disable bit will then generate a
 * reliably as devices without an INTx disable bit will then generate a
 * level IRQ which will never be cleared.
 * level IRQ which will never be cleared.
 */
 */
void __pci_msi_desc_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
u32 __pci_msi_desc_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
{
{
	raw_spinlock_t *lock = &desc->dev->msi_lock;
	u32 mask_bits = desc->masked;
	unsigned long flags;


	if (pci_msi_ignore_mask || !desc->msi_attrib.maskbit)
	if (pci_msi_ignore_mask || !desc->msi_attrib.maskbit)
		return;
		return 0;


	raw_spin_lock_irqsave(lock, flags);
	mask_bits &= ~mask;
	desc->masked &= ~mask;
	mask_bits |= flag;
	desc->masked |= flag;
	pci_write_config_dword(msi_desc_to_pci_dev(desc), desc->mask_pos,
	pci_write_config_dword(msi_desc_to_pci_dev(desc), desc->mask_pos,
			       desc->masked);
			       mask_bits);
	raw_spin_unlock_irqrestore(lock, flags);

	return mask_bits;
}
}


static void msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
static void msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
{
{
	__pci_msi_desc_mask_irq(desc, mask, flag);
	desc->masked = __pci_msi_desc_mask_irq(desc, mask, flag);
}
}


static void __iomem *pci_msix_desc_addr(struct msi_desc *desc)
static void __iomem *pci_msix_desc_addr(struct msi_desc *desc)
+0 −1
Original line number Original line Diff line number Diff line
@@ -1282,7 +1282,6 @@ struct device {
	struct dev_pin_info	*pins;
	struct dev_pin_info	*pins;
#endif
#endif
#ifdef CONFIG_GENERIC_MSI_IRQ
#ifdef CONFIG_GENERIC_MSI_IRQ
	raw_spinlock_t		msi_lock;
	struct list_head	msi_list;
	struct list_head	msi_list;
#endif
#endif


+1 −1
Original line number Original line Diff line number Diff line
@@ -194,7 +194,7 @@ void __pci_read_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
void __pci_write_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
void __pci_write_msi_msg(struct msi_desc *entry, struct msi_msg *msg);


u32 __pci_msix_desc_mask_irq(struct msi_desc *desc, u32 flag);
u32 __pci_msix_desc_mask_irq(struct msi_desc *desc, u32 flag);
void __pci_msi_desc_mask_irq(struct msi_desc *desc, u32 mask, u32 flag);
u32 __pci_msi_desc_mask_irq(struct msi_desc *desc, u32 mask, u32 flag);
void pci_msi_mask_irq(struct irq_data *data);
void pci_msi_mask_irq(struct irq_data *data);
void pci_msi_unmask_irq(struct irq_data *data);
void pci_msi_unmask_irq(struct irq_data *data);