Commit c80498e8 authored by Juxin Gao's avatar Juxin Gao Committed by Hongchen Zhang
Browse files

pci: irq: Add early_param pci_irq_limit to limit pci irq numbers

LoongArch inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I7AHL9



--------------------------------

Change-Id: Idce5400a65352d38f08d11548dfa43280cb71d03
Signed-off-by: default avatarJuxin Gao <gaojuxin@loongson.cn>
Signed-off-by: default avatarHongchen Zhang <zhanghongchen@loongson.cn>
parent de2a0c7f
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -1107,12 +1107,32 @@ int pci_msi_enabled(void)
}
EXPORT_SYMBOL(pci_msi_enabled);

#ifdef CONFIG_LOONGARCH
static unsigned int pci_irq_numbers = 32;

static int __init pci_irq_limit(char *str)
{
	get_option(&str, &pci_irq_numbers);

	if (pci_irq_numbers == 0)
		pci_irq_numbers = 32;
	return 0;
}

early_param("pci_irq_limit", pci_irq_limit);
#endif

static int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec,
				  struct irq_affinity *affd)
{
	int nvec;
	int rc;

#ifdef CONFIG_LOONGARCH
	if (maxvec > 32)
		maxvec = pci_irq_numbers;
#endif

	if (!pci_msi_supported(dev, minvec) || dev->current_state != PCI_D0)
		return -EINVAL;

@@ -1174,6 +1194,11 @@ static int __pci_enable_msix_range(struct pci_dev *dev,
{
	int rc, nvec = maxvec;

#ifdef CONFIG_LOONGARCH
	if (maxvec > 32)
		nvec = pci_irq_numbers;
#endif

	if (maxvec < minvec)
		return -ERANGE;