From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 AC775246768; Sat, 15 Nov 2025 23:41:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763250068; cv=none; b=i0srw5YlLpxhxlj76mAHn8xOI1Q962su+1m1pmigOLNr/4XxTwlXObuRy3xMFKx9EelSi3aMYJg17O//W7j5UHW6q9++Mexi0lz8s2V/8voCBg+cqQCkl/RgN7z8LHo/2eUpKDDyJFYhwExVlBfRB4IT0a5QR004hejQCtb7jXQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763250068; c=relaxed/simple; bh=ojTHLSjZBXCP+lYeZxCWYORNJqxatfl7RNTwhIJgLEE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qeiOvHgchC8X7RuzlnoqZEMFn6XB8VL4xw/A4Nl/QRzCb1iqj151wJPdZREGzN5s7BhXEFL3ZgBvGuV4hoY3pifYYt0Z2aBwvMtK0v9wCi4DxPkzqfCPbjn2pG3oGROC6/58/m1NG5WhLT2zcGA39gvSTQ5836SiF7llWvdgpcE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iAMtqO99; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="iAMtqO99" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A5B9DC4AF1D; Sat, 15 Nov 2025 23:41:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763250068; bh=ojTHLSjZBXCP+lYeZxCWYORNJqxatfl7RNTwhIJgLEE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=iAMtqO99TRakrBOkqn1IBcz8FDBT5X190PUoX0JEj84BoCOQIY9Uyh/v+91mhHBr3 dFaGiAQYPuJTigaJcDPPecRWQv5M4SpZQT2p/cF1csGiOIVsafXa547UdsO9fOuYOI 4zNkWGoRbldcMJwnO6wQdhqX0A42AT83Al36aegmDO6SCTl0lOhNPUy4dKbE2Pt5FA VnMW3WgBNmuu7A6rr6Meli3MEm1AB4d8mBF/6nfojmeY+1DvqBZpcpsI606pYaxv+A a5UwYtwcRHp3Z+UCxmyCl2Pwy/ycNm4IUBodK1mm7d7wEISPfBIkG+9HU5FJZWEIvF 1VjjD5/eKxNvA== From: Namhyung Kim To: Arnaldo Carvalho de Melo , Ian Rogers , James Clark Cc: Jiri Olsa , Adrian Hunter , Peter Zijlstra , Ingo Molnar , LKML , linux-perf-users@vger.kernel.org, Steven Rostedt , Josh Poimboeuf , Indu Bhagat , Jens Remus , Mathieu Desnoyers , linux-trace-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH v4 1/5] tools headers UAPI: Sync linux/perf_event.h for deferred callchains Date: Sat, 15 Nov 2025 15:41:02 -0800 Message-ID: <20251115234106.348571-2-namhyung@kernel.org> X-Mailer: git-send-email 2.52.0.rc1.455.g30608eb744-goog In-Reply-To: <20251115234106.348571-1-namhyung@kernel.org> References: <20251115234106.348571-1-namhyung@kernel.org> Precedence: bulk X-Mailing-List: linux-trace-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit It needs to sync with the kernel to support user space changes for the deferred callchains. Signed-off-by: Namhyung Kim --- tools/include/uapi/linux/perf_event.h | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/tools/include/uapi/linux/perf_event.h b/tools/include/uapi/linux/perf_event.h index 78a362b8002776e5..d292f96bc06f86bc 100644 --- a/tools/include/uapi/linux/perf_event.h +++ b/tools/include/uapi/linux/perf_event.h @@ -463,7 +463,9 @@ struct perf_event_attr { inherit_thread : 1, /* children only inherit if cloned with CLONE_THREAD */ remove_on_exec : 1, /* event is removed from task on exec */ sigtrap : 1, /* send synchronous SIGTRAP on event */ - __reserved_1 : 26; + defer_callchain: 1, /* request PERF_RECORD_CALLCHAIN_DEFERRED records */ + defer_output : 1, /* output PERF_RECORD_CALLCHAIN_DEFERRED records */ + __reserved_1 : 24; union { __u32 wakeup_events; /* wake up every n events */ @@ -1239,6 +1241,22 @@ enum perf_event_type { */ PERF_RECORD_AUX_OUTPUT_HW_ID = 21, + /* + * This user callchain capture was deferred until shortly before + * returning to user space. Previous samples would have kernel + * callchains only and they need to be stitched with this to make full + * callchains. + * + * struct { + * struct perf_event_header header; + * u64 cookie; + * u64 nr; + * u64 ips[nr]; + * struct sample_id sample_id; + * }; + */ + PERF_RECORD_CALLCHAIN_DEFERRED = 22, + PERF_RECORD_MAX, /* non-ABI */ }; @@ -1269,6 +1287,7 @@ enum perf_callchain_context { PERF_CONTEXT_HV = (__u64)-32, PERF_CONTEXT_KERNEL = (__u64)-128, PERF_CONTEXT_USER = (__u64)-512, + PERF_CONTEXT_USER_DEFERRED = (__u64)-640, PERF_CONTEXT_GUEST = (__u64)-2048, PERF_CONTEXT_GUEST_KERNEL = (__u64)-2176, -- 2.52.0.rc1.455.g30608eb744-goog