Whoops! Reviewed-by: Alyssa Rosenzweig <alyssa@xxxxxxxxxxxxx> March 11, 2023 8:34 AM, "Sven Peter" <sven@xxxxxxxxxxxxx> wrote: > apple_pcie_setup_port computes ilog2(pcie->nvecs) to setup the number of > MSIs available for each port. It is however called before apple_msi_init > which actually initializes pcie->nvecs. > Luckily, pcie->nvecs is part of kzalloc-ed structure and thus > initialized as zero. ilog2(0) happens to be 0xffffffff which then just > configures more MSIs in hardware than we actually have. This doesn't > break anything because we never hand out those vectors. > Let's swap the order of the two calls so that we use the correctly > initialized value. > > Fixes: 476c41ed4597 ("PCI: apple: Implement MSI support") > Signed-off-by: Sven Peter <sven@xxxxxxxxxxxxx> > --- > drivers/pci/controller/pcie-apple.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c > index 66f37e403a09..8b7b084cf287 100644 > --- a/drivers/pci/controller/pcie-apple.c > +++ b/drivers/pci/controller/pcie-apple.c > @@ -783,6 +783,10 @@ static int apple_pcie_init(struct pci_config_window *cfg) > cfg->priv = pcie; > INIT_LIST_HEAD(&pcie->ports); > > + ret = apple_msi_init(pcie); > + if (ret) > + return ret; > + > for_each_child_of_node(dev->of_node, of_port) { > ret = apple_pcie_setup_port(pcie, of_port); > if (ret) { > @@ -792,7 +796,7 @@ static int apple_pcie_init(struct pci_config_window *cfg) > } > } > > - return apple_msi_init(pcie); > + return 0; > } > > static int apple_pcie_probe(struct platform_device *pdev) > -- > 2.25.1