From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4ADC8417BE5 for ; Thu, 17 Sep 2026 21:58:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789682287; cv=none; b=d8rWzy6H77lByZ+3llIuQ70hfFJcu8Vajd3TPV1/ewdl/a0U2BEl41EySvxHm7nY/CPidLCRpfr+zHl08xyzDRDTNvyCcgPgA3O4b40ZJ/EZsxQX+ECzaYcztZ/+0pE7YySux7L6sWdDcC+MnHmJFz4s3Gpffu1YZKjrR6u0JeQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789682287; c=relaxed/simple; bh=eMhXO2MN8Ed/4wbdpohDLwcOAYoPKduTWznFAf4HLPE=; h=Date:To:From:Subject:Message-Id; b=N9Vvqy2D1oFI4LphqWbyByjLeqatSX0EwrwLKlZ6Vl9sR/CnM4xAUSN1zhD092Ev3qFxVY9FAU6+sxVu3ZOmPufmLio5221IvKWHq3ThdqSREtLa/9wBo89OcTnaMzebWPpXso2vCtjWYheB3QzI+ljPN060qOMzUEJNttymZ1M= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b=a80h5nJC; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b="a80h5nJC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D14BD1F00898; Thu, 17 Sep 2026 21:58:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=korg; t=1789682284; bh=CtGZJ78Zj7rc2tQdawpKZVEjB/E/OPd34FngQrzBq/M=; h=Date:To:From:Subject; b=a80h5nJCW5VavT+uS7Myd1a3e4tQZAszGUVlQ725ll4gLhJIMnZ47e0wpWozhNfoe OyetsjA3/fw1TUhJ1VYampppxdMPbG3bhvHqovVEFSZjlqLKMfdhimVYhlUNHK1Hj7 wKAtrfWBQt9AKA0kb+FR5RbBMIrQw4zISmHIBYN8= Date: Thu, 17 Sep 2026 14:58:04 -0700 To: mm-commits@vger.kernel.org,sj@kernel.org,akpm@linux-foundation.org From: Andrew Morton Subject: + mm-damon-core-document-damon_call-damon_start-race-hang-issue.patch added to mm-new branch Message-Id: <20260917215804.D14BD1F00898@smtp.kernel.org> Precedence: bulk X-Mailing-List: mm-commits@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: The patch titled Subject: mm/damon/core: document damon_call()/damon_start() race hang issue has been added to the -mm mm-new branch. Its filename is mm-damon-core-document-damon_call-damon_start-race-hang-issue.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-damon-core-document-damon_call-damon_start-race-hang-issue.patch This patch will later appear in the mm-new branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Note, mm-new is a provisional staging ground for work-in-progress patches, and acceptance into mm-new is a notification for others take notice and to finish up reviews. Please do not hesitate to respond to review feedback and post updated versions to replace or incrementally fixup patches in mm-new. The mm-new branch of mm.git is not included in linux-next If a few days of testing in mm-new is successful, the patch will me moved into mm.git's mm-unstable branch, which is included in linux-next Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via various branches at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there most days ------------------------------------------------------ From: SJ Park Subject: mm/damon/core: document damon_call()/damon_start() race hang issue Date: Thu, 17 Sep 2026 07:22:03 -0700 Let's suppose damon_start() and damon_call() are executed in parallel for the same DAMON context. Then, damon_call() could show ctx->damon_calls_obsolete set while ctx->kdamond is unset. If damon_start() sets ctx->kdamond before damon_call() starts the cancelling, damon_call() can indefinitely hang. No DAMON API caller does such parallel execution of damon_start() and damon_call(), so the issue doesn't exist. But who knows what will happen in future. Add a clarification comment for caution. Link: https://lore.kernel.org/20260917142210.90829-6-sj@kernel.org Signed-off-by: SJ Park Signed-off-by: Andrew Morton Cc: Asier Gutierrez Cc: Brendan Higgins Cc: David Gow Cc: David Hildenbrand Cc: Jonathan Corbet Cc: Liam R. Howlett Cc: Lorenzo Stoakes Cc: Michal Hocko Cc: Mike Rapoport Cc: Randy Dunlap Cc: Shuah Khan Cc: Suren Baghdasaryan Cc: Vlastimil Babka --- mm/damon/core.c | 3 +++ 1 file changed, 3 insertions(+) --- a/mm/damon/core.c~mm-damon-core-document-damon_call-damon_start-race-hang-issue +++ a/mm/damon/core.c @@ -2258,6 +2258,9 @@ int damon_kdamond_pid(struct damon_ctx * * * When this function is failed, the @ctx is guaranteed to be stopped. * + * This function should not be called in parallel to damon_start() for the + * @ctx. In the case, this function could indefinitely hang. + * * Return: 0 on success, negative error code otherwise. */ int damon_call(struct damon_ctx *ctx, struct damon_call_control *control) _ Patches currently in -mm which might be from sj@kernel.org are mm-damon-vaddr-avoid-hw-driven-pte-updates-during-damon_hugetlb_mkold.patch mm-damon-core-reset-invalid-quota-charge_target_from.patch mm-damon-core-dont-skip-damos_adjust_quota-while-esz-is-not-zero.patch mm-damon-core-skip-applying-scheme-if-region-split-for-quota-fails.patch mm-damon-paddr-respect-folio-end-for-damos_stat.patch mm-damon-paddr-respect-folio-end-for-damos-actions-except-stat.patch mm-damon-vaddr-respect-folio-end-for-damos_stat.patch mm-damon-vaddr-respect-folio-end-for-damos_migrate_hotcold.patch mm-damon-core-handle-extreme-memory-state-in-damon_get_node_mem_bp.patch mm-damon-core-handle-extreme-memory-state-in-get_node_memcg_used_bp.patch mm-damon-core-handle-extreme-memory-state-in-get_in_active_mem_bp.patch mm-damon-core-introduce-damon_filter_type_pgidle_unset.patch mm-damon-paddr-support-pgidle_unset-probe-filter-type.patch mm-damon-sysfs-support-pgidle_unset-probe-filter-type.patch docs-mm-damon-design-document-pgidle_unset-probe-filter-type.patch mm-damon-core-introduce-damon_prep-struct.patch mm-damon-core-commit-preps.patch mm-damon-core-introduce-damon_operations-prep_probes.patch mm-damon-paddr-support-damon_prep.patch mm-damon-sysfs-implement-preps-directory.patch mm-damon-sysfs-implement-preps-nr_preps-file.patch mm-damon-sysfs-create-directories-for-nr_preps-writes.patch mm-damon-sysfs-implement-prep_action-file.patch mm-damon-sysfs-pass-preps-to-damon-core.patch selftests-damon-sysfssh-test-probe-prep-sysfs-files.patch docs-mm-damon-design-document-probe-preps.patch docs-admin-guide-mm-damon-usage-document-probe-preps-sysfs-files.patch docs-abi-damon-document-probe-prep-sysfs-files.patch mm-damon-tests-core-kunit-test-committing-psi-goal-to-psi-goal.patch mm-damon-core-handle-uninitialized-damos_quota_goal-last_psi_total.patch mm-damon-core-copy-nid-for-eligible_mem_bp-damos-quota-goal-commit.patch mm-damon-sysfs-set-next-refresh-jiffies-per-sysfs-context.patch mm-damon-tests-core-kunit-test-damon_commit_filter.patch mm-damon-tests-core-kunit-add-damon_commit_probes-test.patch selftests-damon-_damon_sysfs-implement-damonprobes.patch selftests-damon-drgn_dump_damon_status-dump-probes.patch selftests-damon-sysfspy-extend-commit-assertion-function-for-probes.patch selftests-damon-sysfspy-test-damon-probes.patch mm-damon-core-use-damon_nr_samples_per_aggr-for-max-merge-threshold.patch mm-damon-core-remove-debug-messages.patch mm-damon-core-remove-debug-messages-fix.patch mm-damon-vaddr-remove-a-debug-message.patch mm-damon-core-validate-number-of-probes-in-valid_probe_params.patch mm-damon-sysfs-remove-probes-number-validation.patch mm-damon-tests-core-kunit-extend-set_regions-test-for-error-case.patch mm-damon-tests-core-kunit-test-=0-size-damon_set_regions-inputs.patch mm-damon-tests-core-kunit-test-overlapping-ranges-for-set_regions.patch mm-damon-tests-core-kunit-test-damon_nr_samples_per_aggr.patch selftests-damon-sysfssh-test-hugepage_mem_bp-quota-goal.patch docs-mm-damon-maintainer-profile-update-ai-review-for-sashiko-replies.patch docs-abi-damon-recommend-subsystem-doc-instead-of-admin-guide.patch mm-damon-core-error-damos_commit_quota_goal-for-zero-target_value.patch revert-mm-damon-lru_sort-error-out-for-10000-active_mem_bp.patch revert-samples-damon-mtier-error-out-for-zero-quota-goal-target-values.patch mm-damon-core-handle-null-ctx-parameter-in-damon_call.patch mm-damon-core-set-ctx-call_controls_obsolete-in-damon_new_ctx.patch mm-damon-reclaim-remove-unnecessary-damon_call-param-validation.patch mm-damon-lru_sort-remove-unnecessary-damon_call-param-validation.patch mm-damon-vaddr-support-prep_probes.patch mm-damon-paddr-move-probe-filter-handling-to-ops-common.patch mm-damon-vaddr-support-apply_probe.patch mm-damon-vaddr-extend-apply_probes-for-hugetlb.patch mm-damon-vaddr-support-pgidle_unset-probe-filter-type.patch mm-damon-api-introduce-damon_filter_type_pgidle_set.patch mm-damon-paddr-support-damon_filter_type_pgidle_set.patch mm-damon-vaddr-support-damon_filter_type_pgidle_set.patch mm-damon-sysfs-support-damon_filter_type_pgidle_set.patch docs-mm-damon-design-update-for-pgidle_set-probe-filter.patch mm-damon-api-introduce-damos_filter_type_probe_hits_wsum.patch mm-damon-api-introduce-damos_filter_type_probe_hits_wsum-fix.patch mm-damon-core-extend-probe_hits_wsum-for-moving-sum-based-calculation.patch mm-damon-core-support-probe_hits_wsum-damos-core-filter.patch mm-damon-sysfs-schemes-rename-sysfs_filter-sz_range-to-range_minmax.patch mm-damon-sysfs-schemes-support-probe_hits_wsum-damos-core-filter.patch docs-mm-damon-design-update-for-probe_hits_wsum-damos-core-filter.patch docs-admin-guide-mm-damon-usage-update-for-probe_hits_wsum-damos-filter.patch mm-damon-sysfs-schemes-read-sysfs_filter-addr_range-only-once.patch mm-damon-sysfs-schemes-read-sysfs_filter-sz_range-only-once.patch mm-damon-core-return-an-error-from-damos_commit_filter_arg.patch mm-damon-core-disallow-max-min-damos-filter-range-arguments-commit.patch mm-damon-sysfs-schemes-drop-centralized-filter-range-arg-validations.patch mm-damon-sysfs-schemes-use-switch-case-in-add_scheme_filters.patch mm-damon-core-kunit-extend-damos_commit_filter_for-for-wrong-input.patch mm-damon-core-kunit-test-invalid-damos-filter-commits.patch mm-damon-api-introduce-damon_filter_type_hugepage_size.patch mm-damon-core-commit-hugepage_size-type-damon-filter.patch mm-damon-ops-common-support-hugepage_size-damon-filter-matching.patch mm-damon-sysfs-add-minmax-files-under-probe-filter-directory.patch mm-damon-sysfs-support-hugepage_size-probe-filter.patch docs-mm-damon-design-update-for-hugepage_size-probe-filter.patch docs-admin-guide-mm-damon-usage-update-for-hugepage_size.patch docs-abi-damon-update-for-hugepage_size-probe-filter.patch mm-damon-api-remove-nr_damos_filter_types.patch mm-damon-core-use-abs_diff-in-damon_feed_loop_next_input.patch mm-damon-core-use-mult_frac-in-damon_feed_loop_next_input.patch mm-damon-core-set-damon_ctx-walk_control_obsolete-in-damon_new_ctx.patch mm-damon-core-document-damon_call-damon_start-race-hang-issue.patch mm-damon-paddr-remove-pa-parameter-from-damon_pa_filter_pass.patch mm-damon-tests-core-kunit-test-eligible_mem_bp-commitment.patch mm-damon-tests-core-kunit-add-probe_hits_wsum-damos-filter-commit-test.patch selftests-damon-sysfs_memcg_path_leak-fail-only-for-real-damon-leak.patch docs-mm-damon-design-clarify-bp-is-basis-point.patch