bpf.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 bpf-next] bpf: Document bpf_inspect drgn tool
@ 2020-03-14  0:39 Andrey Ignatov
  2020-03-17 19:57 ` Daniel Borkmann
  0 siblings, 1 reply; 3+ messages in thread
From: Andrey Ignatov @ 2020-03-14  0:39 UTC (permalink / raw)
  To: bpf
  Cc: Andrey Ignatov, ast, daniel, osandov, corbet, toke, brouer, kernel-team

It's a follow-up for discussion in [1].

drgn tool bpf_inspect.py was merged to drgn repo in [2]. Document it in
kernel tree to make BPF developers aware that the tool exists and can
help with getting BPF state unavailable via UAPI.

For now it's just one tool but the doc is written in a way that allows
to cover more tools in the future if needed.

Please refer to the doc itself for more details.

The patch was tested by `make htmldocs` and sanity-checking that
resulting html looks good.

[1]
https://lore.kernel.org/bpf/20200228201514.GB51456@rdna-mbp/T/#mefed65e8a98116bd5d07d09a570a3eac46724951
[2] https://github.com/osandov/drgn/pull/49

Signed-off-by: Andrey Ignatov <rdna@fb.com>
---
 Documentation/bpf/drgn.rst  | 39 +++++++++++++++++++++++++++++++++++++
 Documentation/bpf/index.rst |  5 +++--
 2 files changed, 42 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/bpf/drgn.rst

diff --git a/Documentation/bpf/drgn.rst b/Documentation/bpf/drgn.rst
new file mode 100644
index 000000000000..2ff9ef3e0b58
--- /dev/null
+++ b/Documentation/bpf/drgn.rst
@@ -0,0 +1,39 @@
+.. SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
+
+==============
+BPF drgn tools
+==============
+
+drgn scripts is a convenient and easy to use mechanism to retrieve arbitrary
+kernel data structures. drgn is not relying on kernel UAPI to read the data.
+Instead it's reading directly from ``/proc/kcore`` or vmcore and pretty prints
+the data based on DWARF debug information from vmlinux.
+
+This document describes BPF related drgn tools.
+
+See `drgn/tools`_ for all tools available at the moment and `drgn/doc`_ for
+more details on drgn itself.
+
+bpf_inspect.py
+**************
+
+`bpf_inspect.py`_ is a tool intended to inspect BPF programs and maps. It can
+iterate over all programs and maps in the system and print basic information
+about these objects, including id, type and name.
+
+The main use-case `bpf_inspect.py`_ covers is to show BPF programs of types
+``BPF_PROG_TYPE_EXT`` and ``BPF_PROG_TYPE_TRACING`` attached to other BPF
+programs via ``freplace``/``fentry``/``fexit`` mechanisms, since there is no
+user-space API to get this information.
+
+Any developer can edit the tool and get any piece of ``struct bpf_prog`` or
+``struct bpf_map`` they're interested in, e.g. the whole ``struct
+bpf_prog_aux``.
+
+See ``--help`` for more details.
+
+.. Links
+.. _drgn/doc: https://drgn.readthedocs.io/en/latest/
+.. _drgn/tools: https://github.com/osandov/drgn/tree/master/tools
+.. _bpf_inspect.py:
+   https://github.com/osandov/drgn/blob/master/tools/bpf_inspect.py
diff --git a/Documentation/bpf/index.rst b/Documentation/bpf/index.rst
index 4f5410b61441..7be43c5f2dcf 100644
--- a/Documentation/bpf/index.rst
+++ b/Documentation/bpf/index.rst
@@ -47,12 +47,13 @@ Program types
    prog_flow_dissector
 
 
-Testing BPF
-===========
+Testing and debugging BPF
+=========================
 
 .. toctree::
    :maxdepth: 1
 
+   drgn
    s390
 
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2 bpf-next] bpf: Document bpf_inspect drgn tool
  2020-03-14  0:39 [PATCH v2 bpf-next] bpf: Document bpf_inspect drgn tool Andrey Ignatov
@ 2020-03-17 19:57 ` Daniel Borkmann
  2020-03-24 18:50   ` Andrey Ignatov
  0 siblings, 1 reply; 3+ messages in thread
From: Daniel Borkmann @ 2020-03-17 19:57 UTC (permalink / raw)
  To: Andrey Ignatov, bpf; +Cc: ast, osandov, corbet, toke, brouer, kernel-team

Hey Andrey,

On 3/14/20 1:39 AM, Andrey Ignatov wrote:
> It's a follow-up for discussion in [1].
> 
> drgn tool bpf_inspect.py was merged to drgn repo in [2]. Document it in
> kernel tree to make BPF developers aware that the tool exists and can
> help with getting BPF state unavailable via UAPI.
> 
> For now it's just one tool but the doc is written in a way that allows
> to cover more tools in the future if needed.
> 
> Please refer to the doc itself for more details.
> 
> The patch was tested by `make htmldocs` and sanity-checking that
> resulting html looks good.
> 
> [1]
> https://lore.kernel.org/bpf/20200228201514.GB51456@rdna-mbp/T/#mefed65e8a98116bd5d07d09a570a3eac46724951
> [2] https://github.com/osandov/drgn/pull/49
> 
> Signed-off-by: Andrey Ignatov <rdna@fb.com>
> ---
>   Documentation/bpf/drgn.rst  | 39 +++++++++++++++++++++++++++++++++++++
>   Documentation/bpf/index.rst |  5 +++--
>   2 files changed, 42 insertions(+), 2 deletions(-)
>   create mode 100644 Documentation/bpf/drgn.rst
> 
> diff --git a/Documentation/bpf/drgn.rst b/Documentation/bpf/drgn.rst
> new file mode 100644
> index 000000000000..2ff9ef3e0b58
> --- /dev/null
> +++ b/Documentation/bpf/drgn.rst
> @@ -0,0 +1,39 @@
> +.. SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
> +
> +==============
> +BPF drgn tools
> +==============
> +
> +drgn scripts is a convenient and easy to use mechanism to retrieve arbitrary
> +kernel data structures. drgn is not relying on kernel UAPI to read the data.
> +Instead it's reading directly from ``/proc/kcore`` or vmcore and pretty prints
> +the data based on DWARF debug information from vmlinux.
> +
> +This document describes BPF related drgn tools.
> +
> +See `drgn/tools`_ for all tools available at the moment and `drgn/doc`_ for
> +more details on drgn itself.
> +
> +bpf_inspect.py
> +**************
> +
> +`bpf_inspect.py`_ is a tool intended to inspect BPF programs and maps. It can
> +iterate over all programs and maps in the system and print basic information
> +about these objects, including id, type and name.
> +
> +The main use-case `bpf_inspect.py`_ covers is to show BPF programs of types
> +``BPF_PROG_TYPE_EXT`` and ``BPF_PROG_TYPE_TRACING`` attached to other BPF
> +programs via ``freplace``/``fentry``/``fexit`` mechanisms, since there is no
> +user-space API to get this information.
> +
> +Any developer can edit the tool and get any piece of ``struct bpf_prog`` or
> +``struct bpf_map`` they're interested in, e.g. the whole ``struct
> +bpf_prog_aux``.
> +
> +See ``--help`` for more details.

I do like bcc's explicit usage examples/recipes so one can immediately grok
whether it fits to a given use-case (e.g. [0]). Given this is targeted for
developers perhaps it makes sense to add an example usage as you have described
in [1] to the doc as well here?

Maybe last two paragraphs are not that useful. Could we structure each tool
we're going to add here with two sub-headers "Description", "Getting Started"
where the former has the first two paragraphs and then the latter has a usage
example that shows e.g. [1] or as you write in your last paragraph a modification
to dump the whole ``struct bpf_prog_aux``, for example?

Thanks,
Daniel

   [0] https://github.com/iovisor/bcc/blob/master/tools/bpflist_example.txt
   [1] https://github.com/osandov/drgn/pull/49

> +.. Links
> +.. _drgn/doc: https://drgn.readthedocs.io/en/latest/
> +.. _drgn/tools: https://github.com/osandov/drgn/tree/master/tools
> +.. _bpf_inspect.py:
> +   https://github.com/osandov/drgn/blob/master/tools/bpf_inspect.py
> diff --git a/Documentation/bpf/index.rst b/Documentation/bpf/index.rst
> index 4f5410b61441..7be43c5f2dcf 100644
> --- a/Documentation/bpf/index.rst
> +++ b/Documentation/bpf/index.rst
> @@ -47,12 +47,13 @@ Program types
>      prog_flow_dissector
>   
>   
> -Testing BPF
> -===========
> +Testing and debugging BPF
> +=========================
>   
>   .. toctree::
>      :maxdepth: 1
>   
> +   drgn
>      s390
>   
>   
> 


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2 bpf-next] bpf: Document bpf_inspect drgn tool
  2020-03-17 19:57 ` Daniel Borkmann
@ 2020-03-24 18:50   ` Andrey Ignatov
  0 siblings, 0 replies; 3+ messages in thread
From: Andrey Ignatov @ 2020-03-24 18:50 UTC (permalink / raw)
  To: Daniel Borkmann; +Cc: bpf, ast, osandov, corbet, toke, brouer, kernel-team

Daniel Borkmann <daniel@iogearbox.net> [Tue, 2020-03-17 12:57 -0700]:
> Hey Andrey,

Hey Daniel,


> On 3/14/20 1:39 AM, Andrey Ignatov wrote:
> > It's a follow-up for discussion in [1].
> > 
> > drgn tool bpf_inspect.py was merged to drgn repo in [2]. Document it in
> > kernel tree to make BPF developers aware that the tool exists and can
> > help with getting BPF state unavailable via UAPI.
> > 
> > For now it's just one tool but the doc is written in a way that allows
> > to cover more tools in the future if needed.
> > 
> > Please refer to the doc itself for more details.
> > 
> > The patch was tested by `make htmldocs` and sanity-checking that
> > resulting html looks good.
> > 
> > [1]
> > https://lore.kernel.org/bpf/20200228201514.GB51456@rdna-mbp/T/#mefed65e8a98116bd5d07d09a570a3eac46724951
> > [2] https://github.com/osandov/drgn/pull/49
> > 
> > Signed-off-by: Andrey Ignatov <rdna@fb.com>
> > ---
> >   Documentation/bpf/drgn.rst  | 39 +++++++++++++++++++++++++++++++++++++
> >   Documentation/bpf/index.rst |  5 +++--
> >   2 files changed, 42 insertions(+), 2 deletions(-)
> >   create mode 100644 Documentation/bpf/drgn.rst
> > 
> > diff --git a/Documentation/bpf/drgn.rst b/Documentation/bpf/drgn.rst
> > new file mode 100644
> > index 000000000000..2ff9ef3e0b58
> > --- /dev/null
> > +++ b/Documentation/bpf/drgn.rst
> > @@ -0,0 +1,39 @@
> > +.. SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
> > +
> > +==============
> > +BPF drgn tools
> > +==============
> > +
> > +drgn scripts is a convenient and easy to use mechanism to retrieve arbitrary
> > +kernel data structures. drgn is not relying on kernel UAPI to read the data.
> > +Instead it's reading directly from ``/proc/kcore`` or vmcore and pretty prints
> > +the data based on DWARF debug information from vmlinux.
> > +
> > +This document describes BPF related drgn tools.
> > +
> > +See `drgn/tools`_ for all tools available at the moment and `drgn/doc`_ for
> > +more details on drgn itself.
> > +
> > +bpf_inspect.py
> > +**************
> > +
> > +`bpf_inspect.py`_ is a tool intended to inspect BPF programs and maps. It can
> > +iterate over all programs and maps in the system and print basic information
> > +about these objects, including id, type and name.
> > +
> > +The main use-case `bpf_inspect.py`_ covers is to show BPF programs of types
> > +``BPF_PROG_TYPE_EXT`` and ``BPF_PROG_TYPE_TRACING`` attached to other BPF
> > +programs via ``freplace``/``fentry``/``fexit`` mechanisms, since there is no
> > +user-space API to get this information.
> > +
> > +Any developer can edit the tool and get any piece of ``struct bpf_prog`` or
> > +``struct bpf_map`` they're interested in, e.g. the whole ``struct
> > +bpf_prog_aux``.
> > +
> > +See ``--help`` for more details.
> 
> I do like bcc's explicit usage examples/recipes so one can immediately grok
> whether it fits to a given use-case (e.g. [0]). Given this is targeted for
> developers perhaps it makes sense to add an example usage as you have described
> in [1] to the doc as well here?
> 
> Maybe last two paragraphs are not that useful. Could we structure each tool
> we're going to add here with two sub-headers "Description", "Getting Started"
> where the former has the first two paragraphs and then the latter has a usage
> example that shows e.g. [1] or as you write in your last paragraph a modification
> to dump the whole ``struct bpf_prog_aux``, for example?


I like the idea. Will split into these two sections, add examples and
send v3.

Thanks.


> Thanks,
> Daniel
> 
>   [0] https://github.com/iovisor/bcc/blob/master/tools/bpflist_example.txt
>   [1] https://github.com/osandov/drgn/pull/49
> 
> > +.. Links
> > +.. _drgn/doc: https://urldefense.proofpoint.com/v2/url?u=https-3A__drgn.readthedocs.io_en_latest_&d=DwICaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=3jAokpHyGuCuJ834j-tttQ&m=w0lb_NHL_dnKmx1BCxQa-nVyCGAmWxQxlGS28F4ah5w&s=IbEuBhH7sEDU3POS5E-0wx_hQWbsgrbKdOynGQFDQTs&e=
> > +.. _drgn/tools: https://github.com/osandov/drgn/tree/master/tools
> > +.. _bpf_inspect.py:
> > +   https://github.com/osandov/drgn/blob/master/tools/bpf_inspect.py
> > diff --git a/Documentation/bpf/index.rst b/Documentation/bpf/index.rst
> > index 4f5410b61441..7be43c5f2dcf 100644
> > --- a/Documentation/bpf/index.rst
> > +++ b/Documentation/bpf/index.rst
> > @@ -47,12 +47,13 @@ Program types
> >      prog_flow_dissector
> > -Testing BPF
> > -===========
> > +Testing and debugging BPF
> > +=========================
> >   .. toctree::
> >      :maxdepth: 1
> > +   drgn
> >      s390
> > 
> 

-- 
Andrey Ignatov

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-03-24 18:50 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-14  0:39 [PATCH v2 bpf-next] bpf: Document bpf_inspect drgn tool Andrey Ignatov
2020-03-17 19:57 ` Daniel Borkmann
2020-03-24 18:50   ` Andrey Ignatov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).