== Device Tree ==
* Sent a couple of u-boot patch to remove useless CONFIG_SYS_BOOTMAPSZ
and redefined CONFIG_OF_LIBFDT for mx51/53
* Tested zImage fix patch set with append-dtb patch
* It seems that RMK opposes to putting dts file in kernel tree
== Non-blocking MMC testing ==
* Some more discussion with Per Porlin on mxs-mmc driver regarding
to non-blocking support. Need to do more testing to understand
if the ~4% performance improvement is expected on mxs-mmc.
== LTP Blueprint ==
* Created the initial blueprint linaro-kernel-o-ras-fix-ltp
* Tried ltp-full-20110228 and ltp-kernel-test package shipped with
Natty (ltp-base-20091231), and saw very different test set and
results.
* Got contacted with Paul Larson who was ever the maintainer of LTP
and now leading the Validation team and using LTP to validating
Linaro images. He may give valuable inputs to the requirements
of this Blueprint.
== Plan ==
* Will work on v2 of sdhci-pltfm&of-consolidation
* Keep drafting blueprint linaro-kernel-o-ras-fix-ltp
--
Regards,
Shawn
== Paul E. McKenney <paulmck> ==
=== Highlights ==
* Sent Sedat Dilek yet more sets of diagnostics. This turned out to be a bug in the timers system, which Thomas Gleixner fixed.
* Interviewed another candidate for Kernel WG, also +1.
* Pre-Budapest definition/scheduling work.
* Presented on SMP to the Android System Developers Forum.
* Submitted RCU priority boosting to LKML, got good initial feedback. On track for the 2.6.40 merge window.
== Per Forlin <perfor> ==
=== Highlights ===
* Preparing drafts for 11.11 blueprints
* K7.3 Non-Blocking Request in MMC
* K7.4 eMMC Background Maintenance
* K7.6 SDIO Single Function Support
* K7.10 DMA Engine on ARM
* Started to investigate io-scheduling but ended up studying read
ahead instead. It may turn out that "K7.2 Optimize I/O Scheduling for
Flash" is not the right thing to do for flash performance.
=== Plans ===
* Prepare blueprints for LDS
== John Stultz <jstultz_vm> ==
=== Highlights ===
* Posix Alarm Timers were pulled into -tip for 2.6.40!
* However, some config related build issues were discovered, but
I've sent a proposed fix to handle it.
* Arve from Google commented on one of the Alarm Timer patches,
suggesting a way to avoid error accumulation each suspend/resume cycle.
* Reviewed Andy Green's slides for his talk and provided feedback.
* Submitted the virtual battery driver, which is an out of tree patch
in the Linaro+Android kernel tree, for review on lkml. After feedback
from maintainer, I worked to merge the same functionality into the
test_power driver and submitted that for inclusion.
* Worked on Android Kernel Blueprints/Specs
* Got some complaints on an old patch of mine that changed some of the
task->comm locking rules, so submitted a rough draft patch on how to
address the issue. Currently in discussion there.
* Submitted Linux Plumbers conf BoF on Kconfig fragment work queued for
11.11 cycle
=== Plans ===
* Handle any last minute alarmtimer changes for -tip.
* Try to adapt Arve's RTC suggestions into the tree.
* Take another shot at the task->comm issue.
* Continue working on the trivial tree to send out cpufreq and cgroup
branches.
* Follow up on the trivial tree patches sent out this week.
* Try to get time to look at ADB support for Android kernels
=== Issues ===
* I've got Jury Duty on Weds, so will be out for most of the day.
Hi,
I am working on minimizing the latency between two block requests in
the mmc framework. The approach is simple. If there are more than one
request in the block queue the 2nd request will be prepared while the
1st request is being transfered. When the 1 st request is completed
the 2nd request will start with minimal latency cost.
For writes this work fine:
root@(none):/ dd of=/dev/mmcblk0p2 if=/dev/zero bs=4k count=2560
2560+0 records in
2560+0 records out
root@(none):/ dmesg
[mmc_queue_thread] req d97a2ac8 blocks 1024
[mmc_queue_thread] req d97a2ba0 blocks 1024
[mmc_queue_thread] req d97a2c78 blocks 1024
[mmc_queue_thread] req d97a2d50 blocks 1024
[mmc_queue_thread] req d97a2e28 blocks 1024
[mmc_queue_thread] req d97a2f00 blocks 1024
[mmc_queue_thread] req d954c9b0 blocks 1024
[mmc_queue_thread] req d954c800 blocks 1024
[mmc_queue_thread] req d954c728 blocks 1024
[mmc_queue_thread] req d954c650 blocks 1024
[mmc_queue_thread] req d954c578 blocks 1024
[mmc_queue_thread] req d954c4a0 blocks 1024
[mmc_queue_thread] req d954c8d8 blocks 1024
[mmc_queue_thread] req d954c3c8 blocks 1024
[mmc_queue_thread] req d954c2f0 blocks 1024
[mmc_queue_thread] req d954c218 blocks 1024
[mmc_queue_thread] req d954c140 blocks 1024
[mmc_queue_thread] req d954c068 blocks 1024
[mmc_queue_thread] req d954cde8 blocks 1024
[mmc_queue_thread] req d954cec0 blocks 1024
mmc block queue is never empty. All the mmc request preparations can
run in parallel with an ongoing transfer.
[mmc_queue_thread] req (null) blocks 0
[mmc_queue_thread] req (null) blocks 0
"req (null)" indicates there are no requests pending in the mmc block
queue. This is expected since there are no more requests to process.
For reads on the other hand it look like this
root@(none):/ dd if=/dev/mmcblk0 of=/dev/null bs=4k count=256
256+0 records in
256+0 records out
root@(none):/ dmesg
[mmc_queue_thread] req d954cec0 blocks 32
[mmc_queue_thread] req (null) blocks 0
[mmc_queue_thread] req (null) blocks 0
[mmc_queue_thread] req d954cec0 blocks 64
[mmc_queue_thread] req (null) blocks 0
[mmc_queue_thread] req d954cde8 blocks 128
[mmc_queue_thread] req (null) blocks 0
[mmc_queue_thread] req d954cec0 blocks 256
[mmc_queue_thread] req (null) blocks 0
[mmc_queue_thread] req d954cde8 blocks 256
[mmc_queue_thread] req (null) blocks 0
[mmc_queue_thread] req d954cec0 blocks 256
[mmc_queue_thread] req (null) blocks 0
[mmc_queue_thread] req d954cde8 blocks 256
[mmc_queue_thread] req (null) blocks 0
[mmc_queue_thread] req d954cec0 blocks 256
[mmc_queue_thread] req (null) blocks 0
[mmc_queue_thread] req d954cde8 blocks 256
[mmc_queue_thread] req (null) blocks 0
[mmc_queue_thread] req d954cec0 blocks 256
[mmc_queue_thread] req (null) blocks 0
[mmc_queue_thread] req d954cde8 blocks 256
[mmc_queue_thread] req (null) blocks 0
[mmc_queue_thread] req d954cec0 blocks 256
[mmc_queue_thread] req (null) blocks 0
[mmc_queue_thread] req (null) blocks 0
There are never more than one read request in the mmc block queue. All
the mmc request preparations will be serialized and the cost for this
is roughly 10% lower bandwidth (verified on ARM platforms ux500 and
Pandaboard).
> page_not_up_to_date:
> /* Get exclusive access to the page ... */
> error = lock_page_killable(page);
I looked at the code in do_generic_file_read(). lock_page_killable
waits until the current read ahead is completed.
Is it possible to configure the read ahead to push multiple read
request to the block device queue?
Thanks,
Per
Hi Jerry & Wolfgang,
The following series fixes a bug in the device tree code and
eliminates the CONFIG_OF_LIBFDT dependency on CONFIG_SYS_BOOTMAPSZ.
It also adds parsing of the reserved mem regions so that U-Boot
doesn't decide to use a regions set aside for another purpose.
Finally, the last patch adds CONFIG_OF_LIBFDT to a bunch of boards.
I'm not expecting the last patch to be picked up in mainline (yet),
but it will be picked up into the Linaro tree for the 11.05 release.
John, this same series applies cleanly on the linaro-stable u-boot
tree. Can you pick them up please? Or would you prefer me to send
you a pull request?
g.
---
Grant Likely (6):
Stop passing around bootmem_base value.
Default to bootm_size() when CONFIG_SYS_BOOTMAPSZ is not defined
Remove device tree booting dependency on CONFIG_SYS_BOOTMAPSZ
Fix off-by-one error in passing initrd end address via device tree
Respect memreserve regions specified in the device tree
Add CONFIG_OF_LIBFDT to more boards.
README | 16 ++++++++-
arch/arm/lib/bootm.c | 5 ++-
arch/m68k/lib/bootm.c | 7 +---
arch/powerpc/lib/bootm.c | 19 +++++-----
common/cmd_bootm.c | 7 ++--
common/fdt_support.c | 2 +
common/image.c | 72 +++++++++++++++++++++++++++++----------
include/configs/ca9x4_ct_vxp.h | 2 +
include/configs/devkit8000.h | 2 +
include/configs/efikamx.h | 2 +
include/configs/igep0020.h | 2 +
include/configs/igep0030.h | 2 +
include/configs/mx51evk.h | 2 +
include/configs/mx53evk.h | 2 +
include/configs/omap3_beagle.h | 7 ----
include/configs/omap3_overo.h | 2 +
include/configs/omap3_pandora.h | 2 +
include/configs/omap3_sdp3430.h | 2 +
include/configs/omap3_zoom1.h | 2 +
include/configs/omap3_zoom2.h | 2 +
include/configs/omap4_panda.h | 2 +
include/configs/omap4_sdp4430.h | 2 +
include/configs/tegra2-common.h | 1 +
include/image.h | 10 +++--
24 files changed, 122 insertions(+), 52 deletions(-)
--
Signature