summaryrefslogtreecommitdiff
path: root/samples
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2026-07-06 14:18:22 +0100
committerMark Brown <broonie@kernel.org>2026-07-06 14:18:22 +0100
commit823174b80a65698154bc3ebc825ee7f84bad2e3f (patch)
treea7fe8084276fcf6cfa2b1f54d64fb91956307a1a /samples
parenta9010f55adaae8cd7b206414a0fcc82b2ae1c79e (diff)
parentd148260a31fddf6d59cc0ea4980bd78ebe301a91 (diff)
downloadlinux-next-823174b80a65698154bc3ebc825ee7f84bad2e3f.tar.gz
linux-next-823174b80a65698154bc3ebc825ee7f84bad2e3f.zip
Merge branch 'mm-unstable' of https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Diffstat (limited to 'samples')
-rw-r--r--samples/damon/Kconfig2
-rw-r--r--samples/damon/mtier.c14
-rw-r--r--samples/damon/prcl.c11
-rw-r--r--samples/damon/wsse.c11
4 files changed, 31 insertions, 7 deletions
diff --git a/samples/damon/Kconfig b/samples/damon/Kconfig
index cbf96fd8a8bf..00be3e6bdd65 100644
--- a/samples/damon/Kconfig
+++ b/samples/damon/Kconfig
@@ -31,7 +31,7 @@ config SAMPLE_DAMON_MTIER
bool "DAMON sample module for memory tiering"
depends on DAMON && DAMON_PADDR
help
- Thps builds DAMON sample module for memory tierign.
+ This builds DAMON sample module for memory tiering.
The module assumes the system is constructed with two NUMA nodes,
which seems as local and remote nodes to all CPUs. For example,
diff --git a/samples/damon/mtier.c b/samples/damon/mtier.c
index 3785b0c7ffb1..e567f4edd80e 100644
--- a/samples/damon/mtier.c
+++ b/samples/damon/mtier.c
@@ -177,6 +177,7 @@ free_out:
static int damon_sample_mtier_start(void)
{
struct damon_ctx *ctx;
+ int err;
ctx = damon_sample_mtier_build_ctx(true);
if (!ctx)
@@ -188,12 +189,21 @@ static int damon_sample_mtier_start(void)
return -ENOMEM;
}
ctxs[1] = ctx;
- return damon_start(ctxs, 2, true);
+ err = damon_start(ctxs, 2, true);
+ if (!err)
+ return 0;
+
+ if (damon_is_running(ctxs[0]))
+ damon_stop(ctxs, 1);
+ damon_destroy_ctx(ctxs[0]);
+ damon_destroy_ctx(ctxs[1]);
+ return err;
}
static void damon_sample_mtier_stop(void)
{
- damon_stop(ctxs, 2);
+ damon_stop(ctxs, 1);
+ damon_stop(&ctxs[1], 1);
damon_destroy_ctx(ctxs[0]);
damon_destroy_ctx(ctxs[1]);
}
diff --git a/samples/damon/prcl.c b/samples/damon/prcl.c
index b7c50f2656ce..edeae145c4a8 100644
--- a/samples/damon/prcl.c
+++ b/samples/damon/prcl.c
@@ -106,11 +106,18 @@ static int damon_sample_prcl_start(void)
damon_set_schemes(ctx, &scheme, 1);
err = damon_start(&ctx, 1, true);
- if (err)
+ if (err) {
+ damon_destroy_ctx(ctx);
return err;
+ }
repeat_call_control.data = ctx;
- return damon_call(ctx, &repeat_call_control);
+ err = damon_call(ctx, &repeat_call_control);
+ if (err) {
+ damon_stop(&ctx, 1);
+ damon_destroy_ctx(ctx);
+ }
+ return err;
}
static void damon_sample_prcl_stop(void)
diff --git a/samples/damon/wsse.c b/samples/damon/wsse.c
index 799ad4443943..ff5e8a890f44 100644
--- a/samples/damon/wsse.c
+++ b/samples/damon/wsse.c
@@ -87,10 +87,17 @@ static int damon_sample_wsse_start(void)
target->pid = target_pidp;
err = damon_start(&ctx, 1, true);
- if (err)
+ if (err) {
+ damon_destroy_ctx(ctx);
return err;
+ }
repeat_call_control.data = ctx;
- return damon_call(ctx, &repeat_call_control);
+ err = damon_call(ctx, &repeat_call_control);
+ if (err) {
+ damon_stop(&ctx, 1);
+ damon_destroy_ctx(ctx);
+ }
+ return err;
}
static void damon_sample_wsse_stop(void)