This is the start of the stable review cycle for the 4.14.23 release.
There are 54 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.23-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 4.14.23-rc1
Chris Wilson <[email protected]>
drm/i915/breadcrumbs: Ignore unsubmitted signalers
Kai-Heng Feng <[email protected]>
drm/amdgpu: add new device to use atpx quirk
Alex Deucher <[email protected]>
drm/amdgpu: Avoid leaking PM domain on driver unbind (v2)
Alex Deucher <[email protected]>
drm/amdgpu: add atpx quirk handling (v2)
Alex Deucher <[email protected]>
drm/amdgpu: only check mmBIF_IOV_FUNC_IDENTIFIER on tonga/fiji
Alex Deucher <[email protected]>
drm/amdgpu: Add dpm quirk for Jet PRO (v2)
Huang Rui <[email protected]>
drm/amdgpu: disable MMHUB power gating on raven
Chris Wilson <[email protected]>
drm: Handle unexpected holes in color-eviction
Daniel Vetter <[email protected]>
drm/cirrus: Load lut in crtc_commit
Yoshihiro Shimoda <[email protected]>
usb: renesas_usbhs: missed the "running" flag in usb_dmac with rx path
Jack Pham <[email protected]>
usb: gadget: f_fs: Use config_ep_by_speed()
Jack Pham <[email protected]>
usb: gadget: f_fs: Process all descriptors during bind
Bin Liu <[email protected]>
Revert "usb: musb: host: don't start next rx urb if current one failed"
Karsten Koop <[email protected]>
usb: ldusb: add PIDs for new CASSY devices supported by this driver
Thinh Nguyen <[email protected]>
usb: dwc3: ep0: Reset TRB counter for ep0 IN
Thinh Nguyen <[email protected]>
usb: dwc3: gadget: Set maxpacket size for ep0 IN
Peter Chen <[email protected]>
usb: host: ehci: use correct device pointer for dma ops
Kai-Heng Feng <[email protected]>
drm/edid: Add 6 bpc quirk for CPT panel in Asus UX303LA
Jack Stocker <[email protected]>
Add delay-init quirk for Corsair K70 RGB keyboards
Will Deacon <[email protected]>
arm64: cpufeature: Fix CTR_EL0 field definitions
Michael Weiser <[email protected]>
arm64: Disable unhandled signal log messages by default
Michael Weiser <[email protected]>
arm64: Remove unimplemented syscall log message
AMAN DEEP <[email protected]>
usb: ohci: Proper handling of ed_rm_list to handle race condition between usb_kill_urb() and finish_unlinks()
Shigeru Yoshida <[email protected]>
ohci-hcd: Fix race condition caused by ohci_urb_enqueue() and io_watchdog_func()
Casey Leedom <[email protected]>
PCI/cxgb4: Extend T3 PCI quirk to T4+ devices
Matt Redfearn <[email protected]>
irqchip/mips-gic: Avoid spuriously handling masked interrupts
Shanker Donthineni <[email protected]>
irqchip/gic-v3: Use wmb() instead of smb_wmb() in gic_raise_softirq()
Huang Ying <[email protected]>
mm, swap, frontswap: fix THP swap if frontswap enabled
Arnd Bergmann <[email protected]>
x86/oprofile: Fix bogus GCC-8 warning in nmi_setup()
Arnd Bergmann <[email protected]>
Kbuild: always define endianess in kconfig.h
Lars-Peter Clausen <[email protected]>
iio: adis_lib: Initialize trigger before requesting interrupt
Stefan Windfeldt-Prytz <[email protected]>
iio: buffer: check if a buffer has been set up when poll is called
Andreas Klinger <[email protected]>
iio: srf08: fix link error "devm_iio_triggered_buffer_setup" undefined
Fabrice Gasnier <[email protected]>
iio: adc: stm32: fix stm32h7_adc_enable error handling
Leon Romanovsky <[email protected]>
RDMA/uverbs: Sanitize user entered port numbers prior to access it
Leon Romanovsky <[email protected]>
RDMA/uverbs: Fix circular locking dependency
Leon Romanovsky <[email protected]>
RDMA/uverbs: Fix bad unlock balance in ib_uverbs_close_xrcd
Leon Romanovsky <[email protected]>
RDMA/uverbs: Protect from command mask overflow
Leon Romanovsky <[email protected]>
RDMA/uverbs: Protect from races between lookup and destroy of uobjects
Hans de Goede <[email protected]>
extcon: int3496: process id-pin first so that we start with the right status
Eric Biggers <[email protected]>
PKCS#7: fix certificate blacklisting
Eric Biggers <[email protected]>
PKCS#7: fix certificate chain verification
Eric Biggers <[email protected]>
X.509: fix NULL dereference when restricting key with unsupported_sig
Eric Biggers <[email protected]>
X.509: fix BUG_ON() when hash algorithm is unsupported
Eric Anholt <[email protected]>
i2c: bcm2835: Set up the rising/falling edge delays
Ben Gardner <[email protected]>
i2c: designware: must wait for enable
Arnd Bergmann <[email protected]>
cfg80211: fix cfg80211_beacon_dup
James Hogan <[email protected]>
MIPS: Drop spurious __unused in struct compat_flock
Tyrel Datwyler <[email protected]>
scsi: ibmvfc: fix misdefined reserved field in ibmvfc_fcp_rsp_info
Max Filippov <[email protected]>
xtensa: fix high memory/reserved memory collision
Kees Cook <[email protected]>
MIPS: boot: Define __ASSEMBLY__ for its.S build
Kees Cook <[email protected]>
kconfig.h: Include compiler types to avoid missed struct attributes
Ard Biesheuvel <[email protected]>
arm64: mm: don't write garbage into TTBR1_EL1 register
Paolo Abeni <[email protected]>
netfilter: drop outermost socket lock in getsockopt()
-------------
Diffstat:
Makefile | 4 +-
arch/arm64/kernel/cpufeature.c | 6 +-
arch/arm64/kernel/traps.c | 10 +---
arch/arm64/mm/proc.S | 2 +-
arch/mips/boot/Makefile | 1 +
arch/mips/include/asm/compat.h | 1 -
arch/x86/oprofile/nmi_int.c | 2 +-
arch/xtensa/mm/init.c | 70 +++++++++++++++++++++---
crypto/asymmetric_keys/pkcs7_verify.c | 12 ++--
crypto/asymmetric_keys/public_key.c | 4 +-
crypto/asymmetric_keys/restrict.c | 21 ++++---
drivers/extcon/extcon-intel-int3496.c | 3 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c | 58 +++++++++++++++++---
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 -
drivers/gpu/drm/amd/amdgpu/si_dpm.c | 5 ++
drivers/gpu/drm/amd/amdgpu/soc15.c | 4 +-
drivers/gpu/drm/amd/amdgpu/vi.c | 21 ++++---
drivers/gpu/drm/cirrus/cirrus_mode.c | 40 ++++++++------
drivers/gpu/drm/drm_edid.c | 3 +
drivers/gpu/drm/drm_mm.c | 21 ++++++-
drivers/gpu/drm/i915/intel_breadcrumbs.c | 29 ++++------
drivers/hid/hid-core.c | 3 +
drivers/hid/hid-ids.h | 3 +
drivers/i2c/busses/i2c-bcm2835.c | 21 ++++++-
drivers/i2c/busses/i2c-designware-master.c | 2 +-
drivers/iio/adc/stm32-adc.c | 7 ++-
drivers/iio/imu/adis_trigger.c | 7 ++-
drivers/iio/industrialio-buffer.c | 2 +-
drivers/iio/proximity/Kconfig | 2 +
drivers/infiniband/core/rdma_core.c | 10 +++-
drivers/infiniband/core/uverbs_cmd.c | 16 ++++--
drivers/infiniband/core/uverbs_main.c | 27 ++++++---
drivers/irqchip/irq-gic-v3.c | 2 +-
drivers/irqchip/irq-mips-gic.c | 2 -
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 10 ----
drivers/pci/quirks.c | 39 +++++++------
drivers/scsi/ibmvscsi/ibmvfc.h | 2 +-
drivers/usb/core/quirks.c | 3 +
drivers/usb/dwc3/ep0.c | 7 ++-
drivers/usb/dwc3/gadget.c | 2 +
drivers/usb/gadget/function/f_fs.c | 44 +++------------
drivers/usb/host/ehci-hub.c | 4 +-
drivers/usb/host/ohci-hcd.c | 10 +++-
drivers/usb/host/ohci-hub.c | 4 +-
drivers/usb/host/ohci-q.c | 17 +++---
drivers/usb/misc/ldusb.c | 6 ++
drivers/usb/musb/musb_host.c | 8 +--
drivers/usb/renesas_usbhs/fifo.c | 5 ++
drivers/xen/tmem.c | 4 ++
include/linux/kconfig.h | 9 +++
mm/zswap.c | 6 ++
net/ipv4/ip_sockglue.c | 7 +--
net/ipv6/ipv6_sockglue.c | 10 +---
net/mac80211/cfg.c | 2 +-
54 files changed, 403 insertions(+), 219 deletions(-)
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <[email protected]>
commit 0434352d3d2e950cf5e743f6062abd87de22f960 upstream.
Some other drivers may be waiting for our extcon to show-up, exiting their
probe methods with -EPROBE_DEFER until we show up.
These drivers will typically get the cable state directly after getting
the extcon, this commit changes the int3496 code to wait for the initial
processing of the id-pin to complete before exiting probe() with 0, which
will cause devices waiting on the defered probe to get reprobed.
This fixes a race where the initial work might still be running while other
drivers were already calling extcon_get_state().
Fixes: 2f556bdb9f2e ("extcon: int3496: Add Intel INT3496 ACPI ... driver")
Cc: [email protected]
Signed-off-by: Hans de Goede <[email protected]>
Signed-off-by: Chanwoo Choi <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/extcon/extcon-intel-int3496.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/drivers/extcon/extcon-intel-int3496.c
+++ b/drivers/extcon/extcon-intel-int3496.c
@@ -153,8 +153,9 @@ static int int3496_probe(struct platform
return ret;
}
- /* queue initial processing of id-pin */
+ /* process id-pin so that we start with the right status */
queue_delayed_work(system_wq, &data->work, 0);
+ flush_delayed_work(&data->work);
platform_set_drvdata(pdev, data);
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Matt Redfearn <[email protected]>
commit 285cb4f62319737e6538252cf1a67ce9da5cf3d5 upstream.
Commit 7778c4b27cbe ("irqchip: mips-gic: Use pcpu_masks to avoid reading
GIC_SH_MASK*") removed the read of the hardware mask register when
handling shared interrupts, instead using the driver's shadow pcpu_masks
entry as the effective mask. Unfortunately this did not take account of
the write to pcpu_masks during gic_shared_irq_domain_map, which
effectively unmasks the interrupt early. If an interrupt is asserted,
gic_handle_shared_int decodes and processes the interrupt even though it
has not yet been unmasked via gic_unmask_irq, which also sets the
appropriate bit in pcpu_masks.
On the MIPS Boston board, when a console command line of
"console=ttyS0,115200n8r" is passed, the modem status IRQ is enabled in
the UART, which is immediately raised to the GIC. The interrupt has been
mapped, but no handler has yet been registered, nor is it expected to be
unmasked. However, the write to pcpu_masks in gic_shared_irq_domain_map
has effectively unmasked it, resulting in endless reports of:
[ 5.058454] irq 13, desc: ffffffff80a7ad80, depth: 1, count: 0, unhandled: 0
[ 5.062057] ->handle_irq(): ffffffff801b1838,
[ 5.062175] handle_bad_irq+0x0/0x2c0
Where IRQ 13 is the UART interrupt.
To fix this, just remove the write to pcpu_masks in
gic_shared_irq_domain_map. The existing write in gic_unmask_irq is the
correct place for what is now the effective unmasking.
Cc: [email protected]
Fixes: 7778c4b27cbe ("irqchip: mips-gic: Use pcpu_masks to avoid reading GIC_SH_MASK*")
Signed-off-by: Matt Redfearn <[email protected]>
Reviewed-by: Paul Burton <[email protected]>
Signed-off-by: Marc Zyngier <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/irqchip/irq-mips-gic.c | 2 --
1 file changed, 2 deletions(-)
--- a/drivers/irqchip/irq-mips-gic.c
+++ b/drivers/irqchip/irq-mips-gic.c
@@ -427,8 +427,6 @@ static int gic_shared_irq_domain_map(str
spin_lock_irqsave(&gic_lock, flags);
write_gic_map_pin(intr, GIC_MAP_PIN_MAP_TO_PIN | gic_cpu_pin);
write_gic_map_vp(intr, BIT(mips_cm_vp_id(cpu)));
- gic_clear_pcpu_masks(intr);
- set_bit(intr, per_cpu_ptr(pcpu_masks, cpu));
irq_data_update_effective_affinity(data, cpumask_of(cpu));
spin_unlock_irqrestore(&gic_lock, flags);
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: James Hogan <[email protected]>
commit 6ae1756faddefd7494353380ee546dd38c2f97eb upstream.
MIPS' struct compat_flock doesn't match the 32-bit struct flock, as it
has an extra short __unused before pad[4], which combined with alignment
increases the size to 40 bytes compared with struct flock's 36 bytes.
Since commit 8c6657cb50cb ("Switch flock copyin/copyout primitives to
copy_{from,to}_user()"), put_compat_flock() writes the full compat_flock
struct to userland, which results in corruption of the userland word
after the struct flock when running 32-bit userlands on 64-bit kernels.
This was observed to cause a bus error exception when starting Firefox
on Debian 8 (Jessie).
Reported-by: Peter Mamonov <[email protected]>
Signed-off-by: James Hogan <[email protected]>
Tested-by: Peter Mamonov <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: Al Viro <[email protected]>
Cc: [email protected]
Cc: <[email protected]> # 4.13+
Patchwork: https://patchwork.linux-mips.org/patch/18646/
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
arch/mips/include/asm/compat.h | 1 -
1 file changed, 1 deletion(-)
--- a/arch/mips/include/asm/compat.h
+++ b/arch/mips/include/asm/compat.h
@@ -86,7 +86,6 @@ struct compat_flock {
compat_off_t l_len;
s32 l_sysid;
compat_pid_t l_pid;
- short __unused;
s32 pad[4];
};
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arnd Bergmann <[email protected]>
commit 101110f6271ce956a049250c907bc960030577f8 upstream.
Build testing with LTO found a couple of files that get compiled
differently depending on whether asm/byteorder.h gets included early
enough or not. In particular, include/asm-generic/qrwlock_types.h is
affected by this, but there are probably others as well.
The symptom is a series of LTO link time warnings, including these:
net/netlabel/netlabel_unlabeled.h:223: error: type of 'netlbl_unlhsh_add' does not match original declaration [-Werror=lto-type-mismatch]
int netlbl_unlhsh_add(struct net *net,
net/netlabel/netlabel_unlabeled.c:377: note: 'netlbl_unlhsh_add' was previously declared here
include/net/ipv6.h:360: error: type of 'ipv6_renew_options_kern' does not match original declaration [-Werror=lto-type-mismatch]
ipv6_renew_options_kern(struct sock *sk,
net/ipv6/exthdrs.c:1162: note: 'ipv6_renew_options_kern' was previously declared here
net/core/dev.c:761: note: 'dev_get_by_name_rcu' was previously declared here
struct net_device *dev_get_by_name_rcu(struct net *net, const char *name)
net/core/dev.c:761: note: code may be misoptimized unless -fno-strict-aliasing is used
drivers/gpu/drm/i915/i915_drv.h:3377: error: type of 'i915_gem_object_set_to_wc_domain' does not match original declaration [-Werror=lto-type-mismatch]
i915_gem_object_set_to_wc_domain(struct drm_i915_gem_object *obj, bool write);
drivers/gpu/drm/i915/i915_gem.c:3639: note: 'i915_gem_object_set_to_wc_domain' was previously declared here
include/linux/debugfs.h:92:9: error: type of 'debugfs_attr_read' does not match original declaration [-Werror=lto-type-mismatch]
ssize_t debugfs_attr_read(struct file *file, char __user *buf,
fs/debugfs/file.c:318: note: 'debugfs_attr_read' was previously declared here
include/linux/rwlock_api_smp.h:30: error: type of '_raw_read_unlock' does not match original declaration [-Werror=lto-type-mismatch]
void __lockfunc _raw_read_unlock(rwlock_t *lock) __releases(lock);
kernel/locking/spinlock.c:246:26: note: '_raw_read_unlock' was previously declared here
include/linux/fs.h:3308:5: error: type of 'simple_attr_open' does not match original declaration [-Werror=lto-type-mismatch]
int simple_attr_open(struct inode *inode, struct file *file,
fs/libfs.c:795: note: 'simple_attr_open' was previously declared here
All of the above are caused by include/asm-generic/qrwlock_types.h
failing to include asm/byteorder.h after commit e0d02285f16e
("locking/qrwlock: Use 'struct qrwlock' instead of 'struct __qrwlock'")
in linux-4.15.
Similar bugs may or may not exist in older kernels as well, but there is
no easy way to test those with link-time optimizations, and kernels
before 4.14 are harder to fix because they don't have Babu's patch
series
We had similar issues with CONFIG_ symbols in the past and ended up
always including the configuration headers though linux/kconfig.h. This
works around the issue through that same file, defining either
__BIG_ENDIAN or __LITTLE_ENDIAN depending on CONFIG_CPU_BIG_ENDIAN,
which is now always set on all architectures since commit 4c97a0c8fee3
("arch: define CPU_BIG_ENDIAN for all fixed big endian archs").
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnd Bergmann <[email protected]>
Cc: Babu Moger <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Masahiro Yamada <[email protected]>
Cc: Nicolas Pitre <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
include/linux/kconfig.h | 6 ++++++
1 file changed, 6 insertions(+)
--- a/include/linux/kconfig.h
+++ b/include/linux/kconfig.h
@@ -4,6 +4,12 @@
#include <generated/autoconf.h>
+#ifdef CONFIG_CPU_BIG_ENDIAN
+#define __BIG_ENDIAN 4321
+#else
+#define __LITTLE_ENDIAN 1234
+#endif
+
#define __ARG_PLACEHOLDER_1 0,
#define __take_second_arg(__ignored, val, ...) val
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Huang Rui <[email protected]>
commit 400b6afbaa949914460e5fd1d769c5e26ef1f6b8 upstream.
MMHUB power gating still has issue, and doesn't work on raven at current. So
disable it for the moment.
Signed-off-by: Huang Rui <[email protected]>
Acked-by: Hawking Zhang <[email protected]>
Acked-by: Alex Deucher <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Cc: [email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/gpu/drm/amd/amdgpu/soc15.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/gpu/drm/amd/amdgpu/soc15.c
+++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
@@ -661,8 +661,8 @@ static int soc15_common_early_init(void
AMD_CG_SUPPORT_MC_LS |
AMD_CG_SUPPORT_SDMA_MGCG |
AMD_CG_SUPPORT_SDMA_LS;
- adev->pg_flags = AMD_PG_SUPPORT_SDMA |
- AMD_PG_SUPPORT_MMHUB;
+ adev->pg_flags = AMD_PG_SUPPORT_SDMA;
+
adev->external_rev_id = 0x1;
break;
default:
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Deucher <[email protected]>
commit 458d876eb869d5a88b53074c6c271b8b9adc0f07 upstream.
We only support vga_switcheroo and runtime pm on PX/HG systems
so forcing runpm to 1 doesn't do anything useful anyway.
Only call vga_switcheroo_init_domain_pm_ops() for PX/HG so
that the cleanup path is correct as well. This mirrors what
radeon does as well.
v2: rework the patch originally sent by Lukas (Alex)
Acked-by: Lukas Wunner <[email protected]>
Reported-by: Lukas Wunner <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Signed-off-by: Lukas Wunner <[email protected]> (v1)
Cc: [email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 --
1 file changed, 2 deletions(-)
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -2076,8 +2076,6 @@ int amdgpu_device_init(struct amdgpu_dev
* ignore it */
vga_client_register(adev->pdev, adev, NULL, amdgpu_vga_set_decode);
- if (amdgpu_runtime_pm == 1)
- runtime = true;
if (amdgpu_device_is_px(ddev))
runtime = true;
if (!pci_is_thunderbolt_attached(adev->pdev))
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jack Stocker <[email protected]>
commit 7a1646d922577b5b48c0d222e03831141664bb59 upstream.
Following on from this patch: https://lkml.org/lkml/2017/11/3/516,
Corsair K70 RGB keyboards also require the DELAY_INIT quirk to
start correctly at boot.
Device ids found here:
usb 3-3: New USB device found, idVendor=1b1c, idProduct=1b13
usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-3: Product: Corsair K70 RGB Gaming Keyboard
Signed-off-by: Jack Stocker <[email protected]>
Cc: stable <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/core/quirks.c | 3 +++
1 file changed, 3 insertions(+)
--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
@@ -225,6 +225,9 @@ static const struct usb_device_id usb_qu
{ USB_DEVICE(0x1a0a, 0x0200), .driver_info =
USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL },
+ /* Corsair K70 RGB */
+ { USB_DEVICE(0x1b1c, 0x1b13), .driver_info = USB_QUIRK_DELAY_INIT },
+
/* Corsair Strafe RGB */
{ USB_DEVICE(0x1b1c, 0x1b20), .driver_info = USB_QUIRK_DELAY_INIT },
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Deucher <[email protected]>
commit 57ad33a307bf85cafda3a77c03a555c9f9ee4139 upstream.
We only support SR-IOV on tonga/fiji. Don't check this register
on other VI parts.
Fixes: 048765ad5af7c89 (amdgpu: fix asic initialization for virtualized environments (v2))
Reviewed-by: Xiangliang Yu <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Cc: [email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/gpu/drm/amd/amdgpu/vi.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
--- a/drivers/gpu/drm/amd/amdgpu/vi.c
+++ b/drivers/gpu/drm/amd/amdgpu/vi.c
@@ -448,14 +448,19 @@ static bool vi_read_bios_from_rom(struct
static void vi_detect_hw_virtualization(struct amdgpu_device *adev)
{
- uint32_t reg = RREG32(mmBIF_IOV_FUNC_IDENTIFIER);
- /* bit0: 0 means pf and 1 means vf */
- /* bit31: 0 means disable IOV and 1 means enable */
- if (reg & 1)
- adev->virt.caps |= AMDGPU_SRIOV_CAPS_IS_VF;
+ uint32_t reg = 0;
- if (reg & 0x80000000)
- adev->virt.caps |= AMDGPU_SRIOV_CAPS_ENABLE_IOV;
+ if (adev->asic_type == CHIP_TONGA ||
+ adev->asic_type == CHIP_FIJI) {
+ reg = RREG32(mmBIF_IOV_FUNC_IDENTIFIER);
+ /* bit0: 0 means pf and 1 means vf */
+ /* bit31: 0 means disable IOV and 1 means enable */
+ if (reg & 1)
+ adev->virt.caps |= AMDGPU_SRIOV_CAPS_IS_VF;
+
+ if (reg & 0x80000000)
+ adev->virt.caps |= AMDGPU_SRIOV_CAPS_ENABLE_IOV;
+ }
if (reg == 0) {
if (is_virtual_machine()) /* passthrough mode exclus sr-iov mode */
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jack Pham <[email protected]>
commit 6cf439e0d37463e42784271179c8a308fd7493c6 upstream.
During _ffs_func_bind(), the received descriptors are evaluated
to prepare for binding with the gadget in order to allocate
endpoints and optionally set up OS descriptors. However, the
high- and super-speed descriptors are only parsed based on
whether the gadget_is_dualspeed() and gadget_is_superspeed()
calls are true, respectively.
This is a problem in case a userspace program always provides
all of the {full,high,super,OS} descriptors when configuring a
function. Then, for example if a gadget device is not capable
of SuperSpeed, the call to ffs_do_descs() for the SS descriptors
is skipped, resulting in an incorrect offset calculation for
the vla_ptr when moving on to the OS descriptors that follow.
This causes ffs_do_os_descs() to fail as it is now looking at
the SS descriptors' offset within the raw_descs buffer instead.
_ffs_func_bind() should evaluate the descriptors unconditionally,
so remove the checks for gadget speed.
Fixes: f0175ab51993 ("usb: gadget: f_fs: OS descriptors support")
Cc: [email protected]
Co-Developed-by: Mayank Rana <[email protected]>
Signed-off-by: Mayank Rana <[email protected]>
Signed-off-by: Jack Pham <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/gadget/function/f_fs.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -2980,10 +2980,8 @@ static int _ffs_func_bind(struct usb_con
struct ffs_data *ffs = func->ffs;
const int full = !!func->ffs->fs_descs_count;
- const int high = gadget_is_dualspeed(func->gadget) &&
- func->ffs->hs_descs_count;
- const int super = gadget_is_superspeed(func->gadget) &&
- func->ffs->ss_descs_count;
+ const int high = !!func->ffs->hs_descs_count;
+ const int super = !!func->ffs->ss_descs_count;
int fs_len, hs_len, ss_len, ret, i;
struct ffs_ep *eps_ptr;
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michael Weiser <[email protected]>
commit 5ee39a71fd89ab7240c5339d04161c44a8e03269 upstream.
aarch64 unhandled signal kernel messages are very verbose, suggesting
them to be more of a debugging aid:
sigsegv[33]: unhandled level 2 translation fault (11) at 0x00000000, esr
0x92000046, in sigsegv[400000+71000]
CPU: 1 PID: 33 Comm: sigsegv Tainted: G W 4.15.0-rc3+ #3
Hardware name: linux,dummy-virt (DT)
pstate: 60000000 (nZCv daif -PAN -UAO)
pc : 0x4003f4
lr : 0x4006bc
sp : 0000fffffe94a060
x29: 0000fffffe94a070 x28: 0000000000000000
x27: 0000000000000000 x26: 0000000000000000
x25: 0000000000000000 x24: 00000000004001b0
x23: 0000000000486ac8 x22: 00000000004001c8
x21: 0000000000000000 x20: 0000000000400be8
x19: 0000000000400b30 x18: 0000000000484728
x17: 000000000865ffc8 x16: 000000000000270f
x15: 00000000000000b0 x14: 0000000000000002
x13: 0000000000000001 x12: 0000000000000000
x11: 0000000000000000 x10: 0008000020008008
x9 : 000000000000000f x8 : ffffffffffffffff
x7 : 0004000000000000 x6 : ffffffffffffffff
x5 : 0000000000000000 x4 : 0000000000000000
x3 : 00000000004003e4 x2 : 0000fffffe94a1e8
x1 : 000000000000000a x0 : 0000000000000000
Disable them by default, so they can be enabled using
/proc/sys/debug/exception-trace.
Cc: <[email protected]>
Signed-off-by: Michael Weiser <[email protected]>
Signed-off-by: Will Deacon <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
arch/arm64/kernel/traps.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/arm64/kernel/traps.c
+++ b/arch/arm64/kernel/traps.c
@@ -56,7 +56,7 @@ static const char *handler[]= {
"Error"
};
-int show_unhandled_signals = 1;
+int show_unhandled_signals = 0;
/*
* Dump out the contents of some kernel memory nicely...
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bin Liu <[email protected]>
commit 44eb5e12b845cc8a0634f21b70ef07d774eb4b25 upstream.
This reverts commit dbac5d07d13e330e6706813c9fde477140fb5d80.
commit dbac5d07d13e ("usb: musb: host: don't start next rx urb if current one failed")
along with commit b5801212229f ("usb: musb: host: clear rxcsr error bit if set")
try to solve the issue described in [1], but the latter alone is
sufficient, and the former causes the issue as in [2], so now revert it.
[1] https://marc.info/?l=linux-usb&m=146173995117456&w=2
[2] https://marc.info/?l=linux-usb&m=151689238420622&w=2
Cc: [email protected] # v4.7+
Signed-off-by: Bin Liu <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/musb/musb_host.c | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -418,13 +418,7 @@ static void musb_advance_schedule(struct
}
}
- /*
- * The pipe must be broken if current urb->status is set, so don't
- * start next urb.
- * TODO: to minimize the risk of regression, only check urb->status
- * for RX, until we have a test case to understand the behavior of TX.
- */
- if ((!status || !is_in) && qh && qh->is_ready) {
+ if (qh != NULL && qh->is_ready) {
musb_dbg(musb, "... next ep%d %cX urb %p",
hw_ep->epnum, is_in ? 'R' : 'T', next_urb(qh));
musb_start_urb(musb, is_in, qh);
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Karsten Koop <[email protected]>
commit 52ad2bd8918158266fc88a05f95429b56b6a33c5 upstream.
This patch adds support for new CASSY devices to the ldusb driver. The
PIDs are also added to the ignore list in hid-quirks.
Signed-off-by: Karsten Koop <[email protected]>
Cc: stable <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/hid/hid-core.c | 3 +++
drivers/hid/hid-ids.h | 3 +++
drivers/usb/misc/ldusb.c | 6 ++++++
3 files changed, 12 insertions(+)
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -2716,6 +2716,9 @@ static const struct hid_device_id hid_ig
{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYTIME) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYTEMPERATURE) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYPH) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POWERANALYSERCASSY) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CONVERTERCONTROLLERCASSY) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MACHINETESTCASSY) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_JWM) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_DMMP) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIP) },
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -634,6 +634,9 @@
#define USB_DEVICE_ID_LD_MICROCASSYTIME 0x1033
#define USB_DEVICE_ID_LD_MICROCASSYTEMPERATURE 0x1035
#define USB_DEVICE_ID_LD_MICROCASSYPH 0x1038
+#define USB_DEVICE_ID_LD_POWERANALYSERCASSY 0x1040
+#define USB_DEVICE_ID_LD_CONVERTERCONTROLLERCASSY 0x1042
+#define USB_DEVICE_ID_LD_MACHINETESTCASSY 0x1043
#define USB_DEVICE_ID_LD_JWM 0x1080
#define USB_DEVICE_ID_LD_DMMP 0x1081
#define USB_DEVICE_ID_LD_UMIP 0x1090
--- a/drivers/usb/misc/ldusb.c
+++ b/drivers/usb/misc/ldusb.c
@@ -46,6 +46,9 @@
#define USB_DEVICE_ID_LD_MICROCASSYTIME 0x1033 /* USB Product ID of Micro-CASSY Time (reserved) */
#define USB_DEVICE_ID_LD_MICROCASSYTEMPERATURE 0x1035 /* USB Product ID of Micro-CASSY Temperature */
#define USB_DEVICE_ID_LD_MICROCASSYPH 0x1038 /* USB Product ID of Micro-CASSY pH */
+#define USB_DEVICE_ID_LD_POWERANALYSERCASSY 0x1040 /* USB Product ID of Power Analyser CASSY */
+#define USB_DEVICE_ID_LD_CONVERTERCONTROLLERCASSY 0x1042 /* USB Product ID of Converter Controller CASSY */
+#define USB_DEVICE_ID_LD_MACHINETESTCASSY 0x1043 /* USB Product ID of Machine Test CASSY */
#define USB_DEVICE_ID_LD_JWM 0x1080 /* USB Product ID of Joule and Wattmeter */
#define USB_DEVICE_ID_LD_DMMP 0x1081 /* USB Product ID of Digital Multimeter P (reserved) */
#define USB_DEVICE_ID_LD_UMIP 0x1090 /* USB Product ID of UMI P */
@@ -88,6 +91,9 @@ static const struct usb_device_id ld_usb
{ USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYTIME) },
{ USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYTEMPERATURE) },
{ USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYPH) },
+ { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POWERANALYSERCASSY) },
+ { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CONVERTERCONTROLLERCASSY) },
+ { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MACHINETESTCASSY) },
{ USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_JWM) },
{ USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_DMMP) },
{ USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIP) },
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thinh Nguyen <[email protected]>
commit 6180026341e852a250e1f97ebdcf71684a3c81b9 upstream.
There are 2 control endpoint structures for DWC3. However, the driver
only updates the OUT direction control endpoint structure during
ConnectDone event. DWC3 driver needs to update the endpoint max packet
size for control IN endpoint as well. If the max packet size is not
properly set, then the driver will incorrectly calculate the data
transfer size and fail to send ZLP for HS/FS 3-stage control read
transfer.
The fix is simply to update the max packet size for the ep0 IN direction
during ConnectDone event.
Cc: [email protected]
Fixes: 72246da40f37 ("usb: Introduce DesignWare USB3 DRD Driver")
Signed-off-by: Thinh Nguyen <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/dwc3/gadget.c | 2 ++
1 file changed, 2 insertions(+)
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -2774,6 +2774,8 @@ static void dwc3_gadget_conndone_interru
break;
}
+ dwc->eps[1]->endpoint.maxpacket = dwc->gadget.ep0->maxpacket;
+
/* Enable USB2 LPM Capability */
if ((dwc->revision > DWC3_REVISION_194A) &&
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thinh Nguyen <[email protected]>
commit f035d139ffece7b6a7b8bfb17bd0ba715ee57a04 upstream.
DWC3 tracks TRB counter for each ep0 direction separately. In control
read transfer completion handler, the driver needs to reset the TRB
enqueue counter for ep0 IN direction. Currently the driver only resets
the TRB counter for control OUT endpoint. Check for the data direction
and properly reset the TRB counter from correct control endpoint.
Cc: [email protected]
Fixes: c2da2ff00606 ("usb: dwc3: ep0: don't use ep0in for transfers")
Signed-off-by: Thinh Nguyen <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/dwc3/ep0.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
--- a/drivers/usb/dwc3/ep0.c
+++ b/drivers/usb/dwc3/ep0.c
@@ -884,7 +884,12 @@ static void dwc3_ep0_complete_data(struc
trb++;
trb->ctrl &= ~DWC3_TRB_CTRL_HWO;
trace_dwc3_complete_trb(ep0, trb);
- ep0->trb_enqueue = 0;
+
+ if (r->direction)
+ dwc->eps[1]->trb_enqueue = 0;
+ else
+ dwc->eps[0]->trb_enqueue = 0;
+
dwc->ep0_bounced = false;
}
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kai-Heng Feng <[email protected]>
commit 06998a756a3865817b87a129a7e5d5bb66dc1ec3 upstream.
Similar to commit e10aec652f31 ("drm/edid: Add 6 bpc quirk for display
AEO model 0."), the EDID reports "DFP 1.x compliant TMDS" but it support
6bpc instead of 8 bpc.
Hence, use 6 bpc quirk for this panel.
Fixes: 196f954e2509 ("drm/i915/dp: Revert "drm/i915/dp: fall back to 18 bpp when sink capability is unknown"")
BugLink: https://bugs.launchpad.net/bugs/1749420
Signed-off-by: Kai-Heng Feng <[email protected]>
Reviewed-by: Mario Kleiner <[email protected]>
Cc: <[email protected]> # v4.8+
Signed-off-by: Daniel Vetter <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/gpu/drm/drm_edid.c | 3 +++
1 file changed, 3 insertions(+)
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -111,6 +111,9 @@ static const struct edid_quirk {
/* AEO model 0 reports 8 bpc, but is a 6 bpc panel */
{ "AEO", 0, EDID_QUIRK_FORCE_6BPC },
+ /* CPT panel of Asus UX303LA reports 8 bpc, but is a 6 bpc panel */
+ { "CPT", 0x17df, EDID_QUIRK_FORCE_6BPC },
+
/* Belinea 10 15 55 */
{ "MAX", 1516, EDID_QUIRK_PREFER_LARGE_60 },
{ "MAX", 0x77e, EDID_QUIRK_PREFER_LARGE_60 },
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kai-Heng Feng <[email protected]>
commit 6e59de2048eb375a9bfcd39461ef841cd2a78962 upstream.
The affected system (0x0813) is pretty similar to another one (0x0812),
it also needs to use ATPX power control.
Signed-off-by: Kai-Heng Feng <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Cc: [email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c | 1 +
1 file changed, 1 insertion(+)
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c
@@ -568,6 +568,7 @@ static const struct amdgpu_px_quirk amdg
/* HG _PR3 doesn't seem to work on this A+A weston board */
{ 0x1002, 0x6900, 0x1002, 0x0124, AMDGPU_PX_QUIRK_FORCE_ATPX },
{ 0x1002, 0x6900, 0x1028, 0x0812, AMDGPU_PX_QUIRK_FORCE_ATPX },
+ { 0x1002, 0x6900, 0x1028, 0x0813, AMDGPU_PX_QUIRK_FORCE_ATPX },
{ 0, 0, 0, 0, 0 },
};
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chris Wilson <[email protected]>
commit 117172c8f9d40ba1de8cb35c6e614422faa03330 upstream.
When a request is preempted, it is unsubmitted from the HW queue and
removed from the active list of breadcrumbs. In the process, this
however triggers the signaler and it may see the clear rbtree with the
old, and still valid, seqno, or it may match the cleared seqno with the
now zero rq->global_seqno. This confuses the signaler into action and
signaling the fence.
Fixes: d6a2289d9d6b ("drm/i915: Remove the preempted request from the execution queue")
Signed-off-by: Chris Wilson <[email protected]>
Cc: Tvrtko Ursulin <[email protected]>
Cc: Joonas Lahtinen <[email protected]>
Cc: <[email protected]> # v4.12+
Reviewed-by: Tvrtko Ursulin <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
(cherry picked from commit fd10e2ce9905030d922e179a8047a4d50daffd8e)
Signed-off-by: Rodrigo Vivi <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/gpu/drm/i915/intel_breadcrumbs.c | 29 ++++++++++-------------------
1 file changed, 10 insertions(+), 19 deletions(-)
--- a/drivers/gpu/drm/i915/intel_breadcrumbs.c
+++ b/drivers/gpu/drm/i915/intel_breadcrumbs.c
@@ -541,29 +541,16 @@ void intel_engine_remove_wait(struct int
spin_unlock_irq(&b->rb_lock);
}
-static bool signal_valid(const struct drm_i915_gem_request *request)
-{
- return intel_wait_check_request(&request->signaling.wait, request);
-}
-
static bool signal_complete(const struct drm_i915_gem_request *request)
{
if (!request)
return false;
- /* If another process served as the bottom-half it may have already
- * signalled that this wait is already completed.
- */
- if (intel_wait_complete(&request->signaling.wait))
- return signal_valid(request);
-
- /* Carefully check if the request is complete, giving time for the
+ /*
+ * Carefully check if the request is complete, giving time for the
* seqno to be visible or if the GPU hung.
*/
- if (__i915_request_irq_complete(request))
- return true;
-
- return false;
+ return __i915_request_irq_complete(request);
}
static struct drm_i915_gem_request *to_signaler(struct rb_node *rb)
@@ -606,9 +593,13 @@ static int intel_breadcrumbs_signaler(vo
request = i915_gem_request_get_rcu(request);
rcu_read_unlock();
if (signal_complete(request)) {
- local_bh_disable();
- dma_fence_signal(&request->fence);
- local_bh_enable(); /* kick start the tasklets */
+ if (!test_bit(DMA_FENCE_FLAG_SIGNALED_BIT,
+ &request->fence.flags)) {
+ local_bh_disable();
+ dma_fence_signal(&request->fence);
+ GEM_BUG_ON(!i915_gem_request_completed(request));
+ local_bh_enable(); /* kick start the tasklets */
+ }
spin_lock_irq(&b->rb_lock);
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peter Chen <[email protected]>
commit 02a10f061a3f8bca1b37332672f50a107198adbe upstream.
commit a8c06e407ef9 ("usb: separate out sysdev pointer from usb_bus")
converted to use hcd->self.sysdev for DMA operations instead of
hcd->self.controller, but forgot to do it for hcd test mode. Replace
the correct one in this commit.
Fixes: a8c06e407ef9 ("usb: separate out sysdev pointer from usb_bus")
Signed-off-by: Peter Chen <[email protected]>
Acked-by: Alan Stern <[email protected]>
Cc: stable <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/host/ehci-hub.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
@@ -787,12 +787,12 @@ static struct urb *request_single_step_s
atomic_inc(&urb->use_count);
atomic_inc(&urb->dev->urbnum);
urb->setup_dma = dma_map_single(
- hcd->self.controller,
+ hcd->self.sysdev,
urb->setup_packet,
sizeof(struct usb_ctrlrequest),
DMA_TO_DEVICE);
urb->transfer_dma = dma_map_single(
- hcd->self.controller,
+ hcd->self.sysdev,
urb->transfer_buffer,
urb->transfer_buffer_length,
DMA_FROM_DEVICE);
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chris Wilson <[email protected]>
commit b8ff1802815913aad52695898cccbc9f77b7e726 upstream.
During eviction, the driver may free more than one hole in the drm_mm
due to the side-effects in evicting the scanned nodes. However,
drm_mm_scan_color_evict() expects that the scan result is the first
available hole (in the mru freed hole_stack list):
kernel BUG at drivers/gpu/drm/drm_mm.c:844!
invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
Dumping ftrace buffer:
(ftrace buffer empty)
Modules linked in: i915 snd_hda_codec_analog snd_hda_codec_generic coretemp snd_hda_intel snd_hda_codec snd_hwdep snd_hda_core lpc_ich snd_pcm e1000e mei_me prime_numbers mei
CPU: 1 PID: 1490 Comm: gem_userptr_bli Tainted: G U 4.16.0-rc1-g740f57c54ecf-kasan_6+ #1
Hardware name: Dell Inc. OptiPlex 755 /0PU052, BIOS A08 02/19/2008
RIP: 0010:drm_mm_scan_color_evict+0x2b8/0x3d0
RSP: 0018:ffff880057a573f8 EFLAGS: 00010287
RAX: ffff8800611f5980 RBX: ffff880057a575d0 RCX: dffffc0000000000
RDX: 00000000029d5000 RSI: 1ffff1000af4aec1 RDI: ffff8800611f5a10
RBP: ffff88005ab884d0 R08: ffff880057a57600 R09: 000000000afff000
R10: 1ffff1000b5710b5 R11: 0000000000001000 R12: 1ffff1000af4ae82
R13: ffff8800611f59b0 R14: ffff8800611f5980 R15: ffff880057a57608
FS: 00007f2de0c2e8c0(0000) GS:ffff88006ac40000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f2ddde1e000 CR3: 00000000609b2000 CR4: 00000000000006e0
Call Trace:
? drm_mm_scan_remove_block+0x330/0x330
? drm_mm_scan_remove_block+0x151/0x330
i915_gem_evict_something+0x711/0xbd0 [i915]
? igt_evict_contexts+0x50/0x50 [i915]
? nop_clear_range+0x10/0x10 [i915]
? igt_evict_something+0x90/0x90 [i915]
? i915_gem_gtt_reserve+0x1a1/0x320 [i915]
i915_gem_gtt_insert+0x237/0x400 [i915]
__i915_vma_do_pin+0xc25/0x1a20 [i915]
eb_lookup_vmas+0x1c63/0x3790 [i915]
? i915_gem_check_execbuffer+0x250/0x250 [i915]
? trace_hardirqs_on_caller+0x33f/0x590
? _raw_spin_unlock_irqrestore+0x39/0x60
? __pm_runtime_resume+0x7d/0xf0
i915_gem_do_execbuffer+0x86a/0x2ff0 [i915]
? __kmalloc+0x132/0x340
? i915_gem_execbuffer2_ioctl+0x10f/0x760 [i915]
? drm_ioctl_kernel+0x12e/0x1c0
? drm_ioctl+0x662/0x980
? eb_relocate_slow+0xa90/0xa90 [i915]
? i915_gem_execbuffer2_ioctl+0x10f/0x760 [i915]
? __might_fault+0xea/0x1a0
i915_gem_execbuffer2_ioctl+0x3cc/0x760 [i915]
? i915_gem_execbuffer_ioctl+0xba0/0xba0 [i915]
? lock_acquire+0x3c0/0x3c0
? i915_gem_execbuffer_ioctl+0xba0/0xba0 [i915]
drm_ioctl_kernel+0x12e/0x1c0
drm_ioctl+0x662/0x980
? i915_gem_execbuffer_ioctl+0xba0/0xba0 [i915]
? drm_getstats+0x20/0x20
? debug_check_no_obj_freed+0x2a6/0x8c0
do_vfs_ioctl+0x170/0xe70
? ioctl_preallocate+0x170/0x170
? task_work_run+0xbe/0x160
? lock_acquire+0x3c0/0x3c0
? trace_hardirqs_on_caller+0x33f/0x590
? _raw_spin_unlock_irq+0x2f/0x50
SyS_ioctl+0x36/0x70
? do_vfs_ioctl+0xe70/0xe70
do_syscall_64+0x18c/0x5d0
entry_SYSCALL_64_after_hwframe+0x26/0x9b
RIP: 0033:0x7f2ddf13b587
RSP: 002b:00007fff15c4f9d8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007f2ddf13b587
RDX: 00007fff15c4fa20 RSI: 0000000040406469 RDI: 0000000000000003
RBP: 00007fff15c4fa20 R08: 0000000000000000 R09: 00007f2ddf3fe120
R10: 0000000000000073 R11: 0000000000000246 R12: 0000000040406469
R13: 0000000000000003 R14: 00007fff15c4fa20 R15: 00000000000000c7
Code: 00 00 00 4a c7 44 22 08 00 00 00 00 42 c7 44 22 10 00 00 00 00 48 81 c4 b8 00 00 00 5b 5d 41 5c 41 5d 41 5e 41 5f c3 0f 0b 0f 0b <0f> 0b 31 c0 eb c0 4c 89 ef e8 9a 09 41 ff e9 1e fe ff ff 4c 89
RIP: drm_mm_scan_color_evict+0x2b8/0x3d0 RSP: ffff880057a573f8
We can trivially relax this assumption by searching the hole_stack for
the scan result and warn instead if the driver called us without any
result.
Fixes: 3fa489dabea9 ("drm: Apply tight eviction scanning to color_adjust")
Signed-off-by: Chris Wilson <[email protected]>
Cc: Joonas Lahtinen <[email protected]>
Cc: <[email protected]> # v4.11+
Reviewed-by: Joonas Lahtinen <[email protected]>
Reviewed-by: Daniel Vetter <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/gpu/drm/drm_mm.c | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
--- a/drivers/gpu/drm/drm_mm.c
+++ b/drivers/gpu/drm/drm_mm.c
@@ -834,9 +834,24 @@ struct drm_mm_node *drm_mm_scan_color_ev
if (!mm->color_adjust)
return NULL;
- hole = list_first_entry(&mm->hole_stack, typeof(*hole), hole_stack);
- hole_start = __drm_mm_hole_node_start(hole);
- hole_end = hole_start + hole->hole_size;
+ /*
+ * The hole found during scanning should ideally be the first element
+ * in the hole_stack list, but due to side-effects in the driver it
+ * may not be.
+ */
+ list_for_each_entry(hole, &mm->hole_stack, hole_stack) {
+ hole_start = __drm_mm_hole_node_start(hole);
+ hole_end = hole_start + hole->hole_size;
+
+ if (hole_start <= scan->hit_start &&
+ hole_end >= scan->hit_end)
+ break;
+ }
+
+ /* We should only be called after we found the hole previously */
+ DRM_MM_BUG_ON(&hole->hole_stack == &mm->hole_stack);
+ if (unlikely(&hole->hole_stack == &mm->hole_stack))
+ return NULL;
DRM_MM_BUG_ON(hole_start > scan->hit_start);
DRM_MM_BUG_ON(hole_end < scan->hit_end);
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Vetter <[email protected]>
commit 745fd50f3b044db6a3922e1718306555613164b0 upstream.
In the past the ast driver relied upon the fbdev emulation helpers to
call ->load_lut at boot-up. But since
commit b8e2b0199cc377617dc238f5106352c06dcd3fa2
Author: Peter Rosin <[email protected]>
Date: Tue Jul 4 12:36:57 2017 +0200
drm/fb-helper: factor out pseudo-palette
that's cleaned up and drivers are expected to boot into a consistent
lut state. This patch fixes that.
Fixes: b8e2b0199cc3 ("drm/fb-helper: factor out pseudo-palette")
Cc: Peter Rosin <[email protected]>
Cc: Daniel Vetter <[email protected]>
Cc: <[email protected]> # v4.14+
References: https://bugzilla.kernel.org/show_bug.cgi?id=198123
Signed-off-by: Daniel Vetter <[email protected]>
Link: http://patchwork.freedesktop.org/patch/msgid/[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/gpu/drm/cirrus/cirrus_mode.c | 40 ++++++++++++++++++++---------------
1 file changed, 23 insertions(+), 17 deletions(-)
--- a/drivers/gpu/drm/cirrus/cirrus_mode.c
+++ b/drivers/gpu/drm/cirrus/cirrus_mode.c
@@ -294,22 +294,7 @@ static void cirrus_crtc_prepare(struct d
{
}
-/*
- * This is called after a mode is programmed. It should reverse anything done
- * by the prepare function
- */
-static void cirrus_crtc_commit(struct drm_crtc *crtc)
-{
-}
-
-/*
- * The core can pass us a set of gamma values to program. We actually only
- * use this for 8-bit mode so can't perform smooth fades on deeper modes,
- * but it's a requirement that we provide the function
- */
-static int cirrus_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
- u16 *blue, uint32_t size,
- struct drm_modeset_acquire_ctx *ctx)
+static void cirrus_crtc_load_lut(struct drm_crtc *crtc)
{
struct drm_device *dev = crtc->dev;
struct cirrus_device *cdev = dev->dev_private;
@@ -317,7 +302,7 @@ static int cirrus_crtc_gamma_set(struct
int i;
if (!crtc->enabled)
- return 0;
+ return;
r = crtc->gamma_store;
g = r + crtc->gamma_size;
@@ -330,6 +315,27 @@ static int cirrus_crtc_gamma_set(struct
WREG8(PALETTE_DATA, *g++ >> 8);
WREG8(PALETTE_DATA, *b++ >> 8);
}
+}
+
+/*
+ * This is called after a mode is programmed. It should reverse anything done
+ * by the prepare function
+ */
+static void cirrus_crtc_commit(struct drm_crtc *crtc)
+{
+ cirrus_crtc_load_lut(crtc);
+}
+
+/*
+ * The core can pass us a set of gamma values to program. We actually only
+ * use this for 8-bit mode so can't perform smooth fades on deeper modes,
+ * but it's a requirement that we provide the function
+ */
+static int cirrus_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
+ u16 *blue, uint32_t size,
+ struct drm_modeset_acquire_ctx *ctx)
+{
+ cirrus_crtc_load_lut(crtc);
return 0;
}
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yoshihiro Shimoda <[email protected]>
commit 17aa31f13cad25daa19d3f923323f552e87bc874 upstream.
This fixes an issue that a gadget driver (usb_f_fs) is possible to
stop rx transactions after the usb-dmac is used because the following
functions missed to set/check the "running" flag.
- usbhsf_dma_prepare_pop_with_usb_dmac()
- usbhsf_dma_pop_done_with_usb_dmac()
So, if next transaction uses pio, the usbhsf_prepare_pop() can not
start the transaction because the "running" flag is 0.
Fixes: 8355b2b3082d ("usb: renesas_usbhs: fix the behavior of some usbhs_pkt_handle")
Cc: <[email protected]> # v3.19+
Signed-off-by: Yoshihiro Shimoda <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/renesas_usbhs/fifo.c | 5 +++++
1 file changed, 5 insertions(+)
--- a/drivers/usb/renesas_usbhs/fifo.c
+++ b/drivers/usb/renesas_usbhs/fifo.c
@@ -998,6 +998,10 @@ static int usbhsf_dma_prepare_pop_with_u
if ((uintptr_t)pkt->buf & (USBHS_USB_DMAC_XFER_SIZE - 1))
goto usbhsf_pio_prepare_pop;
+ /* return at this time if the pipe is running */
+ if (usbhs_pipe_is_running(pipe))
+ return 0;
+
usbhs_pipe_config_change_bfre(pipe, 1);
ret = usbhsf_fifo_select(pipe, fifo, 0);
@@ -1188,6 +1192,7 @@ static int usbhsf_dma_pop_done_with_usb_
usbhsf_fifo_clear(pipe, fifo);
pkt->actual = usbhs_dma_calc_received_size(pkt, chan, rcv_len);
+ usbhs_pipe_running(pipe, 0);
usbhsf_dma_stop(pipe, fifo);
usbhsf_dma_unmap(pkt);
usbhsf_fifo_unselect(pipe, pipe->fifo);
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jack Pham <[email protected]>
commit 675272d092e4a5570bace92593776f7348daf4c5 upstream.
In commit 2bfa0719ac2a ("usb: gadget: function: f_fs: pass
companion descriptor along") there is a pointer arithmetic
bug where the comp_desc is obtained as follows:
comp_desc = (struct usb_ss_ep_comp_descriptor *)(ds +
USB_DT_ENDPOINT_SIZE);
Since ds is a pointer to usb_endpoint_descriptor, adding
7 to it ends up going out of bounds (7 * sizeof(struct
usb_endpoint_descriptor), which is actually 7*9 bytes) past
the SS descriptor. As a result the maxburst value will be
read incorrectly, and the UDC driver will also get a garbage
comp_desc (assuming it uses it).
Since Felipe wrote, "Eventually, f_fs.c should be converted
to use config_ep_by_speed() like all other functions, though",
let's finally do it. This allows the other usb_ep fields to
be properly populated, such as maxpacket and mult. It also
eliminates the awkward speed-based descriptor lookup since
config_ep_by_speed() does that already using the ones found
in struct usb_function.
Fixes: 2bfa0719ac2a ("usb: gadget: function: f_fs: pass companion descriptor along")
Cc: [email protected]
Signed-off-by: Jack Pham <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/gadget/function/f_fs.c | 38 ++++++-------------------------------
1 file changed, 7 insertions(+), 31 deletions(-)
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -1856,44 +1856,20 @@ static int ffs_func_eps_enable(struct ff
spin_lock_irqsave(&func->ffs->eps_lock, flags);
while(count--) {
- struct usb_endpoint_descriptor *ds;
- struct usb_ss_ep_comp_descriptor *comp_desc = NULL;
- int needs_comp_desc = false;
- int desc_idx;
-
- if (ffs->gadget->speed == USB_SPEED_SUPER) {
- desc_idx = 2;
- needs_comp_desc = true;
- } else if (ffs->gadget->speed == USB_SPEED_HIGH)
- desc_idx = 1;
- else
- desc_idx = 0;
-
- /* fall-back to lower speed if desc missing for current speed */
- do {
- ds = ep->descs[desc_idx];
- } while (!ds && --desc_idx >= 0);
-
- if (!ds) {
- ret = -EINVAL;
- break;
- }
-
ep->ep->driver_data = ep;
- ep->ep->desc = ds;
- if (needs_comp_desc) {
- comp_desc = (struct usb_ss_ep_comp_descriptor *)(ds +
- USB_DT_ENDPOINT_SIZE);
- ep->ep->maxburst = comp_desc->bMaxBurst + 1;
- ep->ep->comp_desc = comp_desc;
+ ret = config_ep_by_speed(func->gadget, &func->function, ep->ep);
+ if (ret) {
+ pr_err("%s: config_ep_by_speed(%s) returned %d\n",
+ __func__, ep->ep->name, ret);
+ break;
}
ret = usb_ep_enable(ep->ep);
if (likely(!ret)) {
epfile->ep = ep;
- epfile->in = usb_endpoint_dir_in(ds);
- epfile->isoc = usb_endpoint_xfer_isoc(ds);
+ epfile->in = usb_endpoint_dir_in(ep->ep->desc);
+ epfile->isoc = usb_endpoint_xfer_isoc(ep->ep->desc);
} else {
break;
}
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Will Deacon <[email protected]>
commit be68a8aaf925aaf35574260bf820bb09d2f9e07f upstream.
Our field definitions for CTR_EL0 suffer from a number of problems:
- The IDC and DIC fields are missing, which causes us to enable CTR
trapping on CPUs with either of these returning non-zero values.
- The ERG is FTR_LOWER_SAFE, whereas it should be treated like CWG as
FTR_HIGHER_SAFE so that applications can use it to avoid false sharing.
- [nit] A RES1 field is described as "RAO"
This patch updates the CTR_EL0 field definitions to fix these issues.
Cc: <[email protected]>
Cc: Shanker Donthineni <[email protected]>
Signed-off-by: Will Deacon <[email protected]>
Signed-off-by: Catalin Marinas <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
arch/arm64/kernel/cpufeature.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -175,9 +175,11 @@ static const struct arm64_ftr_bits ftr_i
};
static const struct arm64_ftr_bits ftr_ctr[] = {
- ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_EXACT, 31, 1, 1), /* RAO */
+ ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_EXACT, 31, 1, 1), /* RES1 */
+ ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, 29, 1, 1), /* DIC */
+ ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, 28, 1, 1), /* IDC */
ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_HIGHER_SAFE, 24, 4, 0), /* CWG */
- ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, 20, 4, 0), /* ERG */
+ ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_HIGHER_SAFE, 20, 4, 0), /* ERG */
ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, 16, 4, 1), /* DminLine */
/*
* Linux can handle differing I-cache policies. Userspace JITs will
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arnd Bergmann <[email protected]>
commit bee92d06157fc39d5d7836a061c7d41289a55797 upstream.
gcc-8 warns about some obviously incorrect code:
net/mac80211/cfg.c: In function 'cfg80211_beacon_dup':
net/mac80211/cfg.c:2896:3: error: 'memcpy' source argument is the same as destination [-Werror=restrict]
>From the context, I conclude that we want to copy from beacon into
new_beacon, as we do in the rest of the function.
Cc: [email protected]
Fixes: 73da7d5bab79 ("mac80211: add channel switch command and beacon callbacks")
Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Johannes Berg <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
net/mac80211/cfg.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2863,7 +2863,7 @@ cfg80211_beacon_dup(struct cfg80211_beac
}
if (beacon->probe_resp_len) {
new_beacon->probe_resp_len = beacon->probe_resp_len;
- beacon->probe_resp = pos;
+ new_beacon->probe_resp = pos;
memcpy(pos, beacon->probe_resp, beacon->probe_resp_len);
pos += beacon->probe_resp_len;
}
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Max Filippov <[email protected]>
commit 6ac5a11dc674bc5016ea716e8082fff61f524dc1 upstream.
Xtensa memory initialization code frees high memory pages without
checking whether they are in the reserved memory regions or not. That
results in invalid value of totalram_pages and duplicate page usage by
CMA and highmem. It produces a bunch of BUGs at startup looking like
this:
BUG: Bad page state in process swapper pfn:70800
page:be60c000 count:0 mapcount:-127 mapping: (null) index:0x1
flags: 0x80000000()
raw: 80000000 00000000 00000001 ffffff80 00000000 be60c014 be60c014 0000000a
page dumped because: nonzero mapcount
Modules linked in:
CPU: 0 PID: 1 Comm: swapper Tainted: G B 4.16.0-rc1-00015-g7928b2cbe55b-dirty #23
Stack:
bd839d33 00000000 00000018 ba97b64c a106578c bd839d70 be60c000 00000000
a1378054 bd86a000 00000003 ba97b64c a1066166 bd839da0 be60c000 ffe00000
a1066b58 bd839dc0 be504000 00000000 000002f4 bd838000 00000000 0000001e
Call Trace:
[<a1065734>] bad_page+0xac/0xd0
[<a106578c>] free_pages_check_bad+0x34/0x4c
[<a1066166>] __free_pages_ok+0xae/0x14c
[<a1066b58>] __free_pages+0x30/0x64
[<a1365de5>] init_cma_reserved_pageblock+0x35/0x44
[<a13682dc>] cma_init_reserved_areas+0xf4/0x148
[<a10034b8>] do_one_initcall+0x80/0xf8
[<a1361c16>] kernel_init_freeable+0xda/0x13c
[<a125b59d>] kernel_init+0x9/0xd0
[<a1004304>] ret_from_kernel_thread+0xc/0x18
Only free high memory pages that are not reserved.
Cc: [email protected]
Signed-off-by: Max Filippov <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
arch/xtensa/mm/init.c | 70 +++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 63 insertions(+), 7 deletions(-)
--- a/arch/xtensa/mm/init.c
+++ b/arch/xtensa/mm/init.c
@@ -79,19 +79,75 @@ void __init zones_init(void)
free_area_init_node(0, zones_size, ARCH_PFN_OFFSET, NULL);
}
+#ifdef CONFIG_HIGHMEM
+static void __init free_area_high(unsigned long pfn, unsigned long end)
+{
+ for (; pfn < end; pfn++)
+ free_highmem_page(pfn_to_page(pfn));
+}
+
+static void __init free_highpages(void)
+{
+ unsigned long max_low = max_low_pfn;
+ struct memblock_region *mem, *res;
+
+ reset_all_zones_managed_pages();
+ /* set highmem page free */
+ for_each_memblock(memory, mem) {
+ unsigned long start = memblock_region_memory_base_pfn(mem);
+ unsigned long end = memblock_region_memory_end_pfn(mem);
+
+ /* Ignore complete lowmem entries */
+ if (end <= max_low)
+ continue;
+
+ if (memblock_is_nomap(mem))
+ continue;
+
+ /* Truncate partial highmem entries */
+ if (start < max_low)
+ start = max_low;
+
+ /* Find and exclude any reserved regions */
+ for_each_memblock(reserved, res) {
+ unsigned long res_start, res_end;
+
+ res_start = memblock_region_reserved_base_pfn(res);
+ res_end = memblock_region_reserved_end_pfn(res);
+
+ if (res_end < start)
+ continue;
+ if (res_start < start)
+ res_start = start;
+ if (res_start > end)
+ res_start = end;
+ if (res_end > end)
+ res_end = end;
+ if (res_start != start)
+ free_area_high(start, res_start);
+ start = res_end;
+ if (start == end)
+ break;
+ }
+
+ /* And now free anything which remains */
+ if (start < end)
+ free_area_high(start, end);
+ }
+}
+#else
+static void __init free_highpages(void)
+{
+}
+#endif
+
/*
* Initialize memory pages.
*/
void __init mem_init(void)
{
-#ifdef CONFIG_HIGHMEM
- unsigned long tmp;
-
- reset_all_zones_managed_pages();
- for (tmp = max_low_pfn; tmp < max_pfn; tmp++)
- free_highmem_page(pfn_to_page(tmp));
-#endif
+ free_highpages();
max_mapnr = max_pfn - ARCH_PFN_OFFSET;
high_memory = (void *)__va(max_low_pfn << PAGE_SHIFT);
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kees Cook <[email protected]>
commit 0f9da844d87796ac31b04e81ee95e155e9043132 upstream.
The MIPS %.its.S compiler command did not define __ASSEMBLY__, which meant
when compiler_types.h was added to kconfig.h, unexpected things appeared
(e.g. struct declarations) which should not have been present. As done in
the general %.S compiler command, __ASSEMBLY__ is now included here too.
The failure was:
Error: arch/mips/boot/vmlinux.gz.its:201.1-2 syntax error
FATAL ERROR: Unable to parse input tree
/usr/bin/mkimage: Can't read arch/mips/boot/vmlinux.gz.itb.tmp: Invalid argument
/usr/bin/mkimage Can't add hashes to FIT blob
Reported-by: kbuild test robot <[email protected]>
Fixes: 28128c61e08e ("kconfig.h: Include compiler types to avoid missed struct attributes")
Signed-off-by: Kees Cook <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
arch/mips/boot/Makefile | 1 +
1 file changed, 1 insertion(+)
--- a/arch/mips/boot/Makefile
+++ b/arch/mips/boot/Makefile
@@ -126,6 +126,7 @@ $(obj)/vmlinux.its.S: $(addprefix $(srct
quiet_cmd_cpp_its_S = ITS $@
cmd_cpp_its_S = $(CPP) $(cpp_flags) -P -C -o $@ $< \
+ -D__ASSEMBLY__ \
-DKERNEL_NAME="\"Linux $(KERNELRELEASE)\"" \
-DVMLINUX_BINARY="\"$(3)\"" \
-DVMLINUX_COMPRESSION="\"$(2)\"" \
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michael Weiser <[email protected]>
commit 1962682d2b2fbe6cfa995a85c53c069fadda473e upstream.
Stop printing a (ratelimited) kernel message for each instance of an
unimplemented syscall being called. Userland making an unimplemented
syscall is not necessarily misbehaviour and to be expected with a
current userland running on an older kernel. Also, the current message
looks scary to users but does not actually indicate a real problem nor
help them narrow down the cause. Just rely on sys_ni_syscall() to return
-ENOSYS.
Cc: <[email protected]>
Acked-by: Will Deacon <[email protected]>
Signed-off-by: Michael Weiser <[email protected]>
Signed-off-by: Will Deacon <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
arch/arm64/kernel/traps.c | 8 --------
1 file changed, 8 deletions(-)
--- a/arch/arm64/kernel/traps.c
+++ b/arch/arm64/kernel/traps.c
@@ -573,14 +573,6 @@ asmlinkage long do_ni_syscall(struct pt_
}
#endif
- if (show_unhandled_signals_ratelimited()) {
- pr_info("%s[%d]: syscall %d\n", current->comm,
- task_pid_nr(current), regs->syscallno);
- dump_instr("", regs);
- if (user_mode(regs))
- __show_regs(regs);
- }
-
return sys_ni_syscall();
}
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shigeru Yoshida <[email protected]>
commit b2685bdacdaab065c172b97b55ab46c6be77a037 upstream.
Running io_watchdog_func() while ohci_urb_enqueue() is running can
cause a race condition where ohci->prev_frame_no is corrupted and the
watchdog can mis-detect following error:
ohci-platform 664a0800.usb: frame counter not updating; disabled
ohci-platform 664a0800.usb: HC died; cleaning up
Specifically, following scenario causes a race condition:
1. ohci_urb_enqueue() calls spin_lock_irqsave(&ohci->lock, flags)
and enters the critical section
2. ohci_urb_enqueue() calls timer_pending(&ohci->io_watchdog) and it
returns false
3. ohci_urb_enqueue() sets ohci->prev_frame_no to a frame number
read by ohci_frame_no(ohci)
4. ohci_urb_enqueue() schedules io_watchdog_func() with mod_timer()
5. ohci_urb_enqueue() calls spin_unlock_irqrestore(&ohci->lock,
flags) and exits the critical section
6. Later, ohci_urb_enqueue() is called
7. ohci_urb_enqueue() calls spin_lock_irqsave(&ohci->lock, flags)
and enters the critical section
8. The timer scheduled on step 4 expires and io_watchdog_func() runs
9. io_watchdog_func() calls spin_lock_irqsave(&ohci->lock, flags)
and waits on it because ohci_urb_enqueue() is already in the
critical section on step 7
10. ohci_urb_enqueue() calls timer_pending(&ohci->io_watchdog) and it
returns false
11. ohci_urb_enqueue() sets ohci->prev_frame_no to new frame number
read by ohci_frame_no(ohci) because the frame number proceeded
between step 3 and 6
12. ohci_urb_enqueue() schedules io_watchdog_func() with mod_timer()
13. ohci_urb_enqueue() calls spin_unlock_irqrestore(&ohci->lock,
flags) and exits the critical section, then wake up
io_watchdog_func() which is waiting on step 9
14. io_watchdog_func() enters the critical section
15. io_watchdog_func() calls ohci_frame_no(ohci) and set frame_no
variable to the frame number
16. io_watchdog_func() compares frame_no and ohci->prev_frame_no
On step 16, because this calling of io_watchdog_func() is scheduled on
step 4, the frame number set in ohci->prev_frame_no is expected to the
number set on step 3. However, ohci->prev_frame_no is overwritten on
step 11. Because step 16 is executed soon after step 11, the frame
number might not proceed, so ohci->prev_frame_no must equals to
frame_no.
To address above scenario, this patch introduces a special sentinel
value IO_WATCHDOG_OFF and set this value to ohci->prev_frame_no when
the watchdog is not pending or running. When ohci_urb_enqueue()
schedules the watchdog (step 4 and 12 above), it compares
ohci->prev_frame_no to IO_WATCHDOG_OFF so that ohci->prev_frame_no is
not overwritten while io_watchdog_func() is running.
Signed-off-by: Shigeru Yoshida <[email protected]>
Signed-off-by: Haiqing Bai <[email protected]>
Acked-by: Alan Stern <[email protected]>
Cc: stable <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/host/ohci-hcd.c | 10 +++++++---
drivers/usb/host/ohci-hub.c | 4 +++-
2 files changed, 10 insertions(+), 4 deletions(-)
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -73,6 +73,7 @@ static const char hcd_name [] = "ohci_hc
#define STATECHANGE_DELAY msecs_to_jiffies(300)
#define IO_WATCHDOG_DELAY msecs_to_jiffies(275)
+#define IO_WATCHDOG_OFF 0xffffff00
#include "ohci.h"
#include "pci-quirks.h"
@@ -230,7 +231,7 @@ static int ohci_urb_enqueue (
}
/* Start up the I/O watchdog timer, if it's not running */
- if (!timer_pending(&ohci->io_watchdog) &&
+ if (ohci->prev_frame_no == IO_WATCHDOG_OFF &&
list_empty(&ohci->eds_in_use) &&
!(ohci->flags & OHCI_QUIRK_QEMU)) {
ohci->prev_frame_no = ohci_frame_no(ohci);
@@ -501,6 +502,7 @@ static int ohci_init (struct ohci_hcd *o
setup_timer(&ohci->io_watchdog, io_watchdog_func,
(unsigned long) ohci);
+ ohci->prev_frame_no = IO_WATCHDOG_OFF;
ohci->hcca = dma_alloc_coherent (hcd->self.controller,
sizeof(*ohci->hcca), &ohci->hcca_dma, GFP_KERNEL);
@@ -730,7 +732,7 @@ static void io_watchdog_func(unsigned lo
u32 head;
struct ed *ed;
struct td *td, *td_start, *td_next;
- unsigned frame_no;
+ unsigned frame_no, prev_frame_no = IO_WATCHDOG_OFF;
unsigned long flags;
spin_lock_irqsave(&ohci->lock, flags);
@@ -835,7 +837,7 @@ static void io_watchdog_func(unsigned lo
}
}
if (!list_empty(&ohci->eds_in_use)) {
- ohci->prev_frame_no = frame_no;
+ prev_frame_no = frame_no;
ohci->prev_wdh_cnt = ohci->wdh_cnt;
ohci->prev_donehead = ohci_readl(ohci,
&ohci->regs->donehead);
@@ -845,6 +847,7 @@ static void io_watchdog_func(unsigned lo
}
done:
+ ohci->prev_frame_no = prev_frame_no;
spin_unlock_irqrestore(&ohci->lock, flags);
}
@@ -973,6 +976,7 @@ static void ohci_stop (struct usb_hcd *h
if (quirk_nec(ohci))
flush_work(&ohci->nec_work);
del_timer_sync(&ohci->io_watchdog);
+ ohci->prev_frame_no = IO_WATCHDOG_OFF;
ohci_writel (ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable);
ohci_usb_reset(ohci);
--- a/drivers/usb/host/ohci-hub.c
+++ b/drivers/usb/host/ohci-hub.c
@@ -310,8 +310,10 @@ static int ohci_bus_suspend (struct usb_
rc = ohci_rh_suspend (ohci, 0);
spin_unlock_irq (&ohci->lock);
- if (rc == 0)
+ if (rc == 0) {
del_timer_sync(&ohci->io_watchdog);
+ ohci->prev_frame_no = IO_WATCHDOG_OFF;
+ }
return rc;
}
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tyrel Datwyler <[email protected]>
commit c39813652700f3df552b6557530f1e5f782dbe2f upstream.
The fcp_rsp_info structure as defined in the FC spec has an initial 3
bytes reserved field. The ibmvfc driver mistakenly defined this field as
4 bytes resulting in the rsp_code field being defined in what should be
the start of the second reserved field and thus always being reported as
zero by the driver.
Ideally, we should wire ibmvfc up with libfc for the sake of code
deduplication, and ease of maintaining standardized structures in a
single place. However, for now simply fixup the definition in ibmvfc for
backporting to distros on older kernels. Wiring up with libfc will be
done in a followup patch.
Cc: <[email protected]>
Reported-by: Hannes Reinecke <[email protected]>
Signed-off-by: Tyrel Datwyler <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/scsi/ibmvscsi/ibmvfc.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/scsi/ibmvscsi/ibmvfc.h
+++ b/drivers/scsi/ibmvscsi/ibmvfc.h
@@ -367,7 +367,7 @@ enum ibmvfc_fcp_rsp_info_codes {
};
struct ibmvfc_fcp_rsp_info {
- __be16 reserved;
+ u8 reserved[3];
u8 rsp_code;
u8 reserved2[4];
}__attribute__((packed, aligned (2)));
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Casey Leedom <[email protected]>
commit 7dcf688d4c78a18ba9538b2bf1b11dc7a43fe9be upstream.
We've run into a problem where our device is attached
to a Virtual Machine and the use of the new pci_set_vpd_size()
API doesn't help. The VM kernel has been informed that
the accesses are okay, but all of the actual VPD Capability
Accesses are trapped down into the KVM Hypervisor where it
goes ahead and imposes the silent denials.
The right idea is to follow the kernel.org
commit 1c7de2b4ff88 ("PCI: Enable access to non-standard VPD for
Chelsio devices (cxgb3)") which Alexey Kardashevskiy authored
to establish a PCI Quirk for our T3-based adapters. This commit
extends that PCI Quirk to cover Chelsio T4 devices and later.
The advantage of this approach is that the VPD Size gets set early
in the Base OS/Hypervisor Boot and doesn't require that the cxgb4
driver even be available in the Base OS/Hypervisor. Thus PF4 can
be exported to a Virtual Machine and everything should work.
Fixes: 67e658794ca1 ("cxgb4: Set VPD size so we can read both VPD structures")
Cc: <[email protected]> # v4.9+
Signed-off-by: Casey Leedom <[email protected]>
Signed-off-by: Arjun Vynipadath <[email protected]>
Signed-off-by: Ganesh Goudar <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 10 --------
drivers/pci/quirks.c | 35 +++++++++++++++++------------
2 files changed, 21 insertions(+), 24 deletions(-)
--- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
@@ -2632,7 +2632,6 @@ void t4_get_regs(struct adapter *adap, v
}
#define EEPROM_STAT_ADDR 0x7bfc
-#define VPD_SIZE 0x800
#define VPD_BASE 0x400
#define VPD_BASE_OLD 0
#define VPD_LEN 1024
@@ -2670,15 +2669,6 @@ int t4_get_raw_vpd_params(struct adapter
if (!vpd)
return -ENOMEM;
- /* We have two VPD data structures stored in the adapter VPD area.
- * By default, Linux calculates the size of the VPD area by traversing
- * the first VPD area at offset 0x0, so we need to tell the OS what
- * our real VPD size is.
- */
- ret = pci_set_vpd_size(adapter->pdev, VPD_SIZE);
- if (ret < 0)
- goto out;
-
/* Card information normally starts at VPD_BASE but early cards had
* it at 0.
*/
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3412,22 +3412,29 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
static void quirk_chelsio_extend_vpd(struct pci_dev *dev)
{
- pci_set_vpd_size(dev, 8192);
+ int chip = (dev->device & 0xf000) >> 12;
+ int func = (dev->device & 0x0f00) >> 8;
+ int prod = (dev->device & 0x00ff) >> 0;
+
+ /*
+ * If this is a T3-based adapter, there's a 1KB VPD area at offset
+ * 0xc00 which contains the preferred VPD values. If this is a T4 or
+ * later based adapter, the special VPD is at offset 0x400 for the
+ * Physical Functions (the SR-IOV Virtual Functions have no VPD
+ * Capabilities). The PCI VPD Access core routines will normally
+ * compute the size of the VPD by parsing the VPD Data Structure at
+ * offset 0x000. This will result in silent failures when attempting
+ * to accesses these other VPD areas which are beyond those computed
+ * limits.
+ */
+ if (chip == 0x0 && prod >= 0x20)
+ pci_set_vpd_size(dev, 8192);
+ else if (chip >= 0x4 && func < 0x8)
+ pci_set_vpd_size(dev, 2048);
}
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x20, quirk_chelsio_extend_vpd);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x21, quirk_chelsio_extend_vpd);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x22, quirk_chelsio_extend_vpd);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x23, quirk_chelsio_extend_vpd);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x24, quirk_chelsio_extend_vpd);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x25, quirk_chelsio_extend_vpd);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x26, quirk_chelsio_extend_vpd);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x30, quirk_chelsio_extend_vpd);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x31, quirk_chelsio_extend_vpd);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x32, quirk_chelsio_extend_vpd);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x35, quirk_chelsio_extend_vpd);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x36, quirk_chelsio_extend_vpd);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x37, quirk_chelsio_extend_vpd);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,
+ quirk_chelsio_extend_vpd);
#ifdef CONFIG_ACPI
/*
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kees Cook <[email protected]>
commit 28128c61e08eaeced9cc8ec0e6b5d677b5b94690 upstream.
The header files for some structures could get included in such a way
that struct attributes (specifically __randomize_layout from path.h) would
be parsed as variable names instead of attributes. This could lead to
some instances of a structure being unrandomized, causing nasty GPFs, etc.
This patch makes sure the compiler_types.h header is included in
kconfig.h so that we've always got types and struct attributes defined,
since kconfig.h is included from the compiler command line.
Reported-by: Patrick McLean <[email protected]>
Root-caused-by: Maciej S. Szmigiero <[email protected]>
Suggested-by: Linus Torvalds <[email protected]>
Tested-by: Maciej S. Szmigiero <[email protected]>
Fixes: 3859a271a003 ("randstruct: Mark various structs for randomization")
Signed-off-by: Kees Cook <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
include/linux/kconfig.h | 3 +++
1 file changed, 3 insertions(+)
--- a/include/linux/kconfig.h
+++ b/include/linux/kconfig.h
@@ -64,4 +64,7 @@
*/
#define IS_ENABLED(option) __or(IS_BUILTIN(option), IS_MODULE(option))
+/* Make sure we always have all types and struct attributes defined. */
+#include <linux/compiler_types.h>
+
#endif /* __LINUX_KCONFIG_H */
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shanker Donthineni <[email protected]>
commit 21ec30c0ef5234fb1039cc7c7737d885bf875a9e upstream.
A DMB instruction can be used to ensure the relative order of only
memory accesses before and after the barrier. Since writes to system
registers are not memory operations, barrier DMB is not sufficient
for observability of memory accesses that occur before ICC_SGI1R_EL1
writes.
A DSB instruction ensures that no instructions that appear in program
order after the DSB instruction, can execute until the DSB instruction
has completed.
Cc: [email protected]
Acked-by: Will Deacon <[email protected]>,
Signed-off-by: Shanker Donthineni <[email protected]>
Signed-off-by: Marc Zyngier <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/irqchip/irq-gic-v3.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/irqchip/irq-gic-v3.c
+++ b/drivers/irqchip/irq-gic-v3.c
@@ -660,7 +660,7 @@ static void gic_raise_softirq(const stru
* Ensure that stores to Normal memory are visible to the
* other CPUs before issuing the IPI.
*/
- smp_wmb();
+ wmb();
for_each_cpu(cpu, mask) {
unsigned long cluster_id = cpu_logical_map(cpu) & ~0xffUL;
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: AMAN DEEP <[email protected]>
commit 46408ea558df13b110e0866b99624384a33bdeba upstream.
There is a race condition between finish_unlinks->finish_urb() function
and usb_kill_urb() in ohci controller case. The finish_urb calls
spin_unlock(&ohci->lock) before usb_hcd_giveback_urb() function call,
then if during this time, usb_kill_urb is called for another endpoint,
then new ed will be added to ed_rm_list at beginning for unlink, and
ed_rm_list will point to newly added.
When finish_urb() is completed in finish_unlinks() and ed->td_list
becomes empty as in below code (in finish_unlinks() function):
if (list_empty(&ed->td_list)) {
*last = ed->ed_next;
ed->ed_next = NULL;
} else if (ohci->rh_state == OHCI_RH_RUNNING) {
*last = ed->ed_next;
ed->ed_next = NULL;
ed_schedule(ohci, ed);
}
The *last = ed->ed_next will make ed_rm_list to point to ed->ed_next
and previously added ed by usb_kill_urb will be left unreferenced by
ed_rm_list. This causes usb_kill_urb() hang forever waiting for
finish_unlink to remove added ed from ed_rm_list.
The main reason for hang in this race condtion is addition and removal
of ed from ed_rm_list in the beginning during usb_kill_urb and later
last* is modified in finish_unlinks().
As suggested by Alan Stern, the solution for proper handling of
ohci->ed_rm_list is to remove ed from the ed_rm_list before finishing
any URBs. Then at the end, we can add ed back to the list if necessary.
This properly handle the updated ohci->ed_rm_list in usb_kill_urb().
Fixes: 977dcfdc6031 ("USB: OHCI: don't lose track of EDs when a controller dies")
Acked-by: Alan Stern <[email protected]>
CC: <[email protected]>
Signed-off-by: Aman Deep <[email protected]>
Signed-off-by: Jeffy Chen <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/host/ohci-q.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
--- a/drivers/usb/host/ohci-q.c
+++ b/drivers/usb/host/ohci-q.c
@@ -1018,6 +1018,8 @@ skip_ed:
* have modified this list. normally it's just prepending
* entries (which we'd ignore), but paranoia won't hurt.
*/
+ *last = ed->ed_next;
+ ed->ed_next = NULL;
modified = 0;
/* unlink urbs as requested, but rescan the list after
@@ -1076,21 +1078,22 @@ rescan_this:
goto rescan_this;
/*
- * If no TDs are queued, take ED off the ed_rm_list.
+ * If no TDs are queued, ED is now idle.
* Otherwise, if the HC is running, reschedule.
- * If not, leave it on the list for further dequeues.
+ * If the HC isn't running, add ED back to the
+ * start of the list for later processing.
*/
if (list_empty(&ed->td_list)) {
- *last = ed->ed_next;
- ed->ed_next = NULL;
ed->state = ED_IDLE;
list_del(&ed->in_use_list);
} else if (ohci->rh_state == OHCI_RH_RUNNING) {
- *last = ed->ed_next;
- ed->ed_next = NULL;
ed_schedule(ohci, ed);
} else {
- last = &ed->ed_next;
+ ed->ed_next = ohci->ed_rm_list;
+ ohci->ed_rm_list = ed;
+ /* Don't loop on the same ED */
+ if (last == &ohci->ed_rm_list)
+ last = &ed->ed_next;
}
if (modified)
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Huang Ying <[email protected]>
commit 7ba716698cc53f8d5367766c93c538c7da6c68ce upstream.
It was reported by Sergey Senozhatsky that if THP (Transparent Huge
Page) and frontswap (via zswap) are both enabled, when memory goes low
so that swap is triggered, segfault and memory corruption will occur in
random user space applications as follow,
kernel: urxvt[338]: segfault at 20 ip 00007fc08889ae0d sp 00007ffc73a7fc40 error 6 in libc-2.26.so[7fc08881a000+1ae000]
#0 0x00007fc08889ae0d _int_malloc (libc.so.6)
#1 0x00007fc08889c2f3 malloc (libc.so.6)
#2 0x0000560e6004bff7 _Z14rxvt_wcstoutf8PKwi (urxvt)
#3 0x0000560e6005e75c n/a (urxvt)
#4 0x0000560e6007d9f1 _ZN16rxvt_perl_interp6invokeEP9rxvt_term9hook_typez (urxvt)
#5 0x0000560e6003d988 _ZN9rxvt_term9cmd_parseEv (urxvt)
#6 0x0000560e60042804 _ZN9rxvt_term6pty_cbERN2ev2ioEi (urxvt)
#7 0x0000560e6005c10f _Z17ev_invoke_pendingv (urxvt)
#8 0x0000560e6005cb55 ev_run (urxvt)
#9 0x0000560e6003b9b9 main (urxvt)
#10 0x00007fc08883af4a __libc_start_main (libc.so.6)
#11 0x0000560e6003f9da _start (urxvt)
After bisection, it was found the first bad commit is bd4c82c22c36 ("mm,
THP, swap: delay splitting THP after swapped out").
The root cause is as follows:
When the pages are written to swap device during swapping out in
swap_writepage(), zswap (fontswap) is tried to compress the pages to
improve performance. But zswap (frontswap) will treat THP as a normal
page, so only the head page is saved. After swapping in, tail pages
will not be restored to their original contents, causing memory
corruption in the applications.
This is fixed by refusing to save page in the frontswap store functions
if the page is a THP. So that the THP will be swapped out to swap
device.
Another choice is to split THP if frontswap is enabled. But it is found
that the frontswap enabling isn't flexible. For example, if
CONFIG_ZSWAP=y (cannot be module), frontswap will be enabled even if
zswap itself isn't enabled.
Frontswap has multiple backends, to make it easy for one backend to
enable THP support, the THP checking is put in backend frontswap store
functions instead of the general interfaces.
Link: http://lkml.kernel.org/r/[email protected]
Fixes: bd4c82c22c367e068 ("mm, THP, swap: delay splitting THP after swapped out")
Signed-off-by: "Huang, Ying" <[email protected]>
Reported-by: Sergey Senozhatsky <[email protected]>
Tested-by: Sergey Senozhatsky <[email protected]>
Suggested-by: Minchan Kim <[email protected]> [put THP checking in backend]
Cc: Konrad Rzeszutek Wilk <[email protected]>
Cc: Dan Streetman <[email protected]>
Cc: Seth Jennings <[email protected]>
Cc: Tetsuo Handa <[email protected]>
Cc: Shaohua Li <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: Johannes Weiner <[email protected]>
Cc: Mel Gorman <[email protected]>
Cc: Shakeel Butt <[email protected]>
Cc: Boris Ostrovsky <[email protected]>
Cc: Juergen Gross <[email protected]>
Cc: <[email protected]> [4.14]
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/xen/tmem.c | 4 ++++
mm/zswap.c | 6 ++++++
2 files changed, 10 insertions(+)
--- a/drivers/xen/tmem.c
+++ b/drivers/xen/tmem.c
@@ -284,6 +284,10 @@ static int tmem_frontswap_store(unsigned
int pool = tmem_frontswap_poolid;
int ret;
+ /* THP isn't supported */
+ if (PageTransHuge(page))
+ return -1;
+
if (pool < 0)
return -1;
if (ind64 != ind)
--- a/mm/zswap.c
+++ b/mm/zswap.c
@@ -970,6 +970,12 @@ static int zswap_frontswap_store(unsigne
u8 *src, *dst;
struct zswap_header *zhdr;
+ /* THP isn't supported */
+ if (PageTransHuge(page)) {
+ ret = -EINVAL;
+ goto reject;
+ }
+
if (!zswap_enabled || !tree) {
ret = -ENODEV;
goto reject;
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andreas Klinger <[email protected]>
commit 511051d509ec54642dd6d30fdf2caa33c23619cc upstream.
Functions for triggered buffer support are needed by this module.
If they are not defined accidentally by another driver, there's an error
thrown out while linking.
Add a select of IIO_BUFFER and IIO_TRIGGERED_BUFFER in the Kconfig file.
Signed-off-by: Andreas Klinger <[email protected]>
Fixes: a83195937151 ("iio: srf08: add triggered buffer support")
Cc: <[email protected]>
Signed-off-by: Jonathan Cameron <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/iio/proximity/Kconfig | 2 ++
1 file changed, 2 insertions(+)
--- a/drivers/iio/proximity/Kconfig
+++ b/drivers/iio/proximity/Kconfig
@@ -58,6 +58,8 @@ config SX9500
config SRF08
tristate "Devantech SRF02/SRF08/SRF10 ultrasonic ranger sensor"
+ select IIO_BUFFER
+ select IIO_TRIGGERED_BUFFER
depends on I2C
help
Say Y here to build a driver for Devantech SRF02/SRF08/SRF10
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lars-Peter Clausen <[email protected]>
commit f027e0b3a774e10302207e91d304bbf99e3a8b36 upstream.
The adis_probe_trigger() creates a new IIO trigger and requests an
interrupt associated with the trigger. The interrupt uses the generic
iio_trigger_generic_data_rdy_poll() function as its interrupt handler.
Currently the driver initializes some fields of the trigger structure after
the interrupt has been requested. But an interrupt can fire as soon as it
has been requested. This opens up a race condition.
iio_trigger_generic_data_rdy_poll() will access the trigger data structure
and dereference the ops field. If the ops field is not yet initialized this
will result in a NULL pointer deref.
It is not expected that the device generates an interrupt at this point, so
typically this issue did not surface unless e.g. due to a hardware
misconfiguration (wrong interrupt number, wrong polarity, etc.).
But some newer devices from the ADIS family start to generate periodic
interrupts in their power-on reset configuration and unfortunately the
interrupt can not be masked in the device. This makes the race condition
much more visible and the following crash has been observed occasionally
when booting a system using the ADIS16460.
Unable to handle kernel NULL pointer dereference at virtual address 00000008
pgd = c0004000
[00000008] *pgd=00000000
Internal error: Oops: 5 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.0-04126-gf9739f0-dirty #257
Hardware name: Xilinx Zynq Platform
task: ef04f640 task.stack: ef050000
PC is at iio_trigger_notify_done+0x30/0x68
LR is at iio_trigger_generic_data_rdy_poll+0x18/0x20
pc : [<c042d868>] lr : [<c042d924>] psr: 60000193
sp : ef051bb8 ip : 00000000 fp : ef106400
r10: c081d80a r9 : ef3bfa00 r8 : 00000087
r7 : ef051bec r6 : 00000000 r5 : ef3bfa00 r4 : ee92ab00
r3 : 00000000 r2 : 00000000 r1 : 00000000 r0 : ee97e400
Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment none
Control: 18c5387d Table: 0000404a DAC: 00000051
Process swapper/0 (pid: 1, stack limit = 0xef050210)
[<c042d868>] (iio_trigger_notify_done) from [<c0065b10>] (__handle_irq_event_percpu+0x88/0x118)
[<c0065b10>] (__handle_irq_event_percpu) from [<c0065bbc>] (handle_irq_event_percpu+0x1c/0x58)
[<c0065bbc>] (handle_irq_event_percpu) from [<c0065c30>] (handle_irq_event+0x38/0x5c)
[<c0065c30>] (handle_irq_event) from [<c0068e28>] (handle_level_irq+0xa4/0x130)
[<c0068e28>] (handle_level_irq) from [<c0064e74>] (generic_handle_irq+0x24/0x34)
[<c0064e74>] (generic_handle_irq) from [<c021ab7c>] (zynq_gpio_irqhandler+0xb8/0x13c)
[<c021ab7c>] (zynq_gpio_irqhandler) from [<c0064e74>] (generic_handle_irq+0x24/0x34)
[<c0064e74>] (generic_handle_irq) from [<c0065370>] (__handle_domain_irq+0x5c/0xb4)
[<c0065370>] (__handle_domain_irq) from [<c000940c>] (gic_handle_irq+0x48/0x8c)
[<c000940c>] (gic_handle_irq) from [<c0013e8c>] (__irq_svc+0x6c/0xa8)
To fix this make sure that the trigger is fully initialized before
requesting the interrupt.
Fixes: ccd2b52f4ac6 ("staging:iio: Add common ADIS library")
Reported-by: Robin Getz <[email protected]>
Signed-off-by: Lars-Peter Clausen <[email protected]>
Cc: <[email protected]>
Signed-off-by: Jonathan Cameron <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/iio/imu/adis_trigger.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
--- a/drivers/iio/imu/adis_trigger.c
+++ b/drivers/iio/imu/adis_trigger.c
@@ -47,6 +47,10 @@ int adis_probe_trigger(struct adis *adis
if (adis->trig == NULL)
return -ENOMEM;
+ adis->trig->dev.parent = &adis->spi->dev;
+ adis->trig->ops = &adis_trigger_ops;
+ iio_trigger_set_drvdata(adis->trig, adis);
+
ret = request_irq(adis->spi->irq,
&iio_trigger_generic_data_rdy_poll,
IRQF_TRIGGER_RISING,
@@ -55,9 +59,6 @@ int adis_probe_trigger(struct adis *adis
if (ret)
goto error_free_trig;
- adis->trig->dev.parent = &adis->spi->dev;
- adis->trig->ops = &adis_trigger_ops;
- iio_trigger_set_drvdata(adis->trig, adis);
ret = iio_trigger_register(adis->trig);
indio_dev->trig = iio_trigger_get(adis->trig);
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Stefan Windfeldt-Prytz <[email protected]>
commit 4cd140bda6494543f1c1b0ccceceaa44b676eef6 upstream.
If no iio buffer has been set up and poll is called return 0.
Without this check there will be a null pointer dereference when
calling poll on a iio driver without an iio buffer.
Cc: [email protected]
Signed-off-by: Stefan Windfeldt-Prytz <[email protected]>
Signed-off-by: Jonathan Cameron <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/iio/industrialio-buffer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/iio/industrialio-buffer.c
+++ b/drivers/iio/industrialio-buffer.c
@@ -175,7 +175,7 @@ unsigned int iio_buffer_poll(struct file
struct iio_dev *indio_dev = filp->private_data;
struct iio_buffer *rb = indio_dev->buffer;
- if (!indio_dev->info)
+ if (!indio_dev->info || rb == NULL)
return 0;
poll_wait(filp, &rb->pollq, wait);
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ard Biesheuvel <[email protected]>
Stable backport commit 173358a49173 ("arm64: kpti: Add ->enable callback
to remap swapper using nG mappings") of upstream commit f992b4dfd58b did
not survive the backporting process unscathed, and ends up writing garbage
into the TTBR1_EL1 register, rather than pointing it to the zero page to
disable translations. Fix that.
Cc: <[email protected]> #v4.14
Reported-by: Nicolas Dechesne <[email protected]>
Signed-off-by: Ard Biesheuvel <[email protected]>
Acked-by: Will Deacon <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
arch/arm64/mm/proc.S | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/arm64/mm/proc.S
+++ b/arch/arm64/mm/proc.S
@@ -155,7 +155,7 @@ ENDPROC(cpu_do_switch_mm)
.macro __idmap_cpu_set_reserved_ttbr1, tmp1, tmp2
adrp \tmp1, empty_zero_page
- msr ttbr1_el1, \tmp2
+ msr ttbr1_el1, \tmp1
isb
tlbi vmalle1
dsb nsh
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Leon Romanovsky <[email protected]>
commit 1ff5325c3ca1843228a86549318bbd3b414b9207 upstream.
Avoid circular locking dependency by calling
to uobj_alloc_commit() outside of xrcd_tree_mutex lock.
======================================================
WARNING: possible circular locking dependency detected
4.15.0+ #87 Not tainted
------------------------------------------------------
syzkaller401056/269 is trying to acquire lock:
(&uverbs_dev->xrcd_tree_mutex){+.+.}, at: [<000000006c12d2cd>] uverbs_free_xrcd+0xd2/0x360
but task is already holding lock:
(&ucontext->uobjects_lock){+.+.}, at: [<00000000da010f09>] uverbs_cleanup_ucontext+0x168/0x730
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #1 (&ucontext->uobjects_lock){+.+.}:
__mutex_lock+0x111/0x1720
rdma_alloc_commit_uobject+0x22c/0x600
ib_uverbs_open_xrcd+0x61a/0xdd0
ib_uverbs_write+0x7f9/0xef0
__vfs_write+0x10d/0x700
vfs_write+0x1b0/0x550
SyS_write+0xc7/0x1a0
entry_SYSCALL_64_fastpath+0x1e/0x8b
-> #0 (&uverbs_dev->xrcd_tree_mutex){+.+.}:
lock_acquire+0x19d/0x440
__mutex_lock+0x111/0x1720
uverbs_free_xrcd+0xd2/0x360
remove_commit_idr_uobject+0x6d/0x110
uverbs_cleanup_ucontext+0x2f0/0x730
ib_uverbs_cleanup_ucontext.constprop.3+0x52/0x120
ib_uverbs_close+0xf2/0x570
__fput+0x2cd/0x8d0
task_work_run+0xec/0x1d0
do_exit+0x6a1/0x1520
do_group_exit+0xe8/0x380
SyS_exit_group+0x1e/0x20
entry_SYSCALL_64_fastpath+0x1e/0x8b
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&ucontext->uobjects_lock);
lock(&uverbs_dev->xrcd_tree_mutex);
lock(&ucontext->uobjects_lock);
lock(&uverbs_dev->xrcd_tree_mutex);
*** DEADLOCK ***
3 locks held by syzkaller401056/269:
#0: (&file->cleanup_mutex){+.+.}, at: [<00000000c9f0c252>] ib_uverbs_close+0xac/0x570
#1: (&ucontext->cleanup_rwsem){++++}, at: [<00000000b6994d49>] uverbs_cleanup_ucontext+0xf6/0x730
#2: (&ucontext->uobjects_lock){+.+.}, at: [<00000000da010f09>] uverbs_cleanup_ucontext+0x168/0x730
stack backtrace:
CPU: 0 PID: 269 Comm: syzkaller401056 Not tainted 4.15.0+ #87
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014
Call Trace:
dump_stack+0xde/0x164
? dma_virt_map_sg+0x22c/0x22c
? uverbs_cleanup_ucontext+0x168/0x730
? console_unlock+0x502/0xbd0
print_circular_bug.isra.24+0x35e/0x396
? print_circular_bug_header+0x12e/0x12e
? find_usage_backwards+0x30/0x30
? entry_SYSCALL_64_fastpath+0x1e/0x8b
validate_chain.isra.28+0x25d1/0x40c0
? check_usage+0xb70/0xb70
? graph_lock+0x160/0x160
? find_usage_backwards+0x30/0x30
? cyc2ns_read_end+0x10/0x10
? print_irqtrace_events+0x280/0x280
? __lock_acquire+0x93d/0x1630
__lock_acquire+0x93d/0x1630
lock_acquire+0x19d/0x440
? uverbs_free_xrcd+0xd2/0x360
__mutex_lock+0x111/0x1720
? uverbs_free_xrcd+0xd2/0x360
? uverbs_free_xrcd+0xd2/0x360
? __mutex_lock+0x828/0x1720
? mutex_lock_io_nested+0x1550/0x1550
? uverbs_cleanup_ucontext+0x168/0x730
? __lock_acquire+0x9a9/0x1630
? mutex_lock_io_nested+0x1550/0x1550
? uverbs_cleanup_ucontext+0xf6/0x730
? lock_contended+0x11a0/0x11a0
? uverbs_free_xrcd+0xd2/0x360
uverbs_free_xrcd+0xd2/0x360
remove_commit_idr_uobject+0x6d/0x110
uverbs_cleanup_ucontext+0x2f0/0x730
? sched_clock_cpu+0x18/0x200
? uverbs_close_fd+0x1c0/0x1c0
ib_uverbs_cleanup_ucontext.constprop.3+0x52/0x120
ib_uverbs_close+0xf2/0x570
? ib_uverbs_remove_one+0xb50/0xb50
? ib_uverbs_remove_one+0xb50/0xb50
__fput+0x2cd/0x8d0
task_work_run+0xec/0x1d0
do_exit+0x6a1/0x1520
? fsnotify_first_mark+0x220/0x220
? exit_notify+0x9f0/0x9f0
? entry_SYSCALL_64_fastpath+0x5/0x8b
? entry_SYSCALL_64_fastpath+0x5/0x8b
? trace_hardirqs_on_thunk+0x1a/0x1c
? time_hardirqs_on+0x27/0x670
? time_hardirqs_off+0x27/0x490
? syscall_return_slowpath+0x6c/0x460
? entry_SYSCALL_64_fastpath+0x5/0x8b
do_group_exit+0xe8/0x380
SyS_exit_group+0x1e/0x20
entry_SYSCALL_64_fastpath+0x1e/0x8b
RIP: 0033:0x431ce9
Cc: syzkaller <[email protected]>
Cc: <[email protected]> # 4.11
Fixes: fd3c7904db6e ("IB/core: Change idr objects to use the new schema")
Reported-by: Noa Osherovich <[email protected]>
Signed-off-by: Leon Romanovsky <[email protected]>
Signed-off-by: Jason Gunthorpe <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/infiniband/core/uverbs_cmd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -565,9 +565,10 @@ ssize_t ib_uverbs_open_xrcd(struct ib_uv
if (f.file)
fdput(f);
+ mutex_unlock(&file->device->xrcd_tree_mutex);
+
uobj_alloc_commit(&obj->uobject);
- mutex_unlock(&file->device->xrcd_tree_mutex);
return in_len;
err_copy:
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arnd Bergmann <[email protected]>
commit 85c615eb52222bc5fab6c7190d146bc59fac289e upstream.
GCC-8 shows a warning for the x86 oprofile code that copies per-CPU
data from CPU 0 to all other CPUs, which when building a non-SMP
kernel turns into a memcpy() with identical source and destination
pointers:
arch/x86/oprofile/nmi_int.c: In function 'mux_clone':
arch/x86/oprofile/nmi_int.c:285:2: error: 'memcpy' source argument is the same as destination [-Werror=restrict]
memcpy(per_cpu(cpu_msrs, cpu).multiplex,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
per_cpu(cpu_msrs, 0).multiplex,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sizeof(struct op_msr) * model->num_virt_counters);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/x86/oprofile/nmi_int.c: In function 'nmi_setup':
arch/x86/oprofile/nmi_int.c:466:3: error: 'memcpy' source argument is the same as destination [-Werror=restrict]
arch/x86/oprofile/nmi_int.c:470:3: error: 'memcpy' source argument is the same as destination [-Werror=restrict]
I have analyzed a number of such warnings now: some are valid and the
GCC warning is welcome. Others turned out to be false-positives, and
GCC was changed to not warn about those any more. This is a corner case
that is a false-positive but the GCC developers feel it's better to keep
warning about it.
In this case, it seems best to work around it by telling GCC
a little more clearly that this code path is never hit with
an IS_ENABLED() configuration check.
Cc:stable as we also want old kernels to build cleanly with GCC-8.
Signed-off-by: Arnd Bergmann <[email protected]>
Cc: Jessica Yu <[email protected]>
Cc: Kees Cook <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Martin Sebor <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Robert Richter <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: [email protected]
Cc: [email protected]
Link: http://lkml.kernel.org/r/[email protected]
Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84095
Signed-off-by: Ingo Molnar <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
arch/x86/oprofile/nmi_int.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/x86/oprofile/nmi_int.c
+++ b/arch/x86/oprofile/nmi_int.c
@@ -460,7 +460,7 @@ static int nmi_setup(void)
goto fail;
for_each_possible_cpu(cpu) {
- if (!cpu)
+ if (!IS_ENABLED(CONFIG_SMP) || !cpu)
continue;
memcpy(per_cpu(cpu_msrs, cpu).counters,
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Leon Romanovsky <[email protected]>
commit 5d4c05c3ee36f67ddc107ab5ea0898af01a62cc1 upstream.
==================================================================
BUG: KASAN: use-after-free in copy_ah_attr_from_uverbs+0x6f2/0x8c0
Read of size 4 at addr ffff88006476a198 by task syzkaller697701/265
CPU: 0 PID: 265 Comm: syzkaller697701 Not tainted 4.15.0+ #90
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014
Call Trace:
dump_stack+0xde/0x164
? dma_virt_map_sg+0x22c/0x22c
? show_regs_print_info+0x17/0x17
? lock_contended+0x11a0/0x11a0
print_address_description+0x83/0x3e0
kasan_report+0x18c/0x4b0
? copy_ah_attr_from_uverbs+0x6f2/0x8c0
? copy_ah_attr_from_uverbs+0x6f2/0x8c0
? lookup_get_idr_uobject+0x120/0x200
? copy_ah_attr_from_uverbs+0x6f2/0x8c0
copy_ah_attr_from_uverbs+0x6f2/0x8c0
? modify_qp+0xd0e/0x1350
modify_qp+0xd0e/0x1350
ib_uverbs_modify_qp+0xf9/0x170
? ib_uverbs_query_qp+0xa70/0xa70
ib_uverbs_write+0x7f9/0xef0
? attach_entity_load_avg+0x8b0/0x8b0
? ib_uverbs_query_qp+0xa70/0xa70
? uverbs_devnode+0x110/0x110
? cyc2ns_read_end+0x10/0x10
? print_irqtrace_events+0x280/0x280
? sched_clock_cpu+0x18/0x200
? _raw_spin_unlock_irq+0x29/0x40
? _raw_spin_unlock_irq+0x29/0x40
? _raw_spin_unlock_irq+0x29/0x40
? time_hardirqs_on+0x27/0x670
__vfs_write+0x10d/0x700
? uverbs_devnode+0x110/0x110
? kernel_read+0x170/0x170
? _raw_spin_unlock_irq+0x29/0x40
? finish_task_switch+0x1bd/0x7a0
? finish_task_switch+0x194/0x7a0
? prandom_u32_state+0xe/0x180
? rcu_read_unlock+0x80/0x80
? security_file_permission+0x93/0x260
vfs_write+0x1b0/0x550
SyS_write+0xc7/0x1a0
? SyS_read+0x1a0/0x1a0
? trace_hardirqs_on_thunk+0x1a/0x1c
entry_SYSCALL_64_fastpath+0x1e/0x8b
RIP: 0033:0x433c29
RSP: 002b:00007ffcf2be82a8 EFLAGS: 00000217
Allocated by task 62:
kasan_kmalloc+0xa0/0xd0
kmem_cache_alloc+0x141/0x480
dup_fd+0x101/0xcc0
copy_process.part.62+0x166f/0x4390
_do_fork+0x1cb/0xe90
kernel_thread+0x34/0x40
call_usermodehelper_exec_work+0x112/0x260
process_one_work+0x929/0x1aa0
worker_thread+0x5c6/0x12a0
kthread+0x346/0x510
ret_from_fork+0x3a/0x50
Freed by task 259:
kasan_slab_free+0x71/0xc0
kmem_cache_free+0xf3/0x4c0
put_files_struct+0x225/0x2c0
exit_files+0x88/0xc0
do_exit+0x67c/0x1520
do_group_exit+0xe8/0x380
SyS_exit_group+0x1e/0x20
entry_SYSCALL_64_fastpath+0x1e/0x8b
The buggy address belongs to the object at ffff88006476a000
which belongs to the cache files_cache of size 832
The buggy address is located 408 bytes inside of
832-byte region [ffff88006476a000, ffff88006476a340)
The buggy address belongs to the page:
page:ffffea000191da80 count:1 mapcount:0 mapping: (null) index:0x0 compound_mapcount: 0
flags: 0x4000000000008100(slab|head)
raw: 4000000000008100 0000000000000000 0000000000000000 0000000100080008
raw: 0000000000000000 0000000100000001 ffff88006bcf7a80 0000000000000000
page dumped because: kasan: bad access detected
Memory state around the buggy address:
ffff88006476a080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff88006476a100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff88006476a180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
^
ffff88006476a200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff88006476a280: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================
Cc: syzkaller <[email protected]>
Cc: <[email protected]> # 4.11
Fixes: 44c58487d51a ("IB/core: Define 'ib' and 'roce' rdma_ah_attr types")
Reported-by: Noa Osherovich <[email protected]>
Signed-off-by: Leon Romanovsky <[email protected]>
Signed-off-by: Jason Gunthorpe <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/infiniband/core/uverbs_cmd.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -1981,8 +1981,15 @@ static int modify_qp(struct ib_uverbs_fi
goto release_qp;
}
+ if ((cmd->base.attr_mask & IB_QP_AV) &&
+ !rdma_is_port_valid(qp->device, cmd->base.dest.port_num)) {
+ ret = -EINVAL;
+ goto release_qp;
+ }
+
if ((cmd->base.attr_mask & IB_QP_ALT_PATH) &&
- !rdma_is_port_valid(qp->device, cmd->base.alt_port_num)) {
+ (!rdma_is_port_valid(qp->device, cmd->base.alt_port_num) ||
+ !rdma_is_port_valid(qp->device, cmd->base.alt_dest.port_num))) {
ret = -EINVAL;
goto release_qp;
}
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Leon Romanovsky <[email protected]>
commit 3f802b162dbf4a558ff98986449eddc717826209 upstream.
The command number is not bounds checked against the command mask before it
is shifted, resulting in an ubsan hit. This does not cause malfunction since
the command number is eventually bounds checked, but we can make this ubsan
clean by moving the bounds check to before the mask check.
================================================================================
UBSAN: Undefined behaviour in
drivers/infiniband/core/uverbs_main.c:647:21
shift exponent 207 is too large for 64-bit type 'long long unsigned int'
CPU: 0 PID: 446 Comm: syz-executor3 Not tainted 4.15.0-rc2+ #61
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014
Call Trace:
dump_stack+0xde/0x164
? dma_virt_map_sg+0x22c/0x22c
ubsan_epilogue+0xe/0x81
__ubsan_handle_shift_out_of_bounds+0x293/0x2f7
? debug_check_no_locks_freed+0x340/0x340
? __ubsan_handle_load_invalid_value+0x19b/0x19b
? lock_acquire+0x440/0x440
? lock_acquire+0x19d/0x440
? __might_fault+0xf4/0x240
? ib_uverbs_write+0x68d/0xe20
ib_uverbs_write+0x68d/0xe20
? __lock_acquire+0xcf7/0x3940
? uverbs_devnode+0x110/0x110
? cyc2ns_read_end+0x10/0x10
? sched_clock_cpu+0x18/0x200
? sched_clock_cpu+0x18/0x200
__vfs_write+0x10d/0x700
? uverbs_devnode+0x110/0x110
? kernel_read+0x170/0x170
? __fget+0x35b/0x5d0
? security_file_permission+0x93/0x260
vfs_write+0x1b0/0x550
SyS_write+0xc7/0x1a0
? SyS_read+0x1a0/0x1a0
? trace_hardirqs_on_thunk+0x1a/0x1c
entry_SYSCALL_64_fastpath+0x18/0x85
RIP: 0033:0x448e29
RSP: 002b:00007f033f567c58 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
RAX: ffffffffffffffda RBX: 00007f033f5686bc RCX: 0000000000448e29
RDX: 0000000000000060 RSI: 0000000020001000 RDI: 0000000000000012
RBP: 000000000070bea0 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
R13: 00000000000056a0 R14: 00000000006e8740 R15: 0000000000000000
================================================================================
Cc: syzkaller <[email protected]>
Cc: <[email protected]> # 4.5
Fixes: 2dbd5186a39c ("IB/core: IB/core: Allow legacy verbs through extended interfaces")
Reported-by: Noa Osherovich <[email protected]>
Reviewed-by: Matan Barak <[email protected]>
Signed-off-by: Leon Romanovsky <[email protected]>
Signed-off-by: Jason Gunthorpe <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/infiniband/core/uverbs_main.c | 27 ++++++++++++++++++++-------
1 file changed, 20 insertions(+), 7 deletions(-)
--- a/drivers/infiniband/core/uverbs_main.c
+++ b/drivers/infiniband/core/uverbs_main.c
@@ -647,12 +647,21 @@ static int verify_command_mask(struct ib
return -1;
}
+static bool verify_command_idx(u32 command, bool extended)
+{
+ if (extended)
+ return command < ARRAY_SIZE(uverbs_ex_cmd_table);
+
+ return command < ARRAY_SIZE(uverbs_cmd_table);
+}
+
static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,
size_t count, loff_t *pos)
{
struct ib_uverbs_file *file = filp->private_data;
struct ib_device *ib_dev;
struct ib_uverbs_cmd_hdr hdr;
+ bool extended_command;
__u32 command;
__u32 flags;
int srcu_key;
@@ -685,6 +694,15 @@ static ssize_t ib_uverbs_write(struct fi
}
command = hdr.command & IB_USER_VERBS_CMD_COMMAND_MASK;
+ flags = (hdr.command &
+ IB_USER_VERBS_CMD_FLAGS_MASK) >> IB_USER_VERBS_CMD_FLAGS_SHIFT;
+
+ extended_command = flags & IB_USER_VERBS_CMD_FLAG_EXTENDED;
+ if (!verify_command_idx(command, extended_command)) {
+ ret = -EINVAL;
+ goto out;
+ }
+
if (verify_command_mask(ib_dev, command)) {
ret = -EOPNOTSUPP;
goto out;
@@ -696,12 +714,8 @@ static ssize_t ib_uverbs_write(struct fi
goto out;
}
- flags = (hdr.command &
- IB_USER_VERBS_CMD_FLAGS_MASK) >> IB_USER_VERBS_CMD_FLAGS_SHIFT;
-
if (!flags) {
- if (command >= ARRAY_SIZE(uverbs_cmd_table) ||
- !uverbs_cmd_table[command]) {
+ if (!uverbs_cmd_table[command]) {
ret = -EINVAL;
goto out;
}
@@ -722,8 +736,7 @@ static ssize_t ib_uverbs_write(struct fi
struct ib_udata uhw;
size_t written_count = count;
- if (command >= ARRAY_SIZE(uverbs_ex_cmd_table) ||
- !uverbs_ex_cmd_table[command]) {
+ if (!uverbs_ex_cmd_table[command]) {
ret = -ENOSYS;
goto out;
}
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Leon Romanovsky <[email protected]>
commit 5c2e1c4f926856717f3fd31932e926dc3fe77ebd upstream.
There is no matching lock for this mutex. Git history suggests this is
just a missed remnant from an earlier version of the function before
this locking was moved into uverbs_free_xrcd.
Originally this lock was protecting the xrcd_table_delete()
=====================================
WARNING: bad unlock balance detected!
4.15.0+ #87 Not tainted
-------------------------------------
syzkaller223405/269 is trying to release lock (&uverbs_dev->xrcd_tree_mutex) at:
[<00000000b8703372>] ib_uverbs_close_xrcd+0x195/0x1f0
but there are no more locks to release!
other info that might help us debug this:
1 lock held by syzkaller223405/269:
#0: (&uverbs_dev->disassociate_srcu){....}, at: [<000000005af3b960>] ib_uverbs_write+0x265/0xef0
stack backtrace:
CPU: 0 PID: 269 Comm: syzkaller223405 Not tainted 4.15.0+ #87
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014
Call Trace:
dump_stack+0xde/0x164
? dma_virt_map_sg+0x22c/0x22c
? ib_uverbs_write+0x265/0xef0
? console_unlock+0x502/0xbd0
? ib_uverbs_close_xrcd+0x195/0x1f0
print_unlock_imbalance_bug+0x131/0x160
lock_release+0x59d/0x1100
? ib_uverbs_close_xrcd+0x195/0x1f0
? lock_acquire+0x440/0x440
? lock_acquire+0x440/0x440
__mutex_unlock_slowpath+0x88/0x670
? wait_for_completion+0x4c0/0x4c0
? rdma_lookup_get_uobject+0x145/0x2f0
ib_uverbs_close_xrcd+0x195/0x1f0
? ib_uverbs_open_xrcd+0xdd0/0xdd0
ib_uverbs_write+0x7f9/0xef0
? cyc2ns_read_end+0x10/0x10
? ib_uverbs_open_xrcd+0xdd0/0xdd0
? uverbs_devnode+0x110/0x110
? cyc2ns_read_end+0x10/0x10
? cyc2ns_read_end+0x10/0x10
? sched_clock_cpu+0x18/0x200
__vfs_write+0x10d/0x700
? uverbs_devnode+0x110/0x110
? kernel_read+0x170/0x170
? __fget+0x358/0x5d0
? security_file_permission+0x93/0x260
vfs_write+0x1b0/0x550
SyS_write+0xc7/0x1a0
? SyS_read+0x1a0/0x1a0
? trace_hardirqs_on_thunk+0x1a/0x1c
entry_SYSCALL_64_fastpath+0x1e/0x8b
RIP: 0033:0x4335c9
Cc: syzkaller <[email protected]>
Cc: <[email protected]> # 4.11
Fixes: fd3c7904db6e ("IB/core: Change idr objects to use the new schema")
Reported-by: Noa Osherovich <[email protected]>
Signed-off-by: Leon Romanovsky <[email protected]>
Signed-off-by: Jason Gunthorpe <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/infiniband/core/uverbs_cmd.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -606,10 +606,8 @@ ssize_t ib_uverbs_close_xrcd(struct ib_u
uobj = uobj_get_write(uobj_get_type(xrcd), cmd.xrcd_handle,
file->ucontext);
- if (IS_ERR(uobj)) {
- mutex_unlock(&file->device->xrcd_tree_mutex);
+ if (IS_ERR(uobj))
return PTR_ERR(uobj);
- }
ret = uobj_remove_commit(uobj);
return ret ?: in_len;
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Fabrice Gasnier <[email protected]>
commit a3b5655ebdb501a98a45c0d3265dca9f2fe0218a upstream.
Error handling in stm32h7_adc_enable routine doesn't unwind enable
sequence correctly. ADEN can only be cleared by hardware (e.g. by
writing one to ADDIS).
It's also better to clear ADRDY just after it's been set by hardware.
Fixes: 95e339b6e85d ("iio: adc: stm32: add support for STM32H7")
Signed-off-by: Fabrice Gasnier <[email protected]>
Cc: <[email protected]>
Signed-off-by: Jonathan Cameron <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/iio/adc/stm32-adc.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
--- a/drivers/iio/adc/stm32-adc.c
+++ b/drivers/iio/adc/stm32-adc.c
@@ -764,8 +764,6 @@ static int stm32h7_adc_enable(struct stm
int ret;
u32 val;
- /* Clear ADRDY by writing one, then enable ADC */
- stm32_adc_set_bits(adc, STM32H7_ADC_ISR, STM32H7_ADRDY);
stm32_adc_set_bits(adc, STM32H7_ADC_CR, STM32H7_ADEN);
/* Poll for ADRDY to be set (after adc startup time) */
@@ -773,8 +771,11 @@ static int stm32h7_adc_enable(struct stm
val & STM32H7_ADRDY,
100, STM32_ADC_TIMEOUT_US);
if (ret) {
- stm32_adc_clr_bits(adc, STM32H7_ADC_CR, STM32H7_ADEN);
+ stm32_adc_set_bits(adc, STM32H7_ADC_CR, STM32H7_ADDIS);
dev_err(&indio_dev->dev, "Failed to enable ADC\n");
+ } else {
+ /* Clear ADRDY by writing one */
+ stm32_adc_set_bits(adc, STM32H7_ADC_ISR, STM32H7_ADRDY);
}
return ret;
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Leon Romanovsky <[email protected]>
commit 6623e3e3cd78020016d3fa42555763178e94ab64 upstream.
The race is between lookup_get_idr_uobject and
uverbs_idr_remove_uobj -> uverbs_uobject_put.
We deliberately do not call sychronize_rcu after the idr_remove in
uverbs_idr_remove_uobj for performance reasons, instead we call
kfree_rcu() during uverbs_uobject_put.
However, this means we can obtain pointers to uobj's that have
already been released and must protect against krefing them
using kref_get_unless_zero.
==================================================================
BUG: KASAN: use-after-free in copy_ah_attr_from_uverbs.isra.2+0x860/0xa00
Read of size 4 at addr ffff88005fda1ac8 by task syz-executor2/441
CPU: 1 PID: 441 Comm: syz-executor2 Not tainted 4.15.0-rc2+ #56
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014
Call Trace:
dump_stack+0x8d/0xd4
print_address_description+0x73/0x290
kasan_report+0x25c/0x370
? copy_ah_attr_from_uverbs.isra.2+0x860/0xa00
copy_ah_attr_from_uverbs.isra.2+0x860/0xa00
? uverbs_try_lock_object+0x68/0xc0
? modify_qp.isra.7+0xdc4/0x10e0
modify_qp.isra.7+0xdc4/0x10e0
ib_uverbs_modify_qp+0xfe/0x170
? ib_uverbs_query_qp+0x970/0x970
? __lock_acquire+0xa11/0x1da0
ib_uverbs_write+0x55a/0xad0
? ib_uverbs_query_qp+0x970/0x970
? ib_uverbs_query_qp+0x970/0x970
? ib_uverbs_open+0x760/0x760
? futex_wake+0x147/0x410
? sched_clock_cpu+0x18/0x180
? check_prev_add+0x1680/0x1680
? do_futex+0x3b6/0xa30
? sched_clock_cpu+0x18/0x180
__vfs_write+0xf7/0x5c0
? ib_uverbs_open+0x760/0x760
? kernel_read+0x110/0x110
? lock_acquire+0x370/0x370
? __fget+0x264/0x3b0
vfs_write+0x18a/0x460
SyS_write+0xc7/0x1a0
? SyS_read+0x1a0/0x1a0
? trace_hardirqs_on_thunk+0x1a/0x1c
entry_SYSCALL_64_fastpath+0x18/0x85
RIP: 0033:0x448e29
RSP: 002b:00007f443fee0c58 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
RAX: ffffffffffffffda RBX: 00007f443fee16bc RCX: 0000000000448e29
RDX: 0000000000000078 RSI: 00000000209f8000 RDI: 0000000000000012
RBP: 000000000070bea0 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
R13: 0000000000008e98 R14: 00000000006ebf38 R15: 0000000000000000
Allocated by task 1:
kmem_cache_alloc_trace+0x16c/0x2f0
mlx5_alloc_cmd_msg+0x12e/0x670
cmd_exec+0x419/0x1810
mlx5_cmd_exec+0x40/0x70
mlx5_core_mad_ifc+0x187/0x220
mlx5_MAD_IFC+0xd7/0x1b0
mlx5_query_mad_ifc_gids+0x1f3/0x650
mlx5_ib_query_gid+0xa4/0xc0
ib_query_gid+0x152/0x1a0
ib_query_port+0x21e/0x290
mlx5_port_immutable+0x30f/0x490
ib_register_device+0x5dd/0x1130
mlx5_ib_add+0x3e7/0x700
mlx5_add_device+0x124/0x510
mlx5_register_interface+0x11f/0x1c0
mlx5_ib_init+0x56/0x61
do_one_initcall+0xa3/0x250
kernel_init_freeable+0x309/0x3b8
kernel_init+0x14/0x180
ret_from_fork+0x24/0x30
Freed by task 1:
kfree+0xeb/0x2f0
mlx5_free_cmd_msg+0xcd/0x140
cmd_exec+0xeba/0x1810
mlx5_cmd_exec+0x40/0x70
mlx5_core_mad_ifc+0x187/0x220
mlx5_MAD_IFC+0xd7/0x1b0
mlx5_query_mad_ifc_gids+0x1f3/0x650
mlx5_ib_query_gid+0xa4/0xc0
ib_query_gid+0x152/0x1a0
ib_query_port+0x21e/0x290
mlx5_port_immutable+0x30f/0x490
ib_register_device+0x5dd/0x1130
mlx5_ib_add+0x3e7/0x700
mlx5_add_device+0x124/0x510
mlx5_register_interface+0x11f/0x1c0
mlx5_ib_init+0x56/0x61
do_one_initcall+0xa3/0x250
kernel_init_freeable+0x309/0x3b8
kernel_init+0x14/0x180
ret_from_fork+0x24/0x30
The buggy address belongs to the object at ffff88005fda1ab0
which belongs to the cache kmalloc-32 of size 32
The buggy address is located 24 bytes inside of
32-byte region [ffff88005fda1ab0, ffff88005fda1ad0)
The buggy address belongs to the page:
page:00000000d5655c19 count:1 mapcount:0 mapping: (null)
index:0xffff88005fda1fc0
flags: 0x4000000000000100(slab)
raw: 4000000000000100 0000000000000000 ffff88005fda1fc0 0000000180550008
raw: ffffea00017f6780 0000000400000004 ffff88006c803980 0000000000000000
page dumped because: kasan: bad access detected
Memory state around the buggy address:
ffff88005fda1980: fc fc fb fb fb fb fc fc fb fb fb fb fc fc fb fb
ffff88005fda1a00: fb fb fc fc fb fb fb fb fc fc 00 00 00 00 fc fc
ffff88005fda1a80: fb fb fb fb fc fc fb fb fb fb fc fc fb fb fb fb
ffff88005fda1b00: fc fc 00 00 00 00 fc fc fb fb fb fb fc fc fb fb
ffff88005fda1b80: fb fb fc fc fb fb fb fb fc fc fb fb fb fb fc fc
==================================================================@
Cc: syzkaller <[email protected]>
Cc: <[email protected]> # 4.11
Fixes: 3832125624b7 ("IB/core: Add support for idr types")
Reported-by: Noa Osherovich <[email protected]>
Signed-off-by: Leon Romanovsky <[email protected]>
Signed-off-by: Jason Gunthorpe <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/infiniband/core/rdma_core.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
--- a/drivers/infiniband/core/rdma_core.c
+++ b/drivers/infiniband/core/rdma_core.c
@@ -196,7 +196,15 @@ static struct ib_uobject *lookup_get_idr
goto free;
}
- uverbs_uobject_get(uobj);
+ /*
+ * The idr_find is guaranteed to return a pointer to something that
+ * isn't freed yet, or NULL, as the free after idr_remove goes through
+ * kfree_rcu(). However the object may still have been released and
+ * kfree() could be called at any time.
+ */
+ if (!kref_get_unless_zero(&uobj->ref))
+ uobj = ERR_PTR(-ENOENT);
+
free:
rcu_read_unlock();
return uobj;
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Biggers <[email protected]>
commit 971b42c038dc83e3327872d294fe7131bab152fc upstream.
When pkcs7_verify_sig_chain() is building the certificate chain for a
SignerInfo using the certificates in the PKCS#7 message, it is passing
the wrong arguments to public_key_verify_signature(). Consequently,
when the next certificate is supposed to be used to verify the previous
certificate, the next certificate is actually used to verify itself.
An attacker can use this bug to create a bogus certificate chain that
has no cryptographic relationship between the beginning and end.
Fortunately I couldn't quite find a way to use this to bypass the
overall signature verification, though it comes very close. Here's the
reasoning: due to the bug, every certificate in the chain beyond the
first actually has to be self-signed (where "self-signed" here refers to
the actual key and signature; an attacker might still manipulate the
certificate fields such that the self_signed flag doesn't actually get
set, and thus the chain doesn't end immediately). But to pass trust
validation (pkcs7_validate_trust()), either the SignerInfo or one of the
certificates has to actually be signed by a trusted key. Since only
self-signed certificates can be added to the chain, the only way for an
attacker to introduce a trusted signature is to include a self-signed
trusted certificate.
But, when pkcs7_validate_trust_one() reaches that certificate, instead
of trying to verify the signature on that certificate, it will actually
look up the corresponding trusted key, which will succeed, and then try
to verify the *previous* certificate, which will fail. Thus, disaster
is narrowly averted (as far as I could tell).
Fixes: 6c2dc5ae4ab7 ("X.509: Extract signature digest and make self-signed cert checks earlier")
Cc: <[email protected]> # v4.7+
Signed-off-by: Eric Biggers <[email protected]>
Signed-off-by: David Howells <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
crypto/asymmetric_keys/pkcs7_verify.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/crypto/asymmetric_keys/pkcs7_verify.c
+++ b/crypto/asymmetric_keys/pkcs7_verify.c
@@ -273,7 +273,7 @@ static int pkcs7_verify_sig_chain(struct
sinfo->index);
return 0;
}
- ret = public_key_verify_signature(p->pub, p->sig);
+ ret = public_key_verify_signature(p->pub, x509->sig);
if (ret < 0)
return ret;
x509->signer = p;
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Biggers <[email protected]>
commit 29f4a67c17e19314b7d74b8569be935e6c7edf50 upstream.
If there is a blacklisted certificate in a SignerInfo's certificate
chain, then pkcs7_verify_sig_chain() sets sinfo->blacklisted and returns
0. But, pkcs7_verify() fails to handle this case appropriately, as it
actually continues on to the line 'actual_ret = 0;', indicating that the
SignerInfo has passed verification. Consequently, PKCS#7 signature
verification ignores the certificate blacklist.
Fix this by not considering blacklisted SignerInfos to have passed
verification.
Also fix the function comment with regards to when 0 is returned.
Fixes: 03bb79315ddc ("PKCS#7: Handle blacklisted certificates")
Cc: <[email protected]> # v4.12+
Signed-off-by: Eric Biggers <[email protected]>
Signed-off-by: David Howells <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
crypto/asymmetric_keys/pkcs7_verify.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
--- a/crypto/asymmetric_keys/pkcs7_verify.c
+++ b/crypto/asymmetric_keys/pkcs7_verify.c
@@ -369,8 +369,7 @@ static int pkcs7_verify_one(struct pkcs7
*
* (*) -EBADMSG if some part of the message was invalid, or:
*
- * (*) 0 if no signature chains were found to be blacklisted or to contain
- * unsupported crypto, or:
+ * (*) 0 if a signature chain passed verification, or:
*
* (*) -EKEYREJECTED if a blacklisted key was encountered, or:
*
@@ -426,8 +425,11 @@ int pkcs7_verify(struct pkcs7_message *p
for (sinfo = pkcs7->signed_infos; sinfo; sinfo = sinfo->next) {
ret = pkcs7_verify_one(pkcs7, sinfo);
- if (sinfo->blacklisted && actual_ret == -ENOPKG)
- actual_ret = -EKEYREJECTED;
+ if (sinfo->blacklisted) {
+ if (actual_ret == -ENOPKG)
+ actual_ret = -EKEYREJECTED;
+ continue;
+ }
if (ret < 0) {
if (ret == -ENOPKG) {
sinfo->unsupported_crypto = true;
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Biggers <[email protected]>
commit 437499eea4291ae9621e8763a41df027c110a1ef upstream.
The X.509 parser mishandles the case where the certificate's signature's
hash algorithm is not available in the crypto API. In this case,
x509_get_sig_params() doesn't allocate the cert->sig->digest buffer;
this part seems to be intentional. However,
public_key_verify_signature() is still called via
x509_check_for_self_signed(), which triggers the 'BUG_ON(!sig->digest)'.
Fix this by making public_key_verify_signature() return -ENOPKG if the
hash buffer has not been allocated.
Reproducer when all the CONFIG_CRYPTO_SHA512* options are disabled:
openssl req -new -sha512 -x509 -batch -nodes -outform der \
| keyctl padd asymmetric desc @s
Fixes: 6c2dc5ae4ab7 ("X.509: Extract signature digest and make self-signed cert checks earlier")
Reported-by: Paolo Valente <[email protected]>
Cc: Paolo Valente <[email protected]>
Cc: <[email protected]> # v4.7+
Signed-off-by: Eric Biggers <[email protected]>
Signed-off-by: David Howells <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
crypto/asymmetric_keys/public_key.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/crypto/asymmetric_keys/public_key.c
+++ b/crypto/asymmetric_keys/public_key.c
@@ -93,9 +93,11 @@ int public_key_verify_signature(const st
BUG_ON(!pkey);
BUG_ON(!sig);
- BUG_ON(!sig->digest);
BUG_ON(!sig->s);
+ if (!sig->digest)
+ return -ENOPKG;
+
alg_name = sig->pkey_algo;
if (strcmp(sig->pkey_algo, "rsa") == 0) {
/* The data wangled by the RSA algorithm is typically padded
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Biggers <[email protected]>
commit 4b34968e77ad09628cfb3c4a7daf2adc2cefc6e8 upstream.
The asymmetric key type allows an X.509 certificate to be added even if
its signature's hash algorithm is not available in the crypto API. In
that case 'payload.data[asym_auth]' will be NULL. But the key
restriction code failed to check for this case before trying to use the
signature, resulting in a NULL pointer dereference in
key_or_keyring_common() or in restrict_link_by_signature().
Fix this by returning -ENOPKG when the signature is unsupported.
Reproducer when all the CONFIG_CRYPTO_SHA512* options are disabled and
keyctl has support for the 'restrict_keyring' command:
keyctl new_session
keyctl restrict_keyring @s asymmetric builtin_trusted
openssl req -new -sha512 -x509 -batch -nodes -outform der \
| keyctl padd asymmetric desc @s
Fixes: a511e1af8b12 ("KEYS: Move the point of trust determination to __key_link()")
Cc: <[email protected]> # v4.7+
Signed-off-by: Eric Biggers <[email protected]>
Signed-off-by: David Howells <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
crypto/asymmetric_keys/restrict.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
--- a/crypto/asymmetric_keys/restrict.c
+++ b/crypto/asymmetric_keys/restrict.c
@@ -67,8 +67,9 @@ __setup("ca_keys=", ca_keys_setup);
*
* Returns 0 if the new certificate was accepted, -ENOKEY if we couldn't find a
* matching parent certificate in the trusted list, -EKEYREJECTED if the
- * signature check fails or the key is blacklisted and some other error if
- * there is a matching certificate but the signature check cannot be performed.
+ * signature check fails or the key is blacklisted, -ENOPKG if the signature
+ * uses unsupported crypto, or some other error if there is a matching
+ * certificate but the signature check cannot be performed.
*/
int restrict_link_by_signature(struct key *dest_keyring,
const struct key_type *type,
@@ -88,6 +89,8 @@ int restrict_link_by_signature(struct ke
return -EOPNOTSUPP;
sig = payload->data[asym_auth];
+ if (!sig)
+ return -ENOPKG;
if (!sig->auth_ids[0] && !sig->auth_ids[1])
return -ENOKEY;
@@ -139,6 +142,8 @@ static int key_or_keyring_common(struct
return -EOPNOTSUPP;
sig = payload->data[asym_auth];
+ if (!sig)
+ return -ENOPKG;
if (!sig->auth_ids[0] && !sig->auth_ids[1])
return -ENOKEY;
@@ -222,9 +227,9 @@ static int key_or_keyring_common(struct
*
* Returns 0 if the new certificate was accepted, -ENOKEY if we
* couldn't find a matching parent certificate in the trusted list,
- * -EKEYREJECTED if the signature check fails, and some other error if
- * there is a matching certificate but the signature check cannot be
- * performed.
+ * -EKEYREJECTED if the signature check fails, -ENOPKG if the signature uses
+ * unsupported crypto, or some other error if there is a matching certificate
+ * but the signature check cannot be performed.
*/
int restrict_link_by_key_or_keyring(struct key *dest_keyring,
const struct key_type *type,
@@ -249,9 +254,9 @@ int restrict_link_by_key_or_keyring(stru
*
* Returns 0 if the new certificate was accepted, -ENOKEY if we
* couldn't find a matching parent certificate in the trusted list,
- * -EKEYREJECTED if the signature check fails, and some other error if
- * there is a matching certificate but the signature check cannot be
- * performed.
+ * -EKEYREJECTED if the signature check fails, -ENOPKG if the signature uses
+ * unsupported crypto, or some other error if there is a matching certificate
+ * but the signature check cannot be performed.
*/
int restrict_link_by_key_or_keyring_chain(struct key *dest_keyring,
const struct key_type *type,
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Anholt <[email protected]>
commit fe32a815f05c8568669a062587435e15f9345764 upstream.
We were leaving them in the power on state (or the state the firmware
had set up for some client, if we were taking over from them). The
boot state was 30 core clocks, when we actually want to sample some
time after (to make sure that the new input bit has actually arrived).
Signed-off-by: Eric Anholt <[email protected]>
Signed-off-by: Boris Brezillon <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
Cc: [email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/i2c/busses/i2c-bcm2835.c | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
--- a/drivers/i2c/busses/i2c-bcm2835.c
+++ b/drivers/i2c/busses/i2c-bcm2835.c
@@ -50,6 +50,9 @@
#define BCM2835_I2C_S_CLKT BIT(9)
#define BCM2835_I2C_S_LEN BIT(10) /* Fake bit for SW error reporting */
+#define BCM2835_I2C_FEDL_SHIFT 16
+#define BCM2835_I2C_REDL_SHIFT 0
+
#define BCM2835_I2C_CDIV_MIN 0x0002
#define BCM2835_I2C_CDIV_MAX 0xFFFE
@@ -81,7 +84,7 @@ static inline u32 bcm2835_i2c_readl(stru
static int bcm2835_i2c_set_divider(struct bcm2835_i2c_dev *i2c_dev)
{
- u32 divider;
+ u32 divider, redl, fedl;
divider = DIV_ROUND_UP(clk_get_rate(i2c_dev->clk),
i2c_dev->bus_clk_rate);
@@ -100,6 +103,22 @@ static int bcm2835_i2c_set_divider(struc
bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_DIV, divider);
+ /*
+ * Number of core clocks to wait after falling edge before
+ * outputting the next data bit. Note that both FEDL and REDL
+ * can't be greater than CDIV/2.
+ */
+ fedl = max(divider / 16, 1u);
+
+ /*
+ * Number of core clocks to wait after rising edge before
+ * sampling the next incoming data bit.
+ */
+ redl = max(divider / 4, 1u);
+
+ bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_DEL,
+ (fedl << BCM2835_I2C_FEDL_SHIFT) |
+ (redl << BCM2835_I2C_REDL_SHIFT));
return 0;
}
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Paolo Abeni <[email protected]>
commit 01ea306f2ac2baff98d472da719193e738759d93 upstream.
The Syzbot reported a possible deadlock in the netfilter area caused by
rtnl lock, xt lock and socket lock being acquired with a different order
on different code paths, leading to the following backtrace:
Reviewed-by: Xin Long <[email protected]>
======================================================
WARNING: possible circular locking dependency detected
4.15.0+ #301 Not tainted
------------------------------------------------------
syzkaller233489/4179 is trying to acquire lock:
(rtnl_mutex){+.+.}, at: [<0000000048e996fd>] rtnl_lock+0x17/0x20
net/core/rtnetlink.c:74
but task is already holding lock:
(&xt[i].mutex){+.+.}, at: [<00000000328553a2>]
xt_find_table_lock+0x3e/0x3e0 net/netfilter/x_tables.c:1041
which lock already depends on the new lock.
===
Since commit 3f34cfae1230 ("netfilter: on sockopt() acquire sock lock
only in the required scope"), we already acquire the socket lock in
the innermost scope, where needed. In such commit I forgot to remove
the outer-most socket lock from the getsockopt() path, this commit
addresses the issues dropping it now.
v1 -> v2: fix bad subj, added relavant 'fixes' tag
Fixes: 22265a5c3c10 ("netfilter: xt_TEE: resolve oif using netdevice notifiers")
Fixes: 202f59afd441 ("netfilter: ipt_CLUSTERIP: do not hold dev")
Fixes: 3f34cfae1230 ("netfilter: on sockopt() acquire sock lock only in the required scope")
Reported-by: [email protected]
Suggested-by: Florian Westphal <[email protected]>
Signed-off-by: Paolo Abeni <[email protected]>
Signed-off-by: Pablo Neira Ayuso <[email protected]>
Tested-by: Krzysztof Piotr Oledzki <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
net/ipv4/ip_sockglue.c | 7 +------
net/ipv6/ipv6_sockglue.c | 10 ++--------
2 files changed, 3 insertions(+), 14 deletions(-)
--- a/net/ipv4/ip_sockglue.c
+++ b/net/ipv4/ip_sockglue.c
@@ -1563,10 +1563,7 @@ int ip_getsockopt(struct sock *sk, int l
if (get_user(len, optlen))
return -EFAULT;
- lock_sock(sk);
- err = nf_getsockopt(sk, PF_INET, optname, optval,
- &len);
- release_sock(sk);
+ err = nf_getsockopt(sk, PF_INET, optname, optval, &len);
if (err >= 0)
err = put_user(len, optlen);
return err;
@@ -1598,9 +1595,7 @@ int compat_ip_getsockopt(struct sock *sk
if (get_user(len, optlen))
return -EFAULT;
- lock_sock(sk);
err = compat_nf_getsockopt(sk, PF_INET, optname, optval, &len);
- release_sock(sk);
if (err >= 0)
err = put_user(len, optlen);
return err;
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -1355,10 +1355,7 @@ int ipv6_getsockopt(struct sock *sk, int
if (get_user(len, optlen))
return -EFAULT;
- lock_sock(sk);
- err = nf_getsockopt(sk, PF_INET6, optname, optval,
- &len);
- release_sock(sk);
+ err = nf_getsockopt(sk, PF_INET6, optname, optval, &len);
if (err >= 0)
err = put_user(len, optlen);
}
@@ -1397,10 +1394,7 @@ int compat_ipv6_getsockopt(struct sock *
if (get_user(len, optlen))
return -EFAULT;
- lock_sock(sk);
- err = compat_nf_getsockopt(sk, PF_INET6,
- optname, optval, &len);
- release_sock(sk);
+ err = compat_nf_getsockopt(sk, PF_INET6, optname, optval, &len);
if (err >= 0)
err = put_user(len, optlen);
}
Tony L/Greg
On 02/26/2018 02:21 PM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.14.23 release.
> There are 54 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
> Anything received after that time might be too late.
>
We have a build issue on 4.14.22 and can be re-created with this rc as well.
arch/arm/mach-omap2/omap-secure.o: In function `omap3_save_secure_ram':
omap-secure.c:(.text+0xe4): undefined reference to `save_secure_ram_context'
make: *** [vmlinux] Error 1
The issue was introduced with the back port of
b59a1da647f163d0bf035f823a908b45c357643a ARM: OMAP2+: Fix SRAM virt to phys translation for save_secure_ram_context
Dan
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.23-rc1.gz
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
>
> -------------
> Pseudo-Shortlog of commits:
>
> Greg Kroah-Hartman <[email protected]>
> Linux 4.14.23-rc1
>
> Chris Wilson <[email protected]>
> drm/i915/breadcrumbs: Ignore unsubmitted signalers
>
> Kai-Heng Feng <[email protected]>
> drm/amdgpu: add new device to use atpx quirk
>
> Alex Deucher <[email protected]>
> drm/amdgpu: Avoid leaking PM domain on driver unbind (v2)
>
> Alex Deucher <[email protected]>
> drm/amdgpu: add atpx quirk handling (v2)
>
> Alex Deucher <[email protected]>
> drm/amdgpu: only check mmBIF_IOV_FUNC_IDENTIFIER on tonga/fiji
>
> Alex Deucher <[email protected]>
> drm/amdgpu: Add dpm quirk for Jet PRO (v2)
>
> Huang Rui <[email protected]>
> drm/amdgpu: disable MMHUB power gating on raven
>
> Chris Wilson <[email protected]>
> drm: Handle unexpected holes in color-eviction
>
> Daniel Vetter <[email protected]>
> drm/cirrus: Load lut in crtc_commit
>
> Yoshihiro Shimoda <[email protected]>
> usb: renesas_usbhs: missed the "running" flag in usb_dmac with rx path
>
> Jack Pham <[email protected]>
> usb: gadget: f_fs: Use config_ep_by_speed()
>
> Jack Pham <[email protected]>
> usb: gadget: f_fs: Process all descriptors during bind
>
> Bin Liu <[email protected]>
> Revert "usb: musb: host: don't start next rx urb if current one failed"
>
> Karsten Koop <[email protected]>
> usb: ldusb: add PIDs for new CASSY devices supported by this driver
>
> Thinh Nguyen <[email protected]>
> usb: dwc3: ep0: Reset TRB counter for ep0 IN
>
> Thinh Nguyen <[email protected]>
> usb: dwc3: gadget: Set maxpacket size for ep0 IN
>
> Peter Chen <[email protected]>
> usb: host: ehci: use correct device pointer for dma ops
>
> Kai-Heng Feng <[email protected]>
> drm/edid: Add 6 bpc quirk for CPT panel in Asus UX303LA
>
> Jack Stocker <[email protected]>
> Add delay-init quirk for Corsair K70 RGB keyboards
>
> Will Deacon <[email protected]>
> arm64: cpufeature: Fix CTR_EL0 field definitions
>
> Michael Weiser <[email protected]>
> arm64: Disable unhandled signal log messages by default
>
> Michael Weiser <[email protected]>
> arm64: Remove unimplemented syscall log message
>
> AMAN DEEP <[email protected]>
> usb: ohci: Proper handling of ed_rm_list to handle race condition between usb_kill_urb() and finish_unlinks()
>
> Shigeru Yoshida <[email protected]>
> ohci-hcd: Fix race condition caused by ohci_urb_enqueue() and io_watchdog_func()
>
> Casey Leedom <[email protected]>
> PCI/cxgb4: Extend T3 PCI quirk to T4+ devices
>
> Matt Redfearn <[email protected]>
> irqchip/mips-gic: Avoid spuriously handling masked interrupts
>
> Shanker Donthineni <[email protected]>
> irqchip/gic-v3: Use wmb() instead of smb_wmb() in gic_raise_softirq()
>
> Huang Ying <[email protected]>
> mm, swap, frontswap: fix THP swap if frontswap enabled
>
> Arnd Bergmann <[email protected]>
> x86/oprofile: Fix bogus GCC-8 warning in nmi_setup()
>
> Arnd Bergmann <[email protected]>
> Kbuild: always define endianess in kconfig.h
>
> Lars-Peter Clausen <[email protected]>
> iio: adis_lib: Initialize trigger before requesting interrupt
>
> Stefan Windfeldt-Prytz <[email protected]>
> iio: buffer: check if a buffer has been set up when poll is called
>
> Andreas Klinger <[email protected]>
> iio: srf08: fix link error "devm_iio_triggered_buffer_setup" undefined
>
> Fabrice Gasnier <[email protected]>
> iio: adc: stm32: fix stm32h7_adc_enable error handling
>
> Leon Romanovsky <[email protected]>
> RDMA/uverbs: Sanitize user entered port numbers prior to access it
>
> Leon Romanovsky <[email protected]>
> RDMA/uverbs: Fix circular locking dependency
>
> Leon Romanovsky <[email protected]>
> RDMA/uverbs: Fix bad unlock balance in ib_uverbs_close_xrcd
>
> Leon Romanovsky <[email protected]>
> RDMA/uverbs: Protect from command mask overflow
>
> Leon Romanovsky <[email protected]>
> RDMA/uverbs: Protect from races between lookup and destroy of uobjects
>
> Hans de Goede <[email protected]>
> extcon: int3496: process id-pin first so that we start with the right status
>
> Eric Biggers <[email protected]>
> PKCS#7: fix certificate blacklisting
>
> Eric Biggers <[email protected]>
> PKCS#7: fix certificate chain verification
>
> Eric Biggers <[email protected]>
> X.509: fix NULL dereference when restricting key with unsupported_sig
>
> Eric Biggers <[email protected]>
> X.509: fix BUG_ON() when hash algorithm is unsupported
>
> Eric Anholt <[email protected]>
> i2c: bcm2835: Set up the rising/falling edge delays
>
> Ben Gardner <[email protected]>
> i2c: designware: must wait for enable
>
> Arnd Bergmann <[email protected]>
> cfg80211: fix cfg80211_beacon_dup
>
> James Hogan <[email protected]>
> MIPS: Drop spurious __unused in struct compat_flock
>
> Tyrel Datwyler <[email protected]>
> scsi: ibmvfc: fix misdefined reserved field in ibmvfc_fcp_rsp_info
>
> Max Filippov <[email protected]>
> xtensa: fix high memory/reserved memory collision
>
> Kees Cook <[email protected]>
> MIPS: boot: Define __ASSEMBLY__ for its.S build
>
> Kees Cook <[email protected]>
> kconfig.h: Include compiler types to avoid missed struct attributes
>
> Ard Biesheuvel <[email protected]>
> arm64: mm: don't write garbage into TTBR1_EL1 register
>
> Paolo Abeni <[email protected]>
> netfilter: drop outermost socket lock in getsockopt()
>
>
> -------------
>
> Diffstat:
>
> Makefile | 4 +-
> arch/arm64/kernel/cpufeature.c | 6 +-
> arch/arm64/kernel/traps.c | 10 +---
> arch/arm64/mm/proc.S | 2 +-
> arch/mips/boot/Makefile | 1 +
> arch/mips/include/asm/compat.h | 1 -
> arch/x86/oprofile/nmi_int.c | 2 +-
> arch/xtensa/mm/init.c | 70 +++++++++++++++++++++---
> crypto/asymmetric_keys/pkcs7_verify.c | 12 ++--
> crypto/asymmetric_keys/public_key.c | 4 +-
> crypto/asymmetric_keys/restrict.c | 21 ++++---
> drivers/extcon/extcon-intel-int3496.c | 3 +-
> drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c | 58 +++++++++++++++++---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 -
> drivers/gpu/drm/amd/amdgpu/si_dpm.c | 5 ++
> drivers/gpu/drm/amd/amdgpu/soc15.c | 4 +-
> drivers/gpu/drm/amd/amdgpu/vi.c | 21 ++++---
> drivers/gpu/drm/cirrus/cirrus_mode.c | 40 ++++++++------
> drivers/gpu/drm/drm_edid.c | 3 +
> drivers/gpu/drm/drm_mm.c | 21 ++++++-
> drivers/gpu/drm/i915/intel_breadcrumbs.c | 29 ++++------
> drivers/hid/hid-core.c | 3 +
> drivers/hid/hid-ids.h | 3 +
> drivers/i2c/busses/i2c-bcm2835.c | 21 ++++++-
> drivers/i2c/busses/i2c-designware-master.c | 2 +-
> drivers/iio/adc/stm32-adc.c | 7 ++-
> drivers/iio/imu/adis_trigger.c | 7 ++-
> drivers/iio/industrialio-buffer.c | 2 +-
> drivers/iio/proximity/Kconfig | 2 +
> drivers/infiniband/core/rdma_core.c | 10 +++-
> drivers/infiniband/core/uverbs_cmd.c | 16 ++++--
> drivers/infiniband/core/uverbs_main.c | 27 ++++++---
> drivers/irqchip/irq-gic-v3.c | 2 +-
> drivers/irqchip/irq-mips-gic.c | 2 -
> drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 10 ----
> drivers/pci/quirks.c | 39 +++++++------
> drivers/scsi/ibmvscsi/ibmvfc.h | 2 +-
> drivers/usb/core/quirks.c | 3 +
> drivers/usb/dwc3/ep0.c | 7 ++-
> drivers/usb/dwc3/gadget.c | 2 +
> drivers/usb/gadget/function/f_fs.c | 44 +++------------
> drivers/usb/host/ehci-hub.c | 4 +-
> drivers/usb/host/ohci-hcd.c | 10 +++-
> drivers/usb/host/ohci-hub.c | 4 +-
> drivers/usb/host/ohci-q.c | 17 +++---
> drivers/usb/misc/ldusb.c | 6 ++
> drivers/usb/musb/musb_host.c | 8 +--
> drivers/usb/renesas_usbhs/fifo.c | 5 ++
> drivers/xen/tmem.c | 4 ++
> include/linux/kconfig.h | 9 +++
> mm/zswap.c | 6 ++
> net/ipv4/ip_sockglue.c | 7 +--
> net/ipv6/ipv6_sockglue.c | 10 +---
> net/mac80211/cfg.c | 2 +-
> 54 files changed, 403 insertions(+), 219 deletions(-)
>
>
--
------------------
Dan Murphy
On Mon, Feb 26, 2018 at 02:58:24PM -0600, Dan Murphy wrote:
> Tony L/Greg
>
> On 02/26/2018 02:21 PM, Greg Kroah-Hartman wrote:
> > This is the start of the stable review cycle for the 4.14.23 release.
> > There are 54 patches in this series, all will be posted as a response
> > to this one. If anyone has any issues with these being applied, please
> > let me know.
> >
> > Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
> > Anything received after that time might be too late.
> >
>
> We have a build issue on 4.14.22 and can be re-created with this rc as well.
>
> arch/arm/mach-omap2/omap-secure.o: In function `omap3_save_secure_ram':
> omap-secure.c:(.text+0xe4): undefined reference to `save_secure_ram_context'
> make: *** [vmlinux] Error 1
>
> The issue was introduced with the back port of
>
> b59a1da647f163d0bf035f823a908b45c357643a ARM: OMAP2+: Fix SRAM virt to phys translation for save_secure_ram_context
>
Looks like you may have CONFIG_PM disabled, is that correct ?
Is there a default configuration that we can use to reproduce
the problem ?
Guenter
> Dan
>
>
> > The whole patch series can be found in one patch at:
> > https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.23-rc1.gz
> > or in the git tree and branch at:
> > git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
> > and the diffstat can be found below.
> >
> > thanks,
> >
> > greg k-h
> >
> > -------------
> > Pseudo-Shortlog of commits:
> >
> > Greg Kroah-Hartman <[email protected]>
> > Linux 4.14.23-rc1
> >
> > Chris Wilson <[email protected]>
> > drm/i915/breadcrumbs: Ignore unsubmitted signalers
> >
> > Kai-Heng Feng <[email protected]>
> > drm/amdgpu: add new device to use atpx quirk
> >
> > Alex Deucher <[email protected]>
> > drm/amdgpu: Avoid leaking PM domain on driver unbind (v2)
> >
> > Alex Deucher <[email protected]>
> > drm/amdgpu: add atpx quirk handling (v2)
> >
> > Alex Deucher <[email protected]>
> > drm/amdgpu: only check mmBIF_IOV_FUNC_IDENTIFIER on tonga/fiji
> >
> > Alex Deucher <[email protected]>
> > drm/amdgpu: Add dpm quirk for Jet PRO (v2)
> >
> > Huang Rui <[email protected]>
> > drm/amdgpu: disable MMHUB power gating on raven
> >
> > Chris Wilson <[email protected]>
> > drm: Handle unexpected holes in color-eviction
> >
> > Daniel Vetter <[email protected]>
> > drm/cirrus: Load lut in crtc_commit
> >
> > Yoshihiro Shimoda <[email protected]>
> > usb: renesas_usbhs: missed the "running" flag in usb_dmac with rx path
> >
> > Jack Pham <[email protected]>
> > usb: gadget: f_fs: Use config_ep_by_speed()
> >
> > Jack Pham <[email protected]>
> > usb: gadget: f_fs: Process all descriptors during bind
> >
> > Bin Liu <[email protected]>
> > Revert "usb: musb: host: don't start next rx urb if current one failed"
> >
> > Karsten Koop <[email protected]>
> > usb: ldusb: add PIDs for new CASSY devices supported by this driver
> >
> > Thinh Nguyen <[email protected]>
> > usb: dwc3: ep0: Reset TRB counter for ep0 IN
> >
> > Thinh Nguyen <[email protected]>
> > usb: dwc3: gadget: Set maxpacket size for ep0 IN
> >
> > Peter Chen <[email protected]>
> > usb: host: ehci: use correct device pointer for dma ops
> >
> > Kai-Heng Feng <[email protected]>
> > drm/edid: Add 6 bpc quirk for CPT panel in Asus UX303LA
> >
> > Jack Stocker <[email protected]>
> > Add delay-init quirk for Corsair K70 RGB keyboards
> >
> > Will Deacon <[email protected]>
> > arm64: cpufeature: Fix CTR_EL0 field definitions
> >
> > Michael Weiser <[email protected]>
> > arm64: Disable unhandled signal log messages by default
> >
> > Michael Weiser <[email protected]>
> > arm64: Remove unimplemented syscall log message
> >
> > AMAN DEEP <[email protected]>
> > usb: ohci: Proper handling of ed_rm_list to handle race condition between usb_kill_urb() and finish_unlinks()
> >
> > Shigeru Yoshida <[email protected]>
> > ohci-hcd: Fix race condition caused by ohci_urb_enqueue() and io_watchdog_func()
> >
> > Casey Leedom <[email protected]>
> > PCI/cxgb4: Extend T3 PCI quirk to T4+ devices
> >
> > Matt Redfearn <[email protected]>
> > irqchip/mips-gic: Avoid spuriously handling masked interrupts
> >
> > Shanker Donthineni <[email protected]>
> > irqchip/gic-v3: Use wmb() instead of smb_wmb() in gic_raise_softirq()
> >
> > Huang Ying <[email protected]>
> > mm, swap, frontswap: fix THP swap if frontswap enabled
> >
> > Arnd Bergmann <[email protected]>
> > x86/oprofile: Fix bogus GCC-8 warning in nmi_setup()
> >
> > Arnd Bergmann <[email protected]>
> > Kbuild: always define endianess in kconfig.h
> >
> > Lars-Peter Clausen <[email protected]>
> > iio: adis_lib: Initialize trigger before requesting interrupt
> >
> > Stefan Windfeldt-Prytz <[email protected]>
> > iio: buffer: check if a buffer has been set up when poll is called
> >
> > Andreas Klinger <[email protected]>
> > iio: srf08: fix link error "devm_iio_triggered_buffer_setup" undefined
> >
> > Fabrice Gasnier <[email protected]>
> > iio: adc: stm32: fix stm32h7_adc_enable error handling
> >
> > Leon Romanovsky <[email protected]>
> > RDMA/uverbs: Sanitize user entered port numbers prior to access it
> >
> > Leon Romanovsky <[email protected]>
> > RDMA/uverbs: Fix circular locking dependency
> >
> > Leon Romanovsky <[email protected]>
> > RDMA/uverbs: Fix bad unlock balance in ib_uverbs_close_xrcd
> >
> > Leon Romanovsky <[email protected]>
> > RDMA/uverbs: Protect from command mask overflow
> >
> > Leon Romanovsky <[email protected]>
> > RDMA/uverbs: Protect from races between lookup and destroy of uobjects
> >
> > Hans de Goede <[email protected]>
> > extcon: int3496: process id-pin first so that we start with the right status
> >
> > Eric Biggers <[email protected]>
> > PKCS#7: fix certificate blacklisting
> >
> > Eric Biggers <[email protected]>
> > PKCS#7: fix certificate chain verification
> >
> > Eric Biggers <[email protected]>
> > X.509: fix NULL dereference when restricting key with unsupported_sig
> >
> > Eric Biggers <[email protected]>
> > X.509: fix BUG_ON() when hash algorithm is unsupported
> >
> > Eric Anholt <[email protected]>
> > i2c: bcm2835: Set up the rising/falling edge delays
> >
> > Ben Gardner <[email protected]>
> > i2c: designware: must wait for enable
> >
> > Arnd Bergmann <[email protected]>
> > cfg80211: fix cfg80211_beacon_dup
> >
> > James Hogan <[email protected]>
> > MIPS: Drop spurious __unused in struct compat_flock
> >
> > Tyrel Datwyler <[email protected]>
> > scsi: ibmvfc: fix misdefined reserved field in ibmvfc_fcp_rsp_info
> >
> > Max Filippov <[email protected]>
> > xtensa: fix high memory/reserved memory collision
> >
> > Kees Cook <[email protected]>
> > MIPS: boot: Define __ASSEMBLY__ for its.S build
> >
> > Kees Cook <[email protected]>
> > kconfig.h: Include compiler types to avoid missed struct attributes
> >
> > Ard Biesheuvel <[email protected]>
> > arm64: mm: don't write garbage into TTBR1_EL1 register
> >
> > Paolo Abeni <[email protected]>
> > netfilter: drop outermost socket lock in getsockopt()
> >
> >
> > -------------
> >
> > Diffstat:
> >
> > Makefile | 4 +-
> > arch/arm64/kernel/cpufeature.c | 6 +-
> > arch/arm64/kernel/traps.c | 10 +---
> > arch/arm64/mm/proc.S | 2 +-
> > arch/mips/boot/Makefile | 1 +
> > arch/mips/include/asm/compat.h | 1 -
> > arch/x86/oprofile/nmi_int.c | 2 +-
> > arch/xtensa/mm/init.c | 70 +++++++++++++++++++++---
> > crypto/asymmetric_keys/pkcs7_verify.c | 12 ++--
> > crypto/asymmetric_keys/public_key.c | 4 +-
> > crypto/asymmetric_keys/restrict.c | 21 ++++---
> > drivers/extcon/extcon-intel-int3496.c | 3 +-
> > drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c | 58 +++++++++++++++++---
> > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 -
> > drivers/gpu/drm/amd/amdgpu/si_dpm.c | 5 ++
> > drivers/gpu/drm/amd/amdgpu/soc15.c | 4 +-
> > drivers/gpu/drm/amd/amdgpu/vi.c | 21 ++++---
> > drivers/gpu/drm/cirrus/cirrus_mode.c | 40 ++++++++------
> > drivers/gpu/drm/drm_edid.c | 3 +
> > drivers/gpu/drm/drm_mm.c | 21 ++++++-
> > drivers/gpu/drm/i915/intel_breadcrumbs.c | 29 ++++------
> > drivers/hid/hid-core.c | 3 +
> > drivers/hid/hid-ids.h | 3 +
> > drivers/i2c/busses/i2c-bcm2835.c | 21 ++++++-
> > drivers/i2c/busses/i2c-designware-master.c | 2 +-
> > drivers/iio/adc/stm32-adc.c | 7 ++-
> > drivers/iio/imu/adis_trigger.c | 7 ++-
> > drivers/iio/industrialio-buffer.c | 2 +-
> > drivers/iio/proximity/Kconfig | 2 +
> > drivers/infiniband/core/rdma_core.c | 10 +++-
> > drivers/infiniband/core/uverbs_cmd.c | 16 ++++--
> > drivers/infiniband/core/uverbs_main.c | 27 ++++++---
> > drivers/irqchip/irq-gic-v3.c | 2 +-
> > drivers/irqchip/irq-mips-gic.c | 2 -
> > drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 10 ----
> > drivers/pci/quirks.c | 39 +++++++------
> > drivers/scsi/ibmvscsi/ibmvfc.h | 2 +-
> > drivers/usb/core/quirks.c | 3 +
> > drivers/usb/dwc3/ep0.c | 7 ++-
> > drivers/usb/dwc3/gadget.c | 2 +
> > drivers/usb/gadget/function/f_fs.c | 44 +++------------
> > drivers/usb/host/ehci-hub.c | 4 +-
> > drivers/usb/host/ohci-hcd.c | 10 +++-
> > drivers/usb/host/ohci-hub.c | 4 +-
> > drivers/usb/host/ohci-q.c | 17 +++---
> > drivers/usb/misc/ldusb.c | 6 ++
> > drivers/usb/musb/musb_host.c | 8 +--
> > drivers/usb/renesas_usbhs/fifo.c | 5 ++
> > drivers/xen/tmem.c | 4 ++
> > include/linux/kconfig.h | 9 +++
> > mm/zswap.c | 6 ++
> > net/ipv4/ip_sockglue.c | 7 +--
> > net/ipv6/ipv6_sockglue.c | 10 +---
> > net/mac80211/cfg.c | 2 +-
> > 54 files changed, 403 insertions(+), 219 deletions(-)
> >
> >
>
>
> --
> ------------------
> Dan Murphy
> CONFIG_NO_HZ=y
> CONFIG_HIGH_RES_TIMERS=y
> CONFIG_BLK_DEV_INITRD=y
> CONFIG_PERF_EVENTS=y
> CONFIG_PARTITION_ADVANCED=y
> CONFIG_CMDLINE_PARTITION=y
> # CONFIG_ARCH_MULTI_V5 is not set
> # CONFIG_ARCH_MULTI_V4 is not set
> CONFIG_MACH_ARTPEC6=y
> CONFIG_MACH_ARMADA_370=y
> CONFIG_MACH_ARMADA_375=y
> CONFIG_MACH_ARMADA_38X=y
> CONFIG_MACH_ARMADA_39X=y
> CONFIG_MACH_ARMADA_XP=y
> CONFIG_MACH_DOVE=y
> CONFIG_SOC_SAMA5D2=y
> CONFIG_SOC_SAMA5D3=y
> CONFIG_SOC_SAMA5D4=y
> CONFIG_ARCH_BCM2835=y
> CONFIG_ARCH_BCM_63XX=y
> CONFIG_MACH_BERLIN_BG2=y
> CONFIG_MACH_BERLIN_BG2CD=y
> CONFIG_MACH_BERLIN_BG2Q=y
> CONFIG_SOC_IMX50=y
> CONFIG_SOC_IMX51=y
> CONFIG_SOC_IMX53=y
> CONFIG_SOC_IMX6Q=y
> CONFIG_SOC_IMX6SL=y
> CONFIG_SOC_IMX6SX=y
> CONFIG_SOC_IMX6UL=y
> CONFIG_SOC_IMX7D=y
> CONFIG_SOC_VF610=y
> CONFIG_SOC_LS1021A=y
> CONFIG_MACH_SPEAR1310=y
> CONFIG_MACH_SPEAR1340=y
> CONFIG_EXYNOS5420_MCPM=y
> CONFIG_ARCH_R8A7743=y
> CONFIG_ARCH_R8A7745=y
> CONFIG_ARCH_R8A7792=y
> CONFIG_MACH_HREFV60=y
> CONFIG_MACH_SNOWBALL=y
> CONFIG_TRUSTED_FOUNDATIONS=y
> CONFIG_PCI_HOST_GENERIC=y
> CONFIG_PCI_KEYSTONE=y
> CONFIG_PCI_MSI=y
> CONFIG_PCI_MVEBU=y
> CONFIG_PCI_TEGRA=y
> CONFIG_PCI_RCAR_GEN2=y
> CONFIG_PCIE_RCAR=y
> CONFIG_PCIEPORTBUS=y
> CONFIG_HIGHPTE=y
> CONFIG_CMA=y
> CONFIG_EFI=y
> CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
> CONFIG_ARM_IMX6Q_CPUFREQ=y
> CONFIG_ARM_ZYNQ_CPUIDLE=y
> CONFIG_ARM_EXYNOS_CPUIDLE=y
> CONFIG_PACKET=y
> CONFIG_UNIX=y
> CONFIG_IP_PNP=y
> CONFIG_IP_PNP_DHCP=y
> CONFIG_IP_PNP_BOOTP=y
> CONFIG_IP_PNP_RARP=y
> CONFIG_IPV6_ROUTER_PREF=y
> CONFIG_IPV6_OPTIMISTIC_DAD=y
> CONFIG_INET6_ESP=m
> CONFIG_IPV6_MIP6=m
> CONFIG_IPV6_MULTIPLE_TABLES=y
> CONFIG_NET_DSA=m
> CONFIG_NET_SWITCHDEV=y
> CONFIG_CAN_RAW=y
> CONFIG_CAN_BCM=y
> CONFIG_CAN_DEV=y
> CONFIG_CAN_AT91=m
> CONFIG_CAN_RCAR=m
> CONFIG_CAN_XILINXCAN=y
> CONFIG_CAN_MCP251X=y
> CONFIG_B53_SPI_DRIVER=m
> CONFIG_B53_MDIO_DRIVER=m
> CONFIG_B53_MMAP_DRIVER=m
> CONFIG_B53_SRAB_DRIVER=m
> CONFIG_CAN_SUN4I=y
> CONFIG_BT=m
> CONFIG_BT_MRVL=m
> CONFIG_BT_MRVL_SDIO=m
> CONFIG_CFG80211=m
> CONFIG_MAC80211=m
> CONFIG_RFKILL=y
> CONFIG_RFKILL_INPUT=y
> CONFIG_RFKILL_GPIO=y
> CONFIG_DMA_CMA=y
> CONFIG_OMAP_OCP2SCP=y
> CONFIG_SIMPLE_PM_BUS=y
> CONFIG_SUNXI_RSB=y
> CONFIG_MTD=y
> CONFIG_MTD_CMDLINE_PARTS=y
> CONFIG_MTD_BLOCK=y
> CONFIG_MTD_M25P80=y
> CONFIG_MTD_NAND=y
> CONFIG_MTD_NAND_DENALI_DT=y
> CONFIG_MTD_NAND_ATMEL=y
> CONFIG_MTD_NAND_BRCMNAND=y
> CONFIG_MTD_NAND_VF610_NFC=y
> CONFIG_MTD_NAND_DAVINCI=y
> CONFIG_MTD_SPI_NOR=y
> CONFIG_SPI_FSL_QUADSPI=m
> CONFIG_MTD_UBI=y
> CONFIG_BLK_DEV_LOOP=y
> CONFIG_BLK_DEV_RAM=y
> CONFIG_BLK_DEV_RAM_SIZE=65536
> CONFIG_VIRTIO_BLK=y
> CONFIG_AD525X_DPOT=y
> CONFIG_AD525X_DPOT_I2C=y
> CONFIG_ATMEL_TCLIB=y
> CONFIG_ICS932S401=y
> CONFIG_ATMEL_SSC=m
> CONFIG_QCOM_COINCELL=m
> CONFIG_APDS9802ALS=y
> CONFIG_ISL29003=y
> CONFIG_EEPROM_AT24=y
> CONFIG_BLK_DEV_SD=y
> CONFIG_BLK_DEV_SR=y
> CONFIG_SCSI_MULTI_LUN=y
> CONFIG_AHCI_BRCM=y
> CONFIG_AHCI_DM816=y
> CONFIG_AHCI_ST=y
> CONFIG_AHCI_IMX=y
> CONFIG_AHCI_SUNXI=y
> CONFIG_AHCI_TEGRA=y
> CONFIG_SATA_HIGHBANK=y
> CONFIG_SATA_MV=y
> CONFIG_SATA_RCAR=y
> CONFIG_NETDEVICES=y
> CONFIG_VIRTIO_NET=y
> CONFIG_HIX5HD2_GMAC=y
> CONFIG_SUN4I_EMAC=y
> CONFIG_MACB=y
> CONFIG_BGMAC_BCMA=y
> CONFIG_NET_CALXEDA_XGMAC=y
> CONFIG_GIANFAR=y
> CONFIG_MV643XX_ETH=y
> CONFIG_MVNETA=y
> CONFIG_PXA168_ETH=m
> CONFIG_KS8851=y
> CONFIG_R8169=y
> CONFIG_SH_ETH=y
> CONFIG_SMSC911X=y
> CONFIG_STMMAC_ETH=y
> CONFIG_STMMAC_PLATFORM=y
> CONFIG_DWMAC_DWC_QOS_ETH=y
> CONFIG_XILINX_EMACLITE=y
> CONFIG_AT803X_PHY=y
> CONFIG_SMSC_PHY=y
> CONFIG_REALTEK_PHY=y
> CONFIG_FIXED_PHY=y
> CONFIG_ROCKCHIP_PHY=y
> CONFIG_USB_PEGASUS=y
> CONFIG_USB_RTL8152=m
> CONFIG_USB_NET_SMSC75XX=y
> CONFIG_BRCMFMAC=m
> CONFIG_RT2X00=m
> CONFIG_RT2800USB=m
> CONFIG_MWIFIEX=m
> CONFIG_MWIFIEX_SDIO=m
> CONFIG_INPUT_JOYDEV=y
> CONFIG_INPUT_EVDEV=y
> CONFIG_KEYBOARD_QT1070=m
> CONFIG_KEYBOARD_GPIO=y
> CONFIG_KEYBOARD_TEGRA=y
> CONFIG_KEYBOARD_SPEAR=y
> CONFIG_KEYBOARD_ST_KEYSCAN=y
> CONFIG_KEYBOARD_CROS_EC=m
> CONFIG_KEYBOARD_SAMSUNG=m
> CONFIG_MOUSE_PS2_ELANTECH=y
> CONFIG_MOUSE_CYAPA=m
> CONFIG_MOUSE_ELAN_I2C=y
> CONFIG_INPUT_TOUCHSCREEN=y
> CONFIG_TOUCHSCREEN_ATMEL_MXT=m
> CONFIG_TOUCHSCREEN_MMS114=m
> CONFIG_TOUCHSCREEN_ST1232=m
> CONFIG_TOUCHSCREEN_STMPE=y
> CONFIG_TOUCHSCREEN_SUN4I=y
> CONFIG_TOUCHSCREEN_WM97XX=m
> CONFIG_INPUT_MISC=y
> CONFIG_INPUT_MAX77693_HAPTIC=m
> CONFIG_INPUT_MAX8997_HAPTIC=m
> CONFIG_INPUT_AXP20X_PEK=m
> CONFIG_INPUT_ADXL34X=m
> CONFIG_SERIO_AMBAKMI=y
> CONFIG_SERIAL_8250=y
> CONFIG_SERIAL_8250_CONSOLE=y
> CONFIG_SERIAL_8250_MT6577=y
> CONFIG_SERIAL_8250_UNIPHIER=y
> CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
> CONFIG_SERIAL_ATMEL=y
> CONFIG_SERIAL_ATMEL_CONSOLE=y
> CONFIG_SERIAL_ATMEL_TTYAT=y
> CONFIG_SERIAL_BCM63XX=y
> CONFIG_SERIAL_BCM63XX_CONSOLE=y
> CONFIG_SERIAL_MESON=y
> CONFIG_SERIAL_MESON_CONSOLE=y
> CONFIG_SERIAL_SAMSUNG=y
> CONFIG_SERIAL_SAMSUNG_CONSOLE=y
> CONFIG_SERIAL_SIRFSOC=y
> CONFIG_SERIAL_SIRFSOC_CONSOLE=y
> CONFIG_SERIAL_TEGRA=y
> CONFIG_SERIAL_IMX=y
> CONFIG_SERIAL_IMX_CONSOLE=y
> CONFIG_SERIAL_SH_SCI=y
> CONFIG_SERIAL_SH_SCI_NR_UARTS=20
> CONFIG_SERIAL_SH_SCI_CONSOLE=y
> CONFIG_SERIAL_SH_SCI_DMA=y
> CONFIG_SERIAL_MSM=y
> CONFIG_SERIAL_MSM_CONSOLE=y
> CONFIG_SERIAL_VT8500=y
> CONFIG_SERIAL_VT8500_CONSOLE=y
> CONFIG_SERIAL_OF_PLATFORM=y
> CONFIG_SERIAL_OMAP_CONSOLE=y
> CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y
> CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
> CONFIG_SERIAL_CONEXANT_DIGICOLOR_CONSOLE=y
> CONFIG_SERIAL_ST_ASC_CONSOLE=y
> CONFIG_HVC_DRIVER=y
> CONFIG_VIRTIO_CONSOLE=y
> CONFIG_I2C_CHARDEV=y
> CONFIG_I2C_DAVINCI=y
> CONFIG_I2C_ARB_GPIO_CHALLENGE=m
> CONFIG_I2C_MUX_PCA954x=y
> CONFIG_I2C_MUX_PINCTRL=y
> CONFIG_I2C_DEMUX_PINCTRL=y
> CONFIG_I2C_AT91=m
> CONFIG_I2C_BCM2835=y
> CONFIG_I2C_CADENCE=y
> CONFIG_I2C_DIGICOLOR=m
> CONFIG_I2C_EMEV2=m
> CONFIG_I2C_EXYNOS5=y
> CONFIG_I2C_IMX=m
> CONFIG_I2C_MV64XXX=y
> CONFIG_I2C_RIIC=y
> CONFIG_I2C_S3C2410=y
> CONFIG_I2C_SH_MOBILE=y
> CONFIG_I2C_SIRF=y
> CONFIG_I2C_ST=y
> CONFIG_I2C_SUN6I_P2WI=y
> CONFIG_I2C_TEGRA=y
> CONFIG_I2C_UNIPHIER=y
> CONFIG_I2C_UNIPHIER_F=y
> CONFIG_I2C_RCAR=y
> CONFIG_I2C_CROS_EC_TUNNEL=m
> CONFIG_I2C_SLAVE_EEPROM=y
> CONFIG_SPI=y
> CONFIG_SPI_ATMEL=m
> CONFIG_SPI_BCM2835=y
> CONFIG_SPI_BCM2835AUX=y
> CONFIG_SPI_DAVINCI=y
> CONFIG_SPI_GPIO=m
> CONFIG_SPI_FSL_DSPI=m
> CONFIG_SPI_OMAP24XX=y
> CONFIG_SPI_ORION=y
> CONFIG_SPI_PL022=y
> CONFIG_SPI_RSPI=y
> CONFIG_SPI_S3C64XX=m
> CONFIG_SPI_SH_MSIOF=m
> CONFIG_SPI_SH_HSPI=y
> CONFIG_SPI_SIRF=y
> CONFIG_SPI_SUN4I=y
> CONFIG_SPI_SUN6I=y
> CONFIG_SPI_TEGRA114=y
> CONFIG_SPI_TEGRA20_SFLASH=y
> CONFIG_SPI_TEGRA20_SLINK=y
> CONFIG_SPMI=y
> CONFIG_PINCTRL_AS3722=y
> CONFIG_PINCTRL_PALMAS=y
> CONFIG_PINCTRL_BCM2835=y
> CONFIG_PINCTRL_APQ8064=y
> CONFIG_PINCTRL_APQ8084=y
> CONFIG_PINCTRL_IPQ8064=y
> CONFIG_PINCTRL_MSM8660=y
> CONFIG_PINCTRL_MSM8960=y
> CONFIG_PINCTRL_MSM8X74=y
> CONFIG_PINCTRL_MSM8916=y
> CONFIG_PINCTRL_QCOM_SPMI_PMIC=y
> CONFIG_PINCTRL_QCOM_SSBI_PMIC=y
> CONFIG_GPIO_DAVINCI=y
> CONFIG_GPIO_RCAR=y
> CONFIG_GPIO_ZYNQ=y
> CONFIG_GPIO_PCA953X_IRQ=y
> CONFIG_GPIO_TWL4030=y
> CONFIG_GPIO_PALMAS=y
> CONFIG_GPIO_SYSCON=y
> CONFIG_GPIO_TPS65910=y
> CONFIG_BATTERY_ACT8945A=y
> CONFIG_BATTERY_SBS=y
> CONFIG_BATTERY_MAX17040=m
> CONFIG_BATTERY_MAX17042=m
> CONFIG_CHARGER_MAX14577=m
> CONFIG_CHARGER_MAX77693=m
> CONFIG_CHARGER_MAX8997=m
> CONFIG_CHARGER_MAX8998=m
> CONFIG_CHARGER_TPS65090=y
> CONFIG_AXP20X_POWER=m
> CONFIG_POWER_RESET_AS3722=y
> CONFIG_POWER_RESET_GPIO=y
> CONFIG_POWER_RESET_GPIO_RESTART=y
> CONFIG_POWER_RESET_KEYSTONE=y
> CONFIG_POWER_RESET_RMOBILE=y
> CONFIG_POWER_RESET_ST=y
> CONFIG_POWER_AVS=y
> CONFIG_ROCKCHIP_IODOMAIN=y
> CONFIG_SENSORS_IIO_HWMON=y
> CONFIG_SENSORS_LM90=y
> CONFIG_SENSORS_LM95245=y
> CONFIG_SENSORS_NTC_THERMISTOR=m
> CONFIG_SENSORS_PWM_FAN=m
> CONFIG_SENSORS_INA2XX=m
> CONFIG_BRCMSTB_THERMAL=m
> CONFIG_ROCKCHIP_THERMAL=y
> CONFIG_RCAR_THERMAL=y
> CONFIG_ARMADA_THERMAL=y
> CONFIG_DAVINCI_WATCHDOG=m
> CONFIG_EXYNOS_THERMAL=m
> CONFIG_ST_THERMAL_MEMMAP=y
> CONFIG_DA9063_WATCHDOG=m
> CONFIG_ARM_SP805_WATCHDOG=y
> CONFIG_AT91SAM9X_WATCHDOG=y
> CONFIG_SAMA5D4_WATCHDOG=y
> CONFIG_ORION_WATCHDOG=y
> CONFIG_ST_LPC_WATCHDOG=y
> CONFIG_SUNXI_WATCHDOG=y
> CONFIG_IMX2_WDT=y
> CONFIG_TEGRA_WATCHDOG=m
> CONFIG_MESON_WATCHDOG=y
> CONFIG_DIGICOLOR_WATCHDOG=y
> CONFIG_BCM2835_WDT=y
> CONFIG_BCM47XX_WDT=y
> CONFIG_BCM_KONA_WDT=y
> CONFIG_MFD_ACT8945A=y
> CONFIG_MFD_AC100=y
> CONFIG_MFD_AXP20X_RSB=y
> CONFIG_MFD_QCOM_RPM=y
> CONFIG_MFD_SPMI_PMIC=y
> CONFIG_REGULATOR_ACT8945A=y
> CONFIG_REGULATOR_AB8500=y
> CONFIG_POWER_RESET_SYSCON=y
> CONFIG_REGULATOR_MAX8997=m
> CONFIG_REGULATOR_MAX8998=m
> CONFIG_REGULATOR_QCOM_RPM=y
> CONFIG_REGULATOR_QCOM_SMD_RPM=y
> CONFIG_REGULATOR_WM8994=m
> CONFIG_USB_GSPCA=y
> CONFIG_SOC_CAMERA=m
> CONFIG_SOC_CAMERA_PLATFORM=m
> CONFIG_VIDEO_RCAR_VIN=m
> CONFIG_VIDEO_ATMEL_ISI=m
> CONFIG_VIDEO_SAMSUNG_EXYNOS4_IS=m
> CONFIG_VIDEO_S5P_FIMC=m
> CONFIG_VIDEO_S5P_MIPI_CSIS=m
> CONFIG_VIDEO_EXYNOS_FIMC_LITE=m
> CONFIG_VIDEO_EXYNOS4_FIMC_IS=m
> CONFIG_VIDEO_SAMSUNG_S5P_JPEG=m
> CONFIG_VIDEO_SAMSUNG_S5P_MFC=m
> CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC=m
> CONFIG_VIDEO_STI_BDISP=m
> CONFIG_VIDEO_STI_HVA=m
> CONFIG_VIDEO_STI_DELTA=m
> CONFIG_VIDEO_RENESAS_JPU=m
> CONFIG_VIDEO_RENESAS_VSP1=m
> CONFIG_V4L_TEST_DRIVERS=y
> CONFIG_VIDEO_ADV7180=m
> CONFIG_VIDEO_ML86V7667=m
> CONFIG_DRM_I2C_ADV7511_AUDIO=y
> # CONFIG_DRM_I2C_CH7006 is not set
> # CONFIG_DRM_I2C_SIL164 is not set
> CONFIG_DRM_DUMB_VGA_DAC=m
> CONFIG_DRM_EXYNOS_FIMD=y
> CONFIG_DRM_EXYNOS_MIXER=y
> CONFIG_DRM_EXYNOS_DPI=y
> CONFIG_DRM_EXYNOS_DSI=y
> CONFIG_DRM_EXYNOS_HDMI=y
> CONFIG_DRM_ROCKCHIP=m
> CONFIG_ROCKCHIP_ANALOGIX_DP=y
> CONFIG_ROCKCHIP_DW_HDMI=y
> CONFIG_ROCKCHIP_DW_MIPI_DSI=y
> CONFIG_ROCKCHIP_INNO_HDMI=y
> CONFIG_DRM_ATMEL_HLCDC=m
> CONFIG_DRM_RCAR_DU=m
> CONFIG_DRM_RCAR_LVDS=y
> CONFIG_DRM_SUN4I=m
> CONFIG_DRM_TEGRA=y
> CONFIG_DRM_PANEL_SAMSUNG_LD9040=m
> CONFIG_DRM_VC4=y
> CONFIG_FB_ARMCLCD=y
> CONFIG_FB_EFI=y
> CONFIG_FB_WM8505=y
> CONFIG_FB_SH_MOBILE_LCDC=y
> CONFIG_FB_SIMPLE=y
> CONFIG_FB_SH_MOBILE_MERAM=y
> CONFIG_BACKLIGHT_LCD_SUPPORT=y
> CONFIG_BACKLIGHT_CLASS_DEVICE=y
> CONFIG_LCD_PLATFORM=m
> CONFIG_BACKLIGHT_AS3711=y
> CONFIG_FRAMEBUFFER_CONSOLE=y
> CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
> CONFIG_SND_DYNAMIC_MINORS=y
> CONFIG_SND_HDA_TEGRA=m
> CONFIG_SND_HDA_INPUT_BEEP=y
> CONFIG_SND_HDA_PATCH_LOADER=y
> CONFIG_SND_HDA_CODEC_REALTEK=m
> CONFIG_SND_HDA_CODEC_HDMI=m
> CONFIG_SND_USB_AUDIO=m
> CONFIG_SND_ATMEL_SOC_WM8904=m
> CONFIG_SND_ATMEL_SOC_PDMIC=m
> CONFIG_SND_BCM2835_SOC_I2S=m
> CONFIG_SND_SOC_ROCKCHIP=m
> CONFIG_SND_SOC_ROCKCHIP_SPDIF=m
> CONFIG_SND_SOC_ROCKCHIP_MAX98090=m
> CONFIG_SND_SOC_ROCKCHIP_RT5645=m
> CONFIG_SND_SOC_SAMSUNG=m
> CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994=m
> CONFIG_SND_SOC_SMDK_WM8994_PCM=m
> CONFIG_SND_SOC_SNOW=m
> CONFIG_SND_SOC_SH4_FSI=m
> CONFIG_SND_SOC_RCAR=m
> CONFIG_SND_SIMPLE_SCU_CARD=m
> CONFIG_SND_SUN4I_CODEC=m
> CONFIG_SND_SOC_TEGRA=m
> CONFIG_SND_SOC_TEGRA20_I2S=m
> CONFIG_SND_SOC_TEGRA30_I2S=m
> CONFIG_SND_SOC_TEGRA_RT5640=m
> CONFIG_SND_SOC_TEGRA_WM8753=m
> CONFIG_SND_SOC_TEGRA_WM8903=m
> CONFIG_SND_SOC_TEGRA_WM9712=m
> CONFIG_SND_SOC_TEGRA_TRIMSLICE=m
> CONFIG_SND_SOC_TEGRA_ALC5632=m
> CONFIG_SND_SOC_TEGRA_MAX98090=m
> CONFIG_SND_SOC_SPDIF=m
> CONFIG_SND_SOC_STI=m
> CONFIG_USB_XHCI_HCD=y
> CONFIG_USB_XHCI_MVEBU=y
> CONFIG_USB_XHCI_RCAR=m
> CONFIG_USB_XHCI_TEGRA=m
> CONFIG_USB_EHCI_MSM=m
> CONFIG_USB_EHCI_EXYNOS=y
> CONFIG_USB_EHCI_TEGRA=y
> CONFIG_USB_EHCI_HCD_STI=y
> CONFIG_USB_EHCI_HCD_PLATFORM=y
> CONFIG_USB_ISP1760=y
> CONFIG_USB_OHCI_HCD=y
> CONFIG_USB_OHCI_HCD_STI=y
> CONFIG_USB_OHCI_HCD_PLATFORM=y
> CONFIG_USB_OHCI_EXYNOS=m
> CONFIG_USB_R8A66597_HCD=m
> CONFIG_USB_RENESAS_USBHS=m
> CONFIG_USB_STORAGE=y
> CONFIG_USB_MUSB_SUNXI=m
> CONFIG_USB_CHIPIDEA_UDC=y
> CONFIG_USB_CHIPIDEA_HOST=y
> CONFIG_AB8500_USB=y
> CONFIG_KEYSTONE_USB_PHY=y
> CONFIG_USB_GPIO_VBUS=y
> CONFIG_USB_ISP1301=y
> CONFIG_USB_MSM_OTG=m
> CONFIG_USB_MXS_PHY=y
> CONFIG_USB_FSL_USB2=y
> CONFIG_USB_RENESAS_USBHS_UDC=m
> CONFIG_MMC_BLOCK_MINORS=16
> CONFIG_MMC_ARMMMCI=y
> CONFIG_MMC_SDHCI_OF_ARASAN=y
> CONFIG_MMC_SDHCI_OF_AT91=y
> CONFIG_MMC_SDHCI_OF_ESDHC=y
> CONFIG_MMC_SDHCI_ESDHC_IMX=y
> CONFIG_MMC_SDHCI_DOVE=y
> CONFIG_MMC_SDHCI_TEGRA=y
> CONFIG_MMC_SDHCI_PXAV3=y
> CONFIG_MMC_SDHCI_SPEAR=y
> CONFIG_MMC_SDHCI_S3C=y
> CONFIG_MMC_SDHCI_S3C_DMA=y
> CONFIG_MMC_SDHCI_BCM_KONA=y
> CONFIG_MMC_SDHCI_ST=y
> CONFIG_MMC_OMAP=y
> CONFIG_MMC_ATMELMCI=y
> CONFIG_MMC_SDHCI_MSM=y
> CONFIG_MMC_MVSDIO=y
> CONFIG_MMC_SDHI=y
> CONFIG_MMC_DW_PLTFM=y
> CONFIG_MMC_DW_EXYNOS=y
> CONFIG_MMC_DW_ROCKCHIP=y
> CONFIG_MMC_SH_MMCIF=y
> CONFIG_MMC_SUNXI=y
> CONFIG_MMC_BCM2835=y
> CONFIG_NEW_LEDS=y
> CONFIG_LEDS_CLASS_FLASH=m
> CONFIG_LEDS_GPIO=y
> CONFIG_LEDS_PWM=y
> CONFIG_LEDS_MAX77693=m
> CONFIG_LEDS_MAX8997=m
> CONFIG_LEDS_TRIGGERS=y
> CONFIG_LEDS_TRIGGER_TIMER=y
> CONFIG_LEDS_TRIGGER_ONESHOT=y
> CONFIG_LEDS_TRIGGER_HEARTBEAT=y
> CONFIG_LEDS_TRIGGER_BACKLIGHT=y
> CONFIG_LEDS_TRIGGER_CPU=y
> CONFIG_LEDS_TRIGGER_GPIO=y
> CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
> CONFIG_LEDS_TRIGGER_TRANSIENT=y
> CONFIG_LEDS_TRIGGER_CAMERA=y
> CONFIG_EDAC_HIGHBANK_MC=y
> CONFIG_EDAC_HIGHBANK_L2=y
> CONFIG_RTC_CLASS=y
> CONFIG_RTC_DRV_AC100=y
> CONFIG_RTC_DRV_AS3722=y
> CONFIG_RTC_DRV_MAX8907=y
> CONFIG_RTC_DRV_MAX8998=m
> CONFIG_RTC_DRV_MAX8997=m
> CONFIG_RTC_DRV_MAX77686=y
> CONFIG_RTC_DRV_RK808=m
> CONFIG_RTC_DRV_ST_LPC=y
> CONFIG_RTC_DRV_DA9063=m
> CONFIG_RTC_DRV_EFI=m
> CONFIG_RTC_DRV_DIGICOLOR=m
> CONFIG_RTC_DRV_S5M=m
> CONFIG_RTC_DRV_S3C=m
> CONFIG_RTC_DRV_PL031=y
> CONFIG_RTC_DRV_AT91RM9200=m
> CONFIG_RTC_DRV_AT91SAM9=m
> CONFIG_RTC_DRV_VT8500=y
> CONFIG_RTC_DRV_SUN6I=y
> CONFIG_RTC_DRV_SUNXI=y
> CONFIG_RTC_DRV_MV=y
> CONFIG_RTC_DRV_TEGRA=y
> CONFIG_DMADEVICES=y
> CONFIG_DW_DMAC=y
> CONFIG_AT_HDMAC=y
> CONFIG_AT_XDMAC=y
> CONFIG_FSL_EDMA=y
> CONFIG_MV_XOR=y
> CONFIG_TEGRA20_APB_DMA=y
> CONFIG_SH_DMAE=y
> CONFIG_RCAR_DMAC=y
> CONFIG_RENESAS_USB_DMAC=m
> CONFIG_STE_DMA40=y
> CONFIG_SIRF_DMA=y
> CONFIG_TI_EDMA=y
> CONFIG_PL330_DMA=y
> CONFIG_IMX_SDMA=y
> CONFIG_IMX_DMA=y
> CONFIG_MXS_DMA=y
> CONFIG_DMA_BCM2835=y
> CONFIG_DMA_OMAP=y
> CONFIG_QCOM_BAM_DMA=y
> CONFIG_XILINX_DMA=y
> CONFIG_DMA_SUN6I=y
> CONFIG_ST_FDMA=m
> CONFIG_SENSORS_ISL29018=y
> CONFIG_SENSORS_ISL29028=y
> CONFIG_MFD_NVEC=y
> CONFIG_KEYBOARD_NVEC=y
> CONFIG_SERIO_NVEC_PS2=y
> CONFIG_NVEC_POWER=y
> CONFIG_NVEC_PAZ00=y
> CONFIG_BCMA=y
> CONFIG_BCMA_HOST_SOC=y
> CONFIG_BCMA_DRIVER_GMAC_CMN=y
> CONFIG_BCMA_DRIVER_GPIO=y
> CONFIG_QCOM_GSBI=y
> CONFIG_QCOM_PM=y
> CONFIG_QCOM_SMEM=y
> CONFIG_QCOM_SMD_RPM=y
> CONFIG_QCOM_SMP2P=y
> CONFIG_QCOM_SMSM=y
> CONFIG_QCOM_WCNSS_CTRL=m
> CONFIG_ROCKCHIP_PM_DOMAINS=y
> CONFIG_COMMON_CLK_QCOM=y
> CONFIG_QCOM_CLK_RPM=y
> CONFIG_STAGING_BOARD=y
> CONFIG_CROS_EC_CHARDEV=m
> CONFIG_COMMON_CLK_MAX77686=y
> CONFIG_COMMON_CLK_RK808=m
> CONFIG_COMMON_CLK_S2MPS11=m
> CONFIG_APQ_MMCC_8084=y
> CONFIG_MSM_GCC_8660=y
> CONFIG_MSM_MMCC_8960=y
> CONFIG_MSM_MMCC_8974=y
> CONFIG_HWSPINLOCK_QCOM=y
> CONFIG_ROCKCHIP_IOMMU=y
> CONFIG_TEGRA_IOMMU_GART=y
> CONFIG_TEGRA_IOMMU_SMMU=y
> CONFIG_ST_REMOTEPROC=m
> CONFIG_ARM_TEGRA_DEVFREQ=m
> CONFIG_MEMORY=y
> CONFIG_TI_AEMIF=y
> CONFIG_IIO=y
> CONFIG_IIO_SW_TRIGGER=y
> CONFIG_AT91_ADC=m
> CONFIG_AT91_SAMA5D2_ADC=m
> CONFIG_BERLIN2_ADC=m
> CONFIG_EXYNOS_ADC=m
> CONFIG_VF610_ADC=m
> CONFIG_XILINX_XADC=y
> CONFIG_MPU3050_I2C=y
> CONFIG_CM36651=m
> CONFIG_AK8975=y
> CONFIG_RASPBERRYPI_POWER=y
> CONFIG_IIO_HRTIMER_TRIGGER=y
> CONFIG_PWM=y
> CONFIG_PWM_ATMEL=m
> CONFIG_PWM_ATMEL_HLCDC_PWM=m
> CONFIG_PWM_ATMEL_TCB=m
> CONFIG_PWM_FSL_FTM=m
> CONFIG_PWM_RENESAS_TPU=y
> CONFIG_PWM_ROCKCHIP=m
> CONFIG_PWM_SAMSUNG=m
> CONFIG_PWM_SUN4I=y
> CONFIG_PWM_TEGRA=y
> CONFIG_PWM_VT8500=y
> CONFIG_PHY_HIX5HD2_SATA=y
> CONFIG_PWM_STI=y
> CONFIG_PWM_BCM2835=y
> CONFIG_PWM_BRCMSTB=m
> CONFIG_OMAP_USB2=y
> CONFIG_TI_PIPE3=y
> CONFIG_PHY_BERLIN_USB=y
> CONFIG_PHY_BERLIN_SATA=y
> CONFIG_PHY_ROCKCHIP_DP=m
> CONFIG_PHY_ROCKCHIP_USB=y
> CONFIG_PHY_QCOM_APQ8064_SATA=m
> CONFIG_PHY_MIPHY28LP=y
> CONFIG_PHY_RCAR_GEN2=m
> CONFIG_PHY_STIH407_USB=y
> CONFIG_PHY_SUN4I_USB=y
> CONFIG_PHY_SUN9I_USB=y
> CONFIG_PHY_SAMSUNG_USB2=m
> CONFIG_PHY_TEGRA_XUSB=y
> CONFIG_PHY_BRCM_SATA=y
> CONFIG_NVMEM=y
> CONFIG_NVMEM_SUNXI_SID=y
> CONFIG_BCM2835_MBOX=y
> CONFIG_RASPBERRYPI_FIRMWARE=y
> CONFIG_EFI_VARS=m
> CONFIG_EFI_CAPSULE_LOADER=m
> CONFIG_BCM47XX_NVRAM=y
> CONFIG_BCM47XX_SPROM=y
> CONFIG_EXT4_FS=y
> CONFIG_AUTOFS4_FS=y
> CONFIG_MSDOS_FS=y
> CONFIG_VFAT_FS=y
> CONFIG_NTFS_FS=y
> CONFIG_TMPFS_POSIX_ACL=y
> CONFIG_UBIFS_FS=y
> CONFIG_TMPFS=y
> CONFIG_SQUASHFS=y
> CONFIG_SQUASHFS_LZO=y
> CONFIG_SQUASHFS_XZ=y
> CONFIG_PSTORE=y
> CONFIG_PSTORE_CONSOLE=y
> CONFIG_PSTORE_PMSG=y
> CONFIG_PSTORE_RAM=y
> CONFIG_NFS_FS=y
> CONFIG_NFS_V3_ACL=y
> CONFIG_NFS_V4=y
> CONFIG_ROOT_NFS=y
> CONFIG_NLS_CODEPAGE_437=y
> CONFIG_NLS_ISO8859_1=y
> CONFIG_NLS_UTF8=y
> CONFIG_PRINTK_TIME=y
> CONFIG_MAGIC_SYSRQ=y
> CONFIG_KEYSTONE_IRQ=y
> CONFIG_HW_RANDOM=y
> CONFIG_HW_RANDOM_ST=y
> CONFIG_CRYPTO_USER=m
> CONFIG_CRYPTO_USER_API_RNG=m
> CONFIG_CRYPTO_USER_API_AEAD=m
> CONFIG_CRYPTO_DEV_MARVELL_CESA=m
> CONFIG_CRYPTO_DEV_EXYNOS_RNG=m
> CONFIG_CRYPTO_DEV_S5P=m
> CONFIG_CRYPTO_DEV_SUN4I_SS=m
> CONFIG_CRYPTO_DEV_ROCKCHIP=m
> CONFIG_ARM_CRYPTO=y
> CONFIG_CRYPTO_SHA1_ARM=m
> CONFIG_CRYPTO_SHA1_ARM_CE=m
> CONFIG_CRYPTO_SHA2_ARM_CE=m
> CONFIG_CRYPTO_AES_ARM=m
> CONFIG_CRYPTO_AES_ARM_CE=m
> CONFIG_CRYPTO_CHACHA20_NEON=m
> CONFIG_CRYPTO_CRC32_ARM_CE=m
> CONFIG_CRYPTO_CRCT10DIF_ARM_CE=m
> CONFIG_CRYPTO_GHASH_ARM_CE=m
> CONFIG_CRYPTO_DEV_ATMEL_AES=m
> CONFIG_CRYPTO_DEV_ATMEL_TDES=m
> CONFIG_CRYPTO_DEV_ATMEL_SHA=m
> CONFIG_VIDEO_VIVID=m
> CONFIG_VIRTIO=y
> CONFIG_VIRTIO_PCI=y
> CONFIG_VIRTIO_PCI_LEGACY=y
> CONFIG_VIRTIO_MMIO=y
> # Add config flags here that only appear in the multi_v7_defconfig
> CONFIG_ARCH_ALPINE=n
> CONFIG_ARCH_ARTPEC=n
> CONFIG_ARCH_AT91=n
> CONFIG_ARCH_BCM=n
> CONFIG_ARCH_BCM_CYGNUS=n
> CONFIG_ARCH_BCM_NSP=n
> CONFIG_ARCH_BCM_5301X=n
> CONFIG_ARCH_BCM_281XX=n
> CONFIG_ARCH_BCM_21664=n
> CONFIG_ARCH_BRCMSTB=n
> CONFIG_ARCH_BERLIN=n
> CONFIG_ARCH_DIGICOLOR=n
> CONFIG_ARCH_HIGHBANK=n
> CONFIG_ARCH_HISI=n
> CONFIG_ARCH_HI3xxx=n
> CONFIG_ARCH_HIP01=n
> CONFIG_ARCH_HIP04=n
> CONFIG_ARCH_HIX5HD2=n
> CONFIG_ARCH_MESON=n
> CONFIG_ARCH_MXC=n
> CONFIG_ARCH_MEDIATEK=n
> CONFIG_ARCH_QCOM=n
> CONFIG_ARCH_MSM8X60=n
> CONFIG_ARCH_MSM8960=n
> CONFIG_ARCH_MSM8974=n
> CONFIG_ARCH_ROCKCHIP=n
> CONFIG_ARCH_SOCFPGA=n
> CONFIG_ARCH_SPEAR13XX=n
> CONFIG_ARCH_STI=n
> CONFIG_ARCH_EXYNOS=n
> CONFIG_ARCH_SHMOBILE_MULTI=n
> CONFIG_ARCH_EMEV2=n
> CONFIG_ARCH_R7S72100=n
> CONFIG_ARCH_R8A73A4=n
> CONFIG_ARCH_R8A7740=n
> CONFIG_ARCH_R8A7778=n
> CONFIG_ARCH_R8A7779=n
> CONFIG_ARCH_R8A7790=n
> CONFIG_ARCH_R8A7791=n
> CONFIG_ARCH_R8A7793=n
> CONFIG_ARCH_R8A7794=n
> CONFIG_ARCH_RENESAS=n
> CONFIG_ARCH_SH73A0=n
> CONFIG_ARCH_SUNXI=n
> CONFIG_ARCH_SIRF=n
> CONFIG_ARCH_TEGRA=n
> CONFIG_ARCH_TEGRA_2x_SOC=n
> CONFIG_ARCH_TEGRA_3x_SOC=n
> CONFIG_ARCH_TEGRA_114_SOC=n
> CONFIG_ARCH_TEGRA_124_SOC=n
> CONFIG_ARCH_UNIPHIER=n
> CONFIG_ARCH_U8500=n
> CONFIG_ARCH_VEXPRESS=n
> CONFIG_ARCH_VEXPRESS_TC2_PM=n
> CONFIG_ARCH_WM8850=n
> CONFIG_ARCH_ZYNQ=n
> CONFIG_ARCH_VIRT=n
> CONFIG_ARCH_MVEBU=n
> CONFIG_PLAT_SPEAR=n
> CONFIG_CHROME_PLATFORMS=n
> ##################################################
> # TI Baseport Config Options
> ##################################################
>
> # Kernel compression
> CONFIG_KERNEL_GZIP=n
> CONFIG_KERNEL_LZMA=y
> CONFIG_KERNEL_LZ4=n
> CONFIG_KERNEL_XZ=n
> CONFIG_KERNEL_LZO=n
>
> # Enable process accounting
> CONFIG_BSD_PROCESS_ACCT=y
>
> # Have some way to pick up kernel config later on
> # Always useful to look at /proc/config.gz
> CONFIG_IKCONFIG=y
> CONFIG_IKCONFIG_PROC=y
>
> # Add Bin2c
> CONFIG_BUILD_BIN2C=y
>
> # Add base Cgroups functions
> CONFIG_CGROUP_DEBUG=n
> CONFIG_PROC_PID_CPUSET=y
> CONFIG_PAGE_COUNTER=y
> CONFIG_MEMCG=y
> CONFIG_MEMCG_SWAP=y
> CONFIG_MEMCG_SWAP_ENABLED=y
> CONFIG_DEBUG_BLK_CGROUP=n
> CONFIG_CGROUP_WRITEBACK=y
>
> # Choose CONFIG_EMBEDDED
> CONFIG_EMBEDDED=y
> CONFIG_EXPERT=y
> CONFIG_ARM_PATCH_PHYS_VIRT=y
>
> # Enable all kernel symbols please
> CONFIG_KALLSYMS=y
> CONFIG_KALLSYMS_ALL=y
>
> # Enable AEABI
> CONFIG_AEABI=y
>
> # How do we want kernel Modules to work?
> CONFIG_BASE_FULL=y
> CONFIG_BASE_SMALL=0
> CONFIG_MODULES=y
> CONFIG_MODULE_FORCE_LOAD=y
> CONFIG_MODULE_UNLOAD=y
> CONFIG_MODULE_FORCE_UNLOAD=y
> CONFIG_MODVERSIONS=y
> CONFIG_MODULE_SRCVERSION_ALL=y
> CONFIG_MODULE_SIG=n
> CONFIG_MODULE_COMPRESS=n
> CONFIG_MODULES_TREE_LOOKUP=y
>
> # Boot options
> CONFIG_USE_OF=y
> CONFIG_ATAGS=y
> CONFIG_DEPRECATED_PARAM_STRUCT=n
> CONFIG_ZBOOT_ROM_TEXT=0x0
> CONFIG_ZBOOT_ROM_BSS=0x0
> CONFIG_ARM_APPENDED_DTB=y
> CONFIG_ARM_ATAG_DTB_COMPAT=y
> CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y
> CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND=n
> CONFIG_CMDLINE=""
> CONFIG_CMDLINE_FROM_BOOTLOADER=y
> CONFIG_CMDLINE_EXTEND=n
> CONFIG_CMDLINE_FORCE=n
> CONFIG_ATAGS_PROC=y
> CONFIG_CRASH_DUMP=n
> CONFIG_AUTO_ZRELADDR=y
>
> # Mem allocator
> CONFIG_SLAB=n
> CONFIG_SLUB=y
>
> # Enable NEON
> CONFIG_VFP=y
> CONFIG_NEON=y
> CONFIG_KERNEL_MODE_NEON=y
>
> # POSIX Message queue
> CONFIG_POSIX_MQUEUE=y
>
> # No Multi Cluster systems in TI yet..
> CONFIG_MCPM=n
>
> # Serial
> CONFIG_SERIAL_8250_OMAP=y
> CONFIG_SERIAL_8250_OMAP_TTYO_FIXUP=y
> CONFIG_SERIAL_8250_NR_UARTS=10
> CONFIG_SERIAL_8250_RUNTIME_UARTS=10
> CONFIG_SERIAL_8250_DMA=y
> CONFIG_SERIAL_OMAP=n
> CONFIG_SERIAL_8250_DW=n
> CONFIG_SERIAL_8250_EM=n
> CONFIG_SERIAL_AMBA_PL011=n
> CONFIG_SERIAL_XILINX_PS_UART=n
> CONFIG_SERIAL_FSL_LPUART=n
> CONFIG_SERIAL_CONEXANT_DIGICOLOR=n
> CONFIG_SERIAL_ST_ASC=n
>
> CONFIG_JUMP_LABEL=y
>
> # Disable Extra debug options
> CONFIG_TIMER_STATS=n
> CONFIG_DEBUG_SPINLOCK=n
> CONFIG_DEBUG_MUTEXES=n
> CONFIG_DEBUG_LOCK_ALLOC=n
> CONFIG_PROVE_LOCKING=n
> CONFIG_LOCKDEP=n
> CONFIG_STACKTRACE=n
> CONFIG_FTRACE=n
> CONFIG_ARM_UNWIND=n
> CONFIG_DEBUG_PREEMPT=n
> CONFIG_SLUB_DEBUG=n
> CONFIG_LOCKUP_DETECTOR=n
> CONFIG_DETECT_HUNG_TASK=n
> CONFIG_IRQ_DOMAIN_DEBUG=n
> CONFIG_DEBUG_BUGVERBOSE=n
>
> CONFIG_PREEMPT=y
> CONFIG_DEBUG_FS=y
>
> # Enable System V IPC
> CONFIG_SYSVIPC=y
>
> # Power management options
> CONFIG_SUSPEND=y
> CONFIG_SUSPEND_FREEZER=y
> CONFIG_SUSPEND_SKIP_SYNC=n
> CONFIG_HIBERNATION=n
> CONFIG_PM_SLEEP=y
> CONFIG_PM_SLEEP_SMP=y
> CONFIG_PM_AUTOSLEEP=n
> CONFIG_PM_WAKELOCKS=n
> CONFIG_PM=y
> CONFIG_PM_DEBUG=y
> CONFIG_APM_EMULATION=n
> CONFIG_PM_OPP=y
> CONFIG_PM_CLK=y
> CONFIG_PM_GENERIC_DOMAINS=y
> CONFIG_WQ_POWER_EFFICIENT_DEFAULT=n
> CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
> CONFIG_PM_GENERIC_DOMAINS_OF=y
> CONFIG_CPU_PM=y
> CONFIG_ARCH_SUSPEND_POSSIBLE=y
> CONFIG_ARM_CPU_SUSPEND=y
> CONFIG_ARCH_HIBERNATION_POSSIBLE=y
>
> # Clock framework stuff we need
> CONFIG_CLKDEV_LOOKUP=y
> CONFIG_HAVE_CLK_PREPARE=y
> CONFIG_COMMON_CLK=y
> CONFIG_COMMON_CLK_SI5351=n
> CONFIG_COMMON_CLK_SI514=n
> CONFIG_COMMON_CLK_SI570=n
> CONFIG_COMMON_CLK_CDCE925=n
> CONFIG_CLK_TWL6040=n
> CONFIG_CLK_QORIQ=n
> CONFIG_COMMON_CLK_PALMAS=y
> CONFIG_COMMON_CLK_PWM=n
> CONFIG_COMMON_CLK_PXA=n
> CONFIG_COMMON_CLK_CDCE706=n
> CONFIG_CLKSRC_OF=y
> CONFIG_CLKSRC_PROBE=y
> CONFIG_CLKSRC_MMIO=y
> CONFIG_CLKSRC_TI_32K=y
> CONFIG_ARM_ARCH_TIMER=y
> CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
> CONFIG_ARM_GLOBAL_TIMER=n
> CONFIG_ARM_TIMER_SP804=n
> # Clock cleanup please
> CONFIG_OMAP_RESET_CLOCKS=y
>
> # CPU Idle
> CONFIG_CPU_IDLE=y
> CONFIG_CPU_IDLE_GOV_LADDER=y
> CONFIG_CPU_IDLE_GOV_MENU=y
> CONFIG_DT_IDLE_STATES=y
>
> # ARM CPU Idle Drivers
> CONFIG_ARM_CPUIDLE=y
> CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=n
>
> # CPU Frequency scaling
> CONFIG_CPU_FREQ=y
> CONFIG_CPU_FREQ_GOV_COMMON=y
> CONFIG_CPU_FREQ_STAT=y
> CONFIG_CPU_FREQ_STAT_DETAILS=y
> CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
> CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
> CONFIG_CPU_FREQ_GOV_POWERSAVE=y
> CONFIG_CPU_FREQ_GOV_USERSPACE=y
> CONFIG_CPU_FREQ_GOV_ONDEMAND=y
> CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
>
> # CPUFreq Driver Options
> CONFIG_CPUFREQ_DT=y
> CONFIG_ARM_BIG_LITTLE_CPUFREQ=n
> CONFIG_ARM_KIRKWOOD_CPUFREQ=n
> CONFIG_ARM_OMAP2PLUS_CPUFREQ=n
> CONFIG_ARM_TI_CPUFREQ=y
> CONFIG_QORIQ_CPUFREQ=n
>
> # AMx3 Power Config Options
> CONFIG_MAILBOX=y
> CONFIG_WKUP_M3_RPROC=m
> CONFIG_SOC_TI=y
> CONFIG_SOC_BRCMSTB=n
> CONFIG_WKUP_M3_IPC=m
> CONFIG_AMX3_PM=m
> CONFIG_SRAM=y
> CONFIG_TI_EMIF_SRAM=m
> CONFIG_SUNXI_SRAM=n
>
> CONFIG_PM_DEVFREQ=n
>
> # K2G Power config options
> # CONFIG_MAILBOX is enabled in AMx3
> CONFIG_TI_MESSAGE_MANAGER=y
> CONFIG_TI_SCI_PROTOCOL=y
> CONFIG_TI_SCI_PM_DOMAINS=y
> CONFIG_TI_SCI_CLK=y
>
> # Enable Reset Controllers
> CONFIG_RESET_CONTROLLER=y
> CONFIG_RESET_TI_SYSCON=y
> CONFIG_RESET_TI_SCI=y
>
> # CPUFreq and OPP drivers
> CONFIG_OPP_DOMAIN_TI=y
>
> # Thermal
> CONFIG_THERMAL=y
> CONFIG_THERMAL_OF=y
> CONFIG_THERMAL_WRITABLE_TRIPS=y
> CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
> CONFIG_THERMAL_GOV_FAIR_SHARE=y
> CONFIG_THERMAL_GOV_STEP_WISE=y
> CONFIG_THERMAL_GOV_BANG_BANG=y
> CONFIG_THERMAL_GOV_USER_SPACE=y
> CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
> CONFIG_CPU_THERMAL=y
> CONFIG_TI_SOC_THERMAL=y
> CONFIG_TI_THERMAL=y
> CONFIG_OMAP4_THERMAL=y
> CONFIG_OMAP5_THERMAL=y
> CONFIG_DRA752_THERMAL=y
>
> # Since HWMON is needed by Sensors..
> CONFIG_HWMON=y
> CONFIG_SENSORS_TMP102=y
> CONFIG_SENSORS_GPIO_FAN=y
>
> # Enable the reset framework
> CONFIG_POWER_RESET=y
> CONFIG_POWER_SUPPLY=y
>
> # Pinctrl
> CONFIG_PINCTRL_TI_IODELAY=y
> CONFIG_PINCTRL_SINGLE=y
>
> #
> # Multifunction device drivers
> CONFIG_MFD_CORE=y
> CONFIG_MFD_AS3711=n
> CONFIG_MFD_AS3722=n
> CONFIG_PMIC_ADP5520=n
> CONFIG_MFD_AAT2870_CORE=n
> CONFIG_MFD_ATMEL_FLEXCOM=n
> CONFIG_MFD_ATMEL_HLCDC=n
> CONFIG_MFD_BCM590XX=n
> CONFIG_MFD_AXP20X=n
> CONFIG_MFD_AXP20X_I2C=n
> CONFIG_MFD_CROS_EC=n
> CONFIG_MFD_CROS_EC_I2C=n
> CONFIG_MFD_CROS_EC_SPI=n
> CONFIG_MFD_ASIC3=n
> CONFIG_PMIC_DA903X=n
> CONFIG_MFD_DA9052_SPI=n
> CONFIG_MFD_DA9052_I2C=n
> CONFIG_MFD_DA9055=n
> CONFIG_MFD_DA9062=n
> CONFIG_MFD_DA9063=n
> CONFIG_MFD_DA9150=n
> CONFIG_MFD_DLN2=n
> CONFIG_MFD_MC13XXX_SPI=n
> CONFIG_MFD_MC13XXX_I2C=n
> CONFIG_MFD_HI6421_PMIC=n
> CONFIG_HTC_EGPIO=n
> CONFIG_HTC_PASIC3=n
> CONFIG_HTC_I2CPLD=n
> CONFIG_LPC_ICH=n
> CONFIG_LPC_SCH=n
> CONFIG_INTEL_SOC_PMIC=n
> CONFIG_MFD_JANZ_CMODIO=n
> CONFIG_MFD_KEMPLD=n
> CONFIG_MFD_88PM800=n
> CONFIG_MFD_88PM805=n
> CONFIG_MFD_88PM860X=n
> CONFIG_MFD_MAX14577=n
> CONFIG_MFD_MAX77686=n
> CONFIG_MFD_MAX77693=n
> CONFIG_MFD_MAX77843=n
> CONFIG_MFD_MAX8907=n
> CONFIG_MFD_MAX8925=n
> CONFIG_MFD_MAX8997=n
> CONFIG_MFD_MAX8998=n
> CONFIG_MFD_MT6397=n
> CONFIG_MFD_MENF21BMC=n
> CONFIG_EZX_PCAP=n
> CONFIG_MFD_VIPERBOARD=n
> CONFIG_MFD_RETU=n
> CONFIG_MFD_PCF50633=n
> CONFIG_MFD_PM8XXX=n
> CONFIG_MFD_PM8921_CORE=n
> CONFIG_MFD_RDC321X=n
> CONFIG_MFD_RTSX_PCI=n
> CONFIG_MFD_RT5033=n
> CONFIG_MFD_RTSX_USB=n
> CONFIG_MFD_RC5T583=n
> CONFIG_MFD_RK808=n
> CONFIG_MFD_RN5T618=n
> CONFIG_MFD_SEC_CORE=n
> CONFIG_MFD_SI476X_CORE=n
> CONFIG_MFD_SM501=n
> CONFIG_MFD_SKY81452=n
> CONFIG_MFD_SMSC=n
> CONFIG_ABX500_CORE=n
> CONFIG_AB3100_CORE=n
> CONFIG_MFD_STMPE=n
> CONFIG_STMPE_I2C=n
> CONFIG_STMPE_SPI=n
> CONFIG_MFD_SYSCON=y
> CONFIG_MFD_TI_AM335X_TSCADC=m
> CONFIG_MFD_LP3943=n
> CONFIG_MFD_LP8788=n
> CONFIG_MFD_OMAP_USB_HOST=y
> CONFIG_MFD_PALMAS=y
> CONFIG_TPS6105X=n
> CONFIG_TPS65010=n
> CONFIG_TPS6507X=n
> CONFIG_MFD_TPS65086=n
> CONFIG_MFD_TPS65090=y
> CONFIG_MFD_TPS65217=y
> CONFIG_MFD_TPS65218=y
> CONFIG_MFD_TPS6586X=y
> CONFIG_MFD_TPS65910=y
> CONFIG_MFD_TPS65912_I2C=n
> CONFIG_MFD_TPS65912_SPI=n
> CONFIG_MFD_TPS80031=n
> CONFIG_TWL4030_CORE=n
> CONFIG_TWL4030_POWER=n
> CONFIG_MFD_TWL4030_AUDIO=n
> CONFIG_TWL6040_CORE=y
> CONFIG_MFD_WL1273_CORE=n
> CONFIG_MFD_LM3533=n
> CONFIG_MFD_TI_LP873X=y
> CONFIG_MFD_TI_LP87565=y
> CONFIG_MFD_TC3589X=n
> CONFIG_MFD_TMIO=n
> CONFIG_MFD_T7L66XB=n
> CONFIG_MFD_TC6387XB=n
> CONFIG_MFD_TC6393XB=n
> CONFIG_MFD_VX855=n
> CONFIG_MFD_ARIZONA_I2C=n
> CONFIG_MFD_ARIZONA_SPI=n
> CONFIG_MFD_WM8400=n
> CONFIG_MFD_WM831X_I2C=n
> CONFIG_MFD_WM831X_SPI=n
> CONFIG_MFD_WM8350_I2C=n
> CONFIG_MFD_WM8994=n
> CONFIG_MFD_VEXPRESS_SYSREG=n
>
> # Regulators
> CONFIG_REGULATOR=y
> CONFIG_REGULATOR_FIXED_VOLTAGE=y
> CONFIG_REGULATOR_DEBUG=n
> CONFIG_REGULATOR_VIRTUAL_CONSUMER=n
> CONFIG_REGULATOR_USERSPACE_CONSUMER=n
> CONFIG_REGULATOR_ACT8865=n
> CONFIG_REGULATOR_AD5398=n
> CONFIG_REGULATOR_ANATOP=n
> CONFIG_REGULATOR_AS3711=n
> CONFIG_REGULATOR_AS3722=n
> CONFIG_REGULATOR_AXP20X=n
> CONFIG_REGULATOR_BCM590XX=n
> CONFIG_REGULATOR_DA9210=n
> CONFIG_REGULATOR_DA9211=n
> CONFIG_REGULATOR_FAN53555=n
> CONFIG_REGULATOR_GPIO=y
> CONFIG_REGULATOR_ISL9305=n
> CONFIG_REGULATOR_ISL6271A=n
> CONFIG_REGULATOR_LP3971=n
> CONFIG_REGULATOR_LP3972=n
> CONFIG_REGULATOR_LP872X=n
> CONFIG_REGULATOR_LP8755=n
> CONFIG_REGULATOR_LP873X=y
> CONFIG_REGULATOR_LP87565=y
> CONFIG_REGULATOR_LTC3589=n
> CONFIG_REGULATOR_MAX14577=n
> CONFIG_REGULATOR_MAX1586=n
> CONFIG_REGULATOR_MAX8649=n
> CONFIG_REGULATOR_MAX8660=n
> CONFIG_REGULATOR_MAX8907=n
> CONFIG_REGULATOR_MAX8952=n
> CONFIG_REGULATOR_MAX8973=n
> CONFIG_REGULATOR_MAX77686=n
> CONFIG_REGULATOR_MAX77693=n
> CONFIG_REGULATOR_MAX77802=n
> CONFIG_REGULATOR_MT6311=n
> CONFIG_REGULATOR_PALMAS=y
> CONFIG_REGULATOR_PBIAS=y
> CONFIG_REGULATOR_PFUZE100=n
> CONFIG_REGULATOR_PWM=n
> CONFIG_REGULATOR_RK808=n
> CONFIG_REGULATOR_S2MPA01=n
> CONFIG_REGULATOR_S2MPS11=n
> CONFIG_REGULATOR_S5M8767=n
> CONFIG_REGULATOR_TI_ABB=y
> CONFIG_REGULATOR_TPS51632=n
> CONFIG_REGULATOR_TPS62360=y
> CONFIG_REGULATOR_TPS65023=y
> CONFIG_REGULATOR_TPS6507X=y
> CONFIG_REGULATOR_TPS65090=y
> CONFIG_REGULATOR_TPS65217=y
> CONFIG_REGULATOR_TPS65218=y
> CONFIG_REGULATOR_TPS6524X=y
> CONFIG_REGULATOR_TPS6586X=y
> CONFIG_REGULATOR_TPS65910=y
> CONFIG_REGULATOR_TWL4030=n
> CONFIG_REGULATOR_VEXPRESS=n
>
> # Crypto Modules
> CONFIG_CRYPTO_DEV_OMAP=m
> CONFIG_CRYPTO_DEV_OMAP_SHAM=m
> CONFIG_CRYPTO_DEV_OMAP_AES=m
> CONFIG_CRYPTO_DEV_OMAP_DES=m
> CONFIG_CRYPTO_USER_API_HASH=m
> CONFIG_CRYPTO_USER_API_SKCIPHER=m
> CONFIG_CRYPTO_SHA1_ARM_NEON=m
> CONFIG_CRYPTO_SHA256_ARM=m
> CONFIG_CRYPTO_SHA512_ARM=m
> CONFIG_CRYPTO_AES_ARM_BS=m
>
> #
> # RTC drivers
> #
> CONFIG_RTC_DRV_ABB5ZES3=n
> CONFIG_RTC_DRV_ABX80X=n
> CONFIG_RTC_DRV_DS1307=m
> CONFIG_RTC_DRV_DS1374=n
> CONFIG_RTC_DRV_DS1672=n
> CONFIG_RTC_DRV_DS3232=n
> CONFIG_RTC_DRV_HYM8563=n
> CONFIG_RTC_DRV_MAX6900=n
> CONFIG_RTC_DRV_RS5C372=n
> CONFIG_RTC_DRV_ISL1208=n
> CONFIG_RTC_DRV_ISL12022=n
> CONFIG_RTC_DRV_ISL12057=n
> CONFIG_RTC_DRV_X1205=n
> CONFIG_RTC_DRV_PALMAS=m
> CONFIG_RTC_DRV_PCF2127=n
> CONFIG_RTC_DRV_PCF8523=n
> CONFIG_RTC_DRV_PCF8563=n
> CONFIG_RTC_DRV_PCF85063=n
> CONFIG_RTC_DRV_PCF8583=n
> CONFIG_RTC_DRV_M41T80=n
> CONFIG_RTC_DRV_BQ32K=n
> CONFIG_RTC_DRV_TPS6586X=m
> CONFIG_RTC_DRV_TPS65910=m
> CONFIG_RTC_DRV_TWL92330=y
> CONFIG_RTC_DRV_TWL4030=n
> CONFIG_RTC_DRV_S35390A=n
> CONFIG_RTC_DRV_FM3130=n
> CONFIG_RTC_DRV_RX8581=n
> CONFIG_RTC_DRV_RX8025=n
> CONFIG_RTC_DRV_EM3027=n
> CONFIG_RTC_DRV_RV3029C2=n
> CONFIG_RTC_DRV_RV8803=n
>
> CONFIG_RTC_DRV_M41T93=n
> CONFIG_RTC_DRV_M41T94=n
> CONFIG_RTC_DRV_DS1305=n
> CONFIG_RTC_DRV_DS1343=n
> CONFIG_RTC_DRV_DS1347=n
> CONFIG_RTC_DRV_DS1390=n
> CONFIG_RTC_DRV_MAX6902=n
> CONFIG_RTC_DRV_R9701=n
> CONFIG_RTC_DRV_RS5C348=n
> CONFIG_RTC_DRV_DS3234=n
> CONFIG_RTC_DRV_PCF2123=n
> CONFIG_RTC_DRV_RX4581=n
> CONFIG_RTC_DRV_MCP795=n
>
> CONFIG_RTC_DRV_CMOS=n
> CONFIG_RTC_DRV_DS1286=n
> CONFIG_RTC_DRV_DS1511=n
> CONFIG_RTC_DRV_DS1553=n
> CONFIG_RTC_DRV_DS1685_FAMILY=n
> CONFIG_RTC_DRV_DS1742=n
> CONFIG_RTC_DRV_DS2404=n
> CONFIG_RTC_DRV_STK17TA8=n
> CONFIG_RTC_DRV_M48T86=n
> CONFIG_RTC_DRV_M48T35=n
> CONFIG_RTC_DRV_M48T59=n
> CONFIG_RTC_DRV_MSM6242=n
> CONFIG_RTC_DRV_BQ4802=n
> CONFIG_RTC_DRV_RP5C01=n
> CONFIG_RTC_DRV_V3020=n
> CONFIG_RTC_DRV_ZYNQMP=n
>
> CONFIG_RTC_DRV_OMAP=m
> CONFIG_RTC_DRV_SNVS=n
>
> CONFIG_RTC_DRV_HID_SENSOR_TIME=n
>
> # WatchDog
> CONFIG_WATCHDOG=y
> CONFIG_WATCHDOG_CORE=y
> CONFIG_WATCHDOG_NOWAYOUT=n
>
> # Watchdog Device Drivers
> CONFIG_SOFT_WATCHDOG=n
> CONFIG_GPIO_WATCHDOG=n
> CONFIG_XILINX_WATCHDOG=n
> CONFIG_CADENCE_WATCHDOG=n
> CONFIG_DW_WATCHDOG=n
> CONFIG_OMAP_WATCHDOG=m
> CONFIG_TWL4030_WATCHDOG=m
> CONFIG_MAX63XX_WATCHDOG=n
> CONFIG_ALIM7101_WDT=n
> CONFIG_I6300ESB_WDT=n
> CONFIG_BCM7038_WDT=n
> CONFIG_MEN_A21_WDT=n
>
> # No Staging drivers please
> CONFIG_STAGING=n
>
> # GPIO
> CONFIG_GPIOLIB=y
> CONFIG_GPIO_SYSFS=y
> CONFIG_DEBUG_GPIO=y
>
> # GPIO disable unused options
> CONFIG_GPIO_DWAPB=n
> CONFIG_GPIO_EM=n
> CONFIG_GPIO_GENERIC_PLATFORM=n
> CONFIG_GPIO_XILINX=n
> CONFIG_GPIO_TPS6586X=n
>
> # Enable options to facilitate testing
> CONFIG_CRYPTO_TEST=m
> CONFIG_RTC_DEBUG=y
> CONFIG_THERMAL_EMULATION=y
>
> # OPTEE Driver
> CONFIG_TEE=y
> CONFIG_OPTEE=y
> ##################################################
> # TI RPMsg/IPC Config Options
> ##################################################
> # HwSpinLock
> CONFIG_HWSPINLOCK=y
> CONFIG_HWSPINLOCK_OMAP=y
>
> # Mailbox
> CONFIG_OMAP2PLUS_MBOX=y
>
> # IOMMU
> CONFIG_IOMMU_SUPPORT=y
> CONFIG_OMAP_IOMMU=y
> CONFIG_OMAP_IOMMU_DEBUG=y
>
> # Remoteproc
> CONFIG_REMOTEPROC=m
> CONFIG_OMAP_REMOTEPROC=m
> CONFIG_KEYSTONE_REMOTEPROC=m
> CONFIG_DA8XX_REMOTEPROC=m
> CONFIG_PRUSS_REMOTEPROC=m
>
> # RPMsg
> CONFIG_RPMSG_VIRTIO=m
> CONFIG_RPMSG_PROTO=m
> CONFIG_RPMSG_RPC=m
> CONFIG_RPMSG_PRU=m
>
> # DSP Memory Mapper for Keystone MPM
> CONFIG_KEYSTONE_DSP_MEM=m
>
> # UIO Module
> CONFIG_UIO=m
> ##################################################
> # TI Connectivity Configs
> ##################################################
>
> # Disable unused I2C options
> CONFIG_I2C_MUX=n
> CONFIG_I2C_DESIGNWARE_PLATFORM=n
> CONFIG_I2C_GPIO=n
> CONFIG_I2C_RK3X=n
> CONFIG_I2C_XILINX=n
>
> # I2C GPIO expanders
> CONFIG_GPIO_PCF857X=y
> CONFIG_GPIO_TPIC2810=m
>
> #Networking drivers
> CONFIG_NET_VENDOR_TI=y
> CONFIG_KEYSTONE_NAVIGATOR_QMSS=y
> CONFIG_KEYSTONE_NAVIGATOR_DMA=y
> CONFIG_TI_KEYSTONE_NETCP=y
> CONFIG_TI_KEYSTONE_NETCP_ETHSS=y
> CONFIG_TI_DAVINCI_EMAC=y
> CONFIG_TI_DAVINCI_MDIO=y
> CONFIG_TI_DAVINCI_CPDMA=y
> CONFIG_TI_CPSW_PHY_SEL=y
> CONFIG_TI_CPSW_ALE=y
> CONFIG_TI_CPSW=y
> CONFIG_TI_CPTS=y
> # non-TI Net vendors
> CONFIG_NET_DSA_BCM_SF2=n
> CONFIG_B53=n
> CONFIG_SYSTEMPORT=n
> CONFIG_NET_VENDOR_3COM=n
> CONFIG_NET_VENDOR_ADAPTEC=n
> CONFIG_NET_VENDOR_AGERE=n
> CONFIG_NET_VENDOR_ALTEON=n
> CONFIG_NET_VENDOR_AMAZON=n
> CONFIG_NET_VENDOR_AMD=n
> CONFIG_NET_VENDOR_ARC=n
> CONFIG_NET_VENDOR_ATHEROS=n
> CONFIG_NET_VENDOR_BROCADE=n
> CONFIG_NET_VENDOR_CAVIUM=n
> CONFIG_NET_VENDOR_CHELSIO=n
> CONFIG_NET_CADENCE=n
> CONFIG_BCMGENET=n
> CONFIG_NET_VENDOR_CIRRUS=n
> CONFIG_NET_VENDOR_CISCO=n
> CONFIG_NET_VENDOR_DEC=n
> CONFIG_NET_VENDOR_DLINK=n
> CONFIG_NET_VENDOR_EMULEX=n
> CONFIG_NET_VENDOR_EZCHIP=n
> CONFIG_NET_VENDOR_EXAR=n
> CONFIG_NET_VENDOR_FARADAY=n
> CONFIG_NET_VENDOR_HISILICON=n
> CONFIG_NET_VENDOR_HP=n
> CONFIG_IGB=n
> CONFIG_NET_VENDOR_I825XX=n
> CONFIG_NET_VENDOR_MELLANOX=n
> CONFIG_NET_VENDOR_MICROCHIP=n
> CONFIG_NET_VENDOR_MYRI=n
> CONFIG_NET_VENDOR_NATSEMI=n
> CONFIG_NET_VENDOR_NETRONOME=n
> CONFIG_NET_VENDOR_NVIDIA=n
> CONFIG_NET_VENDOR_OKI=n
> CONFIG_NET_VENDOR_8390=n
> CONFIG_NET_VENDOR_QLOGIC=n
> CONFIG_NET_VENDOR_QUALCOMM=n
> CONFIG_NET_VENDOR_REALTEK=n
> CONFIG_NET_VENDOR_RENESAS=n
> CONFIG_NET_VENDOR_RDC=n
> CONFIG_NET_VENDOR_ROCKER=n
> CONFIG_NET_VENDOR_SAMSUNG=n
> CONFIG_NET_VENDOR_SILAN=n
> CONFIG_NET_VENDOR_SIS=n
> CONFIG_NET_VENDOR_SEEQ=n
> CONFIG_NET_VENDOR_STMICRO=n
> CONFIG_NET_VENDOR_SUN=n
> CONFIG_NET_VENDOR_SYNOPSYS=n
> CONFIG_NET_VENDOR_TEHUTI=n
> CONFIG_NET_VENDOR_VIA=n
> CONFIG_NET_VENDOR_WIZNET=n
>
> #MDIO phys
> CONFIG_MARVELL_PHY=y
> CONFIG_MICREL_PHY=y
> # unused PHY drivers
> CONFIG_BROADCOM_PHY=n
> CONFIG_ICPLUS_PHY=n
> #PRU MII PHYs for Industrial Boards
> CONFIG_DP83848_PHY=y
> # Enable phy for DRA72 evm
> CONFIG_DP83867_PHY=y
>
> #MTD
> CONFIG_OMAP_GPMC=y
> CONFIG_MTD_NAND_OMAP2=y
> CONFIG_MTD_NAND_OMAP_BCH=y
> CONFIG_MTD_NAND_OMAP_BCH_BUILD=y
> CONFIG_MTD_TESTS=m
>
> #PCIE
> CONFIG_PCI=y
> CONFIG_PCI_ENDPOINT=y
> CONFIG_PCI_EPF_TEST=y
> CONFIG_PCI_ENDPOINT_TEST=m
> CONFIG_PCI_DRA7XX=y
> CONFIG_PCI_DRA7XX_HOST=y
> CONFIG_PCI_DRA7XX_EP=y
> #These drivers have been used with DRA7x/AM57x PCIe RC with some success
> CONFIG_NET_VENDOR_BROADCOM=y
> CONFIG_NET_VENDOR_MARVELL=y
> CONFIG_NET_VENDOR_INTEL=y
> CONFIG_TIGON3=m
> CONFIG_SKGE=m
> CONFIG_E1000=m
> CONFIG_E1000E=m
> CONFIG_IWLWIFI=m
> CONFIG_IWLDVM=m
> CONFIG_IWLMVM=m
>
> # Networking
> CONFIG_NF_CONNTRACK=m
> CONFIG_NF_CONNTRACK_IPV4=m
> CONFIG_IP_NF_IPTABLES=m
> CONFIG_IP_NF_ARPTABLES=m
> CONFIG_IP_NF_ARPFILTER=m
> CONFIG_IP_NF_ARP_MANGLE=m
> CONFIG_IP_NF_FILTER=m
> CONFIG_IP_NF_NAT=m
> CONFIG_NF_NAT_IPV4=m
> CONFIG_IP_NF_TARGET_MASQUERADE=m
> CONFIG_BRIDGE=m
> CONFIG_XFRM_USER=m
> CONFIG_NET_KEY=m
> CONFIG_INET=y
> CONFIG_INET_AH=m
> CONFIG_INET6_AH=m
> CONFIG_INET6_IPCOMP=m
> CONFIG_INET6_XFRM_TUNNEL=m
> CONFIG_INET6_TUNNEL=m
> CONFIG_INET_ESP=m
> CONFIG_INET_IPCOMP=m
> CONFIG_INET_XFRM_MODE_TRANSPORT=m
> CONFIG_INET_XFRM_MODE_TUNNEL=m
> CONFIG_INET_XFRM_MODE_BEET=m
> CONFIG_IPV6_TUNNEL=m
> CONFIG_NETFILTER=y
> CONFIG_NETFILTER_XTABLES=m
> CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
> CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
> CONFIG_NETFILTER_XT_TARGET_MARK=m
> CONFIG_NETFILTER_XT_MATCH_COMMENT=m
> CONFIG_NETFILTER_XT_MATCH_CPU=m
> CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
> CONFIG_NETFILTER_XT_MATCH_LENGTH=m
> CONFIG_NETFILTER_XT_MATCH_LIMIT=m
> CONFIG_NETFILTER_XT_MATCH_MAC=m
> CONFIG_NETFILTER_XT_MATCH_MARK=m
> CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
> CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
> CONFIG_NETFILTER_XT_MATCH_POLICY=m
> CONFIG_NETFILTER_XT_MATCH_SCTP=m
> CONFIG_BRIDGE_NF_EBTABLES=m
> CONFIG_BRIDGE_EBT_BROUTE=m
> CONFIG_BRIDGE_EBT_T_FILTER=m
> CONFIG_BRIDGE_EBT_T_NAT=m
> CONFIG_BRIDGE_EBT_802_3=m
> CONFIG_BRIDGE_EBT_AMONG=m
> CONFIG_BRIDGE_EBT_ARP=m
> CONFIG_BRIDGE_EBT_IP=m
> CONFIG_BRIDGE_EBT_IP6=m
> CONFIG_BRIDGE_EBT_LIMIT=m
> CONFIG_BRIDGE_EBT_MARK=m
> CONFIG_BRIDGE_EBT_PKTTYPE=m
> CONFIG_BRIDGE_EBT_STP=m
> CONFIG_BRIDGE_EBT_VLAN=m
> CONFIG_BRIDGE_EBT_ARPREPLY=m
> CONFIG_BRIDGE_EBT_DNAT=m
> CONFIG_BRIDGE_EBT_MARK_T=m
> CONFIG_BRIDGE_EBT_REDIRECT=m
> CONFIG_BRIDGE_EBT_SNAT=m
> CONFIG_BRIDGE_EBT_LOG=m
> CONFIG_BRIDGE_EBT_NFLOG=m
> CONFIG_NET_SCHED=y
> CONFIG_NET_SCH_CBQ=m
> CONFIG_NET_SCH_HTB=m
> CONFIG_NET_SCH_HFSC=m
> CONFIG_NET_SCH_PRIO=m
> CONFIG_NET_SCH_MULTIQ=m
> CONFIG_NET_SCH_RED=m
> CONFIG_NET_SCH_SFB=m
> CONFIG_NET_SCH_SFQ=m
> CONFIG_NET_SCH_TEQL=m
> CONFIG_NET_SCH_TBF=m
> CONFIG_NET_SCH_GRED=m
> CONFIG_NET_SCH_DSMARK=m
> CONFIG_NET_SCH_NETEM=m
> CONFIG_NET_SCH_DRR=m
> CONFIG_NET_SCH_MQPRIO=m
> CONFIG_NET_SCH_CHOKE=m
> CONFIG_NET_SCH_QFQ=m
> CONFIG_NET_SCH_CODEL=m
> CONFIG_NET_SCH_FQ_CODEL=m
> CONFIG_NET_SCH_INGRESS=m
> CONFIG_NET_CLS=y
> CONFIG_NET_CLS_BASIC=m
> CONFIG_NET_CLS_TCINDEX=m
> CONFIG_NET_CLS_ROUTE4=m
> CONFIG_NET_CLS_FW=m
> CONFIG_NET_CLS_U32=m
> CONFIG_CLS_U32_MARK=y
> CONFIG_NET_CLS_RSVP=m
> CONFIG_NET_CLS_RSVP6=m
> CONFIG_NET_CLS_FLOW=m
> CONFIG_NET_EMATCH=y
> CONFIG_NET_EMATCH_STACK=32
> CONFIG_NET_EMATCH_CMP=m
> CONFIG_NET_EMATCH_NBYTE=m
> CONFIG_NET_EMATCH_U32=m
> CONFIG_NET_EMATCH_META=m
> CONFIG_NET_EMATCH_TEXT=m
> CONFIG_NET_CLS_ACT=y
> CONFIG_NET_ACT_POLICE=m
> CONFIG_NET_ACT_GACT=m
> CONFIG_GACT_PROB=y
> CONFIG_NET_ACT_MIRRED=m
> CONFIG_NET_ACT_IPT=m
> CONFIG_NET_ACT_NAT=m
> CONFIG_NET_ACT_PEDIT=m
> CONFIG_NET_ACT_SIMP=m
> CONFIG_NET_ACT_SKBEDIT=m
> CONFIG_NET_ACT_CSUM=m
> CONFIG_NET_CLS_IND=y
> CONFIG_NET_SCH_FIFO=y
> CONFIG_IP_SCTP=m
> CONFIG_VLAN_8021Q=m
> CONFIG_IP_MULTICAST=y
>
> #MMC/SD support
> CONFIG_MMC=y
> CONFIG_MMC_SDHCI=y
> CONFIG_MMC_SDHCI_PLTFM=y
> CONFIG_MMC_OMAP_HS=y
> CONFIG_MMC_SDHCI_OMAP=y
> CONFIG_MMC_DW=n
>
> #SPI
> CONFIG_SPI_CADENCE_QUADSPI=y
> CONFIG_SPI_TI_QSPI=y
> #Disable unused SPI controllers
> CONFIG_SPI_BITBANG=n
> CONFIG_SPI_CADENCE=n
> CONFIG_SPI_ROCKCHIP=n
> CONFIG_SPI_XILINX=n
> CONFIG_SPI_SPIDEV=n
>
> #Disable SPI NOR 4K SECTORS
> CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=n
>
> #SPI GPIO expanders
> CONFIG_GPIO_PISOSR=m
>
> #SATA
> CONFIG_SATA_AHCI_PLATFORM=m
> CONFIG_SATA_AHCI=m
> CONFIG_ATA=m
>
> #USB gadgets
> CONFIG_USB_GADGET=m
> CONFIG_USB_AUDIO=m
> CONFIG_USB_ETH=m
> CONFIG_USB_G_NCM=m
> CONFIG_USB_GADGETFS=m
> CONFIG_USB_FUNCTIONFS=m
> CONFIG_USB_FUNCTIONFS_ETH=y
> CONFIG_USB_FUNCTIONFS_RNDIS=y
> CONFIG_USB_FUNCTIONFS_GENERIC=y
> CONFIG_USB_MASS_STORAGE=m
> CONFIG_USB_G_SERIAL=m
> CONFIG_USB_MIDI_GADGET=m
> CONFIG_USB_G_PRINTER=m
> CONFIG_USB_CDC_COMPOSITE=m
> CONFIG_USB_G_ACM_MS=m
> CONFIG_USB_G_MULTI=m
> CONFIG_USB_G_MULTI_CDC=y
> CONFIG_USB_G_HID=m
> CONFIG_USB_G_DBGP=m
> CONFIG_USB_G_WEBCAM=m
> CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=32
> CONFIG_USB_ZERO=m
> CONFIG_USB_CONFIGFS=m
> CONFIG_USB_CONFIGFS_SERIAL=y
> CONFIG_USB_CONFIGFS_ACM=y
> CONFIG_USB_CONFIGFS_OBEX=y
> CONFIG_USB_CONFIGFS_NCM=y
> CONFIG_USB_CONFIGFS_ECM=y
> CONFIG_USB_CONFIGFS_ECM_SUBSET=y
> CONFIG_USB_CONFIGFS_RNDIS=y
> CONFIG_USB_CONFIGFS_EEM=y
> CONFIG_USB_CONFIGFS_MASS_STORAGE=y
> CONFIG_USB_CONFIGFS_F_LB_SS=y
> CONFIG_USB_CONFIGFS_F_FS=y
> CONFIG_USB_CONFIGFS_F_UAC1=y
> CONFIG_USB_CONFIGFS_F_UAC2=y
> CONFIG_USB_CONFIGFS_F_MIDI=y
> CONFIG_USB_CONFIGFS_F_HID=y
> CONFIG_USB_CONFIGFS_F_UVC=y
> CONFIG_USB_CONFIGFS_F_PRINTER=y
>
> # USB DWC3
> CONFIG_USB_DWC3=m
> CONFIG_USB_DWC3_DUAL_ROLE=y
> CONFIG_USB_DWC3_OMAP=m
> CONFIG_USB_DWC3_PCI=n
> CONFIG_USB_DWC2=n
> CONFIG_USB_CHIPIDEA=n
>
> #USB PHY
> CONFIG_NOP_USB_XCEIV=m
>
> #USB MUSB
> CONFIG_USB_MUSB_HDRC=m
> CONFIG_USB_MUSB_DUAL_ROLE=y
> CONFIG_USB_MUSB_OMAP2PLUS=m
> CONFIG_USB_MUSB_AM35X=m
> CONFIG_USB_MUSB_DSPS=m
> CONFIG_USB_MUSB_AM335X_CHILD=m
> CONFIG_TI_CPPI41=y
> CONFIG_USB_TI_CPPI41_DMA=y
> CONFIG_AM335X_CONTROL_USB=y
> CONFIG_AM335X_PHY_USB=y
>
> #USB EHCI
> CONFIG_USB=m
> CONFIG_USB_EHCI_HCD=m
> CONFIG_USB_EHCI_PCI=m
> CONFIG_USB_EHCI_HCD_OMAP=m
>
> #USB Networking
> CONFIG_USB_USBNET=m
> CONFIG_USB_NET_DRIVERS=m
> CONFIG_USB_NET_SMSC95XX=m
>
> #USB testing
> CONFIG_USB_TEST=m
>
> #USB Serial
> CONFIG_USB_ACM=m
> CONFIG_USB_SERIAL=m
>
> # Extcon drivers
> CONFIG_EXTCON=m
> CONFIG_EXTCON_PALMAS=m
> CONFIG_EXTCON_USB_GPIO=m
>
> # PWM
> CONFIG_PWM_TIECAP=y
> CONFIG_PWM_TIEHRPWM=y
> CONFIG_PWM_TIPWMSS=y
>
> # 1-wire Bus Masters
> CONFIG_W1=m
> CONFIG_HDQ_MASTER_OMAP=m
>
> # Matrix keypad
> CONFIG_KEYBOARD_MATRIX=m
>
> #Touchscreen/ADC
> CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m
> CONFIG_TI_AM335X_ADC=m
>
> #CAN
> CONFIG_CAN=m
> CONFIG_CAN_C_CAN=m
> CONFIG_CAN_C_CAN_PLATFORM=m
> CONFIG_CAN_M_CAN=m
>
> # Rotary Encoder
> CONFIG_INPUT_GPIO_DECODER=m
>
> # Filesystem extra options
> CONFIG_EXT4_FS_POSIX_ACL=y
> CONFIG_EXT4_FS_SECURITY=y
> CONFIG_CIFS=m
> CONFIG_CIFS_STATS=y
> CONFIG_CIFS_XATTR=y
> CONFIG_CIFS_POSIX=y
> CONFIG_CIFS_ACL=y
> ##################################################
> # TI Audio/Display config options
> ##################################################
>
>
> # backlight
>
> CONFIG_LEDS_CLASS=y
> CONFIG_LEDS_TLC591XX=y
>
> CONFIG_BACKLIGHT_PWM=y
> CONFIG_BACKLIGHT_GPIO=y
> CONFIG_BACKLIGHT_LED=y
>
> # fbdev
>
> CONFIG_FB_SSD1307=y
>
> # drm
>
> CONFIG_DRM=y
>
> # Disable unneeded features
>
> CONFIG_VGA_ARB=n
> CONFIG_DRM_I2C_ADV7511=n
> CONFIG_DRM_NOUVEAU=n
> CONFIG_DRM_EXYNOS=n
> CONFIG_DRM_PANEL_SIMPLE=n
> CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0=n
> CONFIG_DRM_NXP_PTN3460=n
> CONFIG_DRM_PARADE_PS8622=n
> CONFIG_DRM_STI=n
> CONFIG_LCD_CLASS_DEVICE=n
>
> # tilcdc
>
> CONFIG_DRM_I2C_NXP_TDA998X=y
> CONFIG_DRM_TILCDC=y
>
> # omapdrm
>
> CONFIG_DRM_OMAP=y
> CONFIG_DRM_OMAP_WB=y
>
> CONFIG_OMAP2_DSS=y
> CONFIG_OMAP2_DSS_DEBUGFS=y
> CONFIG_OMAP2_DSS_DPI=y
> CONFIG_OMAP2_DSS_VENC=n
> CONFIG_OMAP4_DSS_HDMI=y
> CONFIG_OMAP5_DSS_HDMI=y
> CONFIG_OMAP2_DSS_SDI=n
> CONFIG_OMAP2_DSS_DSI=n
>
> CONFIG_TI_DSS6=y
>
> CONFIG_DRM_OMAP_PANEL_DPI=y
> CONFIG_DRM_OMAP_CONNECTOR_HDMI=y
> CONFIG_DRM_OMAP_CONNECTOR_DVI=y
> CONFIG_DRM_OMAP_DRA7EVM_ENCODER_TPD12S015=y
> CONFIG_DRM_OMAP_ENCODER_TPD12S015=y
> CONFIG_DRM_OMAP_ENCODER_SII9022=y
> CONFIG_DRM_OMAP_ENCODER_TC358768=y
> CONFIG_DRM_OMAP_ENCODER_TFP410=y
>
> # sound
>
> CONFIG_SOUND=y
> CONFIG_SND=y
> CONFIG_SND_SOC=y
> CONFIG_SND_OMAP_SOC=y
> CONFIG_SND_EDMA_SOC=y
> CONFIG_SND_DAVINCI_SOC_MCASP=y
> CONFIG_SND_AM33XX_SOC_EVM=m
> CONFIG_SND_SIMPLE_CARD=m
> CONFIG_SND_SOC_TLV320AIC31XX=m
> CONFIG_SND_SOC_TLV320AIC3X=m
> CONFIG_SND_SOC_HDMI_CODEC=m
> CONFIG_SND_OMAP_SOC_HDMI_AUDIO=m
> # Disable what we don't want in our config
> CONFIG_SND_ARM=n
> CONFIG_SND_SPI=n
> CONFIG_SND_PCI=n
> CONFIG_SND_ATMEL_SOC=n
> CONFIG_SND_SOC_FSL_SAI=n
> CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=n
> CONFIG_SND_SOC_AK4642=n
> CONFIG_SND_SOC_SGTL5000=n
> CONFIG_SND_SOC_STI_SAS=n
> CONFIG_SND_SOC_WM8978=n
>
> # v4l2
>
> CONFIG_MEDIA_SUPPORT=y
> CONFIG_MEDIA_CAMERA_SUPPORT=y
> CONFIG_MEDIA_CONTROLLER=y
> CONFIG_VIDEO_V4L2_SUBDEV_API=y
>
> CONFIG_V4L_PLATFORM_DRIVERS=y
> CONFIG_VIDEO_AM437X_VPFE=m
> CONFIG_VIDEO_TI_CAL=m
> CONFIG_VIDEO_TI_VIP=m
>
> CONFIG_V4L_MEM2MEM_DRIVERS=y
> CONFIG_VIDEO_TI_VPE=m
>
> CONFIG_MEDIA_SUBDRV_AUTOSELECT=n
> CONFIG_VIDEO_OV2659=m
> CONFIG_VIDEO_OV1063X=m
> CONFIG_VIDEO_MT9T11X=m
> CONFIG_GPIO_PCA953X=m
> CONFIG_VIDEO_OV490=m
>
> CONFIG_MEDIA_USB_SUPPORT=y
> CONFIG_USB_VIDEO_CLASS=m
> CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
>
> # Touchscreen
>
> CONFIG_TOUCHSCREEN_EDT_FT5X06=m
> CONFIG_TOUCHSCREEN_PIXCIR=m
> CONFIG_TOUCHSCREEN_GOODIX=m
>
> CONFIG_HID_MULTITOUCH=m
> ##################################################
> # TI Base OMAP generation SoCs generic default
> ##################################################
>
> CONFIG_ARCH_MULTI_V7=y
> CONFIG_ARCH_MULTI_V6_V7=y
> CONFIG_KEYSTONE2_DMA_COHERENT=n
> CONFIG_ARCH_OMAP=y
>
> CONFIG_SOC_AM43XX=y
> CONFIG_ARCH_OMAP2PLUS=y
> CONFIG_OMAP_INTERCONNECT_BARRIER=y
> CONFIG_ARM_PSCI=n
>
> # Maximum Number of processors
> CONFIG_NR_CPUS=2
>
> # Kexec
> CONFIG_KEXEC=y
>
> # EDAC
> CONFIG_EDAC=y
> CONFIG_EDAC_TI=m
> ##################################################
> # TI AM43XX specific config options
> ##################################################
>
> # Disable Socs other than AM43xx
> CONFIG_ARCH_OMAP2=n
> CONFIG_ARCH_OMAP3=n
> CONFIG_ARCH_OMAP4=n
> CONFIG_SOC_OMAP5=n
> CONFIG_SOC_AM33XX=n
> CONFIG_SOC_DRA7XX=n
> CONFIG_ARCH_KEYSTONE=n
>
> #Disable CONFIG_SMP
> CONFIG_SMP=n
> CONFIG_CPUSETS=n
>
> # Increase CMA for HDMI
> CONFIG_CMA_SIZE_MBYTES=48
> ##############################################
> #
> # Kernel options needed for systemd enabled TI SDKs
> # See https://cgit.freedesktop.org/systemd/systemd/tree/README#n38 for details
> #
> ##############################################
> CONFIG_DEVTMPFS=y
> CONFIG_DEVTMPFS_MOUNT=y
> CONFIG_CGROUPS=y
> CONFIG_CGROUP_FREEZER=y
> CONFIG_CGROUP_DEVICE=y
> CONFIG_CGROUP_CPUACCT=y
> CONFIG_BLK_CGROUP=y
> CONFIG_CGROUP_PIDS=y
> CONFIG_CGROUP_PERF=y
>
> CONFIG_INOTIFY_USER=y
> CONFIG_SIGNALFD=y
> CONFIG_TIMERFD=y
> CONFIG_EPOLL=y
> CONFIG_NET=y
> CONFIG_SYSFS=y
> CONFIG_PROC_FS=y
> CONFIG_FHANDLE=y
>
> # udev will fail to work with the legacy sysfs layout:
> CONFIG_SYSFS_DEPRECATED=n
>
> # Legacy hotplug slows down the system and confuses udev:
> CONFIG_UEVENT_HELPER_PATH=""
>
> # Userspace firmware loading is not supported and should
> # be disabled in the kernel:
> CONFIG_FW_LOADER_USER_HELPER=n
>
> # Some udev rules and virtualization detection relies on it:
> # Only for UEFI based systems
> # http://cateee.net/lkddb/web-lkddb/DMI.html
> CONFIG_DMIID=n
>
> # Support for some SCSI devices serial number retrieval, to
> # create additional symlinks in /dev/disk/ and /dev/tape:
> CONFIG_BLK_DEV_BSG=y
>
> # Required for PrivateNetwork and PrivateDevices in service units:
> # Note that systemd-localed.service and other systemd units use
> # PrivateNetwork and PrivateDevices so this is effectively required.
> CONFIG_NAMESPACES=y
> CONFIG_NET_NS=y
> CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
>
> # Optional but strongly recommended options: those are nice to have and
> # indeed recommended, but not necessarily systemd required. These to be
> # enabled in corresponding domain fragments since they are not specific
> # to supporting systemd.
>
> CONFIG_SECCOMP=y
> # for kcmp syscall
> CONFIG_CHECKPOINT_RESTORE=y
>
> # Required for CPUShares= in resource control unit settings
> CONFIG_CGROUP_SCHED=y
> CONFIG_FAIR_GROUP_SCHED=y
>
> # Required for CPUQuota= in resource control unit settings
> CONFIG_CFS_BANDWIDTH=y
>
> # For systemd-bootchart, several proc debug interfaces are required:
> # Systemd-debug.cfg?
> CONFIG_SCHEDSTATS=y
> CONFIG_SCHED_DEBUG=y
>
> # We recommend to turn off Real-Time group scheduling in the
> # kernel when using systemd. RT group scheduling effectively
> # makes RT scheduling unavailable for most userspace, since it
> # requires explicit assignment of RT budgets to each unit whose
> # processes making use of RT. As there's no sensible way to
> # assign these budgets automatically this cannot really be
> # fixed, and it's best to disable group scheduling hence.
> CONFIG_RT_GROUP_SCHED=n
>
> # Note that kernel auditing is broken when used with systemd's
> # container code. When using systemd in conjunction with
> # containers, please make sure to either turn off auditing at
> # runtime using the kernel command line option "audit=0", or
> # turn it off at kernel compile time using:
> CONFIG_AUDIT=n
* Guenter Roeck <[email protected]> [180226 21:20]:
> On Mon, Feb 26, 2018 at 02:58:24PM -0600, Dan Murphy wrote:
> > Tony L/Greg
> >
> > On 02/26/2018 02:21 PM, Greg Kroah-Hartman wrote:
> > > This is the start of the stable review cycle for the 4.14.23 release.
> > > There are 54 patches in this series, all will be posted as a response
> > > to this one. If anyone has any issues with these being applied, please
> > > let me know.
> > >
> > > Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
> > > Anything received after that time might be too late.
> > >
> >
> > We have a build issue on 4.14.22 and can be re-created with this rc as well.
> >
> > arch/arm/mach-omap2/omap-secure.o: In function `omap3_save_secure_ram':
> > omap-secure.c:(.text+0xe4): undefined reference to `save_secure_ram_context'
> > make: *** [vmlinux] Error 1
> >
> > The issue was introduced with the back port of
> >
> > b59a1da647f163d0bf035f823a908b45c357643a ARM: OMAP2+: Fix SRAM virt to phys translation for save_secure_ram_context
> >
> Looks like you may have CONFIG_PM disabled, is that correct ?
> Is there a default configuration that we can use to reproduce
> the problem ?
It should be fixed with this commit in mainline kernel:
863204cfdae9 ("ARM: omap2: hide omap3_save_secure_ram on non-OMAP3 builds")
Regards,
Tony
Tony
On 02/26/2018 03:45 PM, Tony Lindgren wrote:
> * Guenter Roeck <[email protected]> [180226 21:20]:
>> On Mon, Feb 26, 2018 at 02:58:24PM -0600, Dan Murphy wrote:
>>> Tony L/Greg
>>>
>>> On 02/26/2018 02:21 PM, Greg Kroah-Hartman wrote:
>>>> This is the start of the stable review cycle for the 4.14.23 release.
>>>> There are 54 patches in this series, all will be posted as a response
>>>> to this one. If anyone has any issues with these being applied, please
>>>> let me know.
>>>>
>>>> Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
>>>> Anything received after that time might be too late.
>>>>
>>>
>>> We have a build issue on 4.14.22 and can be re-created with this rc as well.
>>>
>>> arch/arm/mach-omap2/omap-secure.o: In function `omap3_save_secure_ram':
>>> omap-secure.c:(.text+0xe4): undefined reference to `save_secure_ram_context'
>>> make: *** [vmlinux] Error 1
>>>
>>> The issue was introduced with the back port of
>>>
>>> b59a1da647f163d0bf035f823a908b45c357643a ARM: OMAP2+: Fix SRAM virt to phys translation for save_secure_ram_context
>>>
>> Looks like you may have CONFIG_PM disabled, is that correct ?
>> Is there a default configuration that we can use to reproduce
>> the problem ?
>
> It should be fixed with this commit in mainline kernel:
>
> 863204cfdae9 ("ARM: omap2: hide omap3_save_secure_ram on non-OMAP3 builds")
Thanks for sharing. I cherry picked this into the failing build and it built successfully.
So can pull this into 4.14.23-rc. If our "TI next" merge cycle is successful we
should see this error go away. We missed it last week because the offending commit caused
a merge conflict with our TI tree.
I tested this against the multi_v7_defconfig with these CONFIG flags amended. Ignoring the override warnings
CONFIG_SOC_AM43XX=y
CONFIG_ARCH_OMAP2PLUS=y
# Disable Socs other than AM43xx
CONFIG_ARCH_OMAP2=n
CONFIG_ARCH_OMAP3=n
CONFIG_ARCH_OMAP4=n
CONFIG_SOC_OMAP5=n
CONFIG_SOC_AM33XX=n
CONFIG_SOC_DRA7XX=n
CONFIG_ARCH_KEYSTONE=n
Tested-by: Dan Murphy <[email protected]>
>
> Regards,
>
> Tony
>
--
------------------
Dan Murphy
On 02/26/2018 01:21 PM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.14.23 release.
> There are 54 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.23-rc1.gz
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
>
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah
On 27 February 2018 at 01:51, Greg Kroah-Hartman
<[email protected]> wrote:
> This is the start of the stable review cycle for the 4.14.23 release.
> There are 54 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.23-rc1.gz
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
Results from Linaro’s test farm.
No regressions on arm64, arm and x86_64.
Summary
------------------------------------------------------------------------
kernel: 4.14.23-rc1
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git branch: linux-4.14.y
git commit: 5e118d0b219c87128794e0734ec357f68d2846cb
git describe: v4.14.22-55-g5e118d0b219c
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-4.14-oe/build/v4.14.22-55-g5e118d0b219c
No regressions (compared to build v4.14.22)
Boards, architectures and test suites:
-------------------------------------
hi6220-hikey - arm64
* boot - pass: 20,
* kselftest - pass: 48, skip: 17
* libhugetlbfs - pass: 90, skip: 1
* ltp-cap_bounds-tests - pass: 2,
* ltp-containers-tests - pass: 64, skip: 17
* ltp-fcntl-locktests-tests - pass: 2,
* ltp-filecaps-tests - pass: 2,
* ltp-fs-tests - pass: 61, skip: 2
* ltp-fs_bind-tests - pass: 2,
* ltp-fs_perms_simple-tests - pass: 19,
* ltp-fsx-tests - pass: 2,
* ltp-hugetlb-tests - pass: 21, skip: 1
* ltp-io-tests - pass: 3,
* ltp-ipc-tests - pass: 9,
* ltp-math-tests - pass: 11,
* ltp-nptl-tests - pass: 2,
* ltp-pty-tests - pass: 4,
* ltp-sched-tests - pass: 10, skip: 4
* ltp-securebits-tests - pass: 4,
* ltp-syscalls-tests - pass: 999, skip: 151
* ltp-timers-tests - pass: 12, skip: 1
juno-r2 - arm64
* boot - pass: 20,
* kselftest - pass: 48, skip: 17
* libhugetlbfs - pass: 90, skip: 1
* ltp-cap_bounds-tests - pass: 2,
* ltp-containers-tests - pass: 64, skip: 17
* ltp-fcntl-locktests-tests - pass: 2,
* ltp-filecaps-tests - pass: 2,
* ltp-fs-tests - pass: 61, skip: 2
* ltp-fs_bind-tests - pass: 2,
* ltp-fs_perms_simple-tests - pass: 19,
* ltp-fsx-tests - pass: 2,
* ltp-hugetlb-tests - pass: 22,
* ltp-io-tests - pass: 3,
* ltp-ipc-tests - pass: 9,
* ltp-math-tests - pass: 11,
* ltp-nptl-tests - pass: 2,
* ltp-pty-tests - pass: 4,
* ltp-sched-tests - pass: 10, skip: 4
* ltp-securebits-tests - pass: 4,
* ltp-syscalls-tests - pass: 1001, skip: 149
* ltp-timers-tests - pass: 12, skip: 1
x15 - arm
* boot - pass: 20,
* kselftest - pass: 45, skip: 19
* libhugetlbfs - pass: 87, skip: 1
* ltp-cap_bounds-tests - pass: 2,
* ltp-containers-tests - pass: 64, skip: 17
* ltp-fcntl-locktests-tests - pass: 2,
* ltp-filecaps-tests - pass: 2,
* ltp-fs-tests - pass: 61, skip: 2
* ltp-fs_bind-tests - pass: 2,
* ltp-fs_perms_simple-tests - pass: 19,
* ltp-fsx-tests - pass: 2,
* ltp-hugetlb-tests - pass: 20, skip: 2
* ltp-io-tests - pass: 3,
* ltp-ipc-tests - pass: 9,
* ltp-math-tests - pass: 11,
* ltp-nptl-tests - pass: 2,
* ltp-pty-tests - pass: 4,
* ltp-sched-tests - pass: 13, skip: 1
* ltp-securebits-tests - pass: 4,
* ltp-syscalls-tests - pass: 1053, skip: 97
* ltp-timers-tests - pass: 12, skip: 1
x86_64
* boot - pass: 20,
* kselftest - pass: 61, skip: 19
* libhugetlbfs - pass: 90, skip: 1
* ltp-cap_bounds-tests - pass: 2,
* ltp-containers-tests - pass: 64, skip: 17
* ltp-fcntl-locktests-tests - pass: 2,
* ltp-filecaps-tests - pass: 2,
* ltp-fs-tests - pass: 62, skip: 1
* ltp-fs_bind-tests - pass: 2,
* ltp-fs_perms_simple-tests - pass: 19,
* ltp-fsx-tests - pass: 2,
* ltp-hugetlb-tests - pass: 22,
* ltp-io-tests - pass: 3,
* ltp-ipc-tests - pass: 9,
* ltp-math-tests - pass: 11,
* ltp-nptl-tests - pass: 2,
* ltp-pty-tests - pass: 4,
* ltp-sched-tests - pass: 9, skip: 5
* ltp-securebits-tests - pass: 4,
* ltp-syscalls-tests - pass: 1031, skip: 119
* ltp-timers-tests - pass: 12, skip: 1
--
Linaro QA (beta)
https://qa-reports.linaro.org
On 02/26/2018 12:21 PM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.14.23 release.
> There are 54 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
> Anything received after that time might be too late.
>
microblaze, m32r:
include/linux/byteorder/big_endian.h:8:2: warning: #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN [-Wcpp]
#warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN
^~~~~~~
/opt/buildbot/slave/stable-queue-4.14/build/lib/find_bit.c:176:15: error: redefinition of ‘find_next_zero_bit_le’
v4.15 is also affected (m32r builds in v4.15, though, for some reason).
Guenter
On Tue, Feb 27, 2018 at 02:59:39AM -0800, Guenter Roeck wrote:
> On 02/26/2018 12:21 PM, Greg Kroah-Hartman wrote:
> > This is the start of the stable review cycle for the 4.14.23 release.
> > There are 54 patches in this series, all will be posted as a response
> > to this one. If anyone has any issues with these being applied, please
> > let me know.
> >
> > Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
> > Anything received after that time might be too late.
> >
>
> microblaze, m32r:
>
> include/linux/byteorder/big_endian.h:8:2: warning: #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN [-Wcpp]
> #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN
> ^~~~~~~
> /opt/buildbot/slave/stable-queue-4.14/build/lib/find_bit.c:176:15: error: redefinition of ‘find_next_zero_bit_le’
>
> v4.15 is also affected (m32r builds in v4.15, though, for some reason).
This sounds like Arnd's Kbuild change 101110f6271c ("Kbuild: always
define endianess in kconfig.h")
Does this problem also show up in Linus's tree?
Arnd, any ideas?
thanks,
greg k-h
On Mon, Feb 26, 2018 at 01:45:19PM -0800, Tony Lindgren wrote:
> * Guenter Roeck <[email protected]> [180226 21:20]:
> > On Mon, Feb 26, 2018 at 02:58:24PM -0600, Dan Murphy wrote:
> > > Tony L/Greg
> > >
> > > On 02/26/2018 02:21 PM, Greg Kroah-Hartman wrote:
> > > > This is the start of the stable review cycle for the 4.14.23 release.
> > > > There are 54 patches in this series, all will be posted as a response
> > > > to this one. If anyone has any issues with these being applied, please
> > > > let me know.
> > > >
> > > > Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
> > > > Anything received after that time might be too late.
> > > >
> > >
> > > We have a build issue on 4.14.22 and can be re-created with this rc as well.
> > >
> > > arch/arm/mach-omap2/omap-secure.o: In function `omap3_save_secure_ram':
> > > omap-secure.c:(.text+0xe4): undefined reference to `save_secure_ram_context'
> > > make: *** [vmlinux] Error 1
> > >
> > > The issue was introduced with the back port of
> > >
> > > b59a1da647f163d0bf035f823a908b45c357643a ARM: OMAP2+: Fix SRAM virt to phys translation for save_secure_ram_context
> > >
> > Looks like you may have CONFIG_PM disabled, is that correct ?
> > Is there a default configuration that we can use to reproduce
> > the problem ?
>
> It should be fixed with this commit in mainline kernel:
>
> 863204cfdae9 ("ARM: omap2: hide omap3_save_secure_ram on non-OMAP3 builds")
Thanks, I'll queue this up in the next round.
greg k-h
On 02/27/2018 05:08 AM, Greg Kroah-Hartman wrote:
> On Tue, Feb 27, 2018 at 02:59:39AM -0800, Guenter Roeck wrote:
>> On 02/26/2018 12:21 PM, Greg Kroah-Hartman wrote:
>>> This is the start of the stable review cycle for the 4.14.23 release.
>>> There are 54 patches in this series, all will be posted as a response
>>> to this one. If anyone has any issues with these being applied, please
>>> let me know.
>>>
>>> Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
>>> Anything received after that time might be too late.
>>>
>>
>> microblaze, m32r:
>>
>> include/linux/byteorder/big_endian.h:8:2: warning: #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN [-Wcpp]
>> #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN
>> ^~~~~~~
>> /opt/buildbot/slave/stable-queue-4.14/build/lib/find_bit.c:176:15: error: redefinition of ‘find_next_zero_bit_le’
>>
>> v4.15 is also affected (m32r builds in v4.15, though, for some reason).
>
> This sounds like Arnd's Kbuild change 101110f6271c ("Kbuild: always
> define endianess in kconfig.h")
>
> Does this problem also show up in Linus's tree?
>
No. My guess would be that some context patches are missing in the older kernels.
I also get lots of
include/linux/byteorder/big_endian.h:8:2: warning: #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN
which as it turns out is also seen in v4.14.22, meaning the actual problem
was most likely introduced earlier (I don't see that warning upstream).
Guenter
On 02/27/2018 05:08 AM, Greg Kroah-Hartman wrote:
> On Tue, Feb 27, 2018 at 02:59:39AM -0800, Guenter Roeck wrote:
>> On 02/26/2018 12:21 PM, Greg Kroah-Hartman wrote:
>>> This is the start of the stable review cycle for the 4.14.23 release.
>>> There are 54 patches in this series, all will be posted as a response
>>> to this one. If anyone has any issues with these being applied, please
>>> let me know.
>>>
>>> Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
>>> Anything received after that time might be too late.
>>>
>>
>> microblaze, m32r:
>>
>> include/linux/byteorder/big_endian.h:8:2: warning: #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN [-Wcpp]
>> #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN
>> ^~~~~~~
>> /opt/buildbot/slave/stable-queue-4.14/build/lib/find_bit.c:176:15: error: redefinition of ‘find_next_zero_bit_le’
>>
>> v4.15 is also affected (m32r builds in v4.15, though, for some reason).
>
> This sounds like Arnd's Kbuild change 101110f6271c ("Kbuild: always
> define endianess in kconfig.h")
>
> Does this problem also show up in Linus's tree?
>
> Arnd, any ideas?
>
Missing for m32r: c95f121142a41c951fd62683a5574f2a7b37c573
Missing for microblaze: 71e7673dadfdae0605d4c1f66ecb4b045c79fe0f
Guenter
On 02/26/2018 12:21 PM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.14.23 release.
> There are 54 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
> Anything received after that time might be too late.
>
Build results:
total: 145 pass: 141 fail: 4
Failed builds:
m32r:defconfig
microblaze:mmu_defconfig
microblaze:nommu_defconfig
microblaze:allnoconfig
Qemu test results:
total: 127 pass: 127 fail: 0
Details are available at http://kerneltests.org/builders.
Guenter
On Tue, Feb 27, 2018 at 06:38:59AM -0800, Guenter Roeck wrote:
> On 02/27/2018 05:08 AM, Greg Kroah-Hartman wrote:
> > On Tue, Feb 27, 2018 at 02:59:39AM -0800, Guenter Roeck wrote:
> > > On 02/26/2018 12:21 PM, Greg Kroah-Hartman wrote:
> > > > This is the start of the stable review cycle for the 4.14.23 release.
> > > > There are 54 patches in this series, all will be posted as a response
> > > > to this one. If anyone has any issues with these being applied, please
> > > > let me know.
> > > >
> > > > Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
> > > > Anything received after that time might be too late.
> > > >
> > >
> > > microblaze, m32r:
> > >
> > > include/linux/byteorder/big_endian.h:8:2: warning: #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN [-Wcpp]
> > > #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN
> > > ^~~~~~~
> > > /opt/buildbot/slave/stable-queue-4.14/build/lib/find_bit.c:176:15: error: redefinition of ‘find_next_zero_bit_le’
> > >
> > > v4.15 is also affected (m32r builds in v4.15, though, for some reason).
> >
> > This sounds like Arnd's Kbuild change 101110f6271c ("Kbuild: always
> > define endianess in kconfig.h")
> >
> > Does this problem also show up in Linus's tree?
> >
> > Arnd, any ideas?
> >
>
> Missing for m32r: c95f121142a41c951fd62683a5574f2a7b37c573
> Missing for microblaze: 71e7673dadfdae0605d4c1f66ecb4b045c79fe0f
Thanks, both queued up, and I've pushed out new 4.14.y and 4.15.y trees.
greg k-h
On Tue, Feb 27, 2018 at 07:36:18PM +0100, Greg Kroah-Hartman wrote:
> On Tue, Feb 27, 2018 at 06:38:59AM -0800, Guenter Roeck wrote:
> > On 02/27/2018 05:08 AM, Greg Kroah-Hartman wrote:
> > > On Tue, Feb 27, 2018 at 02:59:39AM -0800, Guenter Roeck wrote:
> > > > On 02/26/2018 12:21 PM, Greg Kroah-Hartman wrote:
> > > > > This is the start of the stable review cycle for the 4.14.23 release.
> > > > > There are 54 patches in this series, all will be posted as a response
> > > > > to this one. If anyone has any issues with these being applied, please
> > > > > let me know.
> > > > >
> > > > > Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
> > > > > Anything received after that time might be too late.
> > > > >
> > > >
> > > > microblaze, m32r:
> > > >
> > > > include/linux/byteorder/big_endian.h:8:2: warning: #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN [-Wcpp]
> > > > #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN
> > > > ^~~~~~~
> > > > /opt/buildbot/slave/stable-queue-4.14/build/lib/find_bit.c:176:15: error: redefinition of ‘find_next_zero_bit_le’
> > > >
> > > > v4.15 is also affected (m32r builds in v4.15, though, for some reason).
> > >
> > > This sounds like Arnd's Kbuild change 101110f6271c ("Kbuild: always
> > > define endianess in kconfig.h")
> > >
> > > Does this problem also show up in Linus's tree?
> > >
> > > Arnd, any ideas?
> > >
> >
> > Missing for m32r: c95f121142a41c951fd62683a5574f2a7b37c573
> > Missing for microblaze: 71e7673dadfdae0605d4c1f66ecb4b045c79fe0f
>
> Thanks, both queued up, and I've pushed out new 4.14.y and 4.15.y trees.
>
I started another build to test it; I'll let you know after it is complete.
Guenter
On Tue, Feb 27, 2018 at 07:36:18PM +0100, Greg Kroah-Hartman wrote:
> On Tue, Feb 27, 2018 at 06:38:59AM -0800, Guenter Roeck wrote:
> > On 02/27/2018 05:08 AM, Greg Kroah-Hartman wrote:
> > > On Tue, Feb 27, 2018 at 02:59:39AM -0800, Guenter Roeck wrote:
> > > > On 02/26/2018 12:21 PM, Greg Kroah-Hartman wrote:
> > > > > This is the start of the stable review cycle for the 4.14.23 release.
> > > > > There are 54 patches in this series, all will be posted as a response
> > > > > to this one. If anyone has any issues with these being applied, please
> > > > > let me know.
> > > > >
> > > > > Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
> > > > > Anything received after that time might be too late.
> > > > >
> > > >
> > > > microblaze, m32r:
> > > >
> > > > include/linux/byteorder/big_endian.h:8:2: warning: #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN [-Wcpp]
> > > > #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN
> > > > ^~~~~~~
> > > > /opt/buildbot/slave/stable-queue-4.14/build/lib/find_bit.c:176:15: error: redefinition of ‘find_next_zero_bit_le’
> > > >
> > > > v4.15 is also affected (m32r builds in v4.15, though, for some reason).
> > >
> > > This sounds like Arnd's Kbuild change 101110f6271c ("Kbuild: always
> > > define endianess in kconfig.h")
> > >
> > > Does this problem also show up in Linus's tree?
> > >
> > > Arnd, any ideas?
> > >
> >
> > Missing for m32r: c95f121142a41c951fd62683a5574f2a7b37c573
> > Missing for microblaze: 71e7673dadfdae0605d4c1f66ecb4b045c79fe0f
>
> Thanks, both queued up, and I've pushed out new 4.14.y and 4.15.y trees.
>
All builds are confirmed clean. Tested:
v3.18.96-13-g98f6a49
v4.4.118-22-ge62da23
v4.9.84-40-g8a6c3b0
v4.14.22-57-g02ee682
v4.15.6-66-g53e92b3
Guenter
On Tue, Feb 27, 2018 at 03:12:02PM -0800, Guenter Roeck wrote:
> On Tue, Feb 27, 2018 at 07:36:18PM +0100, Greg Kroah-Hartman wrote:
> > On Tue, Feb 27, 2018 at 06:38:59AM -0800, Guenter Roeck wrote:
> > > On 02/27/2018 05:08 AM, Greg Kroah-Hartman wrote:
> > > > On Tue, Feb 27, 2018 at 02:59:39AM -0800, Guenter Roeck wrote:
> > > > > On 02/26/2018 12:21 PM, Greg Kroah-Hartman wrote:
> > > > > > This is the start of the stable review cycle for the 4.14.23 release.
> > > > > > There are 54 patches in this series, all will be posted as a response
> > > > > > to this one. If anyone has any issues with these being applied, please
> > > > > > let me know.
> > > > > >
> > > > > > Responses should be made by Wed Feb 28 20:21:22 UTC 2018.
> > > > > > Anything received after that time might be too late.
> > > > > >
> > > > >
> > > > > microblaze, m32r:
> > > > >
> > > > > include/linux/byteorder/big_endian.h:8:2: warning: #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN [-Wcpp]
> > > > > #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN
> > > > > ^~~~~~~
> > > > > /opt/buildbot/slave/stable-queue-4.14/build/lib/find_bit.c:176:15: error: redefinition of ‘find_next_zero_bit_le’
> > > > >
> > > > > v4.15 is also affected (m32r builds in v4.15, though, for some reason).
> > > >
> > > > This sounds like Arnd's Kbuild change 101110f6271c ("Kbuild: always
> > > > define endianess in kconfig.h")
> > > >
> > > > Does this problem also show up in Linus's tree?
> > > >
> > > > Arnd, any ideas?
> > > >
> > >
> > > Missing for m32r: c95f121142a41c951fd62683a5574f2a7b37c573
> > > Missing for microblaze: 71e7673dadfdae0605d4c1f66ecb4b045c79fe0f
> >
> > Thanks, both queued up, and I've pushed out new 4.14.y and 4.15.y trees.
> >
> All builds are confirmed clean. Tested:
>
> v3.18.96-13-g98f6a49
> v4.4.118-22-ge62da23
> v4.9.84-40-g8a6c3b0
> v4.14.22-57-g02ee682
> v4.15.6-66-g53e92b3
Wonderful, thanks for testing all of this and letting me know.
greg k-h