summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2016-12-12 10:15:36 -0800
committerDmitry Shmidt <dimitrysh@google.com>2016-12-12 10:15:36 -0800
commitb82fdb62ee3caa1d07f47930cf54f1996fa50fd2 (patch)
treeb348cb8c2a5c1b2331b0a9af065b320bded5bf7f
parent8a2ec431d5987e1d93c13208da1dcd0e430114ae (diff)
parent61f26de8c058833bb29aa4641717fc5b873724b5 (diff)
Merge remote-tracking branch 'common/android-4.4' into android-4.4.y
-rw-r--r--arch/arm/configs/ranchu_defconfig1
-rw-r--r--arch/arm64/Kconfig.debug6
-rw-r--r--arch/arm64/configs/ranchu64_defconfig1
-rw-r--r--arch/x86/configs/i386_ranchu_defconfig2
-rw-r--r--arch/x86/configs/x86_64_ranchu_defconfig2
-rw-r--r--build.config.goldfish.arm2
-rw-r--r--build.config.goldfish.arm642
-rw-r--r--build.config.goldfish.mips2
-rw-r--r--build.config.goldfish.mips642
-rw-r--r--build.config.goldfish.x862
-rw-r--r--build.config.goldfish.x86_642
-rw-r--r--drivers/firmware/efi/arm-init.c18
-rw-r--r--drivers/md/Kconfig16
-rw-r--r--drivers/md/dm-verity-target.c9
-rw-r--r--include/trace/events/sched.h4
-rw-r--r--kernel/sched/walt.c45
16 files changed, 55 insertions, 61 deletions
diff --git a/arch/arm/configs/ranchu_defconfig b/arch/arm/configs/ranchu_defconfig
index 35a90af941a4..49e7bbd5825a 100644
--- a/arch/arm/configs/ranchu_defconfig
+++ b/arch/arm/configs/ranchu_defconfig
@@ -48,6 +48,7 @@ CONFIG_UNIX=y
CONFIG_XFRM_USER=y
CONFIG_NET_KEY=y
CONFIG_INET=y
+CONFIG_INET_DIAG_DESTROY=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
diff --git a/arch/arm64/Kconfig.debug b/arch/arm64/Kconfig.debug
index 04fb73b973f1..8b0cd45de394 100644
--- a/arch/arm64/Kconfig.debug
+++ b/arch/arm64/Kconfig.debug
@@ -64,13 +64,13 @@ config DEBUG_SET_MODULE_RONX
config DEBUG_RODATA
bool "Make kernel text and rodata read-only"
+ default y
help
If this is set, kernel text and rodata will be made read-only. This
is to help catch accidental or malicious attempts to change the
- kernel's executable code. Additionally splits rodata from kernel
- text so it can be made explicitly non-executable.
+ kernel's executable code.
- If in doubt, say Y
+ If in doubt, say Y
config DEBUG_ALIGN_RODATA
depends on DEBUG_RODATA && ARM64_4K_PAGES
diff --git a/arch/arm64/configs/ranchu64_defconfig b/arch/arm64/configs/ranchu64_defconfig
index 00eb346e0928..fc55008d8c4c 100644
--- a/arch/arm64/configs/ranchu64_defconfig
+++ b/arch/arm64/configs/ranchu64_defconfig
@@ -50,6 +50,7 @@ CONFIG_UNIX=y
CONFIG_XFRM_USER=y
CONFIG_NET_KEY=y
CONFIG_INET=y
+CONFIG_INET_DIAG_DESTROY=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
diff --git a/arch/x86/configs/i386_ranchu_defconfig b/arch/x86/configs/i386_ranchu_defconfig
index 0206eb8cfb61..65ed8c8f8444 100644
--- a/arch/x86/configs/i386_ranchu_defconfig
+++ b/arch/x86/configs/i386_ranchu_defconfig
@@ -89,7 +89,7 @@ CONFIG_SYN_COOKIES=y
CONFIG_INET_ESP=y
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_LRO is not set
-# CONFIG_INET_DIAG is not set
+CONFIG_INET_DIAG_DESTROY=y
CONFIG_IPV6_ROUTER_PREF=y
CONFIG_IPV6_ROUTE_INFO=y
CONFIG_IPV6_OPTIMISTIC_DAD=y
diff --git a/arch/x86/configs/x86_64_ranchu_defconfig b/arch/x86/configs/x86_64_ranchu_defconfig
index dd389774bacb..d977bd91e390 100644
--- a/arch/x86/configs/x86_64_ranchu_defconfig
+++ b/arch/x86/configs/x86_64_ranchu_defconfig
@@ -87,7 +87,7 @@ CONFIG_SYN_COOKIES=y
CONFIG_INET_ESP=y
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_LRO is not set
-# CONFIG_INET_DIAG is not set
+CONFIG_INET_DIAG_DESTROY=y
CONFIG_IPV6_ROUTER_PREF=y
CONFIG_IPV6_ROUTE_INFO=y
CONFIG_IPV6_OPTIMISTIC_DAD=y
diff --git a/build.config.goldfish.arm b/build.config.goldfish.arm
index bab53668e033..866da9361b71 100644
--- a/build.config.goldfish.arm
+++ b/build.config.goldfish.arm
@@ -3,7 +3,7 @@ BRANCH=android-4.4
CROSS_COMPILE=arm-linux-androidkernel-
DEFCONFIG=ranchu_defconfig
EXTRA_CMDS=''
-KERNEL_DIR=goldfish
+KERNEL_DIR=common
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin
FILES="
arch/arm/boot/zImage
diff --git a/build.config.goldfish.arm64 b/build.config.goldfish.arm64
index 0b4c40604b76..9c963cf4a3d8 100644
--- a/build.config.goldfish.arm64
+++ b/build.config.goldfish.arm64
@@ -3,7 +3,7 @@ BRANCH=android-4.4
CROSS_COMPILE=aarch64-linux-android-
DEFCONFIG=ranchu64_defconfig
EXTRA_CMDS=''
-KERNEL_DIR=goldfish
+KERNEL_DIR=common
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin
FILES="
arch/arm64/boot/Image
diff --git a/build.config.goldfish.mips b/build.config.goldfish.mips
index 5dcd8a181ec0..8af53d2c2940 100644
--- a/build.config.goldfish.mips
+++ b/build.config.goldfish.mips
@@ -3,7 +3,7 @@ BRANCH=android-4.4
CROSS_COMPILE=mips64el-linux-android-
DEFCONFIG=ranchu_defconfig
EXTRA_CMDS=''
-KERNEL_DIR=goldfish
+KERNEL_DIR=common
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9/bin
FILES="
vmlinux
diff --git a/build.config.goldfish.mips64 b/build.config.goldfish.mips64
index 9c0b6cbfdb9b..2a33d36dc4c8 100644
--- a/build.config.goldfish.mips64
+++ b/build.config.goldfish.mips64
@@ -3,7 +3,7 @@ BRANCH=android-4.4
CROSS_COMPILE=mips64el-linux-android-
DEFCONFIG=ranchu64_defconfig
EXTRA_CMDS=''
-KERNEL_DIR=goldfish
+KERNEL_DIR=common
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9/bin
FILES="
vmlinux
diff --git a/build.config.goldfish.x86 b/build.config.goldfish.x86
index 2b8a9b75a14b..f86253f58d4d 100644
--- a/build.config.goldfish.x86
+++ b/build.config.goldfish.x86
@@ -3,7 +3,7 @@ BRANCH=android-4.4
CROSS_COMPILE=x86_64-linux-android-
DEFCONFIG=i386_ranchu_defconfig
EXTRA_CMDS=''
-KERNEL_DIR=goldfish
+KERNEL_DIR=common
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/bin
FILES="
arch/x86/boot/bzImage
diff --git a/build.config.goldfish.x86_64 b/build.config.goldfish.x86_64
index 940caefc800f..e1738861ec5c 100644
--- a/build.config.goldfish.x86_64
+++ b/build.config.goldfish.x86_64
@@ -3,7 +3,7 @@ BRANCH=android-4.4
CROSS_COMPILE=x86_64-linux-android-
DEFCONFIG=x86_64_ranchu_defconfig
EXTRA_CMDS=''
-KERNEL_DIR=goldfish
+KERNEL_DIR=common
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/bin
FILES="
arch/x86/boot/bzImage
diff --git a/drivers/firmware/efi/arm-init.c b/drivers/firmware/efi/arm-init.c
index 9e15d571b53c..a76c35fc0b92 100644
--- a/drivers/firmware/efi/arm-init.c
+++ b/drivers/firmware/efi/arm-init.c
@@ -203,7 +203,19 @@ void __init efi_init(void)
reserve_regions();
early_memunmap(memmap.map, params.mmap_size);
- memblock_mark_nomap(params.mmap & PAGE_MASK,
- PAGE_ALIGN(params.mmap_size +
- (params.mmap & ~PAGE_MASK)));
+
+ if (IS_ENABLED(CONFIG_ARM)) {
+ /*
+ * ARM currently does not allow ioremap_cache() to be called on
+ * memory regions that are covered by struct page. So remove the
+ * UEFI memory map from the linear mapping.
+ */
+ memblock_mark_nomap(params.mmap & PAGE_MASK,
+ PAGE_ALIGN(params.mmap_size +
+ (params.mmap & ~PAGE_MASK)));
+ } else {
+ memblock_reserve(params.mmap & PAGE_MASK,
+ PAGE_ALIGN(params.mmap_size +
+ (params.mmap & ~PAGE_MASK)));
+ }
}
diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig
index 6035794bc1f2..3d237a03dab3 100644
--- a/drivers/md/Kconfig
+++ b/drivers/md/Kconfig
@@ -458,6 +458,21 @@ config DM_VERITY
If unsure, say N.
+config DM_VERITY_HASH_PREFETCH_MIN_SIZE_128
+ bool "Prefetch size 128"
+
+config DM_VERITY_HASH_PREFETCH_MIN_SIZE
+ int "Verity hash prefetch minimum size"
+ depends on DM_VERITY
+ range 1 4096
+ default 128 if DM_VERITY_HASH_PREFETCH_MIN_SIZE_128
+ default 1
+ ---help---
+ This sets minimum number of hash blocks to prefetch for dm-verity.
+ For devices like eMMC, having larger prefetch size like 128 can improve
+ performance with increased memory consumption for keeping more hashes
+ in RAM.
+
config DM_VERITY_FEC
bool "Verity forward error correction support"
depends on DM_VERITY
@@ -510,6 +525,7 @@ config DM_ANDROID_VERITY
depends on ASYMMETRIC_KEY_TYPE
depends on ASYMMETRIC_PUBLIC_KEY_SUBTYPE
depends on MD_LINEAR
+ select DM_VERITY_HASH_PREFETCH_MIN_SIZE_128
---help---
This device-mapper target is virtually a VERITY target. This
target is setup by reading the metadata contents piggybacked
diff --git a/drivers/md/dm-verity-target.c b/drivers/md/dm-verity-target.c
index 9d3d4b297201..c7e97cf6e7fb 100644
--- a/drivers/md/dm-verity-target.c
+++ b/drivers/md/dm-verity-target.c
@@ -501,6 +501,7 @@ static void verity_prefetch_io(struct work_struct *work)
container_of(work, struct dm_verity_prefetch_work, work);
struct dm_verity *v = pw->v;
int i;
+ sector_t prefetch_size;
for (i = v->levels - 2; i >= 0; i--) {
sector_t hash_block_start;
@@ -523,8 +524,14 @@ static void verity_prefetch_io(struct work_struct *work)
hash_block_end = v->hash_blocks - 1;
}
no_prefetch_cluster:
+ // for emmc, it is more efficient to send bigger read
+ prefetch_size = max((sector_t)CONFIG_DM_VERITY_HASH_PREFETCH_MIN_SIZE,
+ hash_block_end - hash_block_start + 1);
+ if ((hash_block_start + prefetch_size) >= (v->hash_start + v->hash_blocks)) {
+ prefetch_size = hash_block_end - hash_block_start + 1;
+ }
dm_bufio_prefetch(v->bufio, hash_block_start,
- hash_block_end - hash_block_start + 1);
+ prefetch_size);
}
kfree(pw);
diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h
index dffaffab4bc8..c18d8c89bd12 100644
--- a/include/trace/events/sched.h
+++ b/include/trace/events/sched.h
@@ -1044,7 +1044,7 @@ TRACE_EVENT(walt_update_history,
__field( int, samples )
__field( int, evt )
__field( u64, demand )
- __field(unsigned int, walt_avg )
+ __field( u64, walt_avg )
__field(unsigned int, pelt_avg )
__array( u32, hist, RAVG_HIST_SIZE_MAX)
__field( int, cpu )
@@ -1066,7 +1066,7 @@ TRACE_EVENT(walt_update_history,
),
TP_printk("%d (%s): runtime %u samples %d event %d demand %llu"
- " walt %u pelt %u (hist: %u %u %u %u %u) cpu %d",
+ " walt %llu pelt %u (hist: %u %u %u %u %u) cpu %d",
__entry->pid, __entry->comm,
__entry->runtime, __entry->samples, __entry->evt,
__entry->demand,
diff --git a/kernel/sched/walt.c b/kernel/sched/walt.c
index 2ffb1680b380..6e053bd9830c 100644
--- a/kernel/sched/walt.c
+++ b/kernel/sched/walt.c
@@ -62,8 +62,6 @@ static unsigned int max_possible_freq = 1;
*/
static unsigned int min_max_freq = 1;
-static unsigned int max_capacity = 1024;
-static unsigned int min_capacity = 1024;
static unsigned int max_load_scale_factor = 1024;
static unsigned int max_possible_capacity = 1024;
@@ -869,39 +867,6 @@ void walt_fixup_busy_time(struct task_struct *p, int new_cpu)
double_rq_unlock(src_rq, dest_rq);
}
-/* Keep track of max/min capacity possible across CPUs "currently" */
-static void __update_min_max_capacity(void)
-{
- int i;
- int max = 0, min = INT_MAX;
-
- for_each_online_cpu(i) {
- if (cpu_rq(i)->capacity > max)
- max = cpu_rq(i)->capacity;
- if (cpu_rq(i)->capacity < min)
- min = cpu_rq(i)->capacity;
- }
-
- max_capacity = max;
- min_capacity = min;
-}
-
-static void update_min_max_capacity(void)
-{
- unsigned long flags;
- int i;
-
- local_irq_save(flags);
- for_each_possible_cpu(i)
- raw_spin_lock(&cpu_rq(i)->lock);
-
- __update_min_max_capacity();
-
- for_each_possible_cpu(i)
- raw_spin_unlock(&cpu_rq(i)->lock);
- local_irq_restore(flags);
-}
-
/*
* Return 'capacity' of a cpu in reference to "least" efficient cpu, such that
* least efficient cpu gets capacity of 1024
@@ -984,15 +949,9 @@ static int cpufreq_notifier_policy(struct notifier_block *nb,
/* Initialized to policy->max in case policy->related_cpus is empty! */
unsigned int orig_max_freq = policy->max;
- if (val != CPUFREQ_NOTIFY && val != CPUFREQ_REMOVE_POLICY &&
- val != CPUFREQ_CREATE_POLICY)
+ if (val != CPUFREQ_NOTIFY)
return 0;
- if (val == CPUFREQ_REMOVE_POLICY || val == CPUFREQ_CREATE_POLICY) {
- update_min_max_capacity();
- return 0;
- }
-
for_each_cpu(i, policy->related_cpus) {
cpumask_copy(&cpu_rq(i)->freq_domain_cpumask,
policy->related_cpus);
@@ -1082,8 +1041,6 @@ static int cpufreq_notifier_policy(struct notifier_block *nb,
max_load_scale_factor = highest_mplsf;
}
- __update_min_max_capacity();
-
return 0;
}