On Sun, Mar 17, 2019 at 1:06 AM <marek.vasut@xxxxxxxxx> wrote: > From: Marek Vasut <marek.vasut+renesas@xxxxxxxxx> > > The MSI address can be 64bit. Switch the data type used to hold the > result of virt_to_phys() to phys_addr_t to reflect it's properties Side note: probably this should use a proper DMA API instead of get_free_pages()/virt_to_phys(). > correctly and program the top 32bits of PA into PCIEMSIAUR. > > Signed-off-by: Marek Vasut <marek.vasut+renesas@xxxxxxxxx> Reviewed-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > --- a/drivers/pci/controller/pcie-rcar.c > +++ b/drivers/pci/controller/pcie-rcar.c > @@ -930,7 +930,7 @@ static int rcar_pcie_enable_msi(struct rcar_pcie *pcie) > base = virt_to_phys((void *)msi->pages); > > rcar_pci_write_reg(pcie, base | MSIFE, PCIEMSIALR); > - rcar_pci_write_reg(pcie, 0, PCIEMSIAUR); > + rcar_pci_write_reg(pcie, base >> 32, PCIEMSIAUR); Note that his register is now non-zero. According to the documentation, clearing PCIEMSIALR.MSIFE should be sufficient to disable MSI, and thus there's no need to zero PCIEMSIAUR in rcar_pcie_teardown_msi(). So nothing to change there, good. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds