Re: [PATCH v7 09/10] um: Add dummy implementation for IO memcpy/memset

From: Julian Vetter
Date: Mon Oct 07 2024 - 03:56:55 EST




On 10/1/24 14:53, Johannes Berg wrote:
On Mon, 2024-09-30 at 15:23 +0200, Julian Vetter wrote:
The um arch is the only architecture that sets the config 'NO_IOMEM',
yet drivers that use IO memory can be selected. In order to make these
drivers happy we add a dummy implementation for memcpy_{from,to}io and
memset_io functions.

Maybe I'm just not understanding this series, but how does this work
with lib/logic_iomem.c?

No, I think you're understanding the series correctly. It doesn't work. I will revert this.

You're adding these inlines unconditionally, so if this included
logic_io.h, you should get symbol conflicts?

Also not sure these functions should/need to do anything at all, there's
no IO memory on ARCH=um in case of not having logic_io.h. Maybe even
BUG_ON() or something? It can't be reachable (under correct drivers)
since ioremap() always returns NULL (without logic_iomem).

Thanks. You're right. I added this patch because there was a build robot on some mailinglist building a random config with 'ARCH=um' and with some MTD drivers that actually use memcpy_fromio or memcpy_toio. These drivers are not guarded by a 'depends on HAS_IOMEM'. I thought I could simply fix it by adding stub functions to the um arch. Because I saw there are A LOT of drivers that use IO functions without being guarded by 'depends on HAS_IOMEM'. Not sure though, how to handle this case.

I think Arnd also said that other architectures might want to use
logic_iomem, though I don't see any now.

johannes