On Fri, 2023-11-03 at 19:25 +0100, Philipp Stanner wrote: > Currently, tha ast-driver just maps the PCI-dev's regions with > pcim_iomap(). It does not actually reserve the regions exclusively > with, e.g., pci_request_regions(). > > Replace the calls to pcim_iomap() with ones to pcim_iomap_regions() > to > reserve and map the regions simultaneously. > > Suggested-by: Thomas Zimmermann <tzimmermann@xxxxxxx> > Signed-off-by: Philipp Stanner <pstanner@xxxxxxxxxx> Thinking about this once more, I guess we could postpone merging it. I'm a bit unhappy with the pcim_* functions as they're currently implemented and might soon start working on a replacement. Depending on that work, this Patch here might soon be obsolete / outdated anyways. But merging wouldn't hurt on the other hand, as I have to send a new one in any case. I leave that up to the maintainer. See also here [1] if interested. P. [1] https://lore.kernel.org/all/84be1049e41283cf8a110267646320af9ffe59fe.camel@xxxxxxxxxx/ > --- > Changes in v2: > - Remove unnecessary return code checks for pcim_iomap_regions() > (Jocelyn) > > Thx Jocelyn for the kind review > --- > drivers/gpu/drm/ast/ast_main.c | 15 +++++++++------ > 1 file changed, 9 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/ast/ast_main.c > b/drivers/gpu/drm/ast/ast_main.c > index dae365ed3969..8b714b99f9d6 100644 > --- a/drivers/gpu/drm/ast/ast_main.c > +++ b/drivers/gpu/drm/ast/ast_main.c > @@ -444,9 +444,11 @@ struct ast_device *ast_device_create(const > struct drm_driver *drv, > if (ret) > return ERR_PTR(ret); > > - ast->regs = pcim_iomap(pdev, 1, 0); > - if (!ast->regs) > - return ERR_PTR(-EIO); > + ret = pcim_iomap_regions(pdev, BIT(1), 0); > + if (ret) > + return ERR_PTR(ret); > + > + ast->regs = pcim_iomap_table(pdev)[1]; > > /* > * After AST2500, MMIO is enabled by default, and it should > be adopted > @@ -461,9 +463,10 @@ struct ast_device *ast_device_create(const > struct drm_driver *drv, > > /* "map" IO regs if the above hasn't done so already */ > if (!ast->ioregs) { > - ast->ioregs = pcim_iomap(pdev, 2, 0); > - if (!ast->ioregs) > - return ERR_PTR(-EIO); > + ret = pcim_iomap_regions(pdev, BIT(2), 0); > + if (ret) > + return ERR_PTR(ret); > + ast->ioregs = pcim_iomap_table(pdev)[2]; > } > > if (!ast_is_vga_enabled(dev)) {