pci_iounmap'2: Electric Boogaloo: try to make sense of it all
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 20 Sep 2021 00:13:35 +0000 (17:13 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 20 Sep 2021 00:13:35 +0000 (17:13 -0700)
commit316e8d79a0959c302b0c462ab64b069599f10eef
treeefc46ca4f92669dc13bc79f86d8708c17e7c70d2
parent20621d2f27a0163b81dc2b74fd4c0b3e6aa5fa12
pci_iounmap'2: Electric Boogaloo: try to make sense of it all

Nathan Chancellor reports that the recent change to pci_iounmap in
commit 9caea0007601 ("parisc: Declare pci_iounmap() parisc version only
when CONFIG_PCI enabled") causes build errors on arm64.

It took me about two hours to convince myself that I think I know what
the logic of that mess of #ifdef's in the <asm-generic/io.h> header file
really aim to do, and rewrite it to be easier to follow.

Famous last words.

Anyway, the code has now been lifted from that grotty header file into
lib/pci_iomap.c, and has fairly extensive comments about what the logic
is.  It also avoids indirecting through another confusing (and badly
named) helper function that has other preprocessor config conditionals.

Let's see what odd architecture did something else strange in this area
to break things.  But my arm64 cross build is clean.

Fixes: 9caea0007601 ("parisc: Declare pci_iounmap() parisc version only when CONFIG_PCI enabled")
Reported-by: Nathan Chancellor <nathan@kernel.org>
Cc: Helge Deller <deller@gmx.de>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Ulrich Teichert <krypton@ulrich-teichert.org>
Cc: James Bottomley <James.Bottomley@hansenpartnership.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/asm-generic/io.h
lib/pci_iomap.c