Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1356701 > unrolled thread
| Started by | Jan Kiszka <jan.kiszka@siemens.com> |
|---|---|
| First post | 2016-03-13 17:40 +0100 |
| Last post | 2016-03-14 18:40 +0100 |
| Articles | 5 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCHv3 00/13] scripts/gdb: Linux awareness debug commands Jan Kiszka <jan.kiszka@siemens.com> - 2016-03-13 17:40 +0100
Re: [PATCHv3 00/13] scripts/gdb: Linux awareness debug commands Kieran Bingham <kieran.bingham@linaro.org> - 2016-03-14 15:50 +0100
Re: [PATCHv3 00/13] scripts/gdb: Linux awareness debug commands Jan Kiszka <jan.kiszka@siemens.com> - 2016-03-14 16:10 +0100
Re: [PATCHv3 00/13] scripts/gdb: Linux awareness debug commands Kieran Bingham <kieran.bingham@linaro.org> - 2016-03-14 18:20 +0100
Re: [PATCHv3 00/13] scripts/gdb: Linux awareness debug commands Jan Kiszka <jan.kiszka@siemens.com> - 2016-03-14 18:40 +0100
| From | Jan Kiszka <jan.kiszka@siemens.com> |
|---|---|
| Date | 2016-03-13 17:40 +0100 |
| Subject | Re: [PATCHv3 00/13] scripts/gdb: Linux awareness debug commands |
| Message-ID | <rchdD-8dH-3@gated-at.bofh.it> |
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 > accurarate - 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? > 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 ;). 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. Thanks, Jan -- Siemens AG, Corporate Technology, CT RDA ITP SES-DE Corporate Competence Center Embedded Linux
[toc] | [next] | [standalone]
| From | Kieran Bingham <kieran.bingham@linaro.org> |
|---|---|
| Date | 2016-03-14 15:50 +0100 |
| Message-ID | <rcBYJ-511-3@gated-at.bofh.it> |
| In reply to | #1356701 |
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
>
[toc] | [prev] | [next] | [standalone]
| From | Jan Kiszka <jan.kiszka@siemens.com> |
|---|---|
| Date | 2016-03-14 16:10 +0100 |
| Message-ID | <rcCi6-5r0-15@gated-at.bofh.it> |
| In reply to | #1357306 |
On 2016-03-14 15:40, Kieran Bingham wrote: > 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 :( Indeed. Given this delta, I'm reluctant to include that command at this point. > >> >>> 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. Sounds good! > > So we have the infrastructure - we just need to get the tests written, > and included. Yeah, "minor" detail. Jan -- Siemens AG, Corporate Technology, CT RDA ITP SES-DE Corporate Competence Center Embedded Linux
[toc] | [prev] | [next] | [standalone]
| From | Kieran Bingham <kieran.bingham@linaro.org> |
|---|---|
| Date | 2016-03-14 18:20 +0100 |
| Message-ID | <rcEjT-6Ns-5@gated-at.bofh.it> |
| In reply to | #1357339 |
On 14/03/16 15:09, Jan Kiszka wrote: > On 2016-03-14 15:40, Kieran Bingham wrote: >> 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 :( > > Indeed. Given this delta, I'm reluctant to include that command at this > point. Ok, understandable... I think the radix-tree lookup could be useful for people though. This is used across filesystems, and other places. Perhaps I should wrap this up into a gdb.Function rather than drop it? >>>> 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. > > Sounds good! > >> >> So we have the infrastructure - we just need to get the tests written, >> and included. > > Yeah, "minor" detail. Isn't it ever :D > > Jan >
[toc] | [prev] | [next] | [standalone]
| From | Jan Kiszka <jan.kiszka@siemens.com> |
|---|---|
| Date | 2016-03-14 18:40 +0100 |
| Message-ID | <rcEDg-6WL-11@gated-at.bofh.it> |
| In reply to | #1357436 |
On 2016-03-14 18:18, Kieran Bingham wrote: > On 14/03/16 15:09, Jan Kiszka wrote: >> On 2016-03-14 15:40, Kieran Bingham wrote: >>> 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 :( >> >> Indeed. Given this delta, I'm reluctant to include that command at this >> point. > > Ok, understandable... > > I think the radix-tree lookup could be useful for people though. > This is used across filesystems, and other places. > > Perhaps I should wrap this up into a gdb.Function rather than drop it? > Sounds good. Maybe also augment Documentation/gdb-kernel-debugging.txt with a nice example for this (and for other non-obvious features). Jan -- Siemens AG, Corporate Technology, CT RDA ITP SES-DE Corporate Competence Center Embedded Linux
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web