mirror of
https://git.yoctoproject.org/poky
synced 2026-02-20 16:39:40 +01:00
Compare commits
31 Commits
honister-3
...
honister
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fd00d74f47 | ||
|
|
25c5b987e4 | ||
|
|
c701ce82d1 | ||
|
|
a71d6fe171 | ||
|
|
06232bc56b | ||
|
|
be0eb43a36 | ||
|
|
44849be60d | ||
|
|
0f2839bb8c | ||
|
|
0eac465899 | ||
|
|
a37aa8a3b1 | ||
|
|
e87c8d0eda | ||
|
|
e28a432c27 | ||
|
|
5350a0162c | ||
|
|
51cb23e695 | ||
|
|
17ea8b493d | ||
|
|
8a0766f6f5 | ||
|
|
ffb6c5c902 | ||
|
|
c24a700b1a | ||
|
|
fd032a2db3 | ||
|
|
188059a9c5 | ||
|
|
3e48263df5 | ||
|
|
0a4e32274f | ||
|
|
5f685dc2d1 | ||
|
|
663939ef27 | ||
|
|
87bd34033a | ||
|
|
609d6de745 | ||
|
|
1b0306978c | ||
|
|
8402f346fc | ||
|
|
431002a136 | ||
|
|
2b2002a294 | ||
|
|
d6d549a0e4 |
@@ -4781,7 +4781,7 @@ configuration would be as follows::
|
||||
require conf/multilib.conf
|
||||
MULTILIBS = "multilib:lib32"
|
||||
DEFAULTTUNE:virtclass-multilib-lib32 = "x86"
|
||||
IMAGE_INSTALL:append = "lib32-glib-2.0"
|
||||
IMAGE_INSTALL:append = " lib32-glib-2.0"
|
||||
|
||||
This example enables an additional library named
|
||||
``lib32`` alongside the normal target packages. When combining these
|
||||
|
||||
@@ -1062,7 +1062,7 @@ Section.
|
||||
contents::
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
|
||||
SRC_URI:append = "file://0001-calibrate.c-Added-some-printk-statements.patch"
|
||||
SRC_URI:append = " file://0001-calibrate.c-Added-some-printk-statements.patch"
|
||||
|
||||
The :term:`FILESEXTRAPATHS` and :term:`SRC_URI` statements
|
||||
enable the OpenEmbedded build system to find the patch file.
|
||||
|
||||
@@ -3979,10 +3979,10 @@ system and gives an overview of their function and contents.
|
||||
statements add specific configurations to targeted machine types::
|
||||
|
||||
KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
|
||||
KERNEL_FEATURES:append = "${KERNEL_EXTRA_FEATURES}"
|
||||
KERNEL_FEATURES:append:qemuall = "cfg/virtio.scc"
|
||||
KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
|
||||
KERNEL_FEATURES:append:qemuall = " cfg/virtio.scc"
|
||||
KERNEL_FEATURES:append:qemux86 = " cfg/sound.scc cfg/paravirt_kvm.scc"
|
||||
KERNEL_FEATURES:append:qemux86-64 = "cfg/sound.scc"
|
||||
KERNEL_FEATURES:append:qemux86-64 = " cfg/sound.scc"
|
||||
|
||||
:term:`KERNEL_FIT_LINK_NAME`
|
||||
The link name of the kernel flattened image tree (FIT) image. This
|
||||
@@ -4170,7 +4170,7 @@ system and gives an overview of their function and contents.
|
||||
SRCREV_machine:core2-32-intel-common = "43b9eced9ba8a57add36af07736344dcc383f711"
|
||||
KMACHINE:core2-32-intel-common = "intel-core2-32"
|
||||
KBRANCH:core2-32-intel-common = "standard/base"
|
||||
KERNEL_FEATURES:append:core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
|
||||
KERNEL_FEATURES:append:core2-32-intel-common = " ${KERNEL_FEATURES_INTEL_COMMON}"
|
||||
|
||||
The :term:`KMACHINE` statement says
|
||||
that the kernel understands the machine name as "intel-core2-32".
|
||||
|
||||
@@ -7,3 +7,18 @@ INHIBIT_DEFAULT_DEPS = "1"
|
||||
|
||||
SRC_URI = "gitsm://git.yoctoproject.org/git-submodule-test;branch=master"
|
||||
SRCREV = "a2885dd7d25380d23627e7544b7bbb55014b16ee"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_test_git_as_user() {
|
||||
cd ${S}
|
||||
git status
|
||||
}
|
||||
addtask test_git_as_user after do_unpack
|
||||
|
||||
fakeroot do_test_git_as_root() {
|
||||
cd ${S}
|
||||
git status
|
||||
}
|
||||
do_test_git_as_root[depends] += "virtual/fakeroot-native:do_populate_sysroot"
|
||||
addtask test_git_as_root after do_unpack
|
||||
|
||||
@@ -7,17 +7,17 @@ KMACHINE:genericx86 ?= "common-pc"
|
||||
KMACHINE:genericx86-64 ?= "common-pc-64"
|
||||
KMACHINE:beaglebone-yocto ?= "beaglebone"
|
||||
|
||||
SRCREV_machine:genericx86 ?= "c0b313d988a16b25c1ee730bfe7393c462ee8a5c"
|
||||
SRCREV_machine:genericx86-64 ?= "c0b313d988a16b25c1ee730bfe7393c462ee8a5c"
|
||||
SRCREV_machine:edgerouter ?= "4ab94e777d8b41ee1ee4c279259e9733bc8049b1"
|
||||
SRCREV_machine:beaglebone-yocto ?= "941cc9c3849f96f7eaf109b1e35e05ba366aca56"
|
||||
SRCREV_machine:genericx86 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06"
|
||||
SRCREV_machine:genericx86-64 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06"
|
||||
SRCREV_machine:edgerouter ?= "43577894d2295a92fce760dc403b97527fb55835"
|
||||
SRCREV_machine:beaglebone-yocto ?= "8038166b729c192d06f1eb37ab6868a5769f8bc5"
|
||||
|
||||
COMPATIBLE_MACHINE:genericx86 = "genericx86"
|
||||
COMPATIBLE_MACHINE:genericx86-64 = "genericx86-64"
|
||||
COMPATIBLE_MACHINE:edgerouter = "edgerouter"
|
||||
COMPATIBLE_MACHINE:beaglebone-yocto = "beaglebone-yocto"
|
||||
|
||||
LINUX_VERSION:genericx86 = "5.10.99"
|
||||
LINUX_VERSION:genericx86-64 = "5.10.99"
|
||||
LINUX_VERSION:edgerouter = "5.10.63"
|
||||
LINUX_VERSION:beaglebone-yocto = "5.10.63"
|
||||
LINUX_VERSION:genericx86 = "5.10.113"
|
||||
LINUX_VERSION:genericx86-64 = "5.10.113"
|
||||
LINUX_VERSION:edgerouter = "5.10.113"
|
||||
LINUX_VERSION:beaglebone-yocto = "5.10.113"
|
||||
|
||||
@@ -122,6 +122,10 @@ def setup_hosttools_dir(dest, toolsvar, d, fatal=True):
|
||||
tools = d.getVar(toolsvar).split()
|
||||
origbbenv = d.getVar("BB_ORIGENV", False)
|
||||
path = origbbenv.getVar("PATH")
|
||||
# Need to ignore our own scripts directories to avoid circular links
|
||||
for p in path.split(":"):
|
||||
if p.endswith("/scripts"):
|
||||
path = path.replace(p, "/ignoreme")
|
||||
bb.utils.mkdirhier(dest)
|
||||
notfound = []
|
||||
for tool in tools:
|
||||
|
||||
@@ -2,6 +2,8 @@ inherit terminal
|
||||
|
||||
DEVSHELL = "${SHELL}"
|
||||
|
||||
PATH:prepend:task-devshell = "${COREBASE}/scripts/git-intercept:"
|
||||
|
||||
python do_devshell () {
|
||||
if d.getVarFlag("do_devshell", "manualfakeroot"):
|
||||
d.prependVar("DEVSHELL", "pseudo ")
|
||||
|
||||
@@ -267,9 +267,10 @@ python write_image_manifest () {
|
||||
|
||||
if os.path.exists(manifest_name) and link_name:
|
||||
manifest_link = deploy_dir + "/" + link_name + ".manifest"
|
||||
if os.path.lexists(manifest_link):
|
||||
os.remove(manifest_link)
|
||||
os.symlink(os.path.basename(manifest_name), manifest_link)
|
||||
if manifest_link != manifest_name:
|
||||
if os.path.lexists(manifest_link):
|
||||
os.remove(manifest_link)
|
||||
os.symlink(os.path.basename(manifest_name), manifest_link)
|
||||
}
|
||||
|
||||
# Can be used to create /etc/timestamp during image construction to give a reasonably
|
||||
@@ -339,9 +340,10 @@ python write_image_test_data() {
|
||||
|
||||
if os.path.exists(testdata_name) and link_name:
|
||||
testdata_link = os.path.join(deploy_dir, "%s.testdata.json" % link_name)
|
||||
if os.path.lexists(testdata_link):
|
||||
os.remove(testdata_link)
|
||||
os.symlink(os.path.basename(testdata_name), testdata_link)
|
||||
if testdata_link != testdata_name:
|
||||
if os.path.lexists(testdata_link):
|
||||
os.remove(testdata_link)
|
||||
os.symlink(os.path.basename(testdata_name), testdata_link)
|
||||
}
|
||||
write_image_test_data[vardepsexclude] += "TOPDIR"
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ class EpoxyTest(OESDKTestCase):
|
||||
"""
|
||||
def setUp(self):
|
||||
if not (self.tc.hasHostPackage("nativesdk-meson")):
|
||||
raise unittest.SkipTest("GalculatorTest class: SDK doesn't contain Meson")
|
||||
raise unittest.SkipTest("EpoxyTest class: SDK doesn't contain Meson")
|
||||
|
||||
def test_epoxy(self):
|
||||
with tempfile.TemporaryDirectory(prefix="epoxy", dir=self.tc.sdk_dir) as testdir:
|
||||
|
||||
15
meta/lib/oeqa/selftest/cases/git.py
Normal file
15
meta/lib/oeqa/selftest/cases/git.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from oeqa.selftest.case import OESelftestTestCase
|
||||
from oeqa.utils.commands import bitbake
|
||||
|
||||
class GitCheck(OESelftestTestCase):
|
||||
def test_git_intercept(self):
|
||||
"""
|
||||
Git binaries with CVE-2022-24765 fixed will refuse to operate on a
|
||||
repository which is owned by a different user. This breaks our
|
||||
do_install task as that runs inside pseudo, so the git repository is
|
||||
owned by the build user but git is running as (fake)root.
|
||||
|
||||
We have an intercept which disables pseudo, so verify that it works.
|
||||
"""
|
||||
bitbake("git-submodule-test -c test_git_as_user")
|
||||
bitbake("git-submodule-test -c test_git_as_root")
|
||||
@@ -2,21 +2,22 @@ SUMMARY = "Linux NFC daemon"
|
||||
DESCRIPTION = "A daemon for the Linux Near Field Communication stack"
|
||||
HOMEPAGE = "http://01.org/linux-nfc"
|
||||
LICENSE = "GPLv2"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
|
||||
file://src/near.h;beginline=1;endline=20;md5=358e4deefef251a4761e1ffacc965d13 \
|
||||
"
|
||||
|
||||
DEPENDS = "dbus glib-2.0 libnl"
|
||||
|
||||
SRC_URI = "${KERNELORG_MIRROR}/linux/network/nfc/${BP}.tar.xz \
|
||||
SRC_URI = "git://git.kernel.org/pub/scm/network/nfc/neard.git;protocol=git;branch=master \
|
||||
file://neard.in \
|
||||
file://Makefile.am-fix-parallel-issue.patch \
|
||||
file://Makefile.am-do-not-ship-version.h.patch \
|
||||
file://0001-Add-header-dependency-to-nciattach.o.patch \
|
||||
"
|
||||
SRC_URI[md5sum] = "5c691fb7872856dc0d909c298bc8cb41"
|
||||
SRC_URI[sha256sum] = "eae3b11c541a988ec11ca94b7deab01080cd5b58cfef3ced6ceac9b6e6e65b36"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
|
||||
file://src/near.h;beginline=1;endline=20;md5=358e4deefef251a4761e1ffacc965d13 \
|
||||
"
|
||||
SRCREV = "949795024f7625420e93e288c56e194cb9a3e74a"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
inherit autotools pkgconfig systemd update-rc.d
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ SRC_URI:append:riscv32 = " \
|
||||
file://0004-Fixup-support-for-io_pgetevents_time64-syscall.patch \
|
||||
"
|
||||
|
||||
SRC_URI[sha256sum] = "0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1"
|
||||
SRC_URI[sha256sum] = "9384a2b0570dd80358841464677115df785edb941c71211f75076d72fe6b438f"
|
||||
|
||||
inherit lib_package multilib_header multilib_script ptest
|
||||
MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash"
|
||||
@@ -204,6 +204,7 @@ do_install_ptest () {
|
||||
install -m755 ${B}/apps/CA.pl ${D}${PTEST_PATH}/apps
|
||||
|
||||
install -d ${D}${PTEST_PATH}/engines
|
||||
install -m755 ${B}/engines/dasync.so ${D}${PTEST_PATH}/engines
|
||||
install -m755 ${B}/engines/ossltest.so ${D}${PTEST_PATH}/engines
|
||||
|
||||
# seems to be needed with perl 5.32.1
|
||||
@@ -349,7 +349,7 @@ do_install_ptest () {
|
||||
# These access the internet which is not guaranteed to work on machines running the tests
|
||||
rm -rf ${D}${PTEST_PATH}/testsuite/wget
|
||||
sort ${B}/.config > ${D}${PTEST_PATH}/.config
|
||||
ln -s /bin/busybox ${D}${PTEST_PATH}/busybox
|
||||
ln -s ${base_bindir}/busybox ${D}${PTEST_PATH}/busybox
|
||||
}
|
||||
|
||||
inherit update-alternatives
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[Unit]
|
||||
Description=Bind mount volatile @where@
|
||||
DefaultDependencies=false
|
||||
DefaultDependencies=no
|
||||
Before=local-fs.target
|
||||
RequiresMountsFor=@whatparent@ @whereparent@
|
||||
ConditionPathIsReadWrite=@whatparent@
|
||||
|
||||
@@ -132,7 +132,7 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \
|
||||
file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \
|
||||
file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \
|
||||
file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \
|
||||
file://WHENCE;md5=4cf67d71a21887c682c3989a4318745e \
|
||||
file://WHENCE;md5=d3eb82686904888f8bbbe8d865371404 \
|
||||
"
|
||||
|
||||
# These are not common licenses, set NO_GENERIC_LICENSE for them
|
||||
@@ -205,7 +205,7 @@ PE = "1"
|
||||
|
||||
SRC_URI = "${KERNELORG_MIRROR}/linux/kernel/firmware/${BPN}-${PV}.tar.xz"
|
||||
|
||||
SRC_URI[sha256sum] = "020b11f6412f4956f5a6f98de7d41867d2b30ea0ce81b1e2d206ec9840363849"
|
||||
SRC_URI[sha256sum] = "376e0b3d7b4f8aaa2abf7f5ab74803dcf14b06b94e3d841b1467cd9a2848255e"
|
||||
|
||||
inherit allarch
|
||||
|
||||
@@ -11,13 +11,13 @@ python () {
|
||||
raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
|
||||
}
|
||||
|
||||
SRCREV_machine ?= "40a6731993d406d6c9fed43cb20c6a4f178ff2cc"
|
||||
SRCREV_meta ?= "1ae63728667964edf845b4f85bb6c06a55b81793"
|
||||
SRCREV_machine ?= "88b754b80392e1f1ac7df46595f9712edc8aec02"
|
||||
SRCREV_meta ?= "7767ab05bd3e525a287a7f9bfd780005b5eb25a3"
|
||||
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
|
||||
|
||||
LINUX_VERSION ?= "5.10.109"
|
||||
LINUX_VERSION ?= "5.10.113"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ KCONFIG_MODE = "--allnoconfig"
|
||||
|
||||
require recipes-kernel/linux/linux-yocto.inc
|
||||
|
||||
LINUX_VERSION ?= "5.10.109"
|
||||
LINUX_VERSION ?= "5.10.113"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
|
||||
|
||||
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
|
||||
@@ -15,9 +15,9 @@ DEPENDS += "openssl-native util-linux-native"
|
||||
KMETA = "kernel-meta"
|
||||
KCONF_BSP_AUDIT_LEVEL = "2"
|
||||
|
||||
SRCREV_machine:qemuarm ?= "9524d0ca0feeeb4cb698e3c984f4391ccb4b8e19"
|
||||
SRCREV_machine ?= "bccf3a5f14511fb8ce6a9dd990216508d2c2ec6e"
|
||||
SRCREV_meta ?= "1ae63728667964edf845b4f85bb6c06a55b81793"
|
||||
SRCREV_machine:qemuarm ?= "7dacc8332b0bc5600d97583f45b841c9724f2191"
|
||||
SRCREV_machine ?= "8dc46fa883d7b9a3412791f6731096e2e516d949"
|
||||
SRCREV_meta ?= "7767ab05bd3e525a287a7f9bfd780005b5eb25a3"
|
||||
|
||||
PV = "${LINUX_VERSION}+git${SRCPV}"
|
||||
|
||||
|
||||
@@ -13,17 +13,17 @@ KBRANCH:qemux86 ?= "v5.10/standard/base"
|
||||
KBRANCH:qemux86-64 ?= "v5.10/standard/base"
|
||||
KBRANCH:qemumips64 ?= "v5.10/standard/mti-malta64"
|
||||
|
||||
SRCREV_machine:qemuarm ?= "dfeff112cafaf3a04da6cd60301d297406e1b77f"
|
||||
SRCREV_machine:qemuarm64 ?= "3641e4234255c71c33cb2d9422f54c17b70c8941"
|
||||
SRCREV_machine:qemumips ?= "7eead19134a43cf9ccc0fa9d75c45be2a7743f13"
|
||||
SRCREV_machine:qemuppc ?= "6e1d66b2a871be0450722a50fc087ff8ccbcddd7"
|
||||
SRCREV_machine:qemuriscv64 ?= "d2f7a595bf0b752275d503046494b668549cb151"
|
||||
SRCREV_machine:qemuriscv32 ?= "d2f7a595bf0b752275d503046494b668549cb151"
|
||||
SRCREV_machine:qemux86 ?= "d2f7a595bf0b752275d503046494b668549cb151"
|
||||
SRCREV_machine:qemux86-64 ?= "d2f7a595bf0b752275d503046494b668549cb151"
|
||||
SRCREV_machine:qemumips64 ?= "279f142932679a8ba212ebae4b9db851636a1fab"
|
||||
SRCREV_machine ?= "d2f7a595bf0b752275d503046494b668549cb151"
|
||||
SRCREV_meta ?= "1ae63728667964edf845b4f85bb6c06a55b81793"
|
||||
SRCREV_machine:qemuarm ?= "6092497574895b1179a3c7a9e07c7f40c2d4c136"
|
||||
SRCREV_machine:qemuarm64 ?= "97ad6c5f9ffdb6b108cbbf99d9061dd0fe03e4e8"
|
||||
SRCREV_machine:qemumips ?= "e53b2d1867f7bdc2c0cc904a15992178688c3ad4"
|
||||
SRCREV_machine:qemuppc ?= "b12ed76165bfc9fe2b99fcc224b5e0134b7b533f"
|
||||
SRCREV_machine:qemuriscv64 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06"
|
||||
SRCREV_machine:qemuriscv32 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06"
|
||||
SRCREV_machine:qemux86 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06"
|
||||
SRCREV_machine:qemux86-64 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06"
|
||||
SRCREV_machine:qemumips64 ?= "07580586b738406b4dec9bf91d4eecdb933f2a07"
|
||||
SRCREV_machine ?= "a8b4c628f382412e5e7df5750f2be711df95fa06"
|
||||
SRCREV_meta ?= "7767ab05bd3e525a287a7f9bfd780005b5eb25a3"
|
||||
|
||||
# remap qemuarm to qemuarma15 for the 5.8 kernel
|
||||
# KMACHINE:qemuarm ?= "qemuarma15"
|
||||
@@ -32,7 +32,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRA
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
|
||||
LINUX_VERSION ?= "5.10.109"
|
||||
LINUX_VERSION ?= "5.10.113"
|
||||
|
||||
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
|
||||
DEPENDS += "openssl-native util-linux-native"
|
||||
@@ -53,6 +53,9 @@ KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
|
||||
KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc"
|
||||
KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
|
||||
KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
|
||||
KERNEL_FEATURES:append:powerpc =" arch/powerpc/powerpc-debug.scc"
|
||||
KERNEL_FEATURES:append:powerpc64 =" arch/powerpc/powerpc-debug.scc"
|
||||
KERNEL_FEATURES:append:powerpc64le =" arch/powerpc/powerpc-debug.scc"
|
||||
KERNEL_FEATURES:append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}"
|
||||
KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}"
|
||||
KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}"
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
From c312bda00d2dc10ce5f6c1189acbefee5c6c8c6c Mon Sep 17 00:00:00 2001
|
||||
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
Date: Tue, 29 Mar 2022 16:34:07 -0400
|
||||
Subject: [PATCH 01/10] Fix: compaction migratepages event name
|
||||
|
||||
The commit "fix: mm: compaction: fix the migration stats in trace_mm_compaction_migratepages() (v5.17)"
|
||||
|
||||
Triggers this warning:
|
||||
|
||||
LTTng: event provider mismatch: The event name needs to start with provider name + _ + one or more letter, provider: compaction, event name: mm_compaction_migratepages
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
Change-Id: I01c7485af765084dafb33bf33ae392e60bfbf1e7
|
||||
---
|
||||
include/instrumentation/events/compaction.h | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/instrumentation/events/compaction.h b/include/instrumentation/events/compaction.h
|
||||
index 340e41f5..15964537 100644
|
||||
--- a/include/instrumentation/events/compaction.h
|
||||
+++ b/include/instrumentation/events/compaction.h
|
||||
@@ -98,7 +98,9 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(compaction_isolate_template,
|
||||
#endif /* #else #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0) */
|
||||
|
||||
#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0))
|
||||
-LTTNG_TRACEPOINT_EVENT(mm_compaction_migratepages,
|
||||
+LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages,
|
||||
+
|
||||
+ compaction_migratepages,
|
||||
|
||||
TP_PROTO(unsigned long nr_all,
|
||||
unsigned int nr_succeeded),
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -1,394 +0,0 @@
|
||||
From 8be4c8a38ee1e297578e094a6e4c143ec5259aba Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 13 Sep 2021 12:00:38 -0400
|
||||
Subject: [PATCH 1/2] fix: cpu/hotplug: Remove deprecated CPU-hotplug
|
||||
functions. (v5.15)
|
||||
|
||||
The CPU-hotplug functions get|put_online_cpus() were deprecated in v4.13
|
||||
and removed in v5.15.
|
||||
|
||||
See upstream commits :
|
||||
|
||||
commit 8c854303ce0e38e5bbedd725ff39da7e235865d8
|
||||
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Tue Aug 3 16:16:21 2021 +0200
|
||||
|
||||
cpu/hotplug: Remove deprecated CPU-hotplug functions.
|
||||
|
||||
No users in tree use the deprecated CPU-hotplug functions anymore.
|
||||
|
||||
Remove them.
|
||||
|
||||
Introduced in v4.13 :
|
||||
|
||||
commit 8f553c498e1772cccb39a114da4a498d22992758
|
||||
Author: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Wed May 24 10:15:12 2017 +0200
|
||||
|
||||
cpu/hotplug: Provide cpus_read|write_[un]lock()
|
||||
|
||||
The counting 'rwsem' hackery of get|put_online_cpus() is going to be
|
||||
replaced by percpu rwsem.
|
||||
|
||||
Rename the functions to make it clear that it's locking and not some
|
||||
refcount style interface. These new functions will be used for the
|
||||
preparatory patches which make the code ready for the percpu rwsem
|
||||
conversion.
|
||||
|
||||
Rename all instances in the cpu hotplug code while at it.
|
||||
|
||||
Upstream-Status: backport [https://git.lttng.org/?p=lttng-modules.git;a=commit;h=ffcc873470121ef1ebb110df3d9038a38d9cb7cb]
|
||||
|
||||
Change-Id: I5a37cf5afc075a402b7347989fac637dfa60a1ed
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/wrapper/cpu.h | 44 +++++++++++++++++++++++
|
||||
src/lib/ringbuffer/ring_buffer_backend.c | 8 ++---
|
||||
src/lib/ringbuffer/ring_buffer_frontend.c | 17 ++++-----
|
||||
src/lib/ringbuffer/ring_buffer_iterator.c | 15 ++++----
|
||||
src/lttng-context-perf-counters.c | 11 +++---
|
||||
src/lttng-statedump-impl.c | 6 ++--
|
||||
6 files changed, 74 insertions(+), 27 deletions(-)
|
||||
create mode 100644 include/wrapper/cpu.h
|
||||
|
||||
diff --git a/include/wrapper/cpu.h b/include/wrapper/cpu.h
|
||||
new file mode 100644
|
||||
index 00000000..cbee1962
|
||||
--- /dev/null
|
||||
+++ b/include/wrapper/cpu.h
|
||||
@@ -0,0 +1,44 @@
|
||||
+/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
|
||||
+ *
|
||||
+ * wrapper/cpu.h
|
||||
+ *
|
||||
+ * Copyright (C) 2021 Michael Jeanson <mjeanson@efficios.com>
|
||||
+ */
|
||||
+
|
||||
+#ifndef _LTTNG_WRAPPER_CPU_H
|
||||
+#define _LTTNG_WRAPPER_CPU_H
|
||||
+
|
||||
+#include <linux/cpu.h>
|
||||
+#include <lttng/kernel-version.h>
|
||||
+
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0))
|
||||
+
|
||||
+static inline
|
||||
+void lttng_cpus_read_lock(void)
|
||||
+{
|
||||
+ cpus_read_lock();
|
||||
+}
|
||||
+
|
||||
+static inline
|
||||
+void lttng_cpus_read_unlock(void)
|
||||
+{
|
||||
+ cpus_read_unlock();
|
||||
+}
|
||||
+
|
||||
+#else /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0) */
|
||||
+
|
||||
+static inline
|
||||
+void lttng_cpus_read_lock(void)
|
||||
+{
|
||||
+ get_online_cpus();
|
||||
+}
|
||||
+
|
||||
+static inline
|
||||
+void lttng_cpus_read_unlock(void)
|
||||
+{
|
||||
+ put_online_cpus();
|
||||
+}
|
||||
+
|
||||
+#endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0) */
|
||||
+
|
||||
+#endif /* _LTTNG_WRAPPER_CPU_H */
|
||||
diff --git a/src/lib/ringbuffer/ring_buffer_backend.c b/src/lib/ringbuffer/ring_buffer_backend.c
|
||||
index 26efb2bc..9a339be0 100644
|
||||
--- a/src/lib/ringbuffer/ring_buffer_backend.c
|
||||
+++ b/src/lib/ringbuffer/ring_buffer_backend.c
|
||||
@@ -12,10 +12,10 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/slab.h>
|
||||
-#include <linux/cpu.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/vmalloc.h>
|
||||
|
||||
+#include <wrapper/cpu.h>
|
||||
#include <wrapper/mm.h>
|
||||
#include <wrapper/vmalloc.h> /* for wrapper_vmalloc_sync_mappings() */
|
||||
#include <ringbuffer/config.h>
|
||||
@@ -445,14 +445,14 @@ int channel_backend_init(struct channel_backend *chanb,
|
||||
chanb->cpu_hp_notifier.priority = 5;
|
||||
register_hotcpu_notifier(&chanb->cpu_hp_notifier);
|
||||
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_online_cpu(i) {
|
||||
ret = lib_ring_buffer_create(per_cpu_ptr(chanb->buf, i),
|
||||
chanb, i);
|
||||
if (ret)
|
||||
goto free_bufs; /* cpu hotplug locked */
|
||||
}
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
#else
|
||||
for_each_possible_cpu(i) {
|
||||
ret = lib_ring_buffer_create(per_cpu_ptr(chanb->buf, i),
|
||||
@@ -485,7 +485,7 @@ free_bufs:
|
||||
*/
|
||||
#else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
unregister_hotcpu_notifier(&chanb->cpu_hp_notifier);
|
||||
#endif
|
||||
#endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */
|
||||
diff --git a/src/lib/ringbuffer/ring_buffer_frontend.c b/src/lib/ringbuffer/ring_buffer_frontend.c
|
||||
index e9056118..87a575d0 100644
|
||||
--- a/src/lib/ringbuffer/ring_buffer_frontend.c
|
||||
+++ b/src/lib/ringbuffer/ring_buffer_frontend.c
|
||||
@@ -48,6 +48,7 @@
|
||||
#include <ringbuffer/iterator.h>
|
||||
#include <ringbuffer/nohz.h>
|
||||
#include <wrapper/atomic.h>
|
||||
+#include <wrapper/cpu.h>
|
||||
#include <wrapper/kref.h>
|
||||
#include <wrapper/percpu-defs.h>
|
||||
#include <wrapper/timer.h>
|
||||
@@ -724,7 +725,7 @@ static void channel_unregister_notifiers(struct lttng_kernel_ring_buffer_channel
|
||||
int cpu;
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
chan->cpu_hp_enable = 0;
|
||||
for_each_online_cpu(cpu) {
|
||||
struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
|
||||
@@ -732,7 +733,7 @@ static void channel_unregister_notifiers(struct lttng_kernel_ring_buffer_channel
|
||||
lib_ring_buffer_stop_switch_timer(buf);
|
||||
lib_ring_buffer_stop_read_timer(buf);
|
||||
}
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
unregister_cpu_notifier(&chan->cpu_hp_notifier);
|
||||
#else
|
||||
for_each_possible_cpu(cpu) {
|
||||
@@ -772,14 +773,14 @@ void lib_ring_buffer_set_quiescent_channel(struct lttng_kernel_ring_buffer_chann
|
||||
const struct lttng_kernel_ring_buffer_config *config = &chan->backend.config;
|
||||
|
||||
if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_channel_cpu(cpu, chan) {
|
||||
struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
|
||||
cpu);
|
||||
|
||||
lib_ring_buffer_set_quiescent(buf);
|
||||
}
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
} else {
|
||||
struct lttng_kernel_ring_buffer *buf = chan->backend.buf;
|
||||
|
||||
@@ -794,14 +795,14 @@ void lib_ring_buffer_clear_quiescent_channel(struct lttng_kernel_ring_buffer_cha
|
||||
const struct lttng_kernel_ring_buffer_config *config = &chan->backend.config;
|
||||
|
||||
if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_channel_cpu(cpu, chan) {
|
||||
struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
|
||||
cpu);
|
||||
|
||||
lib_ring_buffer_clear_quiescent(buf);
|
||||
}
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
} else {
|
||||
struct lttng_kernel_ring_buffer *buf = chan->backend.buf;
|
||||
|
||||
@@ -899,7 +900,7 @@ struct lttng_kernel_ring_buffer_channel *channel_create(const struct lttng_kerne
|
||||
chan->cpu_hp_notifier.priority = 6;
|
||||
register_cpu_notifier(&chan->cpu_hp_notifier);
|
||||
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_online_cpu(cpu) {
|
||||
struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
|
||||
cpu);
|
||||
@@ -909,7 +910,7 @@ struct lttng_kernel_ring_buffer_channel *channel_create(const struct lttng_kerne
|
||||
spin_unlock(&per_cpu(ring_buffer_nohz_lock, cpu));
|
||||
}
|
||||
chan->cpu_hp_enable = 1;
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
#else
|
||||
for_each_possible_cpu(cpu) {
|
||||
struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
|
||||
diff --git a/src/lib/ringbuffer/ring_buffer_iterator.c b/src/lib/ringbuffer/ring_buffer_iterator.c
|
||||
index 25839af6..60c95ca6 100644
|
||||
--- a/src/lib/ringbuffer/ring_buffer_iterator.c
|
||||
+++ b/src/lib/ringbuffer/ring_buffer_iterator.c
|
||||
@@ -10,6 +10,7 @@
|
||||
*/
|
||||
|
||||
#include <ringbuffer/iterator.h>
|
||||
+#include <wrapper/cpu.h>
|
||||
#include <wrapper/file.h>
|
||||
#include <wrapper/uaccess.h>
|
||||
#include <linux/jiffies.h>
|
||||
@@ -440,13 +441,13 @@ int channel_iterator_init(struct lttng_kernel_ring_buffer_channel *chan)
|
||||
chan->hp_iter_notifier.priority = 10;
|
||||
register_cpu_notifier(&chan->hp_iter_notifier);
|
||||
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_online_cpu(cpu) {
|
||||
buf = per_cpu_ptr(chan->backend.buf, cpu);
|
||||
lib_ring_buffer_iterator_init(chan, buf);
|
||||
}
|
||||
chan->hp_iter_enable = 1;
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
#else
|
||||
for_each_possible_cpu(cpu) {
|
||||
buf = per_cpu_ptr(chan->backend.buf, cpu);
|
||||
@@ -519,7 +520,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan)
|
||||
CHAN_WARN_ON(chan, config->output != RING_BUFFER_ITERATOR);
|
||||
|
||||
if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
/* Allow CPU hotplug to keep track of opened reader */
|
||||
chan->iter.read_open = 1;
|
||||
for_each_channel_cpu(cpu, chan) {
|
||||
@@ -529,7 +530,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan)
|
||||
goto error;
|
||||
buf->iter.read_open = 1;
|
||||
}
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
} else {
|
||||
buf = channel_get_ring_buffer(config, chan, 0);
|
||||
ret = lib_ring_buffer_iterator_open(buf);
|
||||
@@ -538,7 +539,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan)
|
||||
error:
|
||||
/* Error should always happen on CPU 0, hence no close is required. */
|
||||
CHAN_WARN_ON(chan, cpu != 0);
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(channel_iterator_open);
|
||||
@@ -550,7 +551,7 @@ void channel_iterator_release(struct lttng_kernel_ring_buffer_channel *chan)
|
||||
int cpu;
|
||||
|
||||
if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_channel_cpu(cpu, chan) {
|
||||
buf = channel_get_ring_buffer(config, chan, cpu);
|
||||
if (buf->iter.read_open) {
|
||||
@@ -559,7 +560,7 @@ void channel_iterator_release(struct lttng_kernel_ring_buffer_channel *chan)
|
||||
}
|
||||
}
|
||||
chan->iter.read_open = 0;
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
} else {
|
||||
buf = channel_get_ring_buffer(config, chan, 0);
|
||||
lib_ring_buffer_iterator_release(buf);
|
||||
diff --git a/src/lttng-context-perf-counters.c b/src/lttng-context-perf-counters.c
|
||||
index b0227d47..372f05e0 100644
|
||||
--- a/src/lttng-context-perf-counters.c
|
||||
+++ b/src/lttng-context-perf-counters.c
|
||||
@@ -16,6 +16,7 @@
|
||||
#include <lttng/events.h>
|
||||
#include <lttng/events-internal.h>
|
||||
#include <ringbuffer/frontend_types.h>
|
||||
+#include <wrapper/cpu.h>
|
||||
#include <wrapper/vmalloc.h>
|
||||
#include <wrapper/perf.h>
|
||||
#include <lttng/tracer.h>
|
||||
@@ -97,10 +98,10 @@ void lttng_destroy_perf_counter_ctx_field(void *priv)
|
||||
{
|
||||
int cpu;
|
||||
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_online_cpu(cpu)
|
||||
perf_event_release_kernel(events[cpu]);
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
unregister_cpu_notifier(&perf_field->nb);
|
||||
#endif
|
||||
@@ -304,7 +305,7 @@ int lttng_add_perf_counter_to_ctx(uint32_t type,
|
||||
perf_field->nb.priority = 0;
|
||||
register_cpu_notifier(&perf_field->nb);
|
||||
#endif
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_online_cpu(cpu) {
|
||||
events[cpu] = wrapper_perf_event_create_kernel_counter(attr,
|
||||
cpu, NULL, overflow_callback);
|
||||
@@ -317,7 +318,7 @@ int lttng_add_perf_counter_to_ctx(uint32_t type,
|
||||
goto counter_busy;
|
||||
}
|
||||
}
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
perf_field->hp_enable = 1;
|
||||
}
|
||||
#endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */
|
||||
@@ -351,7 +352,7 @@ counter_error:
|
||||
if (events[cpu] && !IS_ERR(events[cpu]))
|
||||
perf_event_release_kernel(events[cpu]);
|
||||
}
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
unregister_cpu_notifier(&perf_field->nb);
|
||||
#endif
|
||||
diff --git a/src/lttng-statedump-impl.c b/src/lttng-statedump-impl.c
|
||||
index 4dfbca0b..2b42783a 100644
|
||||
--- a/src/lttng-statedump-impl.c
|
||||
+++ b/src/lttng-statedump-impl.c
|
||||
@@ -23,7 +23,6 @@
|
||||
#include <linux/file.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irqnr.h>
|
||||
-#include <linux/cpu.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/inetdevice.h>
|
||||
#include <linux/mm.h>
|
||||
@@ -34,6 +33,7 @@
|
||||
|
||||
#include <lttng/events.h>
|
||||
#include <lttng/tracer.h>
|
||||
+#include <wrapper/cpu.h>
|
||||
#include <wrapper/irqdesc.h>
|
||||
#include <wrapper/fdtable.h>
|
||||
#include <wrapper/namespace.h>
|
||||
@@ -770,7 +770,7 @@ int do_lttng_statedump(struct lttng_kernel_session *session)
|
||||
* is to guarantee that each CPU has been in a state where is was in
|
||||
* syscall mode (i.e. not in a trap, an IRQ or a soft IRQ).
|
||||
*/
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
atomic_set(&kernel_threads_to_run, num_online_cpus());
|
||||
for_each_online_cpu(cpu) {
|
||||
INIT_DELAYED_WORK(&cpu_work[cpu], lttng_statedump_work_func);
|
||||
@@ -778,7 +778,7 @@ int do_lttng_statedump(struct lttng_kernel_session *session)
|
||||
}
|
||||
/* Wait for all threads to run */
|
||||
__wait_event(statedump_wq, (atomic_read(&kernel_threads_to_run) == 0));
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
/* Our work is done */
|
||||
trace_lttng_statedump_end(session);
|
||||
return 0;
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
From a7eb2e3d0a4beb1ee80b132927641dd05ef2d542 Mon Sep 17 00:00:00 2001
|
||||
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 15:49:32 -0400
|
||||
Subject: [PATCH 02/10] Fix: tracepoint event: allow same provider and event
|
||||
name
|
||||
|
||||
Using the same name for the provider (TRACE_SYSTEM) and event name
|
||||
causes a compilation error because the same identifiers are emitted
|
||||
twice.
|
||||
|
||||
Fix this by prefixing the provider identifier with
|
||||
"__provider_event_desc___".
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
Change-Id: I8cdf8f859e35b8bd5c19737860d12f1ed546dfc2
|
||||
---
|
||||
include/lttng/tracepoint-event-impl.h | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/include/lttng/tracepoint-event-impl.h b/include/lttng/tracepoint-event-impl.h
|
||||
index 38b1dc43..dcb22247 100644
|
||||
--- a/include/lttng/tracepoint-event-impl.h
|
||||
+++ b/include/lttng/tracepoint-event-impl.h
|
||||
@@ -1255,7 +1255,7 @@ static const struct lttng_kernel_event_desc __event_desc___##_map = { \
|
||||
#define TP_ID1(_token, _system) _token##_system
|
||||
#define TP_ID(_token, _system) TP_ID1(_token, _system)
|
||||
|
||||
-static const struct lttng_kernel_event_desc * const TP_ID(__event_desc___, TRACE_SYSTEM)[] = {
|
||||
+static const struct lttng_kernel_event_desc * const TP_ID(__provider_event_desc___, TRACE_SYSTEM)[] = {
|
||||
#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
|
||||
};
|
||||
|
||||
@@ -1274,8 +1274,8 @@ static const struct lttng_kernel_event_desc * const TP_ID(__event_desc___, TRACE
|
||||
/* non-const because list head will be modified when registered. */
|
||||
static __used struct lttng_kernel_probe_desc TP_ID(__probe_desc___, TRACE_SYSTEM) = {
|
||||
.provider_name = __stringify(TRACE_SYSTEM),
|
||||
- .event_desc = TP_ID(__event_desc___, TRACE_SYSTEM),
|
||||
- .nr_events = ARRAY_SIZE(TP_ID(__event_desc___, TRACE_SYSTEM)),
|
||||
+ .event_desc = TP_ID(__provider_event_desc___, TRACE_SYSTEM),
|
||||
+ .nr_events = ARRAY_SIZE(TP_ID(__provider_event_desc___, TRACE_SYSTEM)),
|
||||
.head = { NULL, NULL },
|
||||
.lazy_init_head = { NULL, NULL },
|
||||
.lazy = 0,
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -1,829 +0,0 @@
|
||||
From c570be0da77e963d77bac099d468bc0cd5f1bd63 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 13 Sep 2021 14:16:22 -0400
|
||||
Subject: [PATCH 2/2] fix: Revert "Makefile: Enable -Wimplicit-fallthrough for
|
||||
Clang" (v5.15)
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Starting with v5.15, "-Wimplicit-fallthrough=5" was added to the build
|
||||
flags which requires the use of "__attribute__((__fallthrough__))" to
|
||||
annotate fallthrough case statements.
|
||||
|
||||
See upstream commit by the man himself:
|
||||
|
||||
commit d936eb23874433caa3e3d841cfa16f5434b85dcf
|
||||
Author: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Date: Thu Jul 15 18:05:31 2021 -0700
|
||||
|
||||
Revert "Makefile: Enable -Wimplicit-fallthrough for Clang"
|
||||
|
||||
This reverts commit b7eb335e26a9c7f258c96b3962c283c379d3ede0.
|
||||
|
||||
It turns out that the problem with the clang -Wimplicit-fallthrough
|
||||
warning is not about the kernel source code, but about clang itself, and
|
||||
that the warning is unusable until clang fixes its broken ways.
|
||||
|
||||
In particular, when you enable this warning for clang, you not only get
|
||||
warnings about implicit fallthroughs. You also get this:
|
||||
|
||||
warning: fallthrough annotation in unreachable code [-Wimplicit-fallthrough]
|
||||
|
||||
which is completely broken becasue it
|
||||
|
||||
(a) doesn't even tell you where the problem is (seriously: no line
|
||||
numbers, no filename, no nothing).
|
||||
|
||||
(b) is fundamentally broken anyway, because there are perfectly valid
|
||||
reasons to have a fallthrough statement even if it turns out that
|
||||
it can perhaps not be reached.
|
||||
|
||||
In the kernel, an example of that second case is code in the scheduler:
|
||||
|
||||
switch (state) {
|
||||
case cpuset:
|
||||
if (IS_ENABLED(CONFIG_CPUSETS)) {
|
||||
cpuset_cpus_allowed_fallback(p);
|
||||
state = possible;
|
||||
break;
|
||||
}
|
||||
fallthrough;
|
||||
case possible:
|
||||
|
||||
where if CONFIG_CPUSETS is enabled you actually never hit the
|
||||
fallthrough case at all. But that in no way makes the fallthrough
|
||||
wrong.
|
||||
|
||||
So the warning is completely broken, and enabling it for clang is a very
|
||||
bad idea.
|
||||
|
||||
In the meantime, we can keep the gcc option enabled, and make the gcc
|
||||
build use
|
||||
|
||||
-Wimplicit-fallthrough=5
|
||||
|
||||
which means that we will at least continue to require a proper
|
||||
fallthrough statement, and that gcc won't silently accept the magic
|
||||
comment versions. Because gcc does this all correctly, and while the odd
|
||||
"=5" part is kind of obscure, it's documented in [1]:
|
||||
|
||||
"-Wimplicit-fallthrough=5 doesn’t recognize any comments as
|
||||
fallthrough comments, only attributes disable the warning"
|
||||
|
||||
so if clang ever fixes its bad behavior we can try enabling it there again.
|
||||
|
||||
Upstream-Status: backport [https://git.lttng.org/?p=lttng-modules.git;a=commit;h=c190d76e8c7b44d62b3651ab845b765c1b1f8104]
|
||||
|
||||
Change-Id: Iea69849592fb69ac04fb9bb28efcd6b8dce8ba88
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/counter/counter-api.h | 4 +-
|
||||
include/lttng/events-internal.h | 11 ++-
|
||||
include/wrapper/compiler_attributes.h | 34 +++++++
|
||||
src/lib/counter/counter.c | 13 ++-
|
||||
src/lttng-abi.c | 91 ++++++++++++------
|
||||
src/lttng-bytecode-interpreter.c | 4 +-
|
||||
src/lttng-bytecode-specialize.c | 5 +-
|
||||
src/lttng-events.c | 129 +++++++++++++++++---------
|
||||
src/lttng-string-utils.c | 3 +-
|
||||
src/probes/lttng-kretprobes.c | 7 +-
|
||||
10 files changed, 215 insertions(+), 86 deletions(-)
|
||||
create mode 100644 include/wrapper/compiler_attributes.h
|
||||
|
||||
diff --git a/include/counter/counter-api.h b/include/counter/counter-api.h
|
||||
index fbc65818..c9f2b141 100644
|
||||
--- a/include/counter/counter-api.h
|
||||
+++ b/include/counter/counter-api.h
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <linux/bitops.h>
|
||||
#include <counter/counter.h>
|
||||
#include <counter/counter-internal.h>
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
#include <wrapper/limits.h>
|
||||
|
||||
/*
|
||||
@@ -256,7 +257,8 @@ static __always_inline int lttng_counter_add(const struct lib_counter_config *co
|
||||
const size_t *dimension_indexes, int64_t v)
|
||||
{
|
||||
switch (config->alloc) {
|
||||
- case COUNTER_ALLOC_PER_CPU: /* Fallthrough */
|
||||
+ case COUNTER_ALLOC_PER_CPU:
|
||||
+ lttng_fallthrough;
|
||||
case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
|
||||
return __lttng_counter_add_percpu(config, counter, dimension_indexes, v);
|
||||
case COUNTER_ALLOC_GLOBAL:
|
||||
diff --git a/include/lttng/events-internal.h b/include/lttng/events-internal.h
|
||||
index cd560de8..ca2190c4 100644
|
||||
--- a/include/lttng/events-internal.h
|
||||
+++ b/include/lttng/events-internal.h
|
||||
@@ -8,6 +8,8 @@
|
||||
#ifndef _LTTNG_EVENTS_INTERNAL_H
|
||||
#define _LTTNG_EVENTS_INTERNAL_H
|
||||
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
+
|
||||
#include <lttng/events.h>
|
||||
|
||||
struct lttng_syscall_filter;
|
||||
@@ -561,9 +563,12 @@ static inline bool lttng_kernel_type_is_bytewise_integer(const struct lttng_kern
|
||||
if (!type_integer)
|
||||
return false;
|
||||
switch (type_integer->size) {
|
||||
- case 8: /* Fall-through. */
|
||||
- case 16: /* Fall-through. */
|
||||
- case 32: /* Fall-through. */
|
||||
+ case 8:
|
||||
+ lttng_fallthrough;
|
||||
+ case 16:
|
||||
+ lttng_fallthrough;
|
||||
+ case 32:
|
||||
+ lttng_fallthrough;
|
||||
case 64:
|
||||
break;
|
||||
default:
|
||||
diff --git a/include/wrapper/compiler_attributes.h b/include/wrapper/compiler_attributes.h
|
||||
new file mode 100644
|
||||
index 00000000..c2c96e76
|
||||
--- /dev/null
|
||||
+++ b/include/wrapper/compiler_attributes.h
|
||||
@@ -0,0 +1,34 @@
|
||||
+/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
|
||||
+ *
|
||||
+ * wrapper/compiler_attributes.h
|
||||
+ *
|
||||
+ * Copyright (C) 2021 Michael Jeanson <mjeanson@efficios.com>
|
||||
+ */
|
||||
+
|
||||
+#ifndef _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H
|
||||
+#define _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H
|
||||
+
|
||||
+#include <lttng/kernel-version.h>
|
||||
+
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,20,0))
|
||||
+#include <linux/compiler_attributes.h>
|
||||
+#endif
|
||||
+
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0))
|
||||
+
|
||||
+/*
|
||||
+ * Use the kernel provided fallthrough attribute macro.
|
||||
+ */
|
||||
+#define lttng_fallthrough fallthrough
|
||||
+
|
||||
+#else /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0) */
|
||||
+
|
||||
+/*
|
||||
+ * Fallback to the comment for kernels pre 5.15 that don't build with
|
||||
+ * '-Wimplicit-fallthrough=5'.
|
||||
+ */
|
||||
+#define lttng_fallthrough do {} while (0) /* fallthrough */
|
||||
+
|
||||
+#endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0) */
|
||||
+
|
||||
+#endif /* _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H */
|
||||
diff --git a/src/lib/counter/counter.c b/src/lib/counter/counter.c
|
||||
index a4500a0e..bf038aac 100644
|
||||
--- a/src/lib/counter/counter.c
|
||||
+++ b/src/lib/counter/counter.c
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <linux/cpumask.h>
|
||||
#include <counter/counter.h>
|
||||
#include <counter/counter-internal.h>
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
#include <wrapper/vmalloc.h>
|
||||
#include <wrapper/limits.h>
|
||||
|
||||
@@ -324,7 +325,8 @@ int lttng_counter_aggregate(const struct lib_counter_config *config,
|
||||
*underflow = false;
|
||||
|
||||
switch (config->alloc) {
|
||||
- case COUNTER_ALLOC_GLOBAL: /* Fallthrough */
|
||||
+ case COUNTER_ALLOC_GLOBAL:
|
||||
+ lttng_fallthrough;
|
||||
case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
|
||||
/* Read global counter. */
|
||||
ret = lttng_counter_read(config, counter, dimension_indexes,
|
||||
@@ -342,7 +344,8 @@ int lttng_counter_aggregate(const struct lib_counter_config *config,
|
||||
switch (config->alloc) {
|
||||
case COUNTER_ALLOC_GLOBAL:
|
||||
break;
|
||||
- case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: /* Fallthrough */
|
||||
+ case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
|
||||
+ lttng_fallthrough;
|
||||
case COUNTER_ALLOC_PER_CPU:
|
||||
//TODO: integrate with CPU hotplug and online cpus
|
||||
for (cpu = 0; cpu < num_possible_cpus(); cpu++) {
|
||||
@@ -448,7 +451,8 @@ int lttng_counter_clear(const struct lib_counter_config *config,
|
||||
int cpu, ret;
|
||||
|
||||
switch (config->alloc) {
|
||||
- case COUNTER_ALLOC_GLOBAL: /* Fallthrough */
|
||||
+ case COUNTER_ALLOC_GLOBAL:
|
||||
+ lttng_fallthrough;
|
||||
case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
|
||||
/* Clear global counter. */
|
||||
ret = lttng_counter_clear_cpu(config, counter, dimension_indexes, -1);
|
||||
@@ -462,7 +466,8 @@ int lttng_counter_clear(const struct lib_counter_config *config,
|
||||
switch (config->alloc) {
|
||||
case COUNTER_ALLOC_GLOBAL:
|
||||
break;
|
||||
- case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: /* Fallthrough */
|
||||
+ case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
|
||||
+ lttng_fallthrough;
|
||||
case COUNTER_ALLOC_PER_CPU:
|
||||
//TODO: integrate with CPU hotplug and online cpus
|
||||
for (cpu = 0; cpu < num_possible_cpus(); cpu++) {
|
||||
diff --git a/src/lttng-abi.c b/src/lttng-abi.c
|
||||
index cc453894..eac1afd1 100644
|
||||
--- a/src/lttng-abi.c
|
||||
+++ b/src/lttng-abi.c
|
||||
@@ -34,6 +34,7 @@
|
||||
#include <ringbuffer/vfs.h>
|
||||
#include <ringbuffer/backend.h>
|
||||
#include <ringbuffer/frontend.h>
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
#include <wrapper/poll.h>
|
||||
#include <wrapper/file.h>
|
||||
#include <wrapper/kref.h>
|
||||
@@ -1332,7 +1333,8 @@ long lttng_metadata_ring_buffer_ioctl(struct file *filp,
|
||||
*/
|
||||
return -ENOSYS;
|
||||
}
|
||||
- case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY: /* Fall-through. */
|
||||
+ case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH:
|
||||
{
|
||||
struct lttng_metadata_stream *stream = filp->private_data;
|
||||
@@ -1441,7 +1443,8 @@ long lttng_metadata_ring_buffer_compat_ioctl(struct file *filp,
|
||||
*/
|
||||
return -ENOSYS;
|
||||
}
|
||||
- case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY: /* Fall-through. */
|
||||
+ case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH:
|
||||
{
|
||||
struct lttng_metadata_stream *stream = filp->private_data;
|
||||
@@ -1758,8 +1761,10 @@ int lttng_abi_validate_event_param(struct lttng_kernel_abi_event *event_param)
|
||||
switch (event_param->instrumentation) {
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
switch (event_param->u.syscall.entryexit) {
|
||||
- case LTTNG_KERNEL_ABI_SYSCALL_ENTRY: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_SYSCALL_EXIT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_SYSCALL_ENTRY:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_SYSCALL_EXIT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL_ENTRYEXIT:
|
||||
break;
|
||||
default:
|
||||
@@ -1783,20 +1788,26 @@ int lttng_abi_validate_event_param(struct lttng_kernel_abi_event *event_param)
|
||||
switch (event_param->u.kretprobe.entryexit) {
|
||||
case LTTNG_KERNEL_ABI_SYSCALL_ENTRYEXIT:
|
||||
break;
|
||||
- case LTTNG_KERNEL_ABI_SYSCALL_ENTRY: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_SYSCALL_EXIT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_SYSCALL_ENTRY:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_SYSCALL_EXIT:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -1830,18 +1841,23 @@ int lttng_abi_create_event(struct file *channel_file,
|
||||
}
|
||||
|
||||
switch (event_param->instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
fops = <tng_event_recorder_enabler_fops;
|
||||
break;
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
fops = <tng_event_recorder_event_fops;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -1867,7 +1883,8 @@ int lttng_abi_create_event(struct file *channel_file,
|
||||
goto event_error;
|
||||
|
||||
switch (event_param->instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
{
|
||||
struct lttng_event_enabler *event_enabler;
|
||||
@@ -1887,8 +1904,10 @@ int lttng_abi_create_event(struct file *channel_file,
|
||||
break;
|
||||
}
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
{
|
||||
struct lttng_kernel_event_recorder *event;
|
||||
@@ -1908,8 +1927,10 @@ int lttng_abi_create_event(struct file *channel_file,
|
||||
break;
|
||||
}
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
goto event_error;
|
||||
@@ -2043,18 +2064,23 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file,
|
||||
}
|
||||
|
||||
switch (event_notifier_param->event.instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
fops = <tng_event_notifier_enabler_fops;
|
||||
break;
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
fops = <tng_event_notifier_event_fops;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
goto inval_instr;
|
||||
@@ -2086,7 +2112,8 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file,
|
||||
goto event_notifier_error;
|
||||
|
||||
switch (event_notifier_param->event.instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
{
|
||||
struct lttng_event_notifier_enabler *enabler;
|
||||
@@ -2110,8 +2137,10 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file,
|
||||
break;
|
||||
}
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
{
|
||||
struct lttng_kernel_event_notifier *event_notifier;
|
||||
@@ -2135,8 +2164,10 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file,
|
||||
break;
|
||||
}
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
goto event_notifier_error;
|
||||
diff --git a/src/lttng-bytecode-interpreter.c b/src/lttng-bytecode-interpreter.c
|
||||
index b46a23b7..a2a932c6 100644
|
||||
--- a/src/lttng-bytecode-interpreter.c
|
||||
+++ b/src/lttng-bytecode-interpreter.c
|
||||
@@ -7,6 +7,7 @@
|
||||
* Copyright (C) 2010-2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
*/
|
||||
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
#include <wrapper/uaccess.h>
|
||||
#include <wrapper/objtool.h>
|
||||
#include <wrapper/types.h>
|
||||
@@ -421,7 +422,8 @@ static int dynamic_get_index(struct lttng_kernel_probe_ctx *lttng_probe_ctx,
|
||||
}
|
||||
break;
|
||||
case LOAD_ROOT_CONTEXT:
|
||||
- case LOAD_ROOT_APP_CONTEXT: /* Fall-through */
|
||||
+ lttng_fallthrough;
|
||||
+ case LOAD_ROOT_APP_CONTEXT:
|
||||
{
|
||||
ret = context_get_index(lttng_probe_ctx,
|
||||
&stack_top->u.ptr,
|
||||
diff --git a/src/lttng-bytecode-specialize.c b/src/lttng-bytecode-specialize.c
|
||||
index c4b9d04b..f8b5f19d 100644
|
||||
--- a/src/lttng-bytecode-specialize.c
|
||||
+++ b/src/lttng-bytecode-specialize.c
|
||||
@@ -8,6 +8,8 @@
|
||||
*/
|
||||
|
||||
#include <linux/slab.h>
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
+
|
||||
#include <lttng/lttng-bytecode.h>
|
||||
#include <lttng/align.h>
|
||||
#include <lttng/events-internal.h>
|
||||
@@ -271,7 +273,8 @@ static int specialize_get_index(struct bytecode_runtime *runtime,
|
||||
}
|
||||
case OBJECT_TYPE_STRUCT:
|
||||
/* Only generated by the specialize phase. */
|
||||
- case OBJECT_TYPE_VARIANT: /* Fall-through */
|
||||
+ case OBJECT_TYPE_VARIANT:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
printk(KERN_WARNING "LTTng: bytecode: Unexpected get index type %d",
|
||||
(int) stack_top->load.object_type);
|
||||
diff --git a/src/lttng-events.c b/src/lttng-events.c
|
||||
index e785fe4d..230e3934 100644
|
||||
--- a/src/lttng-events.c
|
||||
+++ b/src/lttng-events.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/dmi.h>
|
||||
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
#include <wrapper/uuid.h>
|
||||
#include <wrapper/vmalloc.h> /* for wrapper_vmalloc_sync_mappings() */
|
||||
#include <wrapper/random.h>
|
||||
@@ -659,12 +660,14 @@ int lttng_event_enable(struct lttng_kernel_event_common *event)
|
||||
goto end;
|
||||
}
|
||||
switch (event->priv->instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
WRITE_ONCE(event->enabled, 1);
|
||||
break;
|
||||
@@ -673,8 +676,10 @@ int lttng_event_enable(struct lttng_kernel_event_common *event)
|
||||
ret = lttng_kretprobes_event_enable_state(event, 1);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
ret = -EINVAL;
|
||||
@@ -719,12 +724,14 @@ int lttng_event_disable(struct lttng_kernel_event_common *event)
|
||||
goto end;
|
||||
}
|
||||
switch (event->priv->instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
WRITE_ONCE(event->enabled, 0);
|
||||
break;
|
||||
@@ -733,8 +740,10 @@ int lttng_event_disable(struct lttng_kernel_event_common *event)
|
||||
ret = lttng_kretprobes_event_enable_state(event, 0);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
ret = -EINVAL;
|
||||
@@ -873,15 +882,20 @@ struct lttng_kernel_event_recorder *_lttng_kernel_event_recorder_create(struct l
|
||||
event_name = event_desc->event_name;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_UPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
event_name = event_param->name;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
ret = -EINVAL;
|
||||
@@ -1093,8 +1107,10 @@ struct lttng_kernel_event_recorder *_lttng_kernel_event_recorder_create(struct l
|
||||
WARN_ON_ONCE(!ret);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
ret = -EINVAL;
|
||||
@@ -1141,15 +1157,20 @@ struct lttng_kernel_event_notifier *_lttng_event_notifier_create(
|
||||
event_name = event_desc->event_name;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_UPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
event_name = event_notifier_param->event.name;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
ret = -EINVAL;
|
||||
@@ -1296,9 +1317,12 @@ struct lttng_kernel_event_notifier *_lttng_event_notifier_create(
|
||||
WARN_ON_ONCE(!ret);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
ret = -EINVAL;
|
||||
@@ -1423,14 +1447,18 @@ void register_event(struct lttng_kernel_event_recorder *event_recorder)
|
||||
ret = lttng_syscall_filter_enable_event(event_recorder->chan, event_recorder);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_UPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
ret = 0;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
@@ -1481,7 +1509,8 @@ int _lttng_event_unregister(struct lttng_kernel_event_recorder *event_recorder)
|
||||
ret = 0;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
@@ -1512,14 +1541,18 @@ void register_event_notifier(struct lttng_kernel_event_notifier *event_notifier)
|
||||
ret = lttng_syscall_filter_enable_event_notifier(event_notifier);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
ret = 0;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
@@ -1559,9 +1592,12 @@ int _lttng_event_notifier_unregister(
|
||||
ret = lttng_syscall_filter_disable_event_notifier(event_notifier);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
@@ -1614,8 +1650,10 @@ void _lttng_event_destroy(struct lttng_kernel_event_common *event)
|
||||
lttng_uprobes_destroy_event_private(event_recorder);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
@@ -1647,9 +1685,12 @@ void _lttng_event_destroy(struct lttng_kernel_event_common *event)
|
||||
lttng_uprobes_destroy_event_notifier_private(event_notifier);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
@@ -2713,7 +2754,8 @@ void lttng_session_sync_event_enablers(struct lttng_kernel_session *session)
|
||||
int nr_filters = 0;
|
||||
|
||||
switch (event_recorder_priv->parent.instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
/* Enable events */
|
||||
list_for_each_entry(enabler_ref,
|
||||
@@ -2807,7 +2849,8 @@ void lttng_event_notifier_group_sync_enablers(struct lttng_event_notifier_group
|
||||
int nr_filters = 0, nr_captures = 0;
|
||||
|
||||
switch (event_notifier_priv->parent.instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
/* Enable event_notifiers */
|
||||
list_for_each_entry(enabler_ref,
|
||||
@@ -3877,7 +3920,7 @@ int print_escaped_ctf_string(struct lttng_kernel_session *session, const char *s
|
||||
if (ret)
|
||||
goto error;
|
||||
/* We still print the current char */
|
||||
- /* Fallthrough */
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
ret = lttng_metadata_printf(session, "%c", cur);
|
||||
break;
|
||||
diff --git a/src/lttng-string-utils.c b/src/lttng-string-utils.c
|
||||
index d9447903..65946193 100644
|
||||
--- a/src/lttng-string-utils.c
|
||||
+++ b/src/lttng-string-utils.c
|
||||
@@ -4,6 +4,7 @@
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
|
||||
#include <lttng/string-utils.h>
|
||||
|
||||
@@ -302,7 +303,7 @@ retry:
|
||||
p = pattern_get_char_at_cb(p_at,
|
||||
pattern_get_char_at_cb_data);
|
||||
|
||||
- /* Fall-through. */
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
/*
|
||||
* Default case which will compare the escaped
|
||||
diff --git a/src/probes/lttng-kretprobes.c b/src/probes/lttng-kretprobes.c
|
||||
index 0fa6a1bf..1d0a5ecb 100644
|
||||
--- a/src/probes/lttng-kretprobes.c
|
||||
+++ b/src/probes/lttng-kretprobes.c
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <lttng/events.h>
|
||||
#include <lttng/events-internal.h>
|
||||
#include <ringbuffer/frontend_types.h>
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
#include <wrapper/vmalloc.h>
|
||||
#include <wrapper/irqflags.h>
|
||||
#include <lttng/tracer.h>
|
||||
@@ -61,7 +62,8 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi,
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
- case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER: /* Fall-through. */
|
||||
+ case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
@@ -90,7 +92,8 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi,
|
||||
chan->ops->event_commit(&ctx);
|
||||
break;
|
||||
}
|
||||
- case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER: /* Fall-through. */
|
||||
+ case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
From 8e52fd71e693619f7a58de2692e59f0c826e9988 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 13:52:57 -0400
|
||||
Subject: [PATCH 03/10] fix: sched/tracing: Don't re-read p->state when
|
||||
emitting sched_switch event (v5.18)
|
||||
|
||||
See upstream commit :
|
||||
|
||||
commit fa2c3254d7cfff5f7a916ab928a562d1165f17bb
|
||||
Author: Valentin Schneider <valentin.schneider@arm.com>
|
||||
Date: Thu Jan 20 16:25:19 2022 +0000
|
||||
|
||||
sched/tracing: Don't re-read p->state when emitting sched_switch event
|
||||
|
||||
As of commit
|
||||
|
||||
c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu")
|
||||
|
||||
the following sequence becomes possible:
|
||||
|
||||
p->__state = TASK_INTERRUPTIBLE;
|
||||
__schedule()
|
||||
deactivate_task(p);
|
||||
ttwu()
|
||||
READ !p->on_rq
|
||||
p->__state=TASK_WAKING
|
||||
trace_sched_switch()
|
||||
__trace_sched_switch_state()
|
||||
task_state_index()
|
||||
return 0;
|
||||
|
||||
TASK_WAKING isn't in TASK_REPORT, so the task appears as TASK_RUNNING in
|
||||
the trace event.
|
||||
|
||||
Prevent this by pushing the value read from __schedule() down the trace
|
||||
event.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: I46743cd006be4b4d573cae2d77df7d6d16744d04
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/instrumentation/events/sched.h | 88 +++++++++++++++++++++++---
|
||||
1 file changed, 78 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/include/instrumentation/events/sched.h b/include/instrumentation/events/sched.h
|
||||
index 91953a6f..339bec94 100644
|
||||
--- a/include/instrumentation/events/sched.h
|
||||
+++ b/include/instrumentation/events/sched.h
|
||||
@@ -20,7 +20,37 @@
|
||||
#ifndef _TRACE_SCHED_DEF_
|
||||
#define _TRACE_SCHED_DEF_
|
||||
|
||||
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0))
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
+
|
||||
+static inline long __trace_sched_switch_state(bool preempt,
|
||||
+ unsigned int prev_state,
|
||||
+ struct task_struct *p)
|
||||
+{
|
||||
+ unsigned int state;
|
||||
+
|
||||
+#ifdef CONFIG_SCHED_DEBUG
|
||||
+ BUG_ON(p != current);
|
||||
+#endif /* CONFIG_SCHED_DEBUG */
|
||||
+
|
||||
+ /*
|
||||
+ * Preemption ignores task state, therefore preempted tasks are always
|
||||
+ * RUNNING (we will not have dequeued if state != RUNNING).
|
||||
+ */
|
||||
+ if (preempt)
|
||||
+ return TASK_REPORT_MAX;
|
||||
+
|
||||
+ /*
|
||||
+ * task_state_index() uses fls() and returns a value from 0-8 range.
|
||||
+ * Decrement it by 1 (except TASK_RUNNING state i.e 0) before using
|
||||
+ * it for left shift operation to get the correct task->state
|
||||
+ * mapping.
|
||||
+ */
|
||||
+ state = __task_state_index(prev_state, p->exit_state);
|
||||
+
|
||||
+ return state ? (1 << (state - 1)) : state;
|
||||
+}
|
||||
+
|
||||
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0))
|
||||
|
||||
static inline long __trace_sched_switch_state(bool preempt, struct task_struct *p)
|
||||
{
|
||||
@@ -321,43 +351,81 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(sched_wakeup_template, sched_wakeup_new,
|
||||
/*
|
||||
* Tracepoint for task switches, performed by the scheduler:
|
||||
*/
|
||||
+
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
LTTNG_TRACEPOINT_EVENT(sched_switch,
|
||||
|
||||
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0))
|
||||
TP_PROTO(bool preempt,
|
||||
- struct task_struct *prev,
|
||||
- struct task_struct *next),
|
||||
+ unsigned int prev_state,
|
||||
+ struct task_struct *prev,
|
||||
+ struct task_struct *next),
|
||||
|
||||
- TP_ARGS(preempt, prev, next),
|
||||
+ TP_ARGS(preempt, prev_state, prev, next),
|
||||
+
|
||||
+ TP_FIELDS(
|
||||
+ ctf_array_text(char, prev_comm, prev->comm, TASK_COMM_LEN)
|
||||
+ ctf_integer(pid_t, prev_tid, prev->pid)
|
||||
+ ctf_integer(int, prev_prio, prev->prio - MAX_RT_PRIO)
|
||||
+#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
|
||||
+ ctf_enum(task_state, long, prev_state, __trace_sched_switch_state(preempt, prev_state, prev))
|
||||
#else
|
||||
- TP_PROTO(struct task_struct *prev,
|
||||
+ ctf_integer(long, prev_state, __trace_sched_switch_state(preempt, prev_state, prev))
|
||||
+#endif
|
||||
+ ctf_array_text(char, next_comm, next->comm, TASK_COMM_LEN)
|
||||
+ ctf_integer(pid_t, next_tid, next->pid)
|
||||
+ ctf_integer(int, next_prio, next->prio - MAX_RT_PRIO)
|
||||
+ )
|
||||
+)
|
||||
+
|
||||
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0))
|
||||
+
|
||||
+LTTNG_TRACEPOINT_EVENT(sched_switch,
|
||||
+
|
||||
+ TP_PROTO(bool preempt,
|
||||
+ struct task_struct *prev,
|
||||
struct task_struct *next),
|
||||
|
||||
- TP_ARGS(prev, next),
|
||||
-#endif /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0)) */
|
||||
+ TP_ARGS(preempt, prev, next),
|
||||
|
||||
TP_FIELDS(
|
||||
ctf_array_text(char, prev_comm, prev->comm, TASK_COMM_LEN)
|
||||
ctf_integer(pid_t, prev_tid, prev->pid)
|
||||
ctf_integer(int, prev_prio, prev->prio - MAX_RT_PRIO)
|
||||
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0))
|
||||
#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
|
||||
ctf_enum(task_state, long, prev_state, __trace_sched_switch_state(preempt, prev))
|
||||
#else
|
||||
ctf_integer(long, prev_state, __trace_sched_switch_state(preempt, prev))
|
||||
#endif
|
||||
+ ctf_array_text(char, next_comm, next->comm, TASK_COMM_LEN)
|
||||
+ ctf_integer(pid_t, next_tid, next->pid)
|
||||
+ ctf_integer(int, next_prio, next->prio - MAX_RT_PRIO)
|
||||
+ )
|
||||
+)
|
||||
+
|
||||
#else
|
||||
+
|
||||
+LTTNG_TRACEPOINT_EVENT(sched_switch,
|
||||
+
|
||||
+ TP_PROTO(struct task_struct *prev,
|
||||
+ struct task_struct *next),
|
||||
+
|
||||
+ TP_ARGS(prev, next),
|
||||
+
|
||||
+ TP_FIELDS(
|
||||
+ ctf_array_text(char, prev_comm, prev->comm, TASK_COMM_LEN)
|
||||
+ ctf_integer(pid_t, prev_tid, prev->pid)
|
||||
+ ctf_integer(int, prev_prio, prev->prio - MAX_RT_PRIO)
|
||||
#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
|
||||
ctf_enum(task_state, long, prev_state, __trace_sched_switch_state(prev))
|
||||
#else
|
||||
ctf_integer(long, prev_state, __trace_sched_switch_state(prev))
|
||||
-#endif
|
||||
#endif
|
||||
ctf_array_text(char, next_comm, next->comm, TASK_COMM_LEN)
|
||||
ctf_integer(pid_t, next_tid, next->pid)
|
||||
ctf_integer(int, next_prio, next->prio - MAX_RT_PRIO)
|
||||
)
|
||||
)
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* Tracepoint for a task being migrated:
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
From 868e0b6db59159197c2cec3550fa4ad5e6572bc5 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 13:54:59 -0400
|
||||
Subject: [PATCH 04/10] fix: block: remove genhd.h (v5.18)
|
||||
|
||||
See upstream commit :
|
||||
|
||||
commit 322cbb50de711814c42fb088f6d31901502c711a
|
||||
Author: Christoph Hellwig <hch@lst.de>
|
||||
Date: Mon Jan 24 10:39:13 2022 +0100
|
||||
|
||||
block: remove genhd.h
|
||||
|
||||
There is no good reason to keep genhd.h separate from the main blkdev.h
|
||||
header that includes it. So fold the contents of genhd.h into blkdev.h
|
||||
and remove genhd.h entirely.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: I7cf2aaa3a4c133320b95f2edde49f790f9515dbd
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/wrapper/genhd.h | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/include/wrapper/genhd.h b/include/wrapper/genhd.h
|
||||
index 3c6dbcbe..4a59b68e 100644
|
||||
--- a/include/wrapper/genhd.h
|
||||
+++ b/include/wrapper/genhd.h
|
||||
@@ -12,7 +12,11 @@
|
||||
#ifndef _LTTNG_WRAPPER_GENHD_H
|
||||
#define _LTTNG_WRAPPER_GENHD_H
|
||||
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
+#include <linux/blkdev.h>
|
||||
+#else
|
||||
#include <linux/genhd.h>
|
||||
+#endif
|
||||
|
||||
#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0))
|
||||
#define LTTNG_GENHD_FL_HIDDEN GENHD_FL_HIDDEN
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
From 2bc7cb7193124d20aa4e1b5dbad0410bfb97a470 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 14:12:13 -0400
|
||||
Subject: [PATCH 05/10] fix: scsi: block: Remove REQ_OP_WRITE_SAME support
|
||||
(v5.18)
|
||||
|
||||
See upstream commit :
|
||||
|
||||
commit 73bd66d9c834220579c881a3eb020fd8917075d8
|
||||
Author: Christoph Hellwig <hch@lst.de>
|
||||
Date: Wed Feb 9 09:28:28 2022 +0100
|
||||
|
||||
scsi: block: Remove REQ_OP_WRITE_SAME support
|
||||
|
||||
No more users of REQ_OP_WRITE_SAME or drivers implementing it are left,
|
||||
so remove the infrastructure.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: Ifbff71f79f8b590436fc7cb79f82d90c6e033d84
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/instrumentation/events/block.h | 32 ++++++++++++++++++++++++++
|
||||
1 file changed, 32 insertions(+)
|
||||
|
||||
diff --git a/include/instrumentation/events/block.h b/include/instrumentation/events/block.h
|
||||
index 3e1104d7..050a59a2 100644
|
||||
--- a/include/instrumentation/events/block.h
|
||||
+++ b/include/instrumentation/events/block.h
|
||||
@@ -66,6 +66,37 @@ LTTNG_TRACEPOINT_ENUM(block_rq_type,
|
||||
#define lttng_bio_op(bio) bio_op(bio)
|
||||
#define lttng_bio_rw(bio) ((bio)->bi_opf)
|
||||
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
+#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
|
||||
+#define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \
|
||||
+ ctf_enum(block_rq_type, type, rwbs, \
|
||||
+ ( (op) == REQ_OP_WRITE ? RWBS_FLAG_WRITE : \
|
||||
+ ( (op) == REQ_OP_DISCARD ? RWBS_FLAG_DISCARD : \
|
||||
+ ( (op) == REQ_OP_SECURE_ERASE ? (RWBS_FLAG_DISCARD | RWBS_FLAG_SECURE) : \
|
||||
+ ( (op) == REQ_OP_FLUSH ? RWBS_FLAG_FLUSH : \
|
||||
+ ( (op) == REQ_OP_READ ? RWBS_FLAG_READ : \
|
||||
+ ( 0 )))))) \
|
||||
+ | ((rw) & REQ_RAHEAD ? RWBS_FLAG_RAHEAD : 0) \
|
||||
+ | ((rw) & REQ_SYNC ? RWBS_FLAG_SYNC : 0) \
|
||||
+ | ((rw) & REQ_META ? RWBS_FLAG_META : 0) \
|
||||
+ | ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \
|
||||
+ | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0))
|
||||
+#else
|
||||
+#define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \
|
||||
+ ctf_integer(type, rwbs, \
|
||||
+ ( (op) == REQ_OP_WRITE ? RWBS_FLAG_WRITE : \
|
||||
+ ( (op) == REQ_OP_DISCARD ? RWBS_FLAG_DISCARD : \
|
||||
+ ( (op) == REQ_OP_SECURE_ERASE ? (RWBS_FLAG_DISCARD | RWBS_FLAG_SECURE) : \
|
||||
+ ( (op) == REQ_OP_FLUSH ? RWBS_FLAG_FLUSH : \
|
||||
+ ( (op) == REQ_OP_READ ? RWBS_FLAG_READ : \
|
||||
+ ( 0 )))))) \
|
||||
+ | ((rw) & REQ_RAHEAD ? RWBS_FLAG_RAHEAD : 0) \
|
||||
+ | ((rw) & REQ_SYNC ? RWBS_FLAG_SYNC : 0) \
|
||||
+ | ((rw) & REQ_META ? RWBS_FLAG_META : 0) \
|
||||
+ | ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \
|
||||
+ | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0))
|
||||
+#endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */
|
||||
+#else
|
||||
#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
|
||||
#define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \
|
||||
ctf_enum(block_rq_type, type, rwbs, \
|
||||
@@ -95,6 +126,7 @@ LTTNG_TRACEPOINT_ENUM(block_rq_type,
|
||||
| ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \
|
||||
| ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0))
|
||||
#endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */
|
||||
+#endif
|
||||
|
||||
#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,1,0))
|
||||
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
From 369d82bb1746447514c877088d7c5fd0f39140f8 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 14:33:42 -0400
|
||||
Subject: [PATCH 06/10] fix: random: remove unused tracepoints (v5.18)
|
||||
|
||||
See upstream commit :
|
||||
|
||||
commit 14c174633f349cb41ea90c2c0aaddac157012f74
|
||||
Author: Jason A. Donenfeld <Jason@zx2c4.com>
|
||||
Date: Thu Feb 10 16:40:44 2022 +0100
|
||||
|
||||
random: remove unused tracepoints
|
||||
|
||||
These explicit tracepoints aren't really used and show sign of aging.
|
||||
It's work to keep these up to date, and before I attempted to keep them
|
||||
up to date, they weren't up to date, which indicates that they're not
|
||||
really used. These days there are better ways of introspecting anyway.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: I3b8c3e2732e7efdd76ce63204ac53a48784d0df6
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
src/probes/Kbuild | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/probes/Kbuild b/src/probes/Kbuild
|
||||
index e26b4359..8d6ff0f2 100644
|
||||
--- a/src/probes/Kbuild
|
||||
+++ b/src/probes/Kbuild
|
||||
@@ -187,8 +187,11 @@ ifneq ($(CONFIG_FRAME_WARN),0)
|
||||
CFLAGS_lttng-probe-printk.o += -Wframe-larger-than=2200
|
||||
endif
|
||||
|
||||
+# Introduced in v3.6, remove in v5.18
|
||||
obj-$(CONFIG_LTTNG) += $(shell \
|
||||
- if [ $(VERSION) -ge 4 \
|
||||
+ if [ \( ! \( $(VERSION) -ge 6 -o \( $(VERSION) -eq 5 -a $(PATCHLEVEL) -ge 18 \) \) \) \
|
||||
+ -a \
|
||||
+ $(VERSION) -ge 4 \
|
||||
-o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -ge 6 \) \
|
||||
-o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -eq 5 -a $(SUBLEVEL) -ge 2 \) \
|
||||
-o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -eq 4 -a $(SUBLEVEL) -ge 9 \) \
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
From 3c46ddc134621dba65030263aa321dd6bdae3ba3 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 15:02:10 -0400
|
||||
Subject: [PATCH 07/10] fix: kprobes: Use rethook for kretprobe if possible
|
||||
(v5.18)
|
||||
|
||||
See upstream commit :
|
||||
|
||||
commit 73f9b911faa74ac5107879de05c9489c419f41bb
|
||||
Author: Masami Hiramatsu <mhiramat@kernel.org>
|
||||
Date: Sat Mar 26 11:27:05 2022 +0900
|
||||
|
||||
kprobes: Use rethook for kretprobe if possible
|
||||
|
||||
Use rethook for kretprobe function return hooking if the arch sets
|
||||
CONFIG_HAVE_RETHOOK=y. In this case, CONFIG_KRETPROBE_ON_RETHOOK is
|
||||
set to 'y' automatically, and the kretprobe internal data fields
|
||||
switches to use rethook. If not, it continues to use kretprobe
|
||||
specific function return hooks.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: I2b7670dc04e4769c1e3c372582ad2f555f6d7a66
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/wrapper/kprobes.h | 17 +++++++++++++++++
|
||||
src/probes/lttng-kretprobes.c | 2 +-
|
||||
2 files changed, 18 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/wrapper/kprobes.h b/include/wrapper/kprobes.h
|
||||
index b546d615..51d32b7c 100644
|
||||
--- a/include/wrapper/kprobes.h
|
||||
+++ b/include/wrapper/kprobes.h
|
||||
@@ -29,4 +29,21 @@ struct kretprobe *lttng_get_kretprobe(struct kretprobe_instance *ri)
|
||||
|
||||
#endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) */
|
||||
|
||||
+
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
+static inline
|
||||
+unsigned long lttng_get_kretprobe_retaddr(struct kretprobe_instance *ri)
|
||||
+{
|
||||
+ return get_kretprobe_retaddr(ri);
|
||||
+}
|
||||
+
|
||||
+#else
|
||||
+
|
||||
+static inline
|
||||
+unsigned long lttng_get_kretprobe_retaddr(struct kretprobe_instance *ri)
|
||||
+{
|
||||
+ return (unsigned long) ri->ret_addr;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
#endif /* _LTTNG_WRAPPER_KPROBES_H */
|
||||
diff --git a/src/probes/lttng-kretprobes.c b/src/probes/lttng-kretprobes.c
|
||||
index 5cb2e953..565df739 100644
|
||||
--- a/src/probes/lttng-kretprobes.c
|
||||
+++ b/src/probes/lttng-kretprobes.c
|
||||
@@ -81,7 +81,7 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi,
|
||||
int ret;
|
||||
|
||||
payload.ip = (unsigned long) lttng_get_kretprobe(krpi)->kp.addr;
|
||||
- payload.parent_ip = (unsigned long) krpi->ret_addr;
|
||||
+ payload.parent_ip = lttng_get_kretprobe_retaddr(krpi);
|
||||
|
||||
lib_ring_buffer_ctx_init(&ctx, event_recorder, sizeof(payload),
|
||||
lttng_alignof(payload), <tng_probe_ctx);
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
From e8d2f286b5b208ac8870d0a9c167b170e96169b3 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 15:08:48 -0400
|
||||
Subject: [PATCH 08/10] fix: scsi: core: Remove <scsi/scsi_request.h> (v5.18)
|
||||
|
||||
See upstream commit :
|
||||
|
||||
commit 26440303310591e29121964ede0048583cb3126d
|
||||
Author: Christoph Hellwig <hch@lst.de>
|
||||
Date: Thu Feb 24 18:55:52 2022 +0100
|
||||
|
||||
scsi: core: Remove <scsi/scsi_request.h>
|
||||
|
||||
This header is empty now except for an include of <linux/blk-mq.h>, so
|
||||
remove it.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: Ic8ee3352f1e8bddfcd44c31be9b788db82f183aa
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/instrumentation/events/block.h | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/include/instrumentation/events/block.h b/include/instrumentation/events/block.h
|
||||
index 050a59a2..882e6e08 100644
|
||||
--- a/include/instrumentation/events/block.h
|
||||
+++ b/include/instrumentation/events/block.h
|
||||
@@ -11,9 +11,9 @@
|
||||
#include <linux/trace_seq.h>
|
||||
#include <lttng/kernel-version.h>
|
||||
|
||||
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0))
|
||||
+#if LTTNG_KERNEL_RANGE(4,11,0, 5,18,0)
|
||||
#include <scsi/scsi_request.h>
|
||||
-#endif /* (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) */
|
||||
+#endif /* LTTNG_KERNEL_RANGE(4,11,0, 5,18,0) */
|
||||
|
||||
#ifndef _TRACE_BLOCK_DEF_
|
||||
#define _TRACE_BLOCK_DEF_
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
From 82fbf9d383ff9069808fb0f5f75c660098dbae52 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Tue, 5 Apr 2022 14:57:41 -0400
|
||||
Subject: [PATCH 09/10] Rename genhd wrapper to blkdev
|
||||
|
||||
The genhd.h header was folded into blkdev.h in v5.18, rename our wrapper
|
||||
to follow upstream.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: I4ec94fb94d11712dd20f0680aea1de77fbfa9d17
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/wrapper/{genhd.h => blkdev.h} | 10 +++++-----
|
||||
src/lttng-statedump-impl.c | 2 +-
|
||||
2 files changed, 6 insertions(+), 6 deletions(-)
|
||||
rename include/wrapper/{genhd.h => blkdev.h} (93%)
|
||||
|
||||
diff --git a/include/wrapper/genhd.h b/include/wrapper/blkdev.h
|
||||
similarity index 93%
|
||||
rename from include/wrapper/genhd.h
|
||||
rename to include/wrapper/blkdev.h
|
||||
index 4a59b68e..0d5ad90f 100644
|
||||
--- a/include/wrapper/genhd.h
|
||||
+++ b/include/wrapper/blkdev.h
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
|
||||
*
|
||||
- * wrapper/genhd.h
|
||||
+ * wrapper/blkdev.h
|
||||
*
|
||||
* wrapper around block layer functions and data structures. Using
|
||||
* KALLSYMS to get its address when available, else we need to have a
|
||||
@@ -9,8 +9,8 @@
|
||||
* Copyright (C) 2011-2014 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
*/
|
||||
|
||||
-#ifndef _LTTNG_WRAPPER_GENHD_H
|
||||
-#define _LTTNG_WRAPPER_GENHD_H
|
||||
+#ifndef _LTTNG_WRAPPER_BLKDEV_H
|
||||
+#define _LTTNG_WRAPPER_BLKDEV_H
|
||||
|
||||
#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
#include <linux/blkdev.h>
|
||||
@@ -45,7 +45,7 @@ struct class *wrapper_get_block_class(void)
|
||||
/*
|
||||
* Canary function to check for 'block_class' at compile time.
|
||||
*
|
||||
- * From 'include/linux/genhd.h':
|
||||
+ * From 'include/linux/blkdev.h':
|
||||
*
|
||||
* extern struct class block_class;
|
||||
*/
|
||||
@@ -104,4 +104,4 @@ struct device_type *wrapper_get_disk_type(void)
|
||||
|
||||
#endif
|
||||
|
||||
-#endif /* _LTTNG_WRAPPER_GENHD_H */
|
||||
+#endif /* _LTTNG_WRAPPER_BLKDEV_H */
|
||||
diff --git a/src/lttng-statedump-impl.c b/src/lttng-statedump-impl.c
|
||||
index 4d7b2921..0e753090 100644
|
||||
--- a/src/lttng-statedump-impl.c
|
||||
+++ b/src/lttng-statedump-impl.c
|
||||
@@ -41,7 +41,7 @@
|
||||
#include <wrapper/namespace.h>
|
||||
#include <wrapper/irq.h>
|
||||
#include <wrapper/tracepoint.h>
|
||||
-#include <wrapper/genhd.h>
|
||||
+#include <wrapper/blkdev.h>
|
||||
#include <wrapper/file.h>
|
||||
#include <wrapper/fdtable.h>
|
||||
#include <wrapper/sched.h>
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
From f9208dc00756dfa0a2f191799722030bdf3f793d Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 15:14:01 -0400
|
||||
Subject: [PATCH 10/10] fix: mm: compaction: cleanup the compaction trace
|
||||
events (v5.18)
|
||||
|
||||
See upstream commit :
|
||||
|
||||
commit abd4349ff9b8d242376b67711254221f64f447c7
|
||||
Author: Baolin Wang <baolin.wang@linux.alibaba.com>
|
||||
Date: Tue Mar 22 14:45:56 2022 -0700
|
||||
|
||||
mm: compaction: cleanup the compaction trace events
|
||||
|
||||
As Steven suggested [1], we should access the pointers from the trace
|
||||
event to avoid dereferencing them to the tracepoint function when the
|
||||
tracepoint is disabled.
|
||||
|
||||
[1] https://lkml.org/lkml/2021/11/3/409
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: I6c08250df8596e8dbc76780ae5d95c899c12e6fe
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/instrumentation/events/compaction.h | 17 ++++++++++++++++-
|
||||
src/probes/Kbuild | 17 ++++++++++++++++-
|
||||
src/probes/lttng-probe-compaction.c | 5 +++++
|
||||
3 files changed, 37 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/include/instrumentation/events/compaction.h b/include/instrumentation/events/compaction.h
|
||||
index 15964537..ecae39a8 100644
|
||||
--- a/include/instrumentation/events/compaction.h
|
||||
+++ b/include/instrumentation/events/compaction.h
|
||||
@@ -97,7 +97,22 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(compaction_isolate_template,
|
||||
|
||||
#endif /* #else #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0) */
|
||||
|
||||
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0))
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
+LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages,
|
||||
+
|
||||
+ compaction_migratepages,
|
||||
+
|
||||
+ TP_PROTO(struct compact_control *cc,
|
||||
+ unsigned int nr_succeeded),
|
||||
+
|
||||
+ TP_ARGS(cc, nr_succeeded),
|
||||
+
|
||||
+ TP_FIELDS(
|
||||
+ ctf_integer(unsigned long, nr_migrated, nr_succeeded)
|
||||
+ ctf_integer(unsigned long, nr_failed, cc->nr_migratepages - nr_succeeded)
|
||||
+ )
|
||||
+)
|
||||
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0))
|
||||
LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages,
|
||||
|
||||
compaction_migratepages,
|
||||
diff --git a/src/probes/Kbuild b/src/probes/Kbuild
|
||||
index 8d6ff0f2..54784477 100644
|
||||
--- a/src/probes/Kbuild
|
||||
+++ b/src/probes/Kbuild
|
||||
@@ -167,7 +167,22 @@ ifneq ($(CONFIG_BTRFS_FS),)
|
||||
endif # $(wildcard $(btrfs_dep))
|
||||
endif # CONFIG_BTRFS_FS
|
||||
|
||||
-obj-$(CONFIG_LTTNG) += lttng-probe-compaction.o
|
||||
+# A dependency on internal header 'mm/internal.h' was introduced in v5.18
|
||||
+compaction_dep = $(srctree)/mm/internal.h
|
||||
+compaction_dep_wildcard = $(wildcard $(compaction_dep))
|
||||
+compaction_dep_check = $(shell \
|
||||
+if [ \( $(VERSION) -ge 6 \
|
||||
+ -o \( $(VERSION) -eq 5 -a $(PATCHLEVEL) -ge 18 \) \) -a \
|
||||
+ -z "$(compaction_dep_wildcard)" ] ; then \
|
||||
+ echo "warn" ; \
|
||||
+else \
|
||||
+ echo "ok" ; \
|
||||
+fi ;)
|
||||
+ifeq ($(compaction_dep_check),ok)
|
||||
+ obj-$(CONFIG_LTTNG) += lttng-probe-compaction.o
|
||||
+else
|
||||
+ $(warning Files $(compaction_dep) not found. Probe "compaction" is disabled. Use full kernel source tree to enable it.)
|
||||
+endif # $(wildcard $(compaction_dep))
|
||||
|
||||
ifneq ($(CONFIG_EXT4_FS),)
|
||||
ext4_dep = $(srctree)/fs/ext4/*.h
|
||||
diff --git a/src/probes/lttng-probe-compaction.c b/src/probes/lttng-probe-compaction.c
|
||||
index f8ddf384..ffaf45f0 100644
|
||||
--- a/src/probes/lttng-probe-compaction.c
|
||||
+++ b/src/probes/lttng-probe-compaction.c
|
||||
@@ -10,6 +10,11 @@
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <lttng/tracer.h>
|
||||
+#include <lttng/kernel-version.h>
|
||||
+
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
+#include "../mm/internal.h"
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* Create the tracepoint static inlines from the kernel to validate that our
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -10,13 +10,22 @@ inherit module
|
||||
include lttng-platforms.inc
|
||||
|
||||
SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \
|
||||
file://0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch \
|
||||
file://0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.patch \
|
||||
file://0001-Fix-compaction-migratepages-event-name.patch \
|
||||
file://0002-Fix-tracepoint-event-allow-same-provider-and-event-n.patch \
|
||||
file://0003-fix-sched-tracing-Don-t-re-read-p-state-when-emittin.patch \
|
||||
file://0004-fix-block-remove-genhd.h-v5.18.patch \
|
||||
file://0005-fix-scsi-block-Remove-REQ_OP_WRITE_SAME-support-v5.1.patch \
|
||||
file://0006-fix-random-remove-unused-tracepoints-v5.18.patch \
|
||||
file://0007-fix-kprobes-Use-rethook-for-kretprobe-if-possible-v5.patch \
|
||||
file://0008-fix-scsi-core-Remove-scsi-scsi_request.h-v5.18.patch \
|
||||
file://0009-Rename-genhd-wrapper-to-blkdev.patch \
|
||||
file://0010-fix-mm-compaction-cleanup-the-compaction-trace-event.patch \
|
||||
"
|
||||
|
||||
# Use :append here so that the patch is applied also when using devupstream
|
||||
SRC_URI:append = " file://0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch"
|
||||
|
||||
SRC_URI[sha256sum] = "5ebf2b3cd128b3a1c8afaea1e98d5a6f7f0676fd524fcf72361c34d9dc603356"
|
||||
SRC_URI[sha256sum] = "7cf1acbb50b84116acc9b4281b81dcc2643d6018bbd1e8514ad1270239896c4b"
|
||||
|
||||
export INSTALL_MOD_DIR="kernel/lttng-modules"
|
||||
|
||||
@@ -33,10 +33,10 @@ if os.path.exists(outfile):
|
||||
with open(infile, 'r') as file:
|
||||
data = file.read()
|
||||
|
||||
preamble_regex = re.compile( '^(.*?)^struct', re.MULTILINE | re.DOTALL )
|
||||
preamble_regex = re.compile( '^(.*?)^(struct|const struct|static struct|static const struct)', re.MULTILINE | re.DOTALL )
|
||||
|
||||
preamble = re.search( preamble_regex, data )
|
||||
struct_block_regex = re.compile( '^struct.*?(\w+) (.*?)\[\] = {(.*?)^};', re.MULTILINE | re.DOTALL )
|
||||
struct_block_regex = re.compile( '^(struct|const struct|static struct|static const struct).*?(\w+) (.*?)\[\] = {(.*?)^};', re.MULTILINE | re.DOTALL )
|
||||
field_regex = re.compile( '{.*?},', re.MULTILINE | re.DOTALL )
|
||||
cpuid_regex = re.compile( '\.cpuid = (.*?),', re.MULTILINE | re.DOTALL )
|
||||
name_regex = re.compile( '\.name = (.*?),', re.MULTILINE | re.DOTALL )
|
||||
@@ -45,22 +45,25 @@ name_regex = re.compile( '\.name = (.*?),', re.MULTILINE | re.DOTALL )
|
||||
# types and then their fields.
|
||||
entry_dict = {}
|
||||
for struct in re.findall( struct_block_regex, data ):
|
||||
# print( "struct: %s %s" % (struct[0],struct[1]) )
|
||||
entry_dict[struct[1]] = {}
|
||||
entry_dict[struct[1]]['type'] = struct[0]
|
||||
entry_dict[struct[1]]['fields'] = {}
|
||||
for entry in re.findall( field_regex, struct[2] ):
|
||||
# print( "struct: %s %s %s" % (struct[0],struct[1],struct[2]) )
|
||||
entry_dict[struct[2]] = {}
|
||||
entry_dict[struct[2]]['type_prefix'] = struct[0]
|
||||
entry_dict[struct[2]]['type'] = struct[1]
|
||||
entry_dict[struct[2]]['fields'] = {}
|
||||
for entry in re.findall( field_regex, struct[3] ):
|
||||
#print( " entry: %s" % entry )
|
||||
cpuid = re.search( cpuid_regex, entry )
|
||||
if cpuid:
|
||||
#print( " cpuid found: %s" % cpuid.group(1) )
|
||||
entry_dict[struct[1]]['fields'][cpuid.group(1)] = entry
|
||||
|
||||
entry_dict[struct[2]]['fields'][cpuid.group(1)] = entry
|
||||
|
||||
name = re.search( name_regex, entry )
|
||||
if name:
|
||||
#print( " name found: %s" % name.group(1) )
|
||||
entry_dict[struct[1]]['fields'][name.group(1)] = entry
|
||||
|
||||
entry_dict[struct[2]]['fields'][name.group(1)] = entry
|
||||
|
||||
if not entry_dict[struct[2]]['fields']:
|
||||
entry_dict[struct[2]]['fields']['0'] = entry
|
||||
|
||||
# created ordered dictionaries from the captured values. These are ordered by
|
||||
# a sorted() iteration of the keys. We don't care about the order we read
|
||||
@@ -72,6 +75,7 @@ for struct in re.findall( struct_block_regex, data ):
|
||||
entry_dict_sorted = OrderedDict()
|
||||
for i in sorted(entry_dict.keys()):
|
||||
entry_dict_sorted[i] = {}
|
||||
entry_dict_sorted[i]['type_prefix'] = entry_dict[i]['type_prefix']
|
||||
entry_dict_sorted[i]['type'] = entry_dict[i]['type']
|
||||
entry_dict_sorted[i]['fields'] = {}
|
||||
for f in sorted(entry_dict[i]['fields'].keys()):
|
||||
@@ -83,7 +87,7 @@ outf = open( outfile, 'w' )
|
||||
print( preamble.group(1) )
|
||||
outf.write( preamble.group(1) )
|
||||
for d in entry_dict_sorted:
|
||||
outf.write( "struct %s %s[] = {\n" % (entry_dict_sorted[d]['type'],d) )
|
||||
outf.write( "%s %s %s[] = {\n" % (entry_dict_sorted[d]['type_prefix'], entry_dict_sorted[d]['type'],d) )
|
||||
for f in entry_dict_sorted[d]['fields']:
|
||||
outf.write( entry_dict_sorted[d]['fields'][f] + '\n' )
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
|
||||
file://racefix.patch \
|
||||
"
|
||||
|
||||
PV .= ".4681"
|
||||
SRCREV = "15f74fab653a784548d5d966644926b47ba2cfa7"
|
||||
PV .= ".4912"
|
||||
SRCREV = "a7583c42cd6b64fd276a5d7bb0db5ce7bfafa730"
|
||||
|
||||
# Do not consider .z in x.y.z, as that is updated with every commit
|
||||
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+)\.0"
|
||||
|
||||
26
scripts/git
Executable file
26
scripts/git
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Wrapper around 'git' that doesn't think we are root
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
os.environ['PSEUDO_UNLOAD'] = '1'
|
||||
|
||||
# calculate path to the real 'git'
|
||||
path = os.environ['PATH']
|
||||
# we need to remove our path but also any other copy of this script which
|
||||
# may be present, e.g. eSDK.
|
||||
replacements = [os.path.dirname(sys.argv[0])]
|
||||
for p in path.split(":"):
|
||||
if p.endswith("/scripts"):
|
||||
replacements.append(p)
|
||||
for r in replacements:
|
||||
path = path.replace(r, '/ignoreme')
|
||||
real_git = shutil.which('git', path=path)
|
||||
|
||||
if len(sys.argv) == 1:
|
||||
os.execl(real_git, 'git')
|
||||
|
||||
os.execv(real_git, sys.argv)
|
||||
@@ -50,7 +50,7 @@ class RootfsPlugin(SourcePlugin):
|
||||
|
||||
@staticmethod
|
||||
def __get_rootfs_dir(rootfs_dir):
|
||||
if os.path.isdir(rootfs_dir):
|
||||
if rootfs_dir and os.path.isdir(rootfs_dir):
|
||||
return os.path.realpath(rootfs_dir)
|
||||
|
||||
image_rootfs_dir = get_bitbake_var("IMAGE_ROOTFS", rootfs_dir)
|
||||
@@ -96,6 +96,9 @@ class RootfsPlugin(SourcePlugin):
|
||||
part.rootfs_dir = cls.__get_rootfs_dir(rootfs_dir)
|
||||
part.has_fstab = os.path.exists(os.path.join(part.rootfs_dir, "etc/fstab"))
|
||||
pseudo_dir = os.path.join(part.rootfs_dir, "../pseudo")
|
||||
if not os.path.lexists(pseudo_dir):
|
||||
pseudo_dir = os.path.join(cls.__get_rootfs_dir(None), '../pseudo')
|
||||
|
||||
if not os.path.lexists(pseudo_dir):
|
||||
logger.warn("%s folder does not exist. "
|
||||
"Usernames and permissions will be invalid " % pseudo_dir)
|
||||
|
||||
Reference in New Issue
Block a user