Following patches are required on android-3.7 branch for the androidized
kernel for Origen to build.
Needs testing on USB gadget functionalities.
Tushar Behera (3):
usb: gadget: android: Fix build error because of removal of
usb_gadget_controller_number
usb: gadget: android: Fix build error because of change in composite
driver framework
netfilter: xt_quota2: Remove extra parameter from
netlink_kernel_create
drivers/usb/gadget/android.c | 18 +++++-------------
drivers/usb/gadget/composite.c | 5 ++++-
net/netfilter/xt_quota2.c | 5 +++--
3 files changed, 12 insertions(+), 16 deletions(-)
--
1.7.4.1
From: Will Deacon <will.deacon(a)arm.com>
We need to set the flags when checking the feature register.
Signed-off-by: Will Deacon <will.deacon(a)arm.com>
---
I found this patch in another fork of the bootwrapper and it looks like
something we should have. On the A15 and big.LITTLE setups I've tested
it makes no difference so I guess the z flag was already clear or the
architected timers are already running at 24MHz.
boot.S | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/boot.S b/boot.S
index 40ebd33..dd453e3 100644
--- a/boot.S
+++ b/boot.S
@@ -78,7 +78,7 @@ start:
@
mrc p15, 0, r0, c0, c1, 1 @ CPUID_EXT_PFR1
lsr r0, r0, #16
- and r0, r0, #1 @ Check generic timer support
+ ands r0, r0, #1 @ Check generic timer support
beq 1f
ldr r0, =24000000 @ 24MHz timer frequency
mcr p15, 0, r0, c14, c0, 0 @ CNTFRQ
--
1.7.10.4
This approach aims to retain the current behavior of load balancer with the
change being only in the metric consumed during load balancing,
without unnecessary introduction of new variables.This RFC has been posted to
evaluate its design;to see if this is the right way to go about introducing
per-entity-load-tracking metric for the consumers of the same; in this
specific case,the load balancer.Once the design has been approved off,I can
go around to testing it.
The patch has been based out of tip-master:HEAD at commit 8a1d31c703d
Subject:Merge branch 'x86/urgent'
Grateful to Peter Zijlstra and Ingo Molnar for their valuable feedback on v1
of the RFC which was the foundation for this version.
PATCH[1/2] Aims at enabling usage of Per-Entity-Load-Tracking for load balacing
PATCH[2/2] The crux of the patchset lies here.
---
Preeti U Murthy (2):
sched: Revert temporary FAIR_GROUP_SCHED dependency for load-tracking
sched: Use Per-Entity-Load-Tracking metric for load balancing
include/linux/sched.h | 9 +-----
kernel/sched/core.c | 19 +++++-------
kernel/sched/fair.c | 76 +++++++++++++++++++++----------------------------
kernel/sched/sched.h | 9 +-----
4 files changed, 43 insertions(+), 70 deletions(-)
--
Preeti U Murthy
Hi all,
I want to remind everyone that we are trying to switch to new BUILD-INFO
support for restricting/allowing access to all the builds we create and
that end up on snapshots.linaro.org (and we want all builds to end up
there).
BUILD-INFO.txt supports several ways to control access to your files,
and ideally, it should be produced along with the build itself:
* open: anyone can access
* license protected: anyone can access files after they agree to an
included license
* openid-protection: choose which Launchpad teams someone has to be a
member of before they can access any builds (this replaces Apache-based
openid protection that we still have for old builds)
Short examples for all three are on
https://wiki.linaro.org/Platform/Infrastructure/Publishing
I am sure you can figure out a lot from these examples, but if you are
struggling with anything, Platform Infrastructure team will be glad to
help. Look for anyone listed in the topic of #linaro-infrastructure
channel.
Cheers,
Danilo
Linaro 12.11 Release (Calendar Week 48): Here is test result summary for
Linaro ubuntu image on following boards:
1) ARM Versatile Express A9;
2) Open Embedded SDK;
3) Open Embedded LAMP;
4) Open Embedded Minimum.
Synopsis: Audio works on ARM Versatile Express A9 Jelly Bean; DS-5 Data
Streaming Doesn't work on ARM Versatile Express A9 ubuntu but works well on
Android platform; PHP test passed with issue on Open Embedded LAMP image.
1. ARM Versatile Express A9 + ubuntu (Column AK):
https://docs.google.com/a/linaro.org/spreadsheet/ccc?key=0AroPySpr4FnEdFNmV…
Latest version of DS-5 (v5.12 build 1571) doesn't work on data streaming,
all the other features remain the same. Device Tree is still unavailable
due to the defect in UEFI and 480p video playback doesn't work either. For
HTML5 YouTube video, after streaming buffer finished, the performance is
acceptable.
2. ARM Versatile Express A9 + Android Jelly Bean (Column Q):
https://docs.google.com/a/linaro.org/spreadsheet/ccc?key=0AkxwyUNxNaAadExQd…
Audio works, now the sound can be heard in Angry Birds and Music App. For
latest DS-5 (v5.12 build 1571), data streaming works well. All other
features remain the same.
3. Open Embedded SDK in Fast Model (Column C):
https://docs.google.com/a/linaro.org/spreadsheet/ccc?key=0AgB-fT5LL31CdDhwR…
All test cases passed.
4. Open Embedded LAMP in Fast Model (Column C):
https://docs.google.com/a/linaro.org/spreadsheet/ccc?key=0AgB-fT5LL31CdDhwR…
PHP test passed with issue - kernel exception messages observed. However,
this issue won't affect the system and other functions. All rest tests
passed.
5. Open Embedded Minimum in Fast Model (Column C):
https://docs.google.com/a/linaro.org/spreadsheet/ccc?key=0AgB-fT5LL31CdDhwR…
All test cases passed.
For the previous week (Calendar week 46) summary, please refer to
attachment.
Thank you.
Best Regards
Botao Sun
Hello,
We are using ARM foundation models for evaluation of ARMv8 architecture.
We are able to boot the prebuilt images as provided and directed by Linaro on the following link.
http://www.linaro.org/engineering/armv8/#tab1
But if we try to recompile the kernel as directed on following link (https://wiki.linaro.org/HowTo/BuildArm64Kernel)
we observed that Foundation model is not able to boot the kernel completely.
The following is the error message "Starting Boolog daemon: bootlogd: cannot find console device 204:64 under /dev"
I screened throughout the linaro site as well as on Google but didn't get any fix suitable for it.
I have fixed this bug and would like to submit the patch to linaro upstream branch.
Could you please review the patch and let me know how I can upload it to Linaro so that other developers can also use it.
PFA the patch for the same.
Thanks & BR,
Sagar Kadam
On 11/13/2012 10:52 PM, Julius Werner wrote:
> Many cpuidle drivers measure their time spent in an idle state by
> reading the wallclock time before and after idling and calculating the
> difference. This leads to erroneous results when the wallclock time gets
> updated by another processor in the meantime, adding that clock
> adjustment to the idle state's time counter.
>
> If the clock adjustment was negative, the result is even worse due to an
> erroneous cast from int to unsigned long long of the last_residency
> variable. The negative 32 bit integer will zero-extend and result in a
> forward time jump of roughly four billion milliseconds or 1.3 hours on
> the idle state residency counter.
>
> This patch changes all affected cpuidle drivers to use the monotonic
> clock for their measurements instead. It also removes the erroneous
> cast, making sure that negative residency values are applied correctly
> even though they should not appear anymore.
>
> Signed-off-by: Julius Werner <jwerner(a)chromium.org>
> ---
> arch/powerpc/platforms/pseries/processor_idle.c | 4 ++--
> drivers/acpi/processor_idle.c | 12 ++++++------
> drivers/cpuidle/cpuidle.c | 3 +--
> drivers/idle/intel_idle.c | 13 ++++---------
> 4 files changed, 13 insertions(+), 19 deletions(-)
>
> diff --git a/arch/powerpc/platforms/pseries/processor_idle.c b/arch/powerpc/platforms/pseries/processor_idle.c
> index 45d00e5..4d806b4 100644
> --- a/arch/powerpc/platforms/pseries/processor_idle.c
> +++ b/arch/powerpc/platforms/pseries/processor_idle.c
> @@ -36,7 +36,7 @@ static struct cpuidle_state *cpuidle_state_table;
> static inline void idle_loop_prolog(unsigned long *in_purr, ktime_t *kt_before)
> {
>
> - *kt_before = ktime_get_real();
> + *kt_before = ktime_get();
> *in_purr = mfspr(SPRN_PURR);
> /*
> * Indicate to the HV that we are idle. Now would be
> @@ -50,7 +50,7 @@ static inline s64 idle_loop_epilog(unsigned long in_purr, ktime_t kt_before)
> get_lppaca()->wait_state_cycles += mfspr(SPRN_PURR) - in_purr;
> get_lppaca()->idle = 0;
>
> - return ktime_to_us(ktime_sub(ktime_get_real(), kt_before));
> + return ktime_to_us(ktime_sub(ktime_get(), kt_before));
> }
>
> static int snooze_loop(struct cpuidle_device *dev,
> diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
> index e8086c7..8c98d73 100644
> --- a/drivers/acpi/processor_idle.c
> +++ b/drivers/acpi/processor_idle.c
> @@ -751,9 +751,9 @@ static int acpi_idle_enter_c1(struct cpuidle_device *dev,
>
>
> lapic_timer_state_broadcast(pr, cx, 1);
> - kt1 = ktime_get_real();
> + kt1 = ktime_get();
> acpi_idle_do_entry(cx);
> - kt2 = ktime_get_real();
> + kt2 = ktime_get();
> idle_time = ktime_to_us(ktime_sub(kt2, kt1));
>
> /* Update device last_residency*/
> @@ -843,11 +843,11 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev,
> if (cx->type == ACPI_STATE_C3)
> ACPI_FLUSH_CPU_CACHE();
>
> - kt1 = ktime_get_real();
> + kt1 = ktime_get();
> /* Tell the scheduler that we are going deep-idle: */
> sched_clock_idle_sleep_event();
> acpi_idle_do_entry(cx);
> - kt2 = ktime_get_real();
> + kt2 = ktime_get();
> idle_time_ns = ktime_to_ns(ktime_sub(kt2, kt1));
> idle_time = idle_time_ns;
> do_div(idle_time, NSEC_PER_USEC);
> @@ -934,7 +934,7 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
> */
> lapic_timer_state_broadcast(pr, cx, 1);
>
> - kt1 = ktime_get_real();
> + kt1 = ktime_get();
> /*
> * disable bus master
> * bm_check implies we need ARB_DIS
> @@ -965,7 +965,7 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
> c3_cpu_count--;
> raw_spin_unlock(&c3_lock);
> }
> - kt2 = ktime_get_real();
> + kt2 = ktime_get();
> idle_time_ns = ktime_to_ns(ktime_sub(kt2, kt1));
> idle_time = idle_time_ns;
> do_div(idle_time, NSEC_PER_USEC);
Maybe you can remove all these computations and set the flag
en_core_tk_irqen for the driver ? That will be handled by the cpuidle
framework, no ?
Same comment for the intel_idle driver.
Thanks
-- Daniel
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
When the generic ftrace implementation modifies code for trace-points it
uses stop_machine() to call ftrace_modify_all_code() on one CPU. This
ultimately calls the ARM specific function ftrace_modify_code() which
updates the instruction and then does flush_icache_range(). As this
cache flushing only operates on the local CPU then other cores may end
up execute the old instruction if it's still in their icaches.
This may or may not cause problems for the use of ftrace on kernels
compiled for ARM instructions. However, Thumb2 instructions can straddle
two cache lines so its possible for half the old instruction to be in
the cache and half the new one, leading the the CPU executing garbage.
This patch fixes this situation by providing and arch specific
implementation of arch_ftrace_update_code() which ensures that after one
core has modified all the code, the other cores invalidate their icaches
before continuing.
Signed-off-by: Jon Medhurst <tixy(a)linaro.org>
---
arch/arm/kernel/ftrace.c | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/arch/arm/kernel/ftrace.c b/arch/arm/kernel/ftrace.c
index 34e5664..38b670c 100644
--- a/arch/arm/kernel/ftrace.c
+++ b/arch/arm/kernel/ftrace.c
@@ -14,6 +14,7 @@
#include <linux/ftrace.h>
#include <linux/uaccess.h>
+#include <linux/stop_machine.h>
#include <asm/cacheflush.h>
#include <asm/opcodes.h>
@@ -156,6 +157,39 @@ int ftrace_make_nop(struct module *mod,
return ret;
}
+struct afmc_data {
+ int command;
+ atomic_t cpu;
+ atomic_t done;
+};
+
+static int __arch_ftrace_modify_code(void *data)
+{
+ struct afmc_data *afmcd = data;
+
+ if (atomic_inc_return(&afmcd->cpu) == num_online_cpus()) {
+ /* Last cpu to get into this function does the actual work */
+ ftrace_modify_all_code(afmcd->command);
+ wmb();
+ atomic_set(&afmcd->done, true);
+ } else {
+ /* Other cpus wait for the code modifications to be done */
+ rmb();
+ while (!atomic_read(&afmcd->done))
+ cpu_relax();
+ /* Ensure icache is consistent with the code changes */
+ __flush_icache_all();
+ }
+
+ return 0;
+}
+
+void arch_ftrace_update_code(int command)
+{
+ struct afmc_data afmcd = { command };
+ stop_machine(__arch_ftrace_modify_code, &afmcd, cpu_online_mask);
+}
+
int __init ftrace_dyn_arch_init(void *data)
{
*(unsigned long *)data = 0;
--
1.7.10.4