mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 04:10:18 +09:00
Merge remote-tracking branch 'common/android-4.4' into android-4.4.y
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user