From patchwork Thu Nov 1 07:00:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Liu X-Patchwork-Id: 991843 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=fb.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=fb.com header.i=@fb.com header.b="Dd4lVL0L"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 42lx234B9Dz9sVq for ; Thu, 1 Nov 2018 18:01:15 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728090AbeKAQCv (ORCPT ); Thu, 1 Nov 2018 12:02:51 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:50418 "EHLO mx0b-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727716AbeKAQCv (ORCPT ); Thu, 1 Nov 2018 12:02:51 -0400 Received: from pps.filterd (m0109331.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id wA16qXvN005388 for ; Thu, 1 Nov 2018 00:01:08 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=7EBwVpGU6cfoNRqG1P1JQWDDOcAtW/i60Agk+wxGtKY=; b=Dd4lVL0LDFRlG1tVtJ+UldI0vhPI8OgNCHBtscHaM0xn4PM85xQh+yDuTQDlyRHVJ8vf 4v3RU+jL5lTzTojXBFC1hUyV2Z8dC+tXBOmWRizlkojgx/VGar51Upr4fG6ByZMfb10s StXHpO1liWa1h3fsOfxtN+RKBfZrqWF+JXE= Received: from maileast.thefacebook.com ([199.201.65.23]) by mx0a-00082601.pphosted.com with ESMTP id 2nfqhhgme0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Thu, 01 Nov 2018 00:01:08 -0700 Received: from mx-out.facebook.com (2620:10d:c0a1:3::13) by mail.thefacebook.com (2620:10d:c021:18::174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA) id 15.1.1531.3; Thu, 1 Nov 2018 00:01:07 -0700 Received: by devbig006.ftw2.facebook.com (Postfix, from userid 4523) id 785FA62E1653; Thu, 1 Nov 2018 00:01:06 -0700 (PDT) Smtp-Origin-Hostprefix: devbig From: Song Liu Smtp-Origin-Hostname: devbig006.ftw2.facebook.com To: CC: , Song Liu , , , Smtp-Origin-Cluster: ftw2c04 Subject: [PATCH bpf 1/3] bpf: show real jited prog address in /proc/kallsyms Date: Thu, 1 Nov 2018 00:00:56 -0700 Message-ID: <20181101070058.2760251-2-songliubraving@fb.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181101070058.2760251-1-songliubraving@fb.com> References: <20181101070058.2760251-1-songliubraving@fb.com> X-FB-Internal: Safe MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-11-01_04:, , signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Currently, /proc/kallsyms shows page address of jited bpf program. This is not ideal for detailed profiling (find hot instructions from stack traces). This patch replaces the page address with real prog start address. Signed-off-by: Song Liu --- kernel/bpf/core.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index 6377225b2082..1a796e0799ec 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -553,7 +553,6 @@ bool is_bpf_text_address(unsigned long addr) int bpf_get_kallsym(unsigned int symnum, unsigned long *value, char *type, char *sym) { - unsigned long symbol_start, symbol_end; struct bpf_prog_aux *aux; unsigned int it = 0; int ret = -ERANGE; @@ -566,10 +565,9 @@ int bpf_get_kallsym(unsigned int symnum, unsigned long *value, char *type, if (it++ != symnum) continue; - bpf_get_prog_addr_region(aux->prog, &symbol_start, &symbol_end); bpf_get_prog_name(aux->prog, sym); - *value = symbol_start; + *value = (unsigned long)aux->prog->bpf_func; *type = BPF_SYM_ELF_TYPE; ret = 0; From patchwork Thu Nov 1 07:00:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Liu X-Patchwork-Id: 991840 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=fb.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=fb.com header.i=@fb.com header.b="fFcLW3oY"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 42lx1z41S4z9sVq for ; Thu, 1 Nov 2018 18:01:11 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728085AbeKAQCu (ORCPT ); Thu, 1 Nov 2018 12:02:50 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:59010 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727814AbeKAQCu (ORCPT ); Thu, 1 Nov 2018 12:02:50 -0400 Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id wA16sVTA003293 for ; Thu, 1 Nov 2018 00:01:08 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=tqI62n4fsLixEk7Eewo7F5KZVdSIOW3alTqjhPloWvU=; b=fFcLW3oYsO0qw2ZC/ftWbKO4/nQn/fKYhLbLV2yXk5L1vwSAqw46li2RebOXmNyQgrvA gdT91CAEFmIpmpMRA/1wx5cA2FpfILahLaNIYCQulwmLZA7G6gB2fqSmg8Dj71mDTs75 WZGzUZ5CP93G6cQd/rIPvpbkUXaznr5zDXM= Received: from maileast.thefacebook.com ([199.201.65.23]) by mx0a-00082601.pphosted.com with ESMTP id 2nfvkd80hh-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Thu, 01 Nov 2018 00:01:08 -0700 Received: from mx-out.facebook.com (2620:10d:c0a1:3::13) by mail.thefacebook.com (2620:10d:c021:18::172) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA) id 15.1.1531.3; Thu, 1 Nov 2018 00:01:06 -0700 Received: by devbig006.ftw2.facebook.com (Postfix, from userid 4523) id 8099A62E1E61; Thu, 1 Nov 2018 00:01:06 -0700 (PDT) Smtp-Origin-Hostprefix: devbig From: Song Liu Smtp-Origin-Hostname: devbig006.ftw2.facebook.com To: CC: , Song Liu , , , Smtp-Origin-Cluster: ftw2c04 Subject: [PATCH bpf 2/3] bpf: show real jited address in bpf_prog_info->jited_ksyms Date: Thu, 1 Nov 2018 00:00:57 -0700 Message-ID: <20181101070058.2760251-3-songliubraving@fb.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181101070058.2760251-1-songliubraving@fb.com> References: <20181101070058.2760251-1-songliubraving@fb.com> X-FB-Internal: Safe MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-11-01_04:, , signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Currently, jited_ksyms in bpf_prog_info shows page addresses of jited bpf program. This is not ideal for detailed profiling (find hot instructions from stack traces). This patch replaces the page address with real prog start address. Signed-off-by: Song Liu --- kernel/bpf/syscall.c | 1 - 1 file changed, 1 deletion(-) diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index ccb93277aae2..34a9eef5992c 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -2172,7 +2172,6 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog, user_ksyms = u64_to_user_ptr(info.jited_ksyms); for (i = 0; i < ulen; i++) { ksym_addr = (ulong) prog->aux->func[i]->bpf_func; - ksym_addr &= PAGE_MASK; if (put_user((u64) ksym_addr, &user_ksyms[i])) return -EFAULT; } From patchwork Thu Nov 1 07:00:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Liu X-Patchwork-Id: 991841 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=fb.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=fb.com header.i=@fb.com header.b="UWlaT/M7"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 42lx206Hnyz9sVw for ; Thu, 1 Nov 2018 18:01:12 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728095AbeKAQCv (ORCPT ); Thu, 1 Nov 2018 12:02:51 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:59014 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727823AbeKAQCu (ORCPT ); Thu, 1 Nov 2018 12:02:50 -0400 Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id wA16sVTB003293 for ; Thu, 1 Nov 2018 00:01:08 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=9FijKiI1hnxAfsg+22bz6XxMoBjXzJMcSVUWLVz8QnA=; b=UWlaT/M7QVLjZNO8B6RQzNE1B4JCHDlVt3/o6+NVdFchobuwr401LKIRj7N0RcEJtXZ2 S6MyFR/FkwVPog+Ran7/NvLpC4M8LYWAduId0yogcWq+Zn3ORpPyzOqV6UpyT4TkSEk9 brtRVk3rMlmaVD4NYq3yMxQQHaNVnsT5jNw= Received: from maileast.thefacebook.com ([199.201.65.23]) by mx0a-00082601.pphosted.com with ESMTP id 2nfvkd80hh-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Thu, 01 Nov 2018 00:01:08 -0700 Received: from mx-out.facebook.com (2620:10d:c0a1:3::13) by mail.thefacebook.com (2620:10d:c021:18::172) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA) id 15.1.1531.3; Thu, 1 Nov 2018 00:01:07 -0700 Received: by devbig006.ftw2.facebook.com (Postfix, from userid 4523) id 8F17E62E1E66; Thu, 1 Nov 2018 00:01:06 -0700 (PDT) Smtp-Origin-Hostprefix: devbig From: Song Liu Smtp-Origin-Hostname: devbig006.ftw2.facebook.com To: CC: , Song Liu , , , Smtp-Origin-Cluster: ftw2c04 Subject: [PATCH bpf 3/3] bpf: show main program address in bpf_prog_info->jited_ksyms Date: Thu, 1 Nov 2018 00:00:58 -0700 Message-ID: <20181101070058.2760251-4-songliubraving@fb.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181101070058.2760251-1-songliubraving@fb.com> References: <20181101070058.2760251-1-songliubraving@fb.com> X-FB-Internal: Safe MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-11-01_04:, , signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Currently, when there is not subprog (prog->aux->func_cnt == 0), bpf_prog_info does not return any jited_ksyms. This patch adds main program address (prog->bpf_func) to jited_ksyms. Signed-off-by: Song Liu --- kernel/bpf/syscall.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index 34a9eef5992c..7293b17ca62a 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -2158,7 +2158,7 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog, } ulen = info.nr_jited_ksyms; - info.nr_jited_ksyms = prog->aux->func_cnt; + info.nr_jited_ksyms = prog->aux->func_cnt ? : 1; if (info.nr_jited_ksyms && ulen) { if (bpf_dump_raw_ok()) { u64 __user *user_ksyms; @@ -2170,9 +2170,17 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog, */ ulen = min_t(u32, info.nr_jited_ksyms, ulen); user_ksyms = u64_to_user_ptr(info.jited_ksyms); - for (i = 0; i < ulen; i++) { - ksym_addr = (ulong) prog->aux->func[i]->bpf_func; - if (put_user((u64) ksym_addr, &user_ksyms[i])) + if (prog->aux->func_cnt) { + for (i = 0; i < ulen; i++) { + ksym_addr = (ulong) + prog->aux->func[i]->bpf_func; + if (put_user((u64) ksym_addr, + &user_ksyms[i])) + return -EFAULT; + } + } else { + ksym_addr = (ulong) prog->bpf_func; + if (put_user((u64) ksym_addr, &user_ksyms[0])) return -EFAULT; } } else {