On 4/23/20 5:05 PM, Andy Shevchenko wrote: > On Thu, Apr 23, 2020 at 5:55 PM Bartlomiej Zolnierkiewicz > <b.zolnierkie@xxxxxxxxxxx> wrote: > >>> + if (err) >>> + iounmap((void *)npregs); >> >> Looks OK but while you are at it, could you please also add missing >> release_mem_region() on error and on device removal: >> >> newport_addr = dev->resource.start + 0xF0000; >> if (!request_mem_region(newport_addr, 0x10000, "Newport")) >> return -ENODEV; >> >> npregs = (struct newport_regs *)/* ioremap cannot fail */ >> ioremap(newport_addr, sizeof(struct newport_regs)); >> console_lock(); >> err = do_take_over_console(&newport_con, 0, MAX_NR_CONSOLES - 1, 1); >> console_unlock(); >> return err; >> } >> >> static void newport_remove(struct gio_device *dev) >> { >> give_up_console(&newport_con); >> iounmap((void *)npregs); >> } >> >> ? > > Don't you think that proper solution is rather switch to memremap()? Doesn't seem to be a case here (used memory region in uncached). On MIPS (this is MIPS-only driver): ... #define ioremap(offset, size) \ __ioremap_mode((offset), (size), _CACHE_UNCACHED) #define ioremap_uc ioremap ... While memremap() is only for cacheable memory: ... * memremap() - remap an iomem_resource as cacheable memory * @offset: iomem resource start address * @size: size of remap * @flags: any of MEMREMAP_WB, MEMREMAP_WT, MEMREMAP_WC, * MEMREMAP_ENC, MEMREMAP_DEC ... >>> return err; >>> } > Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel