From patchwork Mon Feb 8 22:52:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Liu X-Patchwork-Id: 12076697 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 37340C433E0 for ; Mon, 8 Feb 2021 22:53:05 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id CB40364E7A for ; Mon, 8 Feb 2021 22:53:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CB40364E7A Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=fb.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 46F1E6B0005; Mon, 8 Feb 2021 17:53:04 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 445C56B006C; Mon, 8 Feb 2021 17:53:04 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3837F6B006E; Mon, 8 Feb 2021 17:53:04 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0036.hostedemail.com [216.40.44.36]) by kanga.kvack.org (Postfix) with ESMTP id 2271C6B0005 for ; Mon, 8 Feb 2021 17:53:04 -0500 (EST) Received: from smtpin26.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id DF3941801E697 for ; Mon, 8 Feb 2021 22:53:03 +0000 (UTC) X-FDA: 77796602646.26.kitty22_3f0800427602 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin26.hostedemail.com (Postfix) with ESMTP id B9448180EAD8B for ; Mon, 8 Feb 2021 22:53:03 +0000 (UTC) X-HE-Tag: kitty22_3f0800427602 X-Filterd-Recvd-Size: 4623 Received: from mx0b-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) by imf25.hostedemail.com (Postfix) with ESMTP for ; Mon, 8 Feb 2021 22:53:03 +0000 (UTC) Received: from pps.filterd (m0109331.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 118Mn3S9003817 for ; Mon, 8 Feb 2021 14:53:02 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding : content-type; s=facebook; bh=nkM0GdW9T6Kcb1ILKMXGgq9TA/Z8MFxSvHXscRjvoxs=; b=CRq94u0wjtnyRE/ICZ5KFNJ9l6tdqNCDdCvDxqIVRCijklNOj1DshXGNMvtVjpFs9qoI lz50kJ45zJPAvdcfVeBWdkEr/0WEduGCNH6htTpP7TxiCs4KMvKa+/h+vnODUZsTHEGi ubqxhYRIkTOrAaN8m0sNbjFxeJAAWGOgNYA= Received: from maileast.thefacebook.com ([163.114.130.16]) by mx0a-00082601.pphosted.com with ESMTP id 36hstpa7e5-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 08 Feb 2021 14:53:02 -0800 Received: from intmgw002.25.frc3.facebook.com (2620:10d:c0a8:1b::d) by mail.thefacebook.com (2620:10d:c0a8:83::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Mon, 8 Feb 2021 14:53:01 -0800 Received: by devbig006.ftw2.facebook.com (Postfix, from userid 4523) id 5E91B62E092E; Mon, 8 Feb 2021 14:52:59 -0800 (PST) From: Song Liu To: , , CC: , , , , Song Liu Subject: [PATCH v5 bpf-next 0/4] introduce bpf_iter for task_vma Date: Mon, 8 Feb 2021 14:52:51 -0800 Message-ID: <20210208225255.3089073-1-songliubraving@fb.com> X-Mailer: git-send-email 2.24.1 MIME-Version: 1.0 X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369,18.0.737 definitions=2021-02-08_16:2021-02-08,2021-02-08 signatures=0 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 suspectscore=0 malwarescore=0 impostorscore=0 mlxlogscore=822 mlxscore=0 priorityscore=1501 phishscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2102080127 X-FB-Internal: deliver X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: This set introduces bpf_iter for task_vma, which can be used to generate information similar to /proc/pid/maps. Patch 4/4 adds an example that mimics /proc/pid/maps. Current /proc//maps and /proc//smaps provide information of vma's of a process. However, these information are not flexible enough to cover all use cases. For example, if a vma cover mixed 2MB pages and 4kB pages (x86_64), there is no easy way to tell which address ranges are backed by 2MB pages. task_vma solves the problem by enabling the user to generate customize information based on the vma (and vma->vm_mm, vma->vm_file, etc.). Changes v4 => v5: 1. Fix a refcount leak on task_struct. (Yonghong) 2. Fix the selftest. (Yonghong) Changes v3 => v4: 1. Avoid skipping vma by assigning invalid prev_vm_start in task_vma_seq_stop(). (Yonghong) 2. Move "again" label in task_vma_seq_get_next() save a check. (Yonghong) Changes v2 => v3: 1. Rewrite 1/4 so that we hold mmap_lock while calling BPF program. This enables the BPF program to access the real vma with BTF. (Alexei) 2. Fix the logic when the control is returned to user space. (Yonghong) 3. Revise commit log and cover letter. (Yonghong) Changes v1 => v2: 1. Small fixes in task_iter.c and the selftests. (Yonghong) Song Liu (4): bpf: introduce task_vma bpf_iter bpf: allow bpf_d_path in sleepable bpf_iter program libbpf: introduce section "iter.s/" for sleepable bpf_iter program selftests/bpf: add test for bpf_iter_task_vma kernel/bpf/task_iter.c | 217 +++++++++++++++++- kernel/trace/bpf_trace.c | 5 + tools/lib/bpf/libbpf.c | 5 + .../selftests/bpf/prog_tests/bpf_iter.c | 118 +++++++++- tools/testing/selftests/bpf/progs/bpf_iter.h | 8 + .../selftests/bpf/progs/bpf_iter_task_vma.c | 58 +++++ 6 files changed, 400 insertions(+), 11 deletions(-) create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_task_vma.c --- 2.24.1