Commit Graph

783777 Commits

Author SHA1 Message Date
Cody Schuffelen
59c8f5da34 ANDROID: cuttlefish_defconfig: Enable vsock options
Bug: 121166534
Test: Ran cuttlefish with common kernel + vsock adb tunnel
Signed-off-by: Cody Schuffelen <schuffelen@google.com>
Change-Id: I8168a710052c7daada306a915c56230c961accd4
2019-05-03 10:44:47 -07:00
Maciej Żenczykowski
9f4318ee37 ANDROID: cuttlefish: enable CONFIG_NET_CLS_BPF=y
This is to mirror
  https://android-review.googlesource.com/c/kernel/configs/+/870517
  android-4.9+: add CONFIG_NET_CLS_BPF to base

Generated via:
  echo 'CONFIG_NET_CLS_BPF=y' >> arch/x86/configs/x86_64_cuttlefish_defconfig
  echo 'CONFIG_NET_CLS_BPF=y' >> arch/arm64/configs/cuttlefish_defconfig
  make ARCH=x86_64 x86_64_cuttlefish_defconfig
  make ARCH=x86_64 savedefconfig
  cat defconfig > arch/x86/configs/x86_64_cuttlefish_defconfig
  make ARCH=arm64 cuttlefish_defconfig
  make ARCH=arm64 savedefconfig
  cat defconfig > arch/arm64/configs/cuttlefish_defconfig

Bug: 65674744
Change-Id: I8e4dfe7a99d38fd5942001a1aab83b7ac9df30dd
Signed-off-by: Maciej Żenczykowski <maze@google.com>
2019-05-03 10:42:49 -07:00
Alistair Strachan
0d6b9aaa28 ANDROID: cuttlefish_defconfig: Enable VIRTIO_INPUT
Bug: 120439617
Change-Id: I83fdb2088f17e71f377e5864d217655b47839267
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:42:48 -07:00
Alistair Strachan
e7a97880b2 ANDROID: cuttlefish_defconfig: Enable VIRT_WIFI
Bug: 120439617
Bug: 120682817
Change-Id: Ia1b66528bd9cb1e6e95bd75ac60f393978caa582
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:42:48 -07:00
Alistair Strachan
c049e6435b ANDROID: cuttlefish_defconfig: Enable CONFIG_ARM64_LSE_ATOMICS
Enabling this was previously blocked by a lack of support for this
feature in clang, but that problem has been resolved in a newer version
of the compiler.

Bug: 120439617
Change-Id: I0f5fd2439c5a71ee0988648970576b46b2c4d20b
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:42:48 -07:00
Alistair Strachan
bcd1bb76bc ANDROID: Move from clang r328903 to r346389b.
Bug: 120439617
Bug: 120503084
Change-Id: I21bb183cac03753d1ba719a69305e2199c3f3227
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:42:47 -07:00
Alistair Strachan
769359d188 ANDROID: cuttlefish_defconfig: Enable CONFIG_CRYPTO_ADIANTUM
Bug: 118439987
Bug: 120439617
Change-Id: I0a192256b4bbf101221a3bb31c4f288581bbddc5
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:42:47 -07:00
Martijn Coenen
e00eb41c0c 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>
2019-05-03 10:42:47 -07:00
Lorenzo Colitti
20599bae2f ANDROID: net: ipv6: autoconf routes into per-device tables
Currently, IPv6 router discovery always puts routes into
RT6_TABLE_MAIN. This causes problems for connection managers
that want to support multiple simultaneous network connections
and want control over which one is used by default (e.g., wifi
and wired).

To work around this connection managers typically take the routes
they prefer and copy them to static routes with low metrics in
the main table. This puts the burden on the connection manager
to watch netlink to see if the routes have changed, delete the
routes when their lifetime expires, etc.

Instead, this patch adds a per-interface sysctl to have the
kernel put autoconf routes into different tables. This allows
each interface to have its own autoconf table, and choosing the
default interface (or using different interfaces at the same
time for different types of traffic) can be done using
appropriate ip rules.

The sysctl behaves as follows:

- = 0: default. Put routes into RT6_TABLE_MAIN as before.
- > 0: manual. Put routes into the specified table.
- < 0: automatic. Add the absolute value of the sysctl to the
       device's ifindex, and use that table.

The automatic mode is most useful in conjunction with
net.ipv6.conf.default.accept_ra_rt_table. A connection manager
or distribution could set it to, say, -100 on boot, and
thereafter just use IP rules.

Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
[AmitP: Refactored original changes to align with
        the changes introduced by upstream commits
        830218c1ad ("net: ipv6: Fix processing of RAs in presence of VRF"),
        8d1c802b28 ("net/ipv6: Flip FIB entries to fib6_info").

        Also folded following android-4.9 commit changes into this patch
        be65fb01da ("ANDROID: net: ipv6: remove unused variable ifindex in")]
Bug: 120445791
Change-Id: I82d16e3737d9cdfa6489e649e247894d0d60cbb1
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
2019-05-03 10:42:46 -07:00
Alistair Strachan
a773a88f2f ANDROID: cuttlefish_defconfig: Enable SECURITY_PERF_EVENTS_RESTRICT
Bug: 118439987
Bug: 120439617
Change-Id: Ic7dd653292a565a2d4323d68692318e8d881aaeb
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:42:46 -07:00
Jeff Vander Stoep
5dbd8df7b3 ANDROID: security,perf: Allow further restriction of perf_event_open
When kernel.perf_event_open is set to 3 (or greater), disallow all
access to performance events by users without CAP_SYS_ADMIN.
Add a Kconfig symbol CONFIG_SECURITY_PERF_EVENTS_RESTRICT that
makes this value the default.

This is based on a similar feature in grsecurity
(CONFIG_GRKERNSEC_PERF_HARDEN).  This version doesn't include making
the variable read-only.  It also allows enabling further restriction
at run-time regardless of whether the default is changed.

https://lkml.org/lkml/2016/1/11/587

Bug: 29054680
Bug: 120445712
Change-Id: Iff5bff4fc1042e85866df9faa01bce8d04335ab8
[jeffv: Upstream doesn't want it https://lkml.org/lkml/2016/6/17/101]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
2019-05-03 10:42:45 -07:00
JP Abgrall
f0c2df2b12 ANDROID: netfilter: xt_IDLETIMER: Add new netlink msg type
Send notifications when the label becomes active after an idle period.
Send netlink message notifications in addition to sysfs notifications.
Using a uevent with
  subsystem=xt_idletimer
  INTERFACE=...
  STATE={active,inactive}

This is backport from common android-3.0
commit: beb914e987
with uevent support instead of a new netlink message type.

Bug: 120445672
Change-Id: I31677ef00c94b5f82c8457e5bf9e5e584c23c523
Signed-off-by: Ashish Sharma <ashishsharma@google.com>
Signed-off-by: JP Abgrall <jpa@google.com>
[astrachan: Folded the following changes into this patch:
            ee0b238fada5 ("netfilter: xt_IDLETIMER: time-stamp and suspend/resume handling.")
            728c058a495e ("netfilter: xt_IDLETIMER: Adds the uid field in the msg")
            5ebea489d44c ("netfilter: xt_IDLETIMER: Fix use after free condition during work")
            5ab69d7ba2c5 ("netfilter: xt_IDLETIMER: Use fullsock when querying uid")]
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:42:45 -07:00
Alistair Strachan
cd1677614b ANDROID: cuttlefish_defconfig: Enable CONFIG_NETFILTER_XT_MATCH_QUOTA2
Bug: 118439987
Bug: 120439617
Change-Id: I88fad3590ef2f37daedfd4fe005bd196649f2384
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:42:45 -07:00
JP Abgrall
10cda83af9 ANDROID: netfilter: xt_quota2: adding the original quota2 from xtables-addons
The original xt_quota in the kernel is plain broken:
  - counts quota at a per CPU level
    (was written back when ubiquitous SMP was just a dream)
  - provides no way to count across IPV4/IPV6.

This patch is the original unaltered code from:
  http://sourceforge.net/projects/xtables-addons

  at commit e84391ce665cef046967f796dd91026851d6bbf3

Bug: 120445421
Change-Id: I19d49858840effee9ecf6cff03c23b45a97efdeb
Signed-off-by: JP Abgrall <jpa@google.com>
[astrachan: Folded 4d33aa305871 ("netfilter: xt_quota2: fixup the quota2,
            and enable.") into this patch]
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:42:44 -07:00
Ruchi Kandoi
bc17c02a85 ANDROID: power: wakeup_reason: add an API to log wakeup reasons
Add API log_wakeup_reason() and expose it to userspace via sysfs path
/sys/kernel/wakeup_reasons/last_resume_reason

Bug: 120445600
Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
[AmitP: Folded following android-4.9 commit changes into this patch
        1135122a19 ("ANDROID: POWER: fix compile warnings in log_wakeup_reason")
        b4e6247778 ("ANDROID: Power: Changes the permission to read only for sysfs file /sys/kernel/wakeup_reasons/last_resume_reason")
        e13dbc7c69 ("ANDROID: power: wakeup_reason: rename irq_count to irqcount")]
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
[astrachan: Folded the following changes into this patch:
            39d7c7fe91c0 ("ANDROID: power: wakeup_reason: Add guard condition for maximum wakeup reasons")
            0730434bdf49 ("ANDROID: power: wakeup_reason: Avoids bogus error messages for the suspend aborts.")
            4e42dceae54e ("ANDROID: power: wakeup_reason: Adds functionality to log the last suspend abort reason.")
            f21313b70ac7 ("ANDROID: power: wakeup_reason: Report suspend times from last_suspend_time")
            f97ec34442ac ("ANDROID: power: wakeup_reason: fix suspend time reporting")
            cd92df73e504 ("ANDROID: power: wakeup: Add last wake up source logging for suspend abort reason.")
            546b6ae3c087 ("ANDROID: power: wakeup: Add the guard condition for len in pm_get_active_wakeup_sources")
            1453d9ffcdbe ("ANDROID: power: wakeup_reason: make logging work in an interrupt context.")]
Change-Id: I81addaf420f1338255c5d0638b0d244a99d777d1
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:42:37 -07:00
Rik van Riel
92501cb670 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>
2019-05-03 10:40:06 -07:00
Thierry Strudel
e6120dd58d 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>
2019-05-03 10:40:06 -07:00
Mohan Srinivasan
f2fe7bac26 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
        a5c4dbb05a ("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>
2019-05-03 10:40:05 -07:00
Alistair Strachan
27579ec9a7 ANDROID: cuttlefish_defconfig: Enable CONFIG_DM_VERITY_AVB
Bug: 118439987
Bug: 120439617
Change-Id: If92a3c2f23f211ab9b73ea2b41ee339727ad1018
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:40:05 -07:00
David Zeuthen
6115619831 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>
2019-05-03 10:40:05 -07:00
Alistair Strachan
6ea18d95da ANDROID: cuttlefish_defconfig: Enable CONFIG_CPUSETS
Bug: 118439987
Bug: 120439617
Change-Id: I2e730890db891b7c258ce21004b382556af434f5
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:40:04 -07:00
Jin Qian
ad4b32c45d ANDROID: taskstats: track fsync syscalls
This adds a counter to the taskstats extended accounting fields, which
tracks the number of times fsync is called, and then plumbs it through
to the uid_sys_stats driver.

Bug: 120442023
Change-Id: I6c138de5b2332eea70f57e098134d1d141247b3f
Signed-off-by: Jin Qian <jinqian@google.com>
[AmitP: Refactored changes to align with changes from upstream commit
        9a07000400 ("sched/headers: Move CONFIG_TASK_XACCT bits from <linux/sched.h> to <linux/sched/xacct.h>")]
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
[tkjos: Needed for storaged fsync accounting ("storaged --uid" and
        "storaged --task").]
[astrachan: This is modifying a userspace interface and should probably
            be reworked]
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:40:04 -07:00
Jin Qian
ecc74079f6 ANDROID: uid_cputime: add per-uid IO usage accounting
IO usages are accounted in foreground and background buckets.
For each uid, io usage is calculated in two steps.

delta = current total of all uid tasks - previus total
current bucket += delta

Bucket is determined by current uid stat. Userspace writes to
/proc/uid_procstat/set <uid> <stat> when uid stat is updated.

/proc/uid_io/stats shows IO usage in this format.
<uid> <foreground IO> <background IO>

Bug: 34198239
Bug: 120442023
Change-Id: Ib8bebda53e7a56f45ea3eb0ec9a3153d44188102
Signed-off-by: Jin Qian <jinqian@google.com>
[connoro: Used by storaged.]
[astrachan: Note: this version does not track fsync syscalls; this is
            implemented in a follow up due to the fact it depends on
            modifications to the task_xacct feature.]
[astrachan: Folded in the following changes:
            e003a91d8f42 ("ANDROID: uid_sys_stats: allow writing same state")
            89b984bf2efd ("ANDROID: uid_sys_stats: fix negative write bytes.")
            bb5ee21cc4dd ("ANDROID: uid_sys_stats: change to use rt_mutex")
            9297d5a160c7 ("ANDROID: uid_sys_stats: reduce update_io_stats overhead")
            89402d07fe91 ("ANDROID: uid_sys_stats: defer io stats calulation for dead tasks")
            6dc5d8173a8c ("ANDROID: uid_sys_stats: check previous uid_entry before call find_or_register_uid")
            0ca2ece8f7ec ("ANDROID: uid_sys_stats: log task io with a debug flag")
            c9c096ef0e67 ("ANDROID: uid_sys_stats: Copy task_struct comm field to bigger buffer")]
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:40:04 -07:00
Alistair Strachan
c6a11373c1 ANDROID: cuttlefish_defconfig: Enable CONFIG_UID_SYS_STATS
Bug: 118439987
Bug: 120439617
Change-Id: I0a62a9c17f58d79201640be311ea7280a2a040fd
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:40:04 -07:00
Jin Qian
12788836b1 ANDROID: uid_cputime: Adds accounting for the cputimes per uid.
Adds proc files /proc/uid_cputime/show_uid_stat and
/proc/uid_cputime/remove_uid_range.

show_uid_stat lists the total utime and stime for the active as well as
terminated processes for each of the uids.

Writing a range of uids to remove_uid_range will delete the accounting
for all the uids within that range.

Bug: 120442023
Change-Id: I21d9210379da730b33ddc1a0ea663c8c9d2ac15b
Signed-off-by: Jin Qian <jinqian@google.com>
[AmitP: Refactored the original patch because upstream commit
        605dc2b31a ("tsacct: Convert obsolete cputime type to nsecs")
        made cputime_t type obsolete, so use u64 nanoseconds directly instead.
        Also folded following android-4.9 changes into this patch
        48a9906c0f ("ANDROID: proc: uid_cputime: create uids from kuids")
        453ac31cab ("ANDROID: proc: uid_cputime: fix show_uid_stat permission")]
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
[connoro: Used by batterystats.]
[astrachan: Folded in the file/kconfig rename and the following changes:
            da3687fbc393 ("ANDROID: uid_cputime: fix cputime overflow")
            71e3eb512d00 ("ANDROID: uid_cputime: Iterates over all the threads instead of processes.")
            c65f0080c300 ("ANDROID: uid_cputime: Check for the range while removing range of UIDs.")
            c8212458e3a5 ("ANDROID: uid_sys_stats: fix access of task_uid(task)")
            bb5ee21cc4dd ("ANDROID: uid_sys_stats: change to use rt_mutex")
            6dc5d8173a8c ("ANDROID: uid_sys_stats: check previous uid_entry before call find_or_register_uid")
            82b9872b3894 ("ANDROID: uid_sys_stats: Replace tasklist lock with RCU in uid_cputime_show")]
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:40:03 -07:00
Alistair Strachan
87f26154a6 ANDROID: cuttlefish_defconfig: Enable CONFIG_MMC
Bug: 118439987
Bug: 120439617
Change-Id: I7c63e4b9462bfe6fe46c6f7d5661b48dcecdb5e8
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:40:03 -07:00
Dmitry Shmidt
7e2004a986 ANDROID: mmc: core: Add "ignore mmc pm notify" functionality
Used to prevent remounting MMC on suspend/resume.

Bug: 120441127
Change-Id: I20821a82831b07ca037973d5d92e832372c6b583
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2019-05-03 10:40:03 -07:00
Alistair Strachan
d0473fa74d ANDROID: cuttlefish_defconfig: Enable CONFIG_USB_CONFIGFS_F_AUDIO_SRC
Bug: 118439987
Bug: 120439617
Change-Id: I0efbdae061dc79eb4a006b2499c9afd82fbd62fc
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:40:02 -07:00
Mike Lockwood
1983276ceb ANDROID: usb: gadget: f_audio_source: New gadget driver for audio output
This driver presents a standard USB audio class interface to the host
and an ALSA PCM device to userspace

Bug: 78114713
Bug: 120441124
[badhri: f_audio_source is being migrated to userspace.]
Change-Id: If16b14a5ff27045f9cb2daaf1ae9195c5eeab7d0
Signed-off-by: Mike Lockwood <lockwood@google.com>
[AmitP: Folded following android-4.9 commit changes into this patch
        Parts of e275439310 ("ANDROID: usb: gadget: Fixes and hacks to make android usb gadget compile on 3.8")
        i6d9285e2574a ("ANDROID: usb: gadget: f_audio_source:replace deprecated API")]
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
[astrachan: Folded the following changes into this patch:
            ddfd0c4070c1 ("ANDROID: usb: gadget: f_audio_source: Move to USB_FUNCTION API")
            a3ab81aaa19e ("ANDROID: usb: gadget: f_audio_source: Move gadget functions code")
            2095c953d894 ("ANDROID: usb: gadget: f_audio_source: change max ISO packet size")
            8671b3e53638 ("ANDROID: usb: gadget: f_audio_source: Fixed USB Audio Class Interface Descriptor")
            af98f36edbe2 ("ANDROID: usb: gadget: f_audio_source: disable the CPU C-states upon playback")
            a830751a338e ("CHROMIUM: usb: gadget: f_audio_source: add .free_func callback")]
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:40:02 -07:00
Winter Wang
1f03757257 ANDROID: usb: gadget: f_midi: set fi->f to NULL when free f_midi function
fi->f is set in f_midi's alloc_func, need to clean this to
NULL in free_func, otherwise on ConfigFS's function switch,
midi->usb_function it self is freed, fi->f will be a wild
pointer and run into below kernel panic:
---------------
[   58.950628] Unable to handle kernel paging request at virtual address 63697664
[   58.957869] pgd = c0004000
[   58.960583] [63697664] *pgd=00000000
[   58.964185] Internal error: Oops: 80000005 [#1] PREEMPT SMP ARM
[   58.970111] Modules linked in:
[   58.973191] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.1.15-03504-g34c857c-dirty #89
[   58.981024] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[   58.987557] task: c110bd70 ti: c1100000 task.ti: c1100000
[   58.992962] PC is at 0x63697664
[   58.996120] LR is at android_setup+0x78/0x138
<..snip..>
[   60.044980] 1fc0: ffffffff ffffffff c1000684 00000000 00000000 c108ecd0 c11f7294 c11039c0
[   60.053181] 1fe0: c108eccc c110d148 1000406a 412fc09a 00000000 1000807c 00000000 00000000
[   60.061420] [<c073b1fc>] (android_setup) from [<c0730490>] (udc_irq+0x758/0x1034)
[   60.068951] [<c0730490>] (udc_irq) from [<c017c650>] (handle_irq_event_percpu+0x50/0x254)
[   60.077165] [<c017c650>] (handle_irq_event_percpu) from [<c017c890>] (handle_irq_event+0x3c/0x5c)
[   60.086072] [<c017c890>] (handle_irq_event) from [<c017f3ec>] (handle_fasteoi_irq+0xe0/0x198)
[   60.094630] [<c017f3ec>] (handle_fasteoi_irq) from [<c017bcfc>] (generic_handle_irq+0x2c/0x3c)
[   60.103271] [<c017bcfc>] (generic_handle_irq) from [<c017bfb8>] (__handle_domain_irq+0x7c/0xec)
[   60.112000] [<c017bfb8>] (__handle_domain_irq) from [<c0101450>] (gic_handle_irq+0x24/0x5c)
--------------

Bug: 111003288
Bug: 120441124
Change-Id: Iaf7cc809379c184048a2d9ab1f59e71ebaa3416e
Signed-off-by: Winter Wang <wente.wang@nxp.com>
2019-05-03 10:40:02 -07:00
Badhri Jagan Sridharan
14948a5ac3 ANDROID: usb: gadget: f_midi: create F_midi device
Android frameworks relies on the alsa
config reported by the f_midi device.

Bug: 111003288
Bug: 120441124
Change-Id: I0695e00b166fd953f50acea93802245b0d5a5240
[badhri: The framework should be moved away from this]
Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
2019-05-03 10:40:01 -07:00
Alistair Strachan
d3a061d244 ANDROID: cuttlefish_defconfig: Enable CONFIG_USB_CONFIGFS_F_ACC
Bug: 118439987
Bug: 120439617
Change-Id: I16cd3772a5511842b02ed6114ccc0b0eee5126f8
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:40:01 -07:00
Benoit Goby
483cb5629e ANDROID: usb: gadget: f_accessory: Add Android Accessory function
USB accessory mode allows users to connect USB host hardware
specifically designed for Android-powered devices. The accessories
must adhere to the Android accessory protocol outlined in the
http://accessories.android.com documentation. This allows
Android devices that cannot act as a USB host to still interact with
USB hardware. When an Android device is in USB accessory mode, the
attached Android USB accessory acts as the host, provides power
to the USB bus, and enumerates connected devices.

Bug: 63740241
Bug: 120441124
Change-Id: I67964b50d278f3c0471d47efbb7b0973a3502681
[badhri: f_accessory is being migrated to userspace.]
Signed-off-by: Mike Lockwood <lockwood@android.com>
[AmitP: Folded following android-4.9 commit changes into this patch
        ceb2f0aac6 ("ANDROID: usb: gadget: accessory: Fix section mismatch")
        Parts of e275439310 ("ANDROID: usb: gadget: Fixes and hacks to make android usb gadget compile on 3.8")
        1b07ec7515 ("ANDROID: drivers: usb: gadget: 64-bit related type fixes")]
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
[astrachan: Folded the following changes into this patch:
            9d5891d516e2 ("ANDROID: usb: gadget: f_accessory: Add ACCESSORY_SET_AUDIO_MODE control request and ioctl")
            dc66cfce9622 ("ANDROID: usb: gadget: f_accessory: Add support for HID input devices")
            5f1ac9c2871b ("ANDROID: usb: gadget: f_accessory: move userspace interface to uapi")
            9a6241722cd8 ("ANDROID: usb: gadget: f_accessory: Enabled Zero Length Packet (ZLP) for acc_write")
            31a0ecd5a825 ("ANDROID: usb: gadget: f_accessory: check for accessory device before disconnecting HIDs")
            580721fa6cbc ("ANDROID: usb: gadget: f_accessory: Migrate to USB_FUNCTION API")
            7f407172fb28 ("ANDROID: usb: gadget: f_accessory: Fix for UsbAccessory clean unbind.")
            ebc98ac5a22f ("ANDROID: usb: gadget: f_accessory: fix false disconnect due to a signal sent to the reading process")
            71c6dc5ffdab ("ANDROID: usb: gadget: f_accessory: assign no-op request complete callbacks")
            675047ee68e9 ("ANDROID: usb: gadget: f_accessory: Move gadget functions code")
            b2bedaa5c7df ("CHROMIUM: usb: gadget: f_accessory: add .raw_request callback")]
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:40:01 -07:00
Badhri Jagan Sridharan
cc9ba0912d ANDROID: usb: gadget: configfs: Add device attribute to determine gadget state
Android frameworks (UsbDeviceManager) relies on gadget state exported
through device attributes.  This CL adds the device attribute to export
USB gadget state.

Bug: 68755607
Bug: 120441124
Change-Id: Id0391810d75b58c579610fbec6e37ab22f28886d
[badhri: Migrate to using udc uevents from upstream sysfs.]
Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
[AmitP: Folded following android-4.9 commit changes into this patch
        Parts of e45c769fa7 ("ANDROID: usb: gadget: cleanup: fix unused variable and function warnings")
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
2019-05-03 10:40:00 -07:00
Badhri Jagan Sridharan
d398ab0ffb ANDROID: usb: gadget: configfs: Add "state" attribute to android_device
Added a device attribute to android_device to
determine USB_GADGET's state

Bug: 68755607
Bug: 120441124
Change-Id: I17f8903120df96bf2f4bf441940b53a87b818230
[badhri: Migrate to using udc uevents from upstream sysfs.]
Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
2019-05-03 10:40:00 -07:00
Alistair Strachan
a8141dbb6f ANDROID: cuttlefish_defconfig: Enable CONFIG_USB_CONFIGFS_UEVENT
Bug: 118439987
Bug: 120439617
Change-Id: Iab0c48a56c74ce6240bac696494a8de6e936660b
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:40:00 -07:00
Badhri Jagan Sridharan
429213f5d9 ANDROID: usb: gadget: configfs: Add function devices to the parent
Added create_function_device to create child
function devices for USB gadget functions.
Android UsbDeviceManager relies on communicating
to the devices created by the gadget functions
to implement functions such as audio_source.

Bug: 63740241
Bug: 68755607
Bug: 78114713
Bug: 120441124
Change-Id: I0df9ad86ac32d8cdacdea164e9fed49891b45fc2
[badhri: This is a supporting patch for other patches which have
         replacements pipelined. It can be dropped when those
         implementations land.]
Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
2019-05-03 10:40:00 -07:00
Badhri Jagan Sridharan
7a160e2b96 ANDROID: usb: gadget: configfs: Add Uevent to notify userspace
Android userspace UsbDeviceManager relies on the
uevents generated by the composition driver to
generate user notifications. This CL adds uevents
to be generated whenever USB changes its state
i.e. connected, disconnected, configured.

This CL also intercepts the setup requests from
the usb_core anb routes it to the specific
usb function if required.

Bug: 68755607
Bug: 120441124
Change-Id: Ib3d3a78255a532f7449dac286f776c2966caf8c1
[badhri: Migrate to using udc uevents from upstream sysfs.]
Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
[AmitP: Folded following android-4.9 commit changes into this patch
        9214c899f7 ("ANDROID: usb: gadget: configfs: handle gadget reset request for android")]
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
[astrachan: Folded change 5c899c9fd75d ("ANDROID: usb: gadget: configfs:
            fix null ptr in android_disconnect") into this patch]
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:39:59 -07:00
Badhri Jagan Sridharan
2d89290aec ANDROID: usb: gadget: configfs: Add usb_function ptr to fi struct
Add a pointer to the usb_function inside the
usb_function_instance structure to service
functions specific setup requests even before
the function gets added to the usb_gadget

Bug: 63740241
Bug: 68755607
Bug: 78114713
Bug: 120441124
Change-Id: I6f457006f6c5516cc6986ec2acdf5b1ecf259d0c
[badhri: This is a supporting patch for other patches which have
         replacements pipelined. It can be dropped when those
         implementations land.]
Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
2019-05-03 10:39:59 -07:00
Colin Cross
60500a4228 ANDROID: mm: add a field to store names for private anonymous memory
Userspace processes often have multiple allocators that each do
anonymous mmaps to get memory.  When examining memory usage of
individual processes or systems as a whole, it is useful to be
able to break down the various heaps that were allocated by
each layer and examine their size, RSS, and physical memory
usage.

This patch adds a user pointer to the shared union in
vm_area_struct that points to a null terminated string inside
the user process containing a name for the vma.  vmas that
point to the same address will be merged, but vmas that
point to equivalent strings at different addresses will
not be merged.

Userspace can set the name for a region of memory by calling
prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, start, len, (unsigned long)name);
Setting the name to NULL clears it.

The names of named anonymous vmas are shown in /proc/pid/maps
as [anon:<name>] and in /proc/pid/smaps in a new "Name" field
that is only present for named vmas.  If the userspace pointer
is no longer valid all or part of the name will be replaced
with "<fault>".

The idea to store a userspace pointer to reduce the complexity
within mm (at the expense of the complexity of reading
/proc/pid/mem) came from Dave Hansen.  This results in no
runtime overhead in the mm subsystem other than comparing
the anon_name pointers when considering vma merging.  The pointer
is stored in a union with fieds that are only used on file-backed
mappings, so it does not increase memory usage.

Includes fix from Jed Davis <jld@mozilla.com> for typo in
prctl_set_vma_anon_name, which could attempt to set the name
across two vmas at the same time due to a typo, which might
corrupt the vma list.  Fix it to use tmp instead of end to limit
the name setting to a single vma at a time.

Bug: 120441514
Change-Id: I9aa7b6b5ef536cd780599ba4e2fba8ceebe8b59f
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
[AmitP: Fix get_user_pages_remote() call to align with upstream commit
        5b56d49fc3 ("mm: add locked parameter to get_user_pages_remote()")]
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
2019-05-03 10:39:58 -07:00
Colin Cross
7c6ba364ef 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>
2019-05-03 10:39:58 -07:00
Alistair Strachan
99bafaf6e5 ANDROID: cuttlefish_defconfig: Enable CONFIG_CMDLINE_EXTEND
Bug: 118439987
Bug: 120439617
Change-Id: Ib00ea9b9fd0d841d23bc902ed57a0c910cad2310
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:39:58 -07:00
Doug Anderson
d9a2a3f2c2 ANDROID: of: Support CONFIG_CMDLINE_EXTEND config option
The old logic assumes CMDLINE_FROM_BOOTLOADER vs. CMDLINE_FORCE and
ignores CMDLINE_EXTEND.  Here's the old logic:

- CONFIG_CMDLINE_FORCE=true
    CONFIG_CMDLINE
- dt bootargs=non-empty:
    dt bootargs
- dt bootargs=empty, @data is non-empty string
    @data is left unchanged
- dt bootargs=empty, @data is empty string
    CONFIG_CMDLINE (or "" if that's not defined)

The new logic is now documented in of_fdt.h and is copied here for
reference:

- CONFIG_CMDLINE_FORCE=true
    CONFIG_CMDLINE
- CONFIG_CMDLINE_EXTEND=true, @data is non-empty string
    @data + dt bootargs (even if dt bootargs are empty)
- CONFIG_CMDLINE_EXTEND=true, @data is empty string
    CONFIG_CMDLINE + dt bootargs (even if dt bootargs are empty)
- CMDLINE_FROM_BOOTLOADER=true, dt bootargs=non-empty:
    dt bootargs
- CMDLINE_FROM_BOOTLOADER=true, dt bootargs=empty, @data is non-empty string
    @data is left unchanged
- CMDLINE_FROM_BOOTLOADER=true, dt bootargs=empty, @data is empty string
    CONFIG_CMDLINE (or "" if that's not defined)

Signed-off-by: Doug Anderson <dianders@chromium.org>
CC: devicetree-discuss@lists.ozlabs.org
CC: Grant Likely <grant.likely@secretlab.ca>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: Rob Herring <rob.herring@calxeda.com>
Bug: 120440972
Change-Id: I40ace250847f813358125dfcaa8998fd32cf7ea3
Signed-off-by: Colin Cross <ccross@android.com>
[AmitP: Folded following android-4.9 commit changes into this patch
        e820270abb ("ANDROID: of: fix CONFIG_CMDLINE_EXTEND")
        9a4a740554 ("ANDROID: of: Fix build warnings")]
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
2019-05-03 10:39:58 -07:00
Colin Cross
056f12819b 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>
2019-05-03 10:39:57 -07:00
Lorenzo Colitti
b8a72fd7c4 ANDROID: net: xfrm: make PF_KEY SHA256 use RFC-compliant truncation.
When using the PF_KEY interface, SHA-256 hashes are hardcoded to
use 96-bit truncation. This is a violation of RFC4868, which
specifies 128-bit truncation, but will not be fixed upstream due
to backwards compatibility concerns and because the PF_KEY
interface is deprecated in favour of netlink XFRM (which allows
the app to specify an arbitrary truncation length).

Change the hardcoded truncation length from 96 to 128 so that
PF_KEY apps such as racoon will work with standards-compliant VPN
servers.

Bug: 34114242
Bug: 120440497
Change-Id: Ie46bff4b6358f18117d0be241171d677d31d33f7
Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
2019-05-03 10:39:57 -07:00
Alistair Strachan
91c0d00f09 ANDROID: cuttlefish_defconfig: Enable EAS related defines
Provides build coverage for features coming from eas-dev. For now, make
this specific to the arm64 defconfig.

Bug: 118439987
Bug: 120439617
Test: make ARCH=arm64 cuttlefish_defconfig && make ARCH=arm64
Change-Id: Id018290a2d38631b4b88f15ee7a1a85fcce25798
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:39:57 -07:00
Alistair Strachan
1ec70a3679 ANDROID: defconfig / build config for cuttlefish
Add defconfigs for x86_64 and arm64 for the cuttlefish virtual device
platform. This change also add the build.config files needed by the
kernel/build project.

Bug: 120439617
Test: make ARCH=x86_64 x86_64_cuttlefish_defconfig && make ARCH=x86_64
Test: make ARCH=arm64 cuttlefish_defconfig && make ARCH=arm64
Change-Id: I61bde941e8cfef2dd83cb4ff040f7380922cc44e
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:39:56 -07:00
Greg Hackmann
e145f7b103 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>
2019-05-03 10:39:56 -07:00
Alistair Strachan
1f1098e0a3 ANDROID: x86: Remove a useless warning message
While we wait for a clang prebuilt with asm-goto support, we have
removed the kbuild's detection of a clang without asm-goto (the
kernel builds fine without it), so we don't need to see the same
warning about not having the compiler feature fill the kernel build
log, which potentially hides other issues.

This patch should be reverted when the new clang prebuilt lands and
we have reverted the other reverts.

Bug: 120440614
Test: make ARCH=x86_64 x86_64_cuttlefish_defconfig && make ARCH=x86_64
Change-Id: I26aee5b9dd291f27b950dee4b0c64471d972ddb5
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:39:56 -07:00
Greg Kroah-Hartman
84df9525b0 Linux 4.19 2018-10-22 07:37:37 +01:00