Commit graph

1088974 commits

Author SHA1 Message Date
Mauro Carvalho Chehab
fc0b582c85 media: atomisp: fix bad usage at error handling logic
As warned by sparse:
	atomisp: drivers/staging/media/atomisp/pci/atomisp_acc.c:508 atomisp_acc_load_extensions() warn: iterator used outside loop: 'acc_fw'

The acc_fw interactor is used outside the loop, at the error handling
logic. On most cases, this is actually safe there, but, if
atomisp_css_set_acc_parameters() has an error, an attempt to use it
will pick an invalid value for acc_fw.

Reported-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:35 +01:00
Mauro Carvalho Chehab
2023a99811 media: platform: rename mediatek/mtk-jpeg/ to mediatek/jpeg/
As the end goal is to have platform drivers split by vendor,
rename mediatek/mtk-jpeg/ to mediatek/jpeg/.

Requested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:35 +01:00
Mauro Carvalho Chehab
6cdc31b2d7 media: media/*/Kconfig: sort entries
Currently, the idems inside media Kconfig are out of order.
Sort them using the script below:

<script>
use strict;
use warnings;

my %config;
my @source;
my $out;

sub flush_config()
{
	if (scalar %config) {
		for my $c (sort keys %config) {
			$out .= $config{$c} . "\n";
		}
		%config = ();
	}

	return if (!scalar @source);

	$out .= "\n";
	for my $s (sort @source) {
		$out .= $s;
	}
	$out .= "\n";

	@source = ();
}

sub sort_kconfig($)
{
	my $fname = shift;
	my $cur_config = "";

	@source = ();
	$out = "";
	%config = ();

	open IN, $fname or die;
	while (<IN>) {
		if (m/^config\s+(.*)/) {
			$cur_config = $1;
			$config{$cur_config} .= $_;
		} elsif (m/^source\s+(.*)/) {
			push @source, $_;
		} elsif (m/^\s+/) {
			if ($cur_config eq "") {
				$out .= $_;
			} else {
				$config{$cur_config} .= $_;
			}
		} else {
			flush_config();
			$cur_config = "";
			$out .= $_;
		}
	}
	close IN or die;

	flush_config();

	$out =~ s/\n\n+/\n\n/g;
	$out =~ s/\n+$/\n/;

	open OUT, ">$fname";
	print OUT $out;
	close OUT;
}

for my $fname(@ARGV) {
	sort_kconfig $fname
}
</script>

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:35 +01:00
Mauro Carvalho Chehab
9958d30f38 media: Kconfig: cleanup VIDEO_DEV dependencies
media Kconfig has two entries associated to V4L API:
VIDEO_DEV and VIDEO_V4L2.

On Kernel 2.6.x, there were two V4L APIs, each one with its own flag.
VIDEO_DEV were meant to:
	1) enable Video4Linux and make its Kconfig options to appear;
	2) it makes the Kernel build the V4L core.

while VIDEO_V4L2 where used to distinguish between drivers that
implement the newer API and drivers that implemented the former one.

With time, such meaning changed, specially after the removal of
all V4L version 1 drivers.

At the current implementation, VIDEO_DEV only does (1): it enables
the media options related to V4L, that now has:

	menu "Video4Linux options"
		visible if VIDEO_DEV

	source "drivers/media/v4l2-core/Kconfig"
	endmenu

but it doesn't affect anymore the V4L core drivers.

The rationale is that the V4L2 core has a "soft" dependency
at the I2C bus, and now requires to select a number of other
Kconfig options:

	config VIDEO_V4L2
		tristate
		depends on (I2C || I2C=n) && VIDEO_DEV
		select RATIONAL
		select VIDEOBUF2_V4L2 if VIDEOBUF2_CORE
		default (I2C || I2C=n) && VIDEO_DEV

In the past, merging them would be tricky, but it seems that it is now
possible to merge those symbols, in order to simplify V4L dependencies.

Let's keep VIDEO_DEV, as this one is used on some make *defconfig
configurations.

Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com> # for meson-vdec & meson-ge2d
Acked-by: Andrzej Pietrasiewicz <andrzejtp2010@gmail.com>
Acked-by: Łukasz Stelmach <l.stelmach@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:35 +01:00
Mauro Carvalho Chehab
63fe3d27b2 media: platform/*/Kconfig: make manufacturer menus more uniform
Do some adjustments at the per-vendor Kconfig, adding a comment at
the beginning in order to identify the manufacturer, and adjust
a few entries to make them look more uniform.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com> # For sunxi
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:35 +01:00
Mauro Carvalho Chehab
f2ab6d3e8c media: platform: Create vendor/{Makefile,Kconfig} files
Instead of placing multiple per-vendor entries at the
platform/{Makefile,Kconfig}, create them at the per-vendor
directories.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:35 +01:00
Mauro Carvalho Chehab
68f8ef61c6 media: platform: ti/Kconfig: move VPE/CAL entries to it
In order to follow the changes made by the previous patch,
which moved platform/ti-vpe to platform/ti, move the Kconfig
entries to the same place.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:35 +01:00
Pratyush Yadav
8148baabd1 media: platform: re-structure TI drivers
The ti-vpe/ sub-directory does not only contain the VPE-specific things.
It also contains the CAL driver, which is a completely different
subsystem. This is also not a good place to add new drivers for other TI
platforms since they will all get mixed up.

Separate the VPE and CAL parts into different sub-directories and rename
the ti-vpe/ sub-directory to ti/. This is now the place where new TI
platform drivers can be added.

[mchehab: rebased to apple on the top of media/platform/Kconfig series]
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:35 +01:00
Mauro Carvalho Chehab
012e3ca3cb media: platform: rename omap/ to ti/omap/
As the end goal is to have platform drivers split by vendor,
rename omap/ to ti/omap/.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:34 +01:00
Mauro Carvalho Chehab
ceafdaac46 media: platform: rename omap3isp/ to ti/omap3isp/
As the end goal is to have platform drivers split by vendor,
rename omap3isp/ to ti/omap3isp/.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:34 +01:00
Mauro Carvalho Chehab
d24a170bde media: platform: rename davinci/ to ti/davinci/
As the end goal is to have platform drivers split by vendor,
rename davinci/ to ti/davinci/.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:34 +01:00
Mauro Carvalho Chehab
407965e234 media: platform: rename am437x/ to ti/am437x/
As the end goal is to have platform drivers split by vendor,
rename am437x/ to ti/am437x/.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Lad Prabhakar <prabhakar.csengg@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:34 +01:00
Mauro Carvalho Chehab
e7b8153e2a media: platform: place stm32/ and sti/ under st/ dir
As the end goal is to have platform drivers split by vendor,
move both stm32/ and sti/ for them to be inside st/ directory.

Acked-by: Hugues Fruchet <hugues.fruchet@st.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:34 +01:00
Mauro Carvalho Chehab
43ecec16c4 media: platform: rename s5p-mfc/ to samsung/s5p-mfc/
As the end goal is to have platform drivers split by vendor,
rename s5p-mfc/ to samsung/s5p-mfc/.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:34 +01:00
Mauro Carvalho Chehab
f4104b7851 media: platform: rename s5p-jpeg/ to samsung/s5p-jpeg/
As the end goal is to have platform drivers split by vendor,
rename s5p-jpeg/ to samsung/s5p-jpeg/.

Acked-by: Andrzej Pietrasiewicz <andrzejtp2010@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:34 +01:00
Mauro Carvalho Chehab
a7f3b2d32d media: platform: rename s5p-g2d/ to samsung/s5p-g2d/
As the end goal is to have platform drivers split by vendor,
rename s5p-g2d/ to samsung/s5p-g2d/.

Acked-by: Łukasz Stelmach <l.stelmach@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:58:15 +01:00
Mauro Carvalho Chehab
c102404903 media: platform: rename s3c-camif/ to samsung/s3c-camif/
As the end goal is to have platform drivers split by vendor,
rename s3c-camif/ to samsung/s3c-camif/.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:52 +01:00
Mauro Carvalho Chehab
3bae07d4b4 media: platform: rename exynos-gsc/ to samsung/exynos-gsc/
As the end goal is to have platform drivers split by vendor,
rename exynos-gsc/ to samsung/exynos-gsc/.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:51 +01:00
Mauro Carvalho Chehab
238c84f711 media: platform: rename exynos4-is/ to samsung/exynos4-is/
As the end goal is to have platform drivers split by vendor,
rename exynos4-is/ to samsung/exynos4-is/.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:51 +01:00
Mauro Carvalho Chehab
9b18ef7c9f media: platform: rename tegra/vde/ to nvidia/tegra-vde/
As the end goal is to have platform drivers split by vendor,
rename tegra/vde/ to nvidia/tegra-vde/.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:51 +01:00
Mauro Carvalho Chehab
574476a7d0 media: platform: rename mtk-vpu/ to mediatek/mtk-vpu/
As the end goal is to have platform drivers split by vendor,
rename mtk-vpu/ to mediatek/mtk-vpu/.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:51 +01:00
Mauro Carvalho Chehab
728dc4075a media: platform: rename mtk-vcodec/ to mediatek/mtk-vcodec/
As the end goal is to have platform drivers split by vendor,
rename mtk-vcodec/ to mediatek/mtk-vcodec/.

Acked-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:51 +01:00
Mauro Carvalho Chehab
1cb72963fa media: platform: rename mtk-mdp/ to mediatek/mtk-mdp/
As the end goal is to have platform drivers split by vendor,
rename mtk-mdp/ to mediatek/mtk-mdp/.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:51 +01:00
Mauro Carvalho Chehab
8bbc139c6b media: platform: rename mtk-jpeg/ to mediatek/mtk-jpeg/
As the end goal is to have platform drivers split by vendor,
rename mtk-jpeg/ to mediatek/mtk-jpeg/.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:51 +01:00
Mauro Carvalho Chehab
c1f3caff24 media: platform: rename meson/ge2d/ to amlogic/meson-ge2d/
As the end goal is to have platform drivers split by vendor,
rename meson/ge2d/ to amlogic/meson-ge2d/.

Acked-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:51 +01:00
Mauro Carvalho Chehab
dc7bbea900 media: platform: rename marvell-ccic/ to marvell/
As the end goal is to have platform drivers split by vendor,
rename marvell-ccic/ to marvell/.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:51 +01:00
Mauro Carvalho Chehab
64441979bd media: platform: rename coda/ to chips-media/
As the end goal is to have platform drivers split by vendor,
rename coda/ to chips-media/.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:51 +01:00
Mauro Carvalho Chehab
d7700ca98d media: platform: Kconfig: place platform drivers on a submenu
Just like media bus drivers, place platform drivers on a
submenu, in order to better organize user-selection:

    Media drivers  --->
	    *** media drivers ***
	[*] Media USB Adapters  --->
	[*] Media PCI Adapters  --->
	-*- Radio Adapters  --->
	[*] Media platform devices  --->
	    *** MMC/SDIO DVB adapters ***
	< > Siano SMS1xxx based MDTV via SDIO interface
	[*] V4L test drivers  --->
	[*] DVB test drivers  --->
	    *** FireWire (IEEE 1394) Adapters ***
	<*> FireDTV and FloppyDTV
	    *** common driver options ***
	[ ] Enable Remote Controller support for Siano devices
	[ ] Enable debugfs for smsdvb

As this submenu depends on MEDIA_PLATFORM_DRIVERS and defaults to "y",
there's no need to change already-existing .config entries, nor touch
the several make *_defconfig.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:51 +01:00
Mauro Carvalho Chehab
0461b70d06 media: platform: move some manufacturer entries
As there are 4 manufacturer's directories with multiple sources
(qcom, rockchip, sti and sunxi), move the sources from
platform/Kconfig to their specific Konfig files.

Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Reviewed-by: Robert Foss <robert.foss@linaro.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:51 +01:00
Mauro Carvalho Chehab
32ccd1f5a1 media: platform: Kconfig: sort entries
Now that each non-generic driver has their own directory,
sort the entries.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:50 +01:00
Mauro Carvalho Chehab
f879856a91 media: platform: s5p-jpeg: move config to its own file
In order to better organize the platform/Kconfig, place
s5p-jpeg-specific config stuff on a separate Kconfig file.

Acked-by: Andrzej Pietrasiewicz <andrzejtp2010@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:50 +01:00
Mauro Carvalho Chehab
1d031da4f6 media: platform: s5p-mfc: move config to its own file
In order to better organize the platform/Kconfig, place
s5p-mfc-specific config stuff on a separate Kconfig file.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:31 +01:00
Mauro Carvalho Chehab
26e89e83df media: platform: bdisp: move config to its own file
In order to better organize the platform/Kconfig, place
bdisp-specific config stuff on a separate Kconfig file.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:31 +01:00
Mauro Carvalho Chehab
f5a6e9176e media: platform: delta: move config to its own file
In order to better organize the platform/Kconfig, place
delta-specific config stuff on a separate Kconfig file.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:31 +01:00
Mauro Carvalho Chehab
2662ce2d08 media: platform: rkisp1: move config to its own file
In order to better organize the platform/Kconfig, place
rkisp1-specific config stuff on a separate Kconfig file.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:31 +01:00
Mauro Carvalho Chehab
5cccbe83ff media: platform: ti-vpe: move config to its own file
In order to better organize the platform/Kconfig, place
ti-vpe-specific config stuff on a separate Kconfig file.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:31 +01:00
Mauro Carvalho Chehab
669f0cb5ea media: platform: vde: move config to its own file
In order to better organize the platform/Kconfig, place
vde-specific config stuff on a separate Kconfig file.

Acked-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:31 +01:00
Mauro Carvalho Chehab
e19e7b615c media: platform: sun8i-rotate: move config to its own file
In order to better organize the platform/Kconfig, place
sun8i-rotate-specific config stuff on a separate Kconfig file.

Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:31 +01:00
Mauro Carvalho Chehab
7acd0dd9e9 media: platform: sun8i-di: move config to its own file
In order to better organize the platform/Kconfig, place
sun8i-di-specific config stuff on a separate Kconfig file.

Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:31 +01:00
Mauro Carvalho Chehab
72a9107921 media: platform: stm32: move config to its own file
In order to better organize the platform/Kconfig, place
stm32-specific config stuff on a separate Kconfig file.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:31 +01:00
Mauro Carvalho Chehab
a97f41e9c3 media: platform: hva: move config to its own file
In order to better organize the platform/Kconfig, place
hva-specific config stuff on a separate Kconfig file.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:31 +01:00
Mauro Carvalho Chehab
bbb9ecf2ab media: platform: s5p-g2d: move config to its own file
In order to better organize the platform/Kconfig, place
s5p-g2d-specific config stuff on a separate Kconfig file.

Acked-by: Łukasz Stelmach <l.stelmach@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-03-18 05:56:14 +01:00
Dave Airlie
f11de8611f Merge tag 'drm-intel-next-fixes-2022-03-17' of git://anongit.freedesktop.org/drm/drm-intel into drm-next
- Do not re-enable PSR after it was marked as not reliable (Jose)
- Add missing boundary check in vm_access to avoid out-of-bounds access (Mastan)
- Naming fix for HPD short pulse handling for eDP (Jose)

Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/YjLnofpe5sMHX7Pt@jlahtine-mobl.ger.corp.intel.com
2022-03-18 13:44:08 +10:00
Dave Airlie
ca5a5761ac * drm/imx: Don't test bus flags in atomic check
* drm/mgag200: Fix PLL setup on some models
  * drm/panel: Fix bpp settings on Innolux G070Y2-L01; Fix DRM_PANEL_EDP
    Kconfig dependencies
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCAAdFiEEchf7rIzpz2NEoWjlaA3BHVMLeiMFAmIzDO0ACgkQaA3BHVML
 eiO6hQgAtRZG8gTQwr9HTILh93QT3dcOUqm8G8alYD06QcZERGUoWCmaMliptq+Q
 ysrn/TcacPRIVA+aFt9F7oLo8PoCmDBdt1po1fRtKC6cDI/b8AFZ2+zhh90IzaIa
 U2Ape43jpgjeIxeYusF3RhBuV621LnFZH2KjWQIOgfdl3RDXAAaRWnWvVjlFsUpC
 +0K0Tj0zf8HsohPbuGQtdfUKAKKOGhnm11wY/G6PUgVaPJ4n9lipwzqLHDA8AjUd
 yAR9nmBj7AxSPkiiV3HzMiK/CMdRTDiTntijxROP5zmzs08OkMa29NWwyKjTpPeK
 LngyJbol4K9RJTFW9mDZ+td1C8Ibig==
 =RRax
 -----END PGP SIGNATURE-----

Merge tag 'drm-misc-fixes-2022-03-17' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes

 * drm/imx: Don't test bus flags in atomic check
 * drm/mgag200: Fix PLL setup on some models
 * drm/panel: Fix bpp settings on Innolux G070Y2-L01; Fix DRM_PANEL_EDP
   Kconfig dependencies

Signed-off-by: Dave Airlie <airlied@redhat.com>

From: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/YjMNcqOuDFDoe+EN@linux-uq9g
2022-03-18 13:32:54 +10:00
Alexei Starovoitov
5a5c11ee3e Merge branch 'bpf: Add kprobe multi link'
Jiri Olsa says:

====================

hi,
this patchset adds new link type BPF_TRACE_KPROBE_MULTI that attaches
kprobe program through fprobe API [1] instroduced by Masami.

The fprobe API allows to attach probe on multiple functions at once very
fast, because it works on top of ftrace. On the other hand this limits
the probe point to the function entry or return.

With bpftrace support I see following attach speed:

  # perf stat --null -r 5 ./src/bpftrace -e 'kprobe:x* { } i:ms:1 { exit(); } '
  Attaching 2 probes...
  Attaching 3342 functions
  ...

  1.4960 +- 0.0285 seconds time elapsed  ( +-  1.91% )

v3 changes:
  - based on latest fprobe post from Masami [2]
  - add acks
  - add extra comment to kprobe_multi_link_handler wrt entry ip setup [Masami]
  - keep swap_words_64 static and swap values directly in
    bpf_kprobe_multi_cookie_swap [Andrii]
  - rearrange locking/migrate setup in kprobe_multi_link_prog_run [Andrii]
  - move uapi fields [Andrii]
  - add bpf_program__attach_kprobe_multi_opts function [Andrii]
  - many small test changes [Andrii]
  - added tests for bpf_program__attach_kprobe_multi_opts
  - make kallsyms_lookup_name check for empty string [Andrii]

v2 changes:
  - based on latest fprobe changes [1]
  - renaming the uapi interface to kprobe multi
  - adding support for sort_r to pass user pointer for swap functions
    and using that in cookie support to keep just single functions array
  - moving new link to kernel/trace/bpf_trace.c file
  - using single fprobe callback function for entry and exit
  - using kvzalloc, libbpf_ensure_mem functions
  - adding new k[ret]probe.multi sections instead of using current kprobe
  - used glob_match from test_progs.c, added '?' matching
  - move bpf_get_func_ip verifier inline change to seprate change
  - couple of other minor fixes

Also available at:
  https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
  bpf/kprobe_multi

thanks,
jirka

[1] https://lore.kernel.org/bpf/164458044634.586276.3261555265565111183.stgit@devnote2/
[2] https://lore.kernel.org/bpf/164735281449.1084943.12438881786173547153.stgit@devnote2/
====================

Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2022-03-17 20:17:19 -07:00
Jiri Olsa
318c812ceb selftests/bpf: Add cookie test for bpf_program__attach_kprobe_multi_opts
Adding bpf_cookie test for programs attached by
bpf_program__attach_kprobe_multi_opts API.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20220316122419.933957-14-jolsa@kernel.org
2022-03-17 20:17:19 -07:00
Jiri Olsa
9271a0c7ae selftests/bpf: Add attach test for bpf_program__attach_kprobe_multi_opts
Adding tests for bpf_program__attach_kprobe_multi_opts function,
that test attach with pattern, symbols and addrs.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20220316122419.933957-13-jolsa@kernel.org
2022-03-17 20:17:19 -07:00
Jiri Olsa
2c6401c966 selftests/bpf: Add kprobe_multi bpf_cookie test
Adding bpf_cookie test for programs attached by kprobe_multi links.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20220316122419.933957-12-jolsa@kernel.org
2022-03-17 20:17:19 -07:00
Jiri Olsa
f7a11eeccb selftests/bpf: Add kprobe_multi attach test
Adding kprobe_multi attach test that uses new fprobe interface to
attach kprobe program to multiple functions.

The test is attaching programs to bpf_fentry_test* functions and
uses single trampoline program bpf_prog_test_run to trigger
bpf_fentry_test* functions.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20220316122419.933957-11-jolsa@kernel.org
2022-03-17 20:17:19 -07:00
Jiri Olsa
ddc6b04989 libbpf: Add bpf_program__attach_kprobe_multi_opts function
Adding bpf_program__attach_kprobe_multi_opts function for attaching
kprobe program to multiple functions.

  struct bpf_link *
  bpf_program__attach_kprobe_multi_opts(const struct bpf_program *prog,
                                        const char *pattern,
                                        const struct bpf_kprobe_multi_opts *opts);

User can specify functions to attach with 'pattern' argument that
allows wildcards (*?' supported) or provide symbols or addresses
directly through opts argument. These 3 options are mutually
exclusive.

When using symbols or addresses, user can also provide cookie value
for each symbol/address that can be retrieved later in bpf program
with bpf_get_attach_cookie helper.

  struct bpf_kprobe_multi_opts {
          size_t sz;
          const char **syms;
          const unsigned long *addrs;
          const __u64 *cookies;
          size_t cnt;
          bool retprobe;
          size_t :0;
  };

Symbols, addresses and cookies are provided through opts object
(syms/addrs/cookies) as array pointers with specified count (cnt).

Each cookie value is paired with provided function address or symbol
with the same array index.

The program can be also attached as return probe if 'retprobe' is set.

For quick usage with NULL opts argument, like:

  bpf_program__attach_kprobe_multi_opts(prog, "ksys_*", NULL)

the 'prog' will be attached as kprobe to 'ksys_*' functions.

Also adding new program sections for automatic attachment:

  kprobe.multi/<symbol_pattern>
  kretprobe.multi/<symbol_pattern>

The symbol_pattern is used as 'pattern' argument in
bpf_program__attach_kprobe_multi_opts function.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20220316122419.933957-10-jolsa@kernel.org
2022-03-17 20:17:19 -07:00