Message ID | 20241007-b4-has_ioport-v6-0-03f7240da6e5@linux.ibm.com |
---|---|
Headers | show |
Series | treewide: Remove I/O port accessors for HAS_IOPORT=n | expand |
On Mon, Oct 7, 2024, at 11:40, Niklas Schnelle wrote: > Hi All, > > This is a follow up in my long running effort of making inb()/outb() and > similar I/O port accessors compile-time optional. After initially > sending this as a treewide series with the latest revision at[0] > we switched to per subsystem series. Now though as we're left with only > 5 patches left I'm going back to a single series with Arnd planning > to take this via the the asm-generic tree. > > This series may also be viewed for your convenience on my git.kernel.org > tree[1] under the b4/has_ioport branch. As for compile-time vs runtime > see Linus' reply to my first attempt[2]. This all looks good to me and I'd like to merge it all in the asm-generic tree in the next few days, assuming nobody has any further objections. If something breaks, we can fix it with a patch on top. I have a few more patches make it possible to build arm64 kernels without CONFIG_HAS_IOPORT, but we don't need them as part of your series and can merge them through driver trees independently. Arnd
On Mon, Oct 7, 2024, at 14:39, Lucas De Marchi wrote: > as an example: > $ git grep -lw outb -- drivers/gpu/drm/ > drivers/gpu/drm/gma500/cdv_device.c > drivers/gpu/drm/i915/display/intel_vga.c > drivers/gpu/drm/qxl/qxl_cmd.c > drivers/gpu/drm/qxl/qxl_irq.c > drivers/gpu/drm/tiny/bochs.c > drivers/gpu/drm/tiny/cirrus.c > > you are adding the dependency on xe, but why are you keeping i915 out? > What approach did you use to determine the dependency? I did a lot of 'randconfig' build testing on earlier versions (and this version) of the series, which eventually catches all of them. The i915 driver depends on CONfIG_X86 since it is only used in Intel PC chipsets that already rely on PIO. The XE driver is also used for add-on cards, so the drivers can be built on all architectures including those that do not support PCI I/O space access. Adding the dependency on i915 as well wouldn't be wrong, but is not required for correctness. I also sent a patch for vmwgfx, which can be used on arm64. arm64 currently always sets HAS_IOPORT, so my patch is not required as a dependency for [PATCH v6 5/5], but we eventually want this so HAS_IOPORT can become optional on arm64. Arnd
Hi All, This is a follow up in my long running effort of making inb()/outb() and similar I/O port accessors compile-time optional. After initially sending this as a treewide series with the latest revision at[0] we switched to per subsystem series. Now though as we're left with only 5 patches left I'm going back to a single series with Arnd planning to take this via the the asm-generic tree. This series may also be viewed for your convenience on my git.kernel.org tree[1] under the b4/has_ioport branch. As for compile-time vs runtime see Linus' reply to my first attempt[2]. Thanks, Niklas [0] https://lore.kernel.org/all/20230522105049.1467313-1-schnelle@linux.ibm.com/ [1] https://git.kernel.org/pub/scm/linux/kernel/git/niks/linux.git [2] https://lore.kernel.org/lkml/CAHk-=wg80je=K7madF4e7WrRNp37e3qh6y10Svhdc7O8SZ_-8g@mail.gmail.com/ Changes since v5 / per subsystem patches: drm: - Add HAS_IOPORT dependency for GMA500 tty: serial: - Make 8250 PCI driver emit an error message when trying to use devices which require I/O ports without CONFIG_HAS_IOPORT (Maciej) - Use early returns + dead code elimination to skip inb()/outb() uses in quirks (Arnd) - In 8250 PCI driver also handle fintek and moxi quirks - In 8250 ports code handle um's defined(__i385__) && defined(CONFIG_HAS_IOPORT) case - Use IS_ENABLED() early return also in is_upf_fourport() __always_inline to force constant folding Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com> --- Niklas Schnelle (5): hexagon: Don't select GENERIC_IOMAP without HAS_IOPORT support Bluetooth: add HAS_IOPORT dependencies drm: handle HAS_IOPORT dependencies tty: serial: handle HAS_IOPORT dependencies asm-generic/io.h: Remove I/O port accessors for HAS_IOPORT=n arch/hexagon/Kconfig | 1 - drivers/bluetooth/Kconfig | 6 ++-- drivers/gpu/drm/gma500/Kconfig | 2 +- drivers/gpu/drm/qxl/Kconfig | 1 + drivers/gpu/drm/tiny/bochs.c | 17 ++++++++++ drivers/gpu/drm/tiny/cirrus.c | 2 ++ drivers/gpu/drm/xe/Kconfig | 2 +- drivers/tty/Kconfig | 4 +-- drivers/tty/serial/8250/8250_early.c | 4 +++ drivers/tty/serial/8250/8250_pci.c | 49 +++++++++++++++++++++++++++- drivers/tty/serial/8250/8250_pcilib.c | 4 +++ drivers/tty/serial/8250/8250_port.c | 47 +++++++++++++++++++++------ drivers/tty/serial/8250/Kconfig | 4 +-- drivers/tty/serial/Kconfig | 2 +- include/asm-generic/io.h | 60 +++++++++++++++++++++++++++++++++++ 15 files changed, 183 insertions(+), 22 deletions(-) --- base-commit: 8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b change-id: 20241004-b4-has_ioport-60ac6ce1deb6 Best regards,