=== Highlights ===
* Implemented a first pass iteration at pushing the volatile range
eviction code deeper into the VM
* Sent it out reworked volatile range code to lkml, but got very little
feedback.
* Sent out the Android ETM driver changes to lkml for review and
inclusion. Also got very little feedback (is everyone on vacation!?)
* Sent out weekly android upstreaming status mail
* Got pinged by Dave Jones to make sure relavant leap-second fixes land
in -stable, sent patch out.
* Migrated to a new build box as well as a new backup server. Learned
some additional tricks for fixing accidentally corrupted git repos.
=== Plans ===
* Try to implement a middle ground approach to improving volatile
purging without using a shrinker.
* Resend ETM driver for inclusion
=== Issues ===
NA
Hi all,
In v2:
- Do not introduce a separate 'persistent' tracer, but introduce an
option to the existing 'function' tracer.
Rationale for this patch set:
With this support kernel can save functions call chain log into a
persistent ram buffer that can be decoded and dumped after reboot
through pstore filesystem. It can be used to determine what function
was last called before a hang or an unexpected reset (caused by, for
example, a buggy driver that abuses HW).
Here's a "nano howto", to get the idea:
# mount -t debugfs debugfs /sys/kernel/debug/
# cd /sys/kernel/debug/tracing
# echo function > current_tracer
# echo 1 > options/func_pstore
# reboot -f
[...]
# mount -t pstore pstore /mnt/
# tail /mnt/ftrace-ramoops
0 ffffffff8101ea64 ffffffff8101bcda native_apic_mem_read <- disconnect_bsp_APIC+0x6a/0xc0
0 ffffffff8101ea44 ffffffff8101bcf6 native_apic_mem_write <- disconnect_bsp_APIC+0x86/0xc0
0 ffffffff81020084 ffffffff8101a4b5 hpet_disable <- native_machine_shutdown+0x75/0x90
0 ffffffff81005f94 ffffffff8101a4bb iommu_shutdown_noop <- native_machine_shutdown+0x7b/0x90
0 ffffffff8101a6a1 ffffffff8101a437 native_machine_emergency_restart <- native_machine_restart+0x37/0x40
0 ffffffff811f9876 ffffffff8101a73a acpi_reboot <- native_machine_emergency_restart+0xaa/0x1e0
0 ffffffff8101a514 ffffffff8101a772 mach_reboot_fixups <- native_machine_emergency_restart+0xe2/0x1e0
0 ffffffff811d9c54 ffffffff8101a7a0 __const_udelay <- native_machine_emergency_restart+0x110/0x1e0
0 ffffffff811d9c34 ffffffff811d9c80 __delay <- __const_udelay+0x30/0x40
0 ffffffff811d9d14 ffffffff811d9c3f delay_tsc <- __delay+0xf/0x20
Mostly the code comes from trace_persistent.c driver found in the
Android git tree, written by Colin Cross <ccross(a)android.com>
(according to sign-off history). I reworked the driver a little bit,
and ported it to pstore subsystem.
---
Documentation/ramoops.txt | 25 +++++++++
fs/pstore/Kconfig | 12 +++++
fs/pstore/Makefile | 6 +++
fs/pstore/ftrace.c | 35 +++++++++++++
fs/pstore/inode.c | 111 ++++++++++++++++++++++++++++++++++++++--
fs/pstore/internal.h | 49 ++++++++++++++++++
fs/pstore/platform.c | 12 ++++-
fs/pstore/ram.c | 54 ++++++++++++++-----
include/linux/pstore.h | 13 +++++
include/linux/pstore_ram.h | 1 +
kernel/trace/trace.c | 7 +--
kernel/trace/trace_functions.c | 25 +++++++--
12 files changed, 325 insertions(+), 25 deletions(-)
--
Anton Vorontsov
Email: cbouatmailru(a)gmail.com
== Linus Walleij linusw ==
=== Highlights ===
* Send a pull request to Linus Torvalds for pin control updates,
it was duly pulled in for v3.5-rc3.
* Sent of a pull request to the ARM SoC maintainers for a bunch
of Nomadik updates.
* Spend some time funneling back the pinctrl updates and ux500
patches for pin control to ST-Ericssons internal development
track. Also synchronized the PL022 SPI driver in both directions,
submitting patches externally and internally. This will take some
more time still.
* Discussed and iterated device tree patches for Nomadik I2C.
Also ACKed Alessandros patches to move the controller to
the AMBA bus (so it can be reused in ST Microelectronics
products).
* Poked Greg about the UART regression on Ux500 and he
picked up the patch to the TTY tree.
* Sent off some clock modernization patches for the ARM
Integrator, iterated with Mike Turquette.
* Had extensive discussions on internal ST-Ericsson matters
and internal code review cutting out a share of my working
hours.
=== Plans ===
* Vacation:
23 june -> 30 june
9 july -> 3 august (preliminary)
(now also reflected in Linaro leaves)
* Test the PL08x patches on the Ericsson Research
PB11MPCore and submit platform data for using
pl08x DMA on that platform.
* Look into other Ux500 stuff in need of mainlining...
using an internal tracking sheet for this.
=== Issues ===
* N/A
Thanks,
Linus Walleij
Hi all,
And another respin, v5 this time:
- Split out fixes into a separate series;
- Added proper spinlock protection to the pstore/console interface
(the bug I found when was adding ftrace interface);
- And as I'm about to add ftrace support to pstore, to not touch
the same lines of code twice, I reworked 'Factor ramoops_get_dump_prz()
out of ramoops_pstore_read()' patch into 'Factor ramoops_get_next_prz()
out of ramoops_pstore_read()'. This is just a more generic interface
that will work for both console and ftrace przs.
Since the patch changed drastically, it lost Kees' ack, so it needs a
re-ack.
- The same as above happened w/ 'Introduce ramoops_context.max_dump_count'
patch, it turned into 'Give proper names to dump-related variables', it
also needs a re-ack.
- If anyone is willing to try the patches, for convenience they are now
available in the git repository:
git://git.infradead.org/users/cbou/linux-pstore.git
or gitweb:
http://git.infradead.org/users/cbou/linux-pstore.git
In v4:
- Per Kees Cook's comments, the patches no longer remove an automatic
updates feature, but instead make the it configurable; plus disable
it by default (in a separate patch);
- Fixed some bugs noticed by Colin Cross;
- Documented new continuous ramoops-console log behaviour (also
noticed by Colin Cross).
In v3:
- Rebased on top of current staging-next;
- The series are getting bigger. This is partly because we now support
different persistent zone sizes for oops records and console log,
per Colin Cross' request.
And I believe the code is now more manageable for further enhancements
(e.g. if we'd want to add other message types, e.g. tracing);
- Addressed Kees Cook's comments on the unlinking matters;
- Removed automatic updates support. Please see the last patch
description for rationale;
- A new fixup for pstore/inode, just getting rid of a sparse warning.
In v2:
- Updated documentation per Colin Cross' comments;
- Corrected return value in ramoops_pstore_write() (noticed by Kees Cook);
- Fixed large writes handling in pstore_console_write(), i.e. when
log_buf write is larger than pstore bufsize. Also Noticed by Kees Cook.
And a boilerplate for the series:
Currently pstore doesn't support logging kernel messages in run-time,
it only dumps dmesg when kernel oopses/panics. This makes pstore
useless for debugging hangs caused by HW issues or improper use of HW
(e.g. weird device inserted -> driver tried to write reserved bits ->
SoC hanged. In that case we don't get any messages in the pstore.
This series add a new message type for pstore, i.e. PSTORE_TYPE_CONSOLE,
plus make pstore/ram.c handle the new messages.
The old ram_console driver is removed. This might probably cause
some pain for out-of-tree code, as it would need to be adjusted...
but "no pain, no gain"? :-) Though, if there's some serious resistance,
we can probably postpone the last two patches.
Thanks!
---
Documentation/ramoops.txt | 14 ++
drivers/staging/android/Kconfig | 5 -
drivers/staging/android/Makefile | 1 -
drivers/staging/android/ram_console.c | 179 ------------------------
fs/pstore/Kconfig | 7 +
fs/pstore/inode.c | 3 +
fs/pstore/platform.c | 54 +++++++-
fs/pstore/ram.c | 246 ++++++++++++++++++++++++---------
fs/pstore/ram_core.c | 81 +----------
include/linux/pstore.h | 1 +
include/linux/pstore_ram.h | 20 +--
11 files changed, 261 insertions(+), 350 deletions(-)
--
Anton Vorontsov
Email: cbouatmailru(a)gmail.com
Hi Greg,
In the light of Linus' response, and I said this to Colin already, I'll
just zap a prz at boot time for pstore/console interface, which means
that nowadays there shouldn't be any objections to this bunch of fixes.
These are valid fixes for v3.5, they restore old pstore's behavior
nuances, which I changed accidentaly.
Except for the last patch, which is just a fix I happened to make when
I got bored of the warning. :-) Not a regression fix, though.
Thanks,
---
fs/pstore/inode.c | 2 +-
fs/pstore/ram.c | 3 +++
fs/pstore/ram_core.c | 27 +++++++++++++++++----------
include/linux/pstore_ram.h | 2 ++
4 files changed, 23 insertions(+), 11 deletions(-)
--
Anton Vorontsov
Email: cbouatmailru(a)gmail.com
Hi all,
Accounting only free pages is very inaccurate for low memory handling,
so we have to be smarter here.
The patch set implements a new attribute, which is blended from various
memory statistics. Vmevent can't expose all the kernel internals to the
userland, as it would make internal Linux MM representation tied to the
ABI. So the ABI itself was made very simple: just number of pages before
we consider that we're low on memory, and the kernel takes care of the
rest.
Thanks,
--
Anton Vorontsov
Email: cbouatmailru(a)gmail.com
=== Highlights ===
* Volatile Range work was covered by LWN: https://lwn.net/Articles/500382/
* Found a few bugs in my current Volatile range work & fixed them.
* Got some complex feedback on how volatile range purging should connect
into the VM core. Mostly objections to using the shrinkers to trigger
purging. Unfortunately this is a fairly complex issue and my VM-fu isn't
quite at the level it needs to be to have proper conversations on it.
* Spent time looking at the VM code trying to better understand all the
moving parts.
* Synced with Anton for the Android biweekly call.
* Talked w/ MathieuP about Android Upstreaming work items that could use
some extra hands.
* Per LinusW's suggestion, pinged ETM maintainer on the status of the
Android ETM patches.
* Synced w/ Andrey about 12.06 plans and updated and pushed out my
linaro-android-3.5-jstultz-rebase branch
* Got some testing on the new wakelock infrastructure. Looks pretty good!
* Updated the linaro-config branch to 3.5 and added Tixy's changes.
* Discussed config fragment planning and Tixy taking over the
linaro-config tree.
=== Plans ===
* More reading the VM code.
* Take a first shot at reworking the VM core to handle volatile ranges.
=== Issues ===
* VM code makes my brain hurt
== Linus Walleij linusw ==
=== Highlights ===
* Attended Linaro connect, ran a presentation, planned...
* Spend some time funneling back the pinctrl updates and ux500
patches for pin control to ST-Ericssons internal development
track. This will take some more time still.
* Reviewed, acked/nacked discussed etc a hoarde of device tree
patches from Lee during connect. I screwed up Lee's patches by
applying them out-of-order, lesson learned: let Lee send his own
pull request instead of picking and choosing.
* Reviewed and tested a PL08x DMA patch bomb including the
split into virtual channels from Russell King. This is real nice
work by Russell, done as part of his OMAP DMA engine transfer
assignment.
* Reviewed a bunch of incoming pin control patches.
* Sent an update converting Nomadik to use dynamic device
allocation, use the common clock framework, and added support
for PL031 RTC and MMC/SD-card to it.
* Authored a patch to transfer Nomadik STn8815 to use pin
control so we can clean up the implementation.
* Reviewed Alessandro Rubini's patches for the Nomadik/Ux500
i2c controller, tested it, found some bugs and sent solutions
back to Alessandro.
* Had extensive discussions on internal ST-Ericsson matters
cutting out a share of my working hours.
=== Plans ===
* Send pull request for Nomadik changes pt 1.
* Vacation:
23 june -> 30 june
9 july -> 3 august (preliminary)
* Check that Greg picks up the PL011 patch solving a
regression on ux500.
* Test the PL08x patches on the Ericsson Research
PB11MPCore and submit platform data for using
pl08x DMA on that platform.
* Look into other Ux500 stuff in need of mainlining...
like
- the HWMON stuff.
=== Issues ===
* N/A
Thanks,
Linus Walleij
=== Highlights ===
* reviewed some pinctrl-imx fix patches from Devendra Naga
* sent out a pinctrl-imx fix patch
* investigated adding sparse irq and irq domain support for imx
We planned to add irq domain support first and sparse irq depends on it.
* As discussed with Linus and Grant on implementing pinctrl gpio common
binding in Linaro Connect,
i spent some time, but not had too much this week, on trying Grant's
suggestion to improve my patch series,
still not done.
=== Plan ===
* trying Grant's suggestion on improving my pinctrl gpio common binding
patches then discuss it with Linus and Grant
based on the trying result.
* adding irq domain support and sparse irq support for imx
Hi all,
With this support kernel can save functions call chain log into a
persistent ram buffer that can be decoded and dumped after reboot
through pstore filesystem. It can be used to determine what function
was last called before a hang or an unexpected reset (caused by, for
example, a buggy driver that abuses HW).
Here's a "nano howto", to get the idea:
# mount -t debugfs debugfs /sys/kernel/debug/
# cd /sys/kernel/debug/tracing
# echo persistent > current_tracer
# reboot -f
[...]
# mount -t pstore pstore /mnt/
# tail /mnt/ftrace-ramoops
0 ffffffff8101ea64 ffffffff8101bcda native_apic_mem_read <- disconnect_bsp_APIC+0x6a/0xc0
0 ffffffff8101ea44 ffffffff8101bcf6 native_apic_mem_write <- disconnect_bsp_APIC+0x86/0xc0
0 ffffffff81020084 ffffffff8101a4b5 hpet_disable <- native_machine_shutdown+0x75/0x90
0 ffffffff81005f94 ffffffff8101a4bb iommu_shutdown_noop <- native_machine_shutdown+0x7b/0x90
0 ffffffff8101a6a1 ffffffff8101a437 native_machine_emergency_restart <- native_machine_restart+0x37/0x40
0 ffffffff811f9876 ffffffff8101a73a acpi_reboot <- native_machine_emergency_restart+0xaa/0x1e0
0 ffffffff8101a514 ffffffff8101a772 mach_reboot_fixups <- native_machine_emergency_restart+0xe2/0x1e0
0 ffffffff811d9c54 ffffffff8101a7a0 __const_udelay <- native_machine_emergency_restart+0x110/0x1e0
0 ffffffff811d9c34 ffffffff811d9c80 __delay <- __const_udelay+0x30/0x40
0 ffffffff811d9d14 ffffffff811d9c3f delay_tsc <- __delay+0xf/0x20
Mostly the code comes from trace_persistent.c driver found in the
Android git tree, written by Colin Cross <ccross(a)android.com>
(according to sign-off history). I reworked the driver a little bit,
and ported it to pstore subsystem.
The patches depend on a pile of other pstore-related work, so
if anyone is willing to try the patches, they would rather grab
the whole git tree:
git://git.infradead.org/users/cbou/linux-pstore.git
or gitweb:
http://git.infradead.org/users/cbou/linux-pstore.git
Note that so far I've tried to not change the original idea, but if
we consider inclusion, there are some open questions:
1. Should we merge persistent tracer with normal function tracer,
i.e. add some flag that makes function tracer to duplicate the
events into pstore (via a callback to pstore)?
2. If we keep the two separate, should the code live in fs/pstore
or kernel/trace?.. I can see valid points for both approaches.
Thanks,
---
Documentation/ramoops.txt | 24 +++++++++
fs/pstore/Kconfig | 12 +++++
fs/pstore/Makefile | 6 +++
fs/pstore/ftrace.c | 122 ++++++++++++++++++++++++++++++++++++++++++++
fs/pstore/inode.c | 111 ++++++++++++++++++++++++++++++++++++++--
fs/pstore/internal.h | 49 ++++++++++++++++++
fs/pstore/platform.c | 13 ++++-
fs/pstore/ram.c | 54 +++++++++++++++-----
include/linux/pstore.h | 5 ++
include/linux/pstore_ram.h | 1 +
kernel/trace/trace.c | 7 +--
11 files changed, 384 insertions(+), 20 deletions(-)
--
Anton Vorontsov
Email: cbouatmailru(a)gmail.com