Merge android-4.9-q (4.9.254) into android-msm-pixel-4.9-lts
Merge 4.9.254 into android-4.9-q
Linux 4.9.254
x86/boot/compressed: Disable relocation relaxation
* tracing: Fix race in trace_open and buffer resize call
kernel/trace/ring_buffer.c
* Revert "mm/slub: fix a memory leak in sysfs_slab_add()"
mm/slub.c
net: dsa: b53: fix an off by one in checking "vlan->vid"
net_sched: avoid shift-out-of-bounds in tcindex_set_parms()
* ipv6: create multicast route with RTPROT_KERNEL
net/ipv6/addrconf.c
* skbuff: back tiny skbs with kmalloc() in __netdev_alloc_skb() too
net/core/skbuff.c
sh_eth: Fix power down vs. is_opened flag ordering
sh: dma: fix kconfig dependency for G2_DMA
* netfilter: rpfilter: mask ecn bits before fib lookup
net/ipv4/netfilter/ipt_rpfilter.c
* compiler.h: Raise minimum version of GCC to 5.1 for arm64
include/linux/compiler-gcc.h
* bpf: Fix buggy rsh min/max bounds tracking
kernel/bpf/verifier.c
xhci: tegra: Delay for disabling LFPS detector
* xhci: make sure TRB is fully written before giving it to the controller
drivers/usb/host/xhci-ring.c
* usb: bdc: Make bdc pci driver depend on BROKEN
drivers/usb/gadget/udc/bdc/Kconfig
* usb: udc: core: Use lock when write to soft_connect
drivers/usb/gadget/udc/core.c
USB: ehci: fix an interrupt calltrace error
ehci: fix EHCI host controller initialization sequence
stm class: Fix module init return on allocation failure
iio: ad5504: Fix setting power-down state
can: dev: can_restart: fix use after free bug
i2c: octeon: check correct size of maximum RECV_LEN packet
drm/nouveau/i2c/gm200: increase width of aux semaphore owner fields
drm/nouveau/bios: fix issue shadowing expansion ROMs
* scsi: ufs: Correct the LUN used in eh_device_reset_handler() callback
drivers/scsi/ufs/ufshcd.c
ASoC: Intel: haswell: Add missing pm_ops
* dm: avoid filesystem lookup in dm_get_dev_t()
drivers/md/dm-table.c
ACPI: scan: Make acpi_bus_get_device() clear return pointer on error
ALSA: hda/via: Add minimum mute flag
ALSA: seq: oss: Fix missing error check in snd_seq_oss_synth_make_info()
Merge 4.9.253 into android-4.9-q
Linux 4.9.253
spi: cadence: cache reference clock rate during probe
tipc: fix NULL deref in tipc_link_xmit()
rxrpc: Fix handling of an unsupported token type in rxrpc_read()
* net: avoid 32 x truesize under-estimation for tiny skbs
net/core/skbuff.c
* net: sit: unregister_netdevice on newlink's error path
net/ipv6/sit.c
net: dcb: Accept RTM_GETDCB messages carrying set-like DCB commands
net: dcb: Validate netlink message in DCB handler
rndis_host: set proper input size for OID_GEN_PHYSICAL_MEDIUM request
netxen_nic: fix MSI/MSI-x interrupts
* net: cdc_ncm: correct overhead in delayed_ndp_size
drivers/net/usb/cdc_ncm.c
nfsd4: readdirplus shouldn't return parent of export
usb: ohci: Make distrust_firmware param default to false
* netfilter: conntrack: fix reading nf_conntrack_buckets
net/netfilter/nf_conntrack_standalone.c
net: sunrpc: interpret the return value of kstrtou32 correctly
* mm, slub: consider rest of partial list if acquire_slab() fails
mm/slub.c
RDMA/usnic: Fix memleak in find_free_vf_and_create_qp_grp
* ext4: fix superblock checksum failure when setting password salt
fs/ext4/ioctl.c
NFS: nfs_igrab_and_active must first reference the superblock
* dump_common_audit_data(): fix racy accesses to ->d_name
security/lsm_audit.c
* Input: uinput - avoid FF flush when destroying device
drivers/input/ff-core.c
drivers/input/misc/uinput.c
include/linux/input.h
ARM: picoxcell: fix missing interrupt-parent properties
* ACPI: scan: add stub acpi_create_platform_device() for !CONFIG_ACPI
include/linux/acpi.h
net: ethernet: fs_enet: Add missing MODULE_LICENSE
* misdn: dsp: select CONFIG_BITREVERSE
drivers/isdn/mISDN/Kconfig
arch/arc: add copy_user_page() to <asm/page.h> to fix build error on ARC
ethernet: ucc_geth: fix definition and size of ucc_geth_tx_global_pram
ARC: build: add boot_targets to PHONY
* ext4: fix bug for rename with RENAME_WHITEOUT
fs/ext4/namei.c
mm/hugetlb: fix potential missing huge page size info
ACPI: scan: Harden acpi_device_add() against device ID overflows
MIPS: relocatable: fix possible boot hangup with KASLR enabled
MIPS: boot: Fix unaligned access with CONFIG_MIPS_RAW_APPENDED_DTB
* ASoC: dapm: remove widget from dirty list on free
sound/soc/soc-dapm.c
Merge 4.9.252 into android-4.9-q
Linux 4.9.252
* net: drop bogus skb with CHECKSUM_PARTIAL and offset beyond end of trimmed packet
net/core/skbuff.c
* block: fix use-after-free in disk_part_iter_next
block/genhd.c
KVM: arm64: Don't access PMCR_EL0 when no PMU is available
* wan: ds26522: select CONFIG_BITREVERSE
drivers/net/wan/Kconfig
net/mlx5e: Fix memleak in mlx5e_create_l2_table_groups
iommu/intel: Fix memleak in intel_irq_remapping_alloc
* block: rsxx: select CONFIG_CRC32
drivers/block/Kconfig
* wil6210: select CONFIG_CRC32
drivers/net/wireless/ath/wil6210/Kconfig
dmaengine: xilinx_dma: fix mixed_enum_type coverity warning
dmaengine: xilinx_dma: check dma_async_device_register return value
cpufreq: powernow-k8: pass policy rather than use cpufreq_cpu_get()
ARM: OMAP2+: omap_device: fix idling of devices during probe
spi: pxa2xx: Fix use-after-free on unbind
ubifs: wbuf: Don't leak kernel memory to flash
drm/i915: Fix mismatch between misplaced vma check and vma insert
* vmlinux.lds.h: Add PGO and AutoFDO input sections
include/asm-generic/vmlinux.lds.h
* net: fix pmtu check in nopmtudisc mode
net/ipv4/ip_tunnel.c
* net: ip: always refragment ip defragmented packets
net/ipv4/ip_output.c
powerpc: Fix incorrect stw{, ux, u, x} instructions in __set_pte_at
target: add XCOPY target/segment desc sense codes
scsi: target: Fix XCOPY NAA identifier lookup
xcopy: loop over devices using idr helper
target: use XCOPY segment descriptor CSCD IDs
target: simplify XCOPY wwn->se_dev lookup helper
target: bounds check XCOPY segment descriptor list
ANDROID: cuttlefish_defconfig: add missing CONFIG_BLK_CGROUP
Merge 4.9.251 into android-4.9-q
Linux 4.9.251
x86/mtrr: Correct the range check before performing MTRR type lookups
netfilter: xt_RATEEST: reject non-null terminated string from userspace
netfilter: ipset: fix shift-out-of-bounds in htable_bits()
* Revert "device property: Keep secondary firmware node secondary by type"
drivers/base/core.c
ALSA: hda/conexant: add a new hda codec CX11970
x86/mm: Fix leak of pmd ptlock
USB: serial: keyspan_pda: remove unused variable
* usb: gadget: configfs: Fix use-after-free issue with udc_name
drivers/usb/gadget/configfs.c
* usb: gadget: configfs: Preserve function ordering after bind failure
drivers/usb/gadget/configfs.c
* usb: gadget: Fix spinlock lockup on usb_function_deactivate
drivers/usb/gadget/composite.c
USB: gadget: legacy: fix return error code in acm_ms_bind()
usb: gadget: function: printer: Fix a memory leak for interface descriptor
usb: gadget: f_uac2: reset wMaxPacketSize
* usb: gadget: select CONFIG_CRC32
drivers/usb/gadget/Kconfig
* ALSA: usb-audio: Fix UBSAN warnings for MIDI jacks
sound/usb/midi.c
USB: usblp: fix DMA to stack
USB: yurex: fix control-URB timeout handling
USB: serial: option: add LongSung M5710 module support
USB: serial: iuu_phoenix: fix DMA from stack
usb: uas: Add PNY USB Portable SSD to unusual_uas
* USB: xhci: fix U1/U2 handling for hardware with XHCI_INTEL_HOST quirk set
drivers/usb/host/xhci.c
usb: chipidea: ci_hdrc_imx: add missing put_device() call in usbmisc_get_init_data()
USB: cdc-acm: blacklist another IR Droid device
* usb: gadget: enable super speed plus
drivers/usb/gadget/configfs.c
video: hyperv_fb: Fix the mmap() regression for v5.4.y and older
scripts/gdb: fix lx-version string output
scripts/gdb: lx-dmesg: use explicit encoding=utf8 errors=replace
scripts/gdb: lx-dmesg: cast log_buf to void* for addr fetch
scripts/gdb: make lx-dmesg command work (reliably)
virtio_net: Fix recursive call to cpus_read_lock()
net: sched: prevent invalid Scell_log shift count
vhost_net: fix ubuf refcount incorrectly when sendmsg fails
* CDC-NCM: remove "connected" log message
drivers/net/usb/cdc_ncm.c
net: hdlc_ppp: Fix issues when mod_timer is called while timer is running
net: hns: fix return value check in __lb_other_process()
* ipv4: Ignore ECN bits for fib lookups in fib_compute_spec_dst()
net/ipv4/fib_frontend.c
net: ethernet: Fix memleak in ethoc_probe
net/ncsi: Use real net-device for response handler
atm: idt77252: call pci_disable_device() on error path
ethernet: ucc_geth: fix use-after-free in ucc_geth_remove()
* depmod: handle the case of /sbin/depmod without /sbin in PATH
scripts/depmod.sh
* lib/genalloc: fix the overflow when size is too big
lib/genalloc.c
* workqueue: Kick a worker based on the actual activation of delayed works
kernel/workqueue.c
* kbuild: don't hardcode depmod path
Makefile
Merge 4.9.250 into android-4.9-q
Linux 4.9.250
mwifiex: Fix possible buffer overflows in mwifiex_cmd_802_11_ad_hoc_start
iio:magnetometer:mag3110: Fix alignment and data leak issues.
iio:imu:bmi160: Fix alignment and data leak issues
iio:imu:bmi160: Fix too large a buffer.
iio: bmi160_core: Fix sparse warning due to incorrect type in assignment
xenbus/xenbus_backend: Disallow pending watch messages
xen/xenbus: Count pending messages for each watch
xen/xenbus/xen_bus_type: Support will_handle watch callback
xen/xenbus: Add 'will_handle' callback support in xenbus_watch_path()
xen/xenbus: Allow watches discard events before queueing
* kdev_t: always inline major/minor helper functions
include/linux/kdev_t.h
* module: delay kobject uevent until after module init call
kernel/module.c
powerpc: sysdev: add missing iounmap() on error in mpic_msgr_probe()
* quota: Don't overflow quota file offsets
fs/quota/quota_tree.c
* module: set MODULE_STATE_GOING state when a module fails to load
kernel/module.c
ALSA: seq: Use bool for snd_seq_queue internal flags
media: gp8psk: initialize stats at power control logic
misc: vmw_vmci: fix kernel info-leak by initializing dbells in vmci_ctx_get_chkpt_doorbells()
reiserfs: add check for an invalid ih_entry_count
* of: fix linker-section match-table corruption
include/linux/of.h
* uapi: move constants from <linux/kernel.h> to <linux/const.h>
include/uapi/linux/const.h
include/uapi/linux/ethtool.h
include/uapi/linux/kernel.h
include/uapi/linux/mroute6.h
include/uapi/linux/netfilter/x_tables.h
include/uapi/linux/netlink.h
include/uapi/linux/sysctl.h
* l2tp: fix races with ipv4-mapped ipv6 addresses
net/l2tp/l2tp_core.c
net/l2tp/l2tp_core.h
* net: ipv6: keep sk status consistent after datagram connect failure
net/ipv6/datagram.c
USB: serial: digi_acceleport: fix write-wakeup deadlocks
s390/dasd: fix hanging device offline processing
vfio/pci: Move dummy_resources_list init in vfio_pci_probe()
ALSA: hda/realtek - Dell headphone has noise on unmute for ALC236
ALSA: hda - Fix a wrong FIXUP for alc289 on Dell machines
ALSA: hda/realtek - Support Dell headset mode for ALC3271
* ALSA: usb-audio: fix sync-ep altsetting sanity check
sound/usb/pcm.c
* ALSA: usb-audio: simplify set_sync_ep_implicit_fb_quirk
sound/usb/pcm.c
ALSA: hda/ca0132 - Fix work handling in delayed HP detection
x86/entry/64: Add instruction suffix
* ANDROID: usb: f_accessory: Don't drop NULL reference in acc_disconnect()
drivers/usb/gadget/function/f_accessory.c
* ANDROID: usb: f_accessory: Avoid bitfields for shared variables
drivers/usb/gadget/function/f_accessory.c
* ANDROID: usb: f_accessory: Cancel any pending work before teardown
drivers/usb/gadget/function/f_accessory.c
* ANDROID: usb: f_accessory: Don't corrupt global state on double registration
drivers/usb/gadget/function/f_accessory.c
* ANDROID: usb: f_accessory: Fix teardown ordering in acc_release()
drivers/usb/gadget/function/f_accessory.c
* ANDROID: usb: f_accessory: Add refcounting to global 'acc_dev'
drivers/usb/gadget/function/f_accessory.c
* UPSTREAM: locking/atomic, kref: Add KREF_INIT()
fs/fuse/fuse_i.h
include/linux/kref.h
init/version.c
kernel/pid.c
* ANDROID: usb: f_accessory: Wrap '_acc_dev' in get()/put() accessors
drivers/usb/gadget/function/f_accessory.c
* ANDROID: usb: f_accessory: Remove useless assignment
drivers/usb/gadget/function/f_accessory.c
* ANDROID: usb: f_accessory: Remove useless non-debug prints
drivers/usb/gadget/function/f_accessory.c
* ANDROID: usb: f_accessory: Remove stale comments
drivers/usb/gadget/function/f_accessory.c
* ANDROID: USB: f_accessory: Check dev pointer before decoding ctrl request
drivers/usb/gadget/function/f_accessory.c
* ANDROID: usb: gadget: f_accessory: fix CTS test stuck
drivers/usb/gadget/function/f_accessory.c
Merge 4.9.249 into android-4.9-q
Linux 4.9.249
* PCI: Fix pci_slot_release() NULL pointer dereference
drivers/pci/slot.c
xen-blkback: set ring->xenblkd to NULL after kthread_stop()
clk: mvebu: a3700: fix the XTAL MODE pin to MPP1_9
iio:pressure:mpl3115: Force alignment of buffer
iio: adc: rockchip_saradc: fix missing clk_disable_unprepare() on error in rockchip_saradc_resume
iio: buffer: Fix demux update
mtd: parser: cmdline: Fix parsing of part-names with colons
soc: qcom: smp2p: Safely acquire spinlock without IRQs
spi: st-ssc4: Fix unbalanced pm_runtime_disable() in probe error path
spi: sc18is602: Don't leak SPI master in probe error path
spi: rb4xx: Don't leak SPI master in probe error path
spi: pic32: Don't leak DMA channels in probe error path
spi: davinci: Fix use-after-free on unbind
spi: spi-sh: Fix use-after-free on unbind
drm/dp_aux_dev: check aux_dev before use in drm_dp_aux_dev_get_by_minor()
jfs: Fix array index bounds check in dbAdjTree
jffs2: Fix GC exit abnormally
ceph: fix race in concurrent __ceph_remove_cap invocations
powerpc/xmon: Change printk() to pr_cont()
* KVM: arm64: Introduce handling of AArch32 TTBCR2 traps
arch/arm64/include/asm/kvm_host.h
* ext4: fix a memory leak of ext4_free_data
fs/ext4/mballoc.c
btrfs: fix return value mixup in btrfs_get_extent
Btrfs: fix selftests failure due to uninitialized i_mode in test inodes
btrfs: scrub: Don't use inode page cache in scrub_handle_errored_block()
btrfs: quota: Set rescan progress to (u64)-1 if we hit last leaf
USB: serial: keyspan_pda: fix write unthrottling
USB: serial: keyspan_pda: fix tx-unthrottle use-after-free
USB: serial: keyspan_pda: fix write-wakeup use-after-free
USB: serial: keyspan_pda: fix stalled writes
USB: serial: keyspan_pda: fix write deadlock
USB: serial: keyspan_pda: fix dropped unthrottle interrupts
USB: serial: mos7720: fix parallel-port state restore
powerpc/perf: Exclude kernel samples while counting events in user space.
staging: comedi: mf6x4: Fix AI end-of-conversion detection
s390/dasd: fix list corruption of lcu list
s390/dasd: fix list corruption of pavgroup group list
s390/dasd: prevent inconsistent LCU device data
* ALSA: usb-audio: Disable sample read check if firmware doesn't give back
sound/usb/clock.c
ALSA: pcm: oss: Fix a few more UBSAN fixes
ACPI: PNP: compare the string length in the matching_id()
Revert "ACPI / resources: Use AE_CTRL_TERMINATE to terminate resources walks"
Input: cyapa_gen6 - fix out-of-bounds stack access
media: netup_unidvb: Don't leak SPI master in probe error path
media: sunxi-cir: ensure IR is handled when it is continuous
media: gspca: Fix memory leak in probe
Input: goodix - add upside-down quirk for Teclast X98 Pro tablet
Input: cros_ec_keyb - send 'scancodes' in addition to key events
* cfg80211: initialize rekey_data
net/wireless/nl80211.c
clk: s2mps11: Fix a resource leak in error handling paths in the probe function
qlcnic: Fix error code in probe
perf record: Fix memory leak when using '--user-regs=?' to list registers
clk: ti: Fix memleak in ti_fapll_synth_setup
watchdog: qcom: Avoid context switch in restart handler
net: korina: fix return value
net: allwinner: Fix some resources leak in the error handling path of the probe and in the remove function
net: bcmgenet: Fix a resource leak in an error handling path in the probe functin
checkpatch: fix unescaped left brace
powerpc/ps3: use dma_mapping_error()
nfc: s3fwrn5: Release the nfc firmware
um: chan_xterm: Fix fd leak
irqchip/alpine-msi: Fix freeing of interrupts on allocation error path
ASoC: wm_adsp: remove "ctl" from list on error in wm_adsp_create_control()
extcon: max77693: Fix modalias string
clk: tegra: Fix duplicated SE clock entry
x86/kprobes: Restore BTF if the single-stepping is cancelled
nfs_common: need lock during iterate through the list
nfsd: Fix message level for normal termination
speakup: fix uninitialized flush_lock
usb: oxu210hp-hcd: Fix memory leak in oxu_create
usb: ehci-omap: Fix PM disable depth umbalance in ehci_hcd_omap_probe
powerpc/pseries/hibernation: drop pseries_suspend_begin() from suspend ops
scsi: fnic: Fix error return code in fnic_probe()
* seq_buf: Avoid type mismatch for seq_buf_init
include/linux/seq_buf.h
include/linux/trace_seq.h
scsi: pm80xx: Fix error return in pm8001_pci_probe()
cpufreq: scpi: Add missing MODULE_ALIAS
cpufreq: loongson1: Add missing MODULE_ALIAS
cpufreq: st: Add missing MODULE_DEVICE_TABLE
cpufreq: highbank: Add missing MODULE_DEVICE_TABLE
* clocksource/drivers/arm_arch_timer: Correct fault programming of CNTKCTL_EL1.EVNTI
drivers/clocksource/arm_arch_timer.c
* dm ioctl: fix error return code in target_message
drivers/md/dm-ioctl.c
ASoC: jz4740-i2s: add missed checks for clk_get()
memstick: r592: Fix error return in r592_probe()
pinctrl: falcon: add missing put_device() call in pinctrl_falcon_probe()
clocksource/drivers/cadence_ttc: Fix memory leak in ttc_setup_clockevent()
media: saa7146: fix array overflow in vidioc_s_audio()
vfio-pci: Use io_remap_pfn_range() for PCI IO memory
NFS: switch nfsiod to be an UNBOUND workqueue.
lockd: don't use interval-based rebinding over TCP
* SUNRPC: xprt_load_transport() needs to support the netid "rdma6"
include/linux/sunrpc/xprt.h
NFSv4.2: condition READDIR's mask for security label based on LSM state
ARM: dts: at91: at91sam9rl: fix ADC triggers
HSI: omap_ssi: Don't jump to free ID in ssi_add_controller()
mips: cdmm: fix use-after-free in mips_cdmm_bus_discover
media: siano: fix memory leak of debugfs members in smsdvb_hotplug
cw1200: fix missing destroy_workqueue() on error in cw1200_init_common
orinoco: Move context allocation after processing the skb
ARM: dts: at91: sama5d3_xplained: add pincontrol for USB Host
ARM: dts: at91: sama5d4_xplained: add pincontrol for USB Host
memstick: fix a double-free bug in memstick_check
RDMA/cxgb4: Validate the number of CQEs
drivers: soc: ti: knav_qmss_queue: Fix error return code in knav_queue_probe
soc: ti: Fix reference imbalance in knav_dma_probe
soc: ti: knav_qmss: fix reference leak in knav_queue_probe
crypto: omap-aes - Fix PM disable depth imbalance in omap_aes_probe
powerpc/feature: Fix CPU_FTRS_ALWAYS by removing CPU_FTRS_GENERIC_32
Input: ads7846 - fix unaligned access on 7845
Input: ads7846 - fix integer overflow on Rt calculation
drm/omap: dmm_tiler: fix return error code in omap_dmm_probe()
media: solo6x10: fix missing snd_card_free in error handling case
staging: greybus: codecs: Fix reference counter leak in error handling
MIPS: BCM47XX: fix kconfig dependency bug for BCM47XX_BCMA
RDMa/mthca: Work around -Wenum-conversion warning
spi: tegra114: fix reference leak in tegra spi ops
spi: tegra20-sflash: fix reference leak in tegra_sflash_resume
spi: tegra20-slink: fix reference leak in slink ops of tegra20
spi: spi-ti-qspi: fix reference leak in ti_qspi_setup
* Bluetooth: Fix null pointer dereference in hci_event_packet()
net/bluetooth/hci_event.c
arm64: dts: exynos: Correct psci compatible used on Exynos7
* ASoC: pcm: DRAIN support reactivation
sound/soc/soc-pcm.c
spi: img-spfi: fix reference leak in img_spfi_resume
crypto: talitos - Fix return type of current_desc_hdr()
ARM: p2v: fix handling of LPAE translation in BE mode
RDMA/rxe: Compute PSN windows correctly
drm/gma500: fix double free of gma_connector
* Bluetooth: Fix slab-out-of-bounds read in hci_le_direct_adv_report_evt()
net/bluetooth/hci_event.c
md: fix a warning caused by a race between concurrent md_ioctl()s
media: msi2500: assign SPI bus number dynamically
* serial_core: Check for port state when tty is in error state
drivers/tty/serial/serial_core.c
HID: i2c-hid: add Vero K147 to descriptor override
ARM: dts: exynos: fix USB 3.0 pins supply being turned off on Odroid XU
ARM: dts: exynos: fix USB 3.0 VBUS control and over-current pins on Exynos5410
ARM: dts: exynos: fix roles of USB 3.0 ports on Odroid XU
usb: chipidea: ci_hdrc_imx: Pass DISABLE_DEVICE_STREAMING flag to imx6ul
* usb: gadget: f_fs: Re-use SS descriptors for SuperSpeedPlus
drivers/usb/gadget/function/f_fs.c
USB: gadget: f_rndis: fix bitrate for SuperSpeed and above
* USB: gadget: f_midi: setup SuperSpeed Plus descriptors
drivers/usb/gadget/function/f_midi.c
USB: gadget: f_acm: add support for SuperSpeed Plus
USB: serial: option: add interface-number sanity check to flag handling
soc/tegra: fuse: Fix index bug in get_process_id
* dm table: Remove BUG_ON(in_interrupt())
drivers/md/dm-table.c
scsi: mpt3sas: Increase IOCInit request timeout to 30s
drm/tegra: sor: Disable clocks on error in tegra_sor_init()
* kernel/cpu: add arch override for clear_tasks_mm_cpumask() mm handling
kernel/cpu.c
RDMA/cm: Fix an attempt to use non-valid pointer when cleaning timewait
can: softing: softing_netdev_open(): fix error handling
* scsi: bnx2i: Requires MMU
drivers/scsi/bnx2i/Kconfig
pinctrl: baytrail: Avoid clearing debounce value when turning it off
pinctrl: merrifield: Set default bias in case no particular value given
serial: 8250_omap: Avoid FIFO corruption caused by MDR1 access
ALSA: pcm: oss: Fix potential out-of-bounds shift
* USB: sisusbvga: Make console support depend on BROKEN
drivers/usb/misc/sisusbvga/Kconfig
* xhci: Give USB2 ports time to enter U3 in bus suspend
drivers/usb/host/xhci-hub.c
* ALSA: usb-audio: Fix control 'access overflow' errors from chmap
sound/usb/stream.c
* ALSA: usb-audio: Fix potential out-of-bounds shift
sound/usb/format.c
* USB: add RESET_RESUME quirk for Snapscan 1212
drivers/usb/core/quirks.c
USB: dummy-hcd: Fix uninitialized array use in init()
mac80211: mesh: fix mesh_pathtbl_init() error path
net: bridge: vlan: fix error return code in __vlan_add()
net: stmmac: dwmac-meson8b: fix mask definition of the m250_sel mux
net: stmmac: delete the eee_ctrl_timer after napi disabled
* tcp: fix cwnd-limited bug for TSO deferral where we send nothing
net/ipv4/tcp_output.c
net/mlx4_en: Avoid scheduling restart task if it is already running
* spi: Prevent adding devices below an unregistering controller
drivers/spi/Kconfig
drivers/spi/spi.c
scsi: be2iscsi: Revert "Fix a theoretical leak in beiscsi_create_eqs()"
pinctrl: amd: remove debounce filter setting in IRQ type setting
Input: i8042 - add Acer laptops to the i8042 reset list
Input: cm109 - do not stomp on control URB
platform/x86: acer-wmi: add automatic keyboard background light toggle key as KEY_LIGHTS_TOGGLE
ARC: stack unwinding: don't assume non-current task is sleeping
arm64: dts: rockchip: Assign a fixed index to mmc devices on rk3399 boards.
iwlwifi: pcie: limit memory read spin time
spi: bcm2835aux: Restore err assignment in bcm2835aux_spi_probe
spi: bcm2835aux: Fix use-after-free on unbind
Bug: 180663378
Change-Id: Icded594ca907f1cf0a53f7a506c1cb9e58cbc213
Signed-off-by: Lucas Wei <lucaswei@google.com>
This commit is contained in:
4
Makefile
4
Makefile
@@ -1,6 +1,6 @@
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 9
|
||||
SUBLEVEL = 248
|
||||
SUBLEVEL = 254
|
||||
EXTRAVERSION =
|
||||
NAME = Roaring Lionus
|
||||
|
||||
@@ -353,7 +353,7 @@ DTC = scripts/dtc/dtc
|
||||
AWK = awk
|
||||
GENKSYMS = scripts/genksyms/genksyms
|
||||
INSTALLKERNEL := installkernel
|
||||
DEPMOD = /sbin/depmod
|
||||
DEPMOD = depmod
|
||||
PERL = perl
|
||||
PYTHON = python
|
||||
CHECK = sparse
|
||||
|
||||
@@ -108,6 +108,7 @@ bootpImage: vmlinux
|
||||
|
||||
boot_targets += uImage uImage.bin uImage.gz
|
||||
|
||||
PHONY += $(boot_targets)
|
||||
$(boot_targets): vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#define clear_page(paddr) memset((paddr), 0, PAGE_SIZE)
|
||||
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
|
||||
#define copy_page(to, from) memcpy((to), (from), PAGE_SIZE)
|
||||
|
||||
struct vm_area_struct;
|
||||
|
||||
@@ -39,15 +39,15 @@
|
||||
|
||||
#ifdef CONFIG_ARC_DW2_UNWIND
|
||||
|
||||
static void seed_unwind_frame_info(struct task_struct *tsk,
|
||||
struct pt_regs *regs,
|
||||
struct unwind_frame_info *frame_info)
|
||||
static int
|
||||
seed_unwind_frame_info(struct task_struct *tsk, struct pt_regs *regs,
|
||||
struct unwind_frame_info *frame_info)
|
||||
{
|
||||
/*
|
||||
* synchronous unwinding (e.g. dump_stack)
|
||||
* - uses current values of SP and friends
|
||||
*/
|
||||
if (tsk == NULL && regs == NULL) {
|
||||
if (regs == NULL && (tsk == NULL || tsk == current)) {
|
||||
unsigned long fp, sp, blink, ret;
|
||||
frame_info->task = current;
|
||||
|
||||
@@ -66,11 +66,15 @@ static void seed_unwind_frame_info(struct task_struct *tsk,
|
||||
frame_info->call_frame = 0;
|
||||
} else if (regs == NULL) {
|
||||
/*
|
||||
* Asynchronous unwinding of sleeping task
|
||||
* - Gets SP etc from task's pt_regs (saved bottom of kernel
|
||||
* mode stack of task)
|
||||
* Asynchronous unwinding of a likely sleeping task
|
||||
* - first ensure it is actually sleeping
|
||||
* - if so, it will be in __switch_to, kernel mode SP of task
|
||||
* is safe-kept and BLINK at a well known location in there
|
||||
*/
|
||||
|
||||
if (tsk->state == TASK_RUNNING)
|
||||
return -1;
|
||||
|
||||
frame_info->task = tsk;
|
||||
|
||||
frame_info->regs.r27 = TSK_K_FP(tsk);
|
||||
@@ -104,6 +108,8 @@ static void seed_unwind_frame_info(struct task_struct *tsk,
|
||||
frame_info->regs.r63 = regs->ret;
|
||||
frame_info->call_frame = 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -117,7 +123,8 @@ arc_unwind_core(struct task_struct *tsk, struct pt_regs *regs,
|
||||
unsigned int address;
|
||||
struct unwind_frame_info frame_info;
|
||||
|
||||
seed_unwind_frame_info(tsk, regs, &frame_info);
|
||||
if (seed_unwind_frame_info(tsk, regs, &frame_info))
|
||||
return 0;
|
||||
|
||||
while (1) {
|
||||
address = UNW_PC(&frame_info);
|
||||
|
||||
@@ -231,6 +231,11 @@
|
||||
atmel,pins =
|
||||
<AT91_PIOE 9 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* PE9, conflicts with A9 */
|
||||
};
|
||||
pinctrl_usb_default: usb_default {
|
||||
atmel,pins =
|
||||
<AT91_PIOE 3 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
|
||||
AT91_PIOE 4 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -288,6 +293,8 @@
|
||||
&pioE 3 GPIO_ACTIVE_LOW
|
||||
&pioE 4 GPIO_ACTIVE_LOW
|
||||
>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usb_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
||||
@@ -152,6 +152,11 @@
|
||||
atmel,pins =
|
||||
<AT91_PIOE 31 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
|
||||
};
|
||||
pinctrl_usb_default: usb_default {
|
||||
atmel,pins =
|
||||
<AT91_PIOE 11 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
|
||||
AT91_PIOE 14 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
|
||||
};
|
||||
pinctrl_key_gpio: key_gpio_0 {
|
||||
atmel,pins =
|
||||
<AT91_PIOE 8 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
|
||||
@@ -177,6 +182,8 @@
|
||||
&pioE 11 GPIO_ACTIVE_HIGH
|
||||
&pioE 14 GPIO_ACTIVE_HIGH
|
||||
>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usb_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
||||
@@ -266,23 +266,26 @@
|
||||
atmel,adc-use-res = "highres";
|
||||
|
||||
trigger0 {
|
||||
trigger-name = "timer-counter-0";
|
||||
trigger-name = "external-rising";
|
||||
trigger-value = <0x1>;
|
||||
trigger-external;
|
||||
};
|
||||
|
||||
trigger1 {
|
||||
trigger-name = "timer-counter-1";
|
||||
trigger-value = <0x3>;
|
||||
trigger-name = "external-falling";
|
||||
trigger-value = <0x2>;
|
||||
trigger-external;
|
||||
};
|
||||
|
||||
trigger2 {
|
||||
trigger-name = "timer-counter-2";
|
||||
trigger-value = <0x5>;
|
||||
trigger-name = "external-any";
|
||||
trigger-value = <0x3>;
|
||||
trigger-external;
|
||||
};
|
||||
|
||||
trigger3 {
|
||||
trigger-name = "external";
|
||||
trigger-value = <0x13>;
|
||||
trigger-external;
|
||||
trigger-name = "continuous";
|
||||
trigger-value = <0x6>;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -271,6 +271,8 @@
|
||||
regulator-name = "vddq_lcd";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
/* Supplies also GPK and GPJ */
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo8_reg: LDO8 {
|
||||
@@ -560,11 +562,11 @@
|
||||
};
|
||||
|
||||
&usbdrd_dwc3_0 {
|
||||
dr_mode = "host";
|
||||
dr_mode = "peripheral";
|
||||
};
|
||||
|
||||
&usbdrd_dwc3_1 {
|
||||
dr_mode = "peripheral";
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
&usbdrd3_0 {
|
||||
|
||||
@@ -563,6 +563,34 @@
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
usb3_1_oc: usb3-1-oc {
|
||||
samsung,pins = "gpk2-4", "gpk2-5";
|
||||
samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
|
||||
samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
|
||||
samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
|
||||
};
|
||||
|
||||
usb3_1_vbusctrl: usb3-1-vbusctrl {
|
||||
samsung,pins = "gpk2-6", "gpk2-7";
|
||||
samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
|
||||
samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
|
||||
samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
|
||||
};
|
||||
|
||||
usb3_0_oc: usb3-0-oc {
|
||||
samsung,pins = "gpk3-0", "gpk3-1";
|
||||
samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
|
||||
samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
|
||||
samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
|
||||
};
|
||||
|
||||
usb3_0_vbusctrl: usb3-0-vbusctrl {
|
||||
samsung,pins = "gpk3-2", "gpk3-3";
|
||||
samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
|
||||
samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
|
||||
samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl_2 {
|
||||
|
||||
@@ -314,6 +314,8 @@
|
||||
&usbdrd3_0 {
|
||||
clocks = <&clock CLK_USBD300>;
|
||||
clock-names = "usbdrd30";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb3_0_oc>, <&usb3_0_vbusctrl>;
|
||||
};
|
||||
|
||||
&usbdrd_phy0 {
|
||||
@@ -325,6 +327,8 @@
|
||||
&usbdrd3_1 {
|
||||
clocks = <&clock CLK_USBD301>;
|
||||
clock-names = "usbdrd30";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb3_1_oc>, <&usb3_1_vbusctrl>;
|
||||
};
|
||||
|
||||
&usbdrd_dwc3_1 {
|
||||
|
||||
@@ -54,18 +54,21 @@
|
||||
emac: gem@30000 {
|
||||
compatible = "cadence,gem";
|
||||
reg = <0x30000 0x10000>;
|
||||
interrupt-parent = <&vic0>;
|
||||
interrupts = <31>;
|
||||
};
|
||||
|
||||
dmac1: dmac@40000 {
|
||||
compatible = "snps,dw-dmac";
|
||||
reg = <0x40000 0x10000>;
|
||||
interrupt-parent = <&vic0>;
|
||||
interrupts = <25>;
|
||||
};
|
||||
|
||||
dmac2: dmac@50000 {
|
||||
compatible = "snps,dw-dmac";
|
||||
reg = <0x50000 0x10000>;
|
||||
interrupt-parent = <&vic0>;
|
||||
interrupts = <26>;
|
||||
};
|
||||
|
||||
@@ -243,6 +246,7 @@
|
||||
axi2pico@c0000000 {
|
||||
compatible = "picochip,axi2pico-pc3x2";
|
||||
reg = <0xc0000000 0x10000>;
|
||||
interrupt-parent = <&vic0>;
|
||||
interrupts = <13 14 15 16 17 18 19 20 21>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -673,12 +673,8 @@ ARM_BE8(rev16 ip, ip)
|
||||
ldrcc r7, [r4], #4 @ use branch for delay slot
|
||||
bcc 1b
|
||||
bx lr
|
||||
#else
|
||||
#ifdef CONFIG_CPU_ENDIAN_BE8
|
||||
moveq r0, #0x00004000 @ set bit 22, mov to mvn instruction
|
||||
#else
|
||||
moveq r0, #0x400000 @ set bit 22, mov to mvn instruction
|
||||
#endif
|
||||
b 2f
|
||||
1: ldr ip, [r7, r3]
|
||||
#ifdef CONFIG_CPU_ENDIAN_BE8
|
||||
@@ -687,7 +683,7 @@ ARM_BE8(rev16 ip, ip)
|
||||
tst ip, #0x000f0000 @ check the rotation field
|
||||
orrne ip, ip, r6, lsl #24 @ mask in offset bits 31-24
|
||||
biceq ip, ip, #0x00004000 @ clear bit 22
|
||||
orreq ip, ip, r0 @ mask in offset bits 7-0
|
||||
orreq ip, ip, r0, ror #8 @ mask in offset bits 7-0
|
||||
#else
|
||||
bic ip, ip, #0x000000ff
|
||||
tst ip, #0xf00 @ check the rotation field
|
||||
|
||||
@@ -224,10 +224,12 @@ static int _omap_device_notifier_call(struct notifier_block *nb,
|
||||
break;
|
||||
case BUS_NOTIFY_BIND_DRIVER:
|
||||
od = to_omap_device(pdev);
|
||||
if (od && (od->_state == OMAP_DEVICE_STATE_ENABLED) &&
|
||||
pm_runtime_status_suspended(dev)) {
|
||||
if (od) {
|
||||
od->_driver_status = BUS_NOTIFY_BIND_DRIVER;
|
||||
pm_runtime_set_active(dev);
|
||||
if (od->_state == OMAP_DEVICE_STATE_ENABLED &&
|
||||
pm_runtime_status_suspended(dev)) {
|
||||
pm_runtime_set_active(dev);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case BUS_NOTIFY_ADD_DEVICE:
|
||||
|
||||
@@ -65,8 +65,10 @@
|
||||
};
|
||||
|
||||
psci {
|
||||
compatible = "arm,psci-0.2";
|
||||
compatible = "arm,psci";
|
||||
method = "smc";
|
||||
cpu_off = <0x84000002>;
|
||||
cpu_on = <0xC4000003>;
|
||||
};
|
||||
|
||||
soc: soc {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
i2c6 = &i2c6;
|
||||
i2c7 = &i2c7;
|
||||
i2c8 = &i2c8;
|
||||
mmc0 = &sdio0;
|
||||
mmc1 = &sdmmc;
|
||||
mmc2 = &sdhci;
|
||||
serial0 = &uart0;
|
||||
serial1 = &uart1;
|
||||
serial2 = &uart2;
|
||||
|
||||
@@ -16,6 +16,7 @@ CONFIG_CGROUP_CPUACCT=y
|
||||
CONFIG_CGROUP_SCHEDTUNE=y
|
||||
CONFIG_MEMCG=y
|
||||
CONFIG_MEMCG_SWAP=y
|
||||
CONFIG_BLK_CGROUP=y
|
||||
CONFIG_RT_GROUP_SCHED=y
|
||||
CONFIG_CGROUP_BPF=y
|
||||
CONFIG_NAMESPACES=y
|
||||
|
||||
@@ -161,6 +161,7 @@ enum vcpu_sysreg {
|
||||
#define c2_TTBR1 (TTBR1_EL1 * 2) /* Translation Table Base Register 1 */
|
||||
#define c2_TTBR1_high (c2_TTBR1 + 1) /* TTBR1 top 32 bits */
|
||||
#define c2_TTBCR (TCR_EL1 * 2) /* Translation Table Base Control R. */
|
||||
#define c2_TTBCR2 (c2_TTBCR + 1) /* Translation Table Base Control R. 2 */
|
||||
#define c3_DACR (DACR32_EL2 * 2)/* Domain Access Control Register */
|
||||
#define c5_DFSR (ESR_EL1 * 2) /* Data Fault Status Register */
|
||||
#define c5_IFSR (IFSR32_EL2 * 2)/* Instruction Fault Status Register */
|
||||
|
||||
@@ -450,6 +450,10 @@ static void reset_pmcr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
|
||||
{
|
||||
u64 pmcr, val;
|
||||
|
||||
/* No PMU available, PMCR_EL0 may UNDEF... */
|
||||
if (!kvm_arm_support_pmu_v3())
|
||||
return;
|
||||
|
||||
pmcr = read_sysreg(pmcr_el0);
|
||||
/*
|
||||
* Writable bits of PMCR_EL0 (ARMV8_PMU_PMCR_MASK) are reset to UNKNOWN
|
||||
@@ -1315,6 +1319,7 @@ static const struct sys_reg_desc cp15_regs[] = {
|
||||
{ Op1( 0), CRn( 2), CRm( 0), Op2( 0), access_vm_reg, NULL, c2_TTBR0 },
|
||||
{ Op1( 0), CRn( 2), CRm( 0), Op2( 1), access_vm_reg, NULL, c2_TTBR1 },
|
||||
{ Op1( 0), CRn( 2), CRm( 0), Op2( 2), access_vm_reg, NULL, c2_TTBCR },
|
||||
{ Op1( 0), CRn( 2), CRm( 0), Op2( 3), access_vm_reg, NULL, c2_TTBCR2 },
|
||||
{ Op1( 0), CRn( 3), CRm( 0), Op2( 0), access_vm_reg, NULL, c3_DACR },
|
||||
{ Op1( 0), CRn( 5), CRm( 0), Op2( 0), access_vm_reg, NULL, c5_DFSR },
|
||||
{ Op1( 0), CRn( 5), CRm( 0), Op2( 1), access_vm_reg, NULL, c5_IFSR },
|
||||
|
||||
@@ -26,6 +26,7 @@ config BCM47XX_BCMA
|
||||
select BCMA
|
||||
select BCMA_HOST_SOC
|
||||
select BCMA_DRIVER_MIPS
|
||||
select BCMA_DRIVER_PCI if PCI
|
||||
select BCMA_DRIVER_PCI_HOSTMODE if PCI
|
||||
select BCMA_DRIVER_GPIO
|
||||
default y
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <linux/libfdt.h>
|
||||
|
||||
#include <asm/addrspace.h>
|
||||
#include <asm/unaligned.h>
|
||||
|
||||
/*
|
||||
* These two variables specify the free mem region
|
||||
@@ -124,7 +125,7 @@ void decompress_kernel(unsigned long boot_heap_start)
|
||||
dtb_size = fdt_totalsize((void *)&__appended_dtb);
|
||||
|
||||
/* last four bytes is always image size in little endian */
|
||||
image_size = le32_to_cpup((void *)&__image_end - 4);
|
||||
image_size = get_unaligned_le32((void *)&__image_end - 4);
|
||||
|
||||
/* copy dtb to where the booted kernel will expect it */
|
||||
memcpy((void *)VMLINUX_LOAD_ADDRESS_ULL + image_size,
|
||||
|
||||
@@ -175,8 +175,14 @@ static int __init relocate_exception_table(long offset)
|
||||
static inline __init unsigned long rotate_xor(unsigned long hash,
|
||||
const void *area, size_t size)
|
||||
{
|
||||
size_t i;
|
||||
unsigned long *ptr = (unsigned long *)area;
|
||||
const typeof(hash) *ptr = PTR_ALIGN(area, sizeof(hash));
|
||||
size_t diff, i;
|
||||
|
||||
diff = (void *)ptr - area;
|
||||
if (unlikely(size < diff + sizeof(hash)))
|
||||
return hash;
|
||||
|
||||
size = ALIGN_DOWN(size - diff, sizeof(hash));
|
||||
|
||||
for (i = 0; i < size / sizeof(hash); i++) {
|
||||
/* Rotate by odd number of bits and XOR. */
|
||||
|
||||
@@ -411,9 +411,9 @@ static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
|
||||
if (pte_val(*ptep) & _PAGE_HASHPTE)
|
||||
flush_hash_entry(mm, ptep, addr);
|
||||
__asm__ __volatile__("\
|
||||
stw%U0%X0 %2,%0\n\
|
||||
stw%X0 %2,%0\n\
|
||||
eieio\n\
|
||||
stw%U0%X0 %L2,%1"
|
||||
stw%X1 %L2,%1"
|
||||
: "=m" (*ptep), "=m" (*((unsigned char *)ptep+4))
|
||||
: "r" (pte) : "memory");
|
||||
|
||||
|
||||
@@ -419,7 +419,6 @@ enum {
|
||||
CPU_FTR_DBELL | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \
|
||||
CPU_FTR_DEBUG_LVL_EXC | CPU_FTR_EMB_HV | CPU_FTR_ALTIVEC_COMP | \
|
||||
CPU_FTR_CELL_TB_BUG | CPU_FTR_SMT)
|
||||
#define CPU_FTRS_GENERIC_32 (CPU_FTR_COMMON | CPU_FTR_NODSISRALIGN)
|
||||
|
||||
/* 64-bit CPUs */
|
||||
#define CPU_FTRS_POWER4 (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \
|
||||
@@ -510,8 +509,6 @@ enum {
|
||||
CPU_FTRS_7447 | CPU_FTRS_7447A | CPU_FTRS_82XX |
|
||||
CPU_FTRS_G2_LE | CPU_FTRS_E300 | CPU_FTRS_E300C2 |
|
||||
CPU_FTRS_CLASSIC32 |
|
||||
#else
|
||||
CPU_FTRS_GENERIC_32 |
|
||||
#endif
|
||||
#ifdef CONFIG_8xx
|
||||
CPU_FTRS_8XX |
|
||||
@@ -562,8 +559,6 @@ enum {
|
||||
CPU_FTRS_7447 & CPU_FTRS_7447A & CPU_FTRS_82XX &
|
||||
CPU_FTRS_G2_LE & CPU_FTRS_E300 & CPU_FTRS_E300C2 &
|
||||
CPU_FTRS_CLASSIC32 &
|
||||
#else
|
||||
CPU_FTRS_GENERIC_32 &
|
||||
#endif
|
||||
#ifdef CONFIG_8xx
|
||||
CPU_FTRS_8XX &
|
||||
|
||||
@@ -155,9 +155,9 @@ static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
|
||||
flush_hash_entry(mm, ptep, addr);
|
||||
#endif
|
||||
__asm__ __volatile__("\
|
||||
stw%U0%X0 %2,%0\n\
|
||||
stw%X0 %2,%0\n\
|
||||
eieio\n\
|
||||
stw%U0%X0 %L2,%1"
|
||||
stw%X1 %L2,%1"
|
||||
: "=m" (*ptep), "=m" (*((unsigned char *)ptep+4))
|
||||
: "r" (pte) : "memory");
|
||||
|
||||
|
||||
@@ -2021,6 +2021,16 @@ static void record_and_restart(struct perf_event *event, unsigned long val,
|
||||
local64_set(&event->hw.period_left, left);
|
||||
perf_event_update_userpage(event);
|
||||
|
||||
/*
|
||||
* Due to hardware limitation, sometimes SIAR could sample a kernel
|
||||
* address even when freeze on supervisor state (kernel) is set in
|
||||
* MMCR2. Check attr.exclude_kernel and address to drop the sample in
|
||||
* these cases.
|
||||
*/
|
||||
if (event->attr.exclude_kernel && record)
|
||||
if (is_kernel_addr(mfspr(SPRN_SIAR)))
|
||||
record = 0;
|
||||
|
||||
/*
|
||||
* Finally record data if requested.
|
||||
*/
|
||||
|
||||
@@ -224,7 +224,6 @@ static struct bus_type suspend_subsys = {
|
||||
|
||||
static const struct platform_suspend_ops pseries_suspend_ops = {
|
||||
.valid = suspend_valid_only_mem,
|
||||
.begin = pseries_suspend_begin,
|
||||
.prepare_late = pseries_prepare_late,
|
||||
.enter = pseries_suspend_enter,
|
||||
};
|
||||
|
||||
@@ -196,7 +196,7 @@ static int mpic_msgr_probe(struct platform_device *dev)
|
||||
|
||||
/* IO map the message register block. */
|
||||
of_address_to_resource(np, 0, &rsrc);
|
||||
msgr_block_addr = ioremap(rsrc.start, resource_size(&rsrc));
|
||||
msgr_block_addr = devm_ioremap(&dev->dev, rsrc.start, resource_size(&rsrc));
|
||||
if (!msgr_block_addr) {
|
||||
dev_err(&dev->dev, "Failed to iomap MPIC message registers");
|
||||
return -EFAULT;
|
||||
|
||||
@@ -182,7 +182,7 @@ void xmon_printf(const char *format, ...)
|
||||
|
||||
if (n && rc == 0) {
|
||||
/* No udbg hooks, fallback to printk() - dangerous */
|
||||
printk("%s", xmon_outbuf);
|
||||
pr_cont("%s", xmon_outbuf);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -62,8 +62,7 @@ config PVR2_DMA
|
||||
|
||||
config G2_DMA
|
||||
tristate "G2 Bus DMA support"
|
||||
depends on SH_DREAMCAST
|
||||
select SH_DMA_API
|
||||
depends on SH_DREAMCAST && SH_DMA_API
|
||||
help
|
||||
This enables support for the DMA controller for the Dreamcast's
|
||||
G2 bus. Drivers that want this will generally enable this on
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
struct xterm_chan {
|
||||
int pid;
|
||||
int helper_pid;
|
||||
int chan_fd;
|
||||
char *title;
|
||||
int device;
|
||||
int raw;
|
||||
@@ -33,6 +34,7 @@ static void *xterm_init(char *str, int device, const struct chan_opts *opts)
|
||||
return NULL;
|
||||
*data = ((struct xterm_chan) { .pid = -1,
|
||||
.helper_pid = -1,
|
||||
.chan_fd = -1,
|
||||
.device = device,
|
||||
.title = opts->xterm_title,
|
||||
.raw = opts->raw } );
|
||||
@@ -149,6 +151,7 @@ static int xterm_open(int input, int output, int primary, void *d,
|
||||
goto out_kill;
|
||||
}
|
||||
|
||||
data->chan_fd = fd;
|
||||
new = xterm_fd(fd, &data->helper_pid);
|
||||
if (new < 0) {
|
||||
err = new;
|
||||
@@ -206,6 +209,8 @@ static void xterm_close(int fd, void *d)
|
||||
os_kill_process(data->helper_pid, 0);
|
||||
data->helper_pid = -1;
|
||||
|
||||
if (data->chan_fd != -1)
|
||||
os_close_file(data->chan_fd);
|
||||
os_close_file(fd);
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,8 @@ KBUILD_CFLAGS += -mno-mmx -mno-sse
|
||||
KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
|
||||
KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
|
||||
KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
|
||||
# Disable relocation relaxation in case the link is not PIE.
|
||||
KBUILD_CFLAGS += $(call as-option,-Wa$(comma)-mrelax-relocations=no)
|
||||
|
||||
KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
|
||||
GCOV_PROFILE := n
|
||||
|
||||
@@ -20,6 +20,7 @@ CONFIG_CGROUP_CPUACCT=y
|
||||
CONFIG_CGROUP_SCHEDTUNE=y
|
||||
CONFIG_MEMCG=y
|
||||
CONFIG_MEMCG_SWAP=y
|
||||
CONFIG_BLK_CGROUP=y
|
||||
CONFIG_CGROUP_SCHED=y
|
||||
CONFIG_RT_GROUP_SCHED=y
|
||||
CONFIG_CGROUP_BPF=y
|
||||
|
||||
@@ -58,7 +58,7 @@ ENDPROC(native_usergs_sysret64)
|
||||
|
||||
.macro TRACE_IRQS_IRETQ
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
bt $9, EFLAGS(%rsp) /* interrupts off? */
|
||||
btl $9, EFLAGS(%rsp) /* interrupts off? */
|
||||
jnc 1f
|
||||
TRACE_IRQS_ON
|
||||
1:
|
||||
|
||||
@@ -166,9 +166,6 @@ static u8 mtrr_type_lookup_variable(u64 start, u64 end, u64 *partial_end,
|
||||
*repeat = 0;
|
||||
*uniform = 1;
|
||||
|
||||
/* Make end inclusive instead of exclusive */
|
||||
end--;
|
||||
|
||||
prev_match = MTRR_TYPE_INVALID;
|
||||
for (i = 0; i < num_var_ranges; ++i) {
|
||||
unsigned short start_state, end_state, inclusive;
|
||||
@@ -260,6 +257,9 @@ u8 mtrr_type_lookup(u64 start, u64 end, u8 *uniform)
|
||||
int repeat;
|
||||
u64 partial_end;
|
||||
|
||||
/* Make end inclusive instead of exclusive */
|
||||
end--;
|
||||
|
||||
if (!mtrr_state_set)
|
||||
return MTRR_TYPE_INVALID;
|
||||
|
||||
|
||||
@@ -1018,6 +1018,11 @@ int kprobe_fault_handler(struct pt_regs *regs, int trapnr)
|
||||
* So clear it by resetting the current kprobe:
|
||||
*/
|
||||
regs->flags &= ~X86_EFLAGS_TF;
|
||||
/*
|
||||
* Since the single step (trap) has been cancelled,
|
||||
* we need to restore BTF here.
|
||||
*/
|
||||
restore_btf();
|
||||
|
||||
/*
|
||||
* If the TF flag was set before the kprobe hit,
|
||||
|
||||
@@ -697,6 +697,8 @@ int pud_free_pmd_page(pud_t *pud, unsigned long addr)
|
||||
}
|
||||
|
||||
free_page((unsigned long)pmd_sv);
|
||||
|
||||
pgtable_pmd_page_dtor(virt_to_page(pmd));
|
||||
free_page((unsigned long)pmd);
|
||||
|
||||
return 1;
|
||||
|
||||
@@ -159,14 +159,17 @@ struct hd_struct *disk_part_iter_next(struct disk_part_iter *piter)
|
||||
part = rcu_dereference(ptbl->part[piter->idx]);
|
||||
if (!part)
|
||||
continue;
|
||||
get_device(part_to_dev(part));
|
||||
piter->part = part;
|
||||
if (!part_nr_sects_read(part) &&
|
||||
!(piter->flags & DISK_PITER_INCL_EMPTY) &&
|
||||
!(piter->flags & DISK_PITER_INCL_EMPTY_PART0 &&
|
||||
piter->idx == 0))
|
||||
piter->idx == 0)) {
|
||||
put_device(part_to_dev(part));
|
||||
piter->part = NULL;
|
||||
continue;
|
||||
}
|
||||
|
||||
get_device(part_to_dev(part));
|
||||
piter->part = part;
|
||||
piter->idx += inc;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -320,6 +320,9 @@ static bool matching_id(const char *idstr, const char *list_id)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (strlen(idstr) != strlen(list_id))
|
||||
return false;
|
||||
|
||||
if (memcmp(idstr, list_id, 3))
|
||||
return false;
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ void acpi_scan_table_handler(u32 event, void *table, void *context);
|
||||
extern struct list_head acpi_bus_id_list;
|
||||
|
||||
struct acpi_device_bus_id {
|
||||
char bus_id[15];
|
||||
const char *bus_id;
|
||||
unsigned int instance_no;
|
||||
struct list_head node;
|
||||
};
|
||||
|
||||
@@ -532,7 +532,7 @@ static acpi_status acpi_dev_process_resource(struct acpi_resource *ares,
|
||||
ret = c->preproc(ares, c->preproc_data);
|
||||
if (ret < 0) {
|
||||
c->error = ret;
|
||||
return AE_CTRL_TERMINATE;
|
||||
return AE_ABORT_METHOD;
|
||||
} else if (ret > 0) {
|
||||
return AE_OK;
|
||||
}
|
||||
|
||||
@@ -485,6 +485,7 @@ static void acpi_device_del(struct acpi_device *device)
|
||||
acpi_device_bus_id->instance_no--;
|
||||
else {
|
||||
list_del(&acpi_device_bus_id->node);
|
||||
kfree_const(acpi_device_bus_id->bus_id);
|
||||
kfree(acpi_device_bus_id);
|
||||
}
|
||||
break;
|
||||
@@ -584,6 +585,8 @@ static int acpi_get_device_data(acpi_handle handle, struct acpi_device **device,
|
||||
if (!device)
|
||||
return -EINVAL;
|
||||
|
||||
*device = NULL;
|
||||
|
||||
status = acpi_get_data_full(handle, acpi_scan_drop_device,
|
||||
(void **)device, callback);
|
||||
if (ACPI_FAILURE(status) || !*device) {
|
||||
@@ -673,7 +676,14 @@ int acpi_device_add(struct acpi_device *device,
|
||||
}
|
||||
if (!found) {
|
||||
acpi_device_bus_id = new_bus_id;
|
||||
strcpy(acpi_device_bus_id->bus_id, acpi_device_hid(device));
|
||||
acpi_device_bus_id->bus_id =
|
||||
kstrdup_const(acpi_device_hid(device), GFP_KERNEL);
|
||||
if (!acpi_device_bus_id->bus_id) {
|
||||
pr_err(PREFIX "Memory allocation error for bus id\n");
|
||||
result = -ENOMEM;
|
||||
goto err_free_new_bus_id;
|
||||
}
|
||||
|
||||
acpi_device_bus_id->instance_no = 0;
|
||||
list_add_tail(&acpi_device_bus_id->node, &acpi_bus_id_list);
|
||||
}
|
||||
@@ -708,6 +718,11 @@ int acpi_device_add(struct acpi_device *device,
|
||||
if (device->parent)
|
||||
list_del(&device->node);
|
||||
list_del(&device->wakeup_list);
|
||||
|
||||
err_free_new_bus_id:
|
||||
if (!found)
|
||||
kfree(new_bus_id);
|
||||
|
||||
mutex_unlock(&acpi_device_lock);
|
||||
|
||||
err_detach:
|
||||
|
||||
@@ -3615,7 +3615,7 @@ static int idt77252_init_one(struct pci_dev *pcidev,
|
||||
|
||||
if ((err = dma_set_mask_and_coherent(&pcidev->dev, DMA_BIT_MASK(32)))) {
|
||||
printk("idt77252: can't enable DMA for PCI device at %s\n", pci_name(pcidev));
|
||||
return err;
|
||||
goto err_out_disable_pdev;
|
||||
}
|
||||
|
||||
card = kzalloc(sizeof(struct idt77252_dev), GFP_KERNEL);
|
||||
|
||||
@@ -2369,7 +2369,7 @@ void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode)
|
||||
if (fwnode_is_primary(fn)) {
|
||||
dev->fwnode = fn->secondary;
|
||||
if (!(parent && fn == parent->fwnode))
|
||||
fn->secondary = ERR_PTR(-ENODEV);
|
||||
fn->secondary = NULL;
|
||||
} else {
|
||||
dev->fwnode = NULL;
|
||||
}
|
||||
|
||||
@@ -530,6 +530,7 @@ config BLK_DEV_RBD
|
||||
config BLK_DEV_RSXX
|
||||
tristate "IBM Flash Adapter 900GB Full Height PCIe Device Driver"
|
||||
depends on PCI
|
||||
select CRC32
|
||||
help
|
||||
Device driver for IBM's high speed PCIe SSD
|
||||
storage device: Flash Adapter 900GB Full Height.
|
||||
|
||||
@@ -1070,7 +1070,7 @@ static int bm_rw(struct drbd_device *device, const unsigned int flags, unsigned
|
||||
.done = 0,
|
||||
.flags = flags,
|
||||
.error = 0,
|
||||
.kref = { ATOMIC_INIT(2) },
|
||||
.kref = KREF_INIT(2),
|
||||
};
|
||||
|
||||
if (!get_ldev_if_state(device, D_ATTACHING)) { /* put is in drbd_bm_aio_ctx_destroy() */
|
||||
|
||||
@@ -262,6 +262,7 @@ static int xen_blkif_disconnect(struct xen_blkif *blkif)
|
||||
|
||||
if (ring->xenblkd) {
|
||||
kthread_stop(ring->xenblkd);
|
||||
ring->xenblkd = NULL;
|
||||
wake_up(&ring->shutdown_wq);
|
||||
}
|
||||
|
||||
@@ -645,7 +646,8 @@ static int xen_blkbk_probe(struct xenbus_device *dev,
|
||||
/* setup back pointer */
|
||||
be->blkif->be = be;
|
||||
|
||||
err = xenbus_watch_pathfmt(dev, &be->backend_watch, backend_changed,
|
||||
err = xenbus_watch_pathfmt(dev, &be->backend_watch, NULL,
|
||||
backend_changed,
|
||||
"%s/%s", dev->nodename, "physical-device");
|
||||
if (err)
|
||||
goto fail;
|
||||
|
||||
@@ -544,10 +544,8 @@ static void mips_cdmm_bus_discover(struct mips_cdmm_bus *bus)
|
||||
dev_set_name(&dev->dev, "cdmm%u-%u", cpu, id);
|
||||
++id;
|
||||
ret = device_register(&dev->dev);
|
||||
if (ret) {
|
||||
if (ret)
|
||||
put_device(&dev->dev);
|
||||
kfree(dev);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -211,6 +211,7 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
|
||||
return ret;
|
||||
|
||||
err_reg:
|
||||
of_node_put(s2mps11_clks[0].clk_np);
|
||||
while (--i >= 0)
|
||||
clkdev_drop(s2mps11_clks[i].lookup);
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
#define NB_GPIO1_LATCH 0xC
|
||||
#define XTAL_MODE BIT(31)
|
||||
#define NB_GPIO1_LATCH 0x8
|
||||
#define XTAL_MODE BIT(9)
|
||||
|
||||
static int armada_3700_xtal_clock_probe(struct platform_device *pdev)
|
||||
{
|
||||
|
||||
@@ -233,6 +233,7 @@ enum clk_id {
|
||||
tegra_clk_sdmmc4_8,
|
||||
tegra_clk_sdmmc4_9,
|
||||
tegra_clk_se,
|
||||
tegra_clk_se_10,
|
||||
tegra_clk_soc_therm,
|
||||
tegra_clk_soc_therm_8,
|
||||
tegra_clk_sor0,
|
||||
|
||||
@@ -648,7 +648,7 @@ static struct tegra_periph_init_data periph_clks[] = {
|
||||
INT8("host1x", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_HOST1X, 28, 0, tegra_clk_host1x_8),
|
||||
INT8("host1x", mux_pllc4_out1_pllc_pllc4_out2_pllp_clkm_plla_pllc4_out0, CLK_SOURCE_HOST1X, 28, 0, tegra_clk_host1x_9),
|
||||
INT8("se", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SE, 127, TEGRA_PERIPH_ON_APB, tegra_clk_se),
|
||||
INT8("se", mux_pllp_pllc2_c_c3_clkm, CLK_SOURCE_SE, 127, TEGRA_PERIPH_ON_APB, tegra_clk_se),
|
||||
INT8("se", mux_pllp_pllc2_c_c3_clkm, CLK_SOURCE_SE, 127, TEGRA_PERIPH_ON_APB, tegra_clk_se_10),
|
||||
INT8("2d", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_2D, 21, 0, tegra_clk_gr2d_8),
|
||||
INT8("3d", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_3D, 24, 0, tegra_clk_gr3d_8),
|
||||
INT8("vic03", mux_pllm_pllc_pllp_plla_pllc2_c3_clkm, CLK_SOURCE_VIC03, 178, 0, tegra_clk_vic03),
|
||||
|
||||
@@ -497,6 +497,7 @@ static struct clk * __init ti_fapll_synth_setup(struct fapll_data *fd,
|
||||
{
|
||||
struct clk_init_data *init;
|
||||
struct fapll_synth *synth;
|
||||
struct clk *clk = ERR_PTR(-ENOMEM);
|
||||
|
||||
init = kzalloc(sizeof(*init), GFP_KERNEL);
|
||||
if (!init)
|
||||
@@ -519,13 +520,19 @@ static struct clk * __init ti_fapll_synth_setup(struct fapll_data *fd,
|
||||
synth->hw.init = init;
|
||||
synth->clk_pll = pll_clk;
|
||||
|
||||
return clk_register(NULL, &synth->hw);
|
||||
clk = clk_register(NULL, &synth->hw);
|
||||
if (IS_ERR(clk)) {
|
||||
pr_err("failed to register clock\n");
|
||||
goto free;
|
||||
}
|
||||
|
||||
return clk;
|
||||
|
||||
free:
|
||||
kfree(synth);
|
||||
kfree(init);
|
||||
|
||||
return ERR_PTR(-ENOMEM);
|
||||
return clk;
|
||||
}
|
||||
|
||||
static void __init ti_fapll_setup(struct device_node *node)
|
||||
|
||||
@@ -428,15 +428,24 @@ static void arch_timer_evtstrm_enable(int divider)
|
||||
|
||||
static void arch_timer_configure_evtstream(void)
|
||||
{
|
||||
int evt_stream_div, pos;
|
||||
int evt_stream_div, lsb;
|
||||
|
||||
/*
|
||||
* As the event stream can at most be generated at half the frequency
|
||||
* of the counter, use half the frequency when computing the divider.
|
||||
*/
|
||||
evt_stream_div = arch_timer_rate / ARCH_TIMER_EVT_STREAM_FREQ / 2;
|
||||
|
||||
/*
|
||||
* Find the closest power of two to the divisor. If the adjacent bit
|
||||
* of lsb (last set bit, starts from 0) is set, then we use (lsb + 1).
|
||||
*/
|
||||
lsb = fls(evt_stream_div) - 1;
|
||||
if (lsb > 0 && (evt_stream_div & BIT(lsb - 1)))
|
||||
lsb++;
|
||||
|
||||
/* Find the closest power of two to the divisor */
|
||||
evt_stream_div = arch_timer_rate / ARCH_TIMER_EVT_STREAM_FREQ;
|
||||
pos = fls(evt_stream_div);
|
||||
if (pos > 1 && !(evt_stream_div & (1 << (pos - 2))))
|
||||
pos--;
|
||||
/* enable event stream */
|
||||
arch_timer_evtstrm_enable(min(pos, 15));
|
||||
arch_timer_evtstrm_enable(max(0, min(lsb, 15)));
|
||||
}
|
||||
|
||||
static void arch_counter_set_user_access(void)
|
||||
|
||||
@@ -418,10 +418,8 @@ static int __init ttc_setup_clockevent(struct clk *clk,
|
||||
ttcce->ttc.clk = clk;
|
||||
|
||||
err = clk_prepare_enable(ttcce->ttc.clk);
|
||||
if (err) {
|
||||
kfree(ttcce);
|
||||
return err;
|
||||
}
|
||||
if (err)
|
||||
goto out_kfree;
|
||||
|
||||
ttcce->ttc.clk_rate_change_nb.notifier_call =
|
||||
ttc_rate_change_clockevent_cb;
|
||||
@@ -431,7 +429,7 @@ static int __init ttc_setup_clockevent(struct clk *clk,
|
||||
&ttcce->ttc.clk_rate_change_nb);
|
||||
if (err) {
|
||||
pr_warn("Unable to register clock notifier.\n");
|
||||
return err;
|
||||
goto out_kfree;
|
||||
}
|
||||
|
||||
ttcce->ttc.freq = clk_get_rate(ttcce->ttc.clk);
|
||||
@@ -460,15 +458,17 @@ static int __init ttc_setup_clockevent(struct clk *clk,
|
||||
|
||||
err = request_irq(irq, ttc_clock_event_interrupt,
|
||||
IRQF_TIMER, ttcce->ce.name, ttcce);
|
||||
if (err) {
|
||||
kfree(ttcce);
|
||||
return err;
|
||||
}
|
||||
if (err)
|
||||
goto out_kfree;
|
||||
|
||||
clockevents_config_and_register(&ttcce->ce,
|
||||
ttcce->ttc.freq / PRESCALE, 1, 0xfffe);
|
||||
|
||||
return 0;
|
||||
|
||||
out_kfree:
|
||||
kfree(ttcce);
|
||||
return err;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -104,6 +104,13 @@ out_put_node:
|
||||
}
|
||||
module_init(hb_cpufreq_driver_init);
|
||||
|
||||
static const struct of_device_id __maybe_unused hb_cpufreq_of_match[] = {
|
||||
{ .compatible = "calxeda,highbank" },
|
||||
{ .compatible = "calxeda,ecx-2000" },
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, hb_cpufreq_of_match);
|
||||
|
||||
MODULE_AUTHOR("Mark Langsdorf <mark.langsdorf@calxeda.com>");
|
||||
MODULE_DESCRIPTION("Calxeda Highbank cpufreq driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
@@ -217,6 +217,7 @@ static struct platform_driver ls1x_cpufreq_platdrv = {
|
||||
|
||||
module_platform_driver(ls1x_cpufreq_platdrv);
|
||||
|
||||
MODULE_ALIAS("platform:ls1x-cpufreq");
|
||||
MODULE_AUTHOR("Kelvin Cheung <keguang.zhang@gmail.com>");
|
||||
MODULE_DESCRIPTION("Loongson1 CPUFreq driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
@@ -887,9 +887,9 @@ static int get_transition_latency(struct powernow_k8_data *data)
|
||||
|
||||
/* Take a frequency, and issue the fid/vid transition command */
|
||||
static int transition_frequency_fidvid(struct powernow_k8_data *data,
|
||||
unsigned int index)
|
||||
unsigned int index,
|
||||
struct cpufreq_policy *policy)
|
||||
{
|
||||
struct cpufreq_policy *policy;
|
||||
u32 fid = 0;
|
||||
u32 vid = 0;
|
||||
int res;
|
||||
@@ -921,9 +921,6 @@ static int transition_frequency_fidvid(struct powernow_k8_data *data,
|
||||
freqs.old = find_khz_freq_from_fid(data->currfid);
|
||||
freqs.new = find_khz_freq_from_fid(fid);
|
||||
|
||||
policy = cpufreq_cpu_get(smp_processor_id());
|
||||
cpufreq_cpu_put(policy);
|
||||
|
||||
cpufreq_freq_transition_begin(policy, &freqs);
|
||||
res = transition_fid_vid(data, fid, vid);
|
||||
cpufreq_freq_transition_end(policy, &freqs, res);
|
||||
@@ -978,7 +975,7 @@ static long powernowk8_target_fn(void *arg)
|
||||
|
||||
powernow_k8_acpi_pst_values(data, newstate);
|
||||
|
||||
ret = transition_frequency_fidvid(data, newstate);
|
||||
ret = transition_frequency_fidvid(data, newstate, pol);
|
||||
|
||||
if (ret) {
|
||||
pr_err("transition frequency failed\n");
|
||||
|
||||
@@ -111,6 +111,7 @@ static struct platform_driver scpi_cpufreq_platdrv = {
|
||||
};
|
||||
module_platform_driver(scpi_cpufreq_platdrv);
|
||||
|
||||
MODULE_ALIAS("platform:scpi-cpufreq");
|
||||
MODULE_AUTHOR("Sudeep Holla <sudeep.holla@arm.com>");
|
||||
MODULE_DESCRIPTION("ARM SCPI CPUFreq interface driver");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
|
||||
@@ -294,6 +294,13 @@ register_cpufreq_dt:
|
||||
}
|
||||
module_init(sti_cpufreq_init);
|
||||
|
||||
static const struct of_device_id __maybe_unused sti_cpufreq_of_match[] = {
|
||||
{ .compatible = "st,stih407" },
|
||||
{ .compatible = "st,stih410" },
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, sti_cpufreq_of_match);
|
||||
|
||||
MODULE_DESCRIPTION("STMicroelectronics CPUFreq/OPP driver");
|
||||
MODULE_AUTHOR("Ajitpal Singh <ajitpal.singh@st.com>");
|
||||
MODULE_AUTHOR("Lee Jones <lee.jones@linaro.org>");
|
||||
|
||||
@@ -1172,7 +1172,7 @@ static int omap_aes_probe(struct platform_device *pdev)
|
||||
if (err < 0) {
|
||||
dev_err(dev, "%s: failed to get_sync(%d)\n",
|
||||
__func__, err);
|
||||
goto err_res;
|
||||
goto err_pm_disable;
|
||||
}
|
||||
|
||||
omap_aes_dma_stop(dd);
|
||||
@@ -1257,6 +1257,7 @@ err_engine:
|
||||
omap_aes_dma_cleanup(dd);
|
||||
err_irq:
|
||||
tasklet_kill(&dd->done_task);
|
||||
err_pm_disable:
|
||||
pm_runtime_disable(dev);
|
||||
err_res:
|
||||
dd = NULL;
|
||||
|
||||
@@ -447,7 +447,7 @@ DEF_TALITOS2_DONE(ch1_3, TALITOS2_ISR_CH_1_3_DONE)
|
||||
/*
|
||||
* locate current (offending) descriptor
|
||||
*/
|
||||
static u32 current_desc_hdr(struct device *dev, int ch)
|
||||
static __be32 current_desc_hdr(struct device *dev, int ch)
|
||||
{
|
||||
struct talitos_private *priv = dev_get_drvdata(dev);
|
||||
int tail, iter;
|
||||
@@ -478,13 +478,13 @@ static u32 current_desc_hdr(struct device *dev, int ch)
|
||||
/*
|
||||
* user diagnostics; report root cause of error based on execution unit status
|
||||
*/
|
||||
static void report_eu_error(struct device *dev, int ch, u32 desc_hdr)
|
||||
static void report_eu_error(struct device *dev, int ch, __be32 desc_hdr)
|
||||
{
|
||||
struct talitos_private *priv = dev_get_drvdata(dev);
|
||||
int i;
|
||||
|
||||
if (!desc_hdr)
|
||||
desc_hdr = in_be32(priv->chan[ch].reg + TALITOS_DESCBUF);
|
||||
desc_hdr = cpu_to_be32(in_be32(priv->chan[ch].reg + TALITOS_DESCBUF));
|
||||
|
||||
switch (desc_hdr & DESC_HDR_SEL0_MASK) {
|
||||
case DESC_HDR_SEL0_AFEU:
|
||||
|
||||
@@ -2357,7 +2357,7 @@ static int xilinx_dma_chan_probe(struct xilinx_dma_device *xdev,
|
||||
has_dre = false;
|
||||
|
||||
if (!has_dre)
|
||||
xdev->common.copy_align = fls(width - 1);
|
||||
xdev->common.copy_align = (enum dmaengine_alignment)fls(width - 1);
|
||||
|
||||
if (of_device_is_compatible(node, "xlnx,axi-vdma-mm2s-channel") ||
|
||||
of_device_is_compatible(node, "xlnx,axi-dma-mm2s-channel") ||
|
||||
@@ -2630,7 +2630,11 @@ static int xilinx_dma_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
/* Register the DMA engine with the core */
|
||||
dma_async_device_register(&xdev->common);
|
||||
err = dma_async_device_register(&xdev->common);
|
||||
if (err) {
|
||||
dev_err(xdev->dev, "failed to register the dma device\n");
|
||||
goto error;
|
||||
}
|
||||
|
||||
err = of_dma_controller_register(node, of_dma_xilinx_xlate,
|
||||
xdev);
|
||||
|
||||
@@ -1272,4 +1272,4 @@ module_platform_driver(max77693_muic_driver);
|
||||
MODULE_DESCRIPTION("Maxim MAX77693 Extcon driver");
|
||||
MODULE_AUTHOR("Chanwoo Choi <cw00.choi@samsung.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_ALIAS("platform:extcon-max77693");
|
||||
MODULE_ALIAS("platform:max77693-muic");
|
||||
|
||||
@@ -59,7 +59,7 @@ static struct drm_dp_aux_dev *drm_dp_aux_dev_get_by_minor(unsigned index)
|
||||
|
||||
mutex_lock(&aux_idr_mutex);
|
||||
aux_dev = idr_find(&aux_idr, index);
|
||||
if (!kref_get_unless_zero(&aux_dev->refcount))
|
||||
if (aux_dev && !kref_get_unless_zero(&aux_dev->refcount))
|
||||
aux_dev = NULL;
|
||||
mutex_unlock(&aux_idr_mutex);
|
||||
|
||||
|
||||
@@ -2126,7 +2126,7 @@ cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_dev
|
||||
DRM_INFO("failed to retrieve link info, disabling eDP\n");
|
||||
cdv_intel_dp_encoder_destroy(encoder);
|
||||
cdv_intel_dp_destroy(connector);
|
||||
goto err_priv;
|
||||
goto err_connector;
|
||||
} else {
|
||||
DRM_DEBUG_KMS("DPCD: Rev=%x LN_Rate=%x LN_CNT=%x LN_DOWNSP=%x\n",
|
||||
intel_dp->dpcd[0], intel_dp->dpcd[1],
|
||||
|
||||
@@ -882,7 +882,7 @@ eb_vma_misplaced(struct i915_vma *vma)
|
||||
return !only_mappable_for_reloc(entry->flags);
|
||||
|
||||
if ((entry->flags & EXEC_OBJECT_SUPPORTS_48B_ADDRESS) == 0 &&
|
||||
(vma->node.start + vma->node.size - 1) >> 32)
|
||||
(vma->node.start + vma->node.size + 4095) >> 32)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
||||
@@ -75,7 +75,7 @@ shadow_image(struct nvkm_bios *bios, int idx, u32 offset, struct shadow *mthd)
|
||||
nvkm_debug(subdev, "%08x: type %02x, %d bytes\n",
|
||||
image.base, image.type, image.size);
|
||||
|
||||
if (!shadow_fetch(bios, mthd, image.size)) {
|
||||
if (!shadow_fetch(bios, mthd, image.base + image.size)) {
|
||||
nvkm_debug(subdev, "%08x: fetch failed\n", image.base);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ static void
|
||||
gm200_i2c_aux_fini(struct gm200_i2c_aux *aux)
|
||||
{
|
||||
struct nvkm_device *device = aux->base.pad->i2c->subdev.device;
|
||||
nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00310000, 0x00000000);
|
||||
nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00710000, 0x00000000);
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -54,10 +54,10 @@ gm200_i2c_aux_init(struct gm200_i2c_aux *aux)
|
||||
AUX_ERR(&aux->base, "begin idle timeout %08x", ctrl);
|
||||
return -EBUSY;
|
||||
}
|
||||
} while (ctrl & 0x03010000);
|
||||
} while (ctrl & 0x07010000);
|
||||
|
||||
/* set some magic, and wait up to 1ms for it to appear */
|
||||
nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00300000, ureq);
|
||||
nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00700000, ureq);
|
||||
timeout = 1000;
|
||||
do {
|
||||
ctrl = nvkm_rd32(device, 0x00d954 + (aux->ch * 0x50));
|
||||
@@ -67,7 +67,7 @@ gm200_i2c_aux_init(struct gm200_i2c_aux *aux)
|
||||
gm200_i2c_aux_fini(aux);
|
||||
return -EBUSY;
|
||||
}
|
||||
} while ((ctrl & 0x03000000) != urep);
|
||||
} while ((ctrl & 0x07000000) != urep);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -747,6 +747,7 @@ static int omap_dmm_probe(struct platform_device *dev)
|
||||
&omap_dmm->refill_pa, GFP_KERNEL);
|
||||
if (!omap_dmm->refill_va) {
|
||||
dev_err(&dev->dev, "could not allocate refill memory\n");
|
||||
ret = -ENOMEM;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
||||
@@ -2375,17 +2375,23 @@ static int tegra_sor_init(struct host1x_client *client)
|
||||
if (err < 0) {
|
||||
dev_err(sor->dev, "failed to deassert SOR reset: %d\n",
|
||||
err);
|
||||
clk_disable_unprepare(sor->clk);
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
err = clk_prepare_enable(sor->clk_safe);
|
||||
if (err < 0)
|
||||
if (err < 0) {
|
||||
clk_disable_unprepare(sor->clk);
|
||||
return err;
|
||||
}
|
||||
|
||||
err = clk_prepare_enable(sor->clk_dp);
|
||||
if (err < 0)
|
||||
if (err < 0) {
|
||||
clk_disable_unprepare(sor->clk_safe);
|
||||
clk_disable_unprepare(sor->clk);
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -397,6 +397,14 @@ static const struct dmi_system_id i2c_hid_dmi_desc_override_table[] = {
|
||||
},
|
||||
.driver_data = (void *)&sipodev_desc
|
||||
},
|
||||
{
|
||||
.ident = "Vero K147",
|
||||
.matches = {
|
||||
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "VERO"),
|
||||
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "K147"),
|
||||
},
|
||||
.driver_data = (void *)&sipodev_desc
|
||||
},
|
||||
{ } /* Terminate list */
|
||||
};
|
||||
|
||||
|
||||
@@ -391,7 +391,7 @@ static int ssi_add_controller(struct hsi_controller *ssi,
|
||||
|
||||
err = ida_simple_get(&platform_omap_ssi_ida, 0, 0, GFP_KERNEL);
|
||||
if (err < 0)
|
||||
goto out_err;
|
||||
return err;
|
||||
ssi->id = err;
|
||||
|
||||
ssi->owner = THIS_MODULE;
|
||||
|
||||
@@ -72,7 +72,7 @@ static void stm_heartbeat_unlink(struct stm_source_data *data)
|
||||
|
||||
static int stm_heartbeat_init(void)
|
||||
{
|
||||
int i, ret = -ENOMEM;
|
||||
int i, ret;
|
||||
|
||||
if (nr_devs < 0 || nr_devs > STM_HEARTBEAT_MAX)
|
||||
return -EINVAL;
|
||||
@@ -80,8 +80,10 @@ static int stm_heartbeat_init(void)
|
||||
for (i = 0; i < nr_devs; i++) {
|
||||
stm_heartbeat[i].data.name =
|
||||
kasprintf(GFP_KERNEL, "heartbeat.%d", i);
|
||||
if (!stm_heartbeat[i].data.name)
|
||||
if (!stm_heartbeat[i].data.name) {
|
||||
ret = -ENOMEM;
|
||||
goto fail_unregister;
|
||||
}
|
||||
|
||||
stm_heartbeat[i].data.nr_chans = 1;
|
||||
stm_heartbeat[i].data.link = stm_heartbeat_link;
|
||||
|
||||
@@ -383,7 +383,7 @@ static int octeon_i2c_read(struct octeon_i2c *i2c, int target,
|
||||
|
||||
data[i] = octeon_i2c_data_read(i2c);
|
||||
if (recv_len && i == 0) {
|
||||
if (data[i] > I2C_SMBUS_BLOCK_MAX + 1)
|
||||
if (data[i] > I2C_SMBUS_BLOCK_MAX)
|
||||
return -EPROTO;
|
||||
length += data[i];
|
||||
}
|
||||
|
||||
@@ -378,7 +378,7 @@ static int rockchip_saradc_resume(struct device *dev)
|
||||
|
||||
ret = clk_prepare_enable(info->clk);
|
||||
if (ret)
|
||||
return ret;
|
||||
clk_disable_unprepare(info->pclk);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -189,9 +189,9 @@ static ssize_t ad5504_write_dac_powerdown(struct iio_dev *indio_dev,
|
||||
return ret;
|
||||
|
||||
if (pwr_down)
|
||||
st->pwr_down_mask |= (1 << chan->channel);
|
||||
else
|
||||
st->pwr_down_mask &= ~(1 << chan->channel);
|
||||
else
|
||||
st->pwr_down_mask |= (1 << chan->channel);
|
||||
|
||||
ret = ad5504_spi_write(st, AD5504_ADDR_CTRL,
|
||||
AD5504_DAC_PWRDWN_MODE(st->pwr_down_mode) |
|
||||
|
||||
@@ -110,6 +110,13 @@ enum bmi160_sensor_type {
|
||||
|
||||
struct bmi160_data {
|
||||
struct regmap *regmap;
|
||||
/*
|
||||
* Ensure natural alignment for timestamp if present.
|
||||
* Max length needed: 2 * 3 channels + 4 bytes padding + 8 byte ts.
|
||||
* If fewer channels are enabled, less space may be needed, as
|
||||
* long as the timestamp is still aligned to 8 bytes.
|
||||
*/
|
||||
__le16 buf[12] __aligned(8);
|
||||
};
|
||||
|
||||
const struct regmap_config bmi160_regmap_config = {
|
||||
@@ -385,7 +392,6 @@ static irqreturn_t bmi160_trigger_handler(int irq, void *p)
|
||||
struct iio_poll_func *pf = p;
|
||||
struct iio_dev *indio_dev = pf->indio_dev;
|
||||
struct bmi160_data *data = iio_priv(indio_dev);
|
||||
s16 buf[16]; /* 3 sens x 3 axis x s16 + 3 x s16 pad + 4 x s16 tstamp */
|
||||
int i, ret, j = 0, base = BMI160_REG_DATA_MAGN_XOUT_L;
|
||||
__le16 sample;
|
||||
|
||||
@@ -395,10 +401,10 @@ static irqreturn_t bmi160_trigger_handler(int irq, void *p)
|
||||
&sample, sizeof(__le16));
|
||||
if (ret < 0)
|
||||
goto done;
|
||||
buf[j++] = sample;
|
||||
data->buf[j++] = sample;
|
||||
}
|
||||
|
||||
iio_push_to_buffers_with_timestamp(indio_dev, buf,
|
||||
iio_push_to_buffers_with_timestamp(indio_dev, data->buf,
|
||||
iio_get_time_ns(indio_dev));
|
||||
done:
|
||||
iio_trigger_notify_done(indio_dev->trig);
|
||||
|
||||
@@ -1335,12 +1335,12 @@ static int iio_buffer_update_demux(struct iio_dev *indio_dev,
|
||||
indio_dev->masklength,
|
||||
in_ind + 1);
|
||||
while (in_ind != out_ind) {
|
||||
in_ind = find_next_bit(indio_dev->active_scan_mask,
|
||||
indio_dev->masklength,
|
||||
in_ind + 1);
|
||||
length = iio_storage_bytes_for_si(indio_dev, in_ind);
|
||||
/* Make sure we are aligned */
|
||||
in_loc = roundup(in_loc, length) + length;
|
||||
in_ind = find_next_bit(indio_dev->active_scan_mask,
|
||||
indio_dev->masklength,
|
||||
in_ind + 1);
|
||||
}
|
||||
length = iio_storage_bytes_for_si(indio_dev, in_ind);
|
||||
out_loc = roundup(out_loc, length);
|
||||
|
||||
@@ -52,6 +52,12 @@ struct mag3110_data {
|
||||
struct i2c_client *client;
|
||||
struct mutex lock;
|
||||
u8 ctrl_reg1;
|
||||
/* Ensure natural alignment of timestamp */
|
||||
struct {
|
||||
__be16 channels[3];
|
||||
u8 temperature;
|
||||
s64 ts __aligned(8);
|
||||
} scan;
|
||||
};
|
||||
|
||||
static int mag3110_request(struct mag3110_data *data)
|
||||
@@ -262,10 +268,9 @@ static irqreturn_t mag3110_trigger_handler(int irq, void *p)
|
||||
struct iio_poll_func *pf = p;
|
||||
struct iio_dev *indio_dev = pf->indio_dev;
|
||||
struct mag3110_data *data = iio_priv(indio_dev);
|
||||
u8 buffer[16]; /* 3 16-bit channels + 1 byte temp + padding + ts */
|
||||
int ret;
|
||||
|
||||
ret = mag3110_read(data, (__be16 *) buffer);
|
||||
ret = mag3110_read(data, data->scan.channels);
|
||||
if (ret < 0)
|
||||
goto done;
|
||||
|
||||
@@ -274,10 +279,10 @@ static irqreturn_t mag3110_trigger_handler(int irq, void *p)
|
||||
MAG3110_DIE_TEMP);
|
||||
if (ret < 0)
|
||||
goto done;
|
||||
buffer[6] = ret;
|
||||
data->scan.temperature = ret;
|
||||
}
|
||||
|
||||
iio_push_to_buffers_with_timestamp(indio_dev, buffer,
|
||||
iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
|
||||
iio_get_time_ns(indio_dev));
|
||||
|
||||
done:
|
||||
|
||||
@@ -139,7 +139,14 @@ static irqreturn_t mpl3115_trigger_handler(int irq, void *p)
|
||||
struct iio_poll_func *pf = p;
|
||||
struct iio_dev *indio_dev = pf->indio_dev;
|
||||
struct mpl3115_data *data = iio_priv(indio_dev);
|
||||
u8 buffer[16]; /* 32-bit channel + 16-bit channel + padding + ts */
|
||||
/*
|
||||
* 32-bit channel + 16-bit channel + padding + ts
|
||||
* Note that it is possible for only one of the first 2
|
||||
* channels to be enabled. If that happens, the first element
|
||||
* of the buffer may be either 16 or 32-bits. As such we cannot
|
||||
* use a simple structure definition to express this data layout.
|
||||
*/
|
||||
u8 buffer[16] __aligned(8);
|
||||
int ret, pos = 0;
|
||||
|
||||
mutex_lock(&data->lock);
|
||||
|
||||
@@ -1252,6 +1252,7 @@ int ib_send_cm_req(struct ib_cm_id *cm_id,
|
||||
id.local_id);
|
||||
if (IS_ERR(cm_id_priv->timewait_info)) {
|
||||
ret = PTR_ERR(cm_id_priv->timewait_info);
|
||||
cm_id_priv->timewait_info = NULL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -1683,6 +1684,7 @@ static int cm_req_handler(struct cm_work *work)
|
||||
id.local_id);
|
||||
if (IS_ERR(cm_id_priv->timewait_info)) {
|
||||
ret = PTR_ERR(cm_id_priv->timewait_info);
|
||||
cm_id_priv->timewait_info = NULL;
|
||||
goto destroy;
|
||||
}
|
||||
cm_id_priv->timewait_info->work.remote_id = req_msg->local_comm_id;
|
||||
|
||||
@@ -893,6 +893,9 @@ struct ib_cq *c4iw_create_cq(struct ib_device *ibdev,
|
||||
|
||||
rhp = to_c4iw_dev(ibdev);
|
||||
|
||||
if (entries < 1 || entries > ibdev->attrs.max_cqe)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
if (vector >= rhp->rdev.lldi.nciq)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
|
||||
@@ -609,7 +609,7 @@ static inline int mthca_poll_one(struct mthca_dev *dev,
|
||||
entry->byte_len = MTHCA_ATOMIC_BYTE_LEN;
|
||||
break;
|
||||
default:
|
||||
entry->opcode = MTHCA_OPCODE_INVALID;
|
||||
entry->opcode = 0xFF;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -105,7 +105,6 @@ enum {
|
||||
MTHCA_OPCODE_ATOMIC_CS = 0x11,
|
||||
MTHCA_OPCODE_ATOMIC_FA = 0x12,
|
||||
MTHCA_OPCODE_BIND_MW = 0x18,
|
||||
MTHCA_OPCODE_INVALID = 0xff
|
||||
};
|
||||
|
||||
enum {
|
||||
|
||||
@@ -180,6 +180,7 @@ find_free_vf_and_create_qp_grp(struct usnic_ib_dev *us_ibdev,
|
||||
|
||||
}
|
||||
usnic_uiom_free_dev_list(dev_list);
|
||||
dev_list = NULL;
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
@@ -207,6 +208,8 @@ find_free_vf_and_create_qp_grp(struct usnic_ib_dev *us_ibdev,
|
||||
spin_unlock(&vf->lock);
|
||||
if (IS_ERR_OR_NULL(qp_grp)) {
|
||||
usnic_err("Failed to allocate qp_grp\n");
|
||||
if (usnic_ib_share_vf)
|
||||
usnic_uiom_free_dev_list(dev_list);
|
||||
return ERR_PTR(qp_grp ? PTR_ERR(qp_grp) : -ENOMEM);
|
||||
}
|
||||
|
||||
|
||||
@@ -661,7 +661,8 @@ next_wqe:
|
||||
}
|
||||
|
||||
if (unlikely(qp_type(qp) == IB_QPT_RC &&
|
||||
qp->req.psn > (qp->comp.psn + RXE_MAX_UNACKED_PSNS))) {
|
||||
psn_compare(qp->req.psn, (qp->comp.psn +
|
||||
RXE_MAX_UNACKED_PSNS)) > 0)) {
|
||||
qp->req.wait_psn = 1;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -140,6 +140,7 @@ static void cros_ec_keyb_process(struct cros_ec_keyb *ckdev,
|
||||
"changed: [r%d c%d]: byte %02x\n",
|
||||
row, col, new_state);
|
||||
|
||||
input_event(idev, EV_MSC, MSC_SCAN, pos);
|
||||
input_report_key(idev, keycodes[pos],
|
||||
new_state);
|
||||
}
|
||||
|
||||
@@ -571,12 +571,15 @@ static int cm109_input_open(struct input_dev *idev)
|
||||
dev->ctl_data->byte[HID_OR2] = dev->keybit;
|
||||
dev->ctl_data->byte[HID_OR3] = 0x00;
|
||||
|
||||
dev->ctl_urb_pending = 1;
|
||||
error = usb_submit_urb(dev->urb_ctl, GFP_KERNEL);
|
||||
if (error)
|
||||
if (error) {
|
||||
dev->ctl_urb_pending = 0;
|
||||
dev_err(&dev->intf->dev, "%s: usb_submit_urb (urb_ctl) failed %d\n",
|
||||
__func__, error);
|
||||
else
|
||||
} else {
|
||||
dev->open = 1;
|
||||
}
|
||||
|
||||
mutex_unlock(&dev->pm_mutex);
|
||||
|
||||
|
||||
@@ -573,7 +573,7 @@ static int cyapa_pip_retrieve_data_structure(struct cyapa *cyapa,
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
put_unaligned_le16(PIP_OUTPUT_REPORT_ADDR, &cmd.head.addr);
|
||||
put_unaligned_le16(sizeof(cmd), &cmd.head.length - 2);
|
||||
put_unaligned_le16(sizeof(cmd) - 2, &cmd.head.length);
|
||||
cmd.head.report_id = PIP_APP_CMD_REPORT_ID;
|
||||
cmd.head.cmd_code = PIP_RETRIEVE_DATA_STRUCTURE;
|
||||
put_unaligned_le16(read_offset, &cmd.read_offset);
|
||||
|
||||
@@ -687,6 +687,48 @@ static const struct dmi_system_id __initconst i8042_dmi_reset_table[] = {
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "AOA150"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Aspire A114-31"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Aspire A314-31"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Aspire A315-31"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Aspire ES1-132"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Aspire ES1-332"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Aspire ES1-432"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate Spin B118-RN"),
|
||||
},
|
||||
},
|
||||
{
|
||||
/* Advent 4211 */
|
||||
.matches = {
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/module.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/unaligned.h>
|
||||
|
||||
/*
|
||||
* This code has been heavily tested on a Nokia 770, and lightly
|
||||
@@ -410,7 +411,7 @@ static int ads7845_read12_ser(struct device *dev, unsigned command)
|
||||
|
||||
if (status == 0) {
|
||||
/* BE12 value, then padding */
|
||||
status = be16_to_cpu(*((u16 *)&req->sample[1]));
|
||||
status = get_unaligned_be16(&req->sample[1]);
|
||||
status = status >> 3;
|
||||
status &= 0x0fff;
|
||||
}
|
||||
@@ -785,10 +786,11 @@ static void ads7846_report_state(struct ads7846 *ts)
|
||||
/* compute touch pressure resistance using equation #2 */
|
||||
Rt = z2;
|
||||
Rt -= z1;
|
||||
Rt *= x;
|
||||
Rt *= ts->x_plate_ohms;
|
||||
Rt = DIV_ROUND_CLOSEST(Rt, 16);
|
||||
Rt *= x;
|
||||
Rt /= z1;
|
||||
Rt = (Rt + 2047) >> 12;
|
||||
Rt = DIV_ROUND_CLOSEST(Rt, 256);
|
||||
} else {
|
||||
Rt = 0;
|
||||
}
|
||||
|
||||
@@ -98,6 +98,18 @@ static const struct dmi_system_id rotated_screen[] = {
|
||||
DMI_MATCH(DMI_BIOS_DATE, "12/19/2014"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.ident = "Teclast X98 Pro",
|
||||
.matches = {
|
||||
/*
|
||||
* Only match BIOS date, because the manufacturers
|
||||
* BIOS does not report the board name at all
|
||||
* (sometimes)...
|
||||
*/
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "TECLAST"),
|
||||
DMI_MATCH(DMI_BIOS_DATE, "10/28/2015"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.ident = "WinBook TW100",
|
||||
.matches = {
|
||||
|
||||
@@ -1350,6 +1350,8 @@ static int intel_irq_remapping_alloc(struct irq_domain *domain,
|
||||
irq_data = irq_domain_get_irq_data(domain, virq + i);
|
||||
irq_cfg = irqd_cfg(irq_data);
|
||||
if (!irq_data || !irq_cfg) {
|
||||
if (!i)
|
||||
kfree(data);
|
||||
ret = -EINVAL;
|
||||
goto out_free_data;
|
||||
}
|
||||
|
||||
@@ -165,8 +165,7 @@ static int alpine_msix_middle_domain_alloc(struct irq_domain *domain,
|
||||
return 0;
|
||||
|
||||
err_sgi:
|
||||
while (--i >= 0)
|
||||
irq_domain_free_irqs_parent(domain, virq, i);
|
||||
irq_domain_free_irqs_parent(domain, virq, i - 1);
|
||||
alpine_msix_free_sgi(priv, sgi, nr_irqs);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ if MISDN != n
|
||||
config MISDN_DSP
|
||||
tristate "Digital Audio Processing of transparent data"
|
||||
depends on MISDN
|
||||
select BITREVERSE
|
||||
help
|
||||
Enable support for digital audio processing capability.
|
||||
|
||||
|
||||
@@ -1549,6 +1549,7 @@ static int target_message(struct dm_ioctl *param, size_t param_size)
|
||||
|
||||
if (!argc) {
|
||||
DMWARN("Empty message received.");
|
||||
r = -EINVAL;
|
||||
goto out_argv;
|
||||
}
|
||||
|
||||
|
||||
@@ -397,14 +397,23 @@ int dm_get_device(struct dm_target *ti, const char *path, fmode_t mode,
|
||||
{
|
||||
int r;
|
||||
dev_t dev;
|
||||
unsigned int major, minor;
|
||||
char dummy;
|
||||
struct dm_dev_internal *dd;
|
||||
struct dm_table *t = ti->table;
|
||||
|
||||
BUG_ON(!t);
|
||||
|
||||
dev = dm_get_dev_t(path);
|
||||
if (!dev)
|
||||
return -ENODEV;
|
||||
if (sscanf(path, "%u:%u%c", &major, &minor, &dummy) == 2) {
|
||||
/* Extract the major/minor numbers */
|
||||
dev = MKDEV(major, minor);
|
||||
if (MAJOR(dev) != major || MINOR(dev) != minor)
|
||||
return -EOVERFLOW;
|
||||
} else {
|
||||
dev = dm_get_dev_t(path);
|
||||
if (!dev)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
dd = find_device(&t->devices, dev);
|
||||
if (!dd) {
|
||||
@@ -1251,12 +1260,6 @@ void dm_table_event_callback(struct dm_table *t,
|
||||
|
||||
void dm_table_event(struct dm_table *t)
|
||||
{
|
||||
/*
|
||||
* You can no longer call dm_table_event() from interrupt
|
||||
* context, use a bottom half instead.
|
||||
*/
|
||||
BUG_ON(in_interrupt());
|
||||
|
||||
mutex_lock(&_event_lock);
|
||||
if (t->event_fn)
|
||||
t->event_fn(t->event_context);
|
||||
|
||||
@@ -6857,8 +6857,11 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode,
|
||||
err = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
WARN_ON_ONCE(test_bit(MD_CLOSING, &mddev->flags));
|
||||
set_bit(MD_CLOSING, &mddev->flags);
|
||||
if (test_and_set_bit(MD_CLOSING, &mddev->flags)) {
|
||||
mutex_unlock(&mddev->open_mutex);
|
||||
err = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
did_set_md_closing = true;
|
||||
mutex_unlock(&mddev->open_mutex);
|
||||
sync_blockdev(bdev);
|
||||
|
||||
@@ -1180,12 +1180,15 @@ static int smsdvb_hotplug(struct smscore_device_t *coredev,
|
||||
rc = dvb_create_media_graph(&client->adapter, true);
|
||||
if (rc < 0) {
|
||||
pr_err("dvb_create_media_graph failed %d\n", rc);
|
||||
goto client_error;
|
||||
goto media_graph_error;
|
||||
}
|
||||
|
||||
pr_info("DVB interface registered.\n");
|
||||
return 0;
|
||||
|
||||
media_graph_error:
|
||||
smsdvb_debugfs_release(client);
|
||||
|
||||
client_error:
|
||||
dvb_unregister_frontend(&client->frontend);
|
||||
|
||||
|
||||
@@ -184,7 +184,7 @@ int netup_spi_init(struct netup_unidvb_dev *ndev)
|
||||
struct spi_master *master;
|
||||
struct netup_spi *nspi;
|
||||
|
||||
master = spi_alloc_master(&ndev->pci_dev->dev,
|
||||
master = devm_spi_alloc_master(&ndev->pci_dev->dev,
|
||||
sizeof(struct netup_spi));
|
||||
if (!master) {
|
||||
dev_err(&ndev->pci_dev->dev,
|
||||
@@ -217,6 +217,7 @@ int netup_spi_init(struct netup_unidvb_dev *ndev)
|
||||
ndev->pci_slot,
|
||||
ndev->pci_func);
|
||||
if (!spi_new_device(master, &netup_spi_board)) {
|
||||
spi_unregister_master(master);
|
||||
ndev->spi = NULL;
|
||||
dev_err(&ndev->pci_dev->dev,
|
||||
"%s(): unable to create SPI device\n", __func__);
|
||||
@@ -235,13 +236,13 @@ void netup_spi_release(struct netup_unidvb_dev *ndev)
|
||||
if (!spi)
|
||||
return;
|
||||
|
||||
spi_unregister_master(spi->master);
|
||||
spin_lock_irqsave(&spi->lock, flags);
|
||||
reg = readw(&spi->regs->control_stat);
|
||||
writew(reg | NETUP_SPI_CTRL_IRQ, &spi->regs->control_stat);
|
||||
reg = readw(&spi->regs->control_stat);
|
||||
writew(reg & ~NETUP_SPI_CTRL_IMASK, &spi->regs->control_stat);
|
||||
spin_unlock_irqrestore(&spi->lock, flags);
|
||||
spi_unregister_master(spi->master);
|
||||
ndev->spi = NULL;
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user