Commit Graph

826894 Commits

Author SHA1 Message Date
Tri Vo
e2f91dda87 ANDROID: gki_defconfig: more generic configs for DLKMs
Test: boot arm64 cuttlefish
Signed-off-by: Tri Vo <trong@google.com>
Change-Id: I9f6380927f348d0a5e20d1acff2bef4331c3f591
2019-05-19 18:18:39 -07:00
Tri Vo
c10d19551d ANDROID: gki_defconfig: remove more recommended configs
Disable following configs:
CONFIG_KSM
CONFIG_SGETMASK_SYSCALL
CONFIG_ARM64_SW_TTBR0_PAN

Bug: 132717553
Test: boot arm64 cuttlefish
Signed-off-by: Tri Vo <trong@google.com>
Change-Id: I2689515f3ddff10d6ad09c41ac5f4a0415922357
2019-05-16 14:12:31 -07:00
Tri Vo
228928c172 ANDROID: gki_defconfig: sync with savedefconfig
Otherwise, build/build.sh will complain.

Signed-off-by: Tri Vo <trong@google.com>
2019-05-15 15:47:26 -07:00
Tri Vo
3e9b064a65 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.
2019-05-15 04:41:43 +00:00
Alistair Strachan
bd2c781b52 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>
2019-05-14 17:23:57 -07:00
Matthias Maennich
4543809cd7 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>
2019-05-14 17:23:56 -07:00
Alistair Strachan
b318f050f3 Merge fixes for android-mainline
This should fix builds with clang.

Change-Id: If3cf37d4d3e17db1d907472889ee430d0467fe66
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-14 17:23:56 -07:00
Alistair Strachan
23562ad35a ANDROID: cuttlefish_defconfig: sync with android-mainline-tracking (#2)
Synchronize the x86_64 defconfig too.

Change-Id: If959b35778b645a9443d9620a9a77283b71edd04
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-14 16:05:00 -07:00
Tri Vo
7c17af885c 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)
2019-05-14 14:35:06 -07:00
Tri Vo
1f6649a56a 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)
2019-05-14 12:09:36 -07:00
Tri Vo
548718872b 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)
2019-05-14 11:29:42 -07:00
Tri Vo
d185937e90 ANDROID: gki_defconfig: initial config based on cuttlefish_defconfig
Test: boot arm64 cuttlefish
Signed-off-by: Tri Vo <trong@google.com>
2019-05-14 11:28:24 -07:00
Tri Vo
71fdc6465c ANDROID: cuttlefish_defconfig: sync with android-mainline-tracking
Note that savedefconfig dropped CONFIG_SCHED_TUNE, which is not present
on this branch (yet).

Test: boot cuttlefish on arm64
Signed-off-by: Tri Vo <trong@google.com>
2019-05-14 11:25:12 -07:00
Fei Yang
4b4ee2f983 FROMGIT: usb: gadget: f_fs: don't free buffer prematurely
The following kernel panic happens due to the io_data buffer gets deallocated
before the async io is completed. Add a check for the case where io_data buffer
should be deallocated by ffs_user_copy_worker.

[   41.663334] BUG: unable to handle kernel NULL pointer dereference at 0000000000000048
[   41.672099] #PF error: [normal kernel read fault]
[   41.677356] PGD 20c974067 P4D 20c974067 PUD 20c973067 PMD 0
[   41.683687] Oops: 0000 [#1] PREEMPT SMP
[   41.687976] CPU: 1 PID: 7 Comm: kworker/u8:0 Tainted: G     U            5.0.0-quilt-2e5dc0ac-00790-gd8c79f2-dirty #2
[   41.705309] Workqueue: adb ffs_user_copy_worker
[   41.705316] RIP: 0010:__vunmap+0x2a/0xc0
[   41.705318] Code: 0f 1f 44 00 00 48 85 ff 0f 84 87 00 00 00 55 f7 c7 ff 0f 00 00 48 89 e5 41 55 41 89 f5 41 54 53 48 89 fb 75 71 e8 56 d7 ff ff <4c> 8b 60 48 4d 85 e4 74 76 48 89 df e8 25 ff ff ff 45 85 ed 74 46
[   41.705320] RSP: 0018:ffffbc3a40053df0 EFLAGS: 00010286
[   41.705322] RAX: 0000000000000000 RBX: ffffbc3a406f1000 RCX: 0000000000000000
[   41.705323] RDX: 0000000000000001 RSI: 0000000000000001 RDI: 00000000ffffffff
[   41.705324] RBP: ffffbc3a40053e08 R08: 000000000001fb79 R09: 0000000000000037
[   41.705325] R10: ffffbc3a40053b68 R11: ffffbc3a40053cad R12: fffffffffffffff2
[   41.705326] R13: 0000000000000001 R14: 0000000000000000 R15: ffffffffffffffff
[   41.705328] FS:  0000000000000000(0000) GS:ffff9e2977a80000(0000) knlGS:0000000000000000
[   41.705329] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   41.705330] CR2: 0000000000000048 CR3: 000000020c994000 CR4: 00000000003406e0
[   41.705331] Call Trace:
[   41.705338]  vfree+0x50/0xb0
[   41.705341]  ffs_user_copy_worker+0xe9/0x1c0
[   41.705344]  process_one_work+0x19f/0x3e0
[   41.705348]  worker_thread+0x3f/0x3b0
[   41.829766]  kthread+0x12b/0x150
[   41.833371]  ? process_one_work+0x3e0/0x3e0
[   41.838045]  ? kthread_create_worker_on_cpu+0x70/0x70
[   41.843695]  ret_from_fork+0x3a/0x50
[   41.847689] Modules linked in: hci_uart bluetooth ecdh_generic rfkill_gpio dwc3_pci dwc3 snd_usb_audio mei_me tpm_crb snd_usbmidi_lib xhci_pci xhci_hcd mei tpm snd_hwdep cfg80211 snd_soc_skl snd_soc_skl_ipc snd_soc_sst_ipc snd_soc_sst_dsp snd_hda_ext_core snd_hda_core videobuf2_dma_sg crlmodule
[   41.876880] CR2: 0000000000000048
[   41.880584] ---[ end trace 2bc4addff0f2e673 ]---
[   41.891346] RIP: 0010:__vunmap+0x2a/0xc0
[   41.895734] Code: 0f 1f 44 00 00 48 85 ff 0f 84 87 00 00 00 55 f7 c7 ff 0f 00 00 48 89 e5 41 55 41 89 f5 41 54 53 48 89 fb 75 71 e8 56 d7 ff ff <4c> 8b 60 48 4d 85 e4 74 76 48 89 df e8 25 ff ff ff 45 85 ed 74 46
[   41.916740] RSP: 0018:ffffbc3a40053df0 EFLAGS: 00010286
[   41.922583] RAX: 0000000000000000 RBX: ffffbc3a406f1000 RCX: 0000000000000000
[   41.930563] RDX: 0000000000000001 RSI: 0000000000000001 RDI: 00000000ffffffff
[   41.938540] RBP: ffffbc3a40053e08 R08: 000000000001fb79 R09: 0000000000000037
[   41.946520] R10: ffffbc3a40053b68 R11: ffffbc3a40053cad R12: fffffffffffffff2
[   41.954502] R13: 0000000000000001 R14: 0000000000000000 R15: ffffffffffffffff
[   41.962482] FS:  0000000000000000(0000) GS:ffff9e2977a80000(0000) knlGS:0000000000000000
[   41.971536] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   41.977960] CR2: 0000000000000048 CR3: 000000020c994000 CR4: 00000000003406e0
[   41.985930] Kernel panic - not syncing: Fatal exception
[   41.991817] Kernel Offset: 0x16000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[   42.009525] Rebooting in 10 seconds..
[   52.014376] ACPI MEMORY or I/O RESET_REG.

(cherry picked from commit 684e11da1b
 https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
 master)
Fixes: 772a7a724f ("usb: gadget: f_fs: Allow scatter-gather buffers")
Signed-off-by: Fei Yang <fei.yang@intel.com>
Reviewed-by: Manu Gautam <mgautam@codeaurora.org>
Tested-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>

Change-Id: I6991c5206ac3233c7a2fbe577ecd7cfe2440e7c8
2019-05-07 16:35:33 -07:00
Todd Kjos
1f55c30ba0 Merge branch 'linux-mainline' into android-mainline-tmp
Change-Id: I3dd2a98d614ef2edb00b182f21d675ff7afc7f41
2019-05-06 16:44:54 -07:00
Linus Torvalds
e93c9c99a6 Linux 5.1 2019-05-05 17:42:58 -07:00
Linus Torvalds
7178fb0b23 Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull perf fixes from Ingo Molnar:
 "I'd like to apologize for this very late pull request: I was dithering
  through the week whether to send the fixes, and then yesterday Jiri's
  crash fix for a regression introduced in this cycle clearly marked
  perf/urgent as 'must merge now'.

  Most of the commits are tooling fixes, plus there's three kernel fixes
  via four commits:

    - race fix in the Intel PEBS code

    - fix an AUX bug and roll back a previous attempt

    - fix AMD family 17h generic HW cache-event perf counters

  The largest diffstat contribution comes from the AMD fix - a new event
  table is introduced, which is a fairly low risk change but has a large
  linecount"

* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  perf/x86/intel: Fix race in intel_pmu_disable_event()
  perf/x86/intel/pt: Remove software double buffering PMU capability
  perf/ring_buffer: Fix AUX software double buffering
  perf tools: Remove needless asm/unistd.h include fixing build in some places
  tools arch uapi: Copy missing unistd.h headers for arc, hexagon and riscv
  tools build: Add -ldl to the disassembler-four-args feature test
  perf cs-etm: Always allocate memory for cs_etm_queue::prev_packet
  perf cs-etm: Don't check cs_etm_queue::prev_packet validity
  perf report: Report OOM in status line in the GTK UI
  perf bench numa: Add define for RUSAGE_THREAD if not present
  tools lib traceevent: Change tag string for error
  perf annotate: Fix build on 32 bit for BPF annotation
  tools uapi x86: Sync vmx.h with the kernel
  perf bpf: Return value with unlocking in perf_env__find_btf()
  MAINTAINERS: Include vendor specific files under arch/*/events/*
  perf/x86/amd: Update generic hardware cache events for Family 17h
2019-05-05 14:37:25 -07:00
Linus Torvalds
70c9fb570b Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler fix from Ingo Molnar:
 "Fix a kobject memory leak in the cpufreq code"

* 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  sched/cpufreq: Fix kobject memleak
2019-05-05 14:28:48 -07:00
Linus Torvalds
13369e8311 Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 fix from Ingo Molnar:
 "Disable function tracing during early SME setup to fix a boot crash on
  SME-enabled kernels running distro kernels (some of which have
  function tracing enabled)"

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/mm/mem_encrypt: Disable all instrumentation for early SME setup
2019-05-05 14:26:11 -07:00
Linus Torvalds
51987affd6 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs fixes from Al Viro:

 - a couple of ->i_link use-after-free fixes

 - regression fix for wrong errno on absent device name in mount(2)
   (this cycle stuff)

 - ancient UFS braino in large GID handling on Solaris UFS images (bogus
   cut'n'paste from large UID handling; wrong field checked to decide
   whether we should look at old (16bit) or new (32bit) field)

* 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
  ufs: fix braino in ufs_get_inode_gid() for solaris UFS flavour
  Abort file_remove_privs() for non-reg. files
  [fix] get rid of checking for absent device name in vfs_get_tree()
  apparmorfs: fix use-after-free on symlink traversal
  securityfs: fix use-after-free on symlink traversal
2019-05-05 09:28:45 -07:00
Jiri Olsa
6f55967ad9 perf/x86/intel: Fix race in intel_pmu_disable_event()
New race in x86_pmu_stop() was introduced by replacing the
atomic __test_and_clear_bit() of cpuc->active_mask by separate
test_bit() and __clear_bit() calls in the following commit:

  3966c3feca ("x86/perf/amd: Remove need to check "running" bit in NMI handler")

The race causes panic for PEBS events with enabled callchains:

  BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
  ...
  RIP: 0010:perf_prepare_sample+0x8c/0x530
  Call Trace:
   <NMI>
   perf_event_output_forward+0x2a/0x80
   __perf_event_overflow+0x51/0xe0
   handle_pmi_common+0x19e/0x240
   intel_pmu_handle_irq+0xad/0x170
   perf_event_nmi_handler+0x2e/0x50
   nmi_handle+0x69/0x110
   default_do_nmi+0x3e/0x100
   do_nmi+0x11a/0x180
   end_repeat_nmi+0x16/0x1a
  RIP: 0010:native_write_msr+0x6/0x20
  ...
   </NMI>
   intel_pmu_disable_event+0x98/0xf0
   x86_pmu_stop+0x6e/0xb0
   x86_pmu_del+0x46/0x140
   event_sched_out.isra.97+0x7e/0x160
  ...

The event is configured to make samples from PEBS drain code,
but when it's disabled, we'll go through NMI path instead,
where data->callchain will not get allocated and we'll crash:

          x86_pmu_stop
            test_bit(hwc->idx, cpuc->active_mask)
            intel_pmu_disable_event(event)
            {
              ...
              intel_pmu_pebs_disable(event);
              ...

EVENT OVERFLOW ->  <NMI>
                     intel_pmu_handle_irq
                       handle_pmi_common
   TEST PASSES ->        test_bit(bit, cpuc->active_mask))
                           perf_event_overflow
                             perf_prepare_sample
                             {
                               ...
                               if (!(sample_type & __PERF_SAMPLE_CALLCHAIN_EARLY))
                                     data->callchain = perf_callchain(event, regs);

         CRASH ->              size += data->callchain->nr;
                             }
                   </NMI>
              ...
              x86_pmu_disable_event(event)
            }

            __clear_bit(hwc->idx, cpuc->active_mask);

Fixing this by disabling the event itself before setting
off the PEBS bit.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: David Arcari <darcari@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Lendacky Thomas <Thomas.Lendacky@amd.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Fixes: 3966c3feca ("x86/perf/amd: Remove need to check "running" bit in NMI handler")
Link: http://lkml.kernel.org/r/20190504151556.31031-1-jolsa@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2019-05-05 13:00:48 +02:00
Linus Torvalds
6203838dec Merge tag 'powerpc-5.1-7' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
Pull powerpc fix from Michael Ellerman:
 "One regression fix.

  Changes we merged to STRICT_KERNEL_RWX on 32-bit were causing crashes
  under load on some machines depending on memory layout.

  Thanks to Christophe Leroy"

* tag 'powerpc-5.1-7' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
  powerpc/32s: Fix BATs setting with CONFIG_STRICT_KERNEL_RWX
2019-05-04 12:24:05 -07:00
Linus Torvalds
aa1be08f52 Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Pull KVM fixes from Paolo Bonzini:

 - PPC and ARM bugfixes from submaintainers

 - Fix old Windows versions on AMD (recent regression)

 - Fix old Linux versions on processors without EPT

 - Fixes for LAPIC timer optimizations

* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (21 commits)
  KVM: nVMX: Fix size checks in vmx_set_nested_state
  KVM: selftests: make hyperv_cpuid test pass on AMD
  KVM: lapic: Check for in-kernel LAPIC before deferencing apic pointer
  KVM: fix KVM_CLEAR_DIRTY_LOG for memory slots of unaligned size
  x86/kvm/mmu: reset MMU context when 32-bit guest switches PAE
  KVM: x86: Whitelist port 0x7e for pre-incrementing %rip
  Documentation: kvm: fix dirty log ioctl arch lists
  KVM: VMX: Move RSB stuffing to before the first RET after VM-Exit
  KVM: arm/arm64: Don't emulate virtual timers on userspace ioctls
  kvm: arm: Skip stage2 huge mappings for unaligned ipa backed by THP
  KVM: arm/arm64: Ensure vcpu target is unset on reset failure
  KVM: lapic: Convert guest TSC to host time domain if necessary
  KVM: lapic: Allow user to disable adaptive tuning of timer advancement
  KVM: lapic: Track lapic timer advance per vCPU
  KVM: lapic: Disable timer advancement if adaptive tuning goes haywire
  x86: kvm: hyper-v: deal with buggy TLB flush requests from WS2012
  KVM: x86: Consider LAPIC TSC-Deadline timer expired if deadline too short
  KVM: PPC: Book3S: Protect memslots while validating user address
  KVM: PPC: Book3S HV: Perserve PSSCR FAKE_SUSPEND bit on guest exit
  KVM: arm/arm64: vgic-v3: Retire pending interrupts on disabling LPIs
  ...
2019-05-03 16:49:46 -07:00
Todd Kjos
0f2cb7cf80 Merge branch 'linux-mainline' into android-mainline-tmp
Change-Id: I4380c68c3474026a42ffa9f95c525f9a563ba7a3
2019-05-03 12:22:22 -07:00
Linus Torvalds
82463436a7 Merge branch 'i2c/for-current-fixed' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/wsa/linux
Pull i2c fixes from Wolfram Sang:
 "I2C driver bugfixes and a MAINTAINERS update for you"

* 'i2c/for-current-fixed' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
  i2c: Prevent runtime suspend of adapter when Host Notify is required
  i2c: synquacer: fix enumeration of slave devices
  MAINTAINERS: friendly takeover of i2c-gpio driver
  i2c: designware: ratelimit 'transfer when suspended' errors
  i2c: imx: correct the method of getting private data in notifier_call
2019-05-03 11:42:01 -07:00
Alistair Strachan
03bd957ad6 ANDROID: cuttlefish_defconfig: Enable CONFIG_FUSE_FS
Bug: 120439617
Bug: 129901600
Change-Id: Iff554123147f7761ca639b89612138b82a4a400a
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:44:56 -07:00
Alistair Strachan
e77268d9c9 ANDROID: cuttlefish_defconfig: Enable CONFIG_OVERLAY_FS
Bug: 120439617
Bug: 123755887
Change-Id: I5e1225c0ba82ac6d12133ed0e118bf31c21b8da5
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:44:56 -07:00
Maciej Żenczykowski
1c99edea37 ANDROID: cuttlefish: enable CONFIG_NET_SCH_INGRESS=y
This is to mirror:
  https://android-review.googlesource.com/c/kernel/configs/+/939600
  android-4.9+ for Q: require CONFIG_NET_SCH_INGRESS=y

Generated via:
  echo 'CONFIG_NET_SCH_INGRESS=y' >> arch/x86/configs/x86_64_cuttlefish_defconfig
  echo 'CONFIG_NET_SCH_INGRESS=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
  rm defconfig

Bug: 65674744
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I3ad4fb15e450392e527563208587b18b8285b3a8
2019-05-03 10:44:56 -07:00
Connor O'Brien
073ef86611 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>
2019-05-03 10:44:55 -07:00
Paul Lawrence
d00a21b8eb 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>
2019-05-03 10:44:55 -07:00
Paul Lawrence
479d96fb3c ANDROID: Add dm-bow to cuttlefish configuration
Change-Id: I7f265cb8c6274da414d2477da9953546510ce26b
Signed-off-by: Paul Lawrence <paullawrence@google.com>
2019-05-03 10:44:54 -07:00
Paul Lawrence
0ce3eb37e9 ANDROID: dm-bow: Add dm-bow feature
Based on https://www.redhat.com/archives/dm-devel/2019-March/msg00025.html

Third version of dm-bow. Key changes:

Free list added
Support for block sizes other than 4k
Handles writes during trim phase, and overlapping trims
Integer overflow error
Support trims even if underlying device doesn't
Numerous small bug fixes

bow == backup on write

USE CASE:

dm-bow takes a snapshot of an existing file system before mounting.
The user may, before removing the device, commit the snapshot.
Alternatively the user may remove the device and then run a command
line utility to restore the device to its original state.

dm-bow does not require an external device

dm-bow efficiently uses all the available free space on the file system.

IMPLEMENTATION:

dm-bow can be in one of three states.

In state one, the free blocks on the device are identified by issuing
an FSTRIM to the filesystem.

In state two, any writes cause the overwritten data to be backup up
to the available free space. While in this state, the device can be
restored by unmounting the filesystem, removing the dm-bow device
and running a usermode tool over the underlying device.

In state three, the changes are committed, dm-bow is in pass-through
mode and the drive can no longer be restored.

It is planned to use this driver to enable restoration of a failed
update attempt on Android devices using ext4.

Test: Can boot Android with userdata mounted on this device. Can commit
userdata after SUW has run. Can then reboot, make changes and roll back.

Known issues:

Mutex is held around entire flush operation, including lengthy I/O. Plan
is to convert to state machine with pending queues.

Interaction with block encryption is unknown, especially with respect
to sector 0.

Bug: 119769411
Bug: 129280212
Test: Dogfooded on Wahoo.
      Ran under Cuttlefish, running VtsKernelBowTest &
      VtsKernelCheckpointTest tests against 4.19, 4.14 & 4.9 kernels
Change-Id: Id70988bbd797ebe3e76fc175094388b423c8da8c
Signed-off-by: Paul Lawrence <paullawrence@google.com>
2019-05-03 10:44:54 -07:00
Alistair Strachan
f346147376 ANDROID: cuttlefish_defconfig: Enable CONFIG_INPUT_MOUSEDEV
Bug: 120439617
Bug: 128633328
Change-Id: I2186d8070f7885937925a25e85ce7b5722a73d57
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:44:54 -07:00
Alistair Strachan
64ca087c27 ANDROID: cuttlefish_defconfig: Enable CONFIG_PSI
Bug: 120439617
Bug: 127712811
Change-Id: Id3531e3573ccea1720047d502288f60ee151cbff
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:44:53 -07:00
Maciej Żenczykowski
59407309cd ANDROID: cuttlefish: enable CONFIG_INET_UDP_DIAG=y
This is to mirror:
  https://android-review.googlesource.com/c/kernel/configs/+/721208
  android-base.cfg: enable CONFIG_INET_UDP_DIAG

Generated via:
  echo 'CONFIG_INET_UDP_DIAG=y' >> arch/x86/configs/x86_64_cuttlefish_defconfig
  echo 'CONFIG_INET_UDP_DIAG=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
  rm defconfig

Bug: 127981801
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I5d4533b7c3b9a11e45e96b0346a70b3f93d4a812
2019-05-03 10:44:53 -07:00
Maciej Żenczykowski
f1ed05843b ANDROID: cuttlefish: enable CONFIG_USB_RTL8152=y
This is to mirror:
  https://android-review.googlesource.com/c/kernel/configs/+/920741
  Require CONFIG_USB_RTL8152 != n if we have host usb support.

Generated via:
  echo 'CONFIG_USB_RTL8152=y' >> arch/x86/configs/x86_64_cuttlefish_defconfig
  echo 'CONFIG_USB_RTL8152=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
  rm defconfig

Bug: 110755806
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Iadca2a11b76296532aa42dde999ee73f58e0bd97
2019-05-03 10:44:53 -07:00
Alistair Strachan
de14450d06 ANDROID: cuttlefish_defconfig: Add support for AC97 audio
Enable driver support for the ac97 emulation provided by QEMU and
crosvm. This is for the older 'ac97' soundhw, not 'hda'.

Bug: 120439617
Bug: 126955561
Test: local build and test of sound from cuttlefish
Change-Id: I6c29e352e0be161e2a1dc35fde50b888b7dbf86e
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:44:52 -07:00
Connor O'Brien
fcecefc007 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>
2019-05-03 10:44:52 -07:00
Connor O'Brien
0d084d72df 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>
2019-05-03 10:44:51 -07:00
Connor O'Brien
4242998e5b 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>
2019-05-03 10:44:51 -07:00
Alistair Strachan
0deaa99578 ANDROID: cuttlefish_defconfig: Enable CONFIG_CPU_FREQ_TIMES
Bug: 118439987
Bug: 127641090
Change-Id: If2a7c773f74dd9351815daa5a935eacc40fa5b84
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:44:51 -07:00
Connor O'Brien
ce765ecd8d 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
2019-05-03 10:44:50 -07:00
Connor O'Brien
864b400f49 ANDROID: proc: Add /proc/uid directory
Add support for reporting per-uid information through procfs, roughly
following the approach used for per-tid and per-tgid directories in
fs/proc/base.c.
This also entails some new tracking of which uids have been used, to
avoid losing information when the last task with a given uid exits.

Bug: 72339335
Bug: 127641090
Test: ls /proc/uid/; compare with UIDs in /proc/uid_time_in_state
Change-Id: I0908f0c04438b11ceb673d860e58441bf503d478
Signed-off-by: Connor O'Brien <connoro@google.com>
[AmitP: Fix proc_fill_cache() now that upstream commit
        0168b9e38c ("procfs: switch instantiate_t to d_splice_alias()"),
        switched instantiate() callback to d_splice_alias()]
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
[astrachan: Folded 97b7790f505e ("ANDROID: proc: fix undefined behavior
            in proc_uid_base_readdir") into this change]
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:44:50 -07:00
Connor O'Brien
c408992c71 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
2019-05-03 10:44:50 -07:00
Connor O'Brien
8bea10e033 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>
2019-05-03 10:44:49 -07:00
Maciej Żenczykowski
3aae57372e ANDROID: cuttlefish: enable CONFIG_NETFILTER_XT_TARGET_CT=y
This is to mirror:
  https://android-review.googlesource.com/c/kernel/configs/+/919855
  android-4.9+: add CONFIG_NETFILTER_XT_TARGET_CT=y to base config

Generated via:
  echo 'CONFIG_NETFILTER_XT_TARGET_CT=y' >> arch/x86/configs/x86_64_cuttlefish_defconfig
  echo 'CONFIG_NETFILTER_XT_TARGET_CT=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
  rm defconfig

Bug: 124361845
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I6035ef8e75f9daada706a9233999368a22904c4e
2019-05-03 10:44:49 -07:00
Maciej Żenczykowski
c12ab9fbac ANDROID: cuttlefish: enable CONFIG_NET_SCH_NETEM=y
This is to mirror:
  https://android-review.googlesource.com/c/kernel/configs/+/906713
  android-4.9+: add CONFIG_NET_SCH_NETEM=y to recommended config

Generated via:
  echo 'CONFIG_NET_SCH_NETEM=y' >> arch/x86/configs/x86_64_cuttlefish_defconfig
  echo 'CONFIG_NET_SCH_NETEM=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
  rm defconfig

Bug: 124467469
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: If06da8f0e77d5523c56fea5d520131e456f9b529
2019-05-03 10:44:48 -07:00
Alistair Strachan
3181189328 ANDROID: Move from clang r346389b to r349610.
Bug: 123635022
Test: make ARCH=arm64 cuttlefish_defconfig && make ARCH=arm64
Test: make ARCH=x86_64 x86_64_cuttlefish_defconfig && make ARCH=x86_64
Change-Id: Icc02ea92c13435fa5a6ecd33d8878629762fd2f7
Signed-off-by: Alistair Strachan <astrachan@google.com>
2019-05-03 10:44:48 -07:00
Chenbo Feng
6548078271 ANDROID: Turn xt_owner module on
Once xt_qtaguid module is deprecated, the netd strictController which
uses owner match to filter egress traffic will not work because
xt_qtaguid masquerades as (and implements/extends) the "owner" module on
android devices. It can be resolved by turning upstream xt_owner module
back on since strictController only targets egress traffic and the
upstream xt_owner module works fine in this case.

Signed-off-by: Chenbo Feng <fengc@google.com>
Bug: 79938294
Test: manual cherry-pick and compile
Change-Id: Ia099db025f17f6042384c9f0caf7b941a40b8b84
2019-05-03 10:44:48 -07:00
Matthias Maennich
f9df80a9ae ANDROID: cuttlefish_defconfig: Enable CONFIG_RTC_HCTOSYS
This configuration is required for the VTS test
VtsKernelApiSysfsTest#testRtcHctosys to pass.

Bug: 123860857
Test: run vts-kernel -m VtsKernelApiSysfsTest
Signed-off-by: Matthias Maennich <maennich@google.com>
Change-Id: Icae17c74460bcd2aef4cf4e3ec5381de9ea0a66c
2019-05-03 10:44:47 -07:00