提交 ba6684fc 编写于 作者: J Juxin Gao 提交者: openeuler-sync-bot

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: NJuxin Gao <gaojuxin@loongson.cn>
Signed-off-by: NHongchen Zhang <zhanghongchen@loongson.cn>
(cherry picked from commit c80498e8)
上级 f45e867e
...@@ -1107,12 +1107,32 @@ int pci_msi_enabled(void) ...@@ -1107,12 +1107,32 @@ int pci_msi_enabled(void)
} }
EXPORT_SYMBOL(pci_msi_enabled); 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, static int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec,
struct irq_affinity *affd) struct irq_affinity *affd)
{ {
int nvec; int nvec;
int rc; int rc;
#ifdef CONFIG_LOONGARCH
if (maxvec > 32)
maxvec = pci_irq_numbers;
#endif
if (!pci_msi_supported(dev, minvec) || dev->current_state != PCI_D0) if (!pci_msi_supported(dev, minvec) || dev->current_state != PCI_D0)
return -EINVAL; return -EINVAL;
...@@ -1174,6 +1194,11 @@ static int __pci_enable_msix_range(struct pci_dev *dev, ...@@ -1174,6 +1194,11 @@ static int __pci_enable_msix_range(struct pci_dev *dev,
{ {
int rc, nvec = maxvec; int rc, nvec = maxvec;
#ifdef CONFIG_LOONGARCH
if (maxvec > 32)
nvec = pci_irq_numbers;
#endif
if (maxvec < minvec) if (maxvec < minvec)
return -ERANGE; return -ERANGE;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册