Message ID | 20170623215720.27057-1-palmer@dabbelt.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
[+cc Paul] On Fri, Jun 23, 2017 at 02:57:20PM -0700, Palmer Dabbelt wrote: > From: "Wesley W. Terpstra" <wesley@sifive.com> > > Without this patch we can't use the 4th legacy PCIe interrupt. This > is a workaround: there are only 4 legacy interrupts, but since they're > numbered starting from 1 instead of 0 this just adds a 5th interrupt. > > Signed-off-by: Palmer Dabbelt <palmer@dabbelt.com> > Signed-off-by: Wesley W. Terpstra <wesley@sifive.com> This is a duplicate of Paul Burton's patch, which we're still puzzling over here: http://lkml.kernel.org/r/20170712221455.GJ14614@bhelgaas-glaptop.roam.corp.google.com If you have comments, please chime in on that discussion so it's not fragmented between two threads. > --- > drivers/pci/host/pcie-xilinx.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/host/pcie-xilinx.c b/drivers/pci/host/pcie-xilinx.c > index 2fe2df51f9f8..8804145d399a 100644 > --- a/drivers/pci/host/pcie-xilinx.c > +++ b/drivers/pci/host/pcie-xilinx.c > @@ -443,7 +443,7 @@ static irqreturn_t xilinx_pcie_intr_handler(int irq, void *data) > val = ((val & XILINX_PCIE_RPIFR1_INTR_MASK) >> > XILINX_PCIE_RPIFR1_INTR_SHIFT) + 1; > generic_handle_irq(irq_find_mapping(port->leg_domain, > - val)); > + val + 1)); > } > } > > @@ -524,7 +524,7 @@ static int xilinx_pcie_init_irq_domain(struct xilinx_pcie_port *port) > return -ENODEV; > } > > - port->leg_domain = irq_domain_add_linear(pcie_intc_node, 4, > + port->leg_domain = irq_domain_add_linear(pcie_intc_node, 5, > &intx_domain_ops, > port); > if (!port->leg_domain) { > -- > 2.13.0 >
diff --git a/drivers/pci/host/pcie-xilinx.c b/drivers/pci/host/pcie-xilinx.c index 2fe2df51f9f8..8804145d399a 100644 --- a/drivers/pci/host/pcie-xilinx.c +++ b/drivers/pci/host/pcie-xilinx.c @@ -443,7 +443,7 @@ static irqreturn_t xilinx_pcie_intr_handler(int irq, void *data) val = ((val & XILINX_PCIE_RPIFR1_INTR_MASK) >> XILINX_PCIE_RPIFR1_INTR_SHIFT) + 1; generic_handle_irq(irq_find_mapping(port->leg_domain, - val)); + val + 1)); } } @@ -524,7 +524,7 @@ static int xilinx_pcie_init_irq_domain(struct xilinx_pcie_port *port) return -ENODEV; } - port->leg_domain = irq_domain_add_linear(pcie_intc_node, 4, + port->leg_domain = irq_domain_add_linear(pcie_intc_node, 5, &intx_domain_ops, port); if (!port->leg_domain) {