Skip to content

Commit

Permalink
PCI/AER: Use managed resource allocations
Browse files Browse the repository at this point in the history
Use the managed device resource allocations for the service data so the AER
driver doesn't need to manage it, further simplifying this driver.

Link: https://lore.kernel.org/linux-pci/20180918235848.26694-12-keith.busch@intel.com
Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
  • Loading branch information
Keith Busch authored and Bjorn Helgaas committed Oct 19, 2018
1 parent 6200cc5 commit 369fd7b
Showing 1 changed file with 5 additions and 12 deletions.
17 changes: 5 additions & 12 deletions drivers/pci/pcie/aer.c
Original file line number Diff line number Diff line change
Expand Up @@ -1367,11 +1367,7 @@ static void aer_remove(struct pcie_device *dev)
{
struct aer_rpc *rpc = get_service_data(dev);

if (rpc) {
aer_disable_rootport(rpc);
kfree(rpc);
set_service_data(dev, NULL);
}
aer_disable_rootport(rpc);
}

/**
Expand All @@ -1384,24 +1380,21 @@ static int aer_probe(struct pcie_device *dev)
{
int status;
struct aer_rpc *rpc;
struct device *device = &dev->port->dev;
struct device *device = &dev->device;

/* Alloc rpc data structure */
rpc = kzalloc(sizeof(struct aer_rpc), GFP_KERNEL);
rpc = devm_kzalloc(device, sizeof(struct aer_rpc), GFP_KERNEL);
if (!rpc) {
dev_printk(KERN_DEBUG, device, "alloc AER rpc failed\n");
return -ENOMEM;
}
rpc->rpd = dev->port;
set_service_data(dev, rpc);

/* Request IRQ ISR */
status = request_threaded_irq(dev->irq, aer_irq, aer_isr,
IRQF_SHARED, "aerdrv", dev);
status = devm_request_threaded_irq(device, dev->irq, aer_irq, aer_isr,
IRQF_SHARED, "aerdrv", dev);
if (status) {
dev_printk(KERN_DEBUG, device, "request AER IRQ %d failed\n",
dev->irq);
aer_remove(dev);
return status;
}

Expand Down

0 comments on commit 369fd7b

Please sign in to comment.