ANDROID: Move out patches/ and replace by link to kernel/common-patches project
Change-Id: Ie9df0ea6933b34a1b97f5034bb8c6a913b079e08 Signed-off-by: Matthias Maennich <maennich@google.com>
This commit is contained in:
parent
3fde1dfb00
commit
ce42ef68b9
|
@ -1,332 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: David Zeuthen <zeuthen@google.com>
|
||||
Date: Tue, 24 Jan 2017 13:17:01 -0500
|
||||
Subject: ANDROID: AVB error handler to invalidate vbmeta partition.
|
||||
|
||||
If androidboot.vbmeta.invalidate_on_error is 'yes' and
|
||||
androidboot.vbmeta.device is set and points to a device with vbmeta
|
||||
magic, this header will be overwritten upon an irrecoverable dm-verity
|
||||
error. The side-effect of this is that the slot will fail to verify on
|
||||
next reboot, effectively triggering the boot loader to fallback to
|
||||
another slot. This work both if the vbmeta struct is at the start of a
|
||||
partition or if there's an AVB footer at the end.
|
||||
|
||||
This code is based on drivers/md/dm-verity-chromeos.c from ChromiumOS.
|
||||
|
||||
Bug: 31622239
|
||||
Bug: 120445368
|
||||
Test: Manually tested (other arch).
|
||||
Signed-off-by: David Zeuthen <zeuthen@google.com>
|
||||
[astrachan: re-diffed against a kernel without dm-android-verity]
|
||||
Change-Id: I571b5a75461da38ad832a9bea33c298bef859e26
|
||||
Signed-off-by: Alistair Strachan <astrachan@google.com>
|
||||
---
|
||||
drivers/md/Kconfig | 11 ++
|
||||
drivers/md/Makefile | 4 +
|
||||
drivers/md/dm-verity-avb.c | 229 ++++++++++++++++++++++++++++++++++
|
||||
drivers/md/dm-verity-target.c | 6 +-
|
||||
drivers/md/dm-verity.h | 2 +
|
||||
5 files changed, 251 insertions(+), 1 deletion(-)
|
||||
create mode 100644 drivers/md/dm-verity-avb.c
|
||||
|
||||
diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig
|
||||
index aa98953f4462..a744ba61ad21 100644
|
||||
--- a/drivers/md/Kconfig
|
||||
+++ b/drivers/md/Kconfig
|
||||
@@ -517,6 +517,17 @@ config DM_VERITY_VERIFY_ROOTHASH_SIG
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
+config DM_VERITY_AVB
|
||||
+ tristate "Support AVB specific verity error behavior"
|
||||
+ depends on DM_VERITY
|
||||
+ ---help---
|
||||
+ Enables Android Verified Boot platform-specific error
|
||||
+ behavior. In particular, it will modify the vbmeta partition
|
||||
+ specified on the kernel command-line when non-transient error
|
||||
+ occurs (followed by a panic).
|
||||
+
|
||||
+ If unsure, say N.
|
||||
+
|
||||
config DM_VERITY_FEC
|
||||
bool "Verity forward error correction support"
|
||||
depends on DM_VERITY
|
||||
diff --git a/drivers/md/Makefile b/drivers/md/Makefile
|
||||
index d91a7edcd2ab..356b32d6b158 100644
|
||||
--- a/drivers/md/Makefile
|
||||
+++ b/drivers/md/Makefile
|
||||
@@ -80,6 +80,10 @@ ifeq ($(CONFIG_DM_UEVENT),y)
|
||||
dm-mod-objs += dm-uevent.o
|
||||
endif
|
||||
|
||||
+ifeq ($(CONFIG_DM_VERITY_AVB),y)
|
||||
+dm-verity-objs += dm-verity-avb.o
|
||||
+endif
|
||||
+
|
||||
ifeq ($(CONFIG_DM_VERITY_FEC),y)
|
||||
dm-verity-objs += dm-verity-fec.o
|
||||
endif
|
||||
diff --git a/drivers/md/dm-verity-avb.c b/drivers/md/dm-verity-avb.c
|
||||
new file mode 100644
|
||||
index 000000000000..a9f102aa379e
|
||||
--- /dev/null
|
||||
+++ b/drivers/md/dm-verity-avb.c
|
||||
@@ -0,0 +1,229 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2017 Google.
|
||||
+ *
|
||||
+ * This file is released under the GPLv2.
|
||||
+ *
|
||||
+ * Based on drivers/md/dm-verity-chromeos.c
|
||||
+ */
|
||||
+
|
||||
+#include <linux/device-mapper.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/mount.h>
|
||||
+
|
||||
+#define DM_MSG_PREFIX "verity-avb"
|
||||
+
|
||||
+/* Set via module parameters. */
|
||||
+static char avb_vbmeta_device[64];
|
||||
+static char avb_invalidate_on_error[4];
|
||||
+
|
||||
+static void invalidate_vbmeta_endio(struct bio *bio)
|
||||
+{
|
||||
+ if (bio->bi_status)
|
||||
+ DMERR("invalidate_vbmeta_endio: error %d", bio->bi_status);
|
||||
+ complete(bio->bi_private);
|
||||
+}
|
||||
+
|
||||
+static int invalidate_vbmeta_submit(struct bio *bio,
|
||||
+ struct block_device *bdev,
|
||||
+ int op, int access_last_sector,
|
||||
+ struct page *page)
|
||||
+{
|
||||
+ DECLARE_COMPLETION_ONSTACK(wait);
|
||||
+
|
||||
+ bio->bi_private = &wait;
|
||||
+ bio->bi_end_io = invalidate_vbmeta_endio;
|
||||
+ bio_set_dev(bio, bdev);
|
||||
+ bio_set_op_attrs(bio, op, REQ_SYNC);
|
||||
+
|
||||
+ bio->bi_iter.bi_sector = 0;
|
||||
+ if (access_last_sector) {
|
||||
+ sector_t last_sector;
|
||||
+
|
||||
+ last_sector = (i_size_read(bdev->bd_inode)>>SECTOR_SHIFT) - 1;
|
||||
+ bio->bi_iter.bi_sector = last_sector;
|
||||
+ }
|
||||
+ if (!bio_add_page(bio, page, PAGE_SIZE, 0)) {
|
||||
+ DMERR("invalidate_vbmeta_submit: bio_add_page error");
|
||||
+ return -EIO;
|
||||
+ }
|
||||
+
|
||||
+ submit_bio(bio);
|
||||
+ /* Wait up to 2 seconds for completion or fail. */
|
||||
+ if (!wait_for_completion_timeout(&wait, msecs_to_jiffies(2000)))
|
||||
+ return -EIO;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int invalidate_vbmeta(dev_t vbmeta_devt)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+ struct block_device *bdev;
|
||||
+ struct bio *bio;
|
||||
+ struct page *page;
|
||||
+ fmode_t dev_mode;
|
||||
+ /* Ensure we do synchronous unblocked I/O. We may also need
|
||||
+ * sync_bdev() on completion, but it really shouldn't.
|
||||
+ */
|
||||
+ int access_last_sector = 0;
|
||||
+
|
||||
+ DMINFO("invalidate_vbmeta: acting on device %d:%d",
|
||||
+ MAJOR(vbmeta_devt), MINOR(vbmeta_devt));
|
||||
+
|
||||
+ /* First we open the device for reading. */
|
||||
+ dev_mode = FMODE_READ | FMODE_EXCL;
|
||||
+ bdev = blkdev_get_by_dev(vbmeta_devt, dev_mode,
|
||||
+ invalidate_vbmeta);
|
||||
+ if (IS_ERR(bdev)) {
|
||||
+ DMERR("invalidate_kernel: could not open device for reading");
|
||||
+ dev_mode = 0;
|
||||
+ ret = -ENOENT;
|
||||
+ goto failed_to_read;
|
||||
+ }
|
||||
+
|
||||
+ bio = bio_alloc(GFP_NOIO, 1);
|
||||
+ if (!bio) {
|
||||
+ ret = -ENOMEM;
|
||||
+ goto failed_bio_alloc;
|
||||
+ }
|
||||
+
|
||||
+ page = alloc_page(GFP_NOIO);
|
||||
+ if (!page) {
|
||||
+ ret = -ENOMEM;
|
||||
+ goto failed_to_alloc_page;
|
||||
+ }
|
||||
+
|
||||
+ access_last_sector = 0;
|
||||
+ ret = invalidate_vbmeta_submit(bio, bdev, REQ_OP_READ,
|
||||
+ access_last_sector, page);
|
||||
+ if (ret) {
|
||||
+ DMERR("invalidate_vbmeta: error reading");
|
||||
+ goto failed_to_submit_read;
|
||||
+ }
|
||||
+
|
||||
+ /* We have a page. Let's make sure it looks right. */
|
||||
+ if (memcmp("AVB0", page_address(page), 4) == 0) {
|
||||
+ /* Stamp it. */
|
||||
+ memcpy(page_address(page), "AVE0", 4);
|
||||
+ DMINFO("invalidate_vbmeta: found vbmeta partition");
|
||||
+ } else {
|
||||
+ /* Could be this is on a AVB footer, check. Also, since the
|
||||
+ * AVB footer is in the last 64 bytes, adjust for the fact that
|
||||
+ * we're dealing with 512-byte sectors.
|
||||
+ */
|
||||
+ size_t offset = (1<<SECTOR_SHIFT) - 64;
|
||||
+
|
||||
+ access_last_sector = 1;
|
||||
+ ret = invalidate_vbmeta_submit(bio, bdev, REQ_OP_READ,
|
||||
+ access_last_sector, page);
|
||||
+ if (ret) {
|
||||
+ DMERR("invalidate_vbmeta: error reading");
|
||||
+ goto failed_to_submit_read;
|
||||
+ }
|
||||
+ if (memcmp("AVBf", page_address(page) + offset, 4) != 0) {
|
||||
+ DMERR("invalidate_vbmeta on non-vbmeta partition");
|
||||
+ ret = -EINVAL;
|
||||
+ goto invalid_header;
|
||||
+ }
|
||||
+ /* Stamp it. */
|
||||
+ memcpy(page_address(page) + offset, "AVE0", 4);
|
||||
+ DMINFO("invalidate_vbmeta: found vbmeta footer partition");
|
||||
+ }
|
||||
+
|
||||
+ /* Now rewrite the changed page - the block dev was being
|
||||
+ * changed on read. Let's reopen here.
|
||||
+ */
|
||||
+ blkdev_put(bdev, dev_mode);
|
||||
+ dev_mode = FMODE_WRITE | FMODE_EXCL;
|
||||
+ bdev = blkdev_get_by_dev(vbmeta_devt, dev_mode,
|
||||
+ invalidate_vbmeta);
|
||||
+ if (IS_ERR(bdev)) {
|
||||
+ DMERR("invalidate_vbmeta: could not open device for writing");
|
||||
+ dev_mode = 0;
|
||||
+ ret = -ENOENT;
|
||||
+ goto failed_to_write;
|
||||
+ }
|
||||
+
|
||||
+ /* We re-use the same bio to do the write after the read. Need to reset
|
||||
+ * it to initialize bio->bi_remaining.
|
||||
+ */
|
||||
+ bio_reset(bio);
|
||||
+
|
||||
+ ret = invalidate_vbmeta_submit(bio, bdev, REQ_OP_WRITE,
|
||||
+ access_last_sector, page);
|
||||
+ if (ret) {
|
||||
+ DMERR("invalidate_vbmeta: error writing");
|
||||
+ goto failed_to_submit_write;
|
||||
+ }
|
||||
+
|
||||
+ DMERR("invalidate_vbmeta: completed.");
|
||||
+ ret = 0;
|
||||
+failed_to_submit_write:
|
||||
+failed_to_write:
|
||||
+invalid_header:
|
||||
+ __free_page(page);
|
||||
+failed_to_submit_read:
|
||||
+ /* Technically, we'll leak a page with the pending bio, but
|
||||
+ * we're about to reboot anyway.
|
||||
+ */
|
||||
+failed_to_alloc_page:
|
||||
+ bio_put(bio);
|
||||
+failed_bio_alloc:
|
||||
+ if (dev_mode)
|
||||
+ blkdev_put(bdev, dev_mode);
|
||||
+failed_to_read:
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+void dm_verity_avb_error_handler(void)
|
||||
+{
|
||||
+ dev_t dev;
|
||||
+
|
||||
+ DMINFO("AVB error handler called for %s", avb_vbmeta_device);
|
||||
+
|
||||
+ if (strcmp(avb_invalidate_on_error, "yes") != 0) {
|
||||
+ DMINFO("Not configured to invalidate");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (avb_vbmeta_device[0] == '\0') {
|
||||
+ DMERR("avb_vbmeta_device parameter not set");
|
||||
+ goto fail_no_dev;
|
||||
+ }
|
||||
+
|
||||
+ dev = name_to_dev_t(avb_vbmeta_device);
|
||||
+ if (!dev) {
|
||||
+ DMERR("No matching partition for device: %s",
|
||||
+ avb_vbmeta_device);
|
||||
+ goto fail_no_dev;
|
||||
+ }
|
||||
+
|
||||
+ invalidate_vbmeta(dev);
|
||||
+
|
||||
+fail_no_dev:
|
||||
+ ;
|
||||
+}
|
||||
+
|
||||
+static int __init dm_verity_avb_init(void)
|
||||
+{
|
||||
+ DMINFO("AVB error handler initialized with vbmeta device: %s",
|
||||
+ avb_vbmeta_device);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void __exit dm_verity_avb_exit(void)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+module_init(dm_verity_avb_init);
|
||||
+module_exit(dm_verity_avb_exit);
|
||||
+
|
||||
+MODULE_AUTHOR("David Zeuthen <zeuthen@google.com>");
|
||||
+MODULE_DESCRIPTION("AVB-specific error handler for dm-verity");
|
||||
+MODULE_LICENSE("GPL");
|
||||
+
|
||||
+/* Declare parameter with no module prefix */
|
||||
+#undef MODULE_PARAM_PREFIX
|
||||
+#define MODULE_PARAM_PREFIX "androidboot.vbmeta."
|
||||
+module_param_string(device, avb_vbmeta_device, sizeof(avb_vbmeta_device), 0);
|
||||
+module_param_string(invalidate_on_error, avb_invalidate_on_error,
|
||||
+ sizeof(avb_invalidate_on_error), 0);
|
||||
diff --git a/drivers/md/dm-verity-target.c b/drivers/md/dm-verity-target.c
|
||||
index 4fb33e7562c5..99cee512273f 100644
|
||||
--- a/drivers/md/dm-verity-target.c
|
||||
+++ b/drivers/md/dm-verity-target.c
|
||||
@@ -251,8 +251,12 @@ static int verity_handle_err(struct dm_verity *v, enum verity_block_type type,
|
||||
if (v->mode == DM_VERITY_MODE_LOGGING)
|
||||
return 0;
|
||||
|
||||
- if (v->mode == DM_VERITY_MODE_RESTART)
|
||||
+ if (v->mode == DM_VERITY_MODE_RESTART) {
|
||||
+#ifdef CONFIG_DM_VERITY_AVB
|
||||
+ dm_verity_avb_error_handler();
|
||||
+#endif
|
||||
kernel_restart("dm-verity device corrupted");
|
||||
+ }
|
||||
|
||||
return 1;
|
||||
}
|
||||
diff --git a/drivers/md/dm-verity.h b/drivers/md/dm-verity.h
|
||||
index 641b9e3a399b..adbd64fde481 100644
|
||||
--- a/drivers/md/dm-verity.h
|
||||
+++ b/drivers/md/dm-verity.h
|
||||
@@ -128,4 +128,6 @@ extern int verity_hash(struct dm_verity *v, struct ahash_request *req,
|
||||
extern int verity_hash_for_block(struct dm_verity *v, struct dm_verity_io *io,
|
||||
sector_t block, u8 *digest, bool *is_zero);
|
||||
|
||||
+extern void dm_verity_avb_error_handler(void);
|
||||
+
|
||||
#endif /* DM_VERITY_H */
|
|
@ -1,67 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Hridya Valsaraju <hridya@google.com>
|
||||
Date: Wed, 2 Oct 2019 14:32:19 -0700
|
||||
Subject: ANDROID: Add an IOCTL to check ION ABI version
|
||||
|
||||
Userspace needs a way to detect ION ABI version at runtime to determine
|
||||
heap IDs. CURRENT_ION_ABI_VERSION is set to 2 considering legacy and
|
||||
upstream versions as 0 and 1.
|
||||
|
||||
Bug: 140916230
|
||||
Test: make
|
||||
|
||||
Signed-off-by: Hridya Valsaraju <hridya@google.com>
|
||||
|
||||
Change-Id: Ie9d9e23c2d8323620832906d33745d599cbce6be
|
||||
---
|
||||
drivers/staging/android/ion/ion.c | 6 ++++++
|
||||
include/uapi/linux/ion.h | 7 +++++++
|
||||
2 files changed, 13 insertions(+)
|
||||
|
||||
diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c
|
||||
index 2c915579f60b..a499a76453ee 100644
|
||||
--- a/drivers/staging/android/ion/ion.c
|
||||
+++ b/drivers/staging/android/ion/ion.c
|
||||
@@ -27,6 +27,8 @@
|
||||
|
||||
#include "ion_private.h"
|
||||
|
||||
+#define ION_CURRENT_ABI_VERSION 2
|
||||
+
|
||||
static struct ion_device *internal_dev;
|
||||
|
||||
/* Entry into ION allocator for rest of the kernel */
|
||||
@@ -108,6 +110,7 @@ static int ion_query_heaps(struct ion_heap_query *query)
|
||||
union ion_ioctl_arg {
|
||||
struct ion_allocation_data allocation;
|
||||
struct ion_heap_query query;
|
||||
+ u32 ion_abi_version;
|
||||
};
|
||||
|
||||
static int validate_ioctl_arg(unsigned int cmd, union ion_ioctl_arg *arg)
|
||||
@@ -169,6 +172,9 @@ static long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
||||
case ION_IOC_HEAP_QUERY:
|
||||
ret = ion_query_heaps(&data.query);
|
||||
break;
|
||||
+ case ION_IOC_ABI_VERSION:
|
||||
+ data.ion_abi_version = ION_CURRENT_ABI_VERSION;
|
||||
+ break;
|
||||
default:
|
||||
return -ENOTTY;
|
||||
}
|
||||
diff --git a/include/uapi/linux/ion.h b/include/uapi/linux/ion.h
|
||||
index ad773e5fa4d2..fdb2eba7f500 100644
|
||||
--- a/include/uapi/linux/ion.h
|
||||
+++ b/include/uapi/linux/ion.h
|
||||
@@ -159,4 +159,11 @@ struct ion_heap_query {
|
||||
#define ION_IOC_HEAP_QUERY _IOWR(ION_IOC_MAGIC, 8, \
|
||||
struct ion_heap_query)
|
||||
|
||||
+/**
|
||||
+ * DOC: ION_IOC_HEAP_ABI_VERSION - return ABI version
|
||||
+ *
|
||||
+ * Returns ABI version for this driver
|
||||
+ */
|
||||
+#define ION_IOC_ABI_VERSION _IOR(ION_IOC_MAGIC, 9, \
|
||||
+ __u32)
|
||||
#endif /* _UAPI_LINUX_ION_H */
|
|
@ -1,561 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tristan Muntsinger <muntsinger@google.com>
|
||||
Date: Thu, 25 Jul 2019 13:48:04 -0700
|
||||
Subject: ANDROID: Add initial rockpi4_defconfig
|
||||
|
||||
This is for the Rock Pi 4B board from Radxa with Rockchip's RK3399.
|
||||
|
||||
Bug: 118442619
|
||||
Change-Id: If2ba4198ef268e5b249e909b1987d52f1c8d0def
|
||||
Signed-off-by: Tristan Muntsinger <muntsinger@google.com>
|
||||
---
|
||||
arch/arm64/configs/rockpi4_defconfig | 540 +++++++++++++++++++++++++++
|
||||
1 file changed, 540 insertions(+)
|
||||
create mode 100644 arch/arm64/configs/rockpi4_defconfig
|
||||
|
||||
diff --git a/arch/arm64/configs/rockpi4_defconfig b/arch/arm64/configs/rockpi4_defconfig
|
||||
new file mode 100644
|
||||
index 000000000000..6d0cf70f3757
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/configs/rockpi4_defconfig
|
||||
@@ -0,0 +1,540 @@
|
||||
+CONFIG_AUDIT=y
|
||||
+CONFIG_NO_HZ=y
|
||||
+CONFIG_HIGH_RES_TIMERS=y
|
||||
+CONFIG_PREEMPT=y
|
||||
+CONFIG_TASKSTATS=y
|
||||
+CONFIG_TASK_XACCT=y
|
||||
+CONFIG_TASK_IO_ACCOUNTING=y
|
||||
+CONFIG_PSI=y
|
||||
+CONFIG_IKCONFIG=y
|
||||
+CONFIG_IKCONFIG_PROC=y
|
||||
+CONFIG_MEMCG=y
|
||||
+CONFIG_MEMCG_SWAP=y
|
||||
+CONFIG_BLK_CGROUP=y
|
||||
+CONFIG_RT_GROUP_SCHED=y
|
||||
+CONFIG_CGROUP_FREEZER=y
|
||||
+CONFIG_CPUSETS=y
|
||||
+CONFIG_CGROUP_CPUACCT=y
|
||||
+CONFIG_CGROUP_BPF=y
|
||||
+CONFIG_SCHED_AUTOGROUP=y
|
||||
+CONFIG_BLK_DEV_INITRD=y
|
||||
+# CONFIG_RD_BZIP2 is not set
|
||||
+# CONFIG_RD_LZMA is not set
|
||||
+# CONFIG_RD_XZ is not set
|
||||
+# CONFIG_RD_LZO is not set
|
||||
+# CONFIG_RD_LZ4 is not set
|
||||
+# CONFIG_SYSFS_SYSCALL is not set
|
||||
+CONFIG_FHANDLE=y
|
||||
+CONFIG_KALLSYMS_ALL=y
|
||||
+CONFIG_BPF_SYSCALL=y
|
||||
+# CONFIG_RSEQ is not set
|
||||
+CONFIG_EMBEDDED=y
|
||||
+# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
+# CONFIG_COMPAT_BRK is not set
|
||||
+# CONFIG_SLAB_MERGE_DEFAULT is not set
|
||||
+CONFIG_SLAB_FREELIST_RANDOM=y
|
||||
+CONFIG_SLAB_FREELIST_HARDENED=y
|
||||
+CONFIG_PROFILING=y
|
||||
+CONFIG_ARCH_ROCKCHIP=y
|
||||
+CONFIG_SCHED_MC=y
|
||||
+CONFIG_SECCOMP=y
|
||||
+CONFIG_PARAVIRT=y
|
||||
+CONFIG_COMPAT=y
|
||||
+CONFIG_ARMV8_DEPRECATED=y
|
||||
+CONFIG_SWP_EMULATION=y
|
||||
+CONFIG_CP15_BARRIER_EMULATION=y
|
||||
+CONFIG_SETEND_EMULATION=y
|
||||
+CONFIG_RANDOMIZE_BASE=y
|
||||
+CONFIG_CMDLINE=""
|
||||
+# CONFIG_CMDLINE_FORCE is not set
|
||||
+# CONFIG_EFI is not set
|
||||
+CONFIG_PM_WAKELOCKS=y
|
||||
+CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||
+# CONFIG_PM_WAKELOCKS_GC is not set
|
||||
+CONFIG_ENERGY_MODEL=y
|
||||
+CONFIG_CPU_IDLE=y
|
||||
+CONFIG_ARM_CPUIDLE=y
|
||||
+CONFIG_CPU_FREQ=y
|
||||
+CONFIG_CPU_FREQ_TIMES=y
|
||||
+CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
|
||||
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
+CONFIG_ARM_SCPI_CPUFREQ=y
|
||||
+CONFIG_ARM_SCMI_CPUFREQ=y
|
||||
+CONFIG_ARM_SCMI_PROTOCOL=y
|
||||
+# CONFIG_ARM_SCMI_POWER_DOMAIN is not set
|
||||
+CONFIG_ARM_SCPI_PROTOCOL=y
|
||||
+# CONFIG_ARM_SCPI_POWER_DOMAIN is not set
|
||||
+CONFIG_VIRTUALIZATION=y
|
||||
+CONFIG_KVM=y
|
||||
+CONFIG_VHOST_VSOCK=y
|
||||
+CONFIG_ARM64_CRYPTO=y
|
||||
+CONFIG_CRYPTO_AES_ARM64=y
|
||||
+CONFIG_KPROBES=y
|
||||
+CONFIG_MODULES=y
|
||||
+CONFIG_MODULE_UNLOAD=y
|
||||
+CONFIG_MODVERSIONS=y
|
||||
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
+CONFIG_BINFMT_MISC=y
|
||||
+# CONFIG_SPARSEMEM_VMEMMAP is not set
|
||||
+CONFIG_MEMORY_HOTPLUG=y
|
||||
+CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
+CONFIG_CMA=y
|
||||
+CONFIG_CMA_AREAS=16
|
||||
+CONFIG_ZSMALLOC=y
|
||||
+CONFIG_NET=y
|
||||
+CONFIG_PACKET=y
|
||||
+CONFIG_UNIX=y
|
||||
+CONFIG_XFRM_USER=y
|
||||
+CONFIG_XFRM_INTERFACE=y
|
||||
+CONFIG_XFRM_STATISTICS=y
|
||||
+CONFIG_NET_KEY=y
|
||||
+CONFIG_INET=y
|
||||
+CONFIG_IP_MULTICAST=y
|
||||
+CONFIG_IP_ADVANCED_ROUTER=y
|
||||
+CONFIG_IP_MULTIPLE_TABLES=y
|
||||
+CONFIG_IP_PNP=y
|
||||
+CONFIG_NET_IPGRE_DEMUX=y
|
||||
+CONFIG_NET_IPVTI=y
|
||||
+CONFIG_INET_ESP=y
|
||||
+CONFIG_INET_UDP_DIAG=y
|
||||
+CONFIG_INET_DIAG_DESTROY=y
|
||||
+CONFIG_IPV6_ROUTER_PREF=y
|
||||
+CONFIG_IPV6_ROUTE_INFO=y
|
||||
+CONFIG_IPV6_OPTIMISTIC_DAD=y
|
||||
+CONFIG_INET6_ESP=y
|
||||
+CONFIG_INET6_IPCOMP=y
|
||||
+CONFIG_IPV6_MIP6=y
|
||||
+CONFIG_IPV6_VTI=y
|
||||
+CONFIG_IPV6_MULTIPLE_TABLES=y
|
||||
+CONFIG_NETFILTER=y
|
||||
+CONFIG_NF_CONNTRACK=y
|
||||
+CONFIG_NF_CONNTRACK_SECMARK=y
|
||||
+CONFIG_NF_CONNTRACK_EVENTS=y
|
||||
+CONFIG_NF_CONNTRACK_AMANDA=y
|
||||
+CONFIG_NF_CONNTRACK_FTP=y
|
||||
+CONFIG_NF_CONNTRACK_H323=y
|
||||
+CONFIG_NF_CONNTRACK_IRC=y
|
||||
+CONFIG_NF_CONNTRACK_NETBIOS_NS=y
|
||||
+CONFIG_NF_CONNTRACK_PPTP=y
|
||||
+CONFIG_NF_CONNTRACK_SANE=y
|
||||
+CONFIG_NF_CONNTRACK_TFTP=y
|
||||
+CONFIG_NF_CT_NETLINK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_CT=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_MARK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_NFLOG=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_TPROXY=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_TRACE=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_SECMARK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_BPF=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_COMMENT=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_HELPER=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_LENGTH=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_LIMIT=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_MAC=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_MARK=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_OWNER=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_POLICY=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_QUOTA=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_QUOTA2=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_SOCKET=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_STATE=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_STRING=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_TIME=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_U32=y
|
||||
+CONFIG_IP_NF_IPTABLES=y
|
||||
+CONFIG_IP_NF_MATCH_ECN=y
|
||||
+CONFIG_IP_NF_MATCH_TTL=y
|
||||
+CONFIG_IP_NF_FILTER=y
|
||||
+CONFIG_IP_NF_TARGET_REJECT=y
|
||||
+CONFIG_IP_NF_NAT=y
|
||||
+CONFIG_IP_NF_TARGET_MASQUERADE=y
|
||||
+CONFIG_IP_NF_TARGET_NETMAP=y
|
||||
+CONFIG_IP_NF_TARGET_REDIRECT=y
|
||||
+CONFIG_IP_NF_MANGLE=y
|
||||
+CONFIG_IP_NF_RAW=y
|
||||
+CONFIG_IP_NF_SECURITY=y
|
||||
+CONFIG_IP_NF_ARPTABLES=y
|
||||
+CONFIG_IP_NF_ARPFILTER=y
|
||||
+CONFIG_IP_NF_ARP_MANGLE=y
|
||||
+CONFIG_IP6_NF_IPTABLES=y
|
||||
+CONFIG_IP6_NF_MATCH_RPFILTER=y
|
||||
+CONFIG_IP6_NF_FILTER=y
|
||||
+CONFIG_IP6_NF_TARGET_REJECT=y
|
||||
+CONFIG_IP6_NF_MANGLE=y
|
||||
+CONFIG_IP6_NF_RAW=y
|
||||
+CONFIG_L2TP=y
|
||||
+CONFIG_BRIDGE=y
|
||||
+CONFIG_NET_SCHED=y
|
||||
+CONFIG_NET_SCH_HTB=y
|
||||
+CONFIG_NET_SCH_INGRESS=y
|
||||
+CONFIG_NET_CLS_U32=y
|
||||
+CONFIG_NET_CLS_BPF=y
|
||||
+CONFIG_NET_EMATCH=y
|
||||
+CONFIG_NET_EMATCH_U32=y
|
||||
+CONFIG_NET_CLS_ACT=y
|
||||
+CONFIG_VSOCKETS=y
|
||||
+CONFIG_VIRTIO_VSOCKETS=y
|
||||
+CONFIG_BT=y
|
||||
+CONFIG_CFG80211=y
|
||||
+# CONFIG_CFG80211_DEFAULT_PS is not set
|
||||
+# CONFIG_CFG80211_CRDA_SUPPORT is not set
|
||||
+CONFIG_MAC80211=y
|
||||
+# CONFIG_MAC80211_RC_MINSTREL is not set
|
||||
+CONFIG_RFKILL=y
|
||||
+CONFIG_PCI=y
|
||||
+CONFIG_PCI_HOST_GENERIC=y
|
||||
+CONFIG_DEVTMPFS=y
|
||||
+# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||
+CONFIG_DEBUG_DEVRES=y
|
||||
+CONFIG_ZRAM=y
|
||||
+CONFIG_BLK_DEV_LOOP=y
|
||||
+CONFIG_BLK_DEV_RAM=y
|
||||
+CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
+CONFIG_VIRTIO_BLK=y
|
||||
+CONFIG_UID_SYS_STATS=y
|
||||
+CONFIG_SCSI=y
|
||||
+# CONFIG_SCSI_PROC_FS is not set
|
||||
+CONFIG_BLK_DEV_SD=y
|
||||
+CONFIG_SCSI_UFSHCD=y
|
||||
+CONFIG_SCSI_UFSHCD_PLATFORM=y
|
||||
+CONFIG_MD=y
|
||||
+CONFIG_BLK_DEV_DM=y
|
||||
+CONFIG_DM_CRYPT=y
|
||||
+CONFIG_DM_UEVENT=y
|
||||
+CONFIG_DM_VERITY=y
|
||||
+CONFIG_DM_VERITY_AVB=y
|
||||
+CONFIG_DM_VERITY_FEC=y
|
||||
+CONFIG_DM_BOW=y
|
||||
+CONFIG_NETDEVICES=y
|
||||
+CONFIG_TUN=y
|
||||
+CONFIG_VIRTIO_NET=y
|
||||
+# CONFIG_NET_VENDOR_3COM is not set
|
||||
+# CONFIG_NET_VENDOR_ADAPTEC is not set
|
||||
+# CONFIG_NET_VENDOR_AGERE is not set
|
||||
+# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||
+# CONFIG_NET_VENDOR_ALTEON is not set
|
||||
+# CONFIG_NET_VENDOR_AMAZON is not set
|
||||
+# CONFIG_NET_VENDOR_AMD is not set
|
||||
+# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||
+# CONFIG_NET_VENDOR_ARC is not set
|
||||
+# CONFIG_NET_VENDOR_ATHEROS is not set
|
||||
+# CONFIG_NET_VENDOR_AURORA is not set
|
||||
+# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
+# CONFIG_NET_VENDOR_BROCADE is not set
|
||||
+# CONFIG_NET_VENDOR_CADENCE is not set
|
||||
+# CONFIG_NET_VENDOR_CAVIUM is not set
|
||||
+# CONFIG_NET_VENDOR_CHELSIO is not set
|
||||
+# CONFIG_NET_VENDOR_CISCO is not set
|
||||
+# CONFIG_NET_VENDOR_CORTINA is not set
|
||||
+# CONFIG_NET_VENDOR_DEC is not set
|
||||
+# CONFIG_NET_VENDOR_DLINK is not set
|
||||
+# CONFIG_NET_VENDOR_EMULEX is not set
|
||||
+# CONFIG_NET_VENDOR_EZCHIP is not set
|
||||
+# CONFIG_NET_VENDOR_HISILICON is not set
|
||||
+# CONFIG_NET_VENDOR_HP is not set
|
||||
+# CONFIG_NET_VENDOR_HUAWEI is not set
|
||||
+# CONFIG_NET_VENDOR_INTEL is not set
|
||||
+# CONFIG_NET_VENDOR_MARVELL is not set
|
||||
+# CONFIG_NET_VENDOR_MELLANOX is not set
|
||||
+# CONFIG_NET_VENDOR_MICREL is not set
|
||||
+# CONFIG_NET_VENDOR_MICROCHIP is not set
|
||||
+# CONFIG_NET_VENDOR_MICROSEMI is not set
|
||||
+# CONFIG_NET_VENDOR_MYRI is not set
|
||||
+# CONFIG_NET_VENDOR_NATSEMI is not set
|
||||
+# CONFIG_NET_VENDOR_NETERION is not set
|
||||
+# CONFIG_NET_VENDOR_NETRONOME is not set
|
||||
+# CONFIG_NET_VENDOR_NI is not set
|
||||
+# CONFIG_NET_VENDOR_NVIDIA is not set
|
||||
+# CONFIG_NET_VENDOR_OKI is not set
|
||||
+# CONFIG_NET_VENDOR_PACKET_ENGINES is not set
|
||||
+# CONFIG_NET_VENDOR_QLOGIC is not set
|
||||
+# CONFIG_NET_VENDOR_QUALCOMM is not set
|
||||
+# CONFIG_NET_VENDOR_RDC is not set
|
||||
+# CONFIG_NET_VENDOR_REALTEK is not set
|
||||
+# CONFIG_NET_VENDOR_RENESAS is not set
|
||||
+# CONFIG_NET_VENDOR_ROCKER is not set
|
||||
+# CONFIG_NET_VENDOR_SAMSUNG is not set
|
||||
+# CONFIG_NET_VENDOR_SEEQ is not set
|
||||
+# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||
+# CONFIG_NET_VENDOR_SILAN is not set
|
||||
+# CONFIG_NET_VENDOR_SIS is not set
|
||||
+# CONFIG_NET_VENDOR_SMSC is not set
|
||||
+# CONFIG_NET_VENDOR_SOCIONEXT is not set
|
||||
+CONFIG_STMMAC_ETH=y
|
||||
+# CONFIG_DWMAC_GENERIC is not set
|
||||
+# CONFIG_NET_VENDOR_SUN is not set
|
||||
+# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
||||
+# CONFIG_NET_VENDOR_TEHUTI is not set
|
||||
+# CONFIG_NET_VENDOR_TI is not set
|
||||
+# CONFIG_NET_VENDOR_VIA is not set
|
||||
+# CONFIG_NET_VENDOR_WIZNET is not set
|
||||
+CONFIG_ROCKCHIP_PHY=y
|
||||
+CONFIG_PPP=y
|
||||
+CONFIG_PPP_BSDCOMP=y
|
||||
+CONFIG_PPP_DEFLATE=y
|
||||
+CONFIG_PPP_MPPE=y
|
||||
+CONFIG_PPTP=y
|
||||
+CONFIG_PPPOL2TP=y
|
||||
+CONFIG_USB_RTL8152=y
|
||||
+CONFIG_USB_USBNET=y
|
||||
+# CONFIG_USB_NET_AX8817X is not set
|
||||
+# CONFIG_USB_NET_AX88179_178A is not set
|
||||
+# CONFIG_USB_NET_CDCETHER is not set
|
||||
+# CONFIG_USB_NET_CDC_NCM is not set
|
||||
+# CONFIG_USB_NET_NET1080 is not set
|
||||
+# CONFIG_USB_NET_CDC_SUBSET is not set
|
||||
+# CONFIG_USB_NET_ZAURUS is not set
|
||||
+# CONFIG_WLAN_VENDOR_ADMTEK is not set
|
||||
+# CONFIG_WLAN_VENDOR_ATH is not set
|
||||
+# CONFIG_WLAN_VENDOR_ATMEL is not set
|
||||
+# CONFIG_WLAN_VENDOR_BROADCOM is not set
|
||||
+# CONFIG_WLAN_VENDOR_CISCO is not set
|
||||
+# CONFIG_WLAN_VENDOR_INTEL is not set
|
||||
+# CONFIG_WLAN_VENDOR_INTERSIL is not set
|
||||
+# CONFIG_WLAN_VENDOR_MARVELL is not set
|
||||
+# CONFIG_WLAN_VENDOR_MEDIATEK is not set
|
||||
+# CONFIG_WLAN_VENDOR_RALINK is not set
|
||||
+# CONFIG_WLAN_VENDOR_REALTEK is not set
|
||||
+# CONFIG_WLAN_VENDOR_RSI is not set
|
||||
+# CONFIG_WLAN_VENDOR_ST is not set
|
||||
+# CONFIG_WLAN_VENDOR_TI is not set
|
||||
+# CONFIG_WLAN_VENDOR_ZYDAS is not set
|
||||
+# CONFIG_WLAN_VENDOR_QUANTENNA is not set
|
||||
+CONFIG_VIRT_WIFI=y
|
||||
+CONFIG_INPUT_EVDEV=y
|
||||
+# CONFIG_INPUT_MOUSE is not set
|
||||
+CONFIG_INPUT_JOYSTICK=y
|
||||
+CONFIG_INPUT_MISC=y
|
||||
+CONFIG_INPUT_UINPUT=y
|
||||
+# CONFIG_VT is not set
|
||||
+# CONFIG_LEGACY_PTYS is not set
|
||||
+# CONFIG_DEVMEM is not set
|
||||
+CONFIG_SERIAL_8250=y
|
||||
+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
|
||||
+CONFIG_SERIAL_8250_CONSOLE=y
|
||||
+# CONFIG_SERIAL_8250_EXAR is not set
|
||||
+CONFIG_SERIAL_8250_NR_UARTS=48
|
||||
+CONFIG_SERIAL_8250_EXTENDED=y
|
||||
+CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
+CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
+CONFIG_SERIAL_8250_DW=y
|
||||
+CONFIG_SERIAL_OF_PLATFORM=y
|
||||
+CONFIG_SERIAL_AMBA_PL011=y
|
||||
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
+CONFIG_VIRTIO_CONSOLE=y
|
||||
+CONFIG_HW_RANDOM=y
|
||||
+CONFIG_HW_RANDOM_VIRTIO=y
|
||||
+# CONFIG_HW_RANDOM_CAVIUM is not set
|
||||
+# CONFIG_DEVPORT is not set
|
||||
+# CONFIG_I2C_COMPAT is not set
|
||||
+CONFIG_I2C_MUX_PINCTRL=y
|
||||
+CONFIG_I2C_DEMUX_PINCTRL=y
|
||||
+# CONFIG_I2C_HELPER_AUTO is not set
|
||||
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
|
||||
+CONFIG_I2C_DESIGNWARE_SLAVE=y
|
||||
+CONFIG_I2C_RK3X=y
|
||||
+CONFIG_SPI=y
|
||||
+CONFIG_SPI_ROCKCHIP=y
|
||||
+CONFIG_SPMI=y
|
||||
+CONFIG_DEBUG_PINCTRL=y
|
||||
+CONFIG_PINCTRL_AMD=y
|
||||
+CONFIG_PINCTRL_SINGLE=y
|
||||
+CONFIG_PINCTRL_RK805=y
|
||||
+CONFIG_GPIO_SYSFS=y
|
||||
+CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
+CONFIG_POWER_AVS=y
|
||||
+CONFIG_ROCKCHIP_IODOMAIN=y
|
||||
+CONFIG_POWER_RESET_GPIO=y
|
||||
+CONFIG_POWER_RESET_GPIO_RESTART=y
|
||||
+CONFIG_POWER_RESET_RESTART=y
|
||||
+CONFIG_POWER_RESET_SYSCON=y
|
||||
+CONFIG_POWER_RESET_SYSCON_POWEROFF=y
|
||||
+CONFIG_SYSCON_REBOOT_MODE=y
|
||||
+# CONFIG_HWMON is not set
|
||||
+CONFIG_THERMAL=y
|
||||
+CONFIG_THERMAL_GOV_USER_SPACE=y
|
||||
+CONFIG_CPU_THERMAL=y
|
||||
+CONFIG_DEVFREQ_THERMAL=y
|
||||
+CONFIG_ROCKCHIP_THERMAL=y
|
||||
+CONFIG_WATCHDOG=y
|
||||
+CONFIG_WATCHDOG_PRETIMEOUT_GOV=y
|
||||
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP is not set
|
||||
+CONFIG_DW_WATCHDOG=y
|
||||
+CONFIG_MFD_ACT8945A=y
|
||||
+CONFIG_MFD_RK808=y
|
||||
+CONFIG_REGULATOR=y
|
||||
+CONFIG_REGULATOR_DEBUG=y
|
||||
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
+CONFIG_REGULATOR_VIRTUAL_CONSUMER=y
|
||||
+CONFIG_REGULATOR_USERSPACE_CONSUMER=y
|
||||
+CONFIG_REGULATOR_GPIO=y
|
||||
+CONFIG_REGULATOR_PWM=y
|
||||
+CONFIG_REGULATOR_RK808=y
|
||||
+CONFIG_REGULATOR_VCTRL=y
|
||||
+CONFIG_MEDIA_SUPPORT=y
|
||||
+CONFIG_MEDIA_CAMERA_SUPPORT=y
|
||||
+CONFIG_MEDIA_CONTROLLER=y
|
||||
+CONFIG_VIDEO_V4L2_SUBDEV_API=y
|
||||
+# CONFIG_VGA_ARB is not set
|
||||
+CONFIG_DRM=y
|
||||
+# CONFIG_DRM_FBDEV_EMULATION is not set
|
||||
+CONFIG_DRM_ROCKCHIP=y
|
||||
+CONFIG_ROCKCHIP_DW_HDMI=y
|
||||
+CONFIG_DRM_VIRTIO_GPU=y
|
||||
+# CONFIG_LCD_CLASS_DEVICE is not set
|
||||
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
+# CONFIG_BACKLIGHT_GENERIC is not set
|
||||
+CONFIG_SOUND=y
|
||||
+CONFIG_SND=y
|
||||
+CONFIG_SND_HRTIMER=y
|
||||
+CONFIG_SND_DYNAMIC_MINORS=y
|
||||
+# CONFIG_SND_SUPPORT_OLD_API is not set
|
||||
+# CONFIG_SND_VERBOSE_PROCFS is not set
|
||||
+# CONFIG_SND_DRIVERS is not set
|
||||
+CONFIG_SND_INTEL8X0=y
|
||||
+CONFIG_SND_USB_AUDIO=y
|
||||
+CONFIG_SND_SOC=y
|
||||
+CONFIG_SND_SOC_TS3A227E=y
|
||||
+CONFIG_HIDRAW=y
|
||||
+CONFIG_UHID=y
|
||||
+CONFIG_HID_APPLE=y
|
||||
+CONFIG_HID_ELECOM=y
|
||||
+CONFIG_HID_MAGICMOUSE=y
|
||||
+CONFIG_HID_MICROSOFT=y
|
||||
+CONFIG_HID_MULTITOUCH=y
|
||||
+CONFIG_USB_HIDDEV=y
|
||||
+CONFIG_USB=y
|
||||
+CONFIG_USB_OTG=y
|
||||
+CONFIG_USB_OTG_FSM=y
|
||||
+CONFIG_USB_EHCI_HCD=y
|
||||
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
|
||||
+CONFIG_USB_EHCI_HCD_PLATFORM=y
|
||||
+CONFIG_USB_OHCI_HCD=y
|
||||
+# CONFIG_USB_OHCI_HCD_PCI is not set
|
||||
+CONFIG_USB_OHCI_HCD_PLATFORM=y
|
||||
+CONFIG_USB_GADGET=y
|
||||
+CONFIG_USB_CONFIGFS=y
|
||||
+CONFIG_USB_CONFIGFS_UEVENT=y
|
||||
+CONFIG_USB_CONFIGFS_F_FS=y
|
||||
+CONFIG_USB_CONFIGFS_F_ACC=y
|
||||
+CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
|
||||
+CONFIG_USB_CONFIGFS_F_MIDI=y
|
||||
+CONFIG_MMC=y
|
||||
+# CONFIG_PWRSEQ_EMMC is not set
|
||||
+# CONFIG_PWRSEQ_SIMPLE is not set
|
||||
+CONFIG_MMC_SDHCI=y
|
||||
+CONFIG_MMC_SDHCI_PLTFM=y
|
||||
+CONFIG_MMC_SDHCI_OF_ARASAN=y
|
||||
+CONFIG_MMC_SDHCI_OF_DWCMSHC=y
|
||||
+CONFIG_MMC_DW=y
|
||||
+CONFIG_MMC_DW_ROCKCHIP=y
|
||||
+CONFIG_MMC_CQHCI=y
|
||||
+CONFIG_NEW_LEDS=y
|
||||
+CONFIG_LEDS_CLASS=y
|
||||
+CONFIG_LEDS_TRIGGERS=y
|
||||
+CONFIG_RTC_CLASS=y
|
||||
+# CONFIG_RTC_SYSTOHC is not set
|
||||
+CONFIG_RTC_DRV_RK808=y
|
||||
+CONFIG_RTC_DRV_PL030=y
|
||||
+CONFIG_RTC_DRV_PL031=y
|
||||
+CONFIG_DMADEVICES=y
|
||||
+CONFIG_PL330_DMA=y
|
||||
+CONFIG_VIRTIO_PCI=y
|
||||
+# CONFIG_VIRTIO_PCI_LEGACY is not set
|
||||
+CONFIG_VIRTIO_INPUT=y
|
||||
+CONFIG_VIRTIO_MMIO=y
|
||||
+CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
|
||||
+CONFIG_STAGING=y
|
||||
+CONFIG_ASHMEM=y
|
||||
+CONFIG_ANDROID_VSOC=y
|
||||
+CONFIG_ION=y
|
||||
+CONFIG_COMMON_CLK_RK808=y
|
||||
+CONFIG_COMMON_CLK_SCPI=y
|
||||
+# CONFIG_COMMON_CLK_XGENE is not set
|
||||
+CONFIG_HWSPINLOCK=y
|
||||
+# CONFIG_FSL_ERRATUM_A008585 is not set
|
||||
+# CONFIG_HISILICON_ERRATUM_161010101 is not set
|
||||
+CONFIG_MAILBOX=y
|
||||
+CONFIG_ROCKCHIP_MBOX=y
|
||||
+CONFIG_ROCKCHIP_IOMMU=y
|
||||
+CONFIG_ARM_SMMU=y
|
||||
+CONFIG_ROCKCHIP_PM_DOMAINS=y
|
||||
+CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
+CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
+CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
+CONFIG_DEVFREQ_GOV_PASSIVE=y
|
||||
+CONFIG_ARM_RK3399_DMC_DEVFREQ=y
|
||||
+CONFIG_PWM=y
|
||||
+CONFIG_PWM_ROCKCHIP=y
|
||||
+CONFIG_PHY_ROCKCHIP_EMMC=y
|
||||
+CONFIG_PHY_ROCKCHIP_INNO_HDMI=y
|
||||
+CONFIG_PHY_ROCKCHIP_INNO_USB2=y
|
||||
+CONFIG_PHY_ROCKCHIP_USB=y
|
||||
+CONFIG_ANDROID=y
|
||||
+CONFIG_ANDROID_BINDER_IPC=y
|
||||
+CONFIG_ROCKCHIP_EFUSE=y
|
||||
+CONFIG_INTERCONNECT=y
|
||||
+CONFIG_EXT4_FS=y
|
||||
+CONFIG_EXT4_FS_SECURITY=y
|
||||
+CONFIG_F2FS_FS=y
|
||||
+CONFIG_F2FS_FS_SECURITY=y
|
||||
+CONFIG_FS_ENCRYPTION=y
|
||||
+# CONFIG_DNOTIFY is not set
|
||||
+CONFIG_QUOTA=y
|
||||
+CONFIG_QFMT_V2=y
|
||||
+CONFIG_FUSE_FS=y
|
||||
+CONFIG_OVERLAY_FS=y
|
||||
+CONFIG_MSDOS_FS=y
|
||||
+CONFIG_VFAT_FS=y
|
||||
+CONFIG_TMPFS=y
|
||||
+CONFIG_TMPFS_POSIX_ACL=y
|
||||
+CONFIG_ECRYPT_FS=y
|
||||
+CONFIG_PSTORE=y
|
||||
+CONFIG_PSTORE_CONSOLE=y
|
||||
+CONFIG_PSTORE_RAM=y
|
||||
+CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
|
||||
+CONFIG_SECURITY=y
|
||||
+CONFIG_SECURITY_NETWORK=y
|
||||
+CONFIG_HARDENED_USERCOPY=y
|
||||
+CONFIG_SECURITY_SELINUX=y
|
||||
+CONFIG_CRYPTO_ADIANTUM=y
|
||||
+CONFIG_CRYPTO_MD4=y
|
||||
+CONFIG_CRYPTO_SHA512=y
|
||||
+CONFIG_CRYPTO_LZ4=y
|
||||
+CONFIG_CRYPTO_ZSTD=y
|
||||
+CONFIG_CRYPTO_ANSI_CPRNG=y
|
||||
+CONFIG_CRYPTO_DEV_ROCKCHIP=y
|
||||
+CONFIG_CRYPTO_DEV_VIRTIO=y
|
||||
+CONFIG_CRC_CCITT=y
|
||||
+CONFIG_CRC8=y
|
||||
+CONFIG_XZ_DEC=y
|
||||
+CONFIG_DMA_CMA=y
|
||||
+CONFIG_PRINTK_TIME=y
|
||||
+CONFIG_DEBUG_INFO=y
|
||||
+# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
+# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||
+CONFIG_MAGIC_SYSRQ=y
|
||||
+CONFIG_DEBUG_STACK_USAGE=y
|
||||
+CONFIG_DEBUG_MEMORY_INIT=y
|
||||
+CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||
+# CONFIG_DETECT_HUNG_TASK is not set
|
||||
+CONFIG_PANIC_TIMEOUT=5
|
||||
+CONFIG_SCHEDSTATS=y
|
||||
+CONFIG_FUNCTION_TRACER=y
|
||||
+# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
+CONFIG_CORESIGHT=y
|
||||
+CONFIG_CORESIGHT_STM=y
|
|
@ -1,382 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Fri, 17 May 2019 16:52:29 -0700
|
||||
Subject: ANDROID: Add initial x86_64 gki_defconfig
|
||||
|
||||
That is a copy from the aarch64 gki_defconfig.
|
||||
|
||||
To be able to build in this configuration,
|
||||
|
||||
+ CONFIG_UNWINDER_FRAME_POINTER=y
|
||||
|
||||
was necessary.
|
||||
|
||||
Bug: 132113225
|
||||
Bug: 132629930
|
||||
Change-Id: I685ccea29efc7ba14f7b0a24f41983e37203f9a2
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
Signed-off-by: Matthias Maennich <maennich@google.com>
|
||||
---
|
||||
arch/x86/configs/gki_defconfig | 328 +++++++++++++++++++++++++++++++++
|
||||
build.config.gki.x86_64 | 17 ++
|
||||
2 files changed, 345 insertions(+)
|
||||
create mode 100644 arch/x86/configs/gki_defconfig
|
||||
create mode 100644 build.config.gki.x86_64
|
||||
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
new file mode 100644
|
||||
index 000000000000..18ba312d0a60
|
||||
--- /dev/null
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -0,0 +1,328 @@
|
||||
+CONFIG_AUDIT=y
|
||||
+CONFIG_NO_HZ=y
|
||||
+CONFIG_HIGH_RES_TIMERS=y
|
||||
+CONFIG_PREEMPT=y
|
||||
+CONFIG_TASKSTATS=y
|
||||
+CONFIG_TASK_XACCT=y
|
||||
+CONFIG_TASK_IO_ACCOUNTING=y
|
||||
+CONFIG_PSI=y
|
||||
+CONFIG_IKCONFIG=y
|
||||
+CONFIG_IKCONFIG_PROC=y
|
||||
+CONFIG_MEMCG=y
|
||||
+CONFIG_MEMCG_SWAP=y
|
||||
+CONFIG_RT_GROUP_SCHED=y
|
||||
+CONFIG_CGROUP_FREEZER=y
|
||||
+CONFIG_CGROUP_CPUACCT=y
|
||||
+CONFIG_CGROUP_BPF=y
|
||||
+CONFIG_SCHED_AUTOGROUP=y
|
||||
+CONFIG_BLK_DEV_INITRD=y
|
||||
+# CONFIG_RD_BZIP2 is not set
|
||||
+# CONFIG_RD_LZMA is not set
|
||||
+# CONFIG_RD_XZ is not set
|
||||
+# CONFIG_RD_LZO is not set
|
||||
+# CONFIG_RD_LZ4 is not set
|
||||
+# CONFIG_SYSFS_SYSCALL is not set
|
||||
+# CONFIG_FHANDLE is not set
|
||||
+CONFIG_KALLSYMS_ALL=y
|
||||
+CONFIG_BPF_SYSCALL=y
|
||||
+# CONFIG_RSEQ is not set
|
||||
+CONFIG_EMBEDDED=y
|
||||
+# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
+# CONFIG_COMPAT_BRK is not set
|
||||
+# CONFIG_SLAB_MERGE_DEFAULT is not set
|
||||
+CONFIG_PROFILING=y
|
||||
+CONFIG_PM_WAKELOCKS=y
|
||||
+CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||
+# CONFIG_PM_WAKELOCKS_GC is not set
|
||||
+CONFIG_CPU_FREQ=y
|
||||
+CONFIG_CPU_FREQ_TIMES=y
|
||||
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
+CONFIG_KPROBES=y
|
||||
+CONFIG_MODULES=y
|
||||
+CONFIG_MODULE_UNLOAD=y
|
||||
+CONFIG_MODVERSIONS=y
|
||||
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
+# CONFIG_SPARSEMEM_VMEMMAP is not set
|
||||
+CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
+CONFIG_ZSMALLOC=y
|
||||
+CONFIG_NET=y
|
||||
+CONFIG_PACKET=y
|
||||
+CONFIG_UNIX=y
|
||||
+CONFIG_XFRM_USER=y
|
||||
+CONFIG_XFRM_INTERFACE=y
|
||||
+CONFIG_XFRM_STATISTICS=y
|
||||
+CONFIG_NET_KEY=y
|
||||
+CONFIG_INET=y
|
||||
+CONFIG_IP_MULTICAST=y
|
||||
+CONFIG_IP_ADVANCED_ROUTER=y
|
||||
+CONFIG_IP_MULTIPLE_TABLES=y
|
||||
+CONFIG_NET_IPGRE_DEMUX=y
|
||||
+CONFIG_NET_IPVTI=y
|
||||
+CONFIG_INET_ESP=y
|
||||
+CONFIG_INET_UDP_DIAG=y
|
||||
+CONFIG_INET_DIAG_DESTROY=y
|
||||
+CONFIG_IPV6_ROUTER_PREF=y
|
||||
+CONFIG_IPV6_ROUTE_INFO=y
|
||||
+CONFIG_IPV6_OPTIMISTIC_DAD=y
|
||||
+CONFIG_INET6_ESP=y
|
||||
+CONFIG_INET6_IPCOMP=y
|
||||
+CONFIG_IPV6_MIP6=y
|
||||
+CONFIG_IPV6_VTI=y
|
||||
+CONFIG_IPV6_MULTIPLE_TABLES=y
|
||||
+CONFIG_NETFILTER=y
|
||||
+CONFIG_NF_CONNTRACK=y
|
||||
+CONFIG_NF_CONNTRACK_SECMARK=y
|
||||
+CONFIG_NF_CONNTRACK_EVENTS=y
|
||||
+CONFIG_NF_CONNTRACK_AMANDA=y
|
||||
+CONFIG_NF_CONNTRACK_FTP=y
|
||||
+CONFIG_NF_CONNTRACK_H323=y
|
||||
+CONFIG_NF_CONNTRACK_IRC=y
|
||||
+CONFIG_NF_CONNTRACK_NETBIOS_NS=y
|
||||
+CONFIG_NF_CONNTRACK_PPTP=y
|
||||
+CONFIG_NF_CONNTRACK_SANE=y
|
||||
+CONFIG_NF_CONNTRACK_TFTP=y
|
||||
+CONFIG_NF_CT_NETLINK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_CT=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_MARK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_NFLOG=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_TPROXY=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_TRACE=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_SECMARK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_BPF=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_COMMENT=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_HELPER=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_LENGTH=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_LIMIT=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_MAC=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_MARK=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_OWNER=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_POLICY=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_QUOTA=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_QUOTA2=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_SOCKET=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_STATE=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_STRING=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_TIME=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_U32=y
|
||||
+CONFIG_IP_NF_IPTABLES=y
|
||||
+CONFIG_IP_NF_MATCH_ECN=y
|
||||
+CONFIG_IP_NF_MATCH_TTL=y
|
||||
+CONFIG_IP_NF_FILTER=y
|
||||
+CONFIG_IP_NF_TARGET_REJECT=y
|
||||
+CONFIG_IP_NF_NAT=y
|
||||
+CONFIG_IP_NF_TARGET_MASQUERADE=y
|
||||
+CONFIG_IP_NF_TARGET_NETMAP=y
|
||||
+CONFIG_IP_NF_TARGET_REDIRECT=y
|
||||
+CONFIG_IP_NF_MANGLE=y
|
||||
+CONFIG_IP_NF_RAW=y
|
||||
+CONFIG_IP_NF_SECURITY=y
|
||||
+CONFIG_IP_NF_ARPTABLES=y
|
||||
+CONFIG_IP_NF_ARPFILTER=y
|
||||
+CONFIG_IP_NF_ARP_MANGLE=y
|
||||
+CONFIG_IP6_NF_IPTABLES=y
|
||||
+CONFIG_IP6_NF_MATCH_RPFILTER=y
|
||||
+CONFIG_IP6_NF_FILTER=y
|
||||
+CONFIG_IP6_NF_TARGET_REJECT=y
|
||||
+CONFIG_IP6_NF_MANGLE=y
|
||||
+CONFIG_IP6_NF_RAW=y
|
||||
+CONFIG_L2TP=y
|
||||
+CONFIG_NET_SCHED=y
|
||||
+CONFIG_NET_SCH_HTB=y
|
||||
+CONFIG_NET_SCH_INGRESS=y
|
||||
+CONFIG_NET_CLS_U32=y
|
||||
+CONFIG_NET_CLS_BPF=y
|
||||
+CONFIG_NET_EMATCH=y
|
||||
+CONFIG_NET_EMATCH_U32=y
|
||||
+CONFIG_NET_CLS_ACT=y
|
||||
+CONFIG_VSOCKETS=y
|
||||
+CONFIG_VIRTIO_VSOCKETS=y
|
||||
+CONFIG_CFG80211=y
|
||||
+# CONFIG_CFG80211_DEFAULT_PS is not set
|
||||
+# CONFIG_CFG80211_CRDA_SUPPORT is not set
|
||||
+CONFIG_MAC80211=y
|
||||
+# CONFIG_MAC80211_RC_MINSTREL is not set
|
||||
+CONFIG_RFKILL=y
|
||||
+# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||
+CONFIG_DEBUG_DEVRES=y
|
||||
+CONFIG_ZRAM=y
|
||||
+CONFIG_BLK_DEV_LOOP=y
|
||||
+CONFIG_BLK_DEV_RAM=y
|
||||
+CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
+CONFIG_VIRTIO_BLK=y
|
||||
+CONFIG_UID_SYS_STATS=y
|
||||
+CONFIG_SCSI=y
|
||||
+# CONFIG_SCSI_PROC_FS is not set
|
||||
+CONFIG_BLK_DEV_SD=y
|
||||
+CONFIG_SCSI_VIRTIO=y
|
||||
+CONFIG_MD=y
|
||||
+CONFIG_BLK_DEV_DM=y
|
||||
+CONFIG_DM_CRYPT=y
|
||||
+CONFIG_DM_UEVENT=y
|
||||
+CONFIG_DM_VERITY=y
|
||||
+CONFIG_DM_VERITY_AVB=y
|
||||
+CONFIG_DM_VERITY_FEC=y
|
||||
+CONFIG_DM_BOW=y
|
||||
+CONFIG_NETDEVICES=y
|
||||
+CONFIG_TUN=y
|
||||
+CONFIG_VIRTIO_NET=y
|
||||
+# CONFIG_ETHERNET is not set
|
||||
+CONFIG_PHYLIB=y
|
||||
+CONFIG_PPP=y
|
||||
+CONFIG_PPP_BSDCOMP=y
|
||||
+CONFIG_PPP_DEFLATE=y
|
||||
+CONFIG_PPP_MPPE=y
|
||||
+CONFIG_PPTP=y
|
||||
+CONFIG_PPPOL2TP=y
|
||||
+CONFIG_USB_RTL8152=y
|
||||
+CONFIG_USB_USBNET=y
|
||||
+# CONFIG_USB_NET_AX8817X is not set
|
||||
+# CONFIG_USB_NET_AX88179_178A is not set
|
||||
+# CONFIG_USB_NET_CDCETHER is not set
|
||||
+# CONFIG_USB_NET_CDC_NCM is not set
|
||||
+# CONFIG_USB_NET_NET1080 is not set
|
||||
+# CONFIG_USB_NET_CDC_SUBSET is not set
|
||||
+# CONFIG_USB_NET_ZAURUS is not set
|
||||
+# CONFIG_WLAN_VENDOR_ADMTEK is not set
|
||||
+# CONFIG_WLAN_VENDOR_ATH is not set
|
||||
+# CONFIG_WLAN_VENDOR_ATMEL is not set
|
||||
+# CONFIG_WLAN_VENDOR_BROADCOM is not set
|
||||
+# CONFIG_WLAN_VENDOR_CISCO is not set
|
||||
+# CONFIG_WLAN_VENDOR_INTEL is not set
|
||||
+# CONFIG_WLAN_VENDOR_INTERSIL is not set
|
||||
+# CONFIG_WLAN_VENDOR_MARVELL is not set
|
||||
+# CONFIG_WLAN_VENDOR_MEDIATEK is not set
|
||||
+# CONFIG_WLAN_VENDOR_RALINK is not set
|
||||
+# CONFIG_WLAN_VENDOR_REALTEK is not set
|
||||
+# CONFIG_WLAN_VENDOR_RSI is not set
|
||||
+# CONFIG_WLAN_VENDOR_ST is not set
|
||||
+# CONFIG_WLAN_VENDOR_TI is not set
|
||||
+# CONFIG_WLAN_VENDOR_ZYDAS is not set
|
||||
+# CONFIG_WLAN_VENDOR_QUANTENNA is not set
|
||||
+CONFIG_VIRT_WIFI=y
|
||||
+CONFIG_INPUT_EVDEV=y
|
||||
+# CONFIG_INPUT_KEYBOARD is not set
|
||||
+# CONFIG_INPUT_MOUSE is not set
|
||||
+CONFIG_INPUT_JOYSTICK=y
|
||||
+CONFIG_INPUT_MISC=y
|
||||
+CONFIG_INPUT_UINPUT=y
|
||||
+# CONFIG_VT is not set
|
||||
+# CONFIG_LEGACY_PTYS is not set
|
||||
+# CONFIG_DEVMEM is not set
|
||||
+CONFIG_SERIAL_8250=y
|
||||
+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
|
||||
+CONFIG_SERIAL_8250_CONSOLE=y
|
||||
+CONFIG_SERIAL_8250_NR_UARTS=48
|
||||
+CONFIG_SERIAL_8250_EXTENDED=y
|
||||
+CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
+CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
+CONFIG_VIRTIO_CONSOLE=y
|
||||
+CONFIG_HW_RANDOM=y
|
||||
+CONFIG_HW_RANDOM_VIRTIO=y
|
||||
+# CONFIG_I2C_COMPAT is not set
|
||||
+# CONFIG_I2C_HELPER_AUTO is not set
|
||||
+CONFIG_GPIOLIB=y
|
||||
+# CONFIG_HWMON is not set
|
||||
+CONFIG_DEVFREQ_THERMAL=y
|
||||
+CONFIG_MEDIA_SUPPORT=y
|
||||
+CONFIG_MEDIA_CAMERA_SUPPORT=y
|
||||
+CONFIG_DRM=y
|
||||
+# CONFIG_DRM_FBDEV_EMULATION is not set
|
||||
+CONFIG_DRM_VIRTIO_GPU=y
|
||||
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
+CONFIG_SOUND=y
|
||||
+CONFIG_SND=y
|
||||
+CONFIG_SND_HRTIMER=y
|
||||
+CONFIG_SND_DYNAMIC_MINORS=y
|
||||
+# CONFIG_SND_SUPPORT_OLD_API is not set
|
||||
+# CONFIG_SND_VERBOSE_PROCFS is not set
|
||||
+# CONFIG_SND_DRIVERS is not set
|
||||
+# CONFIG_SND_USB is not set
|
||||
+CONFIG_HIDRAW=y
|
||||
+CONFIG_UHID=y
|
||||
+CONFIG_HID_APPLE=y
|
||||
+CONFIG_HID_ELECOM=y
|
||||
+CONFIG_HID_MAGICMOUSE=y
|
||||
+CONFIG_HID_MICROSOFT=y
|
||||
+CONFIG_HID_MULTITOUCH=y
|
||||
+CONFIG_USB_HIDDEV=y
|
||||
+CONFIG_USB=y
|
||||
+CONFIG_USB_GADGET=y
|
||||
+CONFIG_USB_CONFIGFS=y
|
||||
+CONFIG_USB_CONFIGFS_UEVENT=y
|
||||
+CONFIG_USB_CONFIGFS_F_FS=y
|
||||
+CONFIG_USB_CONFIGFS_F_ACC=y
|
||||
+CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
|
||||
+CONFIG_USB_CONFIGFS_F_MIDI=y
|
||||
+CONFIG_MMC=y
|
||||
+# CONFIG_MMC_BLOCK is not set
|
||||
+CONFIG_NEW_LEDS=y
|
||||
+CONFIG_LEDS_CLASS=y
|
||||
+CONFIG_LEDS_TRIGGERS=y
|
||||
+CONFIG_RTC_CLASS=y
|
||||
+# CONFIG_RTC_SYSTOHC is not set
|
||||
+CONFIG_VIRTIO_BALLOON=y
|
||||
+CONFIG_VIRTIO_INPUT=y
|
||||
+CONFIG_VIRTIO_MMIO=y
|
||||
+CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
|
||||
+CONFIG_STAGING=y
|
||||
+CONFIG_ASHMEM=y
|
||||
+CONFIG_ION=y
|
||||
+CONFIG_MAILBOX=y
|
||||
+CONFIG_PM_DEVFREQ=y
|
||||
+CONFIG_ANDROID=y
|
||||
+CONFIG_ANDROID_BINDER_IPC=y
|
||||
+CONFIG_EXT4_FS=y
|
||||
+CONFIG_EXT4_FS_SECURITY=y
|
||||
+CONFIG_F2FS_FS=y
|
||||
+CONFIG_F2FS_FS_SECURITY=y
|
||||
+# CONFIG_DNOTIFY is not set
|
||||
+CONFIG_QUOTA=y
|
||||
+CONFIG_QFMT_V2=y
|
||||
+CONFIG_FUSE_FS=y
|
||||
+CONFIG_MSDOS_FS=y
|
||||
+CONFIG_VFAT_FS=y
|
||||
+CONFIG_TMPFS=y
|
||||
+CONFIG_TMPFS_POSIX_ACL=y
|
||||
+CONFIG_PSTORE=y
|
||||
+CONFIG_PSTORE_CONSOLE=y
|
||||
+CONFIG_PSTORE_RAM=y
|
||||
+CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
|
||||
+CONFIG_SECURITY=y
|
||||
+CONFIG_SECURITY_NETWORK=y
|
||||
+CONFIG_HARDENED_USERCOPY=y
|
||||
+CONFIG_SECURITY_SELINUX=y
|
||||
+CONFIG_CRYPTO_ADIANTUM=y
|
||||
+CONFIG_CRYPTO_SHA512=y
|
||||
+CONFIG_CRYPTO_LZ4=y
|
||||
+CONFIG_CRYPTO_ZSTD=y
|
||||
+CONFIG_CRYPTO_ANSI_CPRNG=y
|
||||
+CONFIG_CRYPTO_DEV_VIRTIO=y
|
||||
+CONFIG_CRC8=y
|
||||
+CONFIG_XZ_DEC=y
|
||||
+CONFIG_PRINTK_TIME=y
|
||||
+CONFIG_DEBUG_INFO=y
|
||||
+# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
+# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||
+CONFIG_MAGIC_SYSRQ=y
|
||||
+CONFIG_DEBUG_STACK_USAGE=y
|
||||
+CONFIG_DEBUG_MEMORY_INIT=y
|
||||
+CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||
+# CONFIG_DETECT_HUNG_TASK is not set
|
||||
+CONFIG_PANIC_TIMEOUT=5
|
||||
+CONFIG_SCHEDSTATS=y
|
||||
+# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
+CONFIG_UNWINDER_FRAME_POINTER=y
|
||||
diff --git a/build.config.gki.x86_64 b/build.config.gki.x86_64
|
||||
new file mode 100644
|
||||
index 000000000000..69d339dce4a0
|
||||
--- /dev/null
|
||||
+++ b/build.config.gki.x86_64
|
||||
@@ -0,0 +1,17 @@
|
||||
+ARCH=x86_64
|
||||
+BRANCH=android-mainline
|
||||
+CLANG_TRIPLE=x86_64-linux-gnu-
|
||||
+CROSS_COMPILE=x86_64-linux-androidkernel-
|
||||
+CC=clang
|
||||
+DEFCONFIG=gki_defconfig
|
||||
+EXTRA_CMDS=''
|
||||
+KERNEL_DIR=common
|
||||
+POST_DEFCONFIG_CMDS="check_defconfig"
|
||||
+CLANG_PREBUILT_BIN=prebuilts-master/clang/host/linux-x86/clang-r353983c/bin
|
||||
+LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/bin
|
||||
+FILES="
|
||||
+arch/x86/boot/bzImage
|
||||
+vmlinux
|
||||
+System.map
|
||||
+"
|
||||
+STOP_SHIP_TRACEPRINTK=1
|
|
@ -1,53 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Rosenberg <drosen@google.com>
|
||||
Date: Tue, 16 Jul 2019 18:09:39 -0700
|
||||
Subject: ANDROID: Add show_options2 to view private mount data
|
||||
|
||||
Exposes private fs data via show_options2
|
||||
|
||||
Bug: 120446149
|
||||
Change-Id: I2d1c06fae274eeac03ac1924ef162f7bbb2f29d0
|
||||
Signed-off-by: Daniel Rosenberg <drosen@google.com>
|
||||
---
|
||||
fs/proc_namespace.c | 8 ++++++--
|
||||
include/linux/fs.h | 1 +
|
||||
2 files changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/fs/proc_namespace.c b/fs/proc_namespace.c
|
||||
index 273ee82d8aa9..5b8d065fa83c 100644
|
||||
--- a/fs/proc_namespace.c
|
||||
+++ b/fs/proc_namespace.c
|
||||
@@ -121,7 +121,9 @@ static int show_vfsmnt(struct seq_file *m, struct vfsmount *mnt)
|
||||
if (err)
|
||||
goto out;
|
||||
show_mnt_opts(m, mnt);
|
||||
- if (sb->s_op->show_options)
|
||||
+ if (sb->s_op->show_options2)
|
||||
+ err = sb->s_op->show_options2(mnt, m, mnt_path.dentry);
|
||||
+ else if (sb->s_op->show_options)
|
||||
err = sb->s_op->show_options(m, mnt_path.dentry);
|
||||
seq_puts(m, " 0 0\n");
|
||||
out:
|
||||
@@ -183,7 +185,9 @@ static int show_mountinfo(struct seq_file *m, struct vfsmount *mnt)
|
||||
err = show_sb_opts(m, sb);
|
||||
if (err)
|
||||
goto out;
|
||||
- if (sb->s_op->show_options)
|
||||
+ if (sb->s_op->show_options2) {
|
||||
+ err = sb->s_op->show_options2(mnt, m, mnt->mnt_root);
|
||||
+ } else if (sb->s_op->show_options)
|
||||
err = sb->s_op->show_options(m, mnt->mnt_root);
|
||||
seq_putc(m, '\n');
|
||||
out:
|
||||
diff --git a/include/linux/fs.h b/include/linux/fs.h
|
||||
index 42c2cfc33ce7..eccf96ceef3b 100644
|
||||
--- a/include/linux/fs.h
|
||||
+++ b/include/linux/fs.h
|
||||
@@ -1965,6 +1965,7 @@ struct super_operations {
|
||||
void (*umount_begin) (struct super_block *);
|
||||
|
||||
int (*show_options)(struct seq_file *, struct dentry *);
|
||||
+ int (*show_options2)(struct vfsmount *,struct seq_file *, struct dentry *);
|
||||
int (*show_devname)(struct seq_file *, struct dentry *);
|
||||
int (*show_path)(struct seq_file *, struct dentry *);
|
||||
int (*show_stats)(struct seq_file *, struct dentry *);
|
|
@ -1,32 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Tue, 13 Aug 2019 10:11:28 -0700
|
||||
Subject: ANDROID: Adding GKI Ramdisk to gki config
|
||||
|
||||
Test: Treehugger
|
||||
Bug: 132629930
|
||||
Change-Id: I3773d828cea4ab0ea8cfaef8a533a5ae925f037c
|
||||
Signed-of-by: Ram Muthiah <rammuthiah@google.com>
|
||||
---
|
||||
build.config.gki.aarch64 | 1 +
|
||||
build.config.gki.x86_64 | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/build.config.gki.aarch64 b/build.config.gki.aarch64
|
||||
index 79871cdc6d07..653e82bf1965 100644
|
||||
--- a/build.config.gki.aarch64
|
||||
+++ b/build.config.gki.aarch64
|
||||
@@ -16,3 +16,4 @@ vmlinux
|
||||
System.map
|
||||
"
|
||||
STOP_SHIP_TRACEPRINTK=1
|
||||
+BUILD_INITRAMFS=1
|
||||
diff --git a/build.config.gki.x86_64 b/build.config.gki.x86_64
|
||||
index b5a7f4600101..5c2db37a2871 100644
|
||||
--- a/build.config.gki.x86_64
|
||||
+++ b/build.config.gki.x86_64
|
||||
@@ -16,3 +16,4 @@ vmlinux
|
||||
System.map
|
||||
"
|
||||
STOP_SHIP_TRACEPRINTK=1
|
||||
+BUILD_INITRAMFS=1
|
|
@ -1,46 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Wed, 4 Sep 2019 16:18:17 -0700
|
||||
Subject: ANDROID: Adding SERIAL_OF_PLATFORM module to gki
|
||||
|
||||
Bug: 132629930
|
||||
Change-Id: I722540edb8b7a7289e45e63de2959399cb563e23
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 2 +-
|
||||
arch/x86/configs/gki_defconfig | 2 ++
|
||||
2 files changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 6aae6d55e96c..d650f7d141e7 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -268,7 +268,7 @@ CONFIG_SERIAL_8250_NR_UARTS=48
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
-CONFIG_SERIAL_OF_PLATFORM=y
|
||||
+CONFIG_SERIAL_OF_PLATFORM=m
|
||||
CONFIG_SERIAL_AMBA_PL011=y
|
||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
CONFIG_VIRTIO_CONSOLE=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index b3dad521ee8a..511a763add37 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -170,6 +170,7 @@ CONFIG_RFKILL=y
|
||||
CONFIG_PCI=y
|
||||
# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||
CONFIG_DEBUG_DEVRES=y
|
||||
+CONFIG_OF=y
|
||||
CONFIG_ZRAM=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
@@ -240,6 +241,7 @@ CONFIG_SERIAL_8250_NR_UARTS=48
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
+CONFIG_SERIAL_OF_PLATFORM=m
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_VIRTIO=m
|
||||
# CONFIG_I2C_COMPAT is not set
|
|
@ -1,48 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Salyzyn <salyzyn@google.com>
|
||||
Date: Thu, 12 Sep 2019 14:06:44 -0700
|
||||
Subject: ANDROID: CONFIG_MMC=m
|
||||
|
||||
Signed-off-by: Mark Salyzyn <salyzyn@google.com>
|
||||
Test: compile
|
||||
Bug: 140652382
|
||||
Change-Id: Ie6002cde4d964920c71edd347851df9ceec4ee0f
|
||||
(cherry picked from commit 30f8bea960e42921156a401e8e8ddb80fa3ee5c6)
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 6 +++---
|
||||
arch/x86/configs/gki_defconfig | 3 +--
|
||||
2 files changed, 4 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index ea9960028cfd..440173b3c301 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -323,11 +323,11 @@ CONFIG_USB_CONFIGFS_F_FS=y
|
||||
CONFIG_USB_CONFIGFS_F_ACC=y
|
||||
CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
|
||||
CONFIG_USB_CONFIGFS_F_MIDI=y
|
||||
-CONFIG_MMC=y
|
||||
+CONFIG_MMC=m
|
||||
# CONFIG_PWRSEQ_EMMC is not set
|
||||
# CONFIG_PWRSEQ_SIMPLE is not set
|
||||
-CONFIG_MMC_SDHCI=y
|
||||
-CONFIG_MMC_SDHCI_PLTFM=y
|
||||
+CONFIG_MMC_SDHCI=m
|
||||
+CONFIG_MMC_SDHCI_PLTFM=m
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index a5953d43d480..c206a2d0f9cf 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -280,8 +280,7 @@ CONFIG_USB_CONFIGFS_F_FS=y
|
||||
CONFIG_USB_CONFIGFS_F_ACC=y
|
||||
CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
|
||||
CONFIG_USB_CONFIGFS_F_MIDI=y
|
||||
-CONFIG_MMC=y
|
||||
-# CONFIG_MMC_BLOCK is not set
|
||||
+CONFIG_MMC=m
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_TRIGGERS=y
|
|
@ -1,172 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Delva <adelva@google.com>
|
||||
Date: Wed, 4 Sep 2019 12:25:57 -0700
|
||||
Subject: ANDROID: Catch rockpi4_defconfig up with gki_defconfig
|
||||
|
||||
Change-Id: I640112a903d0b4944a087a4408241b901f37f6b8
|
||||
Signed-off-by: Alistair Delva <adelva@google.com>
|
||||
---
|
||||
arch/arm64/configs/rockpi4_defconfig | 31 +++++++++++++++-------------
|
||||
1 file changed, 17 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/rockpi4_defconfig b/arch/arm64/configs/rockpi4_defconfig
|
||||
index 6d0cf70f3757..2f97c1a8a60a 100644
|
||||
--- a/arch/arm64/configs/rockpi4_defconfig
|
||||
+++ b/arch/arm64/configs/rockpi4_defconfig
|
||||
@@ -1,3 +1,4 @@
|
||||
+CONFIG_LOCALVERSION="-mainline"
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
@@ -24,7 +25,6 @@ CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_RD_LZO is not set
|
||||
# CONFIG_RD_LZ4 is not set
|
||||
# CONFIG_SYSFS_SYSCALL is not set
|
||||
-CONFIG_FHANDLE=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
# CONFIG_RSEQ is not set
|
||||
@@ -35,8 +35,10 @@ CONFIG_EMBEDDED=y
|
||||
CONFIG_SLAB_FREELIST_RANDOM=y
|
||||
CONFIG_SLAB_FREELIST_HARDENED=y
|
||||
CONFIG_PROFILING=y
|
||||
+CONFIG_ARCH_QCOM=y
|
||||
CONFIG_ARCH_ROCKCHIP=y
|
||||
CONFIG_SCHED_MC=y
|
||||
+CONFIG_NR_CPUS=32
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_PARAVIRT=y
|
||||
CONFIG_COMPAT=y
|
||||
@@ -45,9 +47,7 @@ CONFIG_SWP_EMULATION=y
|
||||
CONFIG_CP15_BARRIER_EMULATION=y
|
||||
CONFIG_SETEND_EMULATION=y
|
||||
CONFIG_RANDOMIZE_BASE=y
|
||||
-CONFIG_CMDLINE=""
|
||||
-# CONFIG_CMDLINE_FORCE is not set
|
||||
-# CONFIG_EFI is not set
|
||||
+# CONFIG_DMI is not set
|
||||
CONFIG_PM_WAKELOCKS=y
|
||||
CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||
# CONFIG_PM_WAKELOCKS_GC is not set
|
||||
@@ -65,6 +65,7 @@ CONFIG_ARM_SCMI_PROTOCOL=y
|
||||
# CONFIG_ARM_SCMI_POWER_DOMAIN is not set
|
||||
CONFIG_ARM_SCPI_PROTOCOL=y
|
||||
# CONFIG_ARM_SCPI_POWER_DOMAIN is not set
|
||||
+# CONFIG_EFI_ARMSTUB_DTB_LOADER is not set
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_KVM=y
|
||||
CONFIG_VHOST_VSOCK=y
|
||||
@@ -93,7 +94,6 @@ CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_ADVANCED_ROUTER=y
|
||||
CONFIG_IP_MULTIPLE_TABLES=y
|
||||
-CONFIG_IP_PNP=y
|
||||
CONFIG_NET_IPGRE_DEMUX=y
|
||||
CONFIG_NET_IPVTI=y
|
||||
CONFIG_INET_ESP=y
|
||||
@@ -108,6 +108,7 @@ CONFIG_IPV6_MIP6=y
|
||||
CONFIG_IPV6_VTI=y
|
||||
CONFIG_IPV6_MULTIPLE_TABLES=y
|
||||
CONFIG_NETFILTER=y
|
||||
+# CONFIG_BRIDGE_NETFILTER is not set
|
||||
CONFIG_NF_CONNTRACK=y
|
||||
CONFIG_NF_CONNTRACK_SECMARK=y
|
||||
CONFIG_NF_CONNTRACK_EVENTS=y
|
||||
@@ -176,6 +177,7 @@ CONFIG_IP6_NF_FILTER=y
|
||||
CONFIG_IP6_NF_TARGET_REJECT=y
|
||||
CONFIG_IP6_NF_MANGLE=y
|
||||
CONFIG_IP6_NF_RAW=y
|
||||
+CONFIG_TIPC=y
|
||||
CONFIG_L2TP=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_NET_SCHED=y
|
||||
@@ -376,7 +378,6 @@ CONFIG_WATCHDOG_PRETIMEOUT_GOV=y
|
||||
CONFIG_DW_WATCHDOG=y
|
||||
CONFIG_MFD_ACT8945A=y
|
||||
CONFIG_MFD_RK808=y
|
||||
-CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_DEBUG=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_REGULATOR_VIRTUAL_CONSUMER=y
|
||||
@@ -388,7 +389,6 @@ CONFIG_REGULATOR_VCTRL=y
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_MEDIA_CAMERA_SUPPORT=y
|
||||
CONFIG_MEDIA_CONTROLLER=y
|
||||
-CONFIG_VIDEO_V4L2_SUBDEV_API=y
|
||||
# CONFIG_VGA_ARB is not set
|
||||
CONFIG_DRM=y
|
||||
# CONFIG_DRM_FBDEV_EMULATION is not set
|
||||
@@ -397,7 +397,6 @@ CONFIG_ROCKCHIP_DW_HDMI=y
|
||||
CONFIG_DRM_VIRTIO_GPU=y
|
||||
# CONFIG_LCD_CLASS_DEVICE is not set
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
-# CONFIG_BACKLIGHT_GENERIC is not set
|
||||
CONFIG_SOUND=y
|
||||
CONFIG_SND=y
|
||||
CONFIG_SND_HRTIMER=y
|
||||
@@ -427,6 +426,7 @@ CONFIG_USB_OHCI_HCD=y
|
||||
# CONFIG_USB_OHCI_HCD_PCI is not set
|
||||
CONFIG_USB_OHCI_HCD_PLATFORM=y
|
||||
CONFIG_USB_GADGET=y
|
||||
+CONFIG_USB_DUMMY_HCD=m
|
||||
CONFIG_USB_CONFIGFS=y
|
||||
CONFIG_USB_CONFIGFS_UEVENT=y
|
||||
CONFIG_USB_CONFIGFS_F_FS=y
|
||||
@@ -442,10 +442,10 @@ CONFIG_MMC_SDHCI_OF_ARASAN=y
|
||||
CONFIG_MMC_SDHCI_OF_DWCMSHC=y
|
||||
CONFIG_MMC_DW=y
|
||||
CONFIG_MMC_DW_ROCKCHIP=y
|
||||
-CONFIG_MMC_CQHCI=y
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
+CONFIG_EDAC=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
# CONFIG_RTC_SYSTOHC is not set
|
||||
CONFIG_RTC_DRV_RK808=y
|
||||
@@ -462,16 +462,17 @@ CONFIG_STAGING=y
|
||||
CONFIG_ASHMEM=y
|
||||
CONFIG_ANDROID_VSOC=y
|
||||
CONFIG_ION=y
|
||||
+CONFIG_ION_SYSTEM_HEAP=y
|
||||
+CONFIG_ION_SYSTEM_CONTIG_HEAP=y
|
||||
CONFIG_COMMON_CLK_RK808=y
|
||||
CONFIG_COMMON_CLK_SCPI=y
|
||||
-# CONFIG_COMMON_CLK_XGENE is not set
|
||||
CONFIG_HWSPINLOCK=y
|
||||
-# CONFIG_FSL_ERRATUM_A008585 is not set
|
||||
-# CONFIG_HISILICON_ERRATUM_161010101 is not set
|
||||
CONFIG_MAILBOX=y
|
||||
CONFIG_ROCKCHIP_MBOX=y
|
||||
CONFIG_ROCKCHIP_IOMMU=y
|
||||
CONFIG_ARM_SMMU=y
|
||||
+CONFIG_QCOM_COMMAND_DB=y
|
||||
+CONFIG_QCOM_RPMH=y
|
||||
CONFIG_ROCKCHIP_PM_DOMAINS=y
|
||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
@@ -480,10 +481,12 @@ CONFIG_DEVFREQ_GOV_PASSIVE=y
|
||||
CONFIG_ARM_RK3399_DMC_DEVFREQ=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_ROCKCHIP=y
|
||||
+CONFIG_QCOM_PDC=y
|
||||
CONFIG_PHY_ROCKCHIP_EMMC=y
|
||||
CONFIG_PHY_ROCKCHIP_INNO_HDMI=y
|
||||
CONFIG_PHY_ROCKCHIP_INNO_USB2=y
|
||||
CONFIG_PHY_ROCKCHIP_USB=y
|
||||
+CONFIG_RAS=y
|
||||
CONFIG_ANDROID=y
|
||||
CONFIG_ANDROID_BINDER_IPC=y
|
||||
CONFIG_ROCKCHIP_EFUSE=y
|
||||
@@ -500,9 +503,9 @@ CONFIG_FUSE_FS=y
|
||||
CONFIG_OVERLAY_FS=y
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
-CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
-CONFIG_ECRYPT_FS=y
|
||||
+# CONFIG_EFIVAR_FS is not set
|
||||
+CONFIG_SDCARD_FS=y
|
||||
CONFIG_PSTORE=y
|
||||
CONFIG_PSTORE_CONSOLE=y
|
||||
CONFIG_PSTORE_RAM=y
|
|
@ -1,39 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Maennich <maennich@google.com>
|
||||
Date: Wed, 8 May 2019 23:07:39 +0100
|
||||
Subject: ANDROID: Expose gki_defconfig to build.config
|
||||
|
||||
With this in place, the gki_defconfig can be build with build.sh
|
||||
machinery.
|
||||
|
||||
Bug: 132113225
|
||||
Change-Id: I4c623a866cd41aa4587e4fab1c4e5254f6680542
|
||||
Signed-off-by: Matthias Maennich <maennich@google.com>
|
||||
---
|
||||
build.config.gki.aarch64 | 17 +++++++++++++++++
|
||||
1 file changed, 17 insertions(+)
|
||||
create mode 100644 build.config.gki.aarch64
|
||||
|
||||
diff --git a/build.config.gki.aarch64 b/build.config.gki.aarch64
|
||||
new file mode 100644
|
||||
index 000000000000..dec295284ffa
|
||||
--- /dev/null
|
||||
+++ b/build.config.gki.aarch64
|
||||
@@ -0,0 +1,17 @@
|
||||
+ARCH=arm64
|
||||
+BRANCH=android-mainline
|
||||
+CLANG_TRIPLE=aarch64-linux-gnu-
|
||||
+CROSS_COMPILE=aarch64-linux-androidkernel-
|
||||
+CC=clang
|
||||
+DEFCONFIG=gki_defconfig
|
||||
+EXTRA_CMDS=''
|
||||
+KERNEL_DIR=common
|
||||
+POST_DEFCONFIG_CMDS="check_defconfig"
|
||||
+CLANG_PREBUILT_BIN=prebuilts-master/clang/host/linux-x86/clang-r349610/bin
|
||||
+LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin
|
||||
+FILES="
|
||||
+arch/arm64/boot/Image.gz
|
||||
+vmlinux
|
||||
+System.map
|
||||
+"
|
||||
+STOP_SHIP_TRACEPRINTK=1
|
|
@ -1,34 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Quentin Perret <qperret@google.com>
|
||||
Date: Tue, 24 Sep 2019 17:28:02 +0100
|
||||
Subject: ANDROID: Fix arm64 allmodconfig build
|
||||
|
||||
Allmodconfig on arm64 enables CPU_BIG_ENDIAN=y, which causes issues with
|
||||
ld.lld which doesn't support linking aarch64be-linux-gnu targets (see
|
||||
https://reviews.llvm.org/D58655#1410281). However, it is very unlikely
|
||||
that real android devices run with arm64 BE hardware in practice. So,
|
||||
until we can find a better fix, let's simply force CPU_BIG_ENDIAN=n for
|
||||
allmodconfig builds.
|
||||
|
||||
Bug: 141733632
|
||||
Bug: 140224784
|
||||
Signed-off-by: Quentin Perret <qperret@google.com>
|
||||
Change-Id: Ic4693ae1f462144c8219b397463ca341f6fe08a1
|
||||
---
|
||||
build.config.allmodconfig | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/build.config.allmodconfig b/build.config.allmodconfig
|
||||
index 6e0404b8de47..deaa8f3d5a69 100644
|
||||
--- a/build.config.allmodconfig
|
||||
+++ b/build.config.allmodconfig
|
||||
@@ -6,7 +6,8 @@ POST_DEFCONFIG_CMDS="update_config"
|
||||
function update_config() {
|
||||
${KERNEL_DIR}/scripts/config --file ${OUT_DIR}/.config \
|
||||
-d TEST_KMOD \
|
||||
- -d XFS_FS
|
||||
+ -d XFS_FS \
|
||||
+ -d CPU_BIG_ENDIAN
|
||||
(cd ${OUT_DIR} && \
|
||||
make O=${OUT_DIR} $archsubarch CC=${CC} CROSS_COMPILE=${CROSS_COMPILE} olddefconfig)
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Delva <adelva@google.com>
|
||||
Date: Fri, 11 Oct 2019 10:24:23 -0400
|
||||
Subject: ANDROID: Fix x86_64 allmodconfig build
|
||||
|
||||
CONFIG_KVM_INTEL depends on asm volatile goto which is about to be
|
||||
supported in clang, but we haven't landed the upgraded compiler yet.
|
||||
Suppress use of this kernel feature for now.
|
||||
|
||||
In file included from arch/x86/kvm/vmx/vmx.h:11:
|
||||
arch/x86/kvm/vmx/ops.h:157:2: error: 'asm goto' constructs are not
|
||||
supported yet
|
||||
vmx_asm2(vmwrite, "r"(field), "rm"(value), field, value);
|
||||
^
|
||||
|
||||
Change-Id: If21ca65a7bd1e43c5f66a93a6108cf8aa49a9c64
|
||||
Signed-off-by: Alistair Delva <adelva@google.com>
|
||||
---
|
||||
build.config.allmodconfig | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/build.config.allmodconfig b/build.config.allmodconfig
|
||||
index deaa8f3d5a69..854a8f8aa3f2 100644
|
||||
--- a/build.config.allmodconfig
|
||||
+++ b/build.config.allmodconfig
|
||||
@@ -2,12 +2,14 @@ DEFCONFIG=allmodconfig
|
||||
KCONFIG_ALLCONFIG=${ROOT_DIR}/common/arch/${ARCH%_*}/configs/gki_defconfig
|
||||
|
||||
# XFS_FS is currently broken on this branch with clang-9
|
||||
+# KVM_INTEL is broken on this branch due to lack of asm-goto support in clang
|
||||
POST_DEFCONFIG_CMDS="update_config"
|
||||
function update_config() {
|
||||
${KERNEL_DIR}/scripts/config --file ${OUT_DIR}/.config \
|
||||
-d TEST_KMOD \
|
||||
-d XFS_FS \
|
||||
- -d CPU_BIG_ENDIAN
|
||||
+ -d CPU_BIG_ENDIAN \
|
||||
+ -d KVM_INTEL
|
||||
(cd ${OUT_DIR} && \
|
||||
make O=${OUT_DIR} $archsubarch CC=${CC} CROSS_COMPILE=${CROSS_COMPILE} olddefconfig)
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Wed, 12 Jun 2019 14:25:25 -0700
|
||||
Subject: ANDROID: Fixed x86 regression
|
||||
|
||||
Added SMP and CMDLINE to defconfig
|
||||
|
||||
Test: Boot x86 gki
|
||||
Change-Id: I6930d60dceb5b180825337d5371d375259984a33
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
---
|
||||
arch/x86/configs/gki_defconfig | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 864595c719e7..94690e9d016a 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -33,13 +33,14 @@ CONFIG_EMBEDDED=y
|
||||
CONFIG_SLAB_FREELIST_RANDOM=y
|
||||
CONFIG_SLAB_FREELIST_HARDENED=y
|
||||
CONFIG_PROFILING=y
|
||||
+CONFIG_SMP=y
|
||||
+CONFIG_CMDLINE_BOOL=y
|
||||
+CONFIG_CMDLINE="console=ttyS0 reboot=p"
|
||||
CONFIG_PM_WAKELOCKS=y
|
||||
CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||
# CONFIG_PM_WAKELOCKS_GC is not set
|
||||
-CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_TIMES=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
CONFIG_IA32_EMULATION=y
|
||||
CONFIG_KPROBES=y
|
||||
CONFIG_MODULES=y
|
||||
@@ -288,7 +289,6 @@ CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
|
||||
CONFIG_STAGING=y
|
||||
CONFIG_ASHMEM=y
|
||||
CONFIG_ION=y
|
||||
-CONFIG_MAILBOX=y
|
||||
CONFIG_PM_DEVFREQ=y
|
||||
CONFIG_ANDROID=y
|
||||
CONFIG_ANDROID_BINDER_IPC=y
|
|
@ -1,35 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Tue, 21 May 2019 18:15:10 -0700
|
||||
Subject: ANDROID-Four-part-revert-of-asm-goto-usage-1-4
|
||||
|
||||
Revert "x86/uaccess: Dont leak the AC flag into __put_user() argument evaluation"
|
||||
This reverts commit 6ae865615fc43d014da2fd1f1bba7e81ee622d1b.
|
||||
|
||||
Bug: 120440614
|
||||
Bug: 132629930
|
||||
Change-Id: I38f78e20d255ab4b33546d2e9d98f64d7e590e1d
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
---
|
||||
arch/x86/include/asm/uaccess.h | 7 +++----
|
||||
1 file changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
|
||||
index 61d93f062a36..176c73385605 100644
|
||||
--- a/arch/x86/include/asm/uaccess.h
|
||||
+++ b/arch/x86/include/asm/uaccess.h
|
||||
@@ -429,11 +429,10 @@ do { \
|
||||
({ \
|
||||
__label__ __pu_label; \
|
||||
int __pu_err = -EFAULT; \
|
||||
- __typeof__(*(ptr)) __pu_val = (x); \
|
||||
- __typeof__(ptr) __pu_ptr = (ptr); \
|
||||
- __typeof__(size) __pu_size = (size); \
|
||||
+ __typeof__(*(ptr)) __pu_val; \
|
||||
+ __pu_val = x; \
|
||||
__uaccess_begin(); \
|
||||
- __put_user_size(__pu_val, __pu_ptr, __pu_size, __pu_label); \
|
||||
+ __put_user_size(__pu_val, (ptr), (size), __pu_label); \
|
||||
__pu_err = 0; \
|
||||
__pu_label: \
|
||||
__uaccess_end(); \
|
|
@ -1,41 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Tue, 21 May 2019 18:15:21 -0700
|
||||
Subject: ANDROID-Four-part-revert-of-asm-goto-usage-2-4
|
||||
|
||||
Revert "x86/uaccess: Don't leak the AC flag into __put_user() value evaluation"
|
||||
This reverts commit 2a418cf3f5f1caf911af288e978d61c9844b0695.
|
||||
|
||||
Bug: 120440614
|
||||
Bug: 132629930
|
||||
Change-Id: Ib177230b39d1247060f425205d63d65065ed936a
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
---
|
||||
arch/x86/include/asm/uaccess.h | 6 ++----
|
||||
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
|
||||
index 176c73385605..8fc40674c174 100644
|
||||
--- a/arch/x86/include/asm/uaccess.h
|
||||
+++ b/arch/x86/include/asm/uaccess.h
|
||||
@@ -282,7 +282,7 @@ do { \
|
||||
__put_user_goto(x, ptr, "l", "k", "ir", label); \
|
||||
break; \
|
||||
case 8: \
|
||||
- __put_user_goto_u64(x, ptr, label); \
|
||||
+ __put_user_goto_u64((__typeof__(*ptr))(x), ptr, label); \
|
||||
break; \
|
||||
default: \
|
||||
__put_user_bad(); \
|
||||
@@ -429,10 +429,8 @@ do { \
|
||||
({ \
|
||||
__label__ __pu_label; \
|
||||
int __pu_err = -EFAULT; \
|
||||
- __typeof__(*(ptr)) __pu_val; \
|
||||
- __pu_val = x; \
|
||||
__uaccess_begin(); \
|
||||
- __put_user_size(__pu_val, (ptr), (size), __pu_label); \
|
||||
+ __put_user_size((x), (ptr), (size), __pu_label); \
|
||||
__pu_err = 0; \
|
||||
__pu_label: \
|
||||
__uaccess_end(); \
|
|
@ -1,124 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Tue, 21 May 2019 18:20:17 -0700
|
||||
Subject: ANDROID-Four-part-revert-of-asm-goto-usage-3-4
|
||||
|
||||
Revert "Use __put_user_goto in __put_user_size() and unsafe_put_user()"
|
||||
This reverts commit a959dc88f9c8900296ccf13e2f3e1cbc555a8917.
|
||||
|
||||
Bug: 120440614
|
||||
Bug: 132629930
|
||||
Change-Id: I07410ed2bc7552f16ec119fbc2001bb43ffef6f4
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
---
|
||||
arch/x86/include/asm/uaccess.h | 57 ++++++++++++++++++++--------------
|
||||
1 file changed, 33 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
|
||||
index 8fc40674c174..0b049e6baf31 100644
|
||||
--- a/arch/x86/include/asm/uaccess.h
|
||||
+++ b/arch/x86/include/asm/uaccess.h
|
||||
@@ -184,14 +184,19 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
|
||||
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
-#define __put_user_goto_u64(x, addr, label) \
|
||||
- asm_volatile_goto("\n" \
|
||||
- "1: movl %%eax,0(%1)\n" \
|
||||
- "2: movl %%edx,4(%1)\n" \
|
||||
- _ASM_EXTABLE_UA(1b, %l2) \
|
||||
- _ASM_EXTABLE_UA(2b, %l2) \
|
||||
- : : "A" (x), "r" (addr) \
|
||||
- : : label)
|
||||
+#define __put_user_asm_u64(x, addr, err, errret) \
|
||||
+ asm volatile("\n" \
|
||||
+ "1: movl %%eax,0(%2)\n" \
|
||||
+ "2: movl %%edx,4(%2)\n" \
|
||||
+ "3:" \
|
||||
+ ".section .fixup,\"ax\"\n" \
|
||||
+ "4: movl %3,%0\n" \
|
||||
+ " jmp 3b\n" \
|
||||
+ ".previous\n" \
|
||||
+ _ASM_EXTABLE_UA(1b, 4b) \
|
||||
+ _ASM_EXTABLE_UA(2b, 4b) \
|
||||
+ : "=r" (err) \
|
||||
+ : "A" (x), "r" (addr), "i" (errret), "0" (err))
|
||||
|
||||
#define __put_user_asm_ex_u64(x, addr) \
|
||||
asm volatile("\n" \
|
||||
@@ -206,8 +211,8 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
|
||||
asm volatile("call __put_user_8" : "=a" (__ret_pu) \
|
||||
: "A" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
|
||||
#else
|
||||
-#define __put_user_goto_u64(x, ptr, label) \
|
||||
- __put_user_goto(x, ptr, "q", "", "er", label)
|
||||
+#define __put_user_asm_u64(x, ptr, retval, errret) \
|
||||
+ __put_user_asm(x, ptr, retval, "q", "", "er", errret)
|
||||
#define __put_user_asm_ex_u64(x, addr) \
|
||||
__put_user_asm_ex(x, addr, "q", "", "er")
|
||||
#define __put_user_x8(x, ptr, __ret_pu) __put_user_x(8, x, ptr, __ret_pu)
|
||||
@@ -268,21 +273,23 @@ extern void __put_user_8(void);
|
||||
__builtin_expect(__ret_pu, 0); \
|
||||
})
|
||||
|
||||
-#define __put_user_size(x, ptr, size, label) \
|
||||
+#define __put_user_size(x, ptr, size, retval, errret) \
|
||||
do { \
|
||||
+ retval = 0; \
|
||||
__chk_user_ptr(ptr); \
|
||||
switch (size) { \
|
||||
case 1: \
|
||||
- __put_user_goto(x, ptr, "b", "b", "iq", label); \
|
||||
+ __put_user_asm(x, ptr, retval, "b", "b", "iq", errret); \
|
||||
break; \
|
||||
case 2: \
|
||||
- __put_user_goto(x, ptr, "w", "w", "ir", label); \
|
||||
+ __put_user_asm(x, ptr, retval, "w", "w", "ir", errret); \
|
||||
break; \
|
||||
case 4: \
|
||||
- __put_user_goto(x, ptr, "l", "k", "ir", label); \
|
||||
+ __put_user_asm(x, ptr, retval, "l", "k", "ir", errret); \
|
||||
break; \
|
||||
case 8: \
|
||||
- __put_user_goto_u64((__typeof__(*ptr))(x), ptr, label); \
|
||||
+ __put_user_asm_u64((__typeof__(*ptr))(x), ptr, retval, \
|
||||
+ errret); \
|
||||
break; \
|
||||
default: \
|
||||
__put_user_bad(); \
|
||||
@@ -427,12 +434,9 @@ do { \
|
||||
|
||||
#define __put_user_nocheck(x, ptr, size) \
|
||||
({ \
|
||||
- __label__ __pu_label; \
|
||||
- int __pu_err = -EFAULT; \
|
||||
+ int __pu_err; \
|
||||
__uaccess_begin(); \
|
||||
- __put_user_size((x), (ptr), (size), __pu_label); \
|
||||
- __pu_err = 0; \
|
||||
-__pu_label: \
|
||||
+ __put_user_size((x), (ptr), (size), __pu_err, -EFAULT); \
|
||||
__uaccess_end(); \
|
||||
__builtin_expect(__pu_err, 0); \
|
||||
})
|
||||
@@ -716,11 +720,16 @@ static __must_check __always_inline bool user_access_begin(const void __user *pt
|
||||
#define user_access_begin(a,b) user_access_begin(a,b)
|
||||
#define user_access_end() __uaccess_end()
|
||||
|
||||
-#define user_access_save() smap_save()
|
||||
-#define user_access_restore(x) smap_restore(x)
|
||||
+#define user_access_save() smap_save()
|
||||
+#define user_access_restore(x) smap_restore(x)
|
||||
|
||||
-#define unsafe_put_user(x, ptr, label) \
|
||||
- __put_user_size((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)), label)
|
||||
+#define unsafe_put_user(x, ptr, err_label) \
|
||||
+do { \
|
||||
+ int __pu_err; \
|
||||
+ __typeof__(*(ptr)) __pu_val = (x); \
|
||||
+ __put_user_size(__pu_val, (ptr), sizeof(*(ptr)), __pu_err, -EFAULT); \
|
||||
+ if (unlikely(__pu_err)) goto err_label; \
|
||||
+} while (0)
|
||||
|
||||
#define unsafe_get_user(x, ptr, err_label) \
|
||||
do { \
|
|
@ -1,55 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Tue, 21 May 2019 18:21:54 -0700
|
||||
Subject: ANDROID-Four-part-revert-of-asm-goto-usage-4-4
|
||||
|
||||
Revert "x86 uaccess: Introduce __put_user_goto"
|
||||
This reverts commit 4a789213c9a54c8b618924d3421e56e98df8a447.
|
||||
|
||||
Bug: 120440614
|
||||
Bug: 132629930
|
||||
Change-Id: If5e90d475d74d9aa3505972f43bc4ee48bed038f
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
---
|
||||
arch/x86/include/asm/uaccess.h | 28 +++++++++++-----------------
|
||||
1 file changed, 11 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
|
||||
index 0b049e6baf31..d3b6c3ba61d1 100644
|
||||
--- a/arch/x86/include/asm/uaccess.h
|
||||
+++ b/arch/x86/include/asm/uaccess.h
|
||||
@@ -463,23 +463,17 @@ struct __large_struct { unsigned long buf[100]; };
|
||||
* we do not write to any memory gcc knows about, so there are no
|
||||
* aliasing issues.
|
||||
*/
|
||||
-#define __put_user_goto(x, addr, itype, rtype, ltype, label) \
|
||||
- asm_volatile_goto("\n" \
|
||||
- "1: mov"itype" %"rtype"0,%1\n" \
|
||||
- _ASM_EXTABLE_UA(1b, %l2) \
|
||||
- : : ltype(x), "m" (__m(addr)) \
|
||||
- : : label)
|
||||
-
|
||||
-#define __put_user_failed(x, addr, itype, rtype, ltype, errret) \
|
||||
- ({ __label__ __puflab; \
|
||||
- int __pufret = errret; \
|
||||
- __put_user_goto(x,addr,itype,rtype,ltype,__puflab); \
|
||||
- __pufret = 0; \
|
||||
- __puflab: __pufret; })
|
||||
-
|
||||
-#define __put_user_asm(x, addr, retval, itype, rtype, ltype, errret) do { \
|
||||
- retval = __put_user_failed(x, addr, itype, rtype, ltype, errret); \
|
||||
-} while (0)
|
||||
+#define __put_user_asm(x, addr, err, itype, rtype, ltype, errret) \
|
||||
+ asm volatile("\n" \
|
||||
+ "1: mov"itype" %"rtype"1,%2\n" \
|
||||
+ "2:\n" \
|
||||
+ ".section .fixup,\"ax\"\n" \
|
||||
+ "3: mov %3,%0\n" \
|
||||
+ " jmp 2b\n" \
|
||||
+ ".previous\n" \
|
||||
+ _ASM_EXTABLE_UA(1b, 3b) \
|
||||
+ : "=r"(err) \
|
||||
+ : ltype(x), "m" (__m(addr)), "i" (errret), "0" (err))
|
||||
|
||||
#define __put_user_asm_ex(x, addr, itype, rtype, ltype) \
|
||||
asm volatile("1: mov"itype" %"rtype"0,%1\n" \
|
|
@ -1,26 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Salyzyn <salyzyn@google.com>
|
||||
Date: Tue, 3 Sep 2019 09:42:35 -0700
|
||||
Subject: ANDROID: GKI: enable CONFIG_SPI for x86
|
||||
|
||||
Adds compile coverage for SPI in the TH builds, runtime no so much.
|
||||
|
||||
Signed-off-by: Mark Salyzyn <salyzyn@google.com>
|
||||
Bug: 140290328
|
||||
Change-Id: I2d7777ab0e671248084880e5c1770b6ec6d7a650
|
||||
---
|
||||
arch/x86/configs/gki_defconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index e86cd1009a67..9b76d55e8c41 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -240,6 +240,7 @@ CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_VIRTIO=y
|
||||
# CONFIG_I2C_COMPAT is not set
|
||||
# CONFIG_I2C_HELPER_AUTO is not set
|
||||
+CONFIG_SPI=y
|
||||
CONFIG_GPIOLIB=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_DEVFREQ_THERMAL=y
|
|
@ -1,26 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Salyzyn <salyzyn@google.com>
|
||||
Date: Tue, 3 Sep 2019 13:17:23 -0700
|
||||
Subject: ANDROID: GKI: enable CONFIG_TIPC for x86
|
||||
|
||||
Adds compile coverage for TIPC in the TH builds, runtime not so much.
|
||||
|
||||
Signed-off-by: Mark Salyzyn <salyzyn@google.com>
|
||||
Bug: 140406060
|
||||
Change-Id: I7731157396372683c906f1f4eb2fdbdb7015f446
|
||||
---
|
||||
arch/x86/configs/gki_defconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 9b76d55e8c41..6b0ff4ca236a 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -145,6 +145,7 @@ CONFIG_IP6_NF_FILTER=y
|
||||
CONFIG_IP6_NF_TARGET_REJECT=y
|
||||
CONFIG_IP6_NF_MANGLE=y
|
||||
CONFIG_IP6_NF_RAW=y
|
||||
+CONFIG_TIPC=y
|
||||
CONFIG_L2TP=y
|
||||
CONFIG_NET_SCHED=y
|
||||
CONFIG_NET_SCH_HTB=y
|
|
@ -1,55 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Sandeep Patil <sspatil@google.com>
|
||||
Date: Fri, 13 Sep 2019 14:50:38 -0700
|
||||
Subject: ANDROID: GKI: export cma symbols for cma heap as a module
|
||||
|
||||
Bug: 140294230
|
||||
Test: builds
|
||||
|
||||
Change-Id: I04c12174934c24a704d5c1e5be3e7e948c777a78
|
||||
Signed-off-by: Sandeep Patil <sspatil@google.com>
|
||||
---
|
||||
mm/cma.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/mm/cma.c b/mm/cma.c
|
||||
index 7fe0b8356775..db4642e58058 100644
|
||||
--- a/mm/cma.c
|
||||
+++ b/mm/cma.c
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <linux/memblock.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/mm.h>
|
||||
+#include <linux/module.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/sizes.h>
|
||||
#include <linux/slab.h>
|
||||
@@ -54,6 +55,7 @@ const char *cma_get_name(const struct cma *cma)
|
||||
{
|
||||
return cma->name ? cma->name : "(undefined)";
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(cma_get_name);
|
||||
|
||||
static unsigned long cma_bitmap_aligned_mask(const struct cma *cma,
|
||||
unsigned int align_order)
|
||||
@@ -500,6 +502,7 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align,
|
||||
pr_debug("%s(): returned %p\n", __func__, page);
|
||||
return page;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(cma_alloc);
|
||||
|
||||
/**
|
||||
* cma_release() - release allocated pages
|
||||
@@ -533,6 +536,7 @@ bool cma_release(struct cma *cma, const struct page *pages, unsigned int count)
|
||||
|
||||
return true;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(cma_release);
|
||||
|
||||
int cma_for_each_area(int (*it)(struct cma *cma, void *data), void *data)
|
||||
{
|
||||
@@ -547,3 +551,4 @@ int cma_for_each_area(int (*it)(struct cma *cma, void *data), void *data)
|
||||
|
||||
return 0;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(cma_for_each_area);
|
|
@ -1,58 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Maennich <maennich@google.com>
|
||||
Date: Tue, 28 May 2019 12:38:16 +0100
|
||||
Subject: ANDROID: Initial abi_gki_aarch64 definition
|
||||
|
||||
abi_gki_aarch64.out contains the ABI definition corresponding to the
|
||||
current sources and the configuration referred to in
|
||||
build.config.gki.aarch64.
|
||||
|
||||
As part of the build.sh tooling it will be copied over into the
|
||||
distribution for further inspection / analysis. See
|
||||
https://android-review.googlesource.com/970737 for details on that
|
||||
process.
|
||||
|
||||
This is the initial version of this definition to allow implementation
|
||||
of workflows around it. It is not considered stable at this point. It is
|
||||
expected that it will break with significant changes from either
|
||||
upstream or with changes implemented specific for this tree. Automated
|
||||
validation is supposed to catch differences between this definition and
|
||||
the actual binary before they are introduced into the tree. At a later
|
||||
stage this validation should be part of build.sh itself.
|
||||
|
||||
Bug: 133501930
|
||||
Change-Id: I815940ee13037ad450547e0ab0786e37f0b83d9b
|
||||
Signed-off-by: Matthias Maennich <maennich@google.com>
|
||||
---
|
||||
build.config.gki.aarch64 | 24 +++++-------------------
|
||||
1 file changed, 5 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/build.config.gki.aarch64 b/build.config.gki.aarch64
|
||||
index 653e82bf1965..352a6382b06c 100644
|
||||
--- a/build.config.gki.aarch64
|
||||
+++ b/build.config.gki.aarch64
|
||||
@@ -1,19 +1,5 @@
|
||||
-ARCH=arm64
|
||||
-BRANCH=android-mainline
|
||||
-CLANG_TRIPLE=aarch64-linux-gnu-
|
||||
-CROSS_COMPILE=aarch64-linux-androidkernel-
|
||||
-CC=clang
|
||||
-DEFCONFIG=gki_defconfig
|
||||
-EXTRA_CMDS=''
|
||||
-KERNEL_DIR=common
|
||||
-POST_DEFCONFIG_CMDS="check_defconfig"
|
||||
-CLANG_PREBUILT_BIN=prebuilts-master/clang/host/linux-x86/clang-r353983c/bin
|
||||
-BUILDTOOLS_PREBUILT_BIN=build/build-tools/path/linux-x86
|
||||
-LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin
|
||||
-FILES="
|
||||
-arch/arm64/boot/Image.gz
|
||||
-vmlinux
|
||||
-System.map
|
||||
-"
|
||||
-STOP_SHIP_TRACEPRINTK=1
|
||||
-BUILD_INITRAMFS=1
|
||||
+. ${ROOT_DIR}/common/build.config.common
|
||||
+. ${ROOT_DIR}/common/build.config.aarch64
|
||||
+. ${ROOT_DIR}/common/build.config.gki
|
||||
+
|
||||
+ABI_DEFINITION=abi_gki_aarch64.xml
|
|
@ -1,61 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Greg Hackmann <ghackmann@google.com>
|
||||
Date: Tue, 25 Oct 2016 13:59:59 -0700
|
||||
Subject: ANDROID: Kbuild, LLVMLinux: allow overriding clang target triple
|
||||
|
||||
Android has an unusual setup where the kernel needs to target
|
||||
[arch]-linux-gnu to avoid Android userspace-specific flags and
|
||||
optimizations, but AOSP doesn't ship a matching binutils.
|
||||
|
||||
Add a new variable CLANG_TRIPLE which can override the "-target" triple
|
||||
used to compile the kernel, while using a different CROSS_COMPILE to
|
||||
pick the binutils/gcc installation. For Android you'd do something
|
||||
like:
|
||||
|
||||
export CLANG_TRIPLE=aarch64-linux-gnu-
|
||||
export CROSS_COMPILE=aarch64-linux-android-
|
||||
|
||||
If you don't need something like this, leave CLANG_TRIPLE unset and it
|
||||
will default to CROSS_COMPILE.
|
||||
|
||||
Change-Id: I85d63599c6ab8ed458071cdf9197d85b1f7f150b
|
||||
Signed-off-by: Greg Hackmann <ghackmann@google.com>
|
||||
[astrachan: Added a script to check for incorrectly falling back to the
|
||||
default when CLANG_TRIPLE is unset]
|
||||
Bug: 118439987
|
||||
Bug: 120440614
|
||||
Test: make CLANG_TRIPLE=x86_64-linux-gnu CC=clang
|
||||
Signed-off-by: Alistair Strachan <astrachan@google.com>
|
||||
---
|
||||
Makefile | 6 +++++-
|
||||
scripts/clang-android.sh | 4 ++++
|
||||
2 files changed, 9 insertions(+), 1 deletion(-)
|
||||
create mode 100644 scripts/clang-android.sh
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index ffd7a912fc46..dd248a6159ee 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -526,7 +526,11 @@ endif
|
||||
|
||||
ifneq ($(shell $(CC) --version 2>&1 | head -n 1 | grep clang),)
|
||||
ifneq ($(CROSS_COMPILE),)
|
||||
-CLANG_FLAGS += --target=$(notdir $(CROSS_COMPILE:%-=%))
|
||||
+CLANG_TRIPLE ?= $(CROSS_COMPILE)
|
||||
+CLANG_FLAGS += --target=$(notdir $(CLANG_TRIPLE:%-=%))
|
||||
+ifeq ($(shell $(srctree)/scripts/clang-android.sh $(CC) $(CLANG_FLAGS)), y)
|
||||
+$(error "Clang with Android --target detected. Did you specify CLANG_TRIPLE?")
|
||||
+endif
|
||||
GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)elfedit))
|
||||
CLANG_FLAGS += --prefix=$(GCC_TOOLCHAIN_DIR)
|
||||
GCC_TOOLCHAIN := $(realpath $(GCC_TOOLCHAIN_DIR)/..)
|
||||
diff --git a/scripts/clang-android.sh b/scripts/clang-android.sh
|
||||
new file mode 100644
|
||||
index 000000000000..9186c4f48576
|
||||
--- /dev/null
|
||||
+++ b/scripts/clang-android.sh
|
||||
@@ -0,0 +1,4 @@
|
||||
+#!/bin/sh
|
||||
+# SPDX-License-Identifier: GPL-2.0
|
||||
+
|
||||
+$* -dM -E - </dev/null 2>&1 | grep -q __ANDROID__ && echo "y"
|
|
@ -1,69 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: zhuguangqing <zhuguangqing@xiaomi.com>
|
||||
Date: Fri, 23 Aug 2019 09:04:06 +0800
|
||||
Subject: ANDROID: Log which device failed to suspend in dpm_suspend_start()
|
||||
|
||||
Problem background: In the process of suspend, maybe some device suspend
|
||||
callback failed in dpm_suspend_start()/dpm_prepare()/dpm_suspend().
|
||||
Because it's after suspend_console(), so printf() is disabled now.
|
||||
Currently we can see "Some devices failed to suspend, or early wake
|
||||
event detected" by log_suspend_abort_reason() in bugreport. There are
|
||||
many devices but we don't know which exactly device failed. So we
|
||||
want to do a little change to record which device failed.
|
||||
|
||||
Note: I checked upstream LTS kernel, then I found the
|
||||
patch can not be sent upstream, because it uses function
|
||||
log_suspend_abort_reason() in wakeup_reason.c, the initial
|
||||
patch(https://patchwork.kernel.org/patch/3827331/) for adding
|
||||
/kernel/power/wakeup_reason.c is not accepted by upstream which
|
||||
was merged in AOSP common kernels. So maybe the patch could
|
||||
only be sent to AOSP common kernels.
|
||||
|
||||
Test: manual - Use modified version for daily use two days, from
|
||||
bugreport we can see which device failed.
|
||||
Bug: 120445600
|
||||
Change-Id: I326c87ca1263496db79d08ec615f12fc22452d7a
|
||||
Signed-off-by: zhuguangqing <zhuguangqing@xiaomi.com>
|
||||
---
|
||||
drivers/base/power/main.c | 1 +
|
||||
kernel/power/suspend.c | 7 +++++--
|
||||
2 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
|
||||
index f545b4526172..40657d602be6 100644
|
||||
--- a/drivers/base/power/main.c
|
||||
+++ b/drivers/base/power/main.c
|
||||
@@ -1996,6 +1996,7 @@ int dpm_prepare(pm_message_t state)
|
||||
}
|
||||
pr_info("Device %s not prepared for power transition: code %d\n",
|
||||
dev_name(dev), error);
|
||||
+ dpm_save_failed_dev(dev_name(dev));
|
||||
put_device(dev);
|
||||
break;
|
||||
}
|
||||
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
|
||||
index de6b24bc0619..0bb1c1d8c979 100644
|
||||
--- a/kernel/power/suspend.c
|
||||
+++ b/kernel/power/suspend.c
|
||||
@@ -489,7 +489,7 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
|
||||
*/
|
||||
int suspend_devices_and_enter(suspend_state_t state)
|
||||
{
|
||||
- int error;
|
||||
+ int error, last_dev;
|
||||
bool wakeup = false;
|
||||
|
||||
if (!sleep_state_supported(state))
|
||||
@@ -508,8 +508,11 @@ int suspend_devices_and_enter(suspend_state_t state)
|
||||
suspend_test_start();
|
||||
error = dpm_suspend_start(PMSG_SUSPEND);
|
||||
if (error) {
|
||||
+ last_dev = suspend_stats.last_failed_dev + REC_FAILED_NUM - 1;
|
||||
+ last_dev %= REC_FAILED_NUM;
|
||||
pr_err("Some devices failed to suspend, or early wake event detected\n");
|
||||
- log_suspend_abort_reason("Some devices failed to suspend, or early wake event detected");
|
||||
+ log_suspend_abort_reason("%s device failed to suspend, or early wake event detected",
|
||||
+ suspend_stats.failed_devs[last_dev]);
|
||||
goto Recover_platform;
|
||||
}
|
||||
suspend_test_finish("suspend devices");
|
|
@ -1,28 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Strachan <astrachan@google.com>
|
||||
Date: Tue, 14 May 2019 16:07:58 -0700
|
||||
Subject: ANDROID: Move from clang r349610 to r353983c.
|
||||
|
||||
Bug: 120439617
|
||||
Bug: 132097678
|
||||
Test: make ARCH=arm64 cuttlefish_defconfig && make ARCH=arm64
|
||||
Test: make ARCH=x86_64 x86_64_cuttlefish_defconfig && make ARCH=x86_64
|
||||
Change-Id: If5542a39e36fb4de6dd4b4135a22e188f752dd84
|
||||
Signed-off-by: Alistair Strachan <astrachan@google.com>
|
||||
---
|
||||
build.config.gki.aarch64 | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/build.config.gki.aarch64 b/build.config.gki.aarch64
|
||||
index dec295284ffa..ecc2985e92cb 100644
|
||||
--- a/build.config.gki.aarch64
|
||||
+++ b/build.config.gki.aarch64
|
||||
@@ -7,7 +7,7 @@ DEFCONFIG=gki_defconfig
|
||||
EXTRA_CMDS=''
|
||||
KERNEL_DIR=common
|
||||
POST_DEFCONFIG_CMDS="check_defconfig"
|
||||
-CLANG_PREBUILT_BIN=prebuilts-master/clang/host/linux-x86/clang-r349610/bin
|
||||
+CLANG_PREBUILT_BIN=prebuilts-master/clang/host/linux-x86/clang-r353983c/bin
|
||||
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin
|
||||
FILES="
|
||||
arch/arm64/boot/Image.gz
|
|
@ -1,22 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Fri, 20 Sep 2019 15:28:37 -0700
|
||||
Subject: ANDROID: Remove CONFIG_USELIB from x86 gki config
|
||||
|
||||
Bug: 138199351
|
||||
Change-Id: Ib517ad710337a38602bf7f30ecf616d6d02ca8af
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
---
|
||||
arch/x86/configs/gki_defconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index bcd12981dff4..642729662b04 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -1,4 +1,5 @@
|
||||
CONFIG_LOCALVERSION="-mainline"
|
||||
+# CONFIG_USELIB is not set
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
|
@ -1,41 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Strachan <astrachan@google.com>
|
||||
Date: Wed, 24 Oct 2018 13:58:11 -0700
|
||||
Subject: ANDROID: Removed check for asm-goto
|
||||
|
||||
Cherry pick was manually applied due to conflicts with
|
||||
upstream commits: e9666d10a56 and 829fe4aa9ac
|
||||
--------
|
||||
Revert "x86: Force asm-goto"
|
||||
|
||||
This reverts commit e501ce957a786ecd076ea0cfb10b114e6e4d0f40.
|
||||
|
||||
This change broke building the x86_64 kernel with clang. The kernel
|
||||
still builds and works fine without asm-goto support. Revert this
|
||||
change to unblock testing clang kernels on cuttlefish.
|
||||
|
||||
Bug: 118142806
|
||||
Bug: 120440614
|
||||
Bug: 132629930
|
||||
Change-Id: Ib32498acc0596264f8cd15de0b603579dd643dd7
|
||||
Signed-off-by: Alistair Strachan <astrachan@google.com>
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
---
|
||||
arch/x86/Makefile | 4 ----
|
||||
1 file changed, 4 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/Makefile b/arch/x86/Makefile
|
||||
index 94df0868804b..408bb5532d1b 100644
|
||||
--- a/arch/x86/Makefile
|
||||
+++ b/arch/x86/Makefile
|
||||
@@ -298,10 +298,6 @@ vdso_install:
|
||||
|
||||
archprepare: checkbin
|
||||
checkbin:
|
||||
-ifndef CONFIG_CC_HAS_ASM_GOTO
|
||||
- @echo Compiler lacks asm-goto support.
|
||||
- @exit 1
|
||||
-endif
|
||||
ifdef CONFIG_RETPOLINE
|
||||
ifeq ($(RETPOLINE_CFLAGS),)
|
||||
@echo "You are building kernel with non-retpoline compiler." >&2
|
|
@ -1,55 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Wed, 12 Jun 2019 18:05:43 -0700
|
||||
Subject: ANDROID: Removed extraneous configs from gki
|
||||
|
||||
Removed SCSI_VIRTIO and VIRTIO_BALLOON
|
||||
|
||||
Test: Boot x86 cuttlefish and gki
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
Change-Id: I342ee9a9a2c715565ce5304f37d40575c234efd6
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 2 --
|
||||
arch/x86/configs/gki_defconfig | 2 --
|
||||
2 files changed, 4 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 9bc2782661dc..7eeafbecf1b9 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -196,7 +196,6 @@ CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_SCSI_UFSHCD=y
|
||||
CONFIG_SCSI_UFSHCD_PLATFORM=y
|
||||
-CONFIG_SCSI_VIRTIO=y
|
||||
CONFIG_MD=y
|
||||
CONFIG_BLK_DEV_DM=y
|
||||
CONFIG_DM_CRYPT=y
|
||||
@@ -327,7 +326,6 @@ CONFIG_RTC_DRV_PL030=y
|
||||
CONFIG_RTC_DRV_PL031=y
|
||||
CONFIG_VIRTIO_PCI=y
|
||||
# CONFIG_VIRTIO_PCI_LEGACY is not set
|
||||
-CONFIG_VIRTIO_BALLOON=y
|
||||
CONFIG_VIRTIO_INPUT=y
|
||||
CONFIG_VIRTIO_MMIO=y
|
||||
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 7f4edee2b52d..c0993920b94d 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -174,7 +174,6 @@ CONFIG_UID_SYS_STATS=y
|
||||
CONFIG_SCSI=y
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
-CONFIG_SCSI_VIRTIO=y
|
||||
CONFIG_MD=y
|
||||
CONFIG_BLK_DEV_DM=y
|
||||
CONFIG_DM_CRYPT=y
|
||||
@@ -282,7 +281,6 @@ CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
# CONFIG_RTC_SYSTOHC is not set
|
||||
CONFIG_VIRTIO_PCI=y
|
||||
-CONFIG_VIRTIO_BALLOON=y
|
||||
CONFIG_VIRTIO_INPUT=y
|
||||
CONFIG_VIRTIO_MMIO=y
|
||||
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
|
|
@ -1,44 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Sun, 15 Sep 2019 23:24:48 -0700
|
||||
Subject: ANDROID: Removed extraneous serial 8250 configs
|
||||
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
Test: Local Boot of cuttlefish with this kernel
|
||||
Bug: 132629930
|
||||
Change-Id: I12afb2b95105bfdbaa81cc51367664fa36a4f60c
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 4 ----
|
||||
arch/x86/configs/gki_defconfig | 4 ----
|
||||
2 files changed, 8 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index d650f7d141e7..ea9960028cfd 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -264,10 +264,6 @@ CONFIG_SERIAL_8250=y
|
||||
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
# CONFIG_SERIAL_8250_EXAR is not set
|
||||
-CONFIG_SERIAL_8250_NR_UARTS=48
|
||||
-CONFIG_SERIAL_8250_EXTENDED=y
|
||||
-CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
-CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=m
|
||||
CONFIG_SERIAL_AMBA_PL011=y
|
||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 511a763add37..a5953d43d480 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -237,10 +237,6 @@ CONFIG_INPUT_UINPUT=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
-CONFIG_SERIAL_8250_NR_UARTS=48
|
||||
-CONFIG_SERIAL_8250_EXTENDED=y
|
||||
-CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
-CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=m
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_VIRTIO=m
|
|
@ -1,25 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Sun, 4 Aug 2019 13:37:09 -0700
|
||||
Subject: ANDROID: Removed hardcoded kernel command line arguments
|
||||
|
||||
Test: Booted mainline on cuttlefish locally
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
Change-Id: I5a32dcc1bc4faaff08b032f4ff8350adf2bbb5c1
|
||||
---
|
||||
arch/x86/configs/gki_defconfig | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 4016f8be75c5..731cec5e1bc3 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -35,8 +35,6 @@ CONFIG_SLAB_FREELIST_RANDOM=y
|
||||
CONFIG_SLAB_FREELIST_HARDENED=y
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_SMP=y
|
||||
-CONFIG_CMDLINE_BOOL=y
|
||||
-CONFIG_CMDLINE="console=ttyS0 reboot=p"
|
||||
CONFIG_PM_WAKELOCKS=y
|
||||
CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||
# CONFIG_PM_WAKELOCKS_GC is not set
|
|
@ -1,33 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Fri, 9 Aug 2019 12:48:12 -0700
|
||||
Subject: ANDROID: Removed unnecessary modules from cuttlefish.
|
||||
|
||||
Modules do not succesfuly load on cuttlefish and are not needed for gki.
|
||||
|
||||
Bug: 132629930
|
||||
Test: Treehugger + Launch local KO Ramdisk
|
||||
Signed-of-by: Ram Muthiah <rammuthiah@google.com>
|
||||
Change-Id: I07b6c140e4c474d66132a4fb5630d18933b69e81
|
||||
---
|
||||
arch/x86/configs/gki_defconfig | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 731cec5e1bc3..2d5f55d7b966 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -242,11 +242,13 @@ CONFIG_HW_RANDOM_VIRTIO=y
|
||||
CONFIG_GPIOLIB=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_DEVFREQ_THERMAL=y
|
||||
+# CONFIG_X86_PKG_TEMP_THERMAL is not set
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_MEDIA_CAMERA_SUPPORT=y
|
||||
CONFIG_DRM=y
|
||||
# CONFIG_DRM_FBDEV_EMULATION is not set
|
||||
CONFIG_DRM_VIRTIO_GPU=y
|
||||
+# CONFIG_LCD_CLASS_DEVICE is not set
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
CONFIG_SOUND=y
|
||||
CONFIG_SND=y
|
|
@ -1,65 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Delva <adelva@google.com>
|
||||
Date: Wed, 9 Oct 2019 15:25:35 -0400
|
||||
Subject: ANDROID: Revert "kheaders: make headers archive reproducible"
|
||||
|
||||
This reverts commit 86cdd2fdc4e39c388d39c7ba2396d1a9dfd66226.
|
||||
|
||||
Reason: Broke "make allmodconfig" on Android build machines
|
||||
|
||||
$ tar: unrecognized option '--sort=name'
|
||||
Try 'tar --help' or 'tar --usage' for more information.
|
||||
|
||||
Signed-off-by: Alistair Delva <adelva@google.com>
|
||||
Change-Id: I3d406988f23201e5ab824ca7aed215ccc9d43279
|
||||
---
|
||||
Documentation/kbuild/reproducible-builds.rst | 13 ++++---------
|
||||
kernel/gen_kheaders.sh | 5 +----
|
||||
2 files changed, 5 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/Documentation/kbuild/reproducible-builds.rst b/Documentation/kbuild/reproducible-builds.rst
|
||||
index 503393854e2e..ab92e98c89c8 100644
|
||||
--- a/Documentation/kbuild/reproducible-builds.rst
|
||||
+++ b/Documentation/kbuild/reproducible-builds.rst
|
||||
@@ -16,21 +16,16 @@ the kernel may be unreproducible, and how to avoid them.
|
||||
Timestamps
|
||||
----------
|
||||
|
||||
-The kernel embeds timestamps in three places:
|
||||
+The kernel embeds a timestamp in two places:
|
||||
|
||||
* The version string exposed by ``uname()`` and included in
|
||||
``/proc/version``
|
||||
|
||||
* File timestamps in the embedded initramfs
|
||||
|
||||
-* If enabled via ``CONFIG_IKHEADERS``, file timestamps of kernel
|
||||
- headers embedded in the kernel or respective module,
|
||||
- exposed via ``/sys/kernel/kheaders.tar.xz``
|
||||
-
|
||||
-By default the timestamp is the current time and in the case of
|
||||
-``kheaders`` the various files' modification times. This must
|
||||
-be overridden using the `KBUILD_BUILD_TIMESTAMP`_ variable.
|
||||
-If you are building from a git commit, you could use its commit date.
|
||||
+By default the timestamp is the current time. This must be overridden
|
||||
+using the `KBUILD_BUILD_TIMESTAMP`_ variable. If you are building
|
||||
+from a git commit, you could use its commit date.
|
||||
|
||||
The kernel does *not* use the ``__DATE__`` and ``__TIME__`` macros,
|
||||
and enables warnings if they are used. If you incorporate external
|
||||
diff --git a/kernel/gen_kheaders.sh b/kernel/gen_kheaders.sh
|
||||
index aff79e461fc9..9ff449888d9c 100755
|
||||
--- a/kernel/gen_kheaders.sh
|
||||
+++ b/kernel/gen_kheaders.sh
|
||||
@@ -71,10 +71,7 @@ done | cpio --quiet -pd $cpio_dir >/dev/null 2>&1
|
||||
find $cpio_dir -type f -print0 |
|
||||
xargs -0 -P8 -n1 perl -pi -e 'BEGIN {undef $/;}; s/\/\*((?!SPDX).)*?\*\///smg;'
|
||||
|
||||
-# Create archive and try to normalize metadata for reproducibility
|
||||
-tar "${KBUILD_BUILD_TIMESTAMP:+--mtime=$KBUILD_BUILD_TIMESTAMP}" \
|
||||
- --owner=0 --group=0 --sort=name --numeric-owner \
|
||||
- -Jcf $tarfile -C $cpio_dir/ . > /dev/null
|
||||
+tar -Jcf $tarfile -C $cpio_dir/ . > /dev/null
|
||||
|
||||
echo "$src_files_md5" > kernel/kheaders.md5
|
||||
echo "$obj_files_md5" >> kernel/kheaders.md5
|
|
@ -1,29 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Delva <adelva@google.com>
|
||||
Date: Thu, 22 Aug 2019 16:53:19 -0700
|
||||
Subject: ANDROID: Revert "um: irq: don't set the chip for all irqs"
|
||||
|
||||
This reverts commit 1987b1b8f9f17a06255877e7917d0bb5b5377774.
|
||||
|
||||
Reason: Broke UML used by kernel_tests
|
||||
|
||||
Bug: 139897923
|
||||
Change-Id: If3541721fdca7cf6d77410309ae5b503b5a848d0
|
||||
Signed-off-by: Alistair Delva <adelva@google.com>
|
||||
---
|
||||
arch/um/kernel/irq.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c
|
||||
index 3577118bb4a5..9410424af710 100644
|
||||
--- a/arch/um/kernel/irq.c
|
||||
+++ b/arch/um/kernel/irq.c
|
||||
@@ -480,7 +480,7 @@ void __init init_IRQ(void)
|
||||
irq_set_chip_and_handler(TIMER_IRQ, &SIGVTALRM_irq_type, handle_edge_irq);
|
||||
|
||||
|
||||
- for (i = 1; i <= LAST_IRQ; i++)
|
||||
+ for (i = 1; i < NR_IRQS; i++)
|
||||
irq_set_chip_and_handler(i, &normal_irq_type, handle_edge_irq);
|
||||
/* Initialize EPOLL Loop */
|
||||
os_setup_epoll();
|
|
@ -1,107 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Delva <adelva@google.com>
|
||||
Date: Thu, 22 Aug 2019 16:53:55 -0700
|
||||
Subject: ANDROID: Revert "um: remove uses of variable length arrays"
|
||||
|
||||
This reverts commit 0d4e5ac7e78035950d564e65c38ce148cb9af681.
|
||||
|
||||
Reason: Broke UML used by kernel_tests
|
||||
|
||||
Bug: 139897923
|
||||
Change-Id: Ibf57c1f535e60caaef32dd14c4abbe253d8e185d
|
||||
Signed-off-by: Alistair Delva <adelva@google.com>
|
||||
---
|
||||
arch/um/os-Linux/umid.c | 36 +++++++++---------------------------
|
||||
1 file changed, 9 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/arch/um/os-Linux/umid.c b/arch/um/os-Linux/umid.c
|
||||
index 44def53a11cd..4c19df8d2e80 100644
|
||||
--- a/arch/um/os-Linux/umid.c
|
||||
+++ b/arch/um/os-Linux/umid.c
|
||||
@@ -135,18 +135,12 @@ static int remove_files_and_dir(char *dir)
|
||||
*/
|
||||
static inline int is_umdir_used(char *dir)
|
||||
{
|
||||
- char pid[sizeof("nnnnn\0")], *end, *file;
|
||||
+ char file[strlen(uml_dir) + UMID_LEN + sizeof("/pid\0")];
|
||||
+ char pid[sizeof("nnnnn\0")], *end;
|
||||
int dead, fd, p, n, err;
|
||||
- size_t filelen;
|
||||
|
||||
- err = asprintf(&file, "%s/pid", dir);
|
||||
- if (err < 0)
|
||||
- return 0;
|
||||
-
|
||||
- filelen = strlen(file);
|
||||
-
|
||||
- n = snprintf(file, filelen, "%s/pid", dir);
|
||||
- if (n >= filelen) {
|
||||
+ n = snprintf(file, sizeof(file), "%s/pid", dir);
|
||||
+ if (n >= sizeof(file)) {
|
||||
printk(UM_KERN_ERR "is_umdir_used - pid filename too long\n");
|
||||
err = -E2BIG;
|
||||
goto out;
|
||||
@@ -191,7 +185,6 @@ static inline int is_umdir_used(char *dir)
|
||||
out_close:
|
||||
close(fd);
|
||||
out:
|
||||
- free(file);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -217,21 +210,18 @@ static int umdir_take_if_dead(char *dir)
|
||||
|
||||
static void __init create_pid_file(void)
|
||||
{
|
||||
- char pid[sizeof("nnnnn\0")], *file;
|
||||
+ char file[strlen(uml_dir) + UMID_LEN + sizeof("/pid\0")];
|
||||
+ char pid[sizeof("nnnnn\0")];
|
||||
int fd, n;
|
||||
|
||||
- file = malloc(strlen(uml_dir) + UMID_LEN + sizeof("/pid\0"));
|
||||
- if (!file)
|
||||
- return;
|
||||
-
|
||||
if (umid_file_name("pid", file, sizeof(file)))
|
||||
- goto out;
|
||||
+ return;
|
||||
|
||||
fd = open(file, O_RDWR | O_CREAT | O_EXCL, 0644);
|
||||
if (fd < 0) {
|
||||
printk(UM_KERN_ERR "Open of machine pid file \"%s\" failed: "
|
||||
"%s\n", file, strerror(errno));
|
||||
- goto out;
|
||||
+ return;
|
||||
}
|
||||
|
||||
snprintf(pid, sizeof(pid), "%d\n", getpid());
|
||||
@@ -241,8 +231,6 @@ static void __init create_pid_file(void)
|
||||
errno);
|
||||
|
||||
close(fd);
|
||||
-out:
|
||||
- free(file);
|
||||
}
|
||||
|
||||
int __init set_umid(char *name)
|
||||
@@ -397,19 +385,13 @@ __uml_setup("uml_dir=", set_uml_dir,
|
||||
|
||||
static void remove_umid_dir(void)
|
||||
{
|
||||
- char *dir, err;
|
||||
-
|
||||
- dir = malloc(strlen(uml_dir) + UMID_LEN + 1);
|
||||
- if (!dir)
|
||||
- return;
|
||||
+ char dir[strlen(uml_dir) + UMID_LEN + 1], err;
|
||||
|
||||
sprintf(dir, "%s%s", uml_dir, umid);
|
||||
err = remove_files_and_dir(dir);
|
||||
if (err)
|
||||
os_warn("%s - remove_files_and_dir failed with err = %d\n",
|
||||
__func__, err);
|
||||
-
|
||||
- free(dir);
|
||||
}
|
||||
|
||||
__uml_exitcall(remove_umid_dir);
|
|
@ -1,76 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Greg Kroah-Hartman <gregkh@google.com>
|
||||
Date: Tue, 23 Jul 2019 14:52:18 +0200
|
||||
Subject: ANDROID: Revert "x86/mm: Identify the end of the kernel area to be
|
||||
reserved"
|
||||
|
||||
This reverts commit c603a309cc75f3dd018ddb20ee44c05047918cbf.
|
||||
|
||||
It breaks the build with clang.
|
||||
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
|
||||
Change-Id: I2e50915dacfa823c80067f38dc43ef368c24bd2e
|
||||
---
|
||||
arch/x86/include/asm/sections.h | 2 --
|
||||
arch/x86/kernel/setup.c | 8 +-------
|
||||
arch/x86/kernel/vmlinux.lds.S | 9 +--------
|
||||
3 files changed, 2 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/include/asm/sections.h b/arch/x86/include/asm/sections.h
|
||||
index 71b32f2570ab..8ea1cfdbeabc 100644
|
||||
--- a/arch/x86/include/asm/sections.h
|
||||
+++ b/arch/x86/include/asm/sections.h
|
||||
@@ -13,6 +13,4 @@ extern char __end_rodata_aligned[];
|
||||
extern char __end_rodata_hpage_align[];
|
||||
#endif
|
||||
|
||||
-extern char __end_of_kernel_reserve[];
|
||||
-
|
||||
#endif /* _ASM_X86_SECTIONS_H */
|
||||
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
|
||||
index 77ea96b794bd..f007d910a6e6 100644
|
||||
--- a/arch/x86/kernel/setup.c
|
||||
+++ b/arch/x86/kernel/setup.c
|
||||
@@ -836,14 +836,8 @@ dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p)
|
||||
|
||||
void __init setup_arch(char **cmdline_p)
|
||||
{
|
||||
- /*
|
||||
- * Reserve the memory occupied by the kernel between _text and
|
||||
- * __end_of_kernel_reserve symbols. Any kernel sections after the
|
||||
- * __end_of_kernel_reserve symbol must be explicitly reserved with a
|
||||
- * separate memblock_reserve() or they will be discarded.
|
||||
- */
|
||||
memblock_reserve(__pa_symbol(_text),
|
||||
- (unsigned long)__end_of_kernel_reserve - (unsigned long)_text);
|
||||
+ (unsigned long)__bss_stop - (unsigned long)_text);
|
||||
|
||||
/*
|
||||
* Make sure page 0 is always reserved because on systems with
|
||||
diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
|
||||
index e2feacf921a0..4f062d33ef73 100644
|
||||
--- a/arch/x86/kernel/vmlinux.lds.S
|
||||
+++ b/arch/x86/kernel/vmlinux.lds.S
|
||||
@@ -368,14 +368,6 @@ SECTIONS
|
||||
__bss_stop = .;
|
||||
}
|
||||
|
||||
- /*
|
||||
- * The memory occupied from _text to here, __end_of_kernel_reserve, is
|
||||
- * automatically reserved in setup_arch(). Anything after here must be
|
||||
- * explicitly reserved using memblock_reserve() or it will be discarded
|
||||
- * and treated as available memory.
|
||||
- */
|
||||
- __end_of_kernel_reserve = .;
|
||||
-
|
||||
. = ALIGN(PAGE_SIZE);
|
||||
.brk : AT(ADDR(.brk) - LOAD_OFFSET) {
|
||||
__brk_base = .;
|
||||
@@ -415,6 +407,7 @@ SECTIONS
|
||||
STABS_DEBUG
|
||||
DWARF_DEBUG
|
||||
|
||||
+ /* Sections to be discarded */
|
||||
DISCARDS
|
||||
/DISCARD/ : {
|
||||
*(.eh_frame)
|
|
@ -1,178 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Rik van Riel <riel@redhat.com>
|
||||
Date: Thu, 1 Sep 2011 15:26:50 -0400
|
||||
Subject: ANDROID: add extra free kbytes tunable
|
||||
|
||||
Add a userspace visible knob to tell the VM to keep an extra amount
|
||||
of memory free, by increasing the gap between each zone's min and
|
||||
low watermarks.
|
||||
|
||||
This is useful for realtime applications that call system
|
||||
calls and have a bound on the number of allocations that happen
|
||||
in any short time period. In this application, extra_free_kbytes
|
||||
would be left at an amount equal to or larger than than the
|
||||
maximum number of allocations that happen in any burst.
|
||||
|
||||
It may also be useful to reduce the memory use of virtual
|
||||
machines (temporarily?), in a way that does not cause memory
|
||||
fragmentation like ballooning does.
|
||||
|
||||
[ccross]
|
||||
Revived for use on old kernels where no other solution exists.
|
||||
The tunable will be removed on kernels that do better at avoiding
|
||||
direct reclaim.
|
||||
|
||||
[surenb]
|
||||
Will be reverted as soon as Android framework is reworked to
|
||||
use upstream-supported watermark_scale_factor instead of
|
||||
extra_free_kbytes.
|
||||
|
||||
Bug: 86445363
|
||||
Bug: 109664768
|
||||
Bug: 120445732
|
||||
Change-Id: I765a42be8e964bfd3e2886d1ca85a29d60c3bb3e
|
||||
Signed-off-by: Rik van Riel <riel@redhat.com>
|
||||
Signed-off-by: Colin Cross <ccross@android.com>
|
||||
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
|
||||
---
|
||||
Documentation/admin-guide/sysctl/vm.rst | 16 ++++++++++++++++
|
||||
kernel/sysctl.c | 9 +++++++++
|
||||
mm/page_alloc.c | 25 +++++++++++++++++++++----
|
||||
3 files changed, 46 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/Documentation/admin-guide/sysctl/vm.rst b/Documentation/admin-guide/sysctl/vm.rst
|
||||
index 64aeee1009ca..9e8470008227 100644
|
||||
--- a/Documentation/admin-guide/sysctl/vm.rst
|
||||
+++ b/Documentation/admin-guide/sysctl/vm.rst
|
||||
@@ -37,6 +37,7 @@ Currently, these files are in /proc/sys/vm:
|
||||
- dirty_writeback_centisecs
|
||||
- drop_caches
|
||||
- extfrag_threshold
|
||||
+- extra_free_kbytes
|
||||
- hugetlb_shm_group
|
||||
- laptop_mode
|
||||
- legacy_va_layout
|
||||
@@ -287,6 +288,21 @@ only use the low memory and they can fill it up with dirty data without
|
||||
any throttling.
|
||||
|
||||
|
||||
+extra_free_kbytes
|
||||
+
|
||||
+This parameter tells the VM to keep extra free memory between the threshold
|
||||
+where background reclaim (kswapd) kicks in, and the threshold where direct
|
||||
+reclaim (by allocating processes) kicks in.
|
||||
+
|
||||
+This is useful for workloads that require low latency memory allocations
|
||||
+and have a bounded burstiness in memory allocations, for example a
|
||||
+realtime application that receives and transmits network traffic
|
||||
+(causing in-kernel memory allocations) with a maximum total message burst
|
||||
+size of 200MB may need 200MB of extra free memory to avoid direct reclaim
|
||||
+related latencies.
|
||||
+
|
||||
+==============================================================
|
||||
+
|
||||
hugetlb_shm_group
|
||||
=================
|
||||
|
||||
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
|
||||
index 00fcea236eba..570cf6083712 100644
|
||||
--- a/kernel/sysctl.c
|
||||
+++ b/kernel/sysctl.c
|
||||
@@ -111,6 +111,7 @@ extern char core_pattern[];
|
||||
extern unsigned int core_pipe_limit;
|
||||
#endif
|
||||
extern int pid_max;
|
||||
+extern int extra_free_kbytes;
|
||||
extern int pid_max_min, pid_max_max;
|
||||
extern int percpu_pagelist_fraction;
|
||||
extern int latencytop_enabled;
|
||||
@@ -1524,6 +1525,14 @@ static struct ctl_table vm_table[] = {
|
||||
.extra1 = SYSCTL_ONE,
|
||||
.extra2 = &one_thousand,
|
||||
},
|
||||
+ {
|
||||
+ .procname = "extra_free_kbytes",
|
||||
+ .data = &extra_free_kbytes,
|
||||
+ .maxlen = sizeof(extra_free_kbytes),
|
||||
+ .mode = 0644,
|
||||
+ .proc_handler = min_free_kbytes_sysctl_handler,
|
||||
+ .extra1 = SYSCTL_ZERO,
|
||||
+ },
|
||||
{
|
||||
.procname = "percpu_pagelist_fraction",
|
||||
.data = &percpu_pagelist_fraction,
|
||||
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
|
||||
index c0b2e0306720..ca7e48d00f3f 100644
|
||||
--- a/mm/page_alloc.c
|
||||
+++ b/mm/page_alloc.c
|
||||
@@ -313,6 +313,11 @@ compound_page_dtor * const compound_page_dtors[] = {
|
||||
#endif
|
||||
};
|
||||
|
||||
+/*
|
||||
+ * Try to keep at least this much lowmem free. Do not allow normal
|
||||
+ * allocations below this point, only high priority ones. Automatically
|
||||
+ * tuned according to the amount of memory in the system.
|
||||
+ */
|
||||
int min_free_kbytes = 1024;
|
||||
int user_min_free_kbytes = -1;
|
||||
#ifdef CONFIG_DISCONTIGMEM
|
||||
@@ -331,6 +336,13 @@ int watermark_boost_factor __read_mostly = 15000;
|
||||
#endif
|
||||
int watermark_scale_factor = 10;
|
||||
|
||||
+/*
|
||||
+ * Extra memory for the system to try freeing. Used to temporarily
|
||||
+ * free memory, to make space for new workloads. Anyone can allocate
|
||||
+ * down to the min watermarks controlled by min_free_kbytes above.
|
||||
+ */
|
||||
+int extra_free_kbytes = 0;
|
||||
+
|
||||
static unsigned long nr_kernel_pages __initdata;
|
||||
static unsigned long nr_all_pages __initdata;
|
||||
static unsigned long dma_reserve __initdata;
|
||||
@@ -7731,6 +7743,7 @@ static void setup_per_zone_lowmem_reserve(void)
|
||||
static void __setup_per_zone_wmarks(void)
|
||||
{
|
||||
unsigned long pages_min = min_free_kbytes >> (PAGE_SHIFT - 10);
|
||||
+ unsigned long pages_low = extra_free_kbytes >> (PAGE_SHIFT - 10);
|
||||
unsigned long lowmem_pages = 0;
|
||||
struct zone *zone;
|
||||
unsigned long flags;
|
||||
@@ -7742,11 +7755,13 @@ static void __setup_per_zone_wmarks(void)
|
||||
}
|
||||
|
||||
for_each_zone(zone) {
|
||||
- u64 tmp;
|
||||
+ u64 tmp, low;
|
||||
|
||||
spin_lock_irqsave(&zone->lock, flags);
|
||||
tmp = (u64)pages_min * zone_managed_pages(zone);
|
||||
do_div(tmp, lowmem_pages);
|
||||
+ low = (u64)pages_low * zone_managed_pages(zone);
|
||||
+ do_div(low, vm_total_pages);
|
||||
if (is_highmem(zone)) {
|
||||
/*
|
||||
* __GFP_HIGH and PF_MEMALLOC allocations usually don't
|
||||
@@ -7779,8 +7794,10 @@ static void __setup_per_zone_wmarks(void)
|
||||
mult_frac(zone_managed_pages(zone),
|
||||
watermark_scale_factor, 10000));
|
||||
|
||||
- zone->_watermark[WMARK_LOW] = min_wmark_pages(zone) + tmp;
|
||||
- zone->_watermark[WMARK_HIGH] = min_wmark_pages(zone) + tmp * 2;
|
||||
+ zone->_watermark[WMARK_LOW] = min_wmark_pages(zone) +
|
||||
+ low + tmp;
|
||||
+ zone->_watermark[WMARK_HIGH] = min_wmark_pages(zone) +
|
||||
+ low + tmp * 2;
|
||||
zone->watermark_boost = 0;
|
||||
|
||||
spin_unlock_irqrestore(&zone->lock, flags);
|
||||
@@ -7864,7 +7881,7 @@ core_initcall(init_per_zone_wmark_min)
|
||||
/*
|
||||
* min_free_kbytes_sysctl_handler - just a wrapper around proc_dointvec() so
|
||||
* that we can call two helper functions whenever min_free_kbytes
|
||||
- * changes.
|
||||
+ * or extra_free_kbytes changes.
|
||||
*/
|
||||
int min_free_kbytes_sysctl_handler(struct ctl_table *table, int write,
|
||||
void __user *buffer, size_t *length, loff_t *ppos)
|
|
@ -1,49 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Wed, 22 May 2019 20:11:24 -0700
|
||||
Subject: ANDROID: added configs so that GKI boots on x86 cuttlefish
|
||||
|
||||
Bug: 132629930
|
||||
Test: built and ran gki on cuttlefish locally
|
||||
Change-Id: I2cbfef4fd97888edaa5b6413a2459160c7117bd5
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
---
|
||||
arch/x86/configs/gki_defconfig | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 18ba312d0a60..cdaba53b7bb0 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -38,6 +38,7 @@ CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_TIMES=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
+CONFIG_IA32_EMULATION=y
|
||||
CONFIG_KPROBES=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
@@ -156,6 +157,7 @@ CONFIG_CFG80211=y
|
||||
CONFIG_MAC80211=y
|
||||
# CONFIG_MAC80211_RC_MINSTREL is not set
|
||||
CONFIG_RFKILL=y
|
||||
+CONFIG_PCI=y
|
||||
# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||
CONFIG_DEBUG_DEVRES=y
|
||||
CONFIG_ZRAM=y
|
||||
@@ -274,6 +276,7 @@ CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
# CONFIG_RTC_SYSTOHC is not set
|
||||
+CONFIG_VIRTIO_PCI=y
|
||||
CONFIG_VIRTIO_BALLOON=y
|
||||
CONFIG_VIRTIO_INPUT=y
|
||||
CONFIG_VIRTIO_MMIO=y
|
||||
@@ -289,6 +292,7 @@ CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
CONFIG_F2FS_FS=y
|
||||
CONFIG_F2FS_FS_SECURITY=y
|
||||
+CONFIG_FS_ENCRYPTION=y
|
||||
# CONFIG_DNOTIFY is not set
|
||||
CONFIG_QUOTA=y
|
||||
CONFIG_QFMT_V2=y
|
|
@ -1,37 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Wed, 3 Jul 2019 14:31:23 -0700
|
||||
Subject: ANDROID: adding usb HCD dummy config to permit usb write ops on init
|
||||
|
||||
Bug: 136021903
|
||||
Change-Id: I45ae272fd7243e290f0701a7f29722788ce0cd5a
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 1 +
|
||||
arch/x86/configs/gki_defconfig | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index ec0566116066..7c66f40c9739 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -314,6 +314,7 @@ CONFIG_HID_MULTITOUCH=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_GADGET=y
|
||||
+CONFIG_USB_DUMMY_HCD=y
|
||||
CONFIG_USB_CONFIGFS=y
|
||||
CONFIG_USB_CONFIGFS_UEVENT=y
|
||||
CONFIG_USB_CONFIGFS_F_FS=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index c0993920b94d..65c67797fb74 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -267,6 +267,7 @@ CONFIG_HID_MULTITOUCH=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_GADGET=y
|
||||
+CONFIG_USB_DUMMY_HCD=y
|
||||
CONFIG_USB_CONFIGFS=y
|
||||
CONFIG_USB_CONFIGFS_UEVENT=y
|
||||
CONFIG_USB_CONFIGFS_F_FS=y
|
|
@ -1,33 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Quentin Perret <qperret@google.com>
|
||||
Date: Mon, 30 Sep 2019 16:23:52 +0100
|
||||
Subject: ANDROID: allmodconfig: Force gki_defconfig as base
|
||||
|
||||
Allmodconfig enables as many options as it can to maximize the number of
|
||||
modules it can build. While this is generally a good idea, this can also
|
||||
lead to very convoluted configurations (such as CPU_BIG_ENDIAN=y on
|
||||
arm64) which we don't necessarily want to support even if they break. On
|
||||
the other hand, gki_defconfig already contains the set of core options
|
||||
we definitely want to support, so it makes sense to use that as a base.
|
||||
|
||||
Point KCONFIG_ALLMODCONFIG to the relevant gki_defconfig file in order
|
||||
to ensure a minimally sensible config that allconfig is not allowed to
|
||||
modify.
|
||||
|
||||
Bug: 140224784
|
||||
Signed-off-by: Quentin Perret <qperret@google.com>
|
||||
Change-Id: Ib4cf3c9565f040a577ce3cec008293520be1af84
|
||||
---
|
||||
build.config.allmodconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/build.config.allmodconfig b/build.config.allmodconfig
|
||||
index 43b1a70d5800..6e0404b8de47 100644
|
||||
--- a/build.config.allmodconfig
|
||||
+++ b/build.config.allmodconfig
|
||||
@@ -1,4 +1,5 @@
|
||||
DEFCONFIG=allmodconfig
|
||||
+KCONFIG_ALLCONFIG=${ROOT_DIR}/common/arch/${ARCH%_*}/configs/gki_defconfig
|
||||
|
||||
# XFS_FS is currently broken on this branch with clang-9
|
||||
POST_DEFCONFIG_CMDS="update_config"
|
|
@ -1,30 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Dietmar Eggemann <dietmar.eggemann@arm.com>
|
||||
Date: Thu, 10 May 2018 16:58:04 +0100
|
||||
Subject: ANDROID: arm: enable max frequency capping
|
||||
|
||||
Defines arch_scale_max_freq_capacity() to use the topology driver
|
||||
scale function.
|
||||
|
||||
Signed-off-by: Ionela Voinescu <ionela.voinescu@arm.com>
|
||||
Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
|
||||
Signed-off-by: Quentin Perret <quentin.perret@arm.com>
|
||||
Change-Id: I79f444399ea3b2948364fde80ccee52a9ece5b9a
|
||||
---
|
||||
arch/arm/include/asm/topology.h | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/include/asm/topology.h b/arch/arm/include/asm/topology.h
|
||||
index 8a0fae94d45e..a2edacb56459 100644
|
||||
--- a/arch/arm/include/asm/topology.h
|
||||
+++ b/arch/arm/include/asm/topology.h
|
||||
@@ -10,6 +10,9 @@
|
||||
/* Replace task scheduler's default frequency-invariant accounting */
|
||||
#define arch_scale_freq_capacity topology_get_freq_scale
|
||||
|
||||
+/* Replace task scheduler's default max-frequency-invariant accounting */
|
||||
+#define arch_scale_max_freq_capacity topology_get_max_freq_scale
|
||||
+
|
||||
/* Replace task scheduler's default cpu-invariant accounting */
|
||||
#define arch_scale_cpu_capacity topology_get_cpu_scale
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Cross <ccross@android.com>
|
||||
Date: Wed, 2 Apr 2014 18:02:15 -0700
|
||||
Subject: ANDROID: arm64: copy CONFIG_CMDLINE_EXTEND from ARM
|
||||
|
||||
Copy the config choice for CONFIG_CMDLINE_EXTEND from
|
||||
arch/arm/Kconfig, including CONFIG_CMDLINE_FROM_BOOTLOADER
|
||||
as the default. These will be used by drivers/of/fdt.c.
|
||||
|
||||
Bug: 120440972
|
||||
Change-Id: I8416038498ddf8fc1e99ab06109825eb1492aa7f
|
||||
Signed-off-by: Colin Cross <ccross@android.com>
|
||||
---
|
||||
arch/arm64/Kconfig | 18 ++++++++++++++++++
|
||||
1 file changed, 18 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
|
||||
index 950a56b71ff0..acf1c5999153 100644
|
||||
--- a/arch/arm64/Kconfig
|
||||
+++ b/arch/arm64/Kconfig
|
||||
@@ -1578,6 +1578,23 @@ config CMDLINE
|
||||
entering them here. As a minimum, you should specify the the
|
||||
root device (e.g. root=/dev/nfs).
|
||||
|
||||
+choice
|
||||
+ prompt "Kernel command line type" if CMDLINE != ""
|
||||
+ default CMDLINE_FROM_BOOTLOADER
|
||||
+
|
||||
+config CMDLINE_FROM_BOOTLOADER
|
||||
+ bool "Use bootloader kernel arguments if available"
|
||||
+ help
|
||||
+ Uses the command-line options passed by the boot loader. If
|
||||
+ the boot loader doesn't provide any, the default kernel command
|
||||
+ string provided in CMDLINE will be used.
|
||||
+
|
||||
+config CMDLINE_EXTEND
|
||||
+ bool "Extend bootloader kernel arguments"
|
||||
+ help
|
||||
+ The command-line arguments provided by the boot loader will be
|
||||
+ appended to the default kernel command string.
|
||||
+
|
||||
config CMDLINE_FORCE
|
||||
bool "Always use the default kernel command string"
|
||||
help
|
||||
@@ -1585,6 +1602,7 @@ config CMDLINE_FORCE
|
||||
loader passes other arguments to the kernel.
|
||||
This is useful if you cannot or don't want to change the
|
||||
command-line options your boot loader passes to the kernel.
|
||||
+endchoice
|
||||
|
||||
config EFI_STUB
|
||||
bool
|
|
@ -1,44 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Quentin Perret <quentin.perret@arm.com>
|
||||
Date: Wed, 3 Jul 2019 10:48:14 +0100
|
||||
Subject: ANDROID: arm64: defconfig: Enable EAS by default
|
||||
|
||||
Use schedutil as default cpufreq governor so EAS can start. Also, enable
|
||||
util-clamp to enable frequency selection biasing.
|
||||
|
||||
Change-Id: Iec9098f27c0353dabc23bd98efbca6479de41796
|
||||
Signed-off-by: Quentin Perret <quentin.perret@arm.com>
|
||||
---
|
||||
arch/arm64/configs/defconfig | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
|
||||
index c9a867ac32d4..7456909a8a64 100644
|
||||
--- a/arch/arm64/configs/defconfig
|
||||
+++ b/arch/arm64/configs/defconfig
|
||||
@@ -13,10 +13,12 @@ CONFIG_TASK_XACCT=y
|
||||
CONFIG_TASK_IO_ACCOUNTING=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
+CONFIG_UCLAMP_TASK=y
|
||||
CONFIG_NUMA_BALANCING=y
|
||||
CONFIG_MEMCG=y
|
||||
CONFIG_MEMCG_SWAP=y
|
||||
CONFIG_BLK_CGROUP=y
|
||||
+CONFIG_UCLAMP_TASK_GROUP=y
|
||||
CONFIG_CGROUP_PIDS=y
|
||||
CONFIG_CGROUP_HUGETLB=y
|
||||
CONFIG_CPUSETS=y
|
||||
@@ -71,10 +73,12 @@ CONFIG_COMPAT=y
|
||||
CONFIG_RANDOMIZE_BASE=y
|
||||
CONFIG_HIBERNATION=y
|
||||
CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
|
||||
+CONFIG_ENERGY_MODEL=y
|
||||
CONFIG_ARM_CPUIDLE=y
|
||||
CONFIG_ARM_PSCI_CPUIDLE=y
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
+CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
|
@ -1,30 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Dietmar Eggemann <dietmar.eggemann@arm.com>
|
||||
Date: Thu, 10 May 2018 16:54:16 +0100
|
||||
Subject: ANDROID: arm64: enable max frequency capping
|
||||
|
||||
Defines arch_scale_max_freq_capacity() to use the topology driver
|
||||
scale function.
|
||||
|
||||
Change-Id: If7565747ec862e42ac55196240522ef8d22ca67d
|
||||
Signed-off-by: Ionela Voinescu <ionela.voinescu@arm.com>
|
||||
Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
|
||||
Signed-off-by: Quentin Perret <quentin.perret@arm.com>
|
||||
---
|
||||
arch/arm64/include/asm/topology.h | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/include/asm/topology.h b/arch/arm64/include/asm/topology.h
|
||||
index a4d945db95a2..70697177d6ec 100644
|
||||
--- a/arch/arm64/include/asm/topology.h
|
||||
+++ b/arch/arm64/include/asm/topology.h
|
||||
@@ -19,6 +19,9 @@ int pcibus_to_node(struct pci_bus *bus);
|
||||
/* Replace task scheduler's default frequency-invariant accounting */
|
||||
#define arch_scale_freq_capacity topology_get_freq_scale
|
||||
|
||||
+/* Replace task scheduler's default max-frequency-invariant accounting */
|
||||
+#define arch_scale_max_freq_capacity topology_get_max_freq_scale
|
||||
+
|
||||
/* Replace task scheduler's default cpu-invariant accounting */
|
||||
#define arch_scale_cpu_capacity topology_get_cpu_scale
|
||||
|
|
@ -1,570 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martijn Coenen <maco@google.com>
|
||||
Date: Tue, 6 Jun 2017 17:04:42 -0700
|
||||
Subject: ANDROID: binder: add support for RT prio inheritance.
|
||||
|
||||
Adds support for SCHED_BATCH/SCHED_FIFO/SCHED_RR
|
||||
priority inheritance.
|
||||
|
||||
Bug: 34461621
|
||||
Bug: 37293077
|
||||
Bug: 120446518
|
||||
Change-Id: I71f356e476be2933713a0ecfa2cc31aa141e2dc6
|
||||
Signed-off-by: Martijn Coenen <maco@google.com>
|
||||
[AmitP: Include <uapi/linux/sched/types.h> for struct sched_param]
|
||||
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
|
||||
[astrachan: Folded the following changes into this patch:
|
||||
69308b3b07dd ("ANDROID: binder: add min sched_policy to node.")
|
||||
7a6edeb62d86 ("ANDROID: binder: improve priority inheritance.")
|
||||
22b061b17679 ("ANDROID: binder: don't check prio permissions on restore.")
|
||||
67cf97141d81 ("ANDROID: binder: Add tracing for binder priority inheritance.")
|
||||
fb92c34f7ba3 ("ANDROID: binder: add RT inheritance flag to node.")
|
||||
c847b48f8cda ("ANDROID: binder: init desired_prio.sched_policy before use it")]
|
||||
Signed-off-by: Alistair Strachan <astrachan@google.com>
|
||||
---
|
||||
drivers/android/binder.c | 243 ++++++++++++++++++++++++----
|
||||
drivers/android/binder_trace.h | 24 +++
|
||||
include/uapi/linux/android/binder.h | 50 +++++-
|
||||
3 files changed, 284 insertions(+), 33 deletions(-)
|
||||
|
||||
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
|
||||
index 5b9ac2122e89..4cd82572785d 100644
|
||||
--- a/drivers/android/binder.c
|
||||
+++ b/drivers/android/binder.c
|
||||
@@ -66,6 +66,7 @@
|
||||
#include <linux/syscalls.h>
|
||||
#include <linux/task_work.h>
|
||||
|
||||
+#include <uapi/linux/sched/types.h>
|
||||
#include <uapi/linux/android/binder.h>
|
||||
#include <uapi/linux/android/binderfs.h>
|
||||
|
||||
@@ -296,10 +297,13 @@ struct binder_error {
|
||||
* and by @lock)
|
||||
* @has_async_transaction: async transaction to node in progress
|
||||
* (protected by @lock)
|
||||
+ * @sched_policy: minimum scheduling policy for node
|
||||
+ * (invariant after initialized)
|
||||
* @accept_fds: file descriptor operations supported for node
|
||||
* (invariant after initialized)
|
||||
* @min_priority: minimum scheduling priority
|
||||
* (invariant after initialized)
|
||||
+ * @inherit_rt: inherit RT scheduling policy from caller
|
||||
* @txn_security_ctx: require sender's security context
|
||||
* (invariant after initialized)
|
||||
* @async_todo: list of async work items
|
||||
@@ -337,6 +341,8 @@ struct binder_node {
|
||||
/*
|
||||
* invariant after initialization
|
||||
*/
|
||||
+ u8 sched_policy:2;
|
||||
+ u8 inherit_rt:1;
|
||||
u8 accept_fds:1;
|
||||
u8 txn_security_ctx:1;
|
||||
u8 min_priority;
|
||||
@@ -410,6 +416,22 @@ enum binder_deferred_state {
|
||||
BINDER_DEFERRED_RELEASE = 0x02,
|
||||
};
|
||||
|
||||
+/**
|
||||
+ * struct binder_priority - scheduler policy and priority
|
||||
+ * @sched_policy scheduler policy
|
||||
+ * @prio [100..139] for SCHED_NORMAL, [0..99] for FIFO/RT
|
||||
+ *
|
||||
+ * The binder driver supports inheriting the following scheduler policies:
|
||||
+ * SCHED_NORMAL
|
||||
+ * SCHED_BATCH
|
||||
+ * SCHED_FIFO
|
||||
+ * SCHED_RR
|
||||
+ */
|
||||
+struct binder_priority {
|
||||
+ unsigned int sched_policy;
|
||||
+ int prio;
|
||||
+};
|
||||
+
|
||||
/**
|
||||
* struct binder_proc - binder process bookkeeping
|
||||
* @proc_node: element for binder_procs list
|
||||
@@ -484,7 +506,7 @@ struct binder_proc {
|
||||
int requested_threads;
|
||||
int requested_threads_started;
|
||||
int tmp_ref;
|
||||
- long default_priority;
|
||||
+ struct binder_priority default_priority;
|
||||
struct dentry *debugfs_entry;
|
||||
struct binder_alloc alloc;
|
||||
struct binder_context *context;
|
||||
@@ -535,6 +557,7 @@ enum {
|
||||
* @is_dead: thread is dead and awaiting free
|
||||
* when outstanding transactions are cleaned up
|
||||
* (protected by @proc->inner_lock)
|
||||
+ * @task: struct task_struct for this thread
|
||||
*
|
||||
* Bookkeeping structure for binder threads.
|
||||
*/
|
||||
@@ -554,6 +577,7 @@ struct binder_thread {
|
||||
struct binder_stats stats;
|
||||
atomic_t tmp_ref;
|
||||
bool is_dead;
|
||||
+ struct task_struct *task;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -587,8 +611,9 @@ struct binder_transaction {
|
||||
struct binder_buffer *buffer;
|
||||
unsigned int code;
|
||||
unsigned int flags;
|
||||
- long priority;
|
||||
- long saved_priority;
|
||||
+ struct binder_priority priority;
|
||||
+ struct binder_priority saved_priority;
|
||||
+ bool set_priority_called;
|
||||
kuid_t sender_euid;
|
||||
struct list_head fd_fixups;
|
||||
binder_uintptr_t security_ctx;
|
||||
@@ -1047,22 +1072,145 @@ static void binder_wakeup_proc_ilocked(struct binder_proc *proc)
|
||||
binder_wakeup_thread_ilocked(proc, thread, /* sync = */false);
|
||||
}
|
||||
|
||||
-static void binder_set_nice(long nice)
|
||||
+static bool is_rt_policy(int policy)
|
||||
+{
|
||||
+ return policy == SCHED_FIFO || policy == SCHED_RR;
|
||||
+}
|
||||
+
|
||||
+static bool is_fair_policy(int policy)
|
||||
+{
|
||||
+ return policy == SCHED_NORMAL || policy == SCHED_BATCH;
|
||||
+}
|
||||
+
|
||||
+static bool binder_supported_policy(int policy)
|
||||
+{
|
||||
+ return is_fair_policy(policy) || is_rt_policy(policy);
|
||||
+}
|
||||
+
|
||||
+static int to_userspace_prio(int policy, int kernel_priority)
|
||||
+{
|
||||
+ if (is_fair_policy(policy))
|
||||
+ return PRIO_TO_NICE(kernel_priority);
|
||||
+ else
|
||||
+ return MAX_USER_RT_PRIO - 1 - kernel_priority;
|
||||
+}
|
||||
+
|
||||
+static int to_kernel_prio(int policy, int user_priority)
|
||||
{
|
||||
- long min_nice;
|
||||
+ if (is_fair_policy(policy))
|
||||
+ return NICE_TO_PRIO(user_priority);
|
||||
+ else
|
||||
+ return MAX_USER_RT_PRIO - 1 - user_priority;
|
||||
+}
|
||||
|
||||
- if (can_nice(current, nice)) {
|
||||
- set_user_nice(current, nice);
|
||||
+static void binder_do_set_priority(struct task_struct *task,
|
||||
+ struct binder_priority desired,
|
||||
+ bool verify)
|
||||
+{
|
||||
+ int priority; /* user-space prio value */
|
||||
+ bool has_cap_nice;
|
||||
+ unsigned int policy = desired.sched_policy;
|
||||
+
|
||||
+ if (task->policy == policy && task->normal_prio == desired.prio)
|
||||
return;
|
||||
+
|
||||
+ has_cap_nice = has_capability_noaudit(task, CAP_SYS_NICE);
|
||||
+
|
||||
+ priority = to_userspace_prio(policy, desired.prio);
|
||||
+
|
||||
+ if (verify && is_rt_policy(policy) && !has_cap_nice) {
|
||||
+ long max_rtprio = task_rlimit(task, RLIMIT_RTPRIO);
|
||||
+
|
||||
+ if (max_rtprio == 0) {
|
||||
+ policy = SCHED_NORMAL;
|
||||
+ priority = MIN_NICE;
|
||||
+ } else if (priority > max_rtprio) {
|
||||
+ priority = max_rtprio;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (verify && is_fair_policy(policy) && !has_cap_nice) {
|
||||
+ long min_nice = rlimit_to_nice(task_rlimit(task, RLIMIT_NICE));
|
||||
+
|
||||
+ if (min_nice > MAX_NICE) {
|
||||
+ binder_user_error("%d RLIMIT_NICE not set\n",
|
||||
+ task->pid);
|
||||
+ return;
|
||||
+ } else if (priority < min_nice) {
|
||||
+ priority = min_nice;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (policy != desired.sched_policy ||
|
||||
+ to_kernel_prio(policy, priority) != desired.prio)
|
||||
+ binder_debug(BINDER_DEBUG_PRIORITY_CAP,
|
||||
+ "%d: priority %d not allowed, using %d instead\n",
|
||||
+ task->pid, desired.prio,
|
||||
+ to_kernel_prio(policy, priority));
|
||||
+
|
||||
+ trace_binder_set_priority(task->tgid, task->pid, task->normal_prio,
|
||||
+ to_kernel_prio(policy, priority),
|
||||
+ desired.prio);
|
||||
+
|
||||
+ /* Set the actual priority */
|
||||
+ if (task->policy != policy || is_rt_policy(policy)) {
|
||||
+ struct sched_param params;
|
||||
+
|
||||
+ params.sched_priority = is_rt_policy(policy) ? priority : 0;
|
||||
+
|
||||
+ sched_setscheduler_nocheck(task,
|
||||
+ policy | SCHED_RESET_ON_FORK,
|
||||
+ ¶ms);
|
||||
}
|
||||
- min_nice = rlimit_to_nice(rlimit(RLIMIT_NICE));
|
||||
- binder_debug(BINDER_DEBUG_PRIORITY_CAP,
|
||||
- "%d: nice value %ld not allowed use %ld instead\n",
|
||||
- current->pid, nice, min_nice);
|
||||
- set_user_nice(current, min_nice);
|
||||
- if (min_nice <= MAX_NICE)
|
||||
+ if (is_fair_policy(policy))
|
||||
+ set_user_nice(task, priority);
|
||||
+}
|
||||
+
|
||||
+static void binder_set_priority(struct task_struct *task,
|
||||
+ struct binder_priority desired)
|
||||
+{
|
||||
+ binder_do_set_priority(task, desired, /* verify = */ true);
|
||||
+}
|
||||
+
|
||||
+static void binder_restore_priority(struct task_struct *task,
|
||||
+ struct binder_priority desired)
|
||||
+{
|
||||
+ binder_do_set_priority(task, desired, /* verify = */ false);
|
||||
+}
|
||||
+
|
||||
+static void binder_transaction_priority(struct task_struct *task,
|
||||
+ struct binder_transaction *t,
|
||||
+ struct binder_priority node_prio,
|
||||
+ bool inherit_rt)
|
||||
+{
|
||||
+ struct binder_priority desired_prio = t->priority;
|
||||
+
|
||||
+ if (t->set_priority_called)
|
||||
return;
|
||||
- binder_user_error("%d RLIMIT_NICE not set\n", current->pid);
|
||||
+
|
||||
+ t->set_priority_called = true;
|
||||
+ t->saved_priority.sched_policy = task->policy;
|
||||
+ t->saved_priority.prio = task->normal_prio;
|
||||
+
|
||||
+ if (!inherit_rt && is_rt_policy(desired_prio.sched_policy)) {
|
||||
+ desired_prio.prio = NICE_TO_PRIO(0);
|
||||
+ desired_prio.sched_policy = SCHED_NORMAL;
|
||||
+ }
|
||||
+
|
||||
+ if (node_prio.prio < t->priority.prio ||
|
||||
+ (node_prio.prio == t->priority.prio &&
|
||||
+ node_prio.sched_policy == SCHED_FIFO)) {
|
||||
+ /*
|
||||
+ * In case the minimum priority on the node is
|
||||
+ * higher (lower value), use that priority. If
|
||||
+ * the priority is the same, but the node uses
|
||||
+ * SCHED_FIFO, prefer SCHED_FIFO, since it can
|
||||
+ * run unbounded, unlike SCHED_RR.
|
||||
+ */
|
||||
+ desired_prio = node_prio;
|
||||
+ }
|
||||
+
|
||||
+ binder_set_priority(task, desired_prio);
|
||||
}
|
||||
|
||||
static struct binder_node *binder_get_node_ilocked(struct binder_proc *proc,
|
||||
@@ -1115,6 +1263,7 @@ static struct binder_node *binder_init_node_ilocked(
|
||||
binder_uintptr_t ptr = fp ? fp->binder : 0;
|
||||
binder_uintptr_t cookie = fp ? fp->cookie : 0;
|
||||
__u32 flags = fp ? fp->flags : 0;
|
||||
+ s8 priority;
|
||||
|
||||
assert_spin_locked(&proc->inner_lock);
|
||||
|
||||
@@ -1147,8 +1296,12 @@ static struct binder_node *binder_init_node_ilocked(
|
||||
node->ptr = ptr;
|
||||
node->cookie = cookie;
|
||||
node->work.type = BINDER_WORK_NODE;
|
||||
- node->min_priority = flags & FLAT_BINDER_FLAG_PRIORITY_MASK;
|
||||
+ priority = flags & FLAT_BINDER_FLAG_PRIORITY_MASK;
|
||||
+ node->sched_policy = (flags & FLAT_BINDER_FLAG_SCHED_POLICY_MASK) >>
|
||||
+ FLAT_BINDER_FLAG_SCHED_POLICY_SHIFT;
|
||||
+ node->min_priority = to_kernel_prio(node->sched_policy, priority);
|
||||
node->accept_fds = !!(flags & FLAT_BINDER_FLAG_ACCEPTS_FDS);
|
||||
+ node->inherit_rt = !!(flags & FLAT_BINDER_FLAG_INHERIT_RT);
|
||||
node->txn_security_ctx = !!(flags & FLAT_BINDER_FLAG_TXN_SECURITY_CTX);
|
||||
spin_lock_init(&node->lock);
|
||||
INIT_LIST_HEAD(&node->work.entry);
|
||||
@@ -2759,11 +2912,15 @@ static bool binder_proc_transaction(struct binder_transaction *t,
|
||||
struct binder_thread *thread)
|
||||
{
|
||||
struct binder_node *node = t->buffer->target_node;
|
||||
+ struct binder_priority node_prio;
|
||||
bool oneway = !!(t->flags & TF_ONE_WAY);
|
||||
bool pending_async = false;
|
||||
|
||||
BUG_ON(!node);
|
||||
binder_node_lock(node);
|
||||
+ node_prio.prio = node->min_priority;
|
||||
+ node_prio.sched_policy = node->sched_policy;
|
||||
+
|
||||
if (oneway) {
|
||||
BUG_ON(thread);
|
||||
if (node->has_async_transaction) {
|
||||
@@ -2784,12 +2941,15 @@ static bool binder_proc_transaction(struct binder_transaction *t,
|
||||
if (!thread && !pending_async)
|
||||
thread = binder_select_thread_ilocked(proc);
|
||||
|
||||
- if (thread)
|
||||
+ if (thread) {
|
||||
+ binder_transaction_priority(thread->task, t, node_prio,
|
||||
+ node->inherit_rt);
|
||||
binder_enqueue_thread_work_ilocked(thread, &t->work);
|
||||
- else if (!pending_async)
|
||||
+ } else if (!pending_async) {
|
||||
binder_enqueue_work_ilocked(&t->work, &proc->todo);
|
||||
- else
|
||||
+ } else {
|
||||
binder_enqueue_work_ilocked(&t->work, &node->async_todo);
|
||||
+ }
|
||||
|
||||
if (!pending_async)
|
||||
binder_wakeup_thread_ilocked(proc, thread, !oneway /* sync */);
|
||||
@@ -2910,7 +3070,6 @@ static void binder_transaction(struct binder_proc *proc,
|
||||
}
|
||||
thread->transaction_stack = in_reply_to->to_parent;
|
||||
binder_inner_proc_unlock(proc);
|
||||
- binder_set_nice(in_reply_to->saved_priority);
|
||||
target_thread = binder_get_txn_from_and_acq_inner(in_reply_to);
|
||||
if (target_thread == NULL) {
|
||||
/* annotation for sparse */
|
||||
@@ -3109,7 +3268,15 @@ static void binder_transaction(struct binder_proc *proc,
|
||||
t->to_thread = target_thread;
|
||||
t->code = tr->code;
|
||||
t->flags = tr->flags;
|
||||
- t->priority = task_nice(current);
|
||||
+ if (!(t->flags & TF_ONE_WAY) &&
|
||||
+ binder_supported_policy(current->policy)) {
|
||||
+ /* Inherit supported policies for synchronous transactions */
|
||||
+ t->priority.sched_policy = current->policy;
|
||||
+ t->priority.prio = current->normal_prio;
|
||||
+ } else {
|
||||
+ /* Otherwise, fall back to the default priority */
|
||||
+ t->priority = target_proc->default_priority;
|
||||
+ }
|
||||
|
||||
if (target_node && target_node->txn_security_ctx) {
|
||||
u32 secid;
|
||||
@@ -3436,6 +3603,7 @@ static void binder_transaction(struct binder_proc *proc,
|
||||
binder_enqueue_thread_work_ilocked(target_thread, &t->work);
|
||||
binder_inner_proc_unlock(target_proc);
|
||||
wake_up_interruptible_sync(&target_thread->wait);
|
||||
+ binder_restore_priority(current, in_reply_to->saved_priority);
|
||||
binder_free_transaction(in_reply_to);
|
||||
} else if (!(t->flags & TF_ONE_WAY)) {
|
||||
BUG_ON(t->buffer->async_transaction != 0);
|
||||
@@ -3546,6 +3714,7 @@ static void binder_transaction(struct binder_proc *proc,
|
||||
|
||||
BUG_ON(thread->return_error.cmd != BR_OK);
|
||||
if (in_reply_to) {
|
||||
+ binder_restore_priority(current, in_reply_to->saved_priority);
|
||||
thread->return_error.cmd = BR_TRANSACTION_COMPLETE;
|
||||
binder_enqueue_thread_work(thread, &thread->return_error.work);
|
||||
binder_send_failed_reply(in_reply_to, return_error);
|
||||
@@ -4212,7 +4381,7 @@ static int binder_thread_read(struct binder_proc *proc,
|
||||
wait_event_interruptible(binder_user_error_wait,
|
||||
binder_stop_on_user_error < 2);
|
||||
}
|
||||
- binder_set_nice(proc->default_priority);
|
||||
+ binder_restore_priority(current, proc->default_priority);
|
||||
}
|
||||
|
||||
if (non_block) {
|
||||
@@ -4434,16 +4603,14 @@ static int binder_thread_read(struct binder_proc *proc,
|
||||
BUG_ON(t->buffer == NULL);
|
||||
if (t->buffer->target_node) {
|
||||
struct binder_node *target_node = t->buffer->target_node;
|
||||
+ struct binder_priority node_prio;
|
||||
|
||||
trd->target.ptr = target_node->ptr;
|
||||
trd->cookie = target_node->cookie;
|
||||
- t->saved_priority = task_nice(current);
|
||||
- if (t->priority < target_node->min_priority &&
|
||||
- !(t->flags & TF_ONE_WAY))
|
||||
- binder_set_nice(t->priority);
|
||||
- else if (!(t->flags & TF_ONE_WAY) ||
|
||||
- t->saved_priority > target_node->min_priority)
|
||||
- binder_set_nice(target_node->min_priority);
|
||||
+ node_prio.sched_policy = target_node->sched_policy;
|
||||
+ node_prio.prio = target_node->min_priority;
|
||||
+ binder_transaction_priority(current, t, node_prio,
|
||||
+ target_node->inherit_rt);
|
||||
cmd = BR_TRANSACTION;
|
||||
} else {
|
||||
trd->target.ptr = 0;
|
||||
@@ -4655,6 +4822,8 @@ static struct binder_thread *binder_get_thread_ilocked(
|
||||
binder_stats_created(BINDER_STAT_THREAD);
|
||||
thread->proc = proc;
|
||||
thread->pid = current->pid;
|
||||
+ get_task_struct(current);
|
||||
+ thread->task = current;
|
||||
atomic_set(&thread->tmp_ref, 0);
|
||||
init_waitqueue_head(&thread->wait);
|
||||
INIT_LIST_HEAD(&thread->todo);
|
||||
@@ -4705,6 +4874,7 @@ static void binder_free_thread(struct binder_thread *thread)
|
||||
BUG_ON(!list_empty(&thread->todo));
|
||||
binder_stats_deleted(BINDER_STAT_THREAD);
|
||||
binder_proc_dec_tmpref(thread->proc);
|
||||
+ put_task_struct(thread->task);
|
||||
kfree(thread);
|
||||
}
|
||||
|
||||
@@ -5226,7 +5396,14 @@ static int binder_open(struct inode *nodp, struct file *filp)
|
||||
get_task_struct(current->group_leader);
|
||||
proc->tsk = current->group_leader;
|
||||
INIT_LIST_HEAD(&proc->todo);
|
||||
- proc->default_priority = task_nice(current);
|
||||
+ if (binder_supported_policy(current->policy)) {
|
||||
+ proc->default_priority.sched_policy = current->policy;
|
||||
+ proc->default_priority.prio = current->normal_prio;
|
||||
+ } else {
|
||||
+ proc->default_priority.sched_policy = SCHED_NORMAL;
|
||||
+ proc->default_priority.prio = NICE_TO_PRIO(0);
|
||||
+ }
|
||||
+
|
||||
/* binderfs stashes devices in i_private */
|
||||
if (is_binderfs_device(nodp)) {
|
||||
binder_dev = nodp->i_private;
|
||||
@@ -5547,13 +5724,14 @@ static void print_binder_transaction_ilocked(struct seq_file *m,
|
||||
spin_lock(&t->lock);
|
||||
to_proc = t->to_proc;
|
||||
seq_printf(m,
|
||||
- "%s %d: %pK from %d:%d to %d:%d code %x flags %x pri %ld r%d",
|
||||
+ "%s %d: %pK from %d:%d to %d:%d code %x flags %x pri %d:%d r%d",
|
||||
prefix, t->debug_id, t,
|
||||
t->from ? t->from->proc->pid : 0,
|
||||
t->from ? t->from->pid : 0,
|
||||
to_proc ? to_proc->pid : 0,
|
||||
t->to_thread ? t->to_thread->pid : 0,
|
||||
- t->code, t->flags, t->priority, t->need_reply);
|
||||
+ t->code, t->flags, t->priority.sched_policy,
|
||||
+ t->priority.prio, t->need_reply);
|
||||
spin_unlock(&t->lock);
|
||||
|
||||
if (proc != to_proc) {
|
||||
@@ -5671,8 +5849,9 @@ static void print_binder_node_nilocked(struct seq_file *m,
|
||||
hlist_for_each_entry(ref, &node->refs, node_entry)
|
||||
count++;
|
||||
|
||||
- seq_printf(m, " node %d: u%016llx c%016llx hs %d hw %d ls %d lw %d is %d iw %d tr %d",
|
||||
+ seq_printf(m, " node %d: u%016llx c%016llx pri %d:%d hs %d hw %d ls %d lw %d is %d iw %d tr %d",
|
||||
node->debug_id, (u64)node->ptr, (u64)node->cookie,
|
||||
+ node->sched_policy, node->min_priority,
|
||||
node->has_strong_ref, node->has_weak_ref,
|
||||
node->local_strong_refs, node->local_weak_refs,
|
||||
node->internal_strong_refs, count, node->tmp_refs);
|
||||
diff --git a/drivers/android/binder_trace.h b/drivers/android/binder_trace.h
|
||||
index 6731c3cd8145..a70e23716ad0 100644
|
||||
--- a/drivers/android/binder_trace.h
|
||||
+++ b/drivers/android/binder_trace.h
|
||||
@@ -76,6 +76,30 @@ DEFINE_BINDER_FUNCTION_RETURN_EVENT(binder_ioctl_done);
|
||||
DEFINE_BINDER_FUNCTION_RETURN_EVENT(binder_write_done);
|
||||
DEFINE_BINDER_FUNCTION_RETURN_EVENT(binder_read_done);
|
||||
|
||||
+TRACE_EVENT(binder_set_priority,
|
||||
+ TP_PROTO(int proc, int thread, unsigned int old_prio,
|
||||
+ unsigned int desired_prio, unsigned int new_prio),
|
||||
+ TP_ARGS(proc, thread, old_prio, new_prio, desired_prio),
|
||||
+
|
||||
+ TP_STRUCT__entry(
|
||||
+ __field(int, proc)
|
||||
+ __field(int, thread)
|
||||
+ __field(unsigned int, old_prio)
|
||||
+ __field(unsigned int, new_prio)
|
||||
+ __field(unsigned int, desired_prio)
|
||||
+ ),
|
||||
+ TP_fast_assign(
|
||||
+ __entry->proc = proc;
|
||||
+ __entry->thread = thread;
|
||||
+ __entry->old_prio = old_prio;
|
||||
+ __entry->new_prio = new_prio;
|
||||
+ __entry->desired_prio = desired_prio;
|
||||
+ ),
|
||||
+ TP_printk("proc=%d thread=%d old=%d => new=%d desired=%d",
|
||||
+ __entry->proc, __entry->thread, __entry->old_prio,
|
||||
+ __entry->new_prio, __entry->desired_prio)
|
||||
+);
|
||||
+
|
||||
TRACE_EVENT(binder_wait_for_work,
|
||||
TP_PROTO(bool proc_work, bool transaction_stack, bool thread_todo),
|
||||
TP_ARGS(proc_work, transaction_stack, thread_todo),
|
||||
diff --git a/include/uapi/linux/android/binder.h b/include/uapi/linux/android/binder.h
|
||||
index 2832134e5397..11babae0339f 100644
|
||||
--- a/include/uapi/linux/android/binder.h
|
||||
+++ b/include/uapi/linux/android/binder.h
|
||||
@@ -38,10 +38,58 @@ enum {
|
||||
BINDER_TYPE_PTR = B_PACK_CHARS('p', 't', '*', B_TYPE_LARGE),
|
||||
};
|
||||
|
||||
-enum {
|
||||
+/**
|
||||
+ * enum flat_binder_object_shifts: shift values for flat_binder_object_flags
|
||||
+ * @FLAT_BINDER_FLAG_SCHED_POLICY_SHIFT: shift for getting scheduler policy.
|
||||
+ *
|
||||
+ */
|
||||
+enum flat_binder_object_shifts {
|
||||
+ FLAT_BINDER_FLAG_SCHED_POLICY_SHIFT = 9,
|
||||
+};
|
||||
+
|
||||
+/**
|
||||
+ * enum flat_binder_object_flags - flags for use in flat_binder_object.flags
|
||||
+ */
|
||||
+enum flat_binder_object_flags {
|
||||
+ /**
|
||||
+ * @FLAT_BINDER_FLAG_PRIORITY_MASK: bit-mask for min scheduler priority
|
||||
+ *
|
||||
+ * These bits can be used to set the minimum scheduler priority
|
||||
+ * at which transactions into this node should run. Valid values
|
||||
+ * in these bits depend on the scheduler policy encoded in
|
||||
+ * @FLAT_BINDER_FLAG_SCHED_POLICY_MASK.
|
||||
+ *
|
||||
+ * For SCHED_NORMAL/SCHED_BATCH, the valid range is between [-20..19]
|
||||
+ * For SCHED_FIFO/SCHED_RR, the value can run between [1..99]
|
||||
+ */
|
||||
FLAT_BINDER_FLAG_PRIORITY_MASK = 0xff,
|
||||
+ /**
|
||||
+ * @FLAT_BINDER_FLAG_ACCEPTS_FDS: whether the node accepts fds.
|
||||
+ */
|
||||
FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100,
|
||||
|
||||
+ /**
|
||||
+ * @FLAT_BINDER_FLAG_SCHED_POLICY_MASK: bit-mask for scheduling policy
|
||||
+ *
|
||||
+ * These two bits can be used to set the min scheduling policy at which
|
||||
+ * transactions on this node should run. These match the UAPI
|
||||
+ * scheduler policy values, eg:
|
||||
+ * 00b: SCHED_NORMAL
|
||||
+ * 01b: SCHED_FIFO
|
||||
+ * 10b: SCHED_RR
|
||||
+ * 11b: SCHED_BATCH
|
||||
+ */
|
||||
+ FLAT_BINDER_FLAG_SCHED_POLICY_MASK =
|
||||
+ 3U << FLAT_BINDER_FLAG_SCHED_POLICY_SHIFT,
|
||||
+
|
||||
+ /**
|
||||
+ * @FLAT_BINDER_FLAG_INHERIT_RT: whether the node inherits RT policy
|
||||
+ *
|
||||
+ * Only when set, calls into this node will inherit a real-time
|
||||
+ * scheduling policy from the caller (for synchronous transactions).
|
||||
+ */
|
||||
+ FLAT_BINDER_FLAG_INHERIT_RT = 0x800,
|
||||
+
|
||||
/**
|
||||
* @FLAT_BINDER_FLAG_TXN_SECURITY_CTX: request security contexts
|
||||
*
|
|
@ -1,41 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Maennich <maennich@google.com>
|
||||
Date: Mon, 8 Jul 2019 22:21:06 +0100
|
||||
Subject: ANDROID: build configs: switch prebuilt path location
|
||||
|
||||
Move to a kernel specific prebuilt path.
|
||||
|
||||
Bug: 135922132
|
||||
Change-Id: I8755f8f0154eecc86ad598be7a7811e9d8f068ed
|
||||
Signed-off-by: Matthias Maennich <maennich@google.com>
|
||||
---
|
||||
build.config.gki.aarch64 | 2 +-
|
||||
build.config.gki.x86_64 | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/build.config.gki.aarch64 b/build.config.gki.aarch64
|
||||
index 24dade721f96..79871cdc6d07 100644
|
||||
--- a/build.config.gki.aarch64
|
||||
+++ b/build.config.gki.aarch64
|
||||
@@ -8,7 +8,7 @@ EXTRA_CMDS=''
|
||||
KERNEL_DIR=common
|
||||
POST_DEFCONFIG_CMDS="check_defconfig"
|
||||
CLANG_PREBUILT_BIN=prebuilts-master/clang/host/linux-x86/clang-r353983c/bin
|
||||
-BUILDTOOLS_PREBUILT_BIN=prebuilts/build-tools/path/linux-x86
|
||||
+BUILDTOOLS_PREBUILT_BIN=build/build-tools/path/linux-x86
|
||||
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin
|
||||
FILES="
|
||||
arch/arm64/boot/Image.gz
|
||||
diff --git a/build.config.gki.x86_64 b/build.config.gki.x86_64
|
||||
index 3ce45e962732..b5a7f4600101 100644
|
||||
--- a/build.config.gki.x86_64
|
||||
+++ b/build.config.gki.x86_64
|
||||
@@ -8,7 +8,7 @@ EXTRA_CMDS=''
|
||||
KERNEL_DIR=common
|
||||
POST_DEFCONFIG_CMDS="check_defconfig"
|
||||
CLANG_PREBUILT_BIN=prebuilts-master/clang/host/linux-x86/clang-r353983c/bin
|
||||
-BUILDTOOLS_PREBUILT_BIN=prebuilts/build-tools/path/linux-x86
|
||||
+BUILDTOOLS_PREBUILT_BIN=build/build-tools/path/linux-x86
|
||||
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/bin
|
||||
FILES="
|
||||
arch/x86/boot/bzImage
|
|
@ -1,87 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: David Dai <daidavid1@codeaurora.org>
|
||||
Date: Mon, 19 Aug 2019 16:35:44 -0700
|
||||
Subject: ANDROID: clk: add pre and post change rate callbacks
|
||||
|
||||
There are scenarios where a rate change could result in a configuration
|
||||
change for both the targeted clock and its parent.
|
||||
|
||||
For example, setting the rate for a clock could require both slewing its parent
|
||||
PLL as well as adjusting the clock's divider values. Due to the fact that
|
||||
rate change propagation always occurs from parent to child, we could exceed
|
||||
the allowed operating frequencies for the clock as the parent slews to a higher
|
||||
frequency before increasing the downstream divider.
|
||||
|
||||
Add a pre change call back which allows the clock to adjust its divider
|
||||
appropriately before any rate change has occurred from its parents to ensure
|
||||
that the clock's requirements are always within safe frequencies during parent
|
||||
rate changes. The symmetrical post change call back handles the scenario where
|
||||
the divider adjusts to a lower value and can only be safely adjusted after the
|
||||
parent rate changes.
|
||||
|
||||
Change-Id: I4f8cf9df6fc256d065599de86a34cf99eae4d853
|
||||
Signed-off-by: David Dai <daidavid1@codeaurora.org>
|
||||
---
|
||||
drivers/clk/clk.c | 10 ++++++++++
|
||||
include/linux/clk-provider.h | 13 +++++++++++++
|
||||
2 files changed, 23 insertions(+)
|
||||
|
||||
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
|
||||
index 1c677d7f7f53..020fdb8105cc 100644
|
||||
--- a/drivers/clk/clk.c
|
||||
+++ b/drivers/clk/clk.c
|
||||
@@ -1980,6 +1980,13 @@ static struct clk_core *clk_propagate_rate_change(struct clk_core *core,
|
||||
fail_clk = core;
|
||||
}
|
||||
|
||||
+ if (core->ops->pre_rate_change) {
|
||||
+ ret = core->ops->pre_rate_change(core->hw, core->rate,
|
||||
+ core->new_rate);
|
||||
+ if (ret)
|
||||
+ fail_clk = core;
|
||||
+ }
|
||||
+
|
||||
hlist_for_each_entry(child, &core->children, child_node) {
|
||||
/* Skip children who will be reparented to another clock */
|
||||
if (child->new_parent && child->new_parent != core)
|
||||
@@ -2082,6 +2089,9 @@ static void clk_change_rate(struct clk_core *core)
|
||||
if (core->flags & CLK_RECALC_NEW_RATES)
|
||||
(void)clk_calc_new_rates(core, core->new_rate);
|
||||
|
||||
+ if (core->ops->post_rate_change)
|
||||
+ core->ops->post_rate_change(core->hw, old_rate, core->rate);
|
||||
+
|
||||
/*
|
||||
* Use safe iteration, as change_rate can actually swap parents
|
||||
* for certain clock types.
|
||||
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
|
||||
index 2fdfe8061363..73e4369e8408 100644
|
||||
--- a/include/linux/clk-provider.h
|
||||
+++ b/include/linux/clk-provider.h
|
||||
@@ -199,6 +199,13 @@ struct clk_duty {
|
||||
* directory is provided as an argument. Called with
|
||||
* prepare_lock held. Returns 0 on success, -EERROR otherwise.
|
||||
*
|
||||
+ * @pre_rate_change: Optional callback for a clock to fulfill its rate
|
||||
+ * change requirements before any rate change has occurred in
|
||||
+ * its clock tree. Returns 0 on success, -EERROR otherwise.
|
||||
+ *
|
||||
+ * @post_rate_change: Optional callback for a clock to clean up any
|
||||
+ * requirements that were needed while the clock and its tree
|
||||
+ * was changing states. Returns 0 on success, -EERROR otherwise.
|
||||
*
|
||||
* The clk_enable/clk_disable and clk_prepare/clk_unprepare pairs allow
|
||||
* implementations to split any work between atomic (enable) and sleepable
|
||||
@@ -245,6 +252,12 @@ struct clk_ops {
|
||||
struct clk_duty *duty);
|
||||
void (*init)(struct clk_hw *hw);
|
||||
void (*debug_init)(struct clk_hw *hw, struct dentry *dentry);
|
||||
+ int (*pre_rate_change)(struct clk_hw *hw,
|
||||
+ unsigned long rate,
|
||||
+ unsigned long new_rate);
|
||||
+ int (*post_rate_change)(struct clk_hw *hw,
|
||||
+ unsigned long old_rate,
|
||||
+ unsigned long rate);
|
||||
};
|
||||
|
||||
/**
|
|
@ -1,41 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Thierry Strudel <tstrudel@google.com>
|
||||
Date: Tue, 14 Jun 2016 17:46:44 -0700
|
||||
Subject: ANDROID: cpu: send KOBJ_ONLINE event when enabling cpus
|
||||
|
||||
In case some sysfs nodes needs to be labeled with a different label than
|
||||
sysfs then user needs to be notified when a core is brought back online.
|
||||
|
||||
Bug: 29359497
|
||||
Bug: 120444461
|
||||
Change-Id: I0395c86e01cd49c348fda8f93087d26f88557c91
|
||||
Signed-off-by: Thierry Strudel <tstrudel@google.com>
|
||||
---
|
||||
kernel/cpu.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/kernel/cpu.c b/kernel/cpu.c
|
||||
index fc28e17940e0..4bc4f6cd5634 100644
|
||||
--- a/kernel/cpu.c
|
||||
+++ b/kernel/cpu.c
|
||||
@@ -1276,6 +1276,7 @@ void __weak arch_enable_nonboot_cpus_end(void)
|
||||
void enable_nonboot_cpus(void)
|
||||
{
|
||||
int cpu, error;
|
||||
+ struct device *cpu_device;
|
||||
|
||||
/* Allow everyone to use the CPU hotplug again */
|
||||
cpu_maps_update_begin();
|
||||
@@ -1293,6 +1294,12 @@ void enable_nonboot_cpus(void)
|
||||
trace_suspend_resume(TPS("CPU_ON"), cpu, false);
|
||||
if (!error) {
|
||||
pr_info("CPU%d is up\n", cpu);
|
||||
+ cpu_device = get_cpu_device(cpu);
|
||||
+ if (!cpu_device)
|
||||
+ pr_err("%s: failed to get cpu%d device\n",
|
||||
+ __func__, cpu);
|
||||
+ else
|
||||
+ kobject_uevent(&cpu_device->kobj, KOBJ_ONLINE);
|
||||
continue;
|
||||
}
|
||||
pr_warn("Error taking CPU%d up: %d\n", cpu, error);
|
|
@ -1,139 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Connor O'Brien <connoro@google.com>
|
||||
Date: Mon, 22 Jan 2018 18:28:08 -0800
|
||||
Subject: ANDROID: cpufreq: Add time_in_state to /proc/uid directories
|
||||
|
||||
Add per-uid files that report the data in binary format rather than
|
||||
text, to allow faster reading & parsing by userspace.
|
||||
|
||||
Signed-off-by: Connor O'Brien <connoro@google.com>
|
||||
Bug: 72339335
|
||||
Bug: 127641090
|
||||
Test: compare values to those reported in /proc/uid_time_in_state
|
||||
Change-Id: I463039ea7f17b842be4c70024fe772539fe2ce02
|
||||
---
|
||||
drivers/cpufreq/cpufreq_times.c | 49 +++++++++++++++++++++++++++++++++
|
||||
fs/proc/uid.c | 16 ++++++++++-
|
||||
include/linux/cpufreq_times.h | 1 +
|
||||
3 files changed, 65 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/cpufreq/cpufreq_times.c b/drivers/cpufreq/cpufreq_times.c
|
||||
index 15b52e1f82fc..a43eeee30e8e 100644
|
||||
--- a/drivers/cpufreq/cpufreq_times.c
|
||||
+++ b/drivers/cpufreq/cpufreq_times.c
|
||||
@@ -58,6 +58,19 @@ static struct cpu_freqs *all_freqs[NR_CPUS];
|
||||
|
||||
static unsigned int next_offset;
|
||||
|
||||
+
|
||||
+/* Caller must hold rcu_read_lock() */
|
||||
+static struct uid_entry *find_uid_entry_rcu(uid_t uid)
|
||||
+{
|
||||
+ struct uid_entry *uid_entry;
|
||||
+
|
||||
+ hash_for_each_possible_rcu(uid_hash_table, uid_entry, hash, uid) {
|
||||
+ if (uid_entry->uid == uid)
|
||||
+ return uid_entry;
|
||||
+ }
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
/* Caller must hold uid lock */
|
||||
static struct uid_entry *find_uid_entry_locked(uid_t uid)
|
||||
{
|
||||
@@ -127,6 +140,36 @@ static bool freq_index_invalid(unsigned int index)
|
||||
return true;
|
||||
}
|
||||
|
||||
+static int single_uid_time_in_state_show(struct seq_file *m, void *ptr)
|
||||
+{
|
||||
+ struct uid_entry *uid_entry;
|
||||
+ unsigned int i;
|
||||
+ u64 time;
|
||||
+ uid_t uid = from_kuid_munged(current_user_ns(), *(kuid_t *)m->private);
|
||||
+
|
||||
+ if (uid == overflowuid)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ rcu_read_lock();
|
||||
+
|
||||
+ uid_entry = find_uid_entry_rcu(uid);
|
||||
+ if (!uid_entry) {
|
||||
+ rcu_read_unlock();
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < uid_entry->max_state; ++i) {
|
||||
+ if (freq_index_invalid(i))
|
||||
+ continue;
|
||||
+ time = nsec_to_clock_t(uid_entry->time_in_state[i]);
|
||||
+ seq_write(m, &time, sizeof(time));
|
||||
+ }
|
||||
+
|
||||
+ rcu_read_unlock();
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static void *uid_seq_start(struct seq_file *seq, loff_t *pos)
|
||||
{
|
||||
if (*pos >= HASH_SIZE(uid_hash_table))
|
||||
@@ -397,6 +440,12 @@ static int uid_time_in_state_open(struct inode *inode, struct file *file)
|
||||
return seq_open(file, &uid_time_in_state_seq_ops);
|
||||
}
|
||||
|
||||
+int single_uid_time_in_state_open(struct inode *inode, struct file *file)
|
||||
+{
|
||||
+ return single_open(file, single_uid_time_in_state_show,
|
||||
+ &(inode->i_uid));
|
||||
+}
|
||||
+
|
||||
static const struct file_operations uid_time_in_state_fops = {
|
||||
.open = uid_time_in_state_open,
|
||||
.read = seq_read,
|
||||
diff --git a/fs/proc/uid.c b/fs/proc/uid.c
|
||||
index ae720b93a0ed..311717ea199a 100644
|
||||
--- a/fs/proc/uid.c
|
||||
+++ b/fs/proc/uid.c
|
||||
@@ -2,6 +2,7 @@
|
||||
* /proc/uid support
|
||||
*/
|
||||
|
||||
+#include <linux/cpufreq_times.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/hashtable.h>
|
||||
#include <linux/init.h>
|
||||
@@ -82,7 +83,20 @@ struct uid_entry {
|
||||
.fop = FOP, \
|
||||
}
|
||||
|
||||
-static const struct uid_entry uid_base_stuff[] = {};
|
||||
+#ifdef CONFIG_CPU_FREQ_TIMES
|
||||
+static const struct file_operations proc_uid_time_in_state_operations = {
|
||||
+ .open = single_uid_time_in_state_open,
|
||||
+ .read = seq_read,
|
||||
+ .llseek = seq_lseek,
|
||||
+ .release = single_release,
|
||||
+};
|
||||
+#endif
|
||||
+
|
||||
+static const struct uid_entry uid_base_stuff[] = {
|
||||
+#ifdef CONFIG_CPU_FREQ_TIMES
|
||||
+ NOD("time_in_state", 0444, NULL, &proc_uid_time_in_state_operations),
|
||||
+#endif
|
||||
+};
|
||||
|
||||
static const struct inode_operations proc_uid_def_inode_operations = {
|
||||
.setattr = proc_setattr,
|
||||
diff --git a/include/linux/cpufreq_times.h b/include/linux/cpufreq_times.h
|
||||
index a03157f649a4..757bf0cb6070 100644
|
||||
--- a/include/linux/cpufreq_times.h
|
||||
+++ b/include/linux/cpufreq_times.h
|
||||
@@ -29,6 +29,7 @@ void cpufreq_acct_update_power(struct task_struct *p, u64 cputime);
|
||||
void cpufreq_times_create_policy(struct cpufreq_policy *policy);
|
||||
void cpufreq_times_record_transition(struct cpufreq_freqs *freq);
|
||||
void cpufreq_task_times_remove_uids(uid_t uid_start, uid_t uid_end);
|
||||
+int single_uid_time_in_state_open(struct inode *inode, struct file *file);
|
||||
#else
|
||||
static inline void cpufreq_task_times_init(struct task_struct *p) {}
|
||||
static inline void cpufreq_task_times_alloc(struct task_struct *p) {}
|
|
@ -1,135 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Dietmar Eggemann <dietmar.eggemann@arm.com>
|
||||
Date: Thu, 10 May 2018 16:52:33 +0100
|
||||
Subject: ANDROID: cpufreq: arch_topology: implement max frequency capping
|
||||
|
||||
Implements the Max Frequency Capping Engine (MFCE) getter function
|
||||
topology_get_max_freq_scale() to provide the scheduler with a
|
||||
maximum frequency scaling correction factor for more accurate cpu
|
||||
capacity handling by being able to deal with max frequency capping.
|
||||
|
||||
This scaling factor describes the influence of running a cpu with a
|
||||
current maximum frequency (policy) lower than the maximum possible
|
||||
frequency (cpuinfo).
|
||||
|
||||
The factor is:
|
||||
|
||||
policy_max_freq(cpu) << SCHED_CAPACITY_SHIFT / cpuinfo_max_freq(cpu)
|
||||
|
||||
It also implements the MFCE setter function arch_set_max_freq_scale()
|
||||
which is called from cpufreq_set_policy().
|
||||
|
||||
Change-Id: I59e52861ee260755ab0518fe1f7183a2e4e3d0fc
|
||||
Signed-off-by: Ionela Voinescu <ionela.voinescu@arm.com>
|
||||
Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
|
||||
[Trivial cherry-pick issue in cpufreq.c]
|
||||
Signed-off-by: Quentin Perret <quentin.perret@arm.com>
|
||||
---
|
||||
drivers/base/arch_topology.c | 25 ++++++++++++++++++++++++-
|
||||
drivers/cpufreq/cpufreq.c | 8 ++++++++
|
||||
include/linux/arch_topology.h | 8 ++++++++
|
||||
include/linux/cpufreq.h | 2 ++
|
||||
4 files changed, 42 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c
|
||||
index 1eb81f113786..c0cf9ef5c2f5 100644
|
||||
--- a/drivers/base/arch_topology.c
|
||||
+++ b/drivers/base/arch_topology.c
|
||||
@@ -22,6 +22,8 @@
|
||||
#include <linux/smp.h>
|
||||
|
||||
DEFINE_PER_CPU(unsigned long, freq_scale) = SCHED_CAPACITY_SCALE;
|
||||
+DEFINE_PER_CPU(unsigned long, max_cpu_freq);
|
||||
+DEFINE_PER_CPU(unsigned long, max_freq_scale) = SCHED_CAPACITY_SCALE;
|
||||
|
||||
void arch_set_freq_scale(struct cpumask *cpus, unsigned long cur_freq,
|
||||
unsigned long max_freq)
|
||||
@@ -31,8 +33,29 @@ void arch_set_freq_scale(struct cpumask *cpus, unsigned long cur_freq,
|
||||
|
||||
scale = (cur_freq << SCHED_CAPACITY_SHIFT) / max_freq;
|
||||
|
||||
- for_each_cpu(i, cpus)
|
||||
+ for_each_cpu(i, cpus) {
|
||||
per_cpu(freq_scale, i) = scale;
|
||||
+ per_cpu(max_cpu_freq, i) = max_freq;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void arch_set_max_freq_scale(struct cpumask *cpus,
|
||||
+ unsigned long policy_max_freq)
|
||||
+{
|
||||
+ unsigned long scale, max_freq;
|
||||
+ int cpu = cpumask_first(cpus);
|
||||
+
|
||||
+ if (cpu > nr_cpu_ids)
|
||||
+ return;
|
||||
+
|
||||
+ max_freq = per_cpu(max_cpu_freq, cpu);
|
||||
+ if (!max_freq)
|
||||
+ return;
|
||||
+
|
||||
+ scale = (policy_max_freq << SCHED_CAPACITY_SHIFT) / max_freq;
|
||||
+
|
||||
+ for_each_cpu(cpu, cpus)
|
||||
+ per_cpu(max_freq_scale, cpu) = scale;
|
||||
}
|
||||
|
||||
DEFINE_PER_CPU(unsigned long, cpu_scale) = SCHED_CAPACITY_SCALE;
|
||||
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
|
||||
index f9de9dece70f..9c15d7f52e1c 100644
|
||||
--- a/drivers/cpufreq/cpufreq.c
|
||||
+++ b/drivers/cpufreq/cpufreq.c
|
||||
@@ -153,6 +153,12 @@ __weak void arch_set_freq_scale(struct cpumask *cpus, unsigned long cur_freq,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(arch_set_freq_scale);
|
||||
|
||||
+__weak void arch_set_max_freq_scale(struct cpumask *cpus,
|
||||
+ unsigned long policy_max_freq)
|
||||
+{
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(arch_set_max_freq_scale);
|
||||
+
|
||||
/*
|
||||
* This is a generic cpufreq init() routine which can be used by cpufreq
|
||||
* drivers of SMP systems. It will do following:
|
||||
@@ -2407,6 +2413,8 @@ int cpufreq_set_policy(struct cpufreq_policy *policy,
|
||||
policy->max = new_policy->max;
|
||||
trace_cpu_frequency_limits(policy);
|
||||
|
||||
+ arch_set_max_freq_scale(policy->cpus, policy->max);
|
||||
+
|
||||
policy->cached_target_freq = UINT_MAX;
|
||||
|
||||
pr_debug("new min and max freqs are %u - %u kHz\n",
|
||||
diff --git a/include/linux/arch_topology.h b/include/linux/arch_topology.h
|
||||
index 42f2b5126094..5402bc0e2b1e 100644
|
||||
--- a/include/linux/arch_topology.h
|
||||
+++ b/include/linux/arch_topology.h
|
||||
@@ -33,6 +33,14 @@ unsigned long topology_get_freq_scale(int cpu)
|
||||
return per_cpu(freq_scale, cpu);
|
||||
}
|
||||
|
||||
+DECLARE_PER_CPU(unsigned long, max_freq_scale);
|
||||
+
|
||||
+static inline
|
||||
+unsigned long topology_get_max_freq_scale(struct sched_domain *sd, int cpu)
|
||||
+{
|
||||
+ return per_cpu(max_freq_scale, cpu);
|
||||
+}
|
||||
+
|
||||
struct cpu_topology {
|
||||
int thread_id;
|
||||
int core_id;
|
||||
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h
|
||||
index c57e88e85c41..fca45a2749d4 100644
|
||||
--- a/include/linux/cpufreq.h
|
||||
+++ b/include/linux/cpufreq.h
|
||||
@@ -984,6 +984,8 @@ extern unsigned int arch_freq_get_on_cpu(int cpu);
|
||||
|
||||
extern void arch_set_freq_scale(struct cpumask *cpus, unsigned long cur_freq,
|
||||
unsigned long max_freq);
|
||||
+extern void arch_set_max_freq_scale(struct cpumask *cpus,
|
||||
+ unsigned long policy_max_freq);
|
||||
|
||||
/* the following are really really optional */
|
||||
extern struct freq_attr cpufreq_freq_attr_scaling_available_freqs;
|
|
@ -1,340 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Connor O'Brien <connoro@google.com>
|
||||
Date: Fri, 5 Oct 2018 19:20:54 -0700
|
||||
Subject: ANDROID: cpufreq: times: add
|
||||
/proc/uid_concurrent_{active,policy}_time
|
||||
|
||||
In order to model the energy used by the cpu, we need to expose cpu
|
||||
time information to userspace. We can use this information to blame
|
||||
uids for the energy they are using.
|
||||
|
||||
This patch adds 2 files:
|
||||
|
||||
/proc/uid_concurrent_active_time outputs the time each uid spent
|
||||
running with 1 to num_possible_cpus online and not idle.
|
||||
|
||||
For instance, if 4 cores are online and active for 50ms and the uid is
|
||||
running on one of the cores, the uid should be blamed for 1/4 of the
|
||||
base energy used by the cpu when 1 or more cores is active.
|
||||
|
||||
/proc/uid_concurrent_policy_time outputs the time each uid spent
|
||||
running on group of cpu's with the same policy with 1 to
|
||||
num_related_cpus online and not idle.
|
||||
|
||||
For instance, if 2 cores that are a part of the same policy are online
|
||||
and active for 50ms and the uid is running on one of the cores, the
|
||||
uid should be blamed for 1/2 of the energy that is used everytime one
|
||||
or more cpus in the same policy is active.
|
||||
|
||||
This patch is based on commit c89e69136fec ("ANDROID: cpufreq:
|
||||
uid_concurrent_active_time") and commit 989212536842 ("ANDROID:
|
||||
cpufreq: uid_concurrent_policy_time") in the android-msm-wahoo-4.4
|
||||
kernel by Marissa Wall.
|
||||
|
||||
Bug: 111216804
|
||||
Bug: 127641090
|
||||
Test: cat files on hikey960 and confirm output is reasonable
|
||||
Change-Id: I1a342361af5c04ecee58d1ab667c91c1bce42445
|
||||
Signed-off-by: Connor O'Brien <connoro@google.com>
|
||||
---
|
||||
.../ABI/testing/procfs-concurrent_time | 16 ++
|
||||
drivers/cpufreq/cpufreq_times.c | 190 +++++++++++++++++-
|
||||
2 files changed, 204 insertions(+), 2 deletions(-)
|
||||
create mode 100644 Documentation/ABI/testing/procfs-concurrent_time
|
||||
|
||||
diff --git a/Documentation/ABI/testing/procfs-concurrent_time b/Documentation/ABI/testing/procfs-concurrent_time
|
||||
new file mode 100644
|
||||
index 000000000000..55b414289b40
|
||||
--- /dev/null
|
||||
+++ b/Documentation/ABI/testing/procfs-concurrent_time
|
||||
@@ -0,0 +1,16 @@
|
||||
+What: /proc/uid_concurrent_active_time
|
||||
+Date: December 2018
|
||||
+Contact: Connor O'Brien <connoro@google.com>
|
||||
+Description:
|
||||
+ The /proc/uid_concurrent_active_time file displays aggregated cputime
|
||||
+ numbers for each uid, broken down by the total number of cores that were
|
||||
+ active while the uid's task was running.
|
||||
+
|
||||
+What: /proc/uid_concurrent_policy_time
|
||||
+Date: December 2018
|
||||
+Contact: Connor O'Brien <connoro@google.com>
|
||||
+Description:
|
||||
+ The /proc/uid_concurrent_policy_time file displays aggregated cputime
|
||||
+ numbers for each uid, broken down based on the cpufreq policy
|
||||
+ of the core used by the uid's task and the number of cores associated
|
||||
+ with that policy that were active while the uid's task was running.
|
||||
diff --git a/drivers/cpufreq/cpufreq_times.c b/drivers/cpufreq/cpufreq_times.c
|
||||
index a43eeee30e8e..aaded60c9a21 100644
|
||||
--- a/drivers/cpufreq/cpufreq_times.c
|
||||
+++ b/drivers/cpufreq/cpufreq_times.c
|
||||
@@ -32,11 +32,17 @@ static DECLARE_HASHTABLE(uid_hash_table, UID_HASH_BITS);
|
||||
static DEFINE_SPINLOCK(task_time_in_state_lock); /* task->time_in_state */
|
||||
static DEFINE_SPINLOCK(uid_lock); /* uid_hash_table */
|
||||
|
||||
+struct concurrent_times {
|
||||
+ atomic64_t active[NR_CPUS];
|
||||
+ atomic64_t policy[NR_CPUS];
|
||||
+};
|
||||
+
|
||||
struct uid_entry {
|
||||
uid_t uid;
|
||||
unsigned int max_state;
|
||||
struct hlist_node hash;
|
||||
struct rcu_head rcu;
|
||||
+ struct concurrent_times *concurrent_times;
|
||||
u64 time_in_state[0];
|
||||
};
|
||||
|
||||
@@ -87,6 +93,7 @@ static struct uid_entry *find_uid_entry_locked(uid_t uid)
|
||||
static struct uid_entry *find_or_register_uid_locked(uid_t uid)
|
||||
{
|
||||
struct uid_entry *uid_entry, *temp;
|
||||
+ struct concurrent_times *times;
|
||||
unsigned int max_state = READ_ONCE(next_offset);
|
||||
size_t alloc_size = sizeof(*uid_entry) + max_state *
|
||||
sizeof(uid_entry->time_in_state[0]);
|
||||
@@ -115,9 +122,15 @@ static struct uid_entry *find_or_register_uid_locked(uid_t uid)
|
||||
uid_entry = kzalloc(alloc_size, GFP_ATOMIC);
|
||||
if (!uid_entry)
|
||||
return NULL;
|
||||
+ times = kzalloc(sizeof(*times), GFP_ATOMIC);
|
||||
+ if (!times) {
|
||||
+ kfree(uid_entry);
|
||||
+ return NULL;
|
||||
+ }
|
||||
|
||||
uid_entry->uid = uid;
|
||||
uid_entry->max_state = max_state;
|
||||
+ uid_entry->concurrent_times = times;
|
||||
|
||||
hash_add_rcu(uid_hash_table, &uid_entry->hash, uid);
|
||||
|
||||
@@ -232,6 +245,86 @@ static int uid_time_in_state_seq_show(struct seq_file *m, void *v)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int concurrent_time_seq_show(struct seq_file *m, void *v,
|
||||
+ atomic64_t *(*get_times)(struct concurrent_times *))
|
||||
+{
|
||||
+ struct uid_entry *uid_entry;
|
||||
+ int i, num_possible_cpus = num_possible_cpus();
|
||||
+
|
||||
+ rcu_read_lock();
|
||||
+
|
||||
+ hlist_for_each_entry_rcu(uid_entry, (struct hlist_head *)v, hash) {
|
||||
+ atomic64_t *times = get_times(uid_entry->concurrent_times);
|
||||
+
|
||||
+ seq_put_decimal_ull(m, "", (u64)uid_entry->uid);
|
||||
+ seq_putc(m, ':');
|
||||
+
|
||||
+ for (i = 0; i < num_possible_cpus; ++i) {
|
||||
+ u64 time = nsec_to_clock_t(atomic64_read(×[i]));
|
||||
+
|
||||
+ seq_put_decimal_ull(m, " ", time);
|
||||
+ }
|
||||
+ seq_putc(m, '\n');
|
||||
+ }
|
||||
+
|
||||
+ rcu_read_unlock();
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static inline atomic64_t *get_active_times(struct concurrent_times *times)
|
||||
+{
|
||||
+ return times->active;
|
||||
+}
|
||||
+
|
||||
+static int concurrent_active_time_seq_show(struct seq_file *m, void *v)
|
||||
+{
|
||||
+ if (v == uid_hash_table) {
|
||||
+ seq_put_decimal_ull(m, "cpus: ", num_possible_cpus());
|
||||
+ seq_putc(m, '\n');
|
||||
+ }
|
||||
+
|
||||
+ return concurrent_time_seq_show(m, v, get_active_times);
|
||||
+}
|
||||
+
|
||||
+static inline atomic64_t *get_policy_times(struct concurrent_times *times)
|
||||
+{
|
||||
+ return times->policy;
|
||||
+}
|
||||
+
|
||||
+static int concurrent_policy_time_seq_show(struct seq_file *m, void *v)
|
||||
+{
|
||||
+ int i;
|
||||
+ struct cpu_freqs *freqs, *last_freqs = NULL;
|
||||
+
|
||||
+ if (v == uid_hash_table) {
|
||||
+ int cnt = 0;
|
||||
+
|
||||
+ for_each_possible_cpu(i) {
|
||||
+ freqs = all_freqs[i];
|
||||
+ if (!freqs)
|
||||
+ continue;
|
||||
+ if (freqs != last_freqs) {
|
||||
+ if (last_freqs) {
|
||||
+ seq_put_decimal_ull(m, ": ", cnt);
|
||||
+ seq_putc(m, ' ');
|
||||
+ cnt = 0;
|
||||
+ }
|
||||
+ seq_put_decimal_ull(m, "policy", i);
|
||||
+
|
||||
+ last_freqs = freqs;
|
||||
+ }
|
||||
+ cnt++;
|
||||
+ }
|
||||
+ if (last_freqs) {
|
||||
+ seq_put_decimal_ull(m, ": ", cnt);
|
||||
+ seq_putc(m, '\n');
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return concurrent_time_seq_show(m, v, get_policy_times);
|
||||
+}
|
||||
+
|
||||
void cpufreq_task_times_init(struct task_struct *p)
|
||||
{
|
||||
unsigned long flags;
|
||||
@@ -326,11 +419,16 @@ void cpufreq_acct_update_power(struct task_struct *p, u64 cputime)
|
||||
{
|
||||
unsigned long flags;
|
||||
unsigned int state;
|
||||
+ unsigned int active_cpu_cnt = 0;
|
||||
+ unsigned int policy_cpu_cnt = 0;
|
||||
+ unsigned int policy_first_cpu;
|
||||
struct uid_entry *uid_entry;
|
||||
struct cpu_freqs *freqs = all_freqs[task_cpu(p)];
|
||||
+ struct cpufreq_policy *policy;
|
||||
uid_t uid = from_kuid_munged(current_user_ns(), task_uid(p));
|
||||
+ int cpu = 0;
|
||||
|
||||
- if (!freqs || p->flags & PF_EXITING)
|
||||
+ if (!freqs || is_idle_task(p) || p->flags & PF_EXITING)
|
||||
return;
|
||||
|
||||
state = freqs->offset + READ_ONCE(freqs->last_index);
|
||||
@@ -346,6 +444,42 @@ void cpufreq_acct_update_power(struct task_struct *p, u64 cputime)
|
||||
if (uid_entry && state < uid_entry->max_state)
|
||||
uid_entry->time_in_state[state] += cputime;
|
||||
spin_unlock_irqrestore(&uid_lock, flags);
|
||||
+
|
||||
+ rcu_read_lock();
|
||||
+ uid_entry = find_uid_entry_rcu(uid);
|
||||
+ if (!uid_entry) {
|
||||
+ rcu_read_unlock();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ for_each_possible_cpu(cpu)
|
||||
+ if (!idle_cpu(cpu))
|
||||
+ ++active_cpu_cnt;
|
||||
+
|
||||
+ atomic64_add(cputime,
|
||||
+ &uid_entry->concurrent_times->active[active_cpu_cnt - 1]);
|
||||
+
|
||||
+ policy = cpufreq_cpu_get(task_cpu(p));
|
||||
+ if (!policy) {
|
||||
+ /*
|
||||
+ * This CPU may have just come up and not have a cpufreq policy
|
||||
+ * yet.
|
||||
+ */
|
||||
+ rcu_read_unlock();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ for_each_cpu(cpu, policy->related_cpus)
|
||||
+ if (!idle_cpu(cpu))
|
||||
+ ++policy_cpu_cnt;
|
||||
+
|
||||
+ policy_first_cpu = cpumask_first(policy->related_cpus);
|
||||
+ cpufreq_cpu_put(policy);
|
||||
+
|
||||
+ atomic64_add(cputime,
|
||||
+ &uid_entry->concurrent_times->policy[policy_first_cpu +
|
||||
+ policy_cpu_cnt - 1]);
|
||||
+ rcu_read_unlock();
|
||||
}
|
||||
|
||||
void cpufreq_times_create_policy(struct cpufreq_policy *policy)
|
||||
@@ -387,6 +521,14 @@ void cpufreq_times_create_policy(struct cpufreq_policy *policy)
|
||||
all_freqs[cpu] = freqs;
|
||||
}
|
||||
|
||||
+static void uid_entry_reclaim(struct rcu_head *rcu)
|
||||
+{
|
||||
+ struct uid_entry *uid_entry = container_of(rcu, struct uid_entry, rcu);
|
||||
+
|
||||
+ kfree(uid_entry->concurrent_times);
|
||||
+ kfree(uid_entry);
|
||||
+}
|
||||
+
|
||||
void cpufreq_task_times_remove_uids(uid_t uid_start, uid_t uid_end)
|
||||
{
|
||||
struct uid_entry *uid_entry;
|
||||
@@ -400,7 +542,7 @@ void cpufreq_task_times_remove_uids(uid_t uid_start, uid_t uid_end)
|
||||
hash, uid_start) {
|
||||
if (uid_start == uid_entry->uid) {
|
||||
hash_del_rcu(&uid_entry->hash);
|
||||
- kfree_rcu(uid_entry, rcu);
|
||||
+ call_rcu(&uid_entry->rcu, uid_entry_reclaim);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -453,11 +595,55 @@ static const struct file_operations uid_time_in_state_fops = {
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
+static const struct seq_operations concurrent_active_time_seq_ops = {
|
||||
+ .start = uid_seq_start,
|
||||
+ .next = uid_seq_next,
|
||||
+ .stop = uid_seq_stop,
|
||||
+ .show = concurrent_active_time_seq_show,
|
||||
+};
|
||||
+
|
||||
+static int concurrent_active_time_open(struct inode *inode, struct file *file)
|
||||
+{
|
||||
+ return seq_open(file, &concurrent_active_time_seq_ops);
|
||||
+}
|
||||
+
|
||||
+static const struct file_operations concurrent_active_time_fops = {
|
||||
+ .open = concurrent_active_time_open,
|
||||
+ .read = seq_read,
|
||||
+ .llseek = seq_lseek,
|
||||
+ .release = seq_release,
|
||||
+};
|
||||
+
|
||||
+static const struct seq_operations concurrent_policy_time_seq_ops = {
|
||||
+ .start = uid_seq_start,
|
||||
+ .next = uid_seq_next,
|
||||
+ .stop = uid_seq_stop,
|
||||
+ .show = concurrent_policy_time_seq_show,
|
||||
+};
|
||||
+
|
||||
+static int concurrent_policy_time_open(struct inode *inode, struct file *file)
|
||||
+{
|
||||
+ return seq_open(file, &concurrent_policy_time_seq_ops);
|
||||
+}
|
||||
+
|
||||
+static const struct file_operations concurrent_policy_time_fops = {
|
||||
+ .open = concurrent_policy_time_open,
|
||||
+ .read = seq_read,
|
||||
+ .llseek = seq_lseek,
|
||||
+ .release = seq_release,
|
||||
+};
|
||||
+
|
||||
static int __init cpufreq_times_init(void)
|
||||
{
|
||||
proc_create_data("uid_time_in_state", 0444, NULL,
|
||||
&uid_time_in_state_fops, NULL);
|
||||
|
||||
+ proc_create_data("uid_concurrent_active_time", 0444, NULL,
|
||||
+ &concurrent_active_time_fops, NULL);
|
||||
+
|
||||
+ proc_create_data("uid_concurrent_policy_time", 0444, NULL,
|
||||
+ &concurrent_policy_time_fops, NULL);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,151 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Connor O'Brien <connoro@google.com>
|
||||
Date: Fri, 1 Mar 2019 15:40:30 -0800
|
||||
Subject: ANDROID: cpufreq: times: don't copy invalid freqs from freq table
|
||||
|
||||
Invalid frequency checks are a bottleneck in reading
|
||||
/proc/uid_time_in_state, but there's no reason to include invalid
|
||||
frequencies in our local copies of frequency tables. Revise
|
||||
cpufreq_times_create_policy() to only copy valid frequencies, and
|
||||
eliminate all the checks this change makes unnecessary.
|
||||
|
||||
Bug: 111216804
|
||||
Test: cat /proc/uid_time_in_state & confirm values & format are sane
|
||||
Test: /proc/uid_time_in_state read times reduced by ~40%
|
||||
Change-Id: I506420a6ac5fe8a6c87d01b16ad267b192d43f1d
|
||||
Signed-off-by: Connor O'Brien <connoro@google.com>
|
||||
---
|
||||
drivers/cpufreq/cpufreq_times.c | 55 ++++++++++++---------------------
|
||||
1 file changed, 19 insertions(+), 36 deletions(-)
|
||||
|
||||
diff --git a/drivers/cpufreq/cpufreq_times.c b/drivers/cpufreq/cpufreq_times.c
|
||||
index 2883d675b1eb..5b5248a7c87c 100644
|
||||
--- a/drivers/cpufreq/cpufreq_times.c
|
||||
+++ b/drivers/cpufreq/cpufreq_times.c
|
||||
@@ -137,27 +137,10 @@ static struct uid_entry *find_or_register_uid_locked(uid_t uid)
|
||||
return uid_entry;
|
||||
}
|
||||
|
||||
-static bool freq_index_invalid(unsigned int index)
|
||||
-{
|
||||
- unsigned int cpu;
|
||||
- struct cpu_freqs *freqs;
|
||||
-
|
||||
- for_each_possible_cpu(cpu) {
|
||||
- freqs = all_freqs[cpu];
|
||||
- if (!freqs || index < freqs->offset ||
|
||||
- freqs->offset + freqs->max_state <= index)
|
||||
- continue;
|
||||
- return freqs->freq_table[index - freqs->offset] ==
|
||||
- CPUFREQ_ENTRY_INVALID;
|
||||
- }
|
||||
- return true;
|
||||
-}
|
||||
-
|
||||
static int single_uid_time_in_state_show(struct seq_file *m, void *ptr)
|
||||
{
|
||||
struct uid_entry *uid_entry;
|
||||
unsigned int i;
|
||||
- u64 time;
|
||||
uid_t uid = from_kuid_munged(current_user_ns(), *(kuid_t *)m->private);
|
||||
|
||||
if (uid == overflowuid)
|
||||
@@ -172,9 +155,7 @@ static int single_uid_time_in_state_show(struct seq_file *m, void *ptr)
|
||||
}
|
||||
|
||||
for (i = 0; i < uid_entry->max_state; ++i) {
|
||||
- if (freq_index_invalid(i))
|
||||
- continue;
|
||||
- time = nsec_to_clock_t(uid_entry->time_in_state[i]);
|
||||
+ u64 time = nsec_to_clock_t(uid_entry->time_in_state[i]);
|
||||
seq_write(m, &time, sizeof(time));
|
||||
}
|
||||
|
||||
@@ -219,9 +200,6 @@ static int uid_time_in_state_seq_show(struct seq_file *m, void *v)
|
||||
continue;
|
||||
last_freqs = freqs;
|
||||
for (i = 0; i < freqs->max_state; i++) {
|
||||
- if (freqs->freq_table[i] ==
|
||||
- CPUFREQ_ENTRY_INVALID)
|
||||
- continue;
|
||||
seq_put_decimal_ull(m, " ",
|
||||
freqs->freq_table[i]);
|
||||
}
|
||||
@@ -237,10 +215,7 @@ static int uid_time_in_state_seq_show(struct seq_file *m, void *v)
|
||||
seq_putc(m, ':');
|
||||
}
|
||||
for (i = 0; i < uid_entry->max_state; ++i) {
|
||||
- u64 time;
|
||||
- if (freq_index_invalid(i))
|
||||
- continue;
|
||||
- time = nsec_to_clock_t(uid_entry->time_in_state[i]);
|
||||
+ u64 time = nsec_to_clock_t(uid_entry->time_in_state[i]);
|
||||
seq_put_decimal_ull(m, " ", time);
|
||||
}
|
||||
if (uid_entry->max_state)
|
||||
@@ -407,8 +382,6 @@ int proc_time_in_state_show(struct seq_file *m, struct pid_namespace *ns,
|
||||
|
||||
seq_printf(m, "cpu%u\n", cpu);
|
||||
for (i = 0; i < freqs->max_state; i++) {
|
||||
- if (freqs->freq_table[i] == CPUFREQ_ENTRY_INVALID)
|
||||
- continue;
|
||||
cputime = 0;
|
||||
if (freqs->offset + i < p->max_state &&
|
||||
p->time_in_state)
|
||||
@@ -488,9 +461,19 @@ void cpufreq_acct_update_power(struct task_struct *p, u64 cputime)
|
||||
rcu_read_unlock();
|
||||
}
|
||||
|
||||
+static int cpufreq_times_get_index(struct cpu_freqs *freqs, unsigned int freq)
|
||||
+{
|
||||
+ int index;
|
||||
+ for (index = 0; index < freqs->max_state; ++index) {
|
||||
+ if (freqs->freq_table[index] == freq)
|
||||
+ return index;
|
||||
+ }
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
void cpufreq_times_create_policy(struct cpufreq_policy *policy)
|
||||
{
|
||||
- int cpu, index;
|
||||
+ int cpu, index = 0;
|
||||
unsigned int count = 0;
|
||||
struct cpufreq_frequency_table *pos, *table;
|
||||
struct cpu_freqs *freqs;
|
||||
@@ -503,7 +486,7 @@ void cpufreq_times_create_policy(struct cpufreq_policy *policy)
|
||||
if (!table)
|
||||
return;
|
||||
|
||||
- cpufreq_for_each_entry(pos, table)
|
||||
+ cpufreq_for_each_valid_entry(pos, table)
|
||||
count++;
|
||||
|
||||
tmp = kzalloc(sizeof(*freqs) + sizeof(freqs->freq_table[0]) * count,
|
||||
@@ -514,13 +497,13 @@ void cpufreq_times_create_policy(struct cpufreq_policy *policy)
|
||||
freqs = tmp;
|
||||
freqs->max_state = count;
|
||||
|
||||
- index = cpufreq_frequency_table_get_index(policy, policy->cur);
|
||||
+ cpufreq_for_each_valid_entry(pos, table)
|
||||
+ freqs->freq_table[index++] = pos->frequency;
|
||||
+
|
||||
+ index = cpufreq_times_get_index(freqs, policy->cur);
|
||||
if (index >= 0)
|
||||
WRITE_ONCE(freqs->last_index, index);
|
||||
|
||||
- cpufreq_for_each_entry(pos, table)
|
||||
- freqs->freq_table[pos - table] = pos->frequency;
|
||||
-
|
||||
freqs->offset = next_offset;
|
||||
WRITE_ONCE(next_offset, freqs->offset + count);
|
||||
for_each_cpu(cpu, policy->related_cpus)
|
||||
@@ -564,7 +547,7 @@ void cpufreq_times_record_transition(struct cpufreq_policy *policy,
|
||||
if (!freqs)
|
||||
return;
|
||||
|
||||
- index = cpufreq_frequency_table_get_index(policy, new_freq);
|
||||
+ index = cpufreq_times_get_index(freqs, new_freq);
|
||||
if (index >= 0)
|
||||
WRITE_ONCE(freqs->last_index, index);
|
||||
}
|
|
@ -1,72 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Connor O'Brien <connoro@google.com>
|
||||
Date: Wed, 20 Feb 2019 12:17:48 -0800
|
||||
Subject: ANDROID: cpufreq: times: optimize proc files
|
||||
|
||||
The majority of the time spent reading /proc/uid_time_in_state is due
|
||||
to seq_printf calls. Use the faster seq_put_* variations instead.
|
||||
|
||||
Also skip empty hash buckets in uid_seq_next for a further performance
|
||||
improvement.
|
||||
|
||||
Bug: 111216804
|
||||
Bug: 127641090
|
||||
Test: Read /proc/uid_time_in_state and confirm output is sane
|
||||
Test: Compare read times to confirm performance improvement
|
||||
Change-Id: If8783b498ed73d2ddb186a49438af41ac5ab9957
|
||||
Signed-off-by: Connor O'Brien <connoro@google.com>
|
||||
---
|
||||
drivers/cpufreq/cpufreq_times.c | 22 ++++++++++++++--------
|
||||
1 file changed, 14 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/cpufreq/cpufreq_times.c b/drivers/cpufreq/cpufreq_times.c
|
||||
index 42420c5e1e6f..2883d675b1eb 100644
|
||||
--- a/drivers/cpufreq/cpufreq_times.c
|
||||
+++ b/drivers/cpufreq/cpufreq_times.c
|
||||
@@ -193,10 +193,12 @@ static void *uid_seq_start(struct seq_file *seq, loff_t *pos)
|
||||
|
||||
static void *uid_seq_next(struct seq_file *seq, void *v, loff_t *pos)
|
||||
{
|
||||
- (*pos)++;
|
||||
+ do {
|
||||
+ (*pos)++;
|
||||
|
||||
- if (*pos >= HASH_SIZE(uid_hash_table))
|
||||
- return NULL;
|
||||
+ if (*pos >= HASH_SIZE(uid_hash_table))
|
||||
+ return NULL;
|
||||
+ } while (hlist_empty(&uid_hash_table[*pos]));
|
||||
|
||||
return &uid_hash_table[*pos];
|
||||
}
|
||||
@@ -220,7 +222,8 @@ static int uid_time_in_state_seq_show(struct seq_file *m, void *v)
|
||||
if (freqs->freq_table[i] ==
|
||||
CPUFREQ_ENTRY_INVALID)
|
||||
continue;
|
||||
- seq_printf(m, " %d", freqs->freq_table[i]);
|
||||
+ seq_put_decimal_ull(m, " ",
|
||||
+ freqs->freq_table[i]);
|
||||
}
|
||||
}
|
||||
seq_putc(m, '\n');
|
||||
@@ -229,13 +232,16 @@ static int uid_time_in_state_seq_show(struct seq_file *m, void *v)
|
||||
rcu_read_lock();
|
||||
|
||||
hlist_for_each_entry_rcu(uid_entry, (struct hlist_head *)v, hash) {
|
||||
- if (uid_entry->max_state)
|
||||
- seq_printf(m, "%d:", uid_entry->uid);
|
||||
+ if (uid_entry->max_state) {
|
||||
+ seq_put_decimal_ull(m, "", uid_entry->uid);
|
||||
+ seq_putc(m, ':');
|
||||
+ }
|
||||
for (i = 0; i < uid_entry->max_state; ++i) {
|
||||
+ u64 time;
|
||||
if (freq_index_invalid(i))
|
||||
continue;
|
||||
- seq_printf(m, " %lu", (unsigned long)nsec_to_clock_t(
|
||||
- uid_entry->time_in_state[i]));
|
||||
+ time = nsec_to_clock_t(uid_entry->time_in_state[i]);
|
||||
+ seq_put_decimal_ull(m, " ", time);
|
||||
}
|
||||
if (uid_entry->max_state)
|
||||
seq_putc(m, '\n');
|
|
@ -1,111 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Connor O'Brien <connoro@google.com>
|
||||
Date: Fri, 8 Feb 2019 12:30:41 -0800
|
||||
Subject: ANDROID: cpufreq: times: record fast switch frequency transitions
|
||||
|
||||
cpufreq_times_record_transition() is not called when fast switch is
|
||||
enabled, leading /proc/uid_time_in_state to attribute all time on a
|
||||
cluster to a single frequency. To fix this, add a call to
|
||||
cpufreq_times_record_transition() in the fast switch path.
|
||||
|
||||
Also revise cpufreq_times_record_transition() to simplify the new call
|
||||
and more closely align with cpufreq_stats_record_transition().
|
||||
|
||||
Bug: 121287027
|
||||
Bug: 127641090
|
||||
Test: /proc/uid_time_in_state shows times for more than one freq per
|
||||
cluster
|
||||
Change-Id: Ib63d19006878fafb88475e401ef243bdd8b11979
|
||||
Signed-off-by: Connor O'Brien <connoro@google.com>
|
||||
---
|
||||
drivers/cpufreq/cpufreq.c | 10 ++++++++--
|
||||
drivers/cpufreq/cpufreq_times.c | 15 ++++-----------
|
||||
include/linux/cpufreq_times.h | 5 +++--
|
||||
3 files changed, 15 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
|
||||
index a6512ee4b8cc..f9de9dece70f 100644
|
||||
--- a/drivers/cpufreq/cpufreq.c
|
||||
+++ b/drivers/cpufreq/cpufreq.c
|
||||
@@ -380,7 +380,7 @@ static void cpufreq_notify_transition(struct cpufreq_policy *policy,
|
||||
CPUFREQ_POSTCHANGE, freqs);
|
||||
|
||||
cpufreq_stats_record_transition(policy, freqs->new);
|
||||
- cpufreq_times_record_transition(freqs);
|
||||
+ cpufreq_times_record_transition(policy, freqs->new);
|
||||
policy->cur = freqs->new;
|
||||
}
|
||||
}
|
||||
@@ -2023,9 +2023,15 @@ EXPORT_SYMBOL(cpufreq_unregister_notifier);
|
||||
unsigned int cpufreq_driver_fast_switch(struct cpufreq_policy *policy,
|
||||
unsigned int target_freq)
|
||||
{
|
||||
+ int ret;
|
||||
+
|
||||
target_freq = clamp_val(target_freq, policy->min, policy->max);
|
||||
|
||||
- return cpufreq_driver->fast_switch(policy, target_freq);
|
||||
+ ret = cpufreq_driver->fast_switch(policy, target_freq);
|
||||
+ if (ret)
|
||||
+ cpufreq_times_record_transition(policy, ret);
|
||||
+
|
||||
+ return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(cpufreq_driver_fast_switch);
|
||||
|
||||
diff --git a/drivers/cpufreq/cpufreq_times.c b/drivers/cpufreq/cpufreq_times.c
|
||||
index aaded60c9a21..42420c5e1e6f 100644
|
||||
--- a/drivers/cpufreq/cpufreq_times.c
|
||||
+++ b/drivers/cpufreq/cpufreq_times.c
|
||||
@@ -550,24 +550,17 @@ void cpufreq_task_times_remove_uids(uid_t uid_start, uid_t uid_end)
|
||||
spin_unlock_irqrestore(&uid_lock, flags);
|
||||
}
|
||||
|
||||
-void cpufreq_times_record_transition(struct cpufreq_freqs *freq)
|
||||
+void cpufreq_times_record_transition(struct cpufreq_policy *policy,
|
||||
+ unsigned int new_freq)
|
||||
{
|
||||
int index;
|
||||
- struct cpu_freqs *freqs = all_freqs[freq->cpu];
|
||||
- struct cpufreq_policy *policy;
|
||||
-
|
||||
+ struct cpu_freqs *freqs = all_freqs[policy->cpu];
|
||||
if (!freqs)
|
||||
return;
|
||||
|
||||
- policy = cpufreq_cpu_get(freq->cpu);
|
||||
- if (!policy)
|
||||
- return;
|
||||
-
|
||||
- index = cpufreq_frequency_table_get_index(policy, freq->new);
|
||||
+ index = cpufreq_frequency_table_get_index(policy, new_freq);
|
||||
if (index >= 0)
|
||||
WRITE_ONCE(freqs->last_index, index);
|
||||
-
|
||||
- cpufreq_cpu_put(policy);
|
||||
}
|
||||
|
||||
static const struct seq_operations uid_time_in_state_seq_ops = {
|
||||
diff --git a/include/linux/cpufreq_times.h b/include/linux/cpufreq_times.h
|
||||
index 757bf0cb6070..0eb6dc9d0fe2 100644
|
||||
--- a/include/linux/cpufreq_times.h
|
||||
+++ b/include/linux/cpufreq_times.h
|
||||
@@ -27,7 +27,8 @@ int proc_time_in_state_show(struct seq_file *m, struct pid_namespace *ns,
|
||||
struct pid *pid, struct task_struct *p);
|
||||
void cpufreq_acct_update_power(struct task_struct *p, u64 cputime);
|
||||
void cpufreq_times_create_policy(struct cpufreq_policy *policy);
|
||||
-void cpufreq_times_record_transition(struct cpufreq_freqs *freq);
|
||||
+void cpufreq_times_record_transition(struct cpufreq_policy *policy,
|
||||
+ unsigned int new_freq);
|
||||
void cpufreq_task_times_remove_uids(uid_t uid_start, uid_t uid_end);
|
||||
int single_uid_time_in_state_open(struct inode *inode, struct file *file);
|
||||
#else
|
||||
@@ -38,7 +39,7 @@ static inline void cpufreq_acct_update_power(struct task_struct *p,
|
||||
u64 cputime) {}
|
||||
static inline void cpufreq_times_create_policy(struct cpufreq_policy *policy) {}
|
||||
static inline void cpufreq_times_record_transition(
|
||||
- struct cpufreq_freqs *freq) {}
|
||||
+ struct cpufreq_policy *policy, unsigned int new_freq) {}
|
||||
static inline void cpufreq_task_times_remove_uids(uid_t uid_start,
|
||||
uid_t uid_end) {}
|
||||
#endif /* CONFIG_CPU_FREQ_TIMES */
|
|
@ -1,328 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Connor O'Brien <connoro@google.com>
|
||||
Date: Tue, 6 Feb 2018 13:30:27 -0800
|
||||
Subject: ANDROID: cpufreq: times: track per-uid time in state
|
||||
|
||||
Add /proc/uid_time_in_state showing per uid/frequency/cluster
|
||||
times. Allow uid removal through /proc/uid_cputime/remove_uid_range.
|
||||
|
||||
Signed-off-by: Connor O'Brien <connoro@google.com>
|
||||
Bug: 72339335
|
||||
Bug: 127641090
|
||||
Test: Read /proc/uid_time_in_state
|
||||
Change-Id: I20ba3546a27c25b7e7991e2a86986e158aafa58c
|
||||
---
|
||||
drivers/cpufreq/cpufreq_times.c | 208 ++++++++++++++++++++++++++++++++
|
||||
drivers/misc/uid_sys_stats.c | 4 +
|
||||
include/linux/cpufreq_times.h | 3 +
|
||||
3 files changed, 215 insertions(+)
|
||||
|
||||
diff --git a/drivers/cpufreq/cpufreq_times.c b/drivers/cpufreq/cpufreq_times.c
|
||||
index 339a3e9cf082..15b52e1f82fc 100644
|
||||
--- a/drivers/cpufreq/cpufreq_times.c
|
||||
+++ b/drivers/cpufreq/cpufreq_times.c
|
||||
@@ -15,14 +15,30 @@
|
||||
|
||||
#include <linux/cpufreq.h>
|
||||
#include <linux/cpufreq_times.h>
|
||||
+#include <linux/hashtable.h>
|
||||
+#include <linux/init.h>
|
||||
#include <linux/jiffies.h>
|
||||
+#include <linux/proc_fs.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/threads.h>
|
||||
|
||||
+#define UID_HASH_BITS 10
|
||||
+
|
||||
+static DECLARE_HASHTABLE(uid_hash_table, UID_HASH_BITS);
|
||||
+
|
||||
static DEFINE_SPINLOCK(task_time_in_state_lock); /* task->time_in_state */
|
||||
+static DEFINE_SPINLOCK(uid_lock); /* uid_hash_table */
|
||||
+
|
||||
+struct uid_entry {
|
||||
+ uid_t uid;
|
||||
+ unsigned int max_state;
|
||||
+ struct hlist_node hash;
|
||||
+ struct rcu_head rcu;
|
||||
+ u64 time_in_state[0];
|
||||
+};
|
||||
|
||||
/**
|
||||
* struct cpu_freqs - per-cpu frequency information
|
||||
@@ -42,6 +58,137 @@ static struct cpu_freqs *all_freqs[NR_CPUS];
|
||||
|
||||
static unsigned int next_offset;
|
||||
|
||||
+/* Caller must hold uid lock */
|
||||
+static struct uid_entry *find_uid_entry_locked(uid_t uid)
|
||||
+{
|
||||
+ struct uid_entry *uid_entry;
|
||||
+
|
||||
+ hash_for_each_possible(uid_hash_table, uid_entry, hash, uid) {
|
||||
+ if (uid_entry->uid == uid)
|
||||
+ return uid_entry;
|
||||
+ }
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+/* Caller must hold uid lock */
|
||||
+static struct uid_entry *find_or_register_uid_locked(uid_t uid)
|
||||
+{
|
||||
+ struct uid_entry *uid_entry, *temp;
|
||||
+ unsigned int max_state = READ_ONCE(next_offset);
|
||||
+ size_t alloc_size = sizeof(*uid_entry) + max_state *
|
||||
+ sizeof(uid_entry->time_in_state[0]);
|
||||
+
|
||||
+ uid_entry = find_uid_entry_locked(uid);
|
||||
+ if (uid_entry) {
|
||||
+ if (uid_entry->max_state == max_state)
|
||||
+ return uid_entry;
|
||||
+ /* uid_entry->time_in_state is too small to track all freqs, so
|
||||
+ * expand it.
|
||||
+ */
|
||||
+ temp = __krealloc(uid_entry, alloc_size, GFP_ATOMIC);
|
||||
+ if (!temp)
|
||||
+ return uid_entry;
|
||||
+ temp->max_state = max_state;
|
||||
+ memset(temp->time_in_state + uid_entry->max_state, 0,
|
||||
+ (max_state - uid_entry->max_state) *
|
||||
+ sizeof(uid_entry->time_in_state[0]));
|
||||
+ if (temp != uid_entry) {
|
||||
+ hlist_replace_rcu(&uid_entry->hash, &temp->hash);
|
||||
+ kfree_rcu(uid_entry, rcu);
|
||||
+ }
|
||||
+ return temp;
|
||||
+ }
|
||||
+
|
||||
+ uid_entry = kzalloc(alloc_size, GFP_ATOMIC);
|
||||
+ if (!uid_entry)
|
||||
+ return NULL;
|
||||
+
|
||||
+ uid_entry->uid = uid;
|
||||
+ uid_entry->max_state = max_state;
|
||||
+
|
||||
+ hash_add_rcu(uid_hash_table, &uid_entry->hash, uid);
|
||||
+
|
||||
+ return uid_entry;
|
||||
+}
|
||||
+
|
||||
+static bool freq_index_invalid(unsigned int index)
|
||||
+{
|
||||
+ unsigned int cpu;
|
||||
+ struct cpu_freqs *freqs;
|
||||
+
|
||||
+ for_each_possible_cpu(cpu) {
|
||||
+ freqs = all_freqs[cpu];
|
||||
+ if (!freqs || index < freqs->offset ||
|
||||
+ freqs->offset + freqs->max_state <= index)
|
||||
+ continue;
|
||||
+ return freqs->freq_table[index - freqs->offset] ==
|
||||
+ CPUFREQ_ENTRY_INVALID;
|
||||
+ }
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+static void *uid_seq_start(struct seq_file *seq, loff_t *pos)
|
||||
+{
|
||||
+ if (*pos >= HASH_SIZE(uid_hash_table))
|
||||
+ return NULL;
|
||||
+
|
||||
+ return &uid_hash_table[*pos];
|
||||
+}
|
||||
+
|
||||
+static void *uid_seq_next(struct seq_file *seq, void *v, loff_t *pos)
|
||||
+{
|
||||
+ (*pos)++;
|
||||
+
|
||||
+ if (*pos >= HASH_SIZE(uid_hash_table))
|
||||
+ return NULL;
|
||||
+
|
||||
+ return &uid_hash_table[*pos];
|
||||
+}
|
||||
+
|
||||
+static void uid_seq_stop(struct seq_file *seq, void *v) { }
|
||||
+
|
||||
+static int uid_time_in_state_seq_show(struct seq_file *m, void *v)
|
||||
+{
|
||||
+ struct uid_entry *uid_entry;
|
||||
+ struct cpu_freqs *freqs, *last_freqs = NULL;
|
||||
+ int i, cpu;
|
||||
+
|
||||
+ if (v == uid_hash_table) {
|
||||
+ seq_puts(m, "uid:");
|
||||
+ for_each_possible_cpu(cpu) {
|
||||
+ freqs = all_freqs[cpu];
|
||||
+ if (!freqs || freqs == last_freqs)
|
||||
+ continue;
|
||||
+ last_freqs = freqs;
|
||||
+ for (i = 0; i < freqs->max_state; i++) {
|
||||
+ if (freqs->freq_table[i] ==
|
||||
+ CPUFREQ_ENTRY_INVALID)
|
||||
+ continue;
|
||||
+ seq_printf(m, " %d", freqs->freq_table[i]);
|
||||
+ }
|
||||
+ }
|
||||
+ seq_putc(m, '\n');
|
||||
+ }
|
||||
+
|
||||
+ rcu_read_lock();
|
||||
+
|
||||
+ hlist_for_each_entry_rcu(uid_entry, (struct hlist_head *)v, hash) {
|
||||
+ if (uid_entry->max_state)
|
||||
+ seq_printf(m, "%d:", uid_entry->uid);
|
||||
+ for (i = 0; i < uid_entry->max_state; ++i) {
|
||||
+ if (freq_index_invalid(i))
|
||||
+ continue;
|
||||
+ seq_printf(m, " %lu", (unsigned long)nsec_to_clock_t(
|
||||
+ uid_entry->time_in_state[i]));
|
||||
+ }
|
||||
+ if (uid_entry->max_state)
|
||||
+ seq_putc(m, '\n');
|
||||
+ }
|
||||
+
|
||||
+ rcu_read_unlock();
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
void cpufreq_task_times_init(struct task_struct *p)
|
||||
{
|
||||
unsigned long flags;
|
||||
@@ -90,6 +237,9 @@ void cpufreq_task_times_exit(struct task_struct *p)
|
||||
unsigned long flags;
|
||||
void *temp;
|
||||
|
||||
+ if (!p->time_in_state)
|
||||
+ return;
|
||||
+
|
||||
spin_lock_irqsave(&task_time_in_state_lock, flags);
|
||||
temp = p->time_in_state;
|
||||
p->time_in_state = NULL;
|
||||
@@ -133,7 +283,9 @@ void cpufreq_acct_update_power(struct task_struct *p, u64 cputime)
|
||||
{
|
||||
unsigned long flags;
|
||||
unsigned int state;
|
||||
+ struct uid_entry *uid_entry;
|
||||
struct cpu_freqs *freqs = all_freqs[task_cpu(p)];
|
||||
+ uid_t uid = from_kuid_munged(current_user_ns(), task_uid(p));
|
||||
|
||||
if (!freqs || p->flags & PF_EXITING)
|
||||
return;
|
||||
@@ -145,6 +297,12 @@ void cpufreq_acct_update_power(struct task_struct *p, u64 cputime)
|
||||
p->time_in_state)
|
||||
p->time_in_state[state] += cputime;
|
||||
spin_unlock_irqrestore(&task_time_in_state_lock, flags);
|
||||
+
|
||||
+ spin_lock_irqsave(&uid_lock, flags);
|
||||
+ uid_entry = find_or_register_uid_locked(uid);
|
||||
+ if (uid_entry && state < uid_entry->max_state)
|
||||
+ uid_entry->time_in_state[state] += cputime;
|
||||
+ spin_unlock_irqrestore(&uid_lock, flags);
|
||||
}
|
||||
|
||||
void cpufreq_times_create_policy(struct cpufreq_policy *policy)
|
||||
@@ -186,6 +344,27 @@ void cpufreq_times_create_policy(struct cpufreq_policy *policy)
|
||||
all_freqs[cpu] = freqs;
|
||||
}
|
||||
|
||||
+void cpufreq_task_times_remove_uids(uid_t uid_start, uid_t uid_end)
|
||||
+{
|
||||
+ struct uid_entry *uid_entry;
|
||||
+ struct hlist_node *tmp;
|
||||
+ unsigned long flags;
|
||||
+
|
||||
+ spin_lock_irqsave(&uid_lock, flags);
|
||||
+
|
||||
+ for (; uid_start <= uid_end; uid_start++) {
|
||||
+ hash_for_each_possible_safe(uid_hash_table, uid_entry, tmp,
|
||||
+ hash, uid_start) {
|
||||
+ if (uid_start == uid_entry->uid) {
|
||||
+ hash_del_rcu(&uid_entry->hash);
|
||||
+ kfree_rcu(uid_entry, rcu);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ spin_unlock_irqrestore(&uid_lock, flags);
|
||||
+}
|
||||
+
|
||||
void cpufreq_times_record_transition(struct cpufreq_freqs *freq)
|
||||
{
|
||||
int index;
|
||||
@@ -205,3 +384,32 @@ void cpufreq_times_record_transition(struct cpufreq_freqs *freq)
|
||||
|
||||
cpufreq_cpu_put(policy);
|
||||
}
|
||||
+
|
||||
+static const struct seq_operations uid_time_in_state_seq_ops = {
|
||||
+ .start = uid_seq_start,
|
||||
+ .next = uid_seq_next,
|
||||
+ .stop = uid_seq_stop,
|
||||
+ .show = uid_time_in_state_seq_show,
|
||||
+};
|
||||
+
|
||||
+static int uid_time_in_state_open(struct inode *inode, struct file *file)
|
||||
+{
|
||||
+ return seq_open(file, &uid_time_in_state_seq_ops);
|
||||
+}
|
||||
+
|
||||
+static const struct file_operations uid_time_in_state_fops = {
|
||||
+ .open = uid_time_in_state_open,
|
||||
+ .read = seq_read,
|
||||
+ .llseek = seq_lseek,
|
||||
+ .release = seq_release,
|
||||
+};
|
||||
+
|
||||
+static int __init cpufreq_times_init(void)
|
||||
+{
|
||||
+ proc_create_data("uid_time_in_state", 0444, NULL,
|
||||
+ &uid_time_in_state_fops, NULL);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+early_initcall(cpufreq_times_init);
|
||||
diff --git a/drivers/misc/uid_sys_stats.c b/drivers/misc/uid_sys_stats.c
|
||||
index 36b5f37fca2f..88dc1cd3a204 100644
|
||||
--- a/drivers/misc/uid_sys_stats.c
|
||||
+++ b/drivers/misc/uid_sys_stats.c
|
||||
@@ -14,6 +14,7 @@
|
||||
*/
|
||||
|
||||
#include <linux/atomic.h>
|
||||
+#include <linux/cpufreq_times.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/hashtable.h>
|
||||
#include <linux/init.h>
|
||||
@@ -420,6 +421,9 @@ static ssize_t uid_remove_write(struct file *file,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
+ /* Also remove uids from /proc/uid_time_in_state */
|
||||
+ cpufreq_task_times_remove_uids(uid_start, uid_end);
|
||||
+
|
||||
rt_mutex_lock(&uid_lock);
|
||||
|
||||
for (; uid_start <= uid_end; uid_start++) {
|
||||
diff --git a/include/linux/cpufreq_times.h b/include/linux/cpufreq_times.h
|
||||
index bfef6e62c68a..a03157f649a4 100644
|
||||
--- a/include/linux/cpufreq_times.h
|
||||
+++ b/include/linux/cpufreq_times.h
|
||||
@@ -28,6 +28,7 @@ int proc_time_in_state_show(struct seq_file *m, struct pid_namespace *ns,
|
||||
void cpufreq_acct_update_power(struct task_struct *p, u64 cputime);
|
||||
void cpufreq_times_create_policy(struct cpufreq_policy *policy);
|
||||
void cpufreq_times_record_transition(struct cpufreq_freqs *freq);
|
||||
+void cpufreq_task_times_remove_uids(uid_t uid_start, uid_t uid_end);
|
||||
#else
|
||||
static inline void cpufreq_task_times_init(struct task_struct *p) {}
|
||||
static inline void cpufreq_task_times_alloc(struct task_struct *p) {}
|
||||
@@ -37,5 +38,7 @@ static inline void cpufreq_acct_update_power(struct task_struct *p,
|
||||
static inline void cpufreq_times_create_policy(struct cpufreq_policy *policy) {}
|
||||
static inline void cpufreq_times_record_transition(
|
||||
struct cpufreq_freqs *freq) {}
|
||||
+static inline void cpufreq_task_times_remove_uids(uid_t uid_start,
|
||||
+ uid_t uid_end) {}
|
||||
#endif /* CONFIG_CPU_FREQ_TIMES */
|
||||
#endif /* _LINUX_CPUFREQ_TIMES_H */
|
|
@ -1,473 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Connor O'Brien <connoro@google.com>
|
||||
Date: Wed, 31 Jan 2018 18:11:57 -0800
|
||||
Subject: ANDROID: cpufreq: track per-task time in state
|
||||
|
||||
Add time in state data to task structs, and create
|
||||
/proc/<pid>/time_in_state files to show how long each individual task
|
||||
has run at each frequency.
|
||||
Create a CONFIG_CPU_FREQ_TIMES option to enable/disable this tracking.
|
||||
|
||||
Bug: 72339335
|
||||
Bug: 127641090
|
||||
Test: Read /proc/<pid>/time_in_state
|
||||
Change-Id: Ia6456754f4cb1e83b2bc35efa8fbe9f8696febc8
|
||||
Signed-off-by: Connor O'Brien <connoro@google.com>
|
||||
[astrachan: Folded the following changes into this patch:
|
||||
a6d3de6a7fba ("ANDROID: Reduce use of #ifdef CONFIG_CPU_FREQ_TIMES")
|
||||
b89ada5d9c09 ("ANDROID: Fix massive cpufreq_times memory leaks")]
|
||||
Signed-off-by: Alistair Strachan <astrachan@google.com>
|
||||
---
|
||||
drivers/cpufreq/Kconfig | 7 ++
|
||||
drivers/cpufreq/Makefile | 5 +-
|
||||
drivers/cpufreq/cpufreq.c | 3 +
|
||||
drivers/cpufreq/cpufreq_times.c | 207 ++++++++++++++++++++++++++++++++
|
||||
fs/proc/base.c | 7 ++
|
||||
include/linux/cpufreq_times.h | 41 +++++++
|
||||
include/linux/sched.h | 4 +
|
||||
kernel/fork.c | 7 ++
|
||||
kernel/sched/cputime.c | 7 ++
|
||||
9 files changed, 287 insertions(+), 1 deletion(-)
|
||||
create mode 100644 drivers/cpufreq/cpufreq_times.c
|
||||
create mode 100644 include/linux/cpufreq_times.h
|
||||
|
||||
diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
|
||||
index bff5295016ae..f711715aa579 100644
|
||||
--- a/drivers/cpufreq/Kconfig
|
||||
+++ b/drivers/cpufreq/Kconfig
|
||||
@@ -34,6 +34,13 @@ config CPU_FREQ_STAT
|
||||
|
||||
If in doubt, say N.
|
||||
|
||||
+config CPU_FREQ_TIMES
|
||||
+ bool "CPU frequency time-in-state statistics"
|
||||
+ help
|
||||
+ Export CPU time-in-state information through procfs.
|
||||
+
|
||||
+ If in doubt, say N.
|
||||
+
|
||||
choice
|
||||
prompt "Default CPUFreq governor"
|
||||
default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1100_CPUFREQ || ARM_SA1110_CPUFREQ
|
||||
diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
|
||||
index 9a9f5ccd13d9..93d52a112cab 100644
|
||||
--- a/drivers/cpufreq/Makefile
|
||||
+++ b/drivers/cpufreq/Makefile
|
||||
@@ -5,7 +5,10 @@ obj-$(CONFIG_CPU_FREQ) += cpufreq.o freq_table.o
|
||||
# CPUfreq stats
|
||||
obj-$(CONFIG_CPU_FREQ_STAT) += cpufreq_stats.o
|
||||
|
||||
-# CPUfreq governors
|
||||
+# CPUfreq times
|
||||
+obj-$(CONFIG_CPU_FREQ_TIMES) += cpufreq_times.o
|
||||
+
|
||||
+# CPUfreq governors
|
||||
obj-$(CONFIG_CPU_FREQ_GOV_PERFORMANCE) += cpufreq_performance.o
|
||||
obj-$(CONFIG_CPU_FREQ_GOV_POWERSAVE) += cpufreq_powersave.o
|
||||
obj-$(CONFIG_CPU_FREQ_GOV_USERSPACE) += cpufreq_userspace.o
|
||||
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
|
||||
index c52d6fa32aac..a6512ee4b8cc 100644
|
||||
--- a/drivers/cpufreq/cpufreq.c
|
||||
+++ b/drivers/cpufreq/cpufreq.c
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/cpufreq.h>
|
||||
+#include <linux/cpufreq_times.h>
|
||||
#include <linux/cpu_cooling.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/device.h>
|
||||
@@ -379,6 +380,7 @@ static void cpufreq_notify_transition(struct cpufreq_policy *policy,
|
||||
CPUFREQ_POSTCHANGE, freqs);
|
||||
|
||||
cpufreq_stats_record_transition(policy, freqs->new);
|
||||
+ cpufreq_times_record_transition(freqs);
|
||||
policy->cur = freqs->new;
|
||||
}
|
||||
}
|
||||
@@ -1460,6 +1462,7 @@ static int cpufreq_online(unsigned int cpu)
|
||||
goto out_destroy_policy;
|
||||
|
||||
cpufreq_stats_create_table(policy);
|
||||
+ cpufreq_times_create_policy(policy);
|
||||
|
||||
write_lock_irqsave(&cpufreq_driver_lock, flags);
|
||||
list_add(&policy->policy_list, &cpufreq_policy_list);
|
||||
diff --git a/drivers/cpufreq/cpufreq_times.c b/drivers/cpufreq/cpufreq_times.c
|
||||
new file mode 100644
|
||||
index 000000000000..339a3e9cf082
|
||||
--- /dev/null
|
||||
+++ b/drivers/cpufreq/cpufreq_times.c
|
||||
@@ -0,0 +1,207 @@
|
||||
+/* drivers/cpufreq/cpufreq_times.c
|
||||
+ *
|
||||
+ * Copyright (C) 2018 Google, Inc.
|
||||
+ *
|
||||
+ * This software is licensed under the terms of the GNU General Public
|
||||
+ * License version 2, as published by the Free Software Foundation, and
|
||||
+ * may be copied, distributed, and modified under those terms.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#include <linux/cpufreq.h>
|
||||
+#include <linux/cpufreq_times.h>
|
||||
+#include <linux/jiffies.h>
|
||||
+#include <linux/sched.h>
|
||||
+#include <linux/seq_file.h>
|
||||
+#include <linux/slab.h>
|
||||
+#include <linux/spinlock.h>
|
||||
+#include <linux/threads.h>
|
||||
+
|
||||
+static DEFINE_SPINLOCK(task_time_in_state_lock); /* task->time_in_state */
|
||||
+
|
||||
+/**
|
||||
+ * struct cpu_freqs - per-cpu frequency information
|
||||
+ * @offset: start of these freqs' stats in task time_in_state array
|
||||
+ * @max_state: number of entries in freq_table
|
||||
+ * @last_index: index in freq_table of last frequency switched to
|
||||
+ * @freq_table: list of available frequencies
|
||||
+ */
|
||||
+struct cpu_freqs {
|
||||
+ unsigned int offset;
|
||||
+ unsigned int max_state;
|
||||
+ unsigned int last_index;
|
||||
+ unsigned int freq_table[0];
|
||||
+};
|
||||
+
|
||||
+static struct cpu_freqs *all_freqs[NR_CPUS];
|
||||
+
|
||||
+static unsigned int next_offset;
|
||||
+
|
||||
+void cpufreq_task_times_init(struct task_struct *p)
|
||||
+{
|
||||
+ unsigned long flags;
|
||||
+
|
||||
+ spin_lock_irqsave(&task_time_in_state_lock, flags);
|
||||
+ p->time_in_state = NULL;
|
||||
+ spin_unlock_irqrestore(&task_time_in_state_lock, flags);
|
||||
+ p->max_state = 0;
|
||||
+}
|
||||
+
|
||||
+void cpufreq_task_times_alloc(struct task_struct *p)
|
||||
+{
|
||||
+ void *temp;
|
||||
+ unsigned long flags;
|
||||
+ unsigned int max_state = READ_ONCE(next_offset);
|
||||
+
|
||||
+ /* We use one array to avoid multiple allocs per task */
|
||||
+ temp = kcalloc(max_state, sizeof(p->time_in_state[0]), GFP_ATOMIC);
|
||||
+ if (!temp)
|
||||
+ return;
|
||||
+
|
||||
+ spin_lock_irqsave(&task_time_in_state_lock, flags);
|
||||
+ p->time_in_state = temp;
|
||||
+ spin_unlock_irqrestore(&task_time_in_state_lock, flags);
|
||||
+ p->max_state = max_state;
|
||||
+}
|
||||
+
|
||||
+/* Caller must hold task_time_in_state_lock */
|
||||
+static int cpufreq_task_times_realloc_locked(struct task_struct *p)
|
||||
+{
|
||||
+ void *temp;
|
||||
+ unsigned int max_state = READ_ONCE(next_offset);
|
||||
+
|
||||
+ temp = krealloc(p->time_in_state, max_state * sizeof(u64), GFP_ATOMIC);
|
||||
+ if (!temp)
|
||||
+ return -ENOMEM;
|
||||
+ p->time_in_state = temp;
|
||||
+ memset(p->time_in_state + p->max_state, 0,
|
||||
+ (max_state - p->max_state) * sizeof(u64));
|
||||
+ p->max_state = max_state;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+void cpufreq_task_times_exit(struct task_struct *p)
|
||||
+{
|
||||
+ unsigned long flags;
|
||||
+ void *temp;
|
||||
+
|
||||
+ spin_lock_irqsave(&task_time_in_state_lock, flags);
|
||||
+ temp = p->time_in_state;
|
||||
+ p->time_in_state = NULL;
|
||||
+ spin_unlock_irqrestore(&task_time_in_state_lock, flags);
|
||||
+ kfree(temp);
|
||||
+}
|
||||
+
|
||||
+int proc_time_in_state_show(struct seq_file *m, struct pid_namespace *ns,
|
||||
+ struct pid *pid, struct task_struct *p)
|
||||
+{
|
||||
+ unsigned int cpu, i;
|
||||
+ u64 cputime;
|
||||
+ unsigned long flags;
|
||||
+ struct cpu_freqs *freqs;
|
||||
+ struct cpu_freqs *last_freqs = NULL;
|
||||
+
|
||||
+ spin_lock_irqsave(&task_time_in_state_lock, flags);
|
||||
+ for_each_possible_cpu(cpu) {
|
||||
+ freqs = all_freqs[cpu];
|
||||
+ if (!freqs || freqs == last_freqs)
|
||||
+ continue;
|
||||
+ last_freqs = freqs;
|
||||
+
|
||||
+ seq_printf(m, "cpu%u\n", cpu);
|
||||
+ for (i = 0; i < freqs->max_state; i++) {
|
||||
+ if (freqs->freq_table[i] == CPUFREQ_ENTRY_INVALID)
|
||||
+ continue;
|
||||
+ cputime = 0;
|
||||
+ if (freqs->offset + i < p->max_state &&
|
||||
+ p->time_in_state)
|
||||
+ cputime = p->time_in_state[freqs->offset + i];
|
||||
+ seq_printf(m, "%u %lu\n", freqs->freq_table[i],
|
||||
+ (unsigned long)nsec_to_clock_t(cputime));
|
||||
+ }
|
||||
+ }
|
||||
+ spin_unlock_irqrestore(&task_time_in_state_lock, flags);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+void cpufreq_acct_update_power(struct task_struct *p, u64 cputime)
|
||||
+{
|
||||
+ unsigned long flags;
|
||||
+ unsigned int state;
|
||||
+ struct cpu_freqs *freqs = all_freqs[task_cpu(p)];
|
||||
+
|
||||
+ if (!freqs || p->flags & PF_EXITING)
|
||||
+ return;
|
||||
+
|
||||
+ state = freqs->offset + READ_ONCE(freqs->last_index);
|
||||
+
|
||||
+ spin_lock_irqsave(&task_time_in_state_lock, flags);
|
||||
+ if ((state < p->max_state || !cpufreq_task_times_realloc_locked(p)) &&
|
||||
+ p->time_in_state)
|
||||
+ p->time_in_state[state] += cputime;
|
||||
+ spin_unlock_irqrestore(&task_time_in_state_lock, flags);
|
||||
+}
|
||||
+
|
||||
+void cpufreq_times_create_policy(struct cpufreq_policy *policy)
|
||||
+{
|
||||
+ int cpu, index;
|
||||
+ unsigned int count = 0;
|
||||
+ struct cpufreq_frequency_table *pos, *table;
|
||||
+ struct cpu_freqs *freqs;
|
||||
+ void *tmp;
|
||||
+
|
||||
+ if (all_freqs[policy->cpu])
|
||||
+ return;
|
||||
+
|
||||
+ table = policy->freq_table;
|
||||
+ if (!table)
|
||||
+ return;
|
||||
+
|
||||
+ cpufreq_for_each_entry(pos, table)
|
||||
+ count++;
|
||||
+
|
||||
+ tmp = kzalloc(sizeof(*freqs) + sizeof(freqs->freq_table[0]) * count,
|
||||
+ GFP_KERNEL);
|
||||
+ if (!tmp)
|
||||
+ return;
|
||||
+
|
||||
+ freqs = tmp;
|
||||
+ freqs->max_state = count;
|
||||
+
|
||||
+ index = cpufreq_frequency_table_get_index(policy, policy->cur);
|
||||
+ if (index >= 0)
|
||||
+ WRITE_ONCE(freqs->last_index, index);
|
||||
+
|
||||
+ cpufreq_for_each_entry(pos, table)
|
||||
+ freqs->freq_table[pos - table] = pos->frequency;
|
||||
+
|
||||
+ freqs->offset = next_offset;
|
||||
+ WRITE_ONCE(next_offset, freqs->offset + count);
|
||||
+ for_each_cpu(cpu, policy->related_cpus)
|
||||
+ all_freqs[cpu] = freqs;
|
||||
+}
|
||||
+
|
||||
+void cpufreq_times_record_transition(struct cpufreq_freqs *freq)
|
||||
+{
|
||||
+ int index;
|
||||
+ struct cpu_freqs *freqs = all_freqs[freq->cpu];
|
||||
+ struct cpufreq_policy *policy;
|
||||
+
|
||||
+ if (!freqs)
|
||||
+ return;
|
||||
+
|
||||
+ policy = cpufreq_cpu_get(freq->cpu);
|
||||
+ if (!policy)
|
||||
+ return;
|
||||
+
|
||||
+ index = cpufreq_frequency_table_get_index(policy, freq->new);
|
||||
+ if (index >= 0)
|
||||
+ WRITE_ONCE(freqs->last_index, index);
|
||||
+
|
||||
+ cpufreq_cpu_put(policy);
|
||||
+}
|
||||
diff --git a/fs/proc/base.c b/fs/proc/base.c
|
||||
index ebea9501afb8..7d13501910ee 100644
|
||||
--- a/fs/proc/base.c
|
||||
+++ b/fs/proc/base.c
|
||||
@@ -94,6 +94,7 @@
|
||||
#include <linux/sched/debug.h>
|
||||
#include <linux/sched/stat.h>
|
||||
#include <linux/posix-timers.h>
|
||||
+#include <linux/cpufreq_times.h>
|
||||
#include <trace/events/oom.h>
|
||||
#include "internal.h"
|
||||
#include "fd.h"
|
||||
@@ -3091,6 +3092,9 @@ static const struct pid_entry tgid_base_stuff[] = {
|
||||
#ifdef CONFIG_LIVEPATCH
|
||||
ONE("patch_state", S_IRUSR, proc_pid_patch_state),
|
||||
#endif
|
||||
+#ifdef CONFIG_CPU_FREQ_TIMES
|
||||
+ ONE("time_in_state", 0444, proc_time_in_state_show),
|
||||
+#endif
|
||||
#ifdef CONFIG_STACKLEAK_METRICS
|
||||
ONE("stack_depth", S_IRUGO, proc_stack_depth),
|
||||
#endif
|
||||
@@ -3487,6 +3491,9 @@ static const struct pid_entry tid_base_stuff[] = {
|
||||
#ifdef CONFIG_PROC_PID_ARCH_STATUS
|
||||
ONE("arch_status", S_IRUGO, proc_pid_arch_status),
|
||||
#endif
|
||||
+#ifdef CONFIG_CPU_FREQ_TIMES
|
||||
+ ONE("time_in_state", 0444, proc_time_in_state_show),
|
||||
+#endif
|
||||
};
|
||||
|
||||
static int proc_tid_base_readdir(struct file *file, struct dir_context *ctx)
|
||||
diff --git a/include/linux/cpufreq_times.h b/include/linux/cpufreq_times.h
|
||||
new file mode 100644
|
||||
index 000000000000..bfef6e62c68a
|
||||
--- /dev/null
|
||||
+++ b/include/linux/cpufreq_times.h
|
||||
@@ -0,0 +1,41 @@
|
||||
+/* drivers/cpufreq/cpufreq_times.c
|
||||
+ *
|
||||
+ * Copyright (C) 2018 Google, Inc.
|
||||
+ *
|
||||
+ * This software is licensed under the terms of the GNU General Public
|
||||
+ * License version 2, as published by the Free Software Foundation, and
|
||||
+ * may be copied, distributed, and modified under those terms.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#ifndef _LINUX_CPUFREQ_TIMES_H
|
||||
+#define _LINUX_CPUFREQ_TIMES_H
|
||||
+
|
||||
+#include <linux/cpufreq.h>
|
||||
+#include <linux/pid.h>
|
||||
+
|
||||
+#ifdef CONFIG_CPU_FREQ_TIMES
|
||||
+void cpufreq_task_times_init(struct task_struct *p);
|
||||
+void cpufreq_task_times_alloc(struct task_struct *p);
|
||||
+void cpufreq_task_times_exit(struct task_struct *p);
|
||||
+int proc_time_in_state_show(struct seq_file *m, struct pid_namespace *ns,
|
||||
+ struct pid *pid, struct task_struct *p);
|
||||
+void cpufreq_acct_update_power(struct task_struct *p, u64 cputime);
|
||||
+void cpufreq_times_create_policy(struct cpufreq_policy *policy);
|
||||
+void cpufreq_times_record_transition(struct cpufreq_freqs *freq);
|
||||
+#else
|
||||
+static inline void cpufreq_task_times_init(struct task_struct *p) {}
|
||||
+static inline void cpufreq_task_times_alloc(struct task_struct *p) {}
|
||||
+static inline void cpufreq_task_times_exit(struct task_struct *p) {}
|
||||
+static inline void cpufreq_acct_update_power(struct task_struct *p,
|
||||
+ u64 cputime) {}
|
||||
+static inline void cpufreq_times_create_policy(struct cpufreq_policy *policy) {}
|
||||
+static inline void cpufreq_times_record_transition(
|
||||
+ struct cpufreq_freqs *freq) {}
|
||||
+#endif /* CONFIG_CPU_FREQ_TIMES */
|
||||
+#endif /* _LINUX_CPUFREQ_TIMES_H */
|
||||
diff --git a/include/linux/sched.h b/include/linux/sched.h
|
||||
index 2c2e56bd8913..16c499ca096b 100644
|
||||
--- a/include/linux/sched.h
|
||||
+++ b/include/linux/sched.h
|
||||
@@ -840,6 +840,10 @@ struct task_struct {
|
||||
u64 stimescaled;
|
||||
#endif
|
||||
u64 gtime;
|
||||
+#ifdef CONFIG_CPU_FREQ_TIMES
|
||||
+ u64 *time_in_state;
|
||||
+ unsigned int max_state;
|
||||
+#endif
|
||||
struct prev_cputime prev_cputime;
|
||||
#ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
|
||||
struct vtime vtime;
|
||||
diff --git a/kernel/fork.c b/kernel/fork.c
|
||||
index bcdf53125210..d8cba7583875 100644
|
||||
--- a/kernel/fork.c
|
||||
+++ b/kernel/fork.c
|
||||
@@ -93,6 +93,7 @@
|
||||
#include <linux/kcov.h>
|
||||
#include <linux/livepatch.h>
|
||||
#include <linux/thread_info.h>
|
||||
+#include <linux/cpufreq_times.h>
|
||||
#include <linux/stackleak.h>
|
||||
|
||||
#include <asm/pgtable.h>
|
||||
@@ -451,6 +452,8 @@ void put_task_stack(struct task_struct *tsk)
|
||||
|
||||
void free_task(struct task_struct *tsk)
|
||||
{
|
||||
+ cpufreq_task_times_exit(tsk);
|
||||
+
|
||||
#ifndef CONFIG_THREAD_INFO_IN_TASK
|
||||
/*
|
||||
* The task is finally done with both the stack and thread_info,
|
||||
@@ -1852,6 +1855,8 @@ static __latent_entropy struct task_struct *copy_process(
|
||||
if (!p)
|
||||
goto fork_out;
|
||||
|
||||
+ cpufreq_task_times_init(p);
|
||||
+
|
||||
/*
|
||||
* This _must_ happen before we call free_task(), i.e. before we jump
|
||||
* to any of the bad_fork_* labels. This is to avoid freeing
|
||||
@@ -2369,6 +2374,8 @@ long _do_fork(struct kernel_clone_args *args)
|
||||
if (IS_ERR(p))
|
||||
return PTR_ERR(p);
|
||||
|
||||
+ cpufreq_task_times_alloc(p);
|
||||
+
|
||||
/*
|
||||
* Do this prior waking up the new thread - the thread pointer
|
||||
* might get invalid after that point, if the thread exits quickly.
|
||||
diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c
|
||||
index 46ed4e1383e2..fc49c1e169d9 100644
|
||||
--- a/kernel/sched/cputime.c
|
||||
+++ b/kernel/sched/cputime.c
|
||||
@@ -2,6 +2,7 @@
|
||||
/*
|
||||
* Simple CPU accounting cgroup controller
|
||||
*/
|
||||
+#include <linux/cpufreq_times.h>
|
||||
#include "sched.h"
|
||||
|
||||
#ifdef CONFIG_IRQ_TIME_ACCOUNTING
|
||||
@@ -129,6 +130,9 @@ void account_user_time(struct task_struct *p, u64 cputime)
|
||||
|
||||
/* Account for user time used */
|
||||
acct_account_cputime(p);
|
||||
+
|
||||
+ /* Account power usage for user time */
|
||||
+ cpufreq_acct_update_power(p, cputime);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -173,6 +177,9 @@ void account_system_index_time(struct task_struct *p,
|
||||
|
||||
/* Account for system time used */
|
||||
acct_account_cputime(p);
|
||||
+
|
||||
+ /* Account power usage for system time */
|
||||
+ cpufreq_acct_update_power(p, cputime);
|
||||
}
|
||||
|
||||
/*
|
|
@ -1,54 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Maennich <maennich@google.com>
|
||||
Date: Thu, 29 Aug 2019 12:41:43 +0100
|
||||
Subject: ANDROID: create build.configs for allmodconfig
|
||||
|
||||
Bug: 140224784
|
||||
Change-Id: I920e8737ee596e1b80428ff9831981c775570070
|
||||
Signed-off-by: Matthias Maennich <maennich@google.com>
|
||||
---
|
||||
build.config.allmodconfig | 11 +++++++++++
|
||||
build.config.allmodconfig.aarch64 | 4 ++++
|
||||
build.config.allmodconfig.x86_64 | 4 ++++
|
||||
3 files changed, 19 insertions(+)
|
||||
create mode 100644 build.config.allmodconfig
|
||||
create mode 100644 build.config.allmodconfig.aarch64
|
||||
create mode 100644 build.config.allmodconfig.x86_64
|
||||
|
||||
diff --git a/build.config.allmodconfig b/build.config.allmodconfig
|
||||
new file mode 100644
|
||||
index 000000000000..43b1a70d5800
|
||||
--- /dev/null
|
||||
+++ b/build.config.allmodconfig
|
||||
@@ -0,0 +1,11 @@
|
||||
+DEFCONFIG=allmodconfig
|
||||
+
|
||||
+# XFS_FS is currently broken on this branch with clang-9
|
||||
+POST_DEFCONFIG_CMDS="update_config"
|
||||
+function update_config() {
|
||||
+ ${KERNEL_DIR}/scripts/config --file ${OUT_DIR}/.config \
|
||||
+ -d TEST_KMOD \
|
||||
+ -d XFS_FS
|
||||
+ (cd ${OUT_DIR} && \
|
||||
+ make O=${OUT_DIR} $archsubarch CC=${CC} CROSS_COMPILE=${CROSS_COMPILE} olddefconfig)
|
||||
+}
|
||||
diff --git a/build.config.allmodconfig.aarch64 b/build.config.allmodconfig.aarch64
|
||||
new file mode 100644
|
||||
index 000000000000..863ab1caddab
|
||||
--- /dev/null
|
||||
+++ b/build.config.allmodconfig.aarch64
|
||||
@@ -0,0 +1,4 @@
|
||||
+. ${ROOT_DIR}/common/build.config.common
|
||||
+. ${ROOT_DIR}/common/build.config.aarch64
|
||||
+. ${ROOT_DIR}/common/build.config.allmodconfig
|
||||
+
|
||||
diff --git a/build.config.allmodconfig.x86_64 b/build.config.allmodconfig.x86_64
|
||||
new file mode 100644
|
||||
index 000000000000..bedb3869d99b
|
||||
--- /dev/null
|
||||
+++ b/build.config.allmodconfig.x86_64
|
||||
@@ -0,0 +1,4 @@
|
||||
+. ${ROOT_DIR}/common/build.config.common
|
||||
+. ${ROOT_DIR}/common/build.config.x86_64
|
||||
+. ${ROOT_DIR}/common/build.config.allmodconfig
|
||||
+
|
|
@ -1,37 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Strachan <astrachan@google.com>
|
||||
Date: Fri, 26 Oct 2018 10:02:08 -0700
|
||||
Subject: ANDROID: {cuttlefish,gki}_defconfig: Enable CONFIG_SDCARD_FS
|
||||
|
||||
Bug: 118439987
|
||||
Change-Id: I020ec721d98c5612bfe76dcfc05caabb1f3588c1
|
||||
Signed-off-by: Alistair Strachan <astrachan@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 1 +
|
||||
arch/x86/configs/gki_defconfig | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 140804afdd32..18e8f81cc0fb 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -379,6 +379,7 @@ CONFIG_VFAT_FS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
CONFIG_ECRYPT_FS=y
|
||||
+CONFIG_SDCARD_FS=y
|
||||
CONFIG_PSTORE=y
|
||||
CONFIG_PSTORE_CONSOLE=y
|
||||
CONFIG_PSTORE_RAM=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 65c67797fb74..eacebe96e422 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -304,6 +304,7 @@ CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
+CONFIG_SDCARD_FS=y
|
||||
CONFIG_PSTORE=y
|
||||
CONFIG_PSTORE_CONSOLE=y
|
||||
CONFIG_PSTORE_RAM=y
|
|
@ -1,32 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Salyzyn <salyzyn@google.com>
|
||||
Date: Wed, 28 Aug 2019 09:38:07 -0700
|
||||
Subject: ANDROID: cuttlefish: overlayfs: regression
|
||||
|
||||
commit a77712c342a56420013625c93d8aa1501455a984
|
||||
("ANDROID: Remove unused cuttlefish build infra") caused a
|
||||
regression in availability of CONFIG_OVERLAY_FS configuration.
|
||||
|
||||
NB: The upstream work to add override_creds to overlayfs is
|
||||
required in order to pass adb-remount-test.sh.
|
||||
|
||||
Signed-off-by: Mark Salyzyn <salyzyn@google.com>
|
||||
Test: confirm overlay filesystem available in the build
|
||||
Bug: 138649540
|
||||
Change-Id: I9e51475f1025f726e69c6f513099248bf452cc2d
|
||||
---
|
||||
arch/x86/configs/gki_defconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index a37fa09bd107..b3dad521ee8a 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -311,6 +311,7 @@ CONFIG_FS_ENCRYPTION=y
|
||||
CONFIG_QUOTA=y
|
||||
CONFIG_QFMT_V2=y
|
||||
CONFIG_FUSE_FS=y
|
||||
+CONFIG_OVERLAY_FS=y
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_TMPFS=y
|
File diff suppressed because it is too large
Load Diff
|
@ -1,76 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Lawrence <paullawrence@google.com>
|
||||
Date: Tue, 26 Mar 2019 09:05:55 -0700
|
||||
Subject: ANDROID: dm-bow: Fix 32 bit compile errors
|
||||
|
||||
See https://www.kernel.org/doc/html/v4.17/core-api/printk-formats.html
|
||||
|
||||
Also 64-bit modulus not defined on 32-bit architectures
|
||||
|
||||
Test: i386_defconfig and x86_64_cuttlefish_defconfig compile
|
||||
Change-Id: I57b9372e12e97b9a18232191b525e7601bc57a24
|
||||
Signed-off-by: Paul Lawrence <paullawrence@google.com>
|
||||
---
|
||||
drivers/md/dm-bow.c | 21 +++++++++++++--------
|
||||
1 file changed, 13 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/md/dm-bow.c b/drivers/md/dm-bow.c
|
||||
index 0d176aa140df..9323c7c8580d 100644
|
||||
--- a/drivers/md/dm-bow.c
|
||||
+++ b/drivers/md/dm-bow.c
|
||||
@@ -266,7 +266,8 @@ static struct bow_range *find_free_range(struct bow_context *bc)
|
||||
|
||||
static sector_t sector_to_page(struct bow_context const *bc, sector_t sector)
|
||||
{
|
||||
- WARN_ON(sector % (bc->block_size / SECTOR_SIZE) != 0);
|
||||
+ WARN_ON((sector & (((sector_t)1 << (bc->block_shift - SECTOR_SHIFT)) - 1))
|
||||
+ != 0);
|
||||
return sector >> (bc->block_shift - SECTOR_SHIFT);
|
||||
}
|
||||
|
||||
@@ -291,7 +292,8 @@ static int copy_data(struct bow_context const *bc,
|
||||
|
||||
read = dm_bufio_read(bc->bufio, page, &read_buffer);
|
||||
if (IS_ERR(read)) {
|
||||
- DMERR("Cannot read page %lu", page);
|
||||
+ DMERR("Cannot read page %llu",
|
||||
+ (unsigned long long)page);
|
||||
return PTR_ERR(read);
|
||||
}
|
||||
|
||||
@@ -952,8 +954,9 @@ static int add_trim(struct bow_context *bc, struct bio *bio)
|
||||
struct bow_range *br;
|
||||
struct bvec_iter bi_iter = bio->bi_iter;
|
||||
|
||||
- DMDEBUG("add_trim: %lu, %u",
|
||||
- bio->bi_iter.bi_sector, bio->bi_iter.bi_size);
|
||||
+ DMDEBUG("add_trim: %llu, %u",
|
||||
+ (unsigned long long)bio->bi_iter.bi_sector,
|
||||
+ bio->bi_iter.bi_size);
|
||||
|
||||
do {
|
||||
br = find_first_overlapping_range(&bc->ranges, &bi_iter);
|
||||
@@ -990,8 +993,9 @@ static int remove_trim(struct bow_context *bc, struct bio *bio)
|
||||
struct bow_range *br;
|
||||
struct bvec_iter bi_iter = bio->bi_iter;
|
||||
|
||||
- DMDEBUG("remove_trim: %lu, %u",
|
||||
- bio->bi_iter.bi_sector, bio->bi_iter.bi_size);
|
||||
+ DMDEBUG("remove_trim: %llu, %u",
|
||||
+ (unsigned long long)bio->bi_iter.bi_sector,
|
||||
+ bio->bi_iter.bi_size);
|
||||
|
||||
do {
|
||||
br = find_first_overlapping_range(&bc->ranges, &bi_iter);
|
||||
@@ -1116,8 +1120,9 @@ static void dm_bow_tablestatus(struct dm_target *ti, char *result,
|
||||
for (i = rb_first(&bc->ranges); i; i = rb_next(i)) {
|
||||
struct bow_range *br = container_of(i, struct bow_range, node);
|
||||
|
||||
- result += scnprintf(result, end - result, "%s: %lu",
|
||||
- readable_type[br->type], br->sector);
|
||||
+ result += scnprintf(result, end - result, "%s: %llu",
|
||||
+ readable_type[br->type],
|
||||
+ (unsigned long long)br->sector);
|
||||
if (result >= end)
|
||||
return;
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: "Isaac J. Manjarres" <isaacm@codeaurora.org>
|
||||
Date: Wed, 19 Jun 2019 15:37:13 -0700
|
||||
Subject: ANDROID: dma-buf: Add support for mapping buffers with DMA attributes
|
||||
|
||||
When mapping the memory represented by a dma-buf into a device's
|
||||
address space, it might be desireable to map the memory with
|
||||
certain DMA attributes. Thus, introduce the dma_mapping_attrs
|
||||
field in the dma_buf_attachment structure so that when
|
||||
the memory is mapped with dma_buf_map_attachment, it is mapped
|
||||
with the desired DMA attributes.
|
||||
|
||||
Bug: 133508579
|
||||
Test: ion-unit-tests
|
||||
Change-Id: Ib2e5bafdc02ae31a58ce96a82d77cc508dd71bd4
|
||||
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
|
||||
Signed-off-by: Sandeep Patil <sspatil@google.com>
|
||||
---
|
||||
include/linux/dma-buf.h | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
|
||||
index b1457e6b76d8..0458da673ec5 100644
|
||||
--- a/include/linux/dma-buf.h
|
||||
+++ b/include/linux/dma-buf.h
|
||||
@@ -384,6 +384,8 @@ struct dma_buf {
|
||||
* @sgt: cached mapping.
|
||||
* @dir: direction of cached mapping.
|
||||
* @priv: exporter specific attachment data.
|
||||
+ * @dma_map_attrs: DMA attributes to be used when the exporter maps the buffer
|
||||
+ * through dma_buf_map_attachment.
|
||||
*
|
||||
* This structure holds the attachment information between the dma_buf buffer
|
||||
* and its user device(s). The list contains one attachment struct per device
|
||||
@@ -401,6 +403,7 @@ struct dma_buf_attachment {
|
||||
struct sg_table *sgt;
|
||||
enum dma_data_direction dir;
|
||||
void *priv;
|
||||
+ unsigned long dma_map_attrs;
|
||||
};
|
||||
|
||||
/**
|
|
@ -1,170 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: "Isaac J. Manjarres" <isaacm@codeaurora.org>
|
||||
Date: Wed, 19 Jun 2019 15:37:11 -0700
|
||||
Subject: ANDROID: dma-buf: Add support for partial cache maintenance
|
||||
|
||||
In order to improve performance, allow dma-buf clients to
|
||||
apply cache maintenance to only a subset of a dma-buf.
|
||||
|
||||
Kernel clients will be able to use the dma_buf_begin_cpu_access_partial
|
||||
and dma_buf_end_cpu_access_partial functions to only apply cache
|
||||
maintenance to a range within the dma-buf.
|
||||
|
||||
Bug: 133508579
|
||||
Test: ion-unit-tests
|
||||
Change-Id: Icce61fc21b1542f5248daea34f713184449a62c3
|
||||
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
|
||||
Signed-off-by: Sandeep Patil <sspatil@google.com>
|
||||
---
|
||||
drivers/dma-buf/dma-buf.c | 40 +++++++++++++++++++++++++
|
||||
include/linux/dma-buf.h | 63 +++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 103 insertions(+)
|
||||
|
||||
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
|
||||
index 433d91d710e4..532a854be1b3 100644
|
||||
--- a/drivers/dma-buf/dma-buf.c
|
||||
+++ b/drivers/dma-buf/dma-buf.c
|
||||
@@ -957,6 +957,30 @@ int dma_buf_begin_cpu_access(struct dma_buf *dmabuf,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dma_buf_begin_cpu_access);
|
||||
|
||||
+int dma_buf_begin_cpu_access_partial(struct dma_buf *dmabuf,
|
||||
+ enum dma_data_direction direction,
|
||||
+ unsigned int offset, unsigned int len)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ if (WARN_ON(!dmabuf))
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ if (dmabuf->ops->begin_cpu_access_partial)
|
||||
+ ret = dmabuf->ops->begin_cpu_access_partial(dmabuf, direction,
|
||||
+ offset, len);
|
||||
+
|
||||
+ /* Ensure that all fences are waited upon - but we first allow
|
||||
+ * the native handler the chance to do so more efficiently if it
|
||||
+ * chooses. A double invocation here will be reasonably cheap no-op.
|
||||
+ */
|
||||
+ if (ret == 0)
|
||||
+ ret = __dma_buf_begin_cpu_access(dmabuf, direction);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(dma_buf_begin_cpu_access_partial);
|
||||
+
|
||||
/**
|
||||
* dma_buf_end_cpu_access - Must be called after accessing a dma_buf from the
|
||||
* cpu in the kernel context. Calls end_cpu_access to allow exporter-specific
|
||||
@@ -983,6 +1007,22 @@ int dma_buf_end_cpu_access(struct dma_buf *dmabuf,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dma_buf_end_cpu_access);
|
||||
|
||||
+int dma_buf_end_cpu_access_partial(struct dma_buf *dmabuf,
|
||||
+ enum dma_data_direction direction,
|
||||
+ unsigned int offset, unsigned int len)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ WARN_ON(!dmabuf);
|
||||
+
|
||||
+ if (dmabuf->ops->end_cpu_access_partial)
|
||||
+ ret = dmabuf->ops->end_cpu_access_partial(dmabuf, direction,
|
||||
+ offset, len);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(dma_buf_end_cpu_access_partial);
|
||||
+
|
||||
/**
|
||||
* dma_buf_kmap - Map a page of the buffer object into kernel address space. The
|
||||
* same restrictions as for kmap and friends apply.
|
||||
diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
|
||||
index ec212cb27fdc..b1457e6b76d8 100644
|
||||
--- a/include/linux/dma-buf.h
|
||||
+++ b/include/linux/dma-buf.h
|
||||
@@ -178,6 +178,41 @@ struct dma_buf_ops {
|
||||
*/
|
||||
int (*begin_cpu_access)(struct dma_buf *, enum dma_data_direction);
|
||||
|
||||
+ /**
|
||||
+ * @begin_cpu_access_partial:
|
||||
+ *
|
||||
+ * This is called from dma_buf_begin_cpu_access_partial() and allows the
|
||||
+ * exporter to ensure that the memory specified in the range is
|
||||
+ * available for cpu access - the exporter might need to allocate or
|
||||
+ * swap-in and pin the backing storage.
|
||||
+ * The exporter also needs to ensure that cpu access is
|
||||
+ * coherent for the access direction. The direction can be used by the
|
||||
+ * exporter to optimize the cache flushing, i.e. access with a different
|
||||
+ * direction (read instead of write) might return stale or even bogus
|
||||
+ * data (e.g. when the exporter needs to copy the data to temporary
|
||||
+ * storage).
|
||||
+ *
|
||||
+ * This callback is optional.
|
||||
+ *
|
||||
+ * FIXME: This is both called through the DMA_BUF_IOCTL_SYNC command
|
||||
+ * from userspace (where storage shouldn't be pinned to avoid handing
|
||||
+ * de-factor mlock rights to userspace) and for the kernel-internal
|
||||
+ * users of the various kmap interfaces, where the backing storage must
|
||||
+ * be pinned to guarantee that the atomic kmap calls can succeed. Since
|
||||
+ * there's no in-kernel users of the kmap interfaces yet this isn't a
|
||||
+ * real problem.
|
||||
+ *
|
||||
+ * Returns:
|
||||
+ *
|
||||
+ * 0 on success or a negative error code on failure. This can for
|
||||
+ * example fail when the backing storage can't be allocated. Can also
|
||||
+ * return -ERESTARTSYS or -EINTR when the call has been interrupted and
|
||||
+ * needs to be restarted.
|
||||
+ */
|
||||
+ int (*begin_cpu_access_partial)(struct dma_buf *dmabuf,
|
||||
+ enum dma_data_direction,
|
||||
+ unsigned int offset, unsigned int len);
|
||||
+
|
||||
/**
|
||||
* @end_cpu_access:
|
||||
*
|
||||
@@ -197,6 +232,28 @@ struct dma_buf_ops {
|
||||
*/
|
||||
int (*end_cpu_access)(struct dma_buf *, enum dma_data_direction);
|
||||
|
||||
+ /**
|
||||
+ * @end_cpu_access_partial:
|
||||
+ *
|
||||
+ * This is called from dma_buf_end_cpu_access_partial() when the
|
||||
+ * importer is done accessing the CPU. The exporter can use to limit
|
||||
+ * cache flushing to only the range specefied and to unpin any
|
||||
+ * resources pinned in @begin_cpu_access_umapped.
|
||||
+ * The result of any dma_buf kmap calls after end_cpu_access_partial is
|
||||
+ * undefined.
|
||||
+ *
|
||||
+ * This callback is optional.
|
||||
+ *
|
||||
+ * Returns:
|
||||
+ *
|
||||
+ * 0 on success or a negative error code on failure. Can return
|
||||
+ * -ERESTARTSYS or -EINTR when the call has been interrupted and needs
|
||||
+ * to be restarted.
|
||||
+ */
|
||||
+ int (*end_cpu_access_partial)(struct dma_buf *dmabuf,
|
||||
+ enum dma_data_direction,
|
||||
+ unsigned int offset, unsigned int len);
|
||||
+
|
||||
/**
|
||||
* @mmap:
|
||||
*
|
||||
@@ -411,8 +468,14 @@ void dma_buf_unmap_attachment(struct dma_buf_attachment *, struct sg_table *,
|
||||
enum dma_data_direction);
|
||||
int dma_buf_begin_cpu_access(struct dma_buf *dma_buf,
|
||||
enum dma_data_direction dir);
|
||||
+int dma_buf_begin_cpu_access_partial(struct dma_buf *dma_buf,
|
||||
+ enum dma_data_direction dir,
|
||||
+ unsigned int offset, unsigned int len);
|
||||
int dma_buf_end_cpu_access(struct dma_buf *dma_buf,
|
||||
enum dma_data_direction dir);
|
||||
+int dma_buf_end_cpu_access_partial(struct dma_buf *dma_buf,
|
||||
+ enum dma_data_direction dir,
|
||||
+ unsigned int offset, unsigned int len);
|
||||
void *dma_buf_kmap(struct dma_buf *, unsigned long);
|
||||
void dma_buf_kunmap(struct dma_buf *, unsigned long, void *);
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: "Isaac J. Manjarres" <isaacm@codeaurora.org>
|
||||
Date: Wed, 19 Jun 2019 15:37:12 -0700
|
||||
Subject: ANDROID: dma-buf: Add support to get flags associated with a buffer
|
||||
|
||||
Allow kernel clients to get the flags associated with a buffer
|
||||
that is wrapped by a dma-buf. This information can be used to
|
||||
communicate the type of memory associated with the
|
||||
buffer(e.g. uncached vs cached memory).
|
||||
|
||||
Bug: 133508579
|
||||
Test: ion-unit-tests
|
||||
Change-Id: I82eab8beb738b258616c22a01080615d7ffb6ad5
|
||||
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
|
||||
Signed-off-by: Sandeep Patil <sspatil@google.com>
|
||||
---
|
||||
drivers/dma-buf/dma-buf.c | 14 ++++++++++++++
|
||||
include/linux/dma-buf.h | 15 +++++++++++++++
|
||||
2 files changed, 29 insertions(+)
|
||||
|
||||
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
|
||||
index 532a854be1b3..59f6a39120fd 100644
|
||||
--- a/drivers/dma-buf/dma-buf.c
|
||||
+++ b/drivers/dma-buf/dma-buf.c
|
||||
@@ -1188,6 +1188,20 @@ void dma_buf_vunmap(struct dma_buf *dmabuf, void *vaddr)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dma_buf_vunmap);
|
||||
|
||||
+int dma_buf_get_flags(struct dma_buf *dmabuf, unsigned long *flags)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ if (WARN_ON(!dmabuf) || !flags)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ if (dmabuf->ops->get_flags)
|
||||
+ ret = dmabuf->ops->get_flags(dmabuf, flags);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(dma_buf_get_flags);
|
||||
+
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
static int dma_buf_debug_show(struct seq_file *s, void *unused)
|
||||
{
|
||||
diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
|
||||
index 0458da673ec5..f26b4a8212d0 100644
|
||||
--- a/include/linux/dma-buf.h
|
||||
+++ b/include/linux/dma-buf.h
|
||||
@@ -318,6 +318,20 @@ struct dma_buf_ops {
|
||||
|
||||
void *(*vmap)(struct dma_buf *);
|
||||
void (*vunmap)(struct dma_buf *, void *vaddr);
|
||||
+
|
||||
+ /**
|
||||
+ * @get_flags:
|
||||
+ *
|
||||
+ * This is called by dma_buf_get_flags and is used to get the buffer's
|
||||
+ * flags.
|
||||
+ * This callback is optional.
|
||||
+ *
|
||||
+ * Returns:
|
||||
+ *
|
||||
+ * 0 on success or a negative error code on failure. On success flags
|
||||
+ * will be populated with the buffer's flags.
|
||||
+ */
|
||||
+ int (*get_flags)(struct dma_buf *dmabuf, unsigned long *flags);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -486,4 +500,5 @@ int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
|
||||
unsigned long);
|
||||
void *dma_buf_vmap(struct dma_buf *);
|
||||
void dma_buf_vunmap(struct dma_buf *, void *vaddr);
|
||||
+int dma_buf_get_flags(struct dma_buf *dmabuf, unsigned long *flags);
|
||||
#endif /* __DMA_BUF_H__ */
|
|
@ -1,108 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Thu, 29 Aug 2019 19:15:01 -0700
|
||||
Subject: ANDROID: first pass cuttlefish GKI modularization
|
||||
|
||||
Bug: 132629930
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
Change-Id: Ie2a4d08596b0e2af7c868224bc18dcd6adae7ee0
|
||||
---
|
||||
arch/x86/configs/gki_defconfig | 28 ++++++++++++++++------------
|
||||
1 file changed, 16 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 6b0ff4ca236a..a37fa09bd107 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -155,8 +155,12 @@ CONFIG_NET_CLS_BPF=y
|
||||
CONFIG_NET_EMATCH=y
|
||||
CONFIG_NET_EMATCH_U32=y
|
||||
CONFIG_NET_CLS_ACT=y
|
||||
-CONFIG_VSOCKETS=y
|
||||
-CONFIG_VIRTIO_VSOCKETS=y
|
||||
+CONFIG_VSOCKETS=m
|
||||
+CONFIG_VIRTIO_VSOCKETS=m
|
||||
+CONFIG_CAN=m
|
||||
+# CONFIG_CAN_BCM is not set
|
||||
+# CONFIG_CAN_GW is not set
|
||||
+CONFIG_CAN_VCAN=m
|
||||
CONFIG_CFG80211=y
|
||||
# CONFIG_CFG80211_DEFAULT_PS is not set
|
||||
# CONFIG_CFG80211_CRDA_SUPPORT is not set
|
||||
@@ -170,7 +174,7 @@ CONFIG_ZRAM=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
-CONFIG_VIRTIO_BLK=y
|
||||
+CONFIG_VIRTIO_BLK=m
|
||||
CONFIG_UID_SYS_STATS=y
|
||||
CONFIG_SCSI=y
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
@@ -185,7 +189,7 @@ CONFIG_DM_VERITY_FEC=y
|
||||
CONFIG_DM_BOW=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_TUN=y
|
||||
-CONFIG_VIRTIO_NET=y
|
||||
+CONFIG_VIRTIO_NET=m
|
||||
# CONFIG_ETHERNET is not set
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PPP=y
|
||||
@@ -219,7 +223,7 @@ CONFIG_USB_USBNET=y
|
||||
# CONFIG_WLAN_VENDOR_TI is not set
|
||||
# CONFIG_WLAN_VENDOR_ZYDAS is not set
|
||||
# CONFIG_WLAN_VENDOR_QUANTENNA is not set
|
||||
-CONFIG_VIRT_WIFI=y
|
||||
+CONFIG_VIRT_WIFI=m
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
@@ -236,9 +240,8 @@ CONFIG_SERIAL_8250_NR_UARTS=48
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
-CONFIG_VIRTIO_CONSOLE=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
-CONFIG_HW_RANDOM_VIRTIO=y
|
||||
+CONFIG_HW_RANDOM_VIRTIO=m
|
||||
# CONFIG_I2C_COMPAT is not set
|
||||
# CONFIG_I2C_HELPER_AUTO is not set
|
||||
CONFIG_SPI=y
|
||||
@@ -250,7 +253,7 @@ CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_MEDIA_CAMERA_SUPPORT=y
|
||||
CONFIG_DRM=y
|
||||
# CONFIG_DRM_FBDEV_EMULATION is not set
|
||||
-CONFIG_DRM_VIRTIO_GPU=y
|
||||
+CONFIG_DRM_VIRTIO_GPU=m
|
||||
# CONFIG_LCD_CLASS_DEVICE is not set
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
CONFIG_SOUND=y
|
||||
@@ -260,6 +263,7 @@ CONFIG_SND_DYNAMIC_MINORS=y
|
||||
# CONFIG_SND_SUPPORT_OLD_API is not set
|
||||
# CONFIG_SND_VERBOSE_PROCFS is not set
|
||||
# CONFIG_SND_DRIVERS is not set
|
||||
+CONFIG_SND_INTEL8X0=m
|
||||
# CONFIG_SND_USB is not set
|
||||
CONFIG_HIDRAW=y
|
||||
CONFIG_UHID=y
|
||||
@@ -285,9 +289,10 @@ CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
# CONFIG_RTC_SYSTOHC is not set
|
||||
-CONFIG_VIRTIO_PCI=y
|
||||
-CONFIG_VIRTIO_INPUT=y
|
||||
-CONFIG_VIRTIO_MMIO=y
|
||||
+CONFIG_RTC_DRV_TEST=m
|
||||
+CONFIG_VIRTIO_PCI=m
|
||||
+CONFIG_VIRTIO_INPUT=m
|
||||
+CONFIG_VIRTIO_MMIO=m
|
||||
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
|
||||
CONFIG_STAGING=y
|
||||
CONFIG_ASHMEM=y
|
||||
@@ -325,7 +330,6 @@ CONFIG_CRYPTO_SHA512=y
|
||||
CONFIG_CRYPTO_LZ4=y
|
||||
CONFIG_CRYPTO_ZSTD=y
|
||||
CONFIG_CRYPTO_ANSI_CPRNG=y
|
||||
-CONFIG_CRYPTO_DEV_VIRTIO=y
|
||||
CONFIG_CRC8=y
|
||||
CONFIG_XZ_DEC=y
|
||||
CONFIG_DMA_CMA=y
|
|
@ -1,39 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Todd Kjos <tkjos@google.com>
|
||||
Date: Tue, 20 Aug 2019 09:41:56 -0700
|
||||
Subject: ANDROID: fix kernelci build-break
|
||||
|
||||
Added missing #includes to fix 'allmodconfig' builds
|
||||
|
||||
Bug: 120445624
|
||||
Bug: 120445421
|
||||
Change-Id: Ia8823adf2b33aa31c6d3f9d50ca7679ef4a64eaa
|
||||
Signed-off-by: Todd Kjos <tkjos@google.com>
|
||||
---
|
||||
include/linux/netfilter/xt_quota2.h | 1 +
|
||||
include/trace/events/android_fs.h | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/include/linux/netfilter/xt_quota2.h b/include/linux/netfilter/xt_quota2.h
|
||||
index eadc6903314e..a3918718cbf8 100644
|
||||
--- a/include/linux/netfilter/xt_quota2.h
|
||||
+++ b/include/linux/netfilter/xt_quota2.h
|
||||
@@ -1,5 +1,6 @@
|
||||
#ifndef _XT_QUOTA_H
|
||||
#define _XT_QUOTA_H
|
||||
+#include <linux/types.h>
|
||||
|
||||
enum xt_quota_flags {
|
||||
XT_QUOTA_INVERT = 1 << 0,
|
||||
diff --git a/include/trace/events/android_fs.h b/include/trace/events/android_fs.h
|
||||
index 49509533d3fa..7edb6bcfe482 100644
|
||||
--- a/include/trace/events/android_fs.h
|
||||
+++ b/include/trace/events/android_fs.h
|
||||
@@ -4,6 +4,7 @@
|
||||
#if !defined(_TRACE_ANDROID_FS_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _TRACE_ANDROID_FS_H
|
||||
|
||||
+#include <linux/fs.h>
|
||||
#include <linux/tracepoint.h>
|
||||
#include <trace/events/android_fs_template.h>
|
||||
|
|
@ -1,634 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Mohan Srinivasan <srmohan@google.com>
|
||||
Date: Wed, 14 Dec 2016 16:39:51 -0800
|
||||
Subject: ANDROID: fs: FS tracepoints to track IO.
|
||||
|
||||
Adds tracepoints in ext4/f2fs/mpage to track readpages/buffered
|
||||
write()s. This allows us to track files that are being read/written
|
||||
to PIDs.
|
||||
|
||||
Bug: 120445624
|
||||
Change-Id: I44476230324e9397e292328463f846af4befbd6d
|
||||
[joelaf: Needed for storaged fsync accounting ("storaged --uid" and
|
||||
"storaged --task".)]
|
||||
Signed-off-by: Mohan Srinivasan <srmohan@google.com>
|
||||
[AmitP: Folded following android-4.9 commit changes into this patch
|
||||
a5c4dbb05ab7 ("ANDROID: Replace spaces by '_' for some
|
||||
android filesystem tracepoints.")]
|
||||
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
|
||||
[astrachan: Folded 63066f4acf92 ("ANDROID: fs: Refactor FS
|
||||
readpage/write tracepoints.") into this patch
|
||||
Signed-off-by: Alistair Strachan <astrachan@google.com>
|
||||
---
|
||||
fs/ext4/inline.c | 14 +++++
|
||||
fs/ext4/inode.c | 55 ++++++++++++++++++
|
||||
fs/ext4/readpage.c | 47 ++++++++++++++--
|
||||
fs/f2fs/data.c | 42 ++++++++++++++
|
||||
fs/f2fs/inline.c | 18 ++++++
|
||||
fs/mpage.c | 36 ++++++++++++
|
||||
include/trace/events/android_fs.h | 65 ++++++++++++++++++++++
|
||||
include/trace/events/android_fs_template.h | 64 +++++++++++++++++++++
|
||||
8 files changed, 337 insertions(+), 4 deletions(-)
|
||||
create mode 100644 include/trace/events/android_fs.h
|
||||
create mode 100644 include/trace/events/android_fs_template.h
|
||||
|
||||
diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c
|
||||
index 2fec62d764fa..2f187da48c83 100644
|
||||
--- a/fs/ext4/inline.c
|
||||
+++ b/fs/ext4/inline.c
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "ext4.h"
|
||||
#include "xattr.h"
|
||||
#include "truncate.h"
|
||||
+#include <trace/events/android_fs.h>
|
||||
|
||||
#define EXT4_XATTR_SYSTEM_DATA "data"
|
||||
#define EXT4_MIN_INLINE_DATA_SIZE ((sizeof(__le32) * EXT4_N_BLOCKS))
|
||||
@@ -505,6 +506,17 @@ int ext4_readpage_inline(struct inode *inode, struct page *page)
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
+ if (trace_android_fs_dataread_start_enabled()) {
|
||||
+ char *path, pathbuf[MAX_TRACE_PATHBUF_LEN];
|
||||
+
|
||||
+ path = android_fstrace_get_pathname(pathbuf,
|
||||
+ MAX_TRACE_PATHBUF_LEN,
|
||||
+ inode);
|
||||
+ trace_android_fs_dataread_start(inode, page_offset(page),
|
||||
+ PAGE_SIZE, current->pid,
|
||||
+ path, current->comm);
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* Current inline data can only exist in the 1st page,
|
||||
* So for all the other pages, just set them uptodate.
|
||||
@@ -516,6 +528,8 @@ int ext4_readpage_inline(struct inode *inode, struct page *page)
|
||||
SetPageUptodate(page);
|
||||
}
|
||||
|
||||
+ trace_android_fs_dataread_end(inode, page_offset(page), PAGE_SIZE);
|
||||
+
|
||||
up_read(&EXT4_I(inode)->xattr_sem);
|
||||
|
||||
unlock_page(page);
|
||||
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
|
||||
index 516faa280ced..ac409eb63100 100644
|
||||
--- a/fs/ext4/inode.c
|
||||
+++ b/fs/ext4/inode.c
|
||||
@@ -47,6 +47,7 @@
|
||||
#include "truncate.h"
|
||||
|
||||
#include <trace/events/ext4.h>
|
||||
+#include <trace/events/android_fs.h>
|
||||
|
||||
#define MPAGE_DA_EXTENT_TAIL 0x01
|
||||
|
||||
@@ -1269,6 +1270,16 @@ static int ext4_write_begin(struct file *file, struct address_space *mapping,
|
||||
if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb))))
|
||||
return -EIO;
|
||||
|
||||
+ if (trace_android_fs_datawrite_start_enabled()) {
|
||||
+ char *path, pathbuf[MAX_TRACE_PATHBUF_LEN];
|
||||
+
|
||||
+ path = android_fstrace_get_pathname(pathbuf,
|
||||
+ MAX_TRACE_PATHBUF_LEN,
|
||||
+ inode);
|
||||
+ trace_android_fs_datawrite_start(inode, pos, len,
|
||||
+ current->pid, path,
|
||||
+ current->comm);
|
||||
+ }
|
||||
trace_ext4_write_begin(inode, pos, len, flags);
|
||||
/*
|
||||
* Reserve one block more for addition to orphan list in case
|
||||
@@ -1411,6 +1422,7 @@ static int ext4_write_end(struct file *file,
|
||||
int inline_data = ext4_has_inline_data(inode);
|
||||
bool verity = ext4_verity_in_progress(inode);
|
||||
|
||||
+ trace_android_fs_datawrite_end(inode, pos, len);
|
||||
trace_ext4_write_end(inode, pos, len, copied);
|
||||
if (inline_data) {
|
||||
ret = ext4_write_inline_data_end(inode, pos, len,
|
||||
@@ -1521,6 +1533,7 @@ static int ext4_journalled_write_end(struct file *file,
|
||||
int inline_data = ext4_has_inline_data(inode);
|
||||
bool verity = ext4_verity_in_progress(inode);
|
||||
|
||||
+ trace_android_fs_datawrite_end(inode, pos, len);
|
||||
trace_ext4_journalled_write_end(inode, pos, len, copied);
|
||||
from = pos & (PAGE_SIZE - 1);
|
||||
to = from + len;
|
||||
@@ -3040,6 +3053,16 @@ static int ext4_da_write_begin(struct file *file, struct address_space *mapping,
|
||||
len, flags, pagep, fsdata);
|
||||
}
|
||||
*fsdata = (void *)0;
|
||||
+ if (trace_android_fs_datawrite_start_enabled()) {
|
||||
+ char *path, pathbuf[MAX_TRACE_PATHBUF_LEN];
|
||||
+
|
||||
+ path = android_fstrace_get_pathname(pathbuf,
|
||||
+ MAX_TRACE_PATHBUF_LEN,
|
||||
+ inode);
|
||||
+ trace_android_fs_datawrite_start(inode, pos, len,
|
||||
+ current->pid,
|
||||
+ path, current->comm);
|
||||
+ }
|
||||
trace_ext4_da_write_begin(inode, pos, len, flags);
|
||||
|
||||
if (ext4_test_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA)) {
|
||||
@@ -3158,6 +3181,7 @@ static int ext4_da_write_end(struct file *file,
|
||||
return ext4_write_end(file, mapping, pos,
|
||||
len, copied, page, fsdata);
|
||||
|
||||
+ trace_android_fs_datawrite_end(inode, pos, len);
|
||||
trace_ext4_da_write_end(inode, pos, len, copied);
|
||||
start = pos & (PAGE_SIZE - 1);
|
||||
end = start + copied - 1;
|
||||
@@ -3846,6 +3870,7 @@ static ssize_t ext4_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
|
||||
size_t count = iov_iter_count(iter);
|
||||
loff_t offset = iocb->ki_pos;
|
||||
ssize_t ret;
|
||||
+ int rw = iov_iter_rw(iter);
|
||||
|
||||
#ifdef CONFIG_FS_ENCRYPTION
|
||||
if (IS_ENCRYPTED(inode) && S_ISREG(inode->i_mode))
|
||||
@@ -3864,12 +3889,42 @@ static ssize_t ext4_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
|
||||
if (ext4_has_inline_data(inode))
|
||||
return 0;
|
||||
|
||||
+ if (trace_android_fs_dataread_start_enabled() &&
|
||||
+ (rw == READ)) {
|
||||
+ char *path, pathbuf[MAX_TRACE_PATHBUF_LEN];
|
||||
+
|
||||
+ path = android_fstrace_get_pathname(pathbuf,
|
||||
+ MAX_TRACE_PATHBUF_LEN,
|
||||
+ inode);
|
||||
+ trace_android_fs_dataread_start(inode, offset, count,
|
||||
+ current->pid, path,
|
||||
+ current->comm);
|
||||
+ }
|
||||
+ if (trace_android_fs_datawrite_start_enabled() &&
|
||||
+ (rw == WRITE)) {
|
||||
+ char *path, pathbuf[MAX_TRACE_PATHBUF_LEN];
|
||||
+
|
||||
+ path = android_fstrace_get_pathname(pathbuf,
|
||||
+ MAX_TRACE_PATHBUF_LEN,
|
||||
+ inode);
|
||||
+ trace_android_fs_datawrite_start(inode, offset, count,
|
||||
+ current->pid, path,
|
||||
+ current->comm);
|
||||
+ }
|
||||
trace_ext4_direct_IO_enter(inode, offset, count, iov_iter_rw(iter));
|
||||
if (iov_iter_rw(iter) == READ)
|
||||
ret = ext4_direct_IO_read(iocb, iter);
|
||||
else
|
||||
ret = ext4_direct_IO_write(iocb, iter);
|
||||
trace_ext4_direct_IO_exit(inode, offset, count, iov_iter_rw(iter), ret);
|
||||
+
|
||||
+ if (trace_android_fs_dataread_start_enabled() &&
|
||||
+ (rw == READ))
|
||||
+ trace_android_fs_dataread_end(inode, offset, count);
|
||||
+ if (trace_android_fs_datawrite_start_enabled() &&
|
||||
+ (rw == WRITE))
|
||||
+ trace_android_fs_datawrite_end(inode, offset, count);
|
||||
+
|
||||
return ret;
|
||||
}
|
||||
|
||||
diff --git a/fs/ext4/readpage.c b/fs/ext4/readpage.c
|
||||
index a30b203fa461..0d88b82a5929 100644
|
||||
--- a/fs/ext4/readpage.c
|
||||
+++ b/fs/ext4/readpage.c
|
||||
@@ -46,6 +46,7 @@
|
||||
#include <linux/cleancache.h>
|
||||
|
||||
#include "ext4.h"
|
||||
+#include <trace/events/android_fs.h>
|
||||
|
||||
#define NUM_PREALLOC_POST_READ_CTXS 128
|
||||
|
||||
@@ -146,6 +147,17 @@ static bool bio_post_read_required(struct bio *bio)
|
||||
return bio->bi_private && !bio->bi_status;
|
||||
}
|
||||
|
||||
+static void
|
||||
+ext4_trace_read_completion(struct bio *bio)
|
||||
+{
|
||||
+ struct page *first_page = bio->bi_io_vec[0].bv_page;
|
||||
+
|
||||
+ if (first_page != NULL)
|
||||
+ trace_android_fs_dataread_end(first_page->mapping->host,
|
||||
+ page_offset(first_page),
|
||||
+ bio->bi_iter.bi_size);
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* I/O completion handler for multipage BIOs.
|
||||
*
|
||||
@@ -160,6 +172,9 @@ static bool bio_post_read_required(struct bio *bio)
|
||||
*/
|
||||
static void mpage_end_io(struct bio *bio)
|
||||
{
|
||||
+ if (trace_android_fs_dataread_start_enabled())
|
||||
+ ext4_trace_read_completion(bio);
|
||||
+
|
||||
if (bio_post_read_required(bio)) {
|
||||
struct bio_post_read_ctx *ctx = bio->bi_private;
|
||||
|
||||
@@ -209,6 +224,30 @@ static inline loff_t ext4_readpage_limit(struct inode *inode)
|
||||
return i_size_read(inode);
|
||||
}
|
||||
|
||||
+static void
|
||||
+ext4_submit_bio_read(struct bio *bio)
|
||||
+{
|
||||
+ if (trace_android_fs_dataread_start_enabled()) {
|
||||
+ struct page *first_page = bio->bi_io_vec[0].bv_page;
|
||||
+
|
||||
+ if (first_page != NULL) {
|
||||
+ char *path, pathbuf[MAX_TRACE_PATHBUF_LEN];
|
||||
+
|
||||
+ path = android_fstrace_get_pathname(pathbuf,
|
||||
+ MAX_TRACE_PATHBUF_LEN,
|
||||
+ first_page->mapping->host);
|
||||
+ trace_android_fs_dataread_start(
|
||||
+ first_page->mapping->host,
|
||||
+ page_offset(first_page),
|
||||
+ bio->bi_iter.bi_size,
|
||||
+ current->pid,
|
||||
+ path,
|
||||
+ current->comm);
|
||||
+ }
|
||||
+ }
|
||||
+ submit_bio(bio);
|
||||
+}
|
||||
+
|
||||
int ext4_mpage_readpages(struct address_space *mapping,
|
||||
struct list_head *pages, struct page *page,
|
||||
unsigned nr_pages, bool is_readahead)
|
||||
@@ -354,7 +393,7 @@ int ext4_mpage_readpages(struct address_space *mapping,
|
||||
*/
|
||||
if (bio && (last_block_in_bio != blocks[0] - 1)) {
|
||||
submit_and_realloc:
|
||||
- submit_bio(bio);
|
||||
+ ext4_submit_bio_read(bio);
|
||||
bio = NULL;
|
||||
}
|
||||
if (bio == NULL) {
|
||||
@@ -385,14 +424,14 @@ int ext4_mpage_readpages(struct address_space *mapping,
|
||||
if (((map.m_flags & EXT4_MAP_BOUNDARY) &&
|
||||
(relative_block == map.m_len)) ||
|
||||
(first_hole != blocks_per_page)) {
|
||||
- submit_bio(bio);
|
||||
+ ext4_submit_bio_read(bio);
|
||||
bio = NULL;
|
||||
} else
|
||||
last_block_in_bio = blocks[blocks_per_page - 1];
|
||||
goto next_page;
|
||||
confused:
|
||||
if (bio) {
|
||||
- submit_bio(bio);
|
||||
+ ext4_submit_bio_read(bio);
|
||||
bio = NULL;
|
||||
}
|
||||
if (!PageUptodate(page))
|
||||
@@ -405,7 +444,7 @@ int ext4_mpage_readpages(struct address_space *mapping,
|
||||
}
|
||||
BUG_ON(pages && !list_empty(pages));
|
||||
if (bio)
|
||||
- submit_bio(bio);
|
||||
+ ext4_submit_bio_read(bio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
|
||||
index 5755e897a5f0..9155256779bf 100644
|
||||
--- a/fs/f2fs/data.c
|
||||
+++ b/fs/f2fs/data.c
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "segment.h"
|
||||
#include "trace.h"
|
||||
#include <trace/events/f2fs.h>
|
||||
+#include <trace/events/android_fs.h>
|
||||
|
||||
#define NUM_PREALLOC_POST_READ_CTXS 128
|
||||
|
||||
@@ -2623,6 +2624,16 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping,
|
||||
block_t blkaddr = NULL_ADDR;
|
||||
int err = 0;
|
||||
|
||||
+ if (trace_android_fs_datawrite_start_enabled()) {
|
||||
+ char *path, pathbuf[MAX_TRACE_PATHBUF_LEN];
|
||||
+
|
||||
+ path = android_fstrace_get_pathname(pathbuf,
|
||||
+ MAX_TRACE_PATHBUF_LEN,
|
||||
+ inode);
|
||||
+ trace_android_fs_datawrite_start(inode, pos, len,
|
||||
+ current->pid, path,
|
||||
+ current->comm);
|
||||
+ }
|
||||
trace_f2fs_write_begin(inode, pos, len, flags);
|
||||
|
||||
if (!f2fs_is_checkpoint_ready(sbi)) {
|
||||
@@ -2730,6 +2741,7 @@ static int f2fs_write_end(struct file *file,
|
||||
{
|
||||
struct inode *inode = page->mapping->host;
|
||||
|
||||
+ trace_android_fs_datawrite_end(inode, pos, len);
|
||||
trace_f2fs_write_end(inode, pos, len, copied);
|
||||
|
||||
/*
|
||||
@@ -2846,6 +2858,29 @@ static ssize_t f2fs_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
|
||||
|
||||
trace_f2fs_direct_IO_enter(inode, offset, count, rw);
|
||||
|
||||
+ if (trace_android_fs_dataread_start_enabled() &&
|
||||
+ (rw == READ)) {
|
||||
+ char *path, pathbuf[MAX_TRACE_PATHBUF_LEN];
|
||||
+
|
||||
+ path = android_fstrace_get_pathname(pathbuf,
|
||||
+ MAX_TRACE_PATHBUF_LEN,
|
||||
+ inode);
|
||||
+ trace_android_fs_dataread_start(inode, offset,
|
||||
+ count, current->pid, path,
|
||||
+ current->comm);
|
||||
+ }
|
||||
+ if (trace_android_fs_datawrite_start_enabled() &&
|
||||
+ (rw == WRITE)) {
|
||||
+ char *path, pathbuf[MAX_TRACE_PATHBUF_LEN];
|
||||
+
|
||||
+ path = android_fstrace_get_pathname(pathbuf,
|
||||
+ MAX_TRACE_PATHBUF_LEN,
|
||||
+ inode);
|
||||
+ trace_android_fs_datawrite_start(inode, offset, count,
|
||||
+ current->pid, path,
|
||||
+ current->comm);
|
||||
+ }
|
||||
+
|
||||
if (rw == WRITE && whint_mode == WHINT_MODE_OFF)
|
||||
iocb->ki_hint = WRITE_LIFE_NOT_SET;
|
||||
|
||||
@@ -2891,6 +2926,13 @@ static ssize_t f2fs_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
|
||||
}
|
||||
|
||||
out:
|
||||
+ if (trace_android_fs_dataread_start_enabled() &&
|
||||
+ (rw == READ))
|
||||
+ trace_android_fs_dataread_end(inode, offset, count);
|
||||
+ if (trace_android_fs_datawrite_start_enabled() &&
|
||||
+ (rw == WRITE))
|
||||
+ trace_android_fs_datawrite_end(inode, offset, count);
|
||||
+
|
||||
trace_f2fs_direct_IO_exit(inode, offset, count, rw, err);
|
||||
|
||||
return err;
|
||||
diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
|
||||
index 896db0416f0e..59adbfa25bac 100644
|
||||
--- a/fs/f2fs/inline.c
|
||||
+++ b/fs/f2fs/inline.c
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
#include "f2fs.h"
|
||||
#include "node.h"
|
||||
+#include <trace/events/android_fs.h>
|
||||
|
||||
bool f2fs_may_inline_data(struct inode *inode)
|
||||
{
|
||||
@@ -84,14 +85,29 @@ int f2fs_read_inline_data(struct inode *inode, struct page *page)
|
||||
{
|
||||
struct page *ipage;
|
||||
|
||||
+ if (trace_android_fs_dataread_start_enabled()) {
|
||||
+ char *path, pathbuf[MAX_TRACE_PATHBUF_LEN];
|
||||
+
|
||||
+ path = android_fstrace_get_pathname(pathbuf,
|
||||
+ MAX_TRACE_PATHBUF_LEN,
|
||||
+ inode);
|
||||
+ trace_android_fs_dataread_start(inode, page_offset(page),
|
||||
+ PAGE_SIZE, current->pid,
|
||||
+ path, current->comm);
|
||||
+ }
|
||||
+
|
||||
ipage = f2fs_get_node_page(F2FS_I_SB(inode), inode->i_ino);
|
||||
if (IS_ERR(ipage)) {
|
||||
+ trace_android_fs_dataread_end(inode, page_offset(page),
|
||||
+ PAGE_SIZE);
|
||||
unlock_page(page);
|
||||
return PTR_ERR(ipage);
|
||||
}
|
||||
|
||||
if (!f2fs_has_inline_data(inode)) {
|
||||
f2fs_put_page(ipage, 1);
|
||||
+ trace_android_fs_dataread_end(inode, page_offset(page),
|
||||
+ PAGE_SIZE);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
@@ -103,6 +119,8 @@ int f2fs_read_inline_data(struct inode *inode, struct page *page)
|
||||
if (!PageUptodate(page))
|
||||
SetPageUptodate(page);
|
||||
f2fs_put_page(ipage, 1);
|
||||
+ trace_android_fs_dataread_end(inode, page_offset(page),
|
||||
+ PAGE_SIZE);
|
||||
unlock_page(page);
|
||||
return 0;
|
||||
}
|
||||
diff --git a/fs/mpage.c b/fs/mpage.c
|
||||
index a63620cdb73a..e8281998e690 100644
|
||||
--- a/fs/mpage.c
|
||||
+++ b/fs/mpage.c
|
||||
@@ -32,6 +32,14 @@
|
||||
#include <linux/cleancache.h>
|
||||
#include "internal.h"
|
||||
|
||||
+#define CREATE_TRACE_POINTS
|
||||
+#include <trace/events/android_fs.h>
|
||||
+
|
||||
+EXPORT_TRACEPOINT_SYMBOL(android_fs_datawrite_start);
|
||||
+EXPORT_TRACEPOINT_SYMBOL(android_fs_datawrite_end);
|
||||
+EXPORT_TRACEPOINT_SYMBOL(android_fs_dataread_start);
|
||||
+EXPORT_TRACEPOINT_SYMBOL(android_fs_dataread_end);
|
||||
+
|
||||
/*
|
||||
* I/O completion handler for multipage BIOs.
|
||||
*
|
||||
@@ -49,6 +57,16 @@ static void mpage_end_io(struct bio *bio)
|
||||
struct bio_vec *bv;
|
||||
struct bvec_iter_all iter_all;
|
||||
|
||||
+ if (trace_android_fs_dataread_end_enabled() &&
|
||||
+ (bio_data_dir(bio) == READ)) {
|
||||
+ struct page *first_page = bio->bi_io_vec[0].bv_page;
|
||||
+
|
||||
+ if (first_page != NULL)
|
||||
+ trace_android_fs_dataread_end(first_page->mapping->host,
|
||||
+ page_offset(first_page),
|
||||
+ bio->bi_iter.bi_size);
|
||||
+ }
|
||||
+
|
||||
bio_for_each_segment_all(bv, bio, iter_all) {
|
||||
struct page *page = bv->bv_page;
|
||||
page_endio(page, bio_op(bio),
|
||||
@@ -60,6 +78,24 @@ static void mpage_end_io(struct bio *bio)
|
||||
|
||||
static struct bio *mpage_bio_submit(int op, int op_flags, struct bio *bio)
|
||||
{
|
||||
+ if (trace_android_fs_dataread_start_enabled() && (op == REQ_OP_READ)) {
|
||||
+ struct page *first_page = bio->bi_io_vec[0].bv_page;
|
||||
+
|
||||
+ if (first_page != NULL) {
|
||||
+ char *path, pathbuf[MAX_TRACE_PATHBUF_LEN];
|
||||
+
|
||||
+ path = android_fstrace_get_pathname(pathbuf,
|
||||
+ MAX_TRACE_PATHBUF_LEN,
|
||||
+ first_page->mapping->host);
|
||||
+ trace_android_fs_dataread_start(
|
||||
+ first_page->mapping->host,
|
||||
+ page_offset(first_page),
|
||||
+ bio->bi_iter.bi_size,
|
||||
+ current->pid,
|
||||
+ path,
|
||||
+ current->comm);
|
||||
+ }
|
||||
+ }
|
||||
bio->bi_end_io = mpage_end_io;
|
||||
bio_set_op_attrs(bio, op, op_flags);
|
||||
guard_bio_eod(op, bio);
|
||||
diff --git a/include/trace/events/android_fs.h b/include/trace/events/android_fs.h
|
||||
new file mode 100644
|
||||
index 000000000000..49509533d3fa
|
||||
--- /dev/null
|
||||
+++ b/include/trace/events/android_fs.h
|
||||
@@ -0,0 +1,65 @@
|
||||
+#undef TRACE_SYSTEM
|
||||
+#define TRACE_SYSTEM android_fs
|
||||
+
|
||||
+#if !defined(_TRACE_ANDROID_FS_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
+#define _TRACE_ANDROID_FS_H
|
||||
+
|
||||
+#include <linux/tracepoint.h>
|
||||
+#include <trace/events/android_fs_template.h>
|
||||
+
|
||||
+DEFINE_EVENT(android_fs_data_start_template, android_fs_dataread_start,
|
||||
+ TP_PROTO(struct inode *inode, loff_t offset, int bytes,
|
||||
+ pid_t pid, char *pathname, char *command),
|
||||
+ TP_ARGS(inode, offset, bytes, pid, pathname, command));
|
||||
+
|
||||
+DEFINE_EVENT(android_fs_data_end_template, android_fs_dataread_end,
|
||||
+ TP_PROTO(struct inode *inode, loff_t offset, int bytes),
|
||||
+ TP_ARGS(inode, offset, bytes));
|
||||
+
|
||||
+DEFINE_EVENT(android_fs_data_start_template, android_fs_datawrite_start,
|
||||
+ TP_PROTO(struct inode *inode, loff_t offset, int bytes,
|
||||
+ pid_t pid, char *pathname, char *command),
|
||||
+ TP_ARGS(inode, offset, bytes, pid, pathname, command));
|
||||
+
|
||||
+DEFINE_EVENT(android_fs_data_end_template, android_fs_datawrite_end,
|
||||
+ TP_PROTO(struct inode *inode, loff_t offset, int bytes),
|
||||
+ TP_ARGS(inode, offset, bytes));
|
||||
+
|
||||
+#endif /* _TRACE_ANDROID_FS_H */
|
||||
+
|
||||
+/* This part must be outside protection */
|
||||
+#include <trace/define_trace.h>
|
||||
+
|
||||
+#ifndef ANDROID_FSTRACE_GET_PATHNAME
|
||||
+#define ANDROID_FSTRACE_GET_PATHNAME
|
||||
+
|
||||
+/* Sizes an on-stack array, so careful if sizing this up ! */
|
||||
+#define MAX_TRACE_PATHBUF_LEN 256
|
||||
+
|
||||
+static inline char *
|
||||
+android_fstrace_get_pathname(char *buf, int buflen, struct inode *inode)
|
||||
+{
|
||||
+ char *path;
|
||||
+ struct dentry *d;
|
||||
+
|
||||
+ /*
|
||||
+ * d_obtain_alias() will either iput() if it locates an existing
|
||||
+ * dentry or transfer the reference to the new dentry created.
|
||||
+ * So get an extra reference here.
|
||||
+ */
|
||||
+ ihold(inode);
|
||||
+ d = d_obtain_alias(inode);
|
||||
+ if (likely(!IS_ERR(d))) {
|
||||
+ path = dentry_path_raw(d, buf, buflen);
|
||||
+ if (unlikely(IS_ERR(path))) {
|
||||
+ strcpy(buf, "ERROR");
|
||||
+ path = buf;
|
||||
+ }
|
||||
+ dput(d);
|
||||
+ } else {
|
||||
+ strcpy(buf, "ERROR");
|
||||
+ path = buf;
|
||||
+ }
|
||||
+ return path;
|
||||
+}
|
||||
+#endif
|
||||
diff --git a/include/trace/events/android_fs_template.h b/include/trace/events/android_fs_template.h
|
||||
new file mode 100644
|
||||
index 000000000000..b23d17b56c63
|
||||
--- /dev/null
|
||||
+++ b/include/trace/events/android_fs_template.h
|
||||
@@ -0,0 +1,64 @@
|
||||
+#if !defined(_TRACE_ANDROID_FS_TEMPLATE_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
+#define _TRACE_ANDROID_FS_TEMPLATE_H
|
||||
+
|
||||
+#include <linux/tracepoint.h>
|
||||
+
|
||||
+DECLARE_EVENT_CLASS(android_fs_data_start_template,
|
||||
+ TP_PROTO(struct inode *inode, loff_t offset, int bytes,
|
||||
+ pid_t pid, char *pathname, char *command),
|
||||
+ TP_ARGS(inode, offset, bytes, pid, pathname, command),
|
||||
+ TP_STRUCT__entry(
|
||||
+ __string(pathbuf, pathname);
|
||||
+ __field(loff_t, offset);
|
||||
+ __field(int, bytes);
|
||||
+ __field(loff_t, i_size);
|
||||
+ __string(cmdline, command);
|
||||
+ __field(pid_t, pid);
|
||||
+ __field(ino_t, ino);
|
||||
+ ),
|
||||
+ TP_fast_assign(
|
||||
+ {
|
||||
+ /*
|
||||
+ * Replace the spaces in filenames and cmdlines
|
||||
+ * because this screws up the tooling that parses
|
||||
+ * the traces.
|
||||
+ */
|
||||
+ __assign_str(pathbuf, pathname);
|
||||
+ (void)strreplace(__get_str(pathbuf), ' ', '_');
|
||||
+ __entry->offset = offset;
|
||||
+ __entry->bytes = bytes;
|
||||
+ __entry->i_size = i_size_read(inode);
|
||||
+ __assign_str(cmdline, command);
|
||||
+ (void)strreplace(__get_str(cmdline), ' ', '_');
|
||||
+ __entry->pid = pid;
|
||||
+ __entry->ino = inode->i_ino;
|
||||
+ }
|
||||
+ ),
|
||||
+ TP_printk("entry_name %s, offset %llu, bytes %d, cmdline %s,"
|
||||
+ " pid %d, i_size %llu, ino %lu",
|
||||
+ __get_str(pathbuf), __entry->offset, __entry->bytes,
|
||||
+ __get_str(cmdline), __entry->pid, __entry->i_size,
|
||||
+ (unsigned long) __entry->ino)
|
||||
+);
|
||||
+
|
||||
+DECLARE_EVENT_CLASS(android_fs_data_end_template,
|
||||
+ TP_PROTO(struct inode *inode, loff_t offset, int bytes),
|
||||
+ TP_ARGS(inode, offset, bytes),
|
||||
+ TP_STRUCT__entry(
|
||||
+ __field(ino_t, ino);
|
||||
+ __field(loff_t, offset);
|
||||
+ __field(int, bytes);
|
||||
+ ),
|
||||
+ TP_fast_assign(
|
||||
+ {
|
||||
+ __entry->ino = inode->i_ino;
|
||||
+ __entry->offset = offset;
|
||||
+ __entry->bytes = bytes;
|
||||
+ }
|
||||
+ ),
|
||||
+ TP_printk("ino %lu, offset %llu, bytes %d",
|
||||
+ (unsigned long) __entry->ino,
|
||||
+ __entry->offset, __entry->bytes)
|
||||
+);
|
||||
+
|
||||
+#endif /* _TRACE_ANDROID_FS_TEMPLATE_H */
|
|
@ -1,49 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Strachan <astrachan@google.com>
|
||||
Date: Mon, 19 Nov 2018 22:38:23 -0800
|
||||
Subject: ANDROID: fs: Restore vfs_path_lookup() export
|
||||
|
||||
Partial revert of 197df04c749a ("rename user_path_umountat() to
|
||||
user_path_mountpoint_at()"), to restore access to vfs_path_lookup()
|
||||
without including fs/internal.h, as needed by sdcardfs.
|
||||
|
||||
Test: HiKey/X15 + Pie + android-mainline,
|
||||
and HiKey + AOSP Maser + android-mainline,
|
||||
directories under /sdcard created,
|
||||
output of mount is right,
|
||||
CTS test collecting device infor works
|
||||
|
||||
Change-Id: I757f2df9f4dcc66f633939e7833e6fa2ac0ff4f8
|
||||
Signed-off-by: Alistair Strachan <astrachan@google.com>
|
||||
Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org>
|
||||
---
|
||||
fs/internal.h | 2 --
|
||||
include/linux/namei.h | 2 ++
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/fs/internal.h b/fs/internal.h
|
||||
index 315fcd8d237c..df6e4c4584f3 100644
|
||||
--- a/fs/internal.h
|
||||
+++ b/fs/internal.h
|
||||
@@ -62,8 +62,6 @@ extern int finish_clean_context(struct fs_context *fc);
|
||||
extern int filename_lookup(int dfd, struct filename *name, unsigned flags,
|
||||
struct path *path, struct path *root);
|
||||
extern int user_path_mountpoint_at(int, const char __user *, unsigned int, struct path *);
|
||||
-extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
|
||||
- const char *, unsigned int, struct path *);
|
||||
long do_mknodat(int dfd, const char __user *filename, umode_t mode,
|
||||
unsigned int dev);
|
||||
long do_mkdirat(int dfd, const char __user *pathname, umode_t mode);
|
||||
diff --git a/include/linux/namei.h b/include/linux/namei.h
|
||||
index cb288d62f1d6..5f04b40747b2 100644
|
||||
--- a/include/linux/namei.h
|
||||
+++ b/include/linux/namei.h
|
||||
@@ -55,6 +55,8 @@ extern struct dentry *kern_path_create(int, const char *, struct path *, unsigne
|
||||
extern struct dentry *user_path_create(int, const char __user *, struct path *, unsigned int);
|
||||
extern void done_path_create(struct path *, struct dentry *);
|
||||
extern struct dentry *kern_path_locked(const char *, struct path *);
|
||||
+extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
|
||||
+ const char *, unsigned int, struct path *);
|
||||
extern int kern_path_mountpoint(int, const char *, struct path *, unsigned int);
|
||||
|
||||
extern struct dentry *try_lookup_one_len(const char *, struct dentry *, int);
|
|
@ -1,51 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Cross <ccross@android.com>
|
||||
Date: Mon, 6 May 2013 23:50:16 +0000
|
||||
Subject: ANDROID: fs: epoll: use freezable blocking call
|
||||
|
||||
Avoid waking up every thread sleeping in an epoll_wait call during
|
||||
suspend and resume by calling a freezable blocking call. Previous
|
||||
patches modified the freezer to avoid sending wakeups to threads
|
||||
that are blocked in freezable blocking calls.
|
||||
|
||||
This call was selected to be converted to a freezable call because
|
||||
it doesn't hold any locks or release any resources when interrupted
|
||||
that might be needed by another freezing task or a kernel driver
|
||||
during suspend, and is a common site where idle userspace tasks are
|
||||
blocked.
|
||||
|
||||
Bug: 77139736
|
||||
Bug: 120440023
|
||||
Change-Id: I848d08d28c89302fd42bbbdfa76489a474ab27bf
|
||||
[ccross: This was upstream (https://lkml.org/lkml/2013/5/6/823), but
|
||||
reverted because it reportedly caused memory corruption on
|
||||
32-bit x86 (https://patchwork.kernel.org/patch/3162301/).]
|
||||
Acked-by: Tejun Heo <tj@kernel.org>
|
||||
Signed-off-by: Colin Cross <ccross@android.com>
|
||||
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
|
||||
---
|
||||
fs/eventpoll.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/fs/eventpoll.c b/fs/eventpoll.c
|
||||
index c4159bcc05d9..6730d92e225a 100644
|
||||
--- a/fs/eventpoll.c
|
||||
+++ b/fs/eventpoll.c
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/anon_inodes.h>
|
||||
#include <linux/device.h>
|
||||
+#include <linux/freezer.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/mman.h>
|
||||
@@ -1912,7 +1913,8 @@ static int ep_poll(struct eventpoll *ep, struct epoll_event __user *events,
|
||||
break;
|
||||
}
|
||||
|
||||
- if (!schedule_hrtimeout_range(to, slack, HRTIMER_MODE_ABS)) {
|
||||
+ if (!freezable_schedule_hrtimeout_range(to, slack,
|
||||
+ HRTIMER_MODE_ABS)) {
|
||||
timed_out = 1;
|
||||
break;
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Maennich <maennich@google.com>
|
||||
Date: Mon, 24 Jun 2019 18:10:19 +0100
|
||||
Subject: ANDROID: gki/cuttlefish defconfigs: use prebuilt build-tools
|
||||
|
||||
Rather than relying on the hosts build tools, use a set of prebuilt
|
||||
build-tools. These are tools like awk, cat, cp, hostname, python, rm,
|
||||
sed, etc.
|
||||
|
||||
Bug: 135922132
|
||||
Change-Id: Ie6b0bd208c684c9f153eb2f0bfac4712e02e8e05
|
||||
Signed-off-by: Matthias Maennich <maennich@google.com>
|
||||
---
|
||||
build.config.gki.aarch64 | 1 +
|
||||
build.config.gki.x86_64 | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/build.config.gki.aarch64 b/build.config.gki.aarch64
|
||||
index ecc2985e92cb..24dade721f96 100644
|
||||
--- a/build.config.gki.aarch64
|
||||
+++ b/build.config.gki.aarch64
|
||||
@@ -8,6 +8,7 @@ EXTRA_CMDS=''
|
||||
KERNEL_DIR=common
|
||||
POST_DEFCONFIG_CMDS="check_defconfig"
|
||||
CLANG_PREBUILT_BIN=prebuilts-master/clang/host/linux-x86/clang-r353983c/bin
|
||||
+BUILDTOOLS_PREBUILT_BIN=prebuilts/build-tools/path/linux-x86
|
||||
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin
|
||||
FILES="
|
||||
arch/arm64/boot/Image.gz
|
||||
diff --git a/build.config.gki.x86_64 b/build.config.gki.x86_64
|
||||
index 69d339dce4a0..3ce45e962732 100644
|
||||
--- a/build.config.gki.x86_64
|
||||
+++ b/build.config.gki.x86_64
|
||||
@@ -8,6 +8,7 @@ EXTRA_CMDS=''
|
||||
KERNEL_DIR=common
|
||||
POST_DEFCONFIG_CMDS="check_defconfig"
|
||||
CLANG_PREBUILT_BIN=prebuilts-master/clang/host/linux-x86/clang-r353983c/bin
|
||||
+BUILDTOOLS_PREBUILT_BIN=prebuilts/build-tools/path/linux-x86
|
||||
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/bin
|
||||
FILES="
|
||||
arch/x86/boot/bzImage
|
|
@ -1,41 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Todd Kjos <tkjos@google.com>
|
||||
Date: Tue, 17 Sep 2019 16:22:18 -0700
|
||||
Subject: ANDROID: gki_defconfig: Add GKI_HACKS_to_FIX config
|
||||
|
||||
Enable config which selects a number of non-module
|
||||
options which are usually selected by drivers built
|
||||
as modules
|
||||
|
||||
Bug: 141266428
|
||||
Change-Id: I8d95c96b74b2cfd861d68573135455a3392ff522
|
||||
Signed-off-by: Todd Kjos <tkjos@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 1 +
|
||||
arch/x86/configs/gki_defconfig | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index f65b544d17a4..8edcded9ab1f 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -72,6 +72,7 @@ CONFIG_KPROBES=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
+CONFIG_GKI_HACKS_TO_FIX=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
CONFIG_MEMORY_HOTPLUG=y
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 3e8f580e0bde..bf0ab5abf5e7 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -47,6 +47,7 @@ CONFIG_KPROBES=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
+CONFIG_GKI_HACKS_TO_FIX=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_CMA=y
|
|
@ -1,71 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Maciej=20=C5=BBenczykowski?= <maze@google.com>
|
||||
Date: Tue, 8 Oct 2019 08:51:00 -0700
|
||||
Subject: ANDROID: gki_defconfig: Enable BPF_JIT and BPF_JIT_ALWAYS_ON
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Generated via:
|
||||
echo 'CONFIG_BPF_JIT=y' >> arch/x86/configs/gki_defconfig
|
||||
echo 'CONFIG_BPF_JIT_ALWAYS_ON=y' >> arch/x86/configs/gki_defconfig
|
||||
|
||||
make ARCH=x86_64 gki_defconfig
|
||||
make ARCH=x86_64 savedefconfig
|
||||
mv defconfig arch/x86/configs/gki_defconfig
|
||||
|
||||
echo 'CONFIG_BPF_JIT=y' >> arch/arm64/configs/gki_defconfig
|
||||
echo 'CONFIG_BPF_JIT_ALWAYS_ON=y' >> arch/arm64/configs/gki_defconfig
|
||||
|
||||
make ARCH=arm64 gki_defconfig
|
||||
make ARCH=arm64 savedefconfig
|
||||
mv defconfig arch/arm64/configs/gki_defconfig
|
||||
|
||||
Bug: 140377409
|
||||
Signed-off-by: Maciej Żenczykowski <maze@google.com>
|
||||
Change-Id: I84e917b75ca2cbe4d4b61c0d042f9fbcf5bdf519
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 2 ++
|
||||
arch/x86/configs/gki_defconfig | 2 ++
|
||||
2 files changed, 4 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 97e0e47767e2..9e3b34fa8b64 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -28,6 +28,7 @@ CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_FHANDLE is not set
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
+CONFIG_BPF_JIT_ALWAYS_ON=y
|
||||
# CONFIG_RSEQ is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
@@ -187,6 +188,7 @@ CONFIG_NET_EMATCH_U32=y
|
||||
CONFIG_NET_CLS_ACT=y
|
||||
CONFIG_VSOCKETS=y
|
||||
CONFIG_VIRTIO_VSOCKETS=y
|
||||
+CONFIG_BPF_JIT=y
|
||||
CONFIG_BT=y
|
||||
CONFIG_CFG80211=y
|
||||
# CONFIG_CFG80211_DEFAULT_PS is not set
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 7890c249bca9..f539970bf631 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -27,6 +27,7 @@ CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_FHANDLE is not set
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
+CONFIG_BPF_JIT_ALWAYS_ON=y
|
||||
# CONFIG_RSEQ is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
@@ -159,6 +160,7 @@ CONFIG_NET_EMATCH_U32=y
|
||||
CONFIG_NET_CLS_ACT=y
|
||||
CONFIG_VSOCKETS=m
|
||||
CONFIG_VIRTIO_VSOCKETS=m
|
||||
+CONFIG_BPF_JIT=y
|
||||
CONFIG_CAN=m
|
||||
# CONFIG_CAN_BCM is not set
|
||||
# CONFIG_CAN_GW is not set
|
|
@ -1,37 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Mon, 3 Jun 2019 13:53:01 -0700
|
||||
Subject: ANDROID: gki_defconfig: Enable CMA, SLAB_FREELIST (RANDOM and
|
||||
HARDENED) on x86
|
||||
|
||||
Fixes: 134087016
|
||||
Fixes: 134378085
|
||||
Test: Boot x86 cuttlefish
|
||||
Change-Id: I64f9714bbda558056c47f09a5e768d7eb83e2640
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
---
|
||||
arch/x86/configs/gki_defconfig | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index cdaba53b7bb0..864595c719e7 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -30,6 +30,8 @@ CONFIG_EMBEDDED=y
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
# CONFIG_SLAB_MERGE_DEFAULT is not set
|
||||
+CONFIG_SLAB_FREELIST_RANDOM=y
|
||||
+CONFIG_SLAB_FREELIST_HARDENED=y
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_PM_WAKELOCKS=y
|
||||
CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||
@@ -46,6 +48,8 @@ CONFIG_MODVERSIONS=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
# CONFIG_SPARSEMEM_VMEMMAP is not set
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
+CONFIG_CMA=y
|
||||
+CONFIG_CMA_AREAS=16
|
||||
CONFIG_ZSMALLOC=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
|
@ -1,43 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alessio Balsini <balsini@google.com>
|
||||
Date: Fri, 11 Oct 2019 13:50:20 +0100
|
||||
Subject: ANDROID: gki_defconfig: Enable CONFIG_DM_SNAPSHOT
|
||||
|
||||
The snapshot dm target is required to implement the Virtual-AB
|
||||
mechanism.
|
||||
Introduce CONFIG_DM_SNAPSHOT in arm64 and x86 gki defconfigs to
|
||||
enable this feature.
|
||||
|
||||
Bug: 142527064
|
||||
Test: kernel build
|
||||
Signed-off-by: Alessio Balsini <balsini@google.com>
|
||||
Change-Id: I69bc614509eaff259a2aa9195e7e1d406b36bbb2
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 1 +
|
||||
arch/x86/configs/gki_defconfig | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 6ccf6c7ef9ec..ed21a0d79f4c 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -216,6 +216,7 @@ CONFIG_SCSI_UFSHCD_PLATFORM=y
|
||||
CONFIG_MD=y
|
||||
CONFIG_BLK_DEV_DM=y
|
||||
CONFIG_DM_CRYPT=y
|
||||
+CONFIG_DM_SNAPSHOT=y
|
||||
CONFIG_DM_UEVENT=y
|
||||
CONFIG_DM_VERITY=y
|
||||
CONFIG_DM_VERITY_AVB=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 931fcbdced69..fbcf73e4f66f 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -189,6 +189,7 @@ CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_MD=y
|
||||
CONFIG_BLK_DEV_DM=y
|
||||
CONFIG_DM_CRYPT=y
|
||||
+CONFIG_DM_SNAPSHOT=y
|
||||
CONFIG_DM_UEVENT=y
|
||||
CONFIG_DM_VERITY=y
|
||||
CONFIG_DM_VERITY_AVB=y
|
|
@ -1,42 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Todd Kjos <tkjos@google.com>
|
||||
Date: Wed, 18 Sep 2019 10:49:45 -0700
|
||||
Subject: ANDROID: gki_defconfig: Enable HiSilicon SoCs
|
||||
|
||||
Enable configs required for HiSilicon SoCs.
|
||||
|
||||
Bug: 141265942
|
||||
Change-Id: Iedb2b795bda690bdec4db3265dc391f7837208e0
|
||||
Signed-off-by: Todd Kjos <tkjos@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 1263dc50f970..f964b81a1e4b 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -36,6 +36,7 @@ CONFIG_EMBEDDED=y
|
||||
CONFIG_SLAB_FREELIST_RANDOM=y
|
||||
CONFIG_SLAB_FREELIST_HARDENED=y
|
||||
CONFIG_PROFILING=y
|
||||
+CONFIG_ARCH_HISI=y
|
||||
CONFIG_ARCH_QCOM=y
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_NR_CPUS=32
|
||||
@@ -195,6 +196,7 @@ CONFIG_MAC80211=y
|
||||
CONFIG_RFKILL=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_HOST_GENERIC=y
|
||||
+CONFIG_PCIE_KIRIN=y
|
||||
# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||
CONFIG_DEBUG_DEVRES=y
|
||||
CONFIG_ZRAM=y
|
||||
@@ -280,6 +282,7 @@ CONFIG_SPI=y
|
||||
CONFIG_SPMI=y
|
||||
CONFIG_PINCTRL_AMD=y
|
||||
CONFIG_POWER_AVS=y
|
||||
+CONFIG_POWER_RESET_HISI=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_GOV_USER_SPACE=y
|
|
@ -1,39 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Todd Kjos <tkjos@google.com>
|
||||
Date: Tue, 17 Sep 2019 16:25:46 -0700
|
||||
Subject: ANDROID: gki_defconfig: Enable SERIAL_DEV_BUS
|
||||
|
||||
Enable CONFIG_SERIAL_DEV_BUS for hikey/db845c
|
||||
|
||||
Bug: 141265942
|
||||
Change-Id: Iedc0d96ed10011ca0b5bedd7384f5158f32c6c76
|
||||
Signed-off-by: Todd Kjos <tkjos@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 1 +
|
||||
arch/x86/configs/gki_defconfig | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 8edcded9ab1f..1263dc50f970 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -268,6 +268,7 @@ CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=m
|
||||
CONFIG_SERIAL_AMBA_PL011=y
|
||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
+CONFIG_SERIAL_DEV_BUS=y
|
||||
CONFIG_VIRTIO_CONSOLE=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_VIRTIO=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index bf0ab5abf5e7..bcd12981dff4 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -239,6 +239,7 @@ CONFIG_SERIAL_8250=y
|
||||
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=m
|
||||
+CONFIG_SERIAL_DEV_BUS=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_VIRTIO=m
|
||||
# CONFIG_I2C_COMPAT is not set
|
|
@ -1,65 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: John Stultz <john.stultz@linaro.org>
|
||||
Date: Fri, 16 Aug 2019 22:33:20 +0000
|
||||
Subject: ANDROID: gki_defconfig: Minimally enable EFI
|
||||
|
||||
HiKey/HiKey960 need UEFI support to boot but don't need much of
|
||||
the other options that default on when enabling EFI.
|
||||
|
||||
Bug: 140204135
|
||||
Signed-off-by: John Stultz <john.stultz@linaro.org>
|
||||
Change-Id: I5c2e63701ae93277fcc3ddb36a39637237c65194
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 4 +++-
|
||||
arch/x86/configs/gki_defconfig | 2 ++
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 2773a84fd939..006692f065d4 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -46,7 +46,7 @@ CONFIG_SWP_EMULATION=y
|
||||
CONFIG_CP15_BARRIER_EMULATION=y
|
||||
CONFIG_SETEND_EMULATION=y
|
||||
CONFIG_RANDOMIZE_BASE=y
|
||||
-# CONFIG_EFI is not set
|
||||
+# CONFIG_DMI is not set
|
||||
CONFIG_PM_WAKELOCKS=y
|
||||
CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||
# CONFIG_PM_WAKELOCKS_GC is not set
|
||||
@@ -64,6 +64,7 @@ CONFIG_ARM_SCMI_PROTOCOL=y
|
||||
# CONFIG_ARM_SCMI_POWER_DOMAIN is not set
|
||||
CONFIG_ARM_SCPI_PROTOCOL=y
|
||||
# CONFIG_ARM_SCPI_POWER_DOMAIN is not set
|
||||
+# CONFIG_EFI_ARMSTUB_DTB_LOADER is not set
|
||||
CONFIG_ARM64_CRYPTO=y
|
||||
CONFIG_CRYPTO_AES_ARM64=y
|
||||
CONFIG_KPROBES=y
|
||||
@@ -382,6 +383,7 @@ CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
+# CONFIG_EFIVAR_FS is not set
|
||||
CONFIG_SDCARD_FS=y
|
||||
CONFIG_PSTORE=y
|
||||
CONFIG_PSTORE_CONSOLE=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index a1b2121bde8b..ed8296e953ed 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -36,6 +36,7 @@ CONFIG_SLAB_FREELIST_HARDENED=y
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=32
|
||||
+CONFIG_EFI=y
|
||||
CONFIG_PM_WAKELOCKS=y
|
||||
CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||
# CONFIG_PM_WAKELOCKS_GC is not set
|
||||
@@ -308,6 +309,7 @@ CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
+# CONFIG_EFIVAR_FS is not set
|
||||
CONFIG_SDCARD_FS=y
|
||||
CONFIG_PSTORE=y
|
||||
CONFIG_PSTORE_CONSOLE=y
|
|
@ -1,93 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Fri, 10 May 2019 14:33:29 -0700
|
||||
Subject: ANDROID: gki_defconfig: Remove cuttlefish-specific configs
|
||||
|
||||
Left enabled:
|
||||
- configs for virtualization CONFIG_PARAVIRT, CONFIG_VIRTIO_*, etc.
|
||||
- cuttlefish doesn't boot without CONFIG_KSM, CONFIG_SGETMASK_SYSCALL,
|
||||
CONFIG_SCHED_AUTOGROUP
|
||||
|
||||
A number of config should be modules, but due to lack of module support
|
||||
in userspace are left built in:
|
||||
- CONFIG_PCI_HOST_GENERIC
|
||||
- CONFIG_SERIAL_*
|
||||
- CONFIG_MAC80211
|
||||
- CONFIG_SND_INTEL8X0
|
||||
- CONFIG_RTC_DRV_PL030
|
||||
- CONFIG_RTC_DRV_PL031
|
||||
- CONFIG_CRYPTO_ADIANTUM
|
||||
- CONFIG_CRYPTO_ZSTD
|
||||
|
||||
Test: boot cuttlefish on arm64
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
(partially cherry picked from commit a651d6eccc912ea60d8b79ddeec23ffb1f85b65f)
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 12 ------------
|
||||
1 file changed, 12 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index a747e222db8e..41a892ca324d 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -34,7 +34,6 @@ CONFIG_EMBEDDED=y
|
||||
# CONFIG_SLAB_MERGE_DEFAULT is not set
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_SCHED_MC=y
|
||||
-CONFIG_HZ_100=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_PARAVIRT=y
|
||||
CONFIG_ARMV8_DEPRECATED=y
|
||||
@@ -56,7 +55,6 @@ CONFIG_CPU_FREQ_TIMES=y
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
-CONFIG_CPUFREQ_DT=y
|
||||
CONFIG_ARM_SCPI_CPUFREQ=y
|
||||
CONFIG_ARM_SCMI_CPUFREQ=y
|
||||
CONFIG_ARM_SCMI_PROTOCOL=y
|
||||
@@ -90,10 +88,6 @@ CONFIG_INET_ESP=y
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
CONFIG_INET_UDP_DIAG=y
|
||||
CONFIG_INET_DIAG_DESTROY=y
|
||||
-CONFIG_TCP_CONG_ADVANCED=y
|
||||
-# CONFIG_TCP_CONG_BIC is not set
|
||||
-# CONFIG_TCP_CONG_WESTWOOD is not set
|
||||
-# CONFIG_TCP_CONG_HTCP is not set
|
||||
CONFIG_IPV6_ROUTER_PREF=y
|
||||
CONFIG_IPV6_ROUTE_INFO=y
|
||||
CONFIG_IPV6_OPTIMISTIC_DAD=y
|
||||
@@ -191,10 +185,8 @@ CONFIG_RFKILL=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_HOST_GENERIC=y
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
-CONFIG_DEVTMPFS=y
|
||||
# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||
CONFIG_DEBUG_DEVRES=y
|
||||
-CONFIG_OF_UNITTEST=y
|
||||
CONFIG_ZRAM=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
@@ -214,8 +206,6 @@ CONFIG_DM_VERITY_AVB=y
|
||||
CONFIG_DM_VERITY_FEC=y
|
||||
CONFIG_DM_BOW=y
|
||||
CONFIG_NETDEVICES=y
|
||||
-CONFIG_NETCONSOLE=y
|
||||
-CONFIG_NETCONSOLE_DYNAMIC=y
|
||||
CONFIG_TUN=y
|
||||
CONFIG_VIRTIO_NET=y
|
||||
# CONFIG_ETHERNET is not set
|
||||
@@ -366,7 +356,6 @@ CONFIG_XZ_DEC=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
-CONFIG_FRAME_WARN=1024
|
||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
@@ -375,5 +364,4 @@ CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||
# CONFIG_DETECT_HUNG_TASK is not set
|
||||
CONFIG_PANIC_TIMEOUT=5
|
||||
CONFIG_SCHEDSTATS=y
|
||||
-CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
|
@ -1,150 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Sat, 4 May 2019 17:45:04 -0700
|
||||
Subject: ANDROID: gki_defconfig: Remove recommended configs not present on
|
||||
b1c1
|
||||
|
||||
Enable:
|
||||
CONFIG_USB because it's required.
|
||||
CONFIG_OVERLAY_FS, CONFIG_ARM64_SW_TTBR0_PAN because cuttlefish doesn't
|
||||
boot without these.
|
||||
|
||||
CONFIG_PSI, CONFIG_DM_BOW, CONFIG_HIDRAW, CONFIG_USB_HIDDEV,
|
||||
CONFIG_MSDOS_FS, CONFIG_PANIC_TIMEOUT=5 are not strictly required, but
|
||||
seem appropriate for a "generic" kernel.
|
||||
|
||||
Note that cuttlefish-specific modules, that are neither required nor
|
||||
recommended, are still enabled.
|
||||
|
||||
Test: boot cuttlefish on a arm64 machine
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
(partially cherry picked from commit 37381a5b77c8496a5bc5827ddbaf106e51d2c0c0)
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 68 +-------------------------------
|
||||
1 file changed, 1 insertion(+), 67 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index a87cf1871f12..a747e222db8e 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -3,7 +3,6 @@ CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_TASKSTATS=y
|
||||
-CONFIG_TASK_DELAY_ACCT=y
|
||||
CONFIG_TASK_XACCT=y
|
||||
CONFIG_TASK_IO_ACCOUNTING=y
|
||||
CONFIG_PSI=y
|
||||
@@ -49,7 +48,6 @@ CONFIG_COMPAT=y
|
||||
CONFIG_PM_WAKELOCKS=y
|
||||
CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||
# CONFIG_PM_WAKELOCKS_GC is not set
|
||||
-CONFIG_PM_DEBUG=y
|
||||
CONFIG_ENERGY_MODEL=y
|
||||
CONFIG_CPU_IDLE=y
|
||||
CONFIG_ARM_CPUIDLE=y
|
||||
@@ -176,7 +174,6 @@ CONFIG_IP6_NF_RAW=y
|
||||
CONFIG_L2TP=y
|
||||
CONFIG_NET_SCHED=y
|
||||
CONFIG_NET_SCH_HTB=y
|
||||
-CONFIG_NET_SCH_NETEM=y
|
||||
CONFIG_NET_SCH_INGRESS=y
|
||||
CONFIG_NET_CLS_U32=y
|
||||
CONFIG_NET_CLS_BPF=y
|
||||
@@ -259,15 +256,6 @@ CONFIG_INPUT_EVDEV=y
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
CONFIG_INPUT_JOYSTICK=y
|
||||
-CONFIG_JOYSTICK_XPAD=y
|
||||
-CONFIG_JOYSTICK_XPAD_FF=y
|
||||
-CONFIG_JOYSTICK_XPAD_LEDS=y
|
||||
-CONFIG_INPUT_TABLET=y
|
||||
-CONFIG_TABLET_USB_ACECAD=y
|
||||
-CONFIG_TABLET_USB_AIPTEK=y
|
||||
-CONFIG_TABLET_USB_GTCO=y
|
||||
-CONFIG_TABLET_USB_HANWANG=y
|
||||
-CONFIG_TABLET_USB_KBTAB=y
|
||||
CONFIG_INPUT_MISC=y
|
||||
CONFIG_INPUT_UINPUT=y
|
||||
# CONFIG_VT is not set
|
||||
@@ -309,65 +297,13 @@ CONFIG_SND_INTEL8X0=y
|
||||
# CONFIG_SND_USB is not set
|
||||
CONFIG_HIDRAW=y
|
||||
CONFIG_UHID=y
|
||||
-CONFIG_HID_A4TECH=y
|
||||
-CONFIG_HID_ACRUX=y
|
||||
-CONFIG_HID_ACRUX_FF=y
|
||||
CONFIG_HID_APPLE=y
|
||||
-CONFIG_HID_BELKIN=y
|
||||
-CONFIG_HID_CHERRY=y
|
||||
-CONFIG_HID_CHICONY=y
|
||||
-CONFIG_HID_PRODIKEYS=y
|
||||
-CONFIG_HID_CYPRESS=y
|
||||
-CONFIG_HID_DRAGONRISE=y
|
||||
-CONFIG_DRAGONRISE_FF=y
|
||||
-CONFIG_HID_EMS_FF=y
|
||||
CONFIG_HID_ELECOM=y
|
||||
-CONFIG_HID_EZKEY=y
|
||||
-CONFIG_HID_HOLTEK=y
|
||||
-CONFIG_HID_KEYTOUCH=y
|
||||
-CONFIG_HID_KYE=y
|
||||
-CONFIG_HID_UCLOGIC=y
|
||||
-CONFIG_HID_WALTOP=y
|
||||
-CONFIG_HID_GYRATION=y
|
||||
-CONFIG_HID_TWINHAN=y
|
||||
-CONFIG_HID_KENSINGTON=y
|
||||
-CONFIG_HID_LCPOWER=y
|
||||
-CONFIG_HID_LOGITECH=y
|
||||
-CONFIG_HID_LOGITECH_DJ=y
|
||||
-CONFIG_LOGITECH_FF=y
|
||||
-CONFIG_LOGIRUMBLEPAD2_FF=y
|
||||
-CONFIG_LOGIG940_FF=y
|
||||
CONFIG_HID_MAGICMOUSE=y
|
||||
CONFIG_HID_MICROSOFT=y
|
||||
-CONFIG_HID_MONTEREY=y
|
||||
CONFIG_HID_MULTITOUCH=y
|
||||
-CONFIG_HID_NTRIG=y
|
||||
-CONFIG_HID_ORTEK=y
|
||||
-CONFIG_HID_PANTHERLORD=y
|
||||
-CONFIG_PANTHERLORD_FF=y
|
||||
-CONFIG_HID_PETALYNX=y
|
||||
-CONFIG_HID_PICOLCD=y
|
||||
-CONFIG_HID_PRIMAX=y
|
||||
-CONFIG_HID_ROCCAT=y
|
||||
-CONFIG_HID_SAITEK=y
|
||||
-CONFIG_HID_SAMSUNG=y
|
||||
-CONFIG_HID_SONY=y
|
||||
-CONFIG_HID_SPEEDLINK=y
|
||||
-CONFIG_HID_SUNPLUS=y
|
||||
-CONFIG_HID_GREENASIA=y
|
||||
-CONFIG_GREENASIA_FF=y
|
||||
-CONFIG_HID_SMARTJOYPLUS=y
|
||||
-CONFIG_SMARTJOYPLUS_FF=y
|
||||
-CONFIG_HID_TIVO=y
|
||||
-CONFIG_HID_TOPSEED=y
|
||||
-CONFIG_HID_THRUSTMASTER=y
|
||||
-CONFIG_HID_WACOM=y
|
||||
-CONFIG_HID_WIIMOTE=y
|
||||
-CONFIG_HID_ZEROPLUS=y
|
||||
-CONFIG_HID_ZYDACRON=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
|
||||
-CONFIG_USB_EHCI_HCD=y
|
||||
+CONFIG_USB=y
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_CONFIGFS=y
|
||||
CONFIG_USB_CONFIGFS_UEVENT=y
|
||||
@@ -418,7 +354,6 @@ CONFIG_PSTORE_RAM=y
|
||||
CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
|
||||
CONFIG_SECURITY=y
|
||||
CONFIG_SECURITY_NETWORK=y
|
||||
-CONFIG_LSM_MMAP_MIN_ADDR=65536
|
||||
CONFIG_HARDENED_USERCOPY=y
|
||||
CONFIG_SECURITY_SELINUX=y
|
||||
CONFIG_CRYPTO_ADIANTUM=y
|
||||
@@ -441,5 +376,4 @@ CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||
CONFIG_PANIC_TIMEOUT=5
|
||||
CONFIG_SCHEDSTATS=y
|
||||
CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
||||
-CONFIG_ENABLE_DEFAULT_TRACERS=y
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
|
@ -1,77 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Sat, 11 May 2019 16:48:08 -0700
|
||||
Subject: ANDROID: gki_defconfig: common configs for device DLKMs
|
||||
|
||||
Test: boot arm64 cuttlefish
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
(partially cherry picked from commit 6742f3f75046867373ac782e709681c98f72a744)
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 18 ++++++++++++++++--
|
||||
1 file changed, 16 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 41a892ca324d..cc9ecd83a69c 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -269,22 +269,30 @@ CONFIG_HW_RANDOM_VIRTIO=y
|
||||
# CONFIG_DEVPORT is not set
|
||||
# CONFIG_I2C_COMPAT is not set
|
||||
# CONFIG_I2C_HELPER_AUTO is not set
|
||||
+CONFIG_SPMI=y
|
||||
+CONFIG_GPIOLIB=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_THERMAL=y
|
||||
+CONFIG_THERMAL_GOV_USER_SPACE=y
|
||||
CONFIG_CPU_THERMAL=y
|
||||
+CONFIG_DEVFREQ_THERMAL=y
|
||||
+CONFIG_REGULATOR=y
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
+CONFIG_MEDIA_CAMERA_SUPPORT=y
|
||||
# CONFIG_VGA_ARB is not set
|
||||
CONFIG_DRM=y
|
||||
# CONFIG_DRM_FBDEV_EMULATION is not set
|
||||
CONFIG_DRM_VIRTIO_GPU=y
|
||||
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
CONFIG_SOUND=y
|
||||
CONFIG_SND=y
|
||||
CONFIG_SND_HRTIMER=y
|
||||
+CONFIG_SND_DYNAMIC_MINORS=y
|
||||
# CONFIG_SND_SUPPORT_OLD_API is not set
|
||||
# CONFIG_SND_VERBOSE_PROCFS is not set
|
||||
# CONFIG_SND_DRIVERS is not set
|
||||
CONFIG_SND_INTEL8X0=y
|
||||
-# CONFIG_SND_USB is not set
|
||||
CONFIG_HIDRAW=y
|
||||
CONFIG_UHID=y
|
||||
CONFIG_HID_APPLE=y
|
||||
@@ -305,6 +313,9 @@ CONFIG_MMC=y
|
||||
# CONFIG_PWRSEQ_EMMC is not set
|
||||
# CONFIG_PWRSEQ_SIMPLE is not set
|
||||
# CONFIG_MMC_BLOCK is not set
|
||||
+CONFIG_NEW_LEDS=y
|
||||
+CONFIG_LEDS_CLASS=y
|
||||
+CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
# CONFIG_RTC_SYSTOHC is not set
|
||||
CONFIG_RTC_DRV_PL030=y
|
||||
@@ -321,7 +332,9 @@ CONFIG_ANDROID_VSOC=y
|
||||
CONFIG_ION=y
|
||||
CONFIG_COMMON_CLK_SCPI=y
|
||||
CONFIG_MAILBOX=y
|
||||
-# CONFIG_IOMMU_SUPPORT is not set
|
||||
+CONFIG_PM_DEVFREQ=y
|
||||
+CONFIG_PWM=y
|
||||
+CONFIG_GENERIC_PHY=y
|
||||
CONFIG_ANDROID=y
|
||||
CONFIG_ANDROID_BINDER_IPC=y
|
||||
CONFIG_EXT4_FS=y
|
||||
@@ -352,6 +365,7 @@ CONFIG_CRYPTO_LZ4=y
|
||||
CONFIG_CRYPTO_ZSTD=y
|
||||
CONFIG_CRYPTO_ANSI_CPRNG=y
|
||||
CONFIG_CRYPTO_DEV_VIRTIO=y
|
||||
+CONFIG_CRC8=y
|
||||
CONFIG_XZ_DEC=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEBUG_INFO=y
|
|
@ -1,25 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Wed, 17 Jul 2019 15:25:54 -0700
|
||||
Subject: ANDROID: gki_defconfig: disable BRIDGE_NETFILTER
|
||||
|
||||
This config is explicitly disabled on Pixel 3.
|
||||
|
||||
Change-Id: I126e5222180e3880a71c0f78b99276b0157ef4c8
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 45644397a2d7..140804afdd32 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -101,6 +101,7 @@ CONFIG_IPV6_MIP6=y
|
||||
CONFIG_IPV6_VTI=y
|
||||
CONFIG_IPV6_MULTIPLE_TABLES=y
|
||||
CONFIG_NETFILTER=y
|
||||
+# CONFIG_BRIDGE_NETFILTER is not set
|
||||
CONFIG_NF_CONNTRACK=y
|
||||
CONFIG_NF_CONNTRACK_SECMARK=y
|
||||
CONFIG_NF_CONNTRACK_EVENTS=y
|
|
@ -1,23 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Tue, 14 May 2019 17:32:43 -0700
|
||||
Subject: ANDROID: gki_defconfig: disable CONFIG_LCD_CLASS_DEVICE module
|
||||
|
||||
CONFIG_LCD_CLASS_DEVICE is set to "m" by default when
|
||||
CONFIG_BACKLIGHT_LCD_SUPPORT is set. We don't need lcd.ko though.
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index cc9ecd83a69c..4b17f0f9d0ae 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -284,6 +284,7 @@ CONFIG_DRM=y
|
||||
# CONFIG_DRM_FBDEV_EMULATION is not set
|
||||
CONFIG_DRM_VIRTIO_GPU=y
|
||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||
+# CONFIG_LCD_CLASS_DEVICE is not set
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
CONFIG_SOUND=y
|
||||
CONFIG_SND=y
|
|
@ -1,33 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Thu, 8 Aug 2019 17:06:26 -0700
|
||||
Subject: ANDROID: gki_defconfig: disable IP_PNP, ECRYPT_FS
|
||||
|
||||
Neither are necessary on android devices.
|
||||
|
||||
Change-Id: I61008f47c53fb88fcdbdcd889346a214b23246ad
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 43a1fea94c6a..539f42574383 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -87,7 +87,6 @@ CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_ADVANCED_ROUTER=y
|
||||
CONFIG_IP_MULTIPLE_TABLES=y
|
||||
-CONFIG_IP_PNP=y
|
||||
CONFIG_NET_IPGRE_DEMUX=y
|
||||
CONFIG_NET_IPVTI=y
|
||||
CONFIG_INET_ESP=y
|
||||
@@ -379,7 +378,6 @@ CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
-CONFIG_ECRYPT_FS=y
|
||||
CONFIG_SDCARD_FS=y
|
||||
CONFIG_PSTORE=y
|
||||
CONFIG_PSTORE_CONSOLE=y
|
|
@ -1,25 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Mon, 3 Jun 2019 11:50:28 -0700
|
||||
Subject: ANDROID: gki_defconfig: enable CMA and increase CMA_AREAS
|
||||
|
||||
Fixes: 134378085
|
||||
Test: boot arm64 cuttlefish
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index c9720858fd9a..bf15919ba7e7 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -66,6 +66,8 @@ CONFIG_MODVERSIONS=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
# CONFIG_SPARSEMEM_VMEMMAP is not set
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
+CONFIG_CMA=y
|
||||
+CONFIG_CMA_AREAS=16
|
||||
CONFIG_ZSMALLOC=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
|
@ -1,139 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Tue, 8 Oct 2019 15:12:37 -0700
|
||||
Subject: ANDROID: gki_defconfig: enable CONFIG_NLS_*
|
||||
|
||||
CONFIG_NLS_CODEPAGE_437 and CONFIG_NLS_ISO8859_1 are needed by cuttlefish
|
||||
to pass the CTS test - StorageManagerTest#testMountAndUnmountObbNormal
|
||||
|
||||
Adding the remaining 47 NLS Configs to account for possible i18n
|
||||
requirements not caught by CTS/VTS
|
||||
|
||||
Bug: 138199351
|
||||
Change-Id: I897873c8454f8329f4dc53d9af71907ba71790b7
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 49 ++++++++++++++++++++++++++++++++
|
||||
arch/x86/configs/gki_defconfig | 49 ++++++++++++++++++++++++++++++++
|
||||
2 files changed, 98 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 0b7669f8fedd..29cc5898a871 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -391,6 +391,55 @@ CONFIG_SDCARD_FS=y
|
||||
CONFIG_PSTORE=y
|
||||
CONFIG_PSTORE_CONSOLE=y
|
||||
CONFIG_PSTORE_RAM=y
|
||||
+CONFIG_NLS_CODEPAGE_437=y
|
||||
+CONFIG_NLS_CODEPAGE_737=y
|
||||
+CONFIG_NLS_CODEPAGE_775=y
|
||||
+CONFIG_NLS_CODEPAGE_850=y
|
||||
+CONFIG_NLS_CODEPAGE_852=y
|
||||
+CONFIG_NLS_CODEPAGE_855=y
|
||||
+CONFIG_NLS_CODEPAGE_857=y
|
||||
+CONFIG_NLS_CODEPAGE_860=y
|
||||
+CONFIG_NLS_CODEPAGE_861=y
|
||||
+CONFIG_NLS_CODEPAGE_862=y
|
||||
+CONFIG_NLS_CODEPAGE_863=y
|
||||
+CONFIG_NLS_CODEPAGE_864=y
|
||||
+CONFIG_NLS_CODEPAGE_865=y
|
||||
+CONFIG_NLS_CODEPAGE_866=y
|
||||
+CONFIG_NLS_CODEPAGE_869=y
|
||||
+CONFIG_NLS_CODEPAGE_936=y
|
||||
+CONFIG_NLS_CODEPAGE_950=y
|
||||
+CONFIG_NLS_CODEPAGE_932=y
|
||||
+CONFIG_NLS_CODEPAGE_949=y
|
||||
+CONFIG_NLS_CODEPAGE_874=y
|
||||
+CONFIG_NLS_ISO8859_8=y
|
||||
+CONFIG_NLS_CODEPAGE_1250=y
|
||||
+CONFIG_NLS_CODEPAGE_1251=y
|
||||
+CONFIG_NLS_ASCII=y
|
||||
+CONFIG_NLS_ISO8859_1=y
|
||||
+CONFIG_NLS_ISO8859_2=y
|
||||
+CONFIG_NLS_ISO8859_3=y
|
||||
+CONFIG_NLS_ISO8859_4=y
|
||||
+CONFIG_NLS_ISO8859_5=y
|
||||
+CONFIG_NLS_ISO8859_6=y
|
||||
+CONFIG_NLS_ISO8859_7=y
|
||||
+CONFIG_NLS_ISO8859_9=y
|
||||
+CONFIG_NLS_ISO8859_13=y
|
||||
+CONFIG_NLS_ISO8859_14=y
|
||||
+CONFIG_NLS_ISO8859_15=y
|
||||
+CONFIG_NLS_KOI8_R=y
|
||||
+CONFIG_NLS_KOI8_U=y
|
||||
+CONFIG_NLS_MAC_ROMAN=y
|
||||
+CONFIG_NLS_MAC_CELTIC=y
|
||||
+CONFIG_NLS_MAC_CENTEURO=y
|
||||
+CONFIG_NLS_MAC_CROATIAN=y
|
||||
+CONFIG_NLS_MAC_CYRILLIC=y
|
||||
+CONFIG_NLS_MAC_GAELIC=y
|
||||
+CONFIG_NLS_MAC_GREEK=y
|
||||
+CONFIG_NLS_MAC_ICELAND=y
|
||||
+CONFIG_NLS_MAC_INUIT=y
|
||||
+CONFIG_NLS_MAC_ROMANIAN=y
|
||||
+CONFIG_NLS_MAC_TURKISH=y
|
||||
+CONFIG_NLS_UTF8=y
|
||||
CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
|
||||
CONFIG_SECURITY=y
|
||||
CONFIG_SECURITY_NETWORK=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 78283ea8c1c8..5059dcaf01bb 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -324,6 +324,55 @@ CONFIG_SDCARD_FS=y
|
||||
CONFIG_PSTORE=y
|
||||
CONFIG_PSTORE_CONSOLE=y
|
||||
CONFIG_PSTORE_RAM=y
|
||||
+CONFIG_NLS_CODEPAGE_437=y
|
||||
+CONFIG_NLS_CODEPAGE_737=y
|
||||
+CONFIG_NLS_CODEPAGE_775=y
|
||||
+CONFIG_NLS_CODEPAGE_850=y
|
||||
+CONFIG_NLS_CODEPAGE_852=y
|
||||
+CONFIG_NLS_CODEPAGE_855=y
|
||||
+CONFIG_NLS_CODEPAGE_857=y
|
||||
+CONFIG_NLS_CODEPAGE_860=y
|
||||
+CONFIG_NLS_CODEPAGE_861=y
|
||||
+CONFIG_NLS_CODEPAGE_862=y
|
||||
+CONFIG_NLS_CODEPAGE_863=y
|
||||
+CONFIG_NLS_CODEPAGE_864=y
|
||||
+CONFIG_NLS_CODEPAGE_865=y
|
||||
+CONFIG_NLS_CODEPAGE_866=y
|
||||
+CONFIG_NLS_CODEPAGE_869=y
|
||||
+CONFIG_NLS_CODEPAGE_936=y
|
||||
+CONFIG_NLS_CODEPAGE_950=y
|
||||
+CONFIG_NLS_CODEPAGE_932=y
|
||||
+CONFIG_NLS_CODEPAGE_949=y
|
||||
+CONFIG_NLS_CODEPAGE_874=y
|
||||
+CONFIG_NLS_ISO8859_8=y
|
||||
+CONFIG_NLS_CODEPAGE_1250=y
|
||||
+CONFIG_NLS_CODEPAGE_1251=y
|
||||
+CONFIG_NLS_ASCII=y
|
||||
+CONFIG_NLS_ISO8859_1=y
|
||||
+CONFIG_NLS_ISO8859_2=y
|
||||
+CONFIG_NLS_ISO8859_3=y
|
||||
+CONFIG_NLS_ISO8859_4=y
|
||||
+CONFIG_NLS_ISO8859_5=y
|
||||
+CONFIG_NLS_ISO8859_6=y
|
||||
+CONFIG_NLS_ISO8859_7=y
|
||||
+CONFIG_NLS_ISO8859_9=y
|
||||
+CONFIG_NLS_ISO8859_13=y
|
||||
+CONFIG_NLS_ISO8859_14=y
|
||||
+CONFIG_NLS_ISO8859_15=y
|
||||
+CONFIG_NLS_KOI8_R=y
|
||||
+CONFIG_NLS_KOI8_U=y
|
||||
+CONFIG_NLS_MAC_ROMAN=y
|
||||
+CONFIG_NLS_MAC_CELTIC=y
|
||||
+CONFIG_NLS_MAC_CENTEURO=y
|
||||
+CONFIG_NLS_MAC_CROATIAN=y
|
||||
+CONFIG_NLS_MAC_CYRILLIC=y
|
||||
+CONFIG_NLS_MAC_GAELIC=y
|
||||
+CONFIG_NLS_MAC_GREEK=y
|
||||
+CONFIG_NLS_MAC_ICELAND=y
|
||||
+CONFIG_NLS_MAC_INUIT=y
|
||||
+CONFIG_NLS_MAC_ROMANIAN=y
|
||||
+CONFIG_NLS_MAC_TURKISH=y
|
||||
+CONFIG_NLS_UTF8=y
|
||||
CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
|
||||
CONFIG_SECURITY=y
|
||||
CONFIG_SECURITY_NETWORK=y
|
|
@ -1,30 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Thu, 10 Oct 2019 08:45:15 -0700
|
||||
Subject: ANDROID: gki_defconfig: enable CONFIG_PARAVIRT and
|
||||
CONFIG_HYPERVISOR_GUEST
|
||||
|
||||
CONFIG_HYPERVISOR_GUEST is needed by cuttlefish to pass the CTS Bionic tests:
|
||||
clock_getres_CLOCK_MONOTONIC, clock_getres_CLOCK_REALTIME, and
|
||||
clock_getres_CLOCK_BOOTTIME
|
||||
|
||||
Bug: 138199351
|
||||
Change-Id: I3e209035cdd7a29e020078f8aba567d9c8446347
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
---
|
||||
arch/x86/configs/gki_defconfig | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 5059dcaf01bb..0e23b0cc3a8c 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -37,6 +37,8 @@ CONFIG_SLAB_FREELIST_RANDOM=y
|
||||
CONFIG_SLAB_FREELIST_HARDENED=y
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_SMP=y
|
||||
+CONFIG_HYPERVISOR_GUEST=y
|
||||
+CONFIG_PARAVIRT=y
|
||||
CONFIG_NR_CPUS=32
|
||||
CONFIG_EFI=y
|
||||
CONFIG_PM_WAKELOCKS=y
|
|
@ -1,69 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Thu, 29 Aug 2019 14:04:15 -0700
|
||||
Subject: ANDROID: gki_defconfig: enable CONFIG_QCOM_{COMMAND_DB,RPMH,PDC}
|
||||
|
||||
CONFIG_ARCH_QCOM is a dependency of the above and selects
|
||||
CONFIG_{PINCTRL, REGULATOR, TMPFS}.
|
||||
|
||||
Bug: 133441279
|
||||
Bug: 133441092
|
||||
Bug: 133440650
|
||||
Change-Id: I22c37946ec3a62ccbd3fa65bbc09076964d86475
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 604b97841737..6aae6d55e96c 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -36,6 +36,7 @@ CONFIG_EMBEDDED=y
|
||||
CONFIG_SLAB_FREELIST_RANDOM=y
|
||||
CONFIG_SLAB_FREELIST_HARDENED=y
|
||||
CONFIG_PROFILING=y
|
||||
+CONFIG_ARCH_QCOM=y
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_NR_CPUS=32
|
||||
CONFIG_SECCOMP=y
|
||||
@@ -279,7 +280,6 @@ CONFIG_HW_RANDOM_VIRTIO=y
|
||||
# CONFIG_I2C_HELPER_AUTO is not set
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPMI=y
|
||||
-CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_AMD=y
|
||||
CONFIG_POWER_AVS=y
|
||||
# CONFIG_HWMON is not set
|
||||
@@ -290,7 +290,6 @@ CONFIG_DEVFREQ_THERMAL=y
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_MFD_ACT8945A=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
-CONFIG_REGULATOR=y
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_MEDIA_CAMERA_SUPPORT=y
|
||||
CONFIG_MEDIA_CONTROLLER=y
|
||||
@@ -357,12 +356,15 @@ CONFIG_COMMON_CLK_SCPI=y
|
||||
CONFIG_HWSPINLOCK=y
|
||||
CONFIG_MAILBOX=y
|
||||
CONFIG_ARM_SMMU=y
|
||||
+CONFIG_QCOM_COMMAND_DB=y
|
||||
+CONFIG_QCOM_RPMH=y
|
||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
CONFIG_DEVFREQ_GOV_PASSIVE=y
|
||||
CONFIG_EXTCON=y
|
||||
CONFIG_PWM=y
|
||||
+CONFIG_QCOM_PDC=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_RAS=y
|
||||
CONFIG_ANDROID=y
|
||||
@@ -380,7 +382,6 @@ CONFIG_FUSE_FS=y
|
||||
CONFIG_OVERLAY_FS=y
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
-CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
# CONFIG_EFIVAR_FS is not set
|
||||
CONFIG_SDCARD_FS=y
|
|
@ -1,50 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Salyzyn <salyzyn@google.com>
|
||||
Date: Thu, 29 Aug 2019 08:00:26 -0700
|
||||
Subject: ANDROID: gki_defconfig enable CONFIG_SPARSEMEM_VMEMMAP
|
||||
|
||||
Legacy Ion driver and SPARSEMEM for carveout regions results
|
||||
in invalid page structures breaking page_to_pfn(). This can
|
||||
be temporarily resolved with SPARSEMEM_VMEMMAP until the Ion
|
||||
driver is refactored and can be reinvestigated.
|
||||
|
||||
At that time if it can be solved, or maybe correct this issue
|
||||
utilizing less resources than SPARSEMEM_VMEMMAP requires. The
|
||||
ABI does not change so we have the flexibility to adjust this
|
||||
configuration.
|
||||
|
||||
Signed-off-by: Mark Salyzyn <salyzyn@google.com>
|
||||
Bug: 138851285
|
||||
Bug: 138149732
|
||||
Test: ABI_DEFINITION=common/abi_gki_aarch64.xml \
|
||||
BUILD_CONFIG=common/build.config.gki.aarch64 ./build/build_abi.sh
|
||||
Change-Id: I25cc8ebe9e25260b9869c5e8d8667b280f83ca51
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 1 -
|
||||
arch/x86/configs/gki_defconfig | 1 -
|
||||
2 files changed, 2 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 006692f065d4..604b97841737 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -72,7 +72,6 @@ CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
-# CONFIG_SPARSEMEM_VMEMMAP is not set
|
||||
CONFIG_MEMORY_HOTPLUG=y
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_CMA=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index ed8296e953ed..e86cd1009a67 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -48,7 +48,6 @@ CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
-# CONFIG_SPARSEMEM_VMEMMAP is not set
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_CMA=y
|
||||
CONFIG_CMA_AREAS=16
|
|
@ -1,24 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Fri, 23 Aug 2019 10:57:25 -0700
|
||||
Subject: ANDROID: gki_defconfig: enable CONFIG_TIPC
|
||||
|
||||
Test: n/a
|
||||
Change-Id: If068edf432bd2574a9ca8257e5a4f43731328317
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 73acbe383203..b70d608b1ee6 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -170,6 +170,7 @@ CONFIG_IP6_NF_FILTER=y
|
||||
CONFIG_IP6_NF_TARGET_REJECT=y
|
||||
CONFIG_IP6_NF_MANGLE=y
|
||||
CONFIG_IP6_NF_RAW=y
|
||||
+CONFIG_TIPC=y
|
||||
CONFIG_L2TP=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_NET_SCHED=y
|
|
@ -1,37 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Wed, 18 Sep 2019 14:07:28 -0700
|
||||
Subject: ANDROID: gki_defconfig: enable CONFIG_UIO
|
||||
|
||||
Bug: 135666008
|
||||
Change-Id: I1fac71548c2f442d3622ff068928662d1ba6e3dd
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 1 +
|
||||
arch/x86/configs/gki_defconfig | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 440173b3c301..f65b544d17a4 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -337,6 +337,7 @@ CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_PL030=y
|
||||
CONFIG_RTC_DRV_PL031=y
|
||||
CONFIG_DMADEVICES=y
|
||||
+CONFIG_UIO=y
|
||||
CONFIG_VIRTIO_PCI=y
|
||||
# CONFIG_VIRTIO_PCI_LEGACY is not set
|
||||
CONFIG_VIRTIO_INPUT=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index c206a2d0f9cf..3e8f580e0bde 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -287,6 +287,7 @@ CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
# CONFIG_RTC_SYSTOHC is not set
|
||||
CONFIG_RTC_DRV_TEST=m
|
||||
+CONFIG_UIO=y
|
||||
CONFIG_VIRTIO_PCI=m
|
||||
CONFIG_VIRTIO_INPUT=m
|
||||
CONFIG_VIRTIO_MMIO=m
|
|
@ -1,27 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Wed, 12 Jun 2019 15:26:49 -0700
|
||||
Subject: ANDROID: gki_defconfig: enable DMA_CMA
|
||||
|
||||
And update ABI representation.
|
||||
|
||||
Fixes: 134916881
|
||||
Test: boot arm64 cuttlefish
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
Change-Id: Id0d270f510aa0a06dc5a082ef35c3d969b72cc35
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index ef79e45cae16..9bc2782661dc 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -373,6 +373,7 @@ CONFIG_CRYPTO_ANSI_CPRNG=y
|
||||
CONFIG_CRYPTO_DEV_VIRTIO=y
|
||||
CONFIG_CRC8=y
|
||||
CONFIG_XZ_DEC=y
|
||||
+CONFIG_DMA_CMA=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
|
@ -1,37 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Tue, 8 Oct 2019 12:38:34 -0700
|
||||
Subject: ANDROID: gki_defconfig: enable REGULATOR
|
||||
|
||||
Fixes: 142334529
|
||||
Change-Id: If2e17aec00c2f2202f6f9203192afcd8e12228a6
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 1 +
|
||||
arch/x86/configs/gki_defconfig | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 9e3b34fa8b64..0b7669f8fedd 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -293,6 +293,7 @@ CONFIG_DEVFREQ_THERMAL=y
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_MFD_ACT8945A=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
+CONFIG_REGULATOR=y
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_MEDIA_CAMERA_SUPPORT=y
|
||||
CONFIG_MEDIA_CONTROLLER=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index f539970bf631..78283ea8c1c8 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -252,6 +252,7 @@ CONFIG_GPIOLIB=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_DEVFREQ_THERMAL=y
|
||||
# CONFIG_X86_PKG_TEMP_THERMAL is not set
|
||||
+CONFIG_REGULATOR=y
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_MEDIA_CAMERA_SUPPORT=y
|
||||
CONFIG_DRM=y
|
|
@ -1,28 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Mon, 3 Jun 2019 12:54:46 -0700
|
||||
Subject: ANDROID: gki_defconfig: enable SLAB_FREELIST_RANDOM,
|
||||
SLAB_FREELIST_HARDENED
|
||||
|
||||
Security hardening
|
||||
|
||||
Fixes: 134087016
|
||||
Test: boot arm64 cuttlefish
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index bf15919ba7e7..ef79e45cae16 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -31,6 +31,8 @@ CONFIG_EMBEDDED=y
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
# CONFIG_SLAB_MERGE_DEFAULT is not set
|
||||
+CONFIG_SLAB_FREELIST_RANDOM=y
|
||||
+CONFIG_SLAB_FREELIST_HARDENED=y
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_SECCOMP=y
|
|
@ -1,47 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Biggers <ebiggers@google.com>
|
||||
Date: Wed, 9 Oct 2019 13:00:58 -0700
|
||||
Subject: ANDROID: gki_defconfig: enable accelerated AES and SHA-256
|
||||
|
||||
Enable AES and SHA-256 accelerated with the ARM Cryptography Extensions
|
||||
or with AES-NI, as recommended by
|
||||
kernel-configs/android-4.19/android-recommended-{arm64,x86}.config.
|
||||
These are ~10x faster than the other software implementations of AES and
|
||||
SHA-256 on most devices, and often are required to get acceptable
|
||||
fscrypt and dm-verity performance.
|
||||
|
||||
Bug: 142410832
|
||||
Change-Id: Ia2794f47711132d5caa9021e6e81fb625e02be8d
|
||||
Signed-off-by: Eric Biggers <ebiggers@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 3 ++-
|
||||
arch/x86/configs/gki_defconfig | 2 ++
|
||||
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 29cc5898a871..98520ebdd4d6 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -69,7 +69,8 @@ CONFIG_ARM_SCPI_PROTOCOL=y
|
||||
# CONFIG_ARM_SCPI_POWER_DOMAIN is not set
|
||||
# CONFIG_EFI_ARMSTUB_DTB_LOADER is not set
|
||||
CONFIG_ARM64_CRYPTO=y
|
||||
-CONFIG_CRYPTO_AES_ARM64=y
|
||||
+CONFIG_CRYPTO_SHA2_ARM64_CE=y
|
||||
+CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
|
||||
CONFIG_KPROBES=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 0e23b0cc3a8c..931fcbdced69 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -381,6 +381,8 @@ CONFIG_SECURITY_NETWORK=y
|
||||
CONFIG_HARDENED_USERCOPY=y
|
||||
CONFIG_SECURITY_SELINUX=y
|
||||
CONFIG_CRYPTO_ADIANTUM=y
|
||||
+CONFIG_CRYPTO_SHA256_SSSE3=y
|
||||
+CONFIG_CRYPTO_AES_NI_INTEL=y
|
||||
CONFIG_CRYPTO_LZ4=y
|
||||
CONFIG_CRYPTO_ZSTD=y
|
||||
CONFIG_CRYPTO_ANSI_CPRNG=y
|
|
@ -1,41 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Biggers <ebiggers@google.com>
|
||||
Date: Thu, 10 Oct 2019 15:45:41 -0700
|
||||
Subject: ANDROID: gki_defconfig: enable fs-verity
|
||||
|
||||
fs-verity will be used for APK verification in R.
|
||||
|
||||
Bug: 142494008
|
||||
Change-Id: Ia18eb35fcdbccabab47de5fb26daba455fc1eb77
|
||||
Signed-off-by: Eric Biggers <ebiggers@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 2 ++
|
||||
arch/x86/configs/gki_defconfig | 2 ++
|
||||
2 files changed, 4 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index ed21a0d79f4c..80ebf75319a1 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -381,6 +381,8 @@ CONFIG_EXT4_FS_SECURITY=y
|
||||
CONFIG_F2FS_FS=y
|
||||
CONFIG_F2FS_FS_SECURITY=y
|
||||
CONFIG_FS_ENCRYPTION=y
|
||||
+CONFIG_FS_VERITY=y
|
||||
+CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y
|
||||
# CONFIG_DNOTIFY is not set
|
||||
CONFIG_QUOTA=y
|
||||
CONFIG_QFMT_V2=y
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index fbcf73e4f66f..18c3429c7ede 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -313,6 +313,8 @@ CONFIG_EXT4_FS_SECURITY=y
|
||||
CONFIG_F2FS_FS=y
|
||||
CONFIG_F2FS_FS_SECURITY=y
|
||||
CONFIG_FS_ENCRYPTION=y
|
||||
+CONFIG_FS_VERITY=y
|
||||
+CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y
|
||||
# CONFIG_DNOTIFY is not set
|
||||
CONFIG_QUOTA=y
|
||||
CONFIG_QFMT_V2=y
|
|
@ -1,85 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Tue, 16 Jul 2019 16:27:17 -0700
|
||||
Subject: ANDROID: gki_defconfig: enable more configs
|
||||
|
||||
Enable following configs:
|
||||
CONFIG_RAS
|
||||
CONFIG_EDAC
|
||||
CONFIG_SPI
|
||||
CONFIG_DMADEVICES
|
||||
CONFIG_POWER_AVS
|
||||
CONFIG_WATCHDOG
|
||||
CONFIG_USB_OTG
|
||||
CONFIG_MMC_BLOCK
|
||||
|
||||
Fixes: 137124260
|
||||
Fixes: 136278478
|
||||
Fixes: 136279343
|
||||
Fixes: 136279418
|
||||
Fixes: 136279652
|
||||
Fixes: 136279658
|
||||
Fixes: 136281307
|
||||
Change-Id: I630dd2ffd4f6694b497cbb273830d643878694f6
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 7c66f40c9739..45644397a2d7 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -274,14 +274,17 @@ CONFIG_HW_RANDOM_VIRTIO=y
|
||||
# CONFIG_DEVPORT is not set
|
||||
# CONFIG_I2C_COMPAT is not set
|
||||
# CONFIG_I2C_HELPER_AUTO is not set
|
||||
+CONFIG_SPI=y
|
||||
CONFIG_SPMI=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_AMD=y
|
||||
+CONFIG_POWER_AVS=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_GOV_USER_SPACE=y
|
||||
CONFIG_CPU_THERMAL=y
|
||||
CONFIG_DEVFREQ_THERMAL=y
|
||||
+CONFIG_WATCHDOG=y
|
||||
CONFIG_MFD_ACT8945A=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_REGULATOR=y
|
||||
@@ -313,6 +316,7 @@ CONFIG_HID_MICROSOFT=y
|
||||
CONFIG_HID_MULTITOUCH=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB=y
|
||||
+CONFIG_USB_OTG=y
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_DUMMY_HCD=y
|
||||
CONFIG_USB_CONFIGFS=y
|
||||
@@ -324,16 +328,17 @@ CONFIG_USB_CONFIGFS_F_MIDI=y
|
||||
CONFIG_MMC=y
|
||||
# CONFIG_PWRSEQ_EMMC is not set
|
||||
# CONFIG_PWRSEQ_SIMPLE is not set
|
||||
-# CONFIG_MMC_BLOCK is not set
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
+CONFIG_EDAC=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
# CONFIG_RTC_SYSTOHC is not set
|
||||
CONFIG_RTC_DRV_PL030=y
|
||||
CONFIG_RTC_DRV_PL031=y
|
||||
+CONFIG_DMADEVICES=y
|
||||
CONFIG_VIRTIO_PCI=y
|
||||
# CONFIG_VIRTIO_PCI_LEGACY is not set
|
||||
CONFIG_VIRTIO_INPUT=y
|
||||
@@ -354,6 +359,7 @@ CONFIG_DEVFREQ_GOV_PASSIVE=y
|
||||
CONFIG_EXTCON=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
+CONFIG_RAS=y
|
||||
CONFIG_ANDROID=y
|
||||
CONFIG_ANDROID_BINDER_IPC=y
|
||||
CONFIG_INTERCONNECT=y
|
|
@ -1,46 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Yongqin Liu <yongqin.liu@linaro.org>
|
||||
Date: Thu, 10 Oct 2019 11:35:16 +0800
|
||||
Subject: ANDROID: gki_defconfig: enabled CONFIG_TMPFS explicitly
|
||||
|
||||
otherwise will cause init boot failure reported like this:
|
||||
|
||||
[ 1.959344] Run /init as init process
|
||||
[ 1.966119] tmpfs: Unknown parameter 'mode'
|
||||
[ 1.971092] tmpfs: Unknown parameter 'mode'
|
||||
[ 1.975426] tmpfs: Unknown parameter 'mode'
|
||||
[ 1.979709] tmpfs: Unknown parameter 'mode'
|
||||
[ 1.984298] init: mount("tmpfs", "/dev", "tmpfs", MS_NOSUID, "mode=0755") failed Invalid argument
|
||||
[ 1.993214] init: mount("tmpfs", "/mnt", "tmpfs", MS_NOEXEC | MS_NOSUID | MS_NODEV, "mode=0755,uid=0,gid=1000") failed Invalid argument
|
||||
[ 2.005417] init: mount("tmpfs", "/apex", "tmpfs", MS_NOEXEC | MS_NOSUID | MS_NODEV, "mode=0755,uid=0,gid=0") failed Invalid argument
|
||||
[ 2.017435] init: mount("tmpfs", "/debug_ramdisk", "tmpfs", MS_NOEXEC | MS_NOSUID | MS_NODEV, "mode=0755,uid=0,gid=0") failed Invalid argument
|
||||
[ 2.030276] init: Init encountered errors starting first stage, aborting
|
||||
[ 2.057074] init: #00 pc 00000000002eeac8 /init (UnwindStackCurrent::UnwindFromContext(unsigned long, void*)+96)
|
||||
[ 2.067403] init: #01 pc 00000000002730c4 /init (android::init::InitFatalReboot()+92)
|
||||
[ 2.075341] init: #02 pc 00000000002754f4 /init (android::init::InitAborter(char const*)+44)
|
||||
[ 2.083887] init: #03 pc 00000000002ae4f8 /init (android::base::LogMessage::~LogMessage()+608)
|
||||
[ 2.092605] init: #04 pc 000000000026aba8 /init (android::init::FirstStageMain(int, char**)+4400)
|
||||
[ 2.101588] init: #05 pc 00000000003599e4 /init (__real_libc_init(void*, void (*)(), int (*)(int, char**, char**), structors_array_t const*, bionic_tcb*)+572)
|
||||
[ 2.115863] init: Reboot ending, jumping to kernel
|
||||
[ 2.121709] reboot: Restarting system with command 'bootloader'
|
||||
|
||||
Tested: with hikey
|
||||
|
||||
Change-Id: I607856cbcc5bfdaf304b13089c07ca0cf10c2f76
|
||||
Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 98520ebdd4d6..6ccf6c7ef9ec 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -387,6 +387,7 @@ CONFIG_FUSE_FS=y
|
||||
CONFIG_OVERLAY_FS=y
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
+CONFIG_TMPFS=y
|
||||
# CONFIG_EFIVAR_FS is not set
|
||||
CONFIG_SDCARD_FS=y
|
||||
CONFIG_PSTORE=y
|
|
@ -1,463 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Mon, 13 May 2019 16:00:04 -0700
|
||||
Subject: ANDROID: gki_defconfig: initial config based on cuttlefish_defconfig
|
||||
|
||||
Test: boot arm64 cuttlefish
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 445 +++++++++++++++++++++++++++++++
|
||||
1 file changed, 445 insertions(+)
|
||||
create mode 100644 arch/arm64/configs/gki_defconfig
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
new file mode 100644
|
||||
index 000000000000..a87cf1871f12
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -0,0 +1,445 @@
|
||||
+CONFIG_AUDIT=y
|
||||
+CONFIG_NO_HZ=y
|
||||
+CONFIG_HIGH_RES_TIMERS=y
|
||||
+CONFIG_PREEMPT=y
|
||||
+CONFIG_TASKSTATS=y
|
||||
+CONFIG_TASK_DELAY_ACCT=y
|
||||
+CONFIG_TASK_XACCT=y
|
||||
+CONFIG_TASK_IO_ACCOUNTING=y
|
||||
+CONFIG_PSI=y
|
||||
+CONFIG_IKCONFIG=y
|
||||
+CONFIG_IKCONFIG_PROC=y
|
||||
+CONFIG_MEMCG=y
|
||||
+CONFIG_MEMCG_SWAP=y
|
||||
+CONFIG_RT_GROUP_SCHED=y
|
||||
+CONFIG_CGROUP_FREEZER=y
|
||||
+CONFIG_CPUSETS=y
|
||||
+CONFIG_CGROUP_CPUACCT=y
|
||||
+CONFIG_CGROUP_BPF=y
|
||||
+CONFIG_SCHED_AUTOGROUP=y
|
||||
+CONFIG_BLK_DEV_INITRD=y
|
||||
+# CONFIG_RD_BZIP2 is not set
|
||||
+# CONFIG_RD_LZMA is not set
|
||||
+# CONFIG_RD_XZ is not set
|
||||
+# CONFIG_RD_LZO is not set
|
||||
+# CONFIG_RD_LZ4 is not set
|
||||
+CONFIG_SGETMASK_SYSCALL=y
|
||||
+# CONFIG_SYSFS_SYSCALL is not set
|
||||
+# CONFIG_FHANDLE is not set
|
||||
+CONFIG_KALLSYMS_ALL=y
|
||||
+CONFIG_BPF_SYSCALL=y
|
||||
+# CONFIG_RSEQ is not set
|
||||
+CONFIG_EMBEDDED=y
|
||||
+# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
+# CONFIG_COMPAT_BRK is not set
|
||||
+# CONFIG_SLAB_MERGE_DEFAULT is not set
|
||||
+CONFIG_PROFILING=y
|
||||
+CONFIG_SCHED_MC=y
|
||||
+CONFIG_HZ_100=y
|
||||
+CONFIG_SECCOMP=y
|
||||
+CONFIG_PARAVIRT=y
|
||||
+CONFIG_ARMV8_DEPRECATED=y
|
||||
+CONFIG_SWP_EMULATION=y
|
||||
+CONFIG_CP15_BARRIER_EMULATION=y
|
||||
+CONFIG_SETEND_EMULATION=y
|
||||
+CONFIG_ARM64_SW_TTBR0_PAN=y
|
||||
+CONFIG_RANDOMIZE_BASE=y
|
||||
+# CONFIG_EFI is not set
|
||||
+CONFIG_COMPAT=y
|
||||
+CONFIG_PM_WAKELOCKS=y
|
||||
+CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||
+# CONFIG_PM_WAKELOCKS_GC is not set
|
||||
+CONFIG_PM_DEBUG=y
|
||||
+CONFIG_ENERGY_MODEL=y
|
||||
+CONFIG_CPU_IDLE=y
|
||||
+CONFIG_ARM_CPUIDLE=y
|
||||
+CONFIG_CPU_FREQ=y
|
||||
+CONFIG_CPU_FREQ_TIMES=y
|
||||
+CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
|
||||
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
+CONFIG_CPUFREQ_DT=y
|
||||
+CONFIG_ARM_SCPI_CPUFREQ=y
|
||||
+CONFIG_ARM_SCMI_CPUFREQ=y
|
||||
+CONFIG_ARM_SCMI_PROTOCOL=y
|
||||
+# CONFIG_ARM_SCMI_POWER_DOMAIN is not set
|
||||
+CONFIG_ARM_SCPI_PROTOCOL=y
|
||||
+# CONFIG_ARM_SCPI_POWER_DOMAIN is not set
|
||||
+CONFIG_KPROBES=y
|
||||
+CONFIG_JUMP_LABEL=y
|
||||
+CONFIG_MODULES=y
|
||||
+CONFIG_MODULE_UNLOAD=y
|
||||
+CONFIG_MODVERSIONS=y
|
||||
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
+# CONFIG_SPARSEMEM_VMEMMAP is not set
|
||||
+CONFIG_KSM=y
|
||||
+CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
+CONFIG_ZSMALLOC=y
|
||||
+CONFIG_NET=y
|
||||
+CONFIG_PACKET=y
|
||||
+CONFIG_UNIX=y
|
||||
+CONFIG_XFRM_USER=y
|
||||
+CONFIG_XFRM_INTERFACE=y
|
||||
+CONFIG_XFRM_STATISTICS=y
|
||||
+CONFIG_NET_KEY=y
|
||||
+CONFIG_INET=y
|
||||
+CONFIG_IP_MULTICAST=y
|
||||
+CONFIG_IP_ADVANCED_ROUTER=y
|
||||
+CONFIG_IP_MULTIPLE_TABLES=y
|
||||
+CONFIG_NET_IPGRE_DEMUX=y
|
||||
+CONFIG_NET_IPVTI=y
|
||||
+CONFIG_INET_ESP=y
|
||||
+# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
+CONFIG_INET_UDP_DIAG=y
|
||||
+CONFIG_INET_DIAG_DESTROY=y
|
||||
+CONFIG_TCP_CONG_ADVANCED=y
|
||||
+# CONFIG_TCP_CONG_BIC is not set
|
||||
+# CONFIG_TCP_CONG_WESTWOOD is not set
|
||||
+# CONFIG_TCP_CONG_HTCP is not set
|
||||
+CONFIG_IPV6_ROUTER_PREF=y
|
||||
+CONFIG_IPV6_ROUTE_INFO=y
|
||||
+CONFIG_IPV6_OPTIMISTIC_DAD=y
|
||||
+CONFIG_INET6_ESP=y
|
||||
+CONFIG_INET6_IPCOMP=y
|
||||
+CONFIG_IPV6_MIP6=y
|
||||
+CONFIG_IPV6_VTI=y
|
||||
+CONFIG_IPV6_MULTIPLE_TABLES=y
|
||||
+CONFIG_NETFILTER=y
|
||||
+CONFIG_NF_CONNTRACK=y
|
||||
+CONFIG_NF_CONNTRACK_SECMARK=y
|
||||
+CONFIG_NF_CONNTRACK_EVENTS=y
|
||||
+CONFIG_NF_CONNTRACK_AMANDA=y
|
||||
+CONFIG_NF_CONNTRACK_FTP=y
|
||||
+CONFIG_NF_CONNTRACK_H323=y
|
||||
+CONFIG_NF_CONNTRACK_IRC=y
|
||||
+CONFIG_NF_CONNTRACK_NETBIOS_NS=y
|
||||
+CONFIG_NF_CONNTRACK_PPTP=y
|
||||
+CONFIG_NF_CONNTRACK_SANE=y
|
||||
+CONFIG_NF_CONNTRACK_TFTP=y
|
||||
+CONFIG_NF_CT_NETLINK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_CT=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_MARK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_NFLOG=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_TPROXY=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_TRACE=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_SECMARK=y
|
||||
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_BPF=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_COMMENT=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_HELPER=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_LENGTH=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_LIMIT=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_MAC=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_MARK=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_OWNER=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_POLICY=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_QUOTA=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_QUOTA2=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_SOCKET=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_STATE=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_STRING=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_TIME=y
|
||||
+CONFIG_NETFILTER_XT_MATCH_U32=y
|
||||
+CONFIG_IP_NF_IPTABLES=y
|
||||
+CONFIG_IP_NF_MATCH_ECN=y
|
||||
+CONFIG_IP_NF_MATCH_TTL=y
|
||||
+CONFIG_IP_NF_FILTER=y
|
||||
+CONFIG_IP_NF_TARGET_REJECT=y
|
||||
+CONFIG_IP_NF_NAT=y
|
||||
+CONFIG_IP_NF_TARGET_MASQUERADE=y
|
||||
+CONFIG_IP_NF_TARGET_NETMAP=y
|
||||
+CONFIG_IP_NF_TARGET_REDIRECT=y
|
||||
+CONFIG_IP_NF_MANGLE=y
|
||||
+CONFIG_IP_NF_RAW=y
|
||||
+CONFIG_IP_NF_SECURITY=y
|
||||
+CONFIG_IP_NF_ARPTABLES=y
|
||||
+CONFIG_IP_NF_ARPFILTER=y
|
||||
+CONFIG_IP_NF_ARP_MANGLE=y
|
||||
+CONFIG_IP6_NF_IPTABLES=y
|
||||
+CONFIG_IP6_NF_MATCH_RPFILTER=y
|
||||
+CONFIG_IP6_NF_FILTER=y
|
||||
+CONFIG_IP6_NF_TARGET_REJECT=y
|
||||
+CONFIG_IP6_NF_MANGLE=y
|
||||
+CONFIG_IP6_NF_RAW=y
|
||||
+CONFIG_L2TP=y
|
||||
+CONFIG_NET_SCHED=y
|
||||
+CONFIG_NET_SCH_HTB=y
|
||||
+CONFIG_NET_SCH_NETEM=y
|
||||
+CONFIG_NET_SCH_INGRESS=y
|
||||
+CONFIG_NET_CLS_U32=y
|
||||
+CONFIG_NET_CLS_BPF=y
|
||||
+CONFIG_NET_EMATCH=y
|
||||
+CONFIG_NET_EMATCH_U32=y
|
||||
+CONFIG_NET_CLS_ACT=y
|
||||
+CONFIG_VSOCKETS=y
|
||||
+CONFIG_VIRTIO_VSOCKETS=y
|
||||
+CONFIG_CFG80211=y
|
||||
+# CONFIG_CFG80211_DEFAULT_PS is not set
|
||||
+# CONFIG_CFG80211_CRDA_SUPPORT is not set
|
||||
+CONFIG_MAC80211=y
|
||||
+# CONFIG_MAC80211_RC_MINSTREL is not set
|
||||
+CONFIG_RFKILL=y
|
||||
+CONFIG_PCI=y
|
||||
+CONFIG_PCI_HOST_GENERIC=y
|
||||
+# CONFIG_UEVENT_HELPER is not set
|
||||
+CONFIG_DEVTMPFS=y
|
||||
+# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||
+CONFIG_DEBUG_DEVRES=y
|
||||
+CONFIG_OF_UNITTEST=y
|
||||
+CONFIG_ZRAM=y
|
||||
+CONFIG_BLK_DEV_LOOP=y
|
||||
+CONFIG_BLK_DEV_RAM=y
|
||||
+CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
+CONFIG_VIRTIO_BLK=y
|
||||
+CONFIG_UID_SYS_STATS=y
|
||||
+CONFIG_SCSI=y
|
||||
+# CONFIG_SCSI_PROC_FS is not set
|
||||
+CONFIG_BLK_DEV_SD=y
|
||||
+CONFIG_SCSI_VIRTIO=y
|
||||
+CONFIG_MD=y
|
||||
+CONFIG_BLK_DEV_DM=y
|
||||
+CONFIG_DM_CRYPT=y
|
||||
+CONFIG_DM_UEVENT=y
|
||||
+CONFIG_DM_VERITY=y
|
||||
+CONFIG_DM_VERITY_AVB=y
|
||||
+CONFIG_DM_VERITY_FEC=y
|
||||
+CONFIG_DM_BOW=y
|
||||
+CONFIG_NETDEVICES=y
|
||||
+CONFIG_NETCONSOLE=y
|
||||
+CONFIG_NETCONSOLE_DYNAMIC=y
|
||||
+CONFIG_TUN=y
|
||||
+CONFIG_VIRTIO_NET=y
|
||||
+# CONFIG_ETHERNET is not set
|
||||
+CONFIG_PHYLIB=y
|
||||
+CONFIG_PPP=y
|
||||
+CONFIG_PPP_BSDCOMP=y
|
||||
+CONFIG_PPP_DEFLATE=y
|
||||
+CONFIG_PPP_MPPE=y
|
||||
+CONFIG_PPTP=y
|
||||
+CONFIG_PPPOL2TP=y
|
||||
+CONFIG_USB_RTL8152=y
|
||||
+CONFIG_USB_USBNET=y
|
||||
+# CONFIG_USB_NET_AX8817X is not set
|
||||
+# CONFIG_USB_NET_AX88179_178A is not set
|
||||
+# CONFIG_USB_NET_CDCETHER is not set
|
||||
+# CONFIG_USB_NET_CDC_NCM is not set
|
||||
+# CONFIG_USB_NET_NET1080 is not set
|
||||
+# CONFIG_USB_NET_CDC_SUBSET is not set
|
||||
+# CONFIG_USB_NET_ZAURUS is not set
|
||||
+# CONFIG_WLAN_VENDOR_ADMTEK is not set
|
||||
+# CONFIG_WLAN_VENDOR_ATH is not set
|
||||
+# CONFIG_WLAN_VENDOR_ATMEL is not set
|
||||
+# CONFIG_WLAN_VENDOR_BROADCOM is not set
|
||||
+# CONFIG_WLAN_VENDOR_CISCO is not set
|
||||
+# CONFIG_WLAN_VENDOR_INTEL is not set
|
||||
+# CONFIG_WLAN_VENDOR_INTERSIL is not set
|
||||
+# CONFIG_WLAN_VENDOR_MARVELL is not set
|
||||
+# CONFIG_WLAN_VENDOR_MEDIATEK is not set
|
||||
+# CONFIG_WLAN_VENDOR_RALINK is not set
|
||||
+# CONFIG_WLAN_VENDOR_REALTEK is not set
|
||||
+# CONFIG_WLAN_VENDOR_RSI is not set
|
||||
+# CONFIG_WLAN_VENDOR_ST is not set
|
||||
+# CONFIG_WLAN_VENDOR_TI is not set
|
||||
+# CONFIG_WLAN_VENDOR_ZYDAS is not set
|
||||
+# CONFIG_WLAN_VENDOR_QUANTENNA is not set
|
||||
+CONFIG_VIRT_WIFI=y
|
||||
+CONFIG_INPUT_EVDEV=y
|
||||
+# CONFIG_INPUT_KEYBOARD is not set
|
||||
+# CONFIG_INPUT_MOUSE is not set
|
||||
+CONFIG_INPUT_JOYSTICK=y
|
||||
+CONFIG_JOYSTICK_XPAD=y
|
||||
+CONFIG_JOYSTICK_XPAD_FF=y
|
||||
+CONFIG_JOYSTICK_XPAD_LEDS=y
|
||||
+CONFIG_INPUT_TABLET=y
|
||||
+CONFIG_TABLET_USB_ACECAD=y
|
||||
+CONFIG_TABLET_USB_AIPTEK=y
|
||||
+CONFIG_TABLET_USB_GTCO=y
|
||||
+CONFIG_TABLET_USB_HANWANG=y
|
||||
+CONFIG_TABLET_USB_KBTAB=y
|
||||
+CONFIG_INPUT_MISC=y
|
||||
+CONFIG_INPUT_UINPUT=y
|
||||
+# CONFIG_VT is not set
|
||||
+# CONFIG_LEGACY_PTYS is not set
|
||||
+# CONFIG_DEVMEM is not set
|
||||
+CONFIG_SERIAL_8250=y
|
||||
+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
|
||||
+CONFIG_SERIAL_8250_CONSOLE=y
|
||||
+# CONFIG_SERIAL_8250_EXAR is not set
|
||||
+CONFIG_SERIAL_8250_NR_UARTS=48
|
||||
+CONFIG_SERIAL_8250_EXTENDED=y
|
||||
+CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
+CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
+CONFIG_SERIAL_OF_PLATFORM=y
|
||||
+CONFIG_SERIAL_AMBA_PL011=y
|
||||
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
+CONFIG_VIRTIO_CONSOLE=y
|
||||
+CONFIG_HW_RANDOM=y
|
||||
+CONFIG_HW_RANDOM_VIRTIO=y
|
||||
+# CONFIG_HW_RANDOM_CAVIUM is not set
|
||||
+# CONFIG_DEVPORT is not set
|
||||
+# CONFIG_I2C_COMPAT is not set
|
||||
+# CONFIG_I2C_HELPER_AUTO is not set
|
||||
+# CONFIG_HWMON is not set
|
||||
+CONFIG_THERMAL=y
|
||||
+CONFIG_CPU_THERMAL=y
|
||||
+CONFIG_MEDIA_SUPPORT=y
|
||||
+# CONFIG_VGA_ARB is not set
|
||||
+CONFIG_DRM=y
|
||||
+# CONFIG_DRM_FBDEV_EMULATION is not set
|
||||
+CONFIG_DRM_VIRTIO_GPU=y
|
||||
+CONFIG_SOUND=y
|
||||
+CONFIG_SND=y
|
||||
+CONFIG_SND_HRTIMER=y
|
||||
+# CONFIG_SND_SUPPORT_OLD_API is not set
|
||||
+# CONFIG_SND_VERBOSE_PROCFS is not set
|
||||
+# CONFIG_SND_DRIVERS is not set
|
||||
+CONFIG_SND_INTEL8X0=y
|
||||
+# CONFIG_SND_USB is not set
|
||||
+CONFIG_HIDRAW=y
|
||||
+CONFIG_UHID=y
|
||||
+CONFIG_HID_A4TECH=y
|
||||
+CONFIG_HID_ACRUX=y
|
||||
+CONFIG_HID_ACRUX_FF=y
|
||||
+CONFIG_HID_APPLE=y
|
||||
+CONFIG_HID_BELKIN=y
|
||||
+CONFIG_HID_CHERRY=y
|
||||
+CONFIG_HID_CHICONY=y
|
||||
+CONFIG_HID_PRODIKEYS=y
|
||||
+CONFIG_HID_CYPRESS=y
|
||||
+CONFIG_HID_DRAGONRISE=y
|
||||
+CONFIG_DRAGONRISE_FF=y
|
||||
+CONFIG_HID_EMS_FF=y
|
||||
+CONFIG_HID_ELECOM=y
|
||||
+CONFIG_HID_EZKEY=y
|
||||
+CONFIG_HID_HOLTEK=y
|
||||
+CONFIG_HID_KEYTOUCH=y
|
||||
+CONFIG_HID_KYE=y
|
||||
+CONFIG_HID_UCLOGIC=y
|
||||
+CONFIG_HID_WALTOP=y
|
||||
+CONFIG_HID_GYRATION=y
|
||||
+CONFIG_HID_TWINHAN=y
|
||||
+CONFIG_HID_KENSINGTON=y
|
||||
+CONFIG_HID_LCPOWER=y
|
||||
+CONFIG_HID_LOGITECH=y
|
||||
+CONFIG_HID_LOGITECH_DJ=y
|
||||
+CONFIG_LOGITECH_FF=y
|
||||
+CONFIG_LOGIRUMBLEPAD2_FF=y
|
||||
+CONFIG_LOGIG940_FF=y
|
||||
+CONFIG_HID_MAGICMOUSE=y
|
||||
+CONFIG_HID_MICROSOFT=y
|
||||
+CONFIG_HID_MONTEREY=y
|
||||
+CONFIG_HID_MULTITOUCH=y
|
||||
+CONFIG_HID_NTRIG=y
|
||||
+CONFIG_HID_ORTEK=y
|
||||
+CONFIG_HID_PANTHERLORD=y
|
||||
+CONFIG_PANTHERLORD_FF=y
|
||||
+CONFIG_HID_PETALYNX=y
|
||||
+CONFIG_HID_PICOLCD=y
|
||||
+CONFIG_HID_PRIMAX=y
|
||||
+CONFIG_HID_ROCCAT=y
|
||||
+CONFIG_HID_SAITEK=y
|
||||
+CONFIG_HID_SAMSUNG=y
|
||||
+CONFIG_HID_SONY=y
|
||||
+CONFIG_HID_SPEEDLINK=y
|
||||
+CONFIG_HID_SUNPLUS=y
|
||||
+CONFIG_HID_GREENASIA=y
|
||||
+CONFIG_GREENASIA_FF=y
|
||||
+CONFIG_HID_SMARTJOYPLUS=y
|
||||
+CONFIG_SMARTJOYPLUS_FF=y
|
||||
+CONFIG_HID_TIVO=y
|
||||
+CONFIG_HID_TOPSEED=y
|
||||
+CONFIG_HID_THRUSTMASTER=y
|
||||
+CONFIG_HID_WACOM=y
|
||||
+CONFIG_HID_WIIMOTE=y
|
||||
+CONFIG_HID_ZEROPLUS=y
|
||||
+CONFIG_HID_ZYDACRON=y
|
||||
+CONFIG_USB_HIDDEV=y
|
||||
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
|
||||
+CONFIG_USB_EHCI_HCD=y
|
||||
+CONFIG_USB_GADGET=y
|
||||
+CONFIG_USB_CONFIGFS=y
|
||||
+CONFIG_USB_CONFIGFS_UEVENT=y
|
||||
+CONFIG_USB_CONFIGFS_F_FS=y
|
||||
+CONFIG_USB_CONFIGFS_F_ACC=y
|
||||
+CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
|
||||
+CONFIG_USB_CONFIGFS_F_MIDI=y
|
||||
+CONFIG_MMC=y
|
||||
+# CONFIG_PWRSEQ_EMMC is not set
|
||||
+# CONFIG_PWRSEQ_SIMPLE is not set
|
||||
+# CONFIG_MMC_BLOCK is not set
|
||||
+CONFIG_RTC_CLASS=y
|
||||
+# CONFIG_RTC_SYSTOHC is not set
|
||||
+CONFIG_RTC_DRV_PL030=y
|
||||
+CONFIG_RTC_DRV_PL031=y
|
||||
+CONFIG_VIRTIO_PCI=y
|
||||
+# CONFIG_VIRTIO_PCI_LEGACY is not set
|
||||
+CONFIG_VIRTIO_BALLOON=y
|
||||
+CONFIG_VIRTIO_INPUT=y
|
||||
+CONFIG_VIRTIO_MMIO=y
|
||||
+CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
|
||||
+CONFIG_STAGING=y
|
||||
+CONFIG_ASHMEM=y
|
||||
+CONFIG_ANDROID_VSOC=y
|
||||
+CONFIG_ION=y
|
||||
+CONFIG_COMMON_CLK_SCPI=y
|
||||
+CONFIG_MAILBOX=y
|
||||
+# CONFIG_IOMMU_SUPPORT is not set
|
||||
+CONFIG_ANDROID=y
|
||||
+CONFIG_ANDROID_BINDER_IPC=y
|
||||
+CONFIG_EXT4_FS=y
|
||||
+CONFIG_EXT4_FS_SECURITY=y
|
||||
+CONFIG_F2FS_FS=y
|
||||
+CONFIG_F2FS_FS_SECURITY=y
|
||||
+CONFIG_FS_ENCRYPTION=y
|
||||
+# CONFIG_DNOTIFY is not set
|
||||
+CONFIG_QUOTA=y
|
||||
+CONFIG_QFMT_V2=y
|
||||
+CONFIG_FUSE_FS=y
|
||||
+CONFIG_OVERLAY_FS=y
|
||||
+CONFIG_MSDOS_FS=y
|
||||
+CONFIG_VFAT_FS=y
|
||||
+CONFIG_TMPFS=y
|
||||
+CONFIG_TMPFS_POSIX_ACL=y
|
||||
+CONFIG_PSTORE=y
|
||||
+CONFIG_PSTORE_CONSOLE=y
|
||||
+CONFIG_PSTORE_RAM=y
|
||||
+CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
|
||||
+CONFIG_SECURITY=y
|
||||
+CONFIG_SECURITY_NETWORK=y
|
||||
+CONFIG_LSM_MMAP_MIN_ADDR=65536
|
||||
+CONFIG_HARDENED_USERCOPY=y
|
||||
+CONFIG_SECURITY_SELINUX=y
|
||||
+CONFIG_CRYPTO_ADIANTUM=y
|
||||
+CONFIG_CRYPTO_SHA512=y
|
||||
+CONFIG_CRYPTO_LZ4=y
|
||||
+CONFIG_CRYPTO_ZSTD=y
|
||||
+CONFIG_CRYPTO_ANSI_CPRNG=y
|
||||
+CONFIG_CRYPTO_DEV_VIRTIO=y
|
||||
+CONFIG_XZ_DEC=y
|
||||
+CONFIG_PRINTK_TIME=y
|
||||
+CONFIG_DEBUG_INFO=y
|
||||
+# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
+CONFIG_FRAME_WARN=1024
|
||||
+# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||
+CONFIG_MAGIC_SYSRQ=y
|
||||
+CONFIG_DEBUG_STACK_USAGE=y
|
||||
+CONFIG_DEBUG_MEMORY_INIT=y
|
||||
+CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||
+# CONFIG_DETECT_HUNG_TASK is not set
|
||||
+CONFIG_PANIC_TIMEOUT=5
|
||||
+CONFIG_SCHEDSTATS=y
|
||||
+CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
||||
+CONFIG_ENABLE_DEFAULT_TRACERS=y
|
||||
+# CONFIG_RUNTIME_TESTING_MENU is not set
|
|
@ -1,127 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Thu, 20 Jun 2019 14:30:05 -0700
|
||||
Subject: ANDROID: gki_defconfig: more configs for partners
|
||||
|
||||
Bug: 135666008
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
Change-Id: I5e13f602bcacb416cace48f92f40689ebd3bb12e
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 21 ++++++++++++++++++++-
|
||||
1 file changed, 20 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index 7eeafbecf1b9..3afe7f8d8310 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -10,6 +10,7 @@ CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_MEMCG=y
|
||||
CONFIG_MEMCG_SWAP=y
|
||||
+CONFIG_BLK_CGROUP=y
|
||||
CONFIG_RT_GROUP_SCHED=y
|
||||
CONFIG_CGROUP_FREEZER=y
|
||||
CONFIG_CPUSETS=y
|
||||
@@ -61,12 +62,15 @@ CONFIG_ARM_SCMI_PROTOCOL=y
|
||||
# CONFIG_ARM_SCMI_POWER_DOMAIN is not set
|
||||
CONFIG_ARM_SCPI_PROTOCOL=y
|
||||
# CONFIG_ARM_SCPI_POWER_DOMAIN is not set
|
||||
+CONFIG_ARM64_CRYPTO=y
|
||||
+CONFIG_CRYPTO_AES_ARM64=y
|
||||
CONFIG_KPROBES=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
# CONFIG_SPARSEMEM_VMEMMAP is not set
|
||||
+CONFIG_MEMORY_HOTPLUG=y
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_CMA=y
|
||||
CONFIG_CMA_AREAS=16
|
||||
@@ -82,6 +86,7 @@ CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_ADVANCED_ROUTER=y
|
||||
CONFIG_IP_MULTIPLE_TABLES=y
|
||||
+CONFIG_IP_PNP=y
|
||||
CONFIG_NET_IPGRE_DEMUX=y
|
||||
CONFIG_NET_IPVTI=y
|
||||
CONFIG_INET_ESP=y
|
||||
@@ -165,6 +170,7 @@ CONFIG_IP6_NF_TARGET_REJECT=y
|
||||
CONFIG_IP6_NF_MANGLE=y
|
||||
CONFIG_IP6_NF_RAW=y
|
||||
CONFIG_L2TP=y
|
||||
+CONFIG_BRIDGE=y
|
||||
CONFIG_NET_SCHED=y
|
||||
CONFIG_NET_SCH_HTB=y
|
||||
CONFIG_NET_SCH_INGRESS=y
|
||||
@@ -175,6 +181,7 @@ CONFIG_NET_EMATCH_U32=y
|
||||
CONFIG_NET_CLS_ACT=y
|
||||
CONFIG_VSOCKETS=y
|
||||
CONFIG_VIRTIO_VSOCKETS=y
|
||||
+CONFIG_BT=y
|
||||
CONFIG_CFG80211=y
|
||||
# CONFIG_CFG80211_DEFAULT_PS is not set
|
||||
# CONFIG_CFG80211_CRDA_SUPPORT is not set
|
||||
@@ -242,7 +249,6 @@ CONFIG_USB_USBNET=y
|
||||
# CONFIG_WLAN_VENDOR_QUANTENNA is not set
|
||||
CONFIG_VIRT_WIFI=y
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
-# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
CONFIG_INPUT_JOYSTICK=y
|
||||
CONFIG_INPUT_MISC=y
|
||||
@@ -276,9 +282,11 @@ CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_GOV_USER_SPACE=y
|
||||
CONFIG_CPU_THERMAL=y
|
||||
CONFIG_DEVFREQ_THERMAL=y
|
||||
+CONFIG_MFD_SYSCON=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_MEDIA_CAMERA_SUPPORT=y
|
||||
+CONFIG_MEDIA_CONTROLLER=y
|
||||
# CONFIG_VGA_ARB is not set
|
||||
CONFIG_DRM=y
|
||||
# CONFIG_DRM_FBDEV_EMULATION is not set
|
||||
@@ -334,8 +342,14 @@ CONFIG_ASHMEM=y
|
||||
CONFIG_ANDROID_VSOC=y
|
||||
CONFIG_ION=y
|
||||
CONFIG_COMMON_CLK_SCPI=y
|
||||
+CONFIG_HWSPINLOCK=y
|
||||
CONFIG_MAILBOX=y
|
||||
CONFIG_ARM_SMMU=y
|
||||
+CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
+CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
+CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
+CONFIG_DEVFREQ_GOV_PASSIVE=y
|
||||
+CONFIG_EXTCON=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_ANDROID=y
|
||||
@@ -355,6 +369,7 @@ CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
+CONFIG_ECRYPT_FS=y
|
||||
CONFIG_PSTORE=y
|
||||
CONFIG_PSTORE_CONSOLE=y
|
||||
CONFIG_PSTORE_RAM=y
|
||||
@@ -364,11 +379,13 @@ CONFIG_SECURITY_NETWORK=y
|
||||
CONFIG_HARDENED_USERCOPY=y
|
||||
CONFIG_SECURITY_SELINUX=y
|
||||
CONFIG_CRYPTO_ADIANTUM=y
|
||||
+CONFIG_CRYPTO_MD4=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
CONFIG_CRYPTO_LZ4=y
|
||||
CONFIG_CRYPTO_ZSTD=y
|
||||
CONFIG_CRYPTO_ANSI_CPRNG=y
|
||||
CONFIG_CRYPTO_DEV_VIRTIO=y
|
||||
+CONFIG_CRC_CCITT=y
|
||||
CONFIG_CRC8=y
|
||||
CONFIG_XZ_DEC=y
|
||||
CONFIG_DMA_CMA=y
|
||||
@@ -384,3 +401,5 @@ CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||
CONFIG_PANIC_TIMEOUT=5
|
||||
CONFIG_SCHEDSTATS=y
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
+CONFIG_CORESIGHT=y
|
||||
+CONFIG_CORESIGHT_STM=y
|
|
@ -1,65 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tri Vo <trong@google.com>
|
||||
Date: Sun, 19 May 2019 14:37:03 -0700
|
||||
Subject: ANDROID: gki_defconfig: more generic configs for DLKMs
|
||||
|
||||
Test: boot arm64 cuttlefish
|
||||
Signed-off-by: Tri Vo <trong@google.com>
|
||||
Change-Id: I9f6380927f348d0a5e20d1acff2bef4331c3f591
|
||||
---
|
||||
arch/arm64/configs/gki_defconfig | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
|
||||
index b7ae05eb896e..04f531ef2511 100644
|
||||
--- a/arch/arm64/configs/gki_defconfig
|
||||
+++ b/arch/arm64/configs/gki_defconfig
|
||||
@@ -192,6 +192,8 @@ CONFIG_UID_SYS_STATS=y
|
||||
CONFIG_SCSI=y
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
+CONFIG_SCSI_UFSHCD=y
|
||||
+CONFIG_SCSI_UFSHCD_PLATFORM=y
|
||||
CONFIG_SCSI_VIRTIO=y
|
||||
CONFIG_MD=y
|
||||
CONFIG_BLK_DEV_DM=y
|
||||
@@ -266,6 +268,7 @@ CONFIG_HW_RANDOM_VIRTIO=y
|
||||
# CONFIG_I2C_COMPAT is not set
|
||||
# CONFIG_I2C_HELPER_AUTO is not set
|
||||
CONFIG_SPMI=y
|
||||
+CONFIG_PINCTRL=y
|
||||
CONFIG_GPIOLIB=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_THERMAL=y
|
||||
@@ -290,6 +293,8 @@ CONFIG_SND_DYNAMIC_MINORS=y
|
||||
# CONFIG_SND_VERBOSE_PROCFS is not set
|
||||
# CONFIG_SND_DRIVERS is not set
|
||||
CONFIG_SND_INTEL8X0=y
|
||||
+CONFIG_SND_USB_AUDIO=y
|
||||
+CONFIG_SND_SOC=y
|
||||
CONFIG_HIDRAW=y
|
||||
CONFIG_UHID=y
|
||||
CONFIG_HID_APPLE=y
|
||||
@@ -310,6 +315,8 @@ CONFIG_MMC=y
|
||||
# CONFIG_PWRSEQ_EMMC is not set
|
||||
# CONFIG_PWRSEQ_SIMPLE is not set
|
||||
# CONFIG_MMC_BLOCK is not set
|
||||
+CONFIG_MMC_SDHCI=y
|
||||
+CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
@@ -329,11 +336,12 @@ CONFIG_ANDROID_VSOC=y
|
||||
CONFIG_ION=y
|
||||
CONFIG_COMMON_CLK_SCPI=y
|
||||
CONFIG_MAILBOX=y
|
||||
-CONFIG_PM_DEVFREQ=y
|
||||
+CONFIG_ARM_SMMU=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_ANDROID=y
|
||||
CONFIG_ANDROID_BINDER_IPC=y
|
||||
+CONFIG_INTERCONNECT=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
CONFIG_F2FS_FS=y
|
|
@ -1,27 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ram Muthiah <rammuthiah@google.com>
|
||||
Date: Thu, 17 Oct 2019 18:28:10 -0700
|
||||
Subject: ANDROID: gki_defconfig: remove PWRSEQ_EMMC and PWRSEQ_SIMPLE
|
||||
|
||||
These modules are not required for GKI.
|
||||
|
||||
Bug: 139431025
|
||||
Signed-off-by: Ram Muthiah <rammuthiah@google.com>
|
||||
Change-Id: I9a82010eb326b0a336725037e0356a63a0c9f053
|
||||
---
|
||||
arch/x86/configs/gki_defconfig | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
|
||||
index 18c3429c7ede..949c449b9d1f 100644
|
||||
--- a/arch/x86/configs/gki_defconfig
|
||||
+++ b/arch/x86/configs/gki_defconfig
|
||||
@@ -289,6 +289,8 @@ CONFIG_USB_CONFIGFS_F_ACC=y
|
||||
CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
|
||||
CONFIG_USB_CONFIGFS_F_MIDI=y
|
||||
CONFIG_MMC=m
|
||||
+# CONFIG_PWRSEQ_EMMC is not set
|
||||
+# CONFIG_PWRSEQ_SIMPLE is not set
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_TRIGGERS=y
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue