Merge branch 'remotes/lorenzo/pci/xilinx'
- Check for __get_free_pages() failure in xilinx (Kangjie Lu) * remotes/lorenzo/pci/xilinx: PCI: xilinx: Check for __get_free_pages() failure
This commit is contained in:
commit
ed0eaf3205
|
@ -336,14 +336,19 @@ static const struct irq_domain_ops msi_domain_ops = {
|
||||||
* xilinx_pcie_enable_msi - Enable MSI support
|
* xilinx_pcie_enable_msi - Enable MSI support
|
||||||
* @port: PCIe port information
|
* @port: PCIe port information
|
||||||
*/
|
*/
|
||||||
static void xilinx_pcie_enable_msi(struct xilinx_pcie_port *port)
|
static int xilinx_pcie_enable_msi(struct xilinx_pcie_port *port)
|
||||||
{
|
{
|
||||||
phys_addr_t msg_addr;
|
phys_addr_t msg_addr;
|
||||||
|
|
||||||
port->msi_pages = __get_free_pages(GFP_KERNEL, 0);
|
port->msi_pages = __get_free_pages(GFP_KERNEL, 0);
|
||||||
|
if (!port->msi_pages)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
msg_addr = virt_to_phys((void *)port->msi_pages);
|
msg_addr = virt_to_phys((void *)port->msi_pages);
|
||||||
pcie_write(port, 0x0, XILINX_PCIE_REG_MSIBASE1);
|
pcie_write(port, 0x0, XILINX_PCIE_REG_MSIBASE1);
|
||||||
pcie_write(port, msg_addr, XILINX_PCIE_REG_MSIBASE2);
|
pcie_write(port, msg_addr, XILINX_PCIE_REG_MSIBASE2);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* INTx Functions */
|
/* INTx Functions */
|
||||||
|
@ -498,6 +503,7 @@ static int xilinx_pcie_init_irq_domain(struct xilinx_pcie_port *port)
|
||||||
struct device *dev = port->dev;
|
struct device *dev = port->dev;
|
||||||
struct device_node *node = dev->of_node;
|
struct device_node *node = dev->of_node;
|
||||||
struct device_node *pcie_intc_node;
|
struct device_node *pcie_intc_node;
|
||||||
|
int ret;
|
||||||
|
|
||||||
/* Setup INTx */
|
/* Setup INTx */
|
||||||
pcie_intc_node = of_get_next_child(node, NULL);
|
pcie_intc_node = of_get_next_child(node, NULL);
|
||||||
|
@ -526,7 +532,9 @@ static int xilinx_pcie_init_irq_domain(struct xilinx_pcie_port *port)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
xilinx_pcie_enable_msi(port);
|
ret = xilinx_pcie_enable_msi(port);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue