linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 0/5] make use of gcc 9's "asm inline()"
@ 2019-08-29  8:32 Rasmus Villemoes
  2019-08-29  8:32 ` [RFC PATCH 1/5] treewide: replace __inline__ by inline Rasmus Villemoes
                   ` (7 more replies)
  0 siblings, 8 replies; 66+ messages in thread
From: Rasmus Villemoes @ 2019-08-29  8:32 UTC (permalink / raw)
  To: x86, linux-kernel
  Cc: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Nadav Amit,
	Linus Torvalds, Miguel Ojeda, ndesaulniers, Rasmus Villemoes

gcc 9 provides a way to override the otherwise crude heuristic that
gcc uses to estimate the size of the code represented by an asm()
statement. From the gcc docs

  If you use 'asm inline' instead of just 'asm', then for inlining
  purposes the size of the asm is taken as the minimum size, ignoring
  how many instructions GCC thinks it is.

For compatibility with older compilers, we obviously want a

  #if new enough
  #define asm_inline asm inline
  #else
  #define asm_inline asm
  #endif

But since we #define the identifier inline to attach some attributes,
we have to use the alternate spelling __inline__ of that
keyword. Unfortunately, we also currently #define that one (to
inline), so we first have to get rid of all (mis)uses of
__inline__. Hence the huge diffstat. I think patch 1 should be
regenerated and applied just before -rc1.

There are a few remaining users of __inline__, in particular in uapi
headers, which I'm not sure what to do about (kernel-side users of
those will get slightly different semantics since we no longer
automatically attach the __attribute__((__gnu_inline__)) etc.). So RFC.

The two x86 changes cause smaller code gen differences than I'd
expect, but I think we do want the asm_inline thing available sooner
or later, so this is just to get the ball rolling.

Rasmus Villemoes (5):
  treewide: replace __inline__ by inline
  compiler_types.h: don't #define __inline__
  compiler-gcc.h: add asm_inline definition
  x86: alternative.h: use asm_inline for all alternative variants
  x86: bug.h: use asm_inline in _BUG_FLAGS definitions

 arch/alpha/include/asm/atomic.h               | 12 +++---
 arch/alpha/include/asm/bitops.h               |  6 +--
 arch/alpha/include/asm/dma.h                  | 22 +++++-----
 arch/alpha/include/asm/floppy.h               |  2 +-
 arch/alpha/include/asm/irq.h                  |  2 +-
 arch/alpha/include/asm/local.h                |  4 +-
 arch/alpha/include/asm/smp.h                  |  2 +-
 .../arm/mach-iop32x/include/mach/uncompress.h |  2 +-
 .../arm/mach-iop33x/include/mach/uncompress.h |  2 +-
 .../arm/mach-ixp4xx/include/mach/uncompress.h |  2 +-
 arch/ia64/hp/common/sba_iommu.c               |  2 +-
 arch/ia64/hp/sim/simeth.c                     |  2 +-
 arch/ia64/include/asm/atomic.h                |  8 ++--
 arch/ia64/include/asm/bitops.h                | 34 ++++++++--------
 arch/ia64/include/asm/delay.h                 | 14 +++----
 arch/ia64/include/asm/irq.h                   |  2 +-
 arch/ia64/include/asm/page.h                  |  2 +-
 arch/ia64/include/asm/sn/leds.h               |  2 +-
 arch/ia64/include/asm/uaccess.h               |  4 +-
 arch/ia64/oprofile/backtrace.c                |  4 +-
 arch/m68k/include/asm/blinken.h               |  2 +-
 arch/m68k/include/asm/checksum.h              |  2 +-
 arch/m68k/include/asm/dma.h                   | 32 +++++++--------
 arch/m68k/include/asm/floppy.h                |  8 ++--
 arch/m68k/include/asm/nettel.h                |  8 ++--
 arch/m68k/mac/iop.c                           | 14 +++----
 arch/mips/include/asm/atomic.h                | 16 ++++----
 arch/mips/include/asm/checksum.h              |  2 +-
 arch/mips/include/asm/dma.h                   | 20 +++++-----
 arch/mips/include/asm/jazz.h                  |  2 +-
 arch/mips/include/asm/local.h                 |  4 +-
 arch/mips/include/asm/string.h                |  8 ++--
 arch/mips/kernel/binfmt_elfn32.c              |  2 +-
 arch/nds32/include/asm/swab.h                 |  4 +-
 arch/parisc/include/asm/atomic.h              | 20 +++++-----
 arch/parisc/include/asm/bitops.h              | 18 ++++-----
 arch/parisc/include/asm/checksum.h            |  4 +-
 arch/parisc/include/asm/compat.h              |  2 +-
 arch/parisc/include/asm/delay.h               |  2 +-
 arch/parisc/include/asm/dma.h                 | 20 +++++-----
 arch/parisc/include/asm/ide.h                 |  8 ++--
 arch/parisc/include/asm/irq.h                 |  2 +-
 arch/parisc/include/asm/spinlock.h            | 12 +++---
 arch/powerpc/include/asm/atomic.h             | 40 +++++++++----------
 arch/powerpc/include/asm/bitops.h             | 28 ++++++-------
 arch/powerpc/include/asm/dma.h                | 20 +++++-----
 arch/powerpc/include/asm/edac.h               |  2 +-
 arch/powerpc/include/asm/irq.h                |  2 +-
 arch/powerpc/include/asm/local.h              | 14 +++----
 arch/sh/include/asm/pgtable_64.h              |  2 +-
 arch/sh/include/asm/processor_32.h            |  4 +-
 arch/sh/include/cpu-sh3/cpu/dac.h             |  6 +--
 arch/x86/include/asm/alternative.h            | 14 +++----
 arch/x86/include/asm/bug.h                    |  4 +-
 arch/x86/um/asm/checksum.h                    |  4 +-
 arch/x86/um/asm/checksum_32.h                 |  4 +-
 arch/xtensa/include/asm/checksum.h            | 14 +++----
 arch/xtensa/include/asm/cmpxchg.h             |  4 +-
 arch/xtensa/include/asm/irq.h                 |  2 +-
 block/partitions/amiga.c                      |  2 +-
 drivers/atm/he.c                              |  6 +--
 drivers/atm/idt77252.c                        |  6 +--
 drivers/gpu/drm/mga/mga_drv.h                 |  2 +-
 drivers/gpu/drm/mga/mga_state.c               | 14 +++----
 drivers/gpu/drm/r128/r128_drv.h               |  2 +-
 drivers/gpu/drm/r128/r128_state.c             | 14 +++----
 drivers/gpu/drm/via/via_irq.c                 |  2 +-
 drivers/gpu/drm/via/via_verifier.c            | 30 +++++++-------
 drivers/media/pci/ivtv/ivtv-ioctl.c           |  2 +-
 drivers/net/ethernet/sun/sungem.c             |  8 ++--
 drivers/net/ethernet/sun/sunhme.c             |  6 +--
 drivers/net/hamradio/baycom_ser_fdx.c         |  2 +-
 drivers/net/wan/lapbether.c                   |  2 +-
 drivers/net/wan/n2.c                          |  4 +-
 drivers/parisc/led.c                          |  4 +-
 drivers/parisc/sba_iommu.c                    |  2 +-
 drivers/parport/parport_gsc.h                 |  4 +-
 drivers/scsi/lpfc/lpfc_scsi.c                 |  2 +-
 drivers/scsi/pcmcia/sym53c500_cs.c            |  4 +-
 drivers/scsi/qla2xxx/qla_inline.h             |  2 +-
 drivers/scsi/qla2xxx/qla_os.c                 |  2 +-
 drivers/tty/amiserial.c                       |  2 +-
 drivers/tty/serial/ip22zilog.c                |  2 +-
 drivers/tty/serial/sunsab.c                   |  4 +-
 drivers/tty/serial/sunzilog.c                 |  2 +-
 drivers/video/fbdev/core/fbcon.c              | 20 +++++-----
 drivers/video/fbdev/ffb.c                     |  2 +-
 drivers/video/fbdev/intelfb/intelfbdrv.c      |  8 ++--
 drivers/video/fbdev/intelfb/intelfbhw.c       |  2 +-
 drivers/w1/masters/matrox_w1.c                |  4 +-
 fs/coda/coda_linux.h                          |  6 +--
 fs/freevxfs/vxfs_inode.c                      |  2 +-
 fs/nfsd/nfsfh.h                               |  4 +-
 include/acpi/platform/acgcc.h                 |  2 +-
 include/asm-generic/ide_iops.h                |  8 ++--
 include/linux/atalk.h                         |  4 +-
 include/linux/compiler-gcc.h                  |  4 ++
 include/linux/compiler_types.h                |  5 ++-
 include/linux/hdlc.h                          |  4 +-
 include/linux/inetdevice.h                    |  6 +--
 include/linux/parport.h                       |  4 +-
 include/linux/parport_pc.h                    | 22 +++++-----
 include/net/ax25.h                            |  2 +-
 include/net/checksum.h                        |  2 +-
 include/net/dn_nsp.h                          | 16 ++++----
 include/net/ip.h                              |  2 +-
 include/net/ip6_checksum.h                    |  2 +-
 include/net/ipx.h                             | 10 ++---
 include/net/llc_c_ev.h                        |  4 +-
 include/net/llc_conn.h                        |  4 +-
 include/net/llc_s_ev.h                        |  2 +-
 include/net/netrom.h                          |  8 ++--
 include/net/scm.h                             | 14 +++----
 include/net/udplite.h                         |  2 +-
 include/net/x25.h                             |  8 ++--
 include/net/xfrm.h                            | 18 ++++-----
 include/video/newport.h                       | 12 +++---
 net/appletalk/atalk_proc.c                    |  4 +-
 net/appletalk/ddp.c                           |  2 +-
 net/core/neighbour.c                          |  2 +-
 net/core/scm.c                                |  2 +-
 net/decnet/dn_nsp_in.c                        |  2 +-
 net/decnet/dn_nsp_out.c                       |  2 +-
 net/decnet/dn_route.c                         |  2 +-
 net/decnet/dn_table.c                         |  4 +-
 net/ipv6/af_inet6.c                           |  2 +-
 net/ipv6/icmp.c                               |  4 +-
 net/ipv6/udp.c                                |  2 +-
 net/lapb/lapb_iface.c                         |  4 +-
 net/llc/llc_input.c                           |  2 +-
 sound/sparc/amd7930.c                         |  6 +--
 131 files changed, 449 insertions(+), 442 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 66+ messages in thread

end of thread, other threads:[~2019-09-29 10:41 UTC | newest]

Thread overview: 66+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-29  8:32 [RFC PATCH 0/5] make use of gcc 9's "asm inline()" Rasmus Villemoes
2019-08-29  8:32 ` [RFC PATCH 1/5] treewide: replace __inline__ by inline Rasmus Villemoes
2019-08-29 16:29   ` Joe Perches
2019-08-29  8:32 ` [RFC PATCH 2/5] compiler_types.h: don't #define __inline__ Rasmus Villemoes
2019-08-29  8:32 ` [RFC PATCH 3/5] compiler-gcc.h: add asm_inline definition Rasmus Villemoes
2019-08-29  8:32 ` [RFC PATCH 4/5] x86: alternative.h: use asm_inline for all alternative variants Rasmus Villemoes
2019-08-29  8:32 ` [RFC PATCH 5/5] x86: bug.h: use asm_inline in _BUG_FLAGS definitions Rasmus Villemoes
2019-08-29 16:05 ` [RFC PATCH 0/5] make use of gcc 9's "asm inline()" Linus Torvalds
2019-08-30  7:45   ` Rasmus Villemoes
2019-08-29 17:36 ` Nick Desaulniers
2019-08-29 18:15   ` Linus Torvalds
2019-08-29 18:26     ` Nadav Amit
2019-08-29 18:42     ` Borislav Petkov
2019-08-29 19:41   ` Masahiro Yamada
2019-08-30 23:15 ` [PATCH v2 0/6] " Rasmus Villemoes
2019-08-30 23:15   ` [PATCH v2 1/6] staging: rtl8723bs: replace __inline by inline Rasmus Villemoes
2019-09-04 23:54     ` Nick Desaulniers
2019-08-30 23:15   ` [PATCH v2 2/6] lib/zstd/mem.h: " Rasmus Villemoes
2019-09-04 23:59     ` Nick Desaulniers
2019-09-05  0:07       ` Miguel Ojeda
2019-09-05  9:28         ` Rasmus Villemoes
2019-08-30 23:15   ` [PATCH v2 3/6] compiler_types.h: don't #define __inline Rasmus Villemoes
2019-09-05  0:13     ` Nick Desaulniers
2019-09-05  9:45       ` Rasmus Villemoes
2019-08-30 23:15   ` [PATCH v2 4/6] compiler-gcc.h: add asm_inline definition Rasmus Villemoes
2019-09-05  0:18     ` Nick Desaulniers
2019-09-05  5:43       ` Nadav Amit
2019-09-05 11:07       ` Rasmus Villemoes
2019-09-05 13:45         ` Segher Boessenkool
2019-09-05 14:23           ` Rasmus Villemoes
2019-09-05 14:47             ` Segher Boessenkool
2019-09-05 15:52           ` Miguel Ojeda
2019-09-05 16:13             ` Miguel Ojeda
2019-09-06 12:23             ` Segher Boessenkool
2019-09-06 15:13               ` Miguel Ojeda
2019-09-06 16:30                 ` Segher Boessenkool
2019-09-06 16:39                   ` Jakub Jelinek
2019-09-06 18:14                     ` Nick Desaulniers
2019-09-06 22:03                       ` Segher Boessenkool
2019-09-06 22:35                         ` Nick Desaulniers
2019-09-06 22:56                           ` Segher Boessenkool
2019-09-06 23:42                             ` Nick Desaulniers
2019-09-07  0:14                               ` Segher Boessenkool
2019-09-07  1:04                                 ` Nick Desaulniers
2019-09-07 13:11                                   ` Segher Boessenkool
2019-09-08 13:55                                     ` Miguel Ojeda
2019-09-12 21:54                                     ` Nick Desaulniers
2019-09-12 22:12                                       ` Rasmus Villemoes
2019-09-20  0:50                                       ` Segher Boessenkool
2019-09-06 16:47                   ` Miguel Ojeda
2019-08-30 23:15   ` [PATCH v2 5/6] x86: alternative.h: use asm_inline for all alternative variants Rasmus Villemoes
2019-08-30 23:15   ` [PATCH v2 6/6] x86: bug.h: use asm_inline in _BUG_FLAGS definitions Rasmus Villemoes
2019-09-12 22:19   ` [PATCH v3 0/6] make use of gcc 9's "asm inline()" Rasmus Villemoes
2019-09-12 22:19     ` [PATCH v3 1/6] staging: rtl8723bs: replace __inline by inline Rasmus Villemoes
2019-09-29 10:40       ` Greg Kroah-Hartman
2019-09-12 22:19     ` [PATCH v3 2/6] lib/zstd/mem.h: " Rasmus Villemoes
2019-09-12 22:19     ` [PATCH v3 3/6] compiler_types.h: don't #define __inline Rasmus Villemoes
2019-09-12 22:19     ` [PATCH v3 4/6] compiler-types.h: add asm_inline definition Rasmus Villemoes
2019-09-12 22:19     ` [PATCH v3 5/6] x86: alternative.h: use asm_inline for all alternative variants Rasmus Villemoes
2019-09-13  5:41       ` Ingo Molnar
2019-09-12 22:19     ` [PATCH v3 6/6] x86: bug.h: use asm_inline in _BUG_FLAGS definitions Rasmus Villemoes
2019-09-13  5:42       ` Ingo Molnar
2019-09-12 22:30     ` [PATCH v3 0/6] make use of gcc 9's "asm inline()" Miguel Ojeda
2019-09-13  6:11       ` Rasmus Villemoes
2019-09-13 15:21         ` Greg Kroah-Hartman
2019-09-15 18:20           ` Miguel Ojeda

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).