== Deepak Saxena <dsaxena> ==
=== Highlights ===
* Lots of catching up on emails from pre-ELC
* 1-on-1's
* Discussions on kernel upstreaming and roadmap process
* Review of big.LITTLE Task Migration test plan
=== Plans ===
* Work on kernel wiki page updates
* 1-on-1's, sub-team meetings
* Working on roadmap cards
* Start outline of porting guide that was discussed @ Connect
* Continue looking at kernel upstreaming and roadmap process
* Start outline of member's update on how kernel development process
differs from traditional software development.
* Dive deeper into big.LITTLE switcher project
=== Issues ===
*** I have lost all wiki access permissions (can't edit or create pages, ***
*** can't acces /Internal). RT ticket filed last week but no progress. ***
=== Travel/Time Off ===
* Taking Monday March 12th mostly off, might be online parts of the day
* Possible off May 4-10th.
* Connect Q2
>Hi all,
>We are know that the OMAP4460's PMU is buggy, which loses PMU interrupt always.
>But I do not know what the real bug is, the HW bug or Software bug?
>What the bug is?
Kyler,
This is a hardware problem in the ARM core. It is not specific to the
4460, for instance it also occurs in the 4430 (and presumably non-TI
SoCs). The result of this bug is that PMU counter overflow interrupts
are sometimes lost. The affect can be reduced by paralleling PMU
counters, but this only reduces the problem statistically somewhat.
There is no complete workaround.
The problem is described in ARM errata, but I do not believe that
information is generally available. I think it can be found on a
Freescale site though. I suggest googling for ARM errata 628216.
I believe this will be fixed in a future iteration of the design, but I
do not know when this will be released.
-dl
David Long
Linaro
=== Device Tree ===
* Sent the full series (20 patches) adding DT support for IMX audio.
- Covert audmux driver to a platform driver and move it into ASoC
- Consolidate PowerPC SSI driver and make it work for IMX
- Add imx-sgtl5000 machine driver (DT only)
=== Misc ===
* Reviewed ANATOP MFD and Regulator series (v7) from Paul Liu
--
Regards,
Shawn
== Niklas Hernaeus <nhe> ==
=== General activity ===
* Made the initial DT system to build and boot reliably.
* Sent out a patch for this initial DT system.
/nhe
si_meminfo() calls nr_blockdev_pages() that grabs bdev_lock, but it is
not safe to grab the lock from the hardirq context (the lock is never
taken with an _irqsave variant in block_dev.c). When taken from an
inappropriate context it easily causes the following deadlock:
- - - -
=================================
[ INFO: inconsistent lock state ]
3.2.0+ #1
---------------------------------
inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
swapper/0/0 [HC1[1]:SC0[0]:HE0:SE1] takes:
(bdev_lock){?.+...}, at: [<ffffffff810f1017>] nr_blockdev_pages+0x17/0x70
{HARDIRQ-ON-W} state was registered at:
[<ffffffff81061b20>] mark_irqflags+0x140/0x1b0
[<ffffffff81062f03>] __lock_acquire+0x4c3/0x9c0
[<ffffffff810639c6>] lock_acquire+0x96/0xc0
[<ffffffff8131c58c>] _raw_spin_lock+0x2c/0x40
[<ffffffff810f1017>] nr_blockdev_pages+0x17/0x70
[<ffffffff81089ba8>] si_meminfo+0x38/0x60
[<ffffffff81675493>] eventpoll_init+0x11/0xa1
[<ffffffff8165eb40>] do_one_initcall+0x7a/0x12e
[<ffffffff8165ec8e>] kernel_init+0x9a/0x114
[<ffffffff8131e934>] kernel_thread_helper+0x4/0x10
irq event stamp: 135250
hardirqs last enabled at (135247): [<ffffffff81009897>] default_idle+0x27/0x50
hardirqs last disabled at (135248): [<ffffffff8131e1ab>] apic_timer_interrupt+0x6b/0x80
softirqs last enabled at (135250): [<ffffffff8103814e>] _local_bh_enable+0xe/0x10
softirqs last disabled at (135249): [<ffffffff81038665>] irq_enter+0x65/0x80
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
----
lock(bdev_lock);
<Interrupt>
lock(bdev_lock);
*** DEADLOCK ***
no locks held by swapper/0/0.
- - - -
The patch fixes the issue by using totalram_pages instead of
si_meminfo().
p.s.
Note that VMEVENT_EATTR_NR_SWAP_PAGES type calls si_swapinfo(), which
has a very similar problem. But there is no easy way to fix it.
Do we have any use case for the VMEVENT_EATTR_NR_SWAP_PAGES event? If
not, I'd vote for removing it and thus keeping things simple.
Otherwise we would have two options:
1. Modify swap accounting for vmevent (either start grabbing
_irqsave variant of swapfile.c's swap_lock, or try to
make the accounting atomic);
2. Start using kthreads for vmevent_sample().
Signed-off-by: Anton Vorontsov <anton.vorontsov(a)linaro.org>
---
The patch is for git://github.com/penberg/linux.git vmevent/core.
mm/vmevent.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/mm/vmevent.c b/mm/vmevent.c
index 2342752..1375f9d 100644
--- a/mm/vmevent.c
+++ b/mm/vmevent.c
@@ -51,18 +51,18 @@ static bool vmevent_match(struct vmevent_watch *watch,
static void vmevent_sample(struct vmevent_watch *watch)
{
struct vmevent_watch_event event;
- struct sysinfo si;
int n = 0;
memset(&event, 0, sizeof(event));
event.nr_free_pages = global_page_state(NR_FREE_PAGES);
- si_meminfo(&si);
- event.nr_avail_pages = si.totalram;
+ event.nr_avail_pages = totalram_pages;
#ifdef CONFIG_SWAP
if (watch->config.event_attrs & VMEVENT_EATTR_NR_SWAP_PAGES) {
+ struct sysinfo si;
+
si_swapinfo(&si);
event.nr_swap_pages = si.totalswap;
}
--
1.7.7.6
Caught this build failure:
CC mm/vmevent.o
mm/vmevent.c:17:6: error: expected identifier or '(' before numeric constant
mm/vmevent.c:18:1: warning: no semicolon at end of struct or union [enabled by default]
mm/vmevent.c: In function 'vmevent_sample':
mm/vmevent.c:84:36: error: expected identifier before numeric constant
make[1]: *** [mm/vmevent.o] Error 1
make: *** [mm/] Error 2
This is because linux/swap.h defines nr_swap_pages to 0L, and so things
break.
Fix this by undefinding it back, as we don't use it anyway.
Signed-off-by: Anton Vorontsov <anton.vorontsov(a)linaro.org>
---
The patch is for git://github.com/penberg/linux.git vmevent/core.
mm/vmevent.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/mm/vmevent.c b/mm/vmevent.c
index 37d2c5f..2342752 100644
--- a/mm/vmevent.c
+++ b/mm/vmevent.c
@@ -6,6 +6,7 @@
#include <linux/poll.h>
#include <linux/slab.h>
#include <linux/swap.h>
+#undef nr_swap_pages /* This is defined to a constant for SWAP=n case */
#define VMEVENT_MAX_FREE_THRESHOD 100
--
1.7.7.6
=== Highlights ===
* My LWN summary of the Android upstreaming interest group meeting from
Linaro Connect was published: https://lwn.net/Articles/484196/
* Chased down an issue w/ serial triggered resume from suspend on
Pandaboard. Working with PaulW & KevinH to narrow down the issue, as it
seems to depend on a combination of uboot, kernel config, and boot
options.
* Did some initial testing w/ Rafael's wakelock patches using Android.
Behavior is not totally what I expect, but some of the Android wakelock
code is shifting (early suspend is being dropped) so I'm not sure if I
have a ideal match between userland and kernel with which to compare.
* Sent out patches to reduce timekeeping lock hold times. Got a bit of
feedback from Ingo, which I integrated in. Also did some increased
testing which found a few bugs in my new code. Also in testing my work,
found and chased down some older timekeeping bugs that had been
introduced upstream over the last few years. This took a good chunk of
time this week.
* Meetings: Ran Android-subteam meeting over email, Phone call with
Zach, Lunch with Deepak.
* Managed to reproduce an issue I saw earlier in the month with the
lowmemory killer in staging.
* Some internal items ate most of a day.
=== Plans ===
* Continue working with PaulW and KevinH to sort out alarmtiemr work
* Need to really get focused on fadvise volatile work
=== Issues ===
* NA
== Linus Walleij linusw ==
=== Highlights ===
* Presented the pin control subsystem at the Embedded
Linux Conference in San Francisco.
* Discussed pin control at Linaro Connect, discussed
pin control at Embedded Linux Conference.
Wrote a bunch of patches refactoring the subsystem to
be closer to what we agreed, Stephen will do the
heavy lifting though.
* Wrote and finalized a presentation for the Embedded
Systems Conference pertaining to the platform perimeter
including GPIO, pin control, device tree ... etc.
* Reviewed and merged a whole bunch of patches from
Stephen Warren @nVidia who gladly stepped in and
offered to write the code we needed to get pin control
to where we want it for v3.4. Dong Aishen is doing a
great job in helping out with code review here.
* Dummy pin controls implemented as default fallback
for devices not provided with any controllers.
* Sent pinctrl fixes to Torvalds for v3.3-rc4.
* Collected a number of ux500 fixes and requested
the ARM SoC maintainers to pull them in. Had to
back off U9540 support but will reiterate.
* Samuel Ortiz merged the DB8500 PRCMU update
to the MFD tree.
* Wrote mail to Greg & LKML about system controllers
after discussion at ARM SoC maintainers summit.
Seems the need may be there and we could create
drivers/scm the day we have something that would
live there.
=== Plans ===
* Accumulate pinctrl patches for kernel v3.4 merge
window.
* Drive generalization of Nomadik GPIO
by using the pinctrl framework.
drivers/gpio/gpio-nomadik.c
* 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
- Ux500 clocks
- the HWMON stuff.
=== Issues ===
* Ux500 mainlining or improvements (such as device
tree) having second priority.
* Sorry for long report covering much time, it's covering
some of my vacation that is why...
Thanks,
Linus Walleij