Commit Graph

843808 Commits

Author SHA1 Message Date
Zhang Zhijie
5d5542e8fe OPTEE: check psci state when driver init
Kernel is running in secure mode on some platforms(e.g. rk3128/rv1108),
which has no secure OS to support TEE service.

Change-Id: I275413230b2a8ec3864fc5a5ba043a155d724ced
Signed-off-by: Zhang Zhijie <zhangzj@rock-chips.com>
2019-06-27 17:14:33 +08:00
Simon Xue
9a7a78b838 arm64: rockchip_defconfig: enable gpio key
Enable KEYBOARD_GPIO and disable KEYBOARD_ROCKCHIP
which is not supported anymore.

Change-Id: I2a1a63d4acc96e04ce39373b810c92b07ed9ee92
Signed-off-by: Simon Xue <xxm@rock-chips.com>
2019-06-26 18:20:14 +08:00
Frank Wang
b2e17e3ba8 phy: phy-rockchip-inno-usb2: add exception handling for wakelock
The "OTG wakelock" should be destroyed if otg port was initialized
failed, in case of its memory allocate for other module and the
"wakeup_sources" list would be broken.

Change-Id: Ic478e7297e36def8e105a0736beb86c99ca6261d
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
2019-06-26 10:08:57 +08:00
Frank Wang
b3390d3b60 phy: phy-rockchip-inno-usb2: fix otg-id irq error
For the 'otg-mux' irq in SoC should include 'otg-bvalid', 'linestate',
and 'otg-id'. This change fix the previous error condition.

Change-Id: I8fe46c8c9efd6ce04eead89c276227d4cc70902e
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
2019-06-26 10:08:45 +08:00
Zhixiong Lin
b5ae994fe7 GPU: Kconfig: add gpu Kconfig to video Kconfig
Change-Id: I9938fe0377fc57e030c9e5109c216d6c62dbeef0
Signed-off-by: Zhixiong Lin <zhixiong.lin@rock-chips.com>
2019-06-24 14:23:17 +08:00
Zhen Chen
ae48165fb6 Mali: midgard: fix compile errors when ARCH=arm under kernel v4.19
Change-Id: I59be58843da8f55e242d82f15533f8c8aa48eece
Signed-off-by: Zhen Chen <chenzhen@rock-chips.com>
2019-06-24 11:58:59 +08:00
Zhixiong Lin
d40d76adb5 Mali: utgard: fix compile errors when ARCH=arm under kernel v4.19
Change-Id: Iea66ada0c6aef9fffc270175cdeca1377827542d
Signed-off-by: Zhixiong Lin <zhixiong.lin@rock-chips.com>
2019-06-24 11:07:12 +08:00
Tao Huang
85f56e2278 input: touchscreen: gt9xx: avoid clang warning
drivers/input/touchscreen/gt9xx/gt9xx_update.c:2744:19: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
 while ((ready == 0)) //Wait for measurement complete
         ~~~~~~^~~~

Change-Id: I6954c7cd8867e1d85d435a23ee857cd4e3c58b4b
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
2019-06-24 10:47:11 +08:00
Tao Huang
fd0e3eb0c2 Merge remote branch 'android-4.19' of https://android.googlesource.com/kernel/common
* android-4.19: (3557 commits)
  ANDROID: kernel: cgroup: cpuset: Clear cpus_requested for empty buf
  ANDROID: kernel: cgroup: cpuset: Add missing allocation of cpus_requested in alloc_trial_cpuset
  Linux 4.19.53
  rtc: pcf8523: don't return invalid date when battery is low
  drm: add fallback override/firmware EDID modes workaround
  drm/edid: abstract override/firmware EDID retrieval
  x86/resctrl: Prevent NULL pointer dereference when local MBM is disabled
  x86/mm/KASLR: Compute the size of the vmemmap section properly
  x86/kasan: Fix boot with 5-level paging and KASAN
  x86/microcode, cpuhotplug: Add a microcode loader CPU hotplug callback
  RAS/CEC: Fix binary search function
  RAS/CEC: Convert the timer callback to a workqueue
  timekeeping: Repair ktime_get_coarse*() granularity
  USB: serial: option: add Telit 0x1260 and 0x1261 compositions
  USB: serial: option: add support for Simcom SIM7500/SIM7600 RNDIS mode
  USB: serial: pl2303: add Allied Telesis VT-Kit3
  USB: usb-storage: Add new ID to ums-realtek
  USB: Fix chipmunk-like voice when using Logitech C270 for recording audio.
  usb: dwc2: host: Fix wMaxPacketSize handling (fix webcam regression)
  usb: dwc2: Fix DMA cache alignment issues
  ...

Conflicts:
	arch/arm/boot/dts/rk3288.dtsi
	drivers/bluetooth/hci_ldisc.c
	drivers/clk/clk-fractional-divider.c
	drivers/clk/rockchip/clk-rk3288.c
	drivers/gpu/drm/rockchip/rockchip_drm_vop.c
	init/main.c
	kernel/sched/fair.c

Change-Id: I8bcf9aad06fe9648fc2621bac8475a47be1212fb
2019-06-22 22:26:14 +08:00
Sandy Huang
12f7c4d9b5 drm/rockchip driver: update drm driver version and add open/close function
userspace can use drmGetVersion() to identify linux 4.4 or 4.19 drm
driver.

Change-Id: I5a21f9bce198cb18a107496cb924a82a44ac6cb4
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2019-06-21 19:28:32 +08:00
Tao Huang
6a94856ae3 drivers: rk_nand: include seq_file.h for rk_nand_blk.c
Change-Id: I2736a432c071fae0ff47f7015a87c39a39e07095
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
2019-06-21 19:04:44 +08:00
Sandy Huang
8aaf010974 drm/rockchip: vop: add vop_win_disable for win state control
Change-Id: Idd0ee2e61331f6d01e7528172a464cae92c1b001
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2019-06-21 18:40:34 +08:00
Tao Huang
a9c39f81ac ARM: rockchip_defconfig: enable CONFIG_DRM_IGNORE_IOTCL_PERMIT
Change-Id: I3209ea740f25df7e7bbbb35b87ab5c64c7278d81
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
2019-06-21 14:52:25 +08:00
Sandy Huang
f712fa991a arm64: rockchip_defconfig: enable CONFIG_DRM_IGNORE_IOTCL_PERMIT
Change-Id: I65857a834c225ba0a5451c7e56ee6a3bce16ae3c
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2019-06-21 14:51:10 +08:00
Sandy Huang
f39337d357 drm/rockchip: driver: init rockchip fb devices
Change-Id: I947ad0766a6dac55967e480f658486ea489d4e92
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2019-06-21 14:48:44 +08:00
Sandy Huang
169ade6134 drm/rockchip: vop: add support ARM FBDC format
Change-Id: Ief12f40ba4424358d5889c23c9cb11b3da32ca77
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2019-06-21 14:48:44 +08:00
Matteo Franchin
915836f39a UPSTREAM: drm/fourcc: Add modifier defininitions for AFBC 1.3
This commit adds definitions of format modifiers for version 1.3 of the
Arm Framebuffer Compression (AFBC).

Change-Id: Icdb3eb09cc83c55c1d71f1d48ed3945698fbfa9a
Signed-off-by: Matteo Franchin <matteo.franchin@arm.com>
Signed-off-by: Ayan Kumar Halder <ayan.halder@arm.com>
Reviewed-by: Brian Starkey <brian.starkey@arm.com>
Link: https://patchwork.freedesktop.org/patch/277333/
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
(cherry picked from commit 2db8ebca1f)
2019-06-21 14:36:15 +08:00
Mark Yao
83fcb2b69a drm/rockchip: support using reserved memory region for cma
Change-Id: I829162c21748052525b0583185db67015f24141d
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2019-06-21 09:52:10 +08:00
Sandy Huang
e8a16ec23b drm/rockchip: driver: add to get dclk pll source
Change-Id: I8f5f48a51d5ffa70312c142511aebe498f8eb796
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2019-06-21 09:45:59 +08:00
Yifeng Zhao
35de189e19 drivers: rk_nand: enable rk nand flash support
Change-Id: I2ea7fe6218b32666b91fce54bc17f976feb7f4d2
Signed-off-by: Yifeng Zhao <zyf@rock-chips.com>
2019-06-20 15:02:52 +08:00
Randy Li
f077059630 Mali: midgard: fix the memory translation for aarch32
When the clients are 32 bits while the kernel is 64 bits,
we need to translate the memory address before accessing.

The previous commit was refreshed by ddk update.

Change-Id: I7f47ab94da258e9d170613252aae9b396623cf48
Signed-off-by: Randy Li <randy.li@rock-chips.com>
2019-06-20 14:58:49 +08:00
Zhen Chen
da6f49f0dd Mali: midgard: fix Spectre v1 vulnerability
user_atom.atom_number can be indirectly controlled by user-space,
hence leading to a potential exploitation
of the Spectre variant 1 vulnerability.

This issue was detected with the help of Smatch:

drivers/gpu/arm/midgard/mali_kbase_jd.c:1397 kbase_jd_submit() warn:
potential spectre issue 'jctx->atoms' [r]
katom = &jctx->atoms[user_atom.atom_number];

Fix this by sanitizing user_atom.atom_number
before 'katom = &jctx->atoms[user_atom.atom_number];'.

Notice that given that speculation windows are large, the policy is
to kill the speculation on the first load and not worry if it can be
completed with a dependent load/store [1].

[1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2

Fixes: 5cf27d0b60 ("Mali: midgard: changes to enlarge BASE_JD_ATOM_COUNT to 512, for defect 184210")
Change-Id: If52f30d29a80a06c6693ddadd5947ab9fe8fbc25
Signed-off-by: Zhen Chen <chenzhen@rock-chips.com>
2019-06-20 14:58:49 +08:00
Zhen Chen
b8fd2316f9 Mali: midgard: changes to enlarge BASE_JD_ATOM_COUNT to 512, for defect 184210
The source code of mali_so must be modified correspondingly.

Change-Id: I3f4bd03fa2d369d912e6bc05c53d2d3abefb92d3
Signed-off-by: Zhen Chen <chenzhen@rock-chips.com>
2019-06-20 14:58:49 +08:00
Algea Cao
8e1fda9f83 drm/rockchip: dw_hdmi: Compatible with two inno hdmi phy names
4.4 kernel inno hdmi phy name is "hdmi_phy".
4.19 kernel inno hdmi phy name is "hdmi".

Change-Id: Ie87aa205c89154b417887a84703ce7bd9ffb2c7f
Signed-off-by: Algea Cao <algea.cao@rock-chips.com>
2019-06-20 14:54:34 +08:00
Hu Kejun
29cea96f07 arm64: dts: rockchip: rk3399-sapphire-excavator-edp: add module information for ov13850/ov4689
Change-Id: I850c379e375571f7ab5100b65843759496687362
Signed-off-by: Hu Kejun <william.hu@rock-chips.com>
2019-06-20 14:53:51 +08:00
Hu Kejun
74c395ca97 arm64: dts: rockchip: rk3399-sapphire-excavator-edp: enable rkisp and ov13850
Change-Id: Id747ebc37b6e0ce71e3e84204c0f2acced4321d6
Signed-off-by: Hu Kejun <william.hu@rock-chips.com>
2019-06-20 14:53:36 +08:00
Hu Kejun
600b243039 media: i2c: ov13850: synchronize with kernel4.4 and update to v01.01.01
Change-Id: I50716a51c39570e68b179fd1adceb5ebb0669520
Signed-off-by: Hu Kejun <william.hu@rock-chips.com>
2019-06-20 14:40:03 +08:00
Zhen Chen
732afe7d96 Mali: bifrost: adjust source codes for kernel v4.19
Change-Id: I80aaaa2cd9b14607336b2db2dd5890a84f260561
Signed-off-by: Zhen Chen <chenzhen@rock-chips.com>
2019-06-20 14:15:33 +08:00
Zhen Chen
6230ae439e arm64: dts: rockchip: rk3399: modify gpu node for ARM Midgard driver
Change-Id: I46ff1b61787172a5b4ba5b378e00c6de4cfa7f8d
Signed-off-by: Zhen Chen <chenzhen@rock-chips.com>
2019-06-20 14:14:58 +08:00
Zhen Chen
89ad87fb8e Mali: midgard: adjust source codes for kernel v4.19
Parts of the modifications are borrowed from Mali Bifrost DDK r13.

Change-Id: I82c68041a3185063ae2d8a40a7a7c17feaab0733
Signed-off-by: Zhen Chen <chenzhen@rock-chips.com>
2019-06-20 14:14:49 +08:00
Sandy Huang
a109506620 drm/rocckhip: driver: add support dmc and use rockchip atomic_commit
Change-Id: I30f7937d23a8092fc01d6d0baacb949264c7af0b
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2019-06-20 12:01:26 +08:00
Sandy Huang
3145e8695c drm/rockchip: driver: add debug and bandwidth calc function
Change-Id: I6273b05f4a1943000494a54a785bdec43b35cfb3
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2019-06-20 12:01:26 +08:00
Sandy Huang
35c52e2194 drm/rockchip: driver: add support more property
Change-Id: If2cbc617d9346713efaf7dc4dd5c393e8605f91d
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2019-06-20 12:01:26 +08:00
Sandy Huang
8166dc7eb5 arm64: dts: rk3399: update display for rk3399-sapphire-excavator-edp
Change-Id: I6a30a25ce0bd5ace9ea8df3e0d9c1c9d8268ddb0
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2019-06-20 12:01:26 +08:00
Sandy Huang
3250b1136a arm64: dts: rockchip: rk3399: delete set assigned clk for vop aclk and hclk
Change-Id: Iae51005277107b14755d0fd152fe4dbadeae33ce
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2019-06-20 12:01:26 +08:00
Zhixiong Lin
08cb205af1 arm64: dts: rockchip: rk3328: Modify gpu compatible
Mali driver only search the first compatible property.

Change-Id: If21b59d19a50e48a02157f49a6a97d7e71a41e7d
Signed-off-by: Zhixiong Lin <zhixiong.lin@rock-chips.com>
2019-06-20 10:36:04 +08:00
Roman Kiryanov
4a80327652 ANDROID: kernel: cgroup: cpuset: Clear cpus_requested for empty buf
update_cpumask had a special case for empty buf which
did not update cpus_requested. This change reduces
differences (only to parsing) in empty/non-empty codepaths
to make them consistent.

Bug: 120444281
Fixes: 4803def4e0b2 ("ANDROID: cpuset: Make cpusets restore on hotplug")
Test: check that writes to /dev/cpuset/background/tasks
Test: work as expected, e.g.:
Test: echo $$ > /dev/cpuset/background/tasks
Test: echo > /dev/cpuset/background/tasks
Signed-off-by: Roman Kiryanov <rkir@google.com>
Change-Id: I49d320ea046636ec38bd23f053317abc59f64f8e
2019-06-19 09:30:15 -07:00
Roman Kiryanov
1a783057b7 ANDROID: kernel: cgroup: cpuset: Add missing allocation of cpus_requested in alloc_trial_cpuset
alloc_trial_cpuset missed allocation of the alloc_trial_cpuset
field which caused it to be shared from the base cs provided.

Once update_cpumask parsed buf into cpus_requested and updated
cpus_allowed, the result were never written to cs because
cs and trialcs shared the same pointer to cpus_requested and
cpus_requested always matched to itself and no updates were
written. This caused cpus_requested to be non-empty and
cpus_allowed empty.

This issue occurs only with CONFIG_CPUMASK_OFFSTACK enabled
(e.g. via CONFIG_MAXSMP).

Bug: 134051784
Bug: 120444281
Fixes: 4803def4e0b2 ("ANDROID: cpuset: Make cpusets restore on hotplug")
Test: enable CONFIG_CPUSETS, boot and check logcat that
Test: libprocessgroup does not fail with something similar to
Test: AddTidToCgroup failed to write '2354'; fd=93: No space left on device
Signed-off-by: Roman Kiryanov <rkir@google.com>
Change-Id: I866836b5c0acfde8349c250a510ee89d8d37cb8e
2019-06-19 09:30:15 -07:00
Zhixiong Lin
414f9ff2d8 MALI: utgard: Add implementation of mali sync timeline based on CONFIG_SYNC_FILE
Mali sync timeline in Utgard DDK r7p0-00rel1 depends on CONFIG_SYNC.
But, CONFIG_SYNC is no longer supported by kernel v4.19.
This modification is from ARM release:DX910-SW-99002-r9p0-01rel0.tgz

Change-Id: I2f2b36c57132ebc49cc8235b2d071ed6ed540825
Signed-off-by: Zhixiong Lin <zhixiong.lin@rock-chips.com>
2019-06-19 19:56:13 +08:00
Zhixiong Lin
853f921190 arm64: dts: rockchip: rk3328: correct gpu node
Change-Id: I2076871896094deba82f047397c6b03af15bd9a9
Signed-off-by: Zhixiong Lin <zhixiong.lin@rock-chips.com>
2019-06-19 18:35:54 +08:00
Greg Kroah-Hartman
f613e8938d Merge 4.19.53 into android-4.19
Changes in 4.19.53
	drm/nouveau: add kconfig option to turn off nouveau legacy contexts. (v3)
	nouveau: Fix build with CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT disabled
	HID: multitouch: handle faulty Elo touch device
	HID: wacom: Don't set tool type until we're in range
	HID: wacom: Don't report anything prior to the tool entering range
	HID: wacom: Send BTN_TOUCH in response to INTUOSP2_BT eraser contact
	HID: wacom: Correct button numbering 2nd-gen Intuos Pro over Bluetooth
	HID: wacom: Sync INTUOSP2_BT touch state after each frame if necessary
	Revert "ALSA: hda/realtek - Improve the headset mic for Acer Aspire laptops"
	ALSA: oxfw: allow PCM capture for Stanton SCS.1m
	ALSA: hda/realtek - Update headset mode for ALC256
	ALSA: firewire-motu: fix destruction of data for isochronous resources
	libata: Extend quirks for the ST1000LM024 drives with NOLPM quirk
	mm/list_lru.c: fix memory leak in __memcg_init_list_lru_node
	fs/ocfs2: fix race in ocfs2_dentry_attach_lock()
	mm/vmscan.c: fix trying to reclaim unevictable LRU page
	signal/ptrace: Don't leak unitialized kernel memory with PTRACE_PEEK_SIGINFO
	ptrace: restore smp_rmb() in __ptrace_may_access()
	iommu/arm-smmu: Avoid constant zero in TLBI writes
	i2c: acorn: fix i2c warning
	bcache: fix stack corruption by PRECEDING_KEY()
	bcache: only set BCACHE_DEV_WB_RUNNING when cached device attached
	cgroup: Use css_tryget() instead of css_tryget_online() in task_get_css()
	ASoC: cs42xx8: Add regcache mask dirty
	ASoC: fsl_asrc: Fix the issue about unsupported rate
	drm/i915/sdvo: Implement proper HDMI audio support for SDVO
	x86/uaccess, kcov: Disable stack protector
	ALSA: seq: Protect in-kernel ioctl calls with mutex
	ALSA: seq: Fix race of get-subscription call vs port-delete ioctls
	Revert "ALSA: seq: Protect in-kernel ioctl calls with mutex"
	s390/kasan: fix strncpy_from_user kasan checks
	Drivers: misc: fix out-of-bounds access in function param_set_kgdbts_var
	f2fs: fix to avoid accessing xattr across the boundary
	scsi: qedi: remove memset/memcpy to nfunc and use func instead
	scsi: qedi: remove set but not used variables 'cdev' and 'udev'
	scsi: lpfc: correct rcu unlock issue in lpfc_nvme_info_show
	scsi: lpfc: add check for loss of ndlp when sending RRQ
	arm64/mm: Inhibit huge-vmap with ptdump
	nvme: fix srcu locking on error return in nvme_get_ns_from_disk
	nvme: remove the ifdef around nvme_nvm_ioctl
	nvme: merge nvme_ns_ioctl into nvme_ioctl
	nvme: release namespace SRCU protection before performing controller ioctls
	nvme: fix memory leak for power latency tolerance
	platform/x86: pmc_atom: Add Lex 3I380D industrial PC to critclk_systems DMI table
	platform/x86: pmc_atom: Add several Beckhoff Automation boards to critclk_systems DMI table
	scsi: bnx2fc: fix incorrect cast to u64 on shift operation
	libnvdimm: Fix compilation warnings with W=1
	selftests: fib_rule_tests: fix local IPv4 address typo
	selftests/timers: Add missing fflush(stdout) calls
	tracing: Prevent hist_field_var_ref() from accessing NULL tracing_map_elts
	usbnet: ipheth: fix racing condition
	KVM: arm/arm64: Move cc/it checks under hyp's Makefile to avoid instrumentation
	KVM: x86/pmu: mask the result of rdpmc according to the width of the counters
	KVM: x86/pmu: do not mask the value that is written to fixed PMUs
	KVM: s390: fix memory slot handling for KVM_SET_USER_MEMORY_REGION
	tools/kvm_stat: fix fields filter for child events
	drm/vmwgfx: integer underflow in vmw_cmd_dx_set_shader() leading to an invalid read
	drm/vmwgfx: NULL pointer dereference from vmw_cmd_dx_view_define()
	usb: dwc2: Fix DMA cache alignment issues
	usb: dwc2: host: Fix wMaxPacketSize handling (fix webcam regression)
	USB: Fix chipmunk-like voice when using Logitech C270 for recording audio.
	USB: usb-storage: Add new ID to ums-realtek
	USB: serial: pl2303: add Allied Telesis VT-Kit3
	USB: serial: option: add support for Simcom SIM7500/SIM7600 RNDIS mode
	USB: serial: option: add Telit 0x1260 and 0x1261 compositions
	timekeeping: Repair ktime_get_coarse*() granularity
	RAS/CEC: Convert the timer callback to a workqueue
	RAS/CEC: Fix binary search function
	x86/microcode, cpuhotplug: Add a microcode loader CPU hotplug callback
	x86/kasan: Fix boot with 5-level paging and KASAN
	x86/mm/KASLR: Compute the size of the vmemmap section properly
	x86/resctrl: Prevent NULL pointer dereference when local MBM is disabled
	drm/edid: abstract override/firmware EDID retrieval
	drm: add fallback override/firmware EDID modes workaround
	rtc: pcf8523: don't return invalid date when battery is low
	Linux 4.19.53

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2019-06-19 10:10:24 +02:00
Zhixiong Lin
3b4356fdb4 MALI: utgard: adapter 4.19 timmer and memory interface
Change-Id: Ic5dc26292ee350aaa138409447bf5501ad0e316d
Signed-off-by: Zhixiong Lin <zhixiong.lin@rock-chips.com>
2019-06-19 14:32:47 +08:00
Greg Kroah-Hartman
9f31eb60d7 Linux 4.19.53 2019-06-19 08:18:07 +02:00
Baruch Siach
90fc261d50 rtc: pcf8523: don't return invalid date when battery is low
commit ecb4a353d3 upstream.

The RTC_VL_READ ioctl reports the low battery condition. Still,
pcf8523_rtc_read_time() happily returns invalid dates in this case.
Check the battery health on pcf8523_rtc_read_time() to avoid that.

Reported-by: Erik Čuk <erik.cuk@domel.com>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-06-19 08:18:07 +02:00
Jani Nikula
04757d0e37 drm: add fallback override/firmware EDID modes workaround
commit 48eaeb7664 upstream.

We've moved the override and firmware EDID (simply "override EDID" from
now on) handling to the low level drm_do_get_edid() function in order to
transparently use the override throughout the stack. The idea is that
you get the override EDID via the ->get_modes() hook.

Unfortunately, there are scenarios where the DDC probe in drm_get_edid()
called via ->get_modes() fails, although the preceding ->detect()
succeeds.

In the case reported by Paul Wise, the ->detect() hook,
intel_crt_detect(), relies on hotplug detect, bypassing the DDC. In the
case reported by Ilpo Järvinen, there is no ->detect() hook, which is
interpreted as connected. The subsequent DDC probe reached via
->get_modes() fails, and we don't even look at the override EDID,
resulting in no modes being added.

Because drm_get_edid() is used via ->detect() all over the place, we
can't trivially remove the DDC probe, as it leads to override EDID
effectively meaning connector forcing. The goal is that connector
forcing and override EDID remain orthogonal.

Generally, the underlying problem here is the conflation of ->detect()
and ->get_modes() via drm_get_edid(). The former should just detect, and
the latter should just get the modes, typically via reading the EDID. As
long as drm_get_edid() is used in ->detect(), it needs to retain the DDC
probe. Or such users need to have a separate DDC probe step first.

The EDID caching between ->detect() and ->get_modes() done by some
drivers is a further complication that prevents us from making
drm_do_get_edid() adapt to the two cases.

Work around the regression by falling back to a separate attempt at
getting the override EDID at drm_helper_probe_single_connector_modes()
level. With a working DDC and override EDID, it'll never be called; the
override EDID will come via ->get_modes(). There will still be a failing
DDC probe attempt in the cases that require the fallback.

v2:
- Call drm_connector_update_edid_property (Paul)
- Update commit message about EDID caching (Daniel)

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107583
Reported-by: Paul Wise <pabs3@bonedaddy.net>
Cc: Paul Wise <pabs3@bonedaddy.net>
References: http://mid.mail-archive.com/alpine.DEB.2.20.1905262211270.24390@whs-18.cs.helsinki.fi
Reported-by: Ilpo Järvinen <ilpo.jarvinen@cs.helsinki.fi>
Cc: Ilpo Järvinen <ilpo.jarvinen@cs.helsinki.fi>
Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch>
References: 15f080f08d ("drm/edid: respect connector force for drm_get_edid ddc probe")
Fixes: 53fd40a90f ("drm: handle override and firmware EDID at drm_do_get_edid() level")
Cc: <stable@vger.kernel.org> # v4.15+ 56a2b7f2a3 drm/edid: abstract override/firmware EDID retrieval
Cc: <stable@vger.kernel.org> # v4.15+
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Harish Chegondi <harish.chegondi@intel.com>
Tested-by: Paul Wise <pabs3@bonedaddy.net>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190610093054.28445-1-jani.nikula@intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-06-19 08:18:07 +02:00
Jani Nikula
29a6026624 drm/edid: abstract override/firmware EDID retrieval
commit 56a2b7f2a3 upstream.

Abstract the debugfs override and the firmware EDID retrieval
function. We'll be needing it in the follow-up. No functional changes.

Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Harish Chegondi <harish.chegondi@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Tested-by: Tested-by: Paul Wise <pabs3@bonedaddy.net>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190607110513.12072-1-jani.nikula@intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-06-19 08:18:07 +02:00
Prarit Bhargava
e93ce57f60 x86/resctrl: Prevent NULL pointer dereference when local MBM is disabled
commit c7563e62a6 upstream.

Booting with kernel parameter "rdt=cmt,mbmtotal,memlocal,l3cat,mba" and
executing "mount -t resctrl resctrl -o mba_MBps /sys/fs/resctrl" results in
a NULL pointer dereference on systems which do not have local MBM support
enabled..

BUG: kernel NULL pointer dereference, address: 0000000000000020
PGD 0 P4D 0
Oops: 0000 [#1] SMP PTI
CPU: 0 PID: 722 Comm: kworker/0:3 Not tainted 5.2.0-0.rc3.git0.1.el7_UNSUPPORTED.x86_64 #2
Workqueue: events mbm_handle_overflow
RIP: 0010:mbm_handle_overflow+0x150/0x2b0

Only enter the bandwith update loop if the system has local MBM enabled.

Fixes: de73f38f76 ("x86/intel_rdt/mba_sc: Feedback loop to dynamically update mem bandwidth")
Signed-off-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Reinette Chatre <reinette.chatre@intel.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/20190610171544.13474-1-prarit@redhat.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-06-19 08:18:07 +02:00
Baoquan He
0257fc9aa5 x86/mm/KASLR: Compute the size of the vmemmap section properly
commit 00e5a2bbcc upstream.

The size of the vmemmap section is hardcoded to 1 TB to support the
maximum amount of system RAM in 4-level paging mode - 64 TB.

However, 1 TB is not enough for vmemmap in 5-level paging mode. Assuming
the size of struct page is 64 Bytes, to support 4 PB system RAM in 5-level,
64 TB of vmemmap area is needed:

  4 * 1000^5 PB / 4096 bytes page size * 64 bytes per page struct / 1000^4 TB = 62.5 TB.

This hardcoding may cause vmemmap to corrupt the following
cpu_entry_area section, if KASLR puts vmemmap very close to it and the
actual vmemmap size is bigger than 1 TB.

So calculate the actual size of the vmemmap region needed and then align
it up to 1 TB boundary.

In 4-level paging mode it is always 1 TB. In 5-level it's adjusted on
demand. The current code reserves 0.5 PB for vmemmap on 5-level. With
this change, the space can be saved and thus used to increase entropy
for the randomization.

 [ bp: Spell out how the 64 TB needed for vmemmap is computed and massage commit
   message. ]

Fixes: eedb92abb9 ("x86/mm: Make virtual memory layout dynamic for CONFIG_X86_5LEVEL=y")
Signed-off-by: Baoquan He <bhe@redhat.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Kees Cook <keescook@chromium.org>
Acked-by: Kirill A. Shutemov <kirill@linux.intel.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: kirill.shutemov@linux.intel.com
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: stable <stable@vger.kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: x86-ml <x86@kernel.org>
Link: https://lkml.kernel.org/r/20190523025744.3756-1-bhe@redhat.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-06-19 08:18:07 +02:00
Andrey Ryabinin
5e3d10d937 x86/kasan: Fix boot with 5-level paging and KASAN
commit f3176ec942 upstream.

Since commit d52888aa27 ("x86/mm: Move LDT remap out of KASLR region on
5-level paging") kernel doesn't boot with KASAN on 5-level paging machines.
The bug is actually in early_p4d_offset() and introduced by commit
12a8cc7fcf ("x86/kasan: Use the same shadow offset for 4- and 5-level paging")

early_p4d_offset() tries to convert pgd_val(*pgd) value to a physical
address. This doesn't make sense because pgd_val() already contains the
physical address.

It did work prior to commit d52888aa27 because the result of
"__pa_nodebug(pgd_val(*pgd)) & PTE_PFN_MASK" was the same as "pgd_val(*pgd)
& PTE_PFN_MASK". __pa_nodebug() just set some high bits which were masked
out by applying PTE_PFN_MASK.

After the change of the PAGE_OFFSET offset in commit d52888aa27
__pa_nodebug(pgd_val(*pgd)) started to return a value with more high bits
set and PTE_PFN_MASK wasn't enough to mask out all of them. So it returns a
wrong not even canonical address and crashes on the attempt to dereference
it.

Switch back to pgd_val() & PTE_PFN_MASK to cure the issue.

Fixes: 12a8cc7fcf ("x86/kasan: Use the same shadow offset for 4- and 5-level paging")
Reported-by: Kirill A. Shutemov <kirill@shutemov.name>
Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Borislav Petkov <bp@alien8.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: kasan-dev@googlegroups.com
Cc: stable@vger.kernel.org
Cc: <stable@vger.kernel.org>
Link: https://lkml.kernel.org/r/20190614143149.2227-1-aryabinin@virtuozzo.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-06-19 08:18:06 +02:00
Borislav Petkov
ecec31ce4f x86/microcode, cpuhotplug: Add a microcode loader CPU hotplug callback
commit 78f4e932f7 upstream.

Adric Blake reported the following warning during suspend-resume:

  Enabling non-boot CPUs ...
  x86: Booting SMP configuration:
  smpboot: Booting Node 0 Processor 1 APIC 0x2
  unchecked MSR access error: WRMSR to 0x10f (tried to write 0x0000000000000000) \
   at rIP: 0xffffffff8d267924 (native_write_msr+0x4/0x20)
  Call Trace:
   intel_set_tfa
   intel_pmu_cpu_starting
   ? x86_pmu_dead_cpu
   x86_pmu_starting_cpu
   cpuhp_invoke_callback
   ? _raw_spin_lock_irqsave
   notify_cpu_starting
   start_secondary
   secondary_startup_64
  microcode: sig=0x806ea, pf=0x80, revision=0x96
  microcode: updated to revision 0xb4, date = 2019-04-01
  CPU1 is up

The MSR in question is MSR_TFA_RTM_FORCE_ABORT and that MSR is emulated
by microcode. The log above shows that the microcode loader callback
happens after the PMU restoration, leading to the conjecture that
because the microcode hasn't been updated yet, that MSR is not present
yet, leading to the #GP.

Add a microcode loader-specific hotplug vector which comes before
the PERF vectors and thus executes earlier and makes sure the MSR is
present.

Fixes: 400816f60c ("perf/x86/intel: Implement support for TSX Force Abort")
Reported-by: Adric Blake <promarbler14@gmail.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: <stable@vger.kernel.org>
Cc: x86@kernel.org
Link: https://bugzilla.kernel.org/show_bug.cgi?id=203637
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-06-19 08:18:06 +02:00