mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
pci: msi: pass pdev to pci_enable_msi() function
Previously pci_enable_msi() function obtained pdev pointer by itself, but taking into account upcoming changes to PCI locking, it is better when caller passes already acquired pdev pointer to the function, because caller knows better how to obtain the pointer and which locks are needed to be used. Also, in most cases caller already has pointer to pdev, so we can avoid an extra list walk. Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
94039d97e2
commit
f4d0859da3
4 files changed
+17
-12
No files matched your search
@@ -81,7 +81,8 @@ struct irq_desc;
|
||||
struct hw_interrupt_type;
|
||||
struct msi_desc;
|
||||
/* Helper functions */
|
||||
extern int pci_enable_msi(struct msi_info *msi, struct msi_desc **desc);
|
||||
extern int pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
|
||||
struct msi_desc **desc);
|
||||
extern void pci_disable_msi(struct msi_desc *msi_desc);
|
||||
extern int pci_prepare_msix(u16 seg, u8 bus, u8 devfn, bool off);
|
||||
extern void pci_cleanup_msi(struct pci_dev *pdev);
|
||||
|
||||
+1
-1
@@ -2176,7 +2176,7 @@ int map_domain_pirq(
|
||||
if ( !pdev )
|
||||
goto done;
|
||||
|
||||
ret = pci_enable_msi(msi, &msi_desc);
|
||||
ret = pci_enable_msi(pdev, msi, &msi_desc);
|
||||
if ( ret )
|
||||
{
|
||||
if ( ret > 0 )
|
||||
|
||||
+10
-9
@@ -983,13 +983,13 @@ static int msix_capability_init(struct pci_dev *dev,
|
||||
* irq or non-zero for otherwise.
|
||||
**/
|
||||
|
||||
static int __pci_enable_msi(struct msi_info *msi, struct msi_desc **desc)
|
||||
static int __pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
|
||||
struct msi_desc **desc)
|
||||
{
|
||||
struct pci_dev *pdev;
|
||||
struct msi_desc *old_desc;
|
||||
|
||||
ASSERT(pcidevs_locked());
|
||||
pdev = pci_get_pdev(NULL, msi->sbdf);
|
||||
|
||||
if ( !pdev )
|
||||
return -ENODEV;
|
||||
|
||||
@@ -1038,13 +1038,13 @@ static void __pci_disable_msi(struct msi_desc *entry)
|
||||
* of irqs available. Driver should use the returned value to re-send
|
||||
* its request.
|
||||
**/
|
||||
static int __pci_enable_msix(struct msi_info *msi, struct msi_desc **desc)
|
||||
static int __pci_enable_msix(struct pci_dev *pdev, struct msi_info *msi,
|
||||
struct msi_desc **desc)
|
||||
{
|
||||
struct pci_dev *pdev;
|
||||
struct msi_desc *old_desc;
|
||||
|
||||
ASSERT(pcidevs_locked());
|
||||
pdev = pci_get_pdev(NULL, msi->sbdf);
|
||||
|
||||
if ( !pdev || !pdev->msix )
|
||||
return -ENODEV;
|
||||
|
||||
@@ -1151,15 +1151,16 @@ int pci_prepare_msix(u16 seg, u8 bus, u8 devfn, bool off)
|
||||
* Notice: only construct the msi_desc
|
||||
* no change to irq_desc here, and the interrupt is masked
|
||||
*/
|
||||
int pci_enable_msi(struct msi_info *msi, struct msi_desc **desc)
|
||||
int pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
|
||||
struct msi_desc **desc)
|
||||
{
|
||||
ASSERT(pcidevs_locked());
|
||||
|
||||
if ( !use_msi )
|
||||
return -EPERM;
|
||||
|
||||
return msi->table_base ? __pci_enable_msix(msi, desc) :
|
||||
__pci_enable_msi(msi, desc);
|
||||
return msi->table_base ? __pci_enable_msix(pdev, msi, desc) :
|
||||
__pci_enable_msi(pdev, msi, desc);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -448,10 +448,13 @@ static void __init cf_check ns16550_init_postirq(struct serial_port *port)
|
||||
if ( rc > 0 )
|
||||
{
|
||||
struct msi_desc *msi_desc = NULL;
|
||||
struct pci_dev *pdev;
|
||||
|
||||
pcidevs_lock();
|
||||
|
||||
rc = pci_enable_msi(&msi, &msi_desc);
|
||||
pdev = pci_get_pdev(NULL, msi.sbdf);
|
||||
rc = pdev ? pci_enable_msi(pdev, &msi, &msi_desc) : -ENODEV;
|
||||
|
||||
if ( !rc )
|
||||
{
|
||||
struct irq_desc *desc = irq_to_desc(msi.irq);
|
||||
|
||||