From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-yw1-f173.google.com (mail-yw1-f173.google.com [209.85.128.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0FB33142E83 for ; Thu, 25 Dec 2025 17:09:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.173 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766682576; cv=none; b=h/XDgwWjs1N8DJ5LbbqSTABXwBU0AlK8fuaFQ8BpKzXJE50nVVyXthrBB62gAjLbacvVymmUcbdPwKMzPKDgm29dmBiqMtDSL/393Xf92bcJ33eKwO67UEDgSmihY/naNJL5f7XP2iT+l3ugTfaN3Zcg68WEnHpwAQKAjOsRCh0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766682576; c=relaxed/simple; bh=64FglmTS1OdF+V/prIMfTt+1sXoKkHP+6lT5SmSOBdk=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=eR5H768+a4ADuZyj8Nln26vKcKPGCqaWM9W2wdW62gwV1NXWzpMfVJiI8oEchqwS9J4CgfYHWqLKdMuY0vCfaJ+wbW9I73cLcgwC77LvyW8jlfIfUfYb6GFK0bpfgs+UzzBfhvpTgdABDCX4RtG2EF64/qS6TESO9xg5r4yLmvM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IVk2ENsc; arc=none smtp.client-ip=209.85.128.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IVk2ENsc" Received: by mail-yw1-f173.google.com with SMTP id 00721157ae682-78fcb465733so40943577b3.3 for ; Thu, 25 Dec 2025 09:09:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766682573; x=1767287373; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=k7qlVsNxJs5wHpy4xTAplw9Daf3JL+d5uEkSeiMaPJw=; b=IVk2ENsc7+w2YU8aQb0Iu/NmDJjmfYJq8JyKUSFQdltBCT5HTMrZz4nBCyjAR8DcHH 4urQ95Hwxpsq55rGUgjkYvGNPVYECP2CSoYnYdUhZG/Umrw2lX6Qen7I1S3bBMAR722K HBeqfv+Lkj+LF4QvLAdT1Z+kjwqwlaNYSnF4mJx6TZ/3KLRqfMVcccYbb0ChmM37NAFD S/gTjPEZazXbVHPLNI6WehMid56jrPFekpYFxocDNMbcm/+CK/b2svDH/8VbMwAlREFl e5uG6gXQAKo+Cs6wGUCwnvMZq43CSsldZQT8EeZBhstCN9UuFqI7ow0xOadqIQz03XfF Y5zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766682573; x=1767287373; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=k7qlVsNxJs5wHpy4xTAplw9Daf3JL+d5uEkSeiMaPJw=; b=LPwcPoFof/KPi/BS4b6Sqdo4XYgfUZdDceCYhjzOz9l8covjHDWw1EjCTYGV5vVEJC F85QaIRn/HXpSPUJBzyMgdU58toX5ukB6E8taRU3KFVtasXcQrM/rY/YXneGQtHkDJeK bx7ZUvaqX9lYxMUDB0CSv09PNgiwJ2JIaeijw/oCGMlRHShHrxPizcWu5WAnxqMh2Zbn tLbVTYKqxoxnkCE58CvYriDAmhN1TGE0tsWV5HW2mcPhTmbZFBd0RKiytxP2mP7b8iDi QIaIBDVcNNtVR3hhcwO120nmh8q1rFYTyduHvGxvDuReztm4q9bpl9cSGMrqoaA06afM xdZQ== X-Forwarded-Encrypted: i=1; AJvYcCX5AdtHHpQ44KV8kSxsUNmplv4IgONChnj3R1maVGfXk7YT3Wk0a1Oysz8PCOnwIRJ5BaBPlwCHz/aX1Gc=@vger.kernel.org X-Gm-Message-State: AOJu0YyiQ+CcMH5SQKjimdXvo0PH436l+tfQBgWRQD6Nvn1HS5JWXgxr iOEjRkSB+vzu6uO+7FhDpcIfDQYubZkVMs/+YEse1NIGgtrQCjFl4Knu X-Gm-Gg: AY/fxX73QfXwbfFiHDGKI7v5vNdqdj4W3h+ZomZx2MhDNuqgxy+KZNVfiqeYDx/t5JZ QSae1Eqh2fw3DFnnzokVQ2aqDCJ+w6IH0Qs8JJ9HWP+9MiQFMBhwhQe3cbLxa+IKp7llDqZScFW NXOYAfTjgMYPixZWH3W5rMuxrpnSPDQV9s6jBDKtOJcYyM5XWii8nQNlGD9xNvXfK6aoWwrBlz4 xMpNZkUlvJDjI1lK/PRUjzC6IS3Grmq8+9btbBw34GGDORzl1kzeDPOoJgBnZPREzU6b2pDfAqt h1bsxmqXvP33aaU2K2BJB3y90OI8HHHe0Q8mZ2ZS4Q2Gt/u8CtVcwi53w5Gi6/1pD6NMaAXahSH D9bIlKxJdfDh1sgByDGhUnYk0sQMf5hxm1QfI0yNhi4hlj9bAE7Z43aXRShSIW56Ao/0YnEbu8A a+1KdYPl8= X-Google-Smtp-Source: AGHT+IFIuLpHsarRNwSoLm3t6E+K96wDE4rDGU/n9UNmyTCmfV0vn20FDQMesQWZb9h9vnQFHjeUuw== X-Received: by 2002:a05:690c:488a:b0:78c:f9e:1f57 with SMTP id 00721157ae682-78fb4084085mr193557537b3.28.1766682572925; Thu, 25 Dec 2025 09:09:32 -0800 (PST) Received: from localhost ([2601:346:0:79bd:5a70:118b:3656:4527]) by smtp.gmail.com with ESMTPSA id 00721157ae682-78fb44f0d4csm76080557b3.37.2025.12.25.09.09.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Dec 2025 09:09:32 -0800 (PST) From: "Yury Norov (NVIDIA)" To: Steven Rostedt , Andrew Morton , Masami Hiramatsu , Mathieu Desnoyers , Andy Shevchenko , Christophe Leroy , Randy Dunlap , Ingo Molnar , Jani Nikula , Joonas Lahtinen , David Laight , Petr Pavlu , Andi Shyti , Rodrigo Vivi , Tvrtko Ursulin , Daniel Gomez , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , linux-kernel@vger.kernel.org, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-modules@vger.kernel.org, linux-trace-kernel@vger.kernel.org Cc: "Yury Norov (NVIDIA)" Subject: [PATCH v4 0/7] Unload linux/kernel.h Date: Thu, 25 Dec 2025 12:09:22 -0500 Message-ID: <20251225170930.1151781-1-yury.norov@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit kernel.h hosts declarations that can be placed better. This series decouples kernel.h with some explicit and implicit dependencies; also, moves tracing functionality to a new independent header. My local build testing shows ~2% performance improvement for GCC + Ubuntu x86_64/localyesconfig. v1: https://lore.kernel.org/all/20251129195304.204082-1-yury.norov@gmail.com/ v2: https://lore.kernel.org/all/20251203162329.280182-1-yury.norov@gmail.com/ v3: https://lore.kernel.org/all/20251205175237.242022-1-yury.norov@gmail.com/ v4: - drop kernel.h dependency on linux/instruction_pointer.h (new patch #4); - drop trace_printk.h dependency on string.h (new patch #5 - Steven); - drop kernel.h dependency on trace_printk.h (new patch #7); - explicitly tested CONFIG_FORTIFY x86_64 build with no issues. 0-DAY CI Kernel Test Service: alpha allnoconfig gcc-15.1.0 alpha allyesconfig gcc-15.1.0 alpha defconfig gcc-15.1.0 arc allmodconfig clang-16 arc allmodconfig gcc-15.1.0 arc allnoconfig gcc-15.1.0 arc allyesconfig clang-22 arc allyesconfig gcc-15.1.0 arc defconfig gcc-15.1.0 arc randconfig-001-20251225 gcc-11.5.0 arc randconfig-002-20251225 gcc-11.5.0 arm allnoconfig clang-22 arm allnoconfig gcc-15.1.0 arm allyesconfig clang-16 arm allyesconfig gcc-15.1.0 arm defconfig gcc-15.1.0 arm exynos_defconfig gcc-15.1.0 arm randconfig-001-20251225 gcc-11.5.0 arm randconfig-002-20251225 gcc-11.5.0 arm randconfig-003-20251225 gcc-11.5.0 arm randconfig-004-20251225 gcc-11.5.0 arm spitz_defconfig gcc-15.1.0 arm64 allmodconfig clang-19 arm64 allmodconfig clang-22 arm64 allnoconfig gcc-15.1.0 arm64 defconfig gcc-15.1.0 arm64 randconfig-001-20251225 clang-18 arm64 randconfig-001-20251225 gcc-11.5.0 arm64 randconfig-002-20251225 gcc-11.5.0 arm64 randconfig-002-20251225 gcc-12.5.0 arm64 randconfig-003-20251225 clang-22 arm64 randconfig-003-20251225 gcc-11.5.0 arm64 randconfig-004-20251225 clang-22 arm64 randconfig-004-20251225 gcc-11.5.0 csky allmodconfig gcc-15.1.0 csky allnoconfig gcc-15.1.0 csky defconfig gcc-15.1.0 csky randconfig-001-20251225 gcc-11.5.0 csky randconfig-001-20251225 gcc-15.1.0 csky randconfig-002-20251225 gcc-11.5.0 hexagon allmodconfig clang-17 hexagon allmodconfig gcc-15.1.0 hexagon allnoconfig clang-22 hexagon allnoconfig gcc-15.1.0 hexagon defconfig gcc-15.1.0 hexagon randconfig-001-20251225 clang-22 hexagon randconfig-002-20251225 clang-22 i386 allmodconfig clang-20 i386 allmodconfig gcc-14 i386 allnoconfig gcc-14 i386 allnoconfig gcc-15.1.0 i386 allyesconfig clang-20 i386 allyesconfig gcc-14 i386 buildonly-randconfig-001-20251225 clang-20 i386 buildonly-randconfig-002-20251225 clang-20 i386 buildonly-randconfig-003-20251225 clang-20 i386 buildonly-randconfig-003-20251225 gcc-14 i386 buildonly-randconfig-004-20251225 clang-20 i386 buildonly-randconfig-005-20251225 clang-20 i386 buildonly-randconfig-006-20251225 clang-20 i386 randconfig-007-20251225 clang-20 i386 randconfig-011-20251225 clang-20 i386 randconfig-011-20251225 gcc-14 i386 randconfig-012-20251225 gcc-14 i386 randconfig-013-20251225 gcc-14 i386 randconfig-014-20251225 clang-20 i386 randconfig-014-20251225 gcc-14 i386 randconfig-015-20251225 gcc-14 i386 randconfig-016-20251225 clang-20 i386 randconfig-016-20251225 gcc-14 i386 randconfig-017-20251225 clang-20 i386 randconfig-017-20251225 gcc-14 loongarch allmodconfig clang-19 loongarch allmodconfig clang-22 loongarch allnoconfig clang-22 loongarch allnoconfig gcc-15.1.0 loongarch defconfig clang-19 loongarch randconfig-001-20251225 clang-22 loongarch randconfig-002-20251225 clang-22 loongarch randconfig-002-20251225 gcc-15.1.0 m68k allmodconfig gcc-15.1.0 m68k allnoconfig gcc-15.1.0 m68k allyesconfig clang-16 m68k allyesconfig gcc-15.1.0 m68k defconfig clang-19 microblaze allnoconfig gcc-15.1.0 microblaze allyesconfig gcc-15.1.0 microblaze defconfig clang-19 mips allmodconfig gcc-15.1.0 mips allnoconfig gcc-15.1.0 mips allyesconfig gcc-15.1.0 mips gcw0_defconfig gcc-15.1.0 nios2 allmodconfig clang-22 nios2 allmodconfig gcc-11.5.0 nios2 allnoconfig clang-22 nios2 allnoconfig gcc-11.5.0 nios2 defconfig clang-19 nios2 randconfig-001-20251225 clang-22 nios2 randconfig-001-20251225 gcc-9.5.0 nios2 randconfig-002-20251225 clang-22 nios2 randconfig-002-20251225 gcc-11.5.0 openrisc allmodconfig clang-22 openrisc allmodconfig gcc-15.1.0 openrisc allnoconfig clang-22 openrisc allnoconfig gcc-15.1.0 openrisc defconfig gcc-15.1.0 parisc allmodconfig gcc-15.1.0 parisc allnoconfig clang-22 parisc allnoconfig gcc-15.1.0 parisc allyesconfig clang-19 parisc allyesconfig gcc-15.1.0 parisc defconfig gcc-15.1.0 parisc randconfig-001-20251225 clang-22 parisc randconfig-002-20251225 clang-22 parisc64 defconfig clang-19 powerpc allmodconfig gcc-15.1.0 powerpc allnoconfig clang-22 powerpc allnoconfig gcc-15.1.0 powerpc cell_defconfig gcc-15.1.0 powerpc pmac32_defconfig gcc-15.1.0 powerpc randconfig-001-20251225 clang-22 powerpc randconfig-002-20251225 clang-22 powerpc64 randconfig-001-20251225 clang-22 powerpc64 randconfig-002-20251225 clang-22 riscv allmodconfig clang-22 riscv allnoconfig clang-22 riscv allnoconfig gcc-15.1.0 riscv allyesconfig clang-16 riscv defconfig clang-22 riscv defconfig gcc-15.1.0 riscv randconfig-001-20251225 clang-19 riscv randconfig-001-20251225 clang-22 riscv randconfig-002-20251225 clang-19 riscv randconfig-002-20251225 gcc-11.5.0 s390 allmodconfig clang-18 s390 allmodconfig clang-19 s390 allnoconfig clang-22 s390 allyesconfig gcc-15.1.0 s390 defconfig clang-22 s390 defconfig gcc-15.1.0 s390 randconfig-001-20251225 clang-19 s390 randconfig-001-20251225 gcc-14.3.0 s390 randconfig-002-20251225 clang-19 sh allmodconfig gcc-15.1.0 sh allnoconfig clang-22 sh allnoconfig gcc-15.1.0 sh allyesconfig clang-19 sh allyesconfig gcc-15.1.0 sh defconfig gcc-14 sh randconfig-001-20251225 clang-19 sh randconfig-001-20251225 gcc-15.1.0 sh randconfig-002-20251225 clang-19 sh randconfig-002-20251225 gcc-9.5.0 sh se7724_defconfig gcc-15.1.0 sparc allnoconfig clang-22 sparc allnoconfig gcc-15.1.0 sparc defconfig gcc-15.1.0 sparc randconfig-001-20251225 gcc-13 sparc randconfig-002-20251225 gcc-13 sparc64 allmodconfig clang-22 sparc64 defconfig gcc-14 sparc64 randconfig-001-20251225 gcc-13 sparc64 randconfig-002-20251225 gcc-13 um allmodconfig clang-19 um allnoconfig clang-22 um allyesconfig gcc-14 um allyesconfig gcc-15.1.0 um defconfig gcc-14 um i386_defconfig gcc-14 um randconfig-001-20251225 gcc-13 um randconfig-002-20251225 gcc-13 um x86_64_defconfig gcc-14 x86_64 allmodconfig clang-20 x86_64 allnoconfig clang-20 x86_64 allnoconfig clang-22 x86_64 allyesconfig clang-20 x86_64 buildonly-randconfig-001-20251225 clang-20 x86_64 buildonly-randconfig-001-20251225 gcc-14 x86_64 buildonly-randconfig-002-20251225 clang-20 x86_64 buildonly-randconfig-002-20251225 gcc-14 x86_64 buildonly-randconfig-003-20251225 gcc-14 x86_64 buildonly-randconfig-004-20251225 clang-20 x86_64 buildonly-randconfig-004-20251225 gcc-14 x86_64 buildonly-randconfig-005-20251225 gcc-14 x86_64 buildonly-randconfig-006-20251225 clang-20 x86_64 buildonly-randconfig-006-20251225 gcc-14 x86_64 defconfig gcc-14 x86_64 kexec clang-20 x86_64 randconfig-001-20251225 clang-20 x86_64 randconfig-002-20251225 clang-20 x86_64 randconfig-003-20251225 clang-20 x86_64 randconfig-004-20251225 clang-20 x86_64 randconfig-005-20251225 clang-20 x86_64 randconfig-006-20251225 clang-20 x86_64 randconfig-011-20251225 gcc-13 x86_64 randconfig-012-20251225 gcc-13 x86_64 randconfig-012-20251225 gcc-14 x86_64 randconfig-013-20251225 clang-20 x86_64 randconfig-013-20251225 gcc-13 x86_64 randconfig-014-20251225 clang-20 x86_64 randconfig-014-20251225 gcc-13 x86_64 randconfig-015-20251225 gcc-13 x86_64 randconfig-015-20251225 gcc-14 x86_64 randconfig-016-20251225 clang-20 x86_64 randconfig-016-20251225 gcc-13 x86_64 randconfig-071-20251225 clang-20 x86_64 randconfig-072-20251225 clang-20 x86_64 randconfig-073-20251225 clang-20 x86_64 randconfig-073-20251225 gcc-14 x86_64 randconfig-074-20251225 clang-20 x86_64 randconfig-075-20251225 clang-20 x86_64 randconfig-075-20251225 gcc-14 x86_64 randconfig-076-20251225 clang-20 x86_64 randconfig-076-20251225 gcc-14 x86_64 rhel-9.4 clang-20 x86_64 rhel-9.4-bpf gcc-14 x86_64 rhel-9.4-func clang-20 x86_64 rhel-9.4-kselftests clang-20 x86_64 rhel-9.4-kunit gcc-14 x86_64 rhel-9.4-ltp gcc-14 x86_64 rhel-9.4-rust clang-20 xtensa allnoconfig clang-22 xtensa allnoconfig gcc-15.1.0 xtensa allyesconfig clang-22 xtensa randconfig-001-20251225 gcc-13 xtensa randconfig-002-20251225 gcc-13 Merry Christmas everybody! Steven Rostedt (1): tracing: Remove size parameter in __trace_puts() Yury Norov (NVIDIA) (6): kernel.h: drop STACK_MAGIC macro moduleparam: include required headers explicitly kernel.h: move VERIFY_OCTAL_PERMISSIONS() to sysfs.h kernel.h: include linux/instruction_pointer.h explicitly tracing: move tracing declarations from kernel.h to a dedicated header kernel.h: drop trace_printk.h Documentation/filesystems/sysfs.rst | 2 +- arch/powerpc/kvm/book3s_xics.c | 1 + arch/powerpc/xmon/xmon.c | 1 + arch/s390/include/asm/processor.h | 1 + arch/s390/kernel/ipl.c | 1 + arch/s390/kernel/machine_kexec.c | 1 + drivers/gpu/drm/i915/gt/intel_gtt.h | 1 + .../drm/i915/gt/selftest_ring_submission.c | 1 + drivers/gpu/drm/i915/i915_gem.h | 1 + drivers/gpu/drm/i915/i915_selftest.h | 2 + drivers/hwtracing/stm/dummy_stm.c | 1 + drivers/infiniband/hw/hfi1/trace_dbg.h | 1 + drivers/tty/sysrq.c | 1 + drivers/usb/early/xhci-dbc.c | 1 + fs/ext4/inline.c | 1 + include/linux/kernel.h | 209 ------------------ include/linux/moduleparam.h | 7 +- include/linux/sunrpc/debug.h | 1 + include/linux/sysfs.h | 13 ++ include/linux/trace_printk.h | 204 +++++++++++++++++ include/linux/ww_mutex.h | 1 + kernel/debug/debug_core.c | 1 + kernel/panic.c | 1 + kernel/rcu/rcu.h | 1 + kernel/rcu/rcutorture.c | 1 + kernel/trace/error_report-traces.c | 1 + kernel/trace/ring_buffer_benchmark.c | 1 + kernel/trace/trace.c | 8 +- kernel/trace/trace.h | 2 +- kernel/trace/trace_benchmark.c | 1 + kernel/trace/trace_events_trigger.c | 1 + kernel/trace/trace_functions.c | 1 + kernel/trace/trace_printk.c | 1 + kernel/trace/trace_selftest.c | 1 + lib/sys_info.c | 1 + samples/fprobe/fprobe_example.c | 1 + samples/ftrace/ftrace-direct-modify.c | 1 + samples/ftrace/ftrace-direct-multi-modify.c | 1 + samples/ftrace/ftrace-direct-multi.c | 1 + samples/ftrace/ftrace-direct-too.c | 1 + samples/ftrace/ftrace-direct.c | 1 + samples/trace_printk/trace-printk.c | 1 + sound/hda/common/sysfs.c | 1 + 43 files changed, 266 insertions(+), 216 deletions(-) create mode 100644 include/linux/trace_printk.h -- 2.43.0