All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kieran Bingham <kieran.bingham@linaro.org>
To: Jan Kiszka <jan.kiszka@siemens.com>, linux-kernel@vger.kernel.org
Cc: lee.jones@linaro.org, peter.griffin@linaro.org, maxime.coquelin@st.com
Subject: Re: [PATCHv3 00/13] scripts/gdb: Linux awareness debug commands
Date: Mon, 14 Mar 2016 14:40:03 +0000	[thread overview]
Message-ID: <56E6CD43.3010400@linaro.org> (raw)
In-Reply-To: <56E596DE.7040707@siemens.com>

On 13/03/16 16:35, Jan Kiszka wrote:
> On 2016-03-03 12:40, Kieran Bingham wrote:
>> Hi Jan,
>>
>> V3 of the patchset respun. Now finally adding the lx-interrupts command
>> after I resolved my issues with the Radix Tree parsing.
>>
>> This command only provides the interrupts that are available generically,
>> and it seems that the /proc/interrupts function calls into arch specific
>> layers to add extra information about arch specific interrupts.
>>
>> I'm not sure what to do about this yet - The values returned appear to be
>> accurate - but it's just a subset of the information returned by proc.
>>
> 
> I didn't test this (due to the breakage in patch 10): Can you give
> examples of what is missing, e.g. on ARM or x86?
On ARM this is :

(gdb) lx-interrupts
            CPU0       CPU1
  18:     587828     150187
  36:      66574          0
  41:          8          0
  42:        106          0
  43:        100          0
(gdb) c


vs

root@ArmACookieMonster:~# cat /proc/interrupts
           CPU0       CPU1
 18:     588057     150274     GIC-0  27 Edge      arch_timer
 20:          0          0     GIC-0  34 Level     timer
 36:      66599          0     GIC-0  47 Level     eth0
 39:          0          0     GIC-0  41 Level     mmci-pl18x (cmd)
 40:          0          0     GIC-0  42 Level     mmci-pl18x (pio)
 41:          8          0     GIC-0  44 Level     kmi-pl050
 42:        106          0     GIC-0  45 Level     kmi-pl050
 43:        112          0     GIC-0  37 Level     uart-pl011
 49:          0          0     GIC-0  36 Level     rtc-pl031
IPI0:          0          1  CPU wakeup interrupts
IPI1:          0          0  Timer broadcast interrupts
IPI2:      15867     281362  Rescheduling interrupts
IPI3:          0          6  Function call interrupts
IPI4:          0          0  CPU stop interrupts
IPI5:          0          0  IRQ work interrupts
IPI6:          0          0  completion interrupts
Err:          0

So quite a substantial subset :(

> 
>> lx_thread_info_by_pid has been useful to me while looking at thread
>> awareness, so I've included it into this patch set now. It makes finding
>> internal thread information much more convenient.
>>
>> dentry_name has been moved to the utils module, as I am already using it
>> in another command, so it's just not appropriate to be in proc.py
>>
>> The cpu_list mask iterators make calling for cpu in each_online_cpu() read
>> nicely, and I've left the print_cpus() function in for now as a hidden
>> helper. It can be used by calling:
>>   python linux.cpus.print_cpus()
>> to check these generators, which I thought was quite nice - but I didn't
>> know if it warranted a full command class for this.
>>
>> For convenience, this patch set submission can be found at
>>   http://git.linaro.org/people/kieran.bingham/linux.git gdb-scripts-2016-03-03-lkml-submission
>>
>> Patchset Changelog:
>> v3:
>>  - Radix Tree parser introduced
>>  - cpu_list mask iterators added
>>  - lx-interrupts command implemented
>>  - dentry_name function moved to utils
>>  - lx-meminfo command PEP8 warnings fixed
>>  - lx_thread_info_by_pid introduced
>>
>> v2:
>>  - Reworked iterators with improved versions from Jeff Mahoney
>>  - Fixed !CONFIG_MODULES and !CONFIG_MMU support
>>  - Improvements on lx-meminfo
>>  - constants.py generated by Kbuild
>>  - IS_BUILTIN facility used to provide LX_CONFIG values
>>
>> v1:
>>  - Introduced lx-iomem, lx-ioports, lx-mounts, lx-meminfo
>>
>> Kieran Bingham (13):
>>   scripts/gdb: Provide linux constants
>>   scripts/gdb: Provide kernel list item generators
>>   scripts/gdb: Convert modules usage to lists functions
>>   scripts/gdb: Provide exception catching parser
>>   scripts/gdb: Support !CONFIG_MODULES gracefully
>>   scripts/gdb: Provide a dentry_name VFS path helper
>>   scripts/gdb: Add io resource readers
>>   scripts/gdb: Add mount point list command
>>   scripts/gdb: Add meminfo command
>>   scripts/gdb: Add cpu iterators
>>   scripts/gdb: Add a Radix Tree Parser
>>   scripts/gdb: Add interrupts command
>>   scripts/gdb: Add lx_thread_info_by_pid helper
>>
>>  Kbuild                            |  10 +
>>  scripts/gdb/linux/Makefile        |  12 +-
>>  scripts/gdb/linux/constants.py.in |  93 ++++++++
>>  scripts/gdb/linux/cpus.py         |  21 ++
>>  scripts/gdb/linux/lists.py        |  20 ++
>>  scripts/gdb/linux/modules.py      |  22 +-
>>  scripts/gdb/linux/proc.py         | 449 ++++++++++++++++++++++++++++++++++++++
>>  scripts/gdb/linux/radixtree.py    |  74 +++++++
>>  scripts/gdb/linux/tasks.py        |  19 ++
>>  scripts/gdb/linux/utils.py        |  15 ++
>>  scripts/gdb/vmlinux-gdb.py        |   2 +
>>  11 files changed, 724 insertions(+), 13 deletions(-)
>>  create mode 100644 scripts/gdb/linux/constants.py.in
>>  create mode 100644 scripts/gdb/linux/radixtree.py
>>
> 
> Besides the required rebase and, thus, the missing adjustment of the cpu
> masks, I only have minor remarks. Maybe I will have more once I can play
> with lx-interrupts ;).

Ok - well it's fixed up locally, it's just a matter of prefixing the
strings with two underscores. I should be able to get the updated
patches out soon I hope.

> However, I have a growing concern - I think we already discussed this
> offline: Without automated tests, all these helpers may quickly fall
> apart as the kernel changes. This should not block these patches, but
> maybe you can think about some testing approaches before we have dozens
> of helpers which can only be validated manually.

Yes, indeed - and the breakage already seen between v4.4 and v4.5 only
solidifies the need!

I was able to chat to a few of the Linaro LAVA guys on this topic while
I was at Connect, and they already have virtual kernels being boot
tested. This should provide a good infrastructure to run some automated
tests on.

So we have the infrastructure - we just need to get the tests written,
and included.

--
Kieran

> Thanks,
> Jan
> 

  reply	other threads:[~2016-03-14 14:40 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-03 11:40 [PATCHv3 00/13] scripts/gdb: Linux awareness debug commands Kieran Bingham
2016-03-03 11:40 ` [PATCHv3 01/13] scripts/gdb: Provide linux constants Kieran Bingham
2016-03-03 11:40 ` [PATCHv3 02/13] scripts/gdb: Provide kernel list item generators Kieran Bingham
2016-03-08  3:47   ` Jeff Mahoney
2016-03-08  7:55     ` Kieran Bingham
2016-03-03 11:40 ` [PATCHv3 03/13] scripts/gdb: Convert modules usage to lists functions Kieran Bingham
2016-03-03 11:40 ` [PATCHv3 04/13] scripts/gdb: Provide exception catching parser Kieran Bingham
2016-03-03 11:40 ` [PATCHv3 05/13] scripts/gdb: Support !CONFIG_MODULES gracefully Kieran Bingham
2016-03-03 11:41 ` [PATCHv3 06/13] scripts/gdb: Provide a dentry_name VFS path helper Kieran Bingham
2016-03-03 11:41 ` [PATCHv3 07/13] scripts/gdb: Add io resource readers Kieran Bingham
2016-03-03 11:41 ` [PATCHv3 08/13] scripts/gdb: Add mount point list command Kieran Bingham
2016-03-13 16:34   ` Jan Kiszka
2016-03-14 14:39     ` Kieran Bingham
2016-03-14 15:05       ` Jan Kiszka
2016-03-15 10:46         ` Kieran Bingham
2016-03-03 11:41 ` [PATCHv3 09/13] scripts/gdb: Add meminfo command Kieran Bingham
2016-03-13 16:34   ` Jan Kiszka
2016-03-13 18:16     ` Kieran Bingham
2016-03-13 19:08       ` Jan Kiszka
2016-03-14 12:13         ` Kieran Bingham
2016-03-03 11:41 ` [PATCHv3 10/13] scripts/gdb: Add cpu iterators Kieran Bingham
2016-03-13 16:33   ` Jan Kiszka
2016-03-13 18:39     ` Kieran Bingham
2016-03-03 11:41 ` [PATCHv3 11/13] scripts/gdb: Add a Radix Tree Parser Kieran Bingham
2016-03-03 11:41 ` [PATCHv3 12/13] scripts/gdb: Add interrupts command Kieran Bingham
2016-03-03 11:41 ` [PATCHv3 13/13] scripts/gdb: Add lx_thread_info_by_pid helper Kieran Bingham
2016-03-13 16:35 ` [PATCHv3 00/13] scripts/gdb: Linux awareness debug commands Jan Kiszka
2016-03-14 14:40   ` Kieran Bingham [this message]
2016-03-14 15:09     ` Jan Kiszka
2016-03-14 17:18       ` Kieran Bingham
2016-03-14 17:31         ` Jan Kiszka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56E6CD43.3010400@linaro.org \
    --to=kieran.bingham@linaro.org \
    --cc=jan.kiszka@siemens.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maxime.coquelin@st.com \
    --cc=peter.griffin@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.