mcb: mcb-pci: detect IO mapped devices before requesting resources
If the memory region is requested with devm_request_mem_region() for an IO mapped device it will return an error and mcb-pci will incorrectly report it with EBUSY code. Make sure we identify if the reosure is IO mapped and fail early with a correct ENOTSUPP code. Reviewed-by: Jose Javier Rodriguez Barbarin <JoseJavier.Rodriguez@duagon.com> Signed-off-by: Jorge Sanjuan Garcia <jorge.sanjuangarcia@duagon.com> Link: https://lore.kernel.org/r/20240523103430.423340-1-jorge.sanjuangarcia@duagon.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
10724d5d47
commit
a774c5d1f9
@ -45,6 +45,14 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||||||
}
|
}
|
||||||
pci_set_master(pdev);
|
pci_set_master(pdev);
|
||||||
|
|
||||||
|
flags = pci_resource_flags(pdev, 0);
|
||||||
|
if (flags & IORESOURCE_IO) {
|
||||||
|
ret = -ENOTSUPP;
|
||||||
|
dev_err(&pdev->dev,
|
||||||
|
"IO mapped PCI devices are not supported\n");
|
||||||
|
goto out_disable;
|
||||||
|
}
|
||||||
|
|
||||||
priv->mapbase = pci_resource_start(pdev, 0);
|
priv->mapbase = pci_resource_start(pdev, 0);
|
||||||
if (!priv->mapbase) {
|
if (!priv->mapbase) {
|
||||||
dev_err(&pdev->dev, "No PCI resource\n");
|
dev_err(&pdev->dev, "No PCI resource\n");
|
||||||
@ -68,14 +76,6 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||||||
goto out_disable;
|
goto out_disable;
|
||||||
}
|
}
|
||||||
|
|
||||||
flags = pci_resource_flags(pdev, 0);
|
|
||||||
if (flags & IORESOURCE_IO) {
|
|
||||||
ret = -ENOTSUPP;
|
|
||||||
dev_err(&pdev->dev,
|
|
||||||
"IO mapped PCI devices are not supported\n");
|
|
||||||
goto out_disable;
|
|
||||||
}
|
|
||||||
|
|
||||||
pci_set_drvdata(pdev, priv);
|
pci_set_drvdata(pdev, priv);
|
||||||
|
|
||||||
priv->bus = mcb_alloc_bus(&pdev->dev);
|
priv->bus = mcb_alloc_bus(&pdev->dev);
|
||||||
|
Loading…
Reference in New Issue
Block a user