Merge android-4.19-stable.146 (443485d) into msm-4.19

* refs/heads/tmp-443485d:
  Linux 4.19.146
  gcov: add support for GCC 10.1
  usb: typec: ucsi: acpi: Check the _DEP dependencies
  usb: Fix out of sync data toggle if a configured device is reconfigured
  USB: serial: option: add support for SIM7070/SIM7080/SIM7090 modules
  USB: serial: option: support dynamic Quectel USB compositions
  USB: serial: ftdi_sio: add IDs for Xsens Mti USB converter
  usb: core: fix slab-out-of-bounds Read in read_descriptors
  phy: qcom-qmp: Use correct values for ipq8074 PCIe Gen2 PHY init
  staging: greybus: audio: fix uninitialized value issue
  video: fbdev: fix OOB read in vga_8planes_imageblit()
  ARM: dts: vfxxx: Add syscon compatible with OCOTP
  KVM: VMX: Don't freeze guest when event delivery causes an APIC-access exit
  fbcon: remove now unusued 'softback_lines' cursor() argument
  fbcon: remove soft scrollback code
  vgacon: remove software scrollback support
  RDMA/rxe: Fix the parent sysfs read when the interface has 15 chars
  rbd: require global CAP_SYS_ADMIN for mapping and unmapping
  drm/msm: Disable preemption on all 5xx targets
  drm/tve200: Stabilize enable/disable
  scsi: target: iscsi: Fix hang in iscsit_access_np() when getting tpg->np_login_sem
  scsi: target: iscsi: Fix data digest calculation
  regulator: push allocation in set_consumer_device_supply() out of lock
  btrfs: fix wrong address when faulting in pages in the search ioctl
  btrfs: fix lockdep splat in add_missing_dev
  btrfs: require only sector size alignment for parent eb bytenr
  staging: wlan-ng: fix out of bounds read in prism2sta_probe_usb()
  iio:accel:mma8452: Fix timestamp alignment and prevent data leak.
  iio:accel:mma7455: Fix timestamp alignment and prevent data leak.
  iio: accel: kxsd9: Fix alignment of local buffer.
  iio:chemical:ccs811: Fix timestamp alignment and prevent data leak.
  iio:light:max44000 Fix timestamp alignment and prevent data leak.
  iio:magnetometer:ak8975 Fix alignment and data leak issues.
  iio:adc:ti-adc081c Fix alignment and data leak issues
  iio:adc:max1118 Fix alignment of timestamp and data leak issues
  iio:adc:ina2xx Fix timestamp alignment issue.
  iio:adc:ti-adc084s021 Fix alignment and data leak issues.
  iio:accel:bmc150-accel: Fix timestamp alignment and prevent data leak.
  iio:light:ltr501 Fix timestamp alignment issue.
  iio: adc: ti-ads1015: fix conversion when CONFIG_PM is not set
  iio: adc: mcp3422: fix locking on error path
  iio: adc: mcp3422: fix locking scope
  gcov: Disable gcov build with GCC 10
  iommu/amd: Do not use IOMMUv2 functionality when SME is active
  drm/amdgpu: Fix bug in reporting voltage for CIK
  ALSA: hda: fix a runtime pm issue in SOF when integrated GPU is disabled
  cpufreq: intel_pstate: Fix intel_pstate_get_hwp_max() for turbo disabled
  cpufreq: intel_pstate: Refuse to turn off with HWP enabled
  ARC: [plat-hsdk]: Switch ethernet phy-mode to rgmii-id
  HID: elan: Fix memleak in elan_input_configured
  drivers/net/wan/hdlc_cisco: Add hard_header_len
  HID: quirks: Set INCREMENT_USAGE_ON_DUPLICATE for all Saitek X52 devices
  nvme-rdma: serialize controller teardown sequences
  nvme-fabrics: don't check state NVME_CTRL_NEW for request acceptance
  irqchip/eznps: Fix build error for !ARC700 builds
  xfs: initialize the shortform attr header padding entry
  drivers/net/wan/lapbether: Set network_header before transmitting
  ALSA: hda: Fix 2 channel swapping for Tegra
  firestream: Fix memleak in fs_open
  NFC: st95hf: Fix memleak in st95hf_in_send_cmd
  drivers/net/wan/lapbether: Added needed_tailroom
  netfilter: conntrack: allow sctp hearbeat after connection re-use
  dmaengine: acpi: Put the CSRT table after using it
  ARC: HSDK: wireup perf irq
  arm64: dts: ns2: Fixed QSPI compatible string
  ARM: dts: BCM5301X: Fixed QSPI compatible string
  ARM: dts: NSP: Fixed QSPI compatible string
  ARM: dts: bcm: HR2: Fixed QSPI compatible string
  mmc: sdhci-msm: Add retries when all tuning phases are found valid
  RDMA/core: Fix reported speed and width
  scsi: libsas: Set data_dir as DMA_NONE if libata marks qc as NODATA
  drm/sun4i: Fix dsi dcs long write function
  RDMA/bnxt_re: Do not report transparent vlan from QP1
  RDMA/rxe: Drop pointless checks in rxe_init_ports
  RDMA/rxe: Fix memleak in rxe_mem_init_user
  ARM: dts: ls1021a: fix QuadSPI-memory reg range
  ARM: dts: socfpga: fix register entry for timer3 on Arria10
  ARM: dts: logicpd-som-lv-baseboard: Fix broken audio
  ARM: dts: logicpd-torpedo-baseboard: Fix broken audio
  ANDROID: ABI: refresh with latest libabigail 94f5d4ae
  Linux 4.19.145
  net/mlx5e: Don't support phys switch id if not in switchdev mode
  net: disable netpoll on fresh napis
  tipc: fix shutdown() of connectionless socket
  sctp: not disable bh in the whole sctp_get_port_local()
  net: usb: dm9601: Add USB ID of Keenetic Plus DSL
  netlabel: fix problems with mapping removal
  block: ensure bdi->io_pages is always initialized
  ALSA; firewire-tascam: exclude Tascam FE-8 from detection
  FROMGIT: binder: print warnings when detecting oneway spamming.
  Linux 4.19.144
  net: usb: Fix uninit-was-stored issue in asix_read_phy_addr()
  cfg80211: regulatory: reject invalid hints
  mm/hugetlb: fix a race between hugetlb sysctl handlers
  checkpatch: fix the usage of capture group ( ... )
  vfio/pci: Fix SR-IOV VF handling with MMIO blocking
  KVM: arm64: Set HCR_EL2.PTW to prevent AT taking synchronous exception
  KVM: arm64: Survive synchronous exceptions caused by AT instructions
  KVM: arm64: Defer guest entry when an asynchronous exception is pending
  KVM: arm64: Add kvm_extable for vaxorcism code
  mm: slub: fix conversion of freelist_corrupted()
  dm thin metadata: Avoid returning cmd->bm wild pointer on error
  dm cache metadata: Avoid returning cmd->bm wild pointer on error
  dm writecache: handle DAX to partitions on persistent memory correctly
  libata: implement ATA_HORKAGE_MAX_TRIM_128M and apply to Sandisks
  block: allow for_each_bvec to support zero len bvec
  affs: fix basic permission bits to actually work
  media: rc: uevent sysfs file races with rc_unregister_device()
  media: rc: do not access device via sysfs after rc_unregister_device()
  ALSA: hda - Fix silent audio output and corrupted input on MSI X570-A PRO
  ALSA: firewire-digi00x: exclude Avid Adrenaline from detection
  ALSA: hda/hdmi: always check pin power status in i915 pin fixup
  ALSA: pcm: oss: Remove superfluous WARN_ON() for mulaw sanity check
  ALSA: ca0106: fix error code handling
  usb: qmi_wwan: add D-Link DWM-222 A2 device ID
  net: usb: qmi_wwan: add Telit 0x1050 composition
  btrfs: fix potential deadlock in the search ioctl
  uaccess: Add non-pagefault user-space write function
  uaccess: Add non-pagefault user-space read functions
  btrfs: set the lockdep class for log tree extent buffers
  btrfs: Remove extraneous extent_buffer_get from tree_mod_log_rewind
  btrfs: Remove redundant extent_buffer_get in get_old_root
  vfio-pci: Invalidate mmaps and block MMIO access on disabled memory
  vfio-pci: Fault mmaps to enable vma tracking
  vfio/type1: Support faulting PFNMAP vmas
  btrfs: drop path before adding new uuid tree entry
  xfs: don't update mtime on COW faults
  ext2: don't update mtime on COW faults
  include/linux/log2.h: add missing () around n in roundup_pow_of_two()
  thermal: ti-soc-thermal: Fix bogus thermal shutdowns for omap4430
  iommu/vt-d: Serialize IOMMU GCMD register modifications
  x86, fakenuma: Fix invalid starting node ID
  tg3: Fix soft lockup when tg3_reset_task() fails.
  perf jevents: Fix suspicious code in fixregex()
  xfs: fix xfs_bmap_validate_extent_raw when checking attr fork of rt files
  net: gemini: Fix another missing clk_disable_unprepare() in probe
  fix regression in "epoll: Keep a reference on files added to the check list"
  net: ethernet: mlx4: Fix memory allocation in mlx4_buddy_init()
  perf tools: Correct SNOOPX field offset
  nvmet-fc: Fix a missed _irqsave version of spin_lock in 'nvmet_fc_fod_op_done()'
  netfilter: nfnetlink: nfnetlink_unicast() reports EAGAIN instead of ENOBUFS
  selftests/bpf: Fix massive output from test_maps
  bnxt: don't enable NAPI until rings are ready
  xfs: fix boundary test in xfs_attr_shortform_verify
  bnxt_en: fix HWRM error when querying VF temperature
  bnxt_en: Fix PCI AER error recovery flow
  bnxt_en: Check for zero dir entries in NVRAM.
  bnxt_en: Don't query FW when netif_running() is false.
  gtp: add GTPA_LINK info to msg sent to userspace
  dmaengine: pl330: Fix burst length if burst size is smaller than bus width
  net: arc_emac: Fix memleak in arc_mdio_probe
  ravb: Fixed to be able to unload modules
  net: systemport: Fix memleak in bcm_sysport_probe
  net: hns: Fix memleak in hns_nic_dev_probe
  netfilter: nf_tables: fix destination register zeroing
  netfilter: nf_tables: incorrect enum nft_list_attributes definition
  netfilter: nf_tables: add NFTA_SET_USERDATA if not null
  MIPS: BMIPS: Also call bmips_cpu_setup() for secondary cores
  MIPS: mm: BMIPS5000 has inclusive physical caches
  dmaengine: at_hdmac: check return value of of_find_device_by_node() in at_dma_xlate()
  batman-adv: bla: use netif_rx_ni when not in interrupt context
  batman-adv: Fix own OGM check in aggregated OGMs
  batman-adv: Avoid uninitialized chaddr when handling DHCP
  dmaengine: of-dma: Fix of_dma_router_xlate's of_dma_xlate handling
  xen/xenbus: Fix granting of vmalloc'd memory
  s390: don't trace preemption in percpu macros
  cpuidle: Fixup IRQ state
  ceph: don't allow setlease on cephfs
  drm/msm/a6xx: fix gmu start on newer firmware
  nvmet: Disable keep-alive timer when kato is cleared to 0h
  hwmon: (applesmc) check status earlier.
  drm/msm: add shutdown support for display platform_driver
  tty: serial: qcom_geni_serial: Drop __init from qcom_geni_console_setup
  scsi: target: tcmu: Optimize use of flush_dcache_page
  scsi: target: tcmu: Fix size in calls to tcmu_flush_dcache_range
  perf record/stat: Explicitly call out event modifiers in the documentation
  HID: core: Sanitize event code and type when mapping input
  HID: core: Correctly handle ReportSize being zero
  Linux 4.19.143
  ALSA: usb-audio: Update documentation comment for MS2109 quirk
  HID: hiddev: Fix slab-out-of-bounds write in hiddev_ioctl_usage()
  tpm: Unify the mismatching TPM space buffer sizes
  usb: dwc3: gadget: Handle ZLP for sg requests
  usb: dwc3: gadget: Fix handling ZLP
  usb: dwc3: gadget: Don't setup more than requested
  btrfs: check the right error variable in btrfs_del_dir_entries_in_log
  usb: storage: Add unusual_uas entry for Sony PSZ drives
  USB: cdc-acm: rework notification_buffer resizing
  USB: gadget: u_f: Unbreak offset calculation in VLAs
  USB: gadget: f_ncm: add bounds checks to ncm_unwrap_ntb()
  USB: gadget: u_f: add overflow checks to VLA macros
  usb: host: ohci-exynos: Fix error handling in exynos_ohci_probe()
  USB: Ignore UAS for JMicron JMS567 ATA/ATAPI Bridge
  USB: quirks: Ignore duplicate endpoint on Sound Devices MixPre-D
  USB: quirks: Add no-lpm quirk for another Raydium touchscreen
  usb: uas: Add quirk for PNY Pro Elite
  USB: yurex: Fix bad gfp argument
  drm/amd/pm: correct Vega12 swctf limit setting
  drm/amd/pm: correct Vega10 swctf limit setting
  drm/amdgpu: Fix buffer overflow in INFO ioctl
  irqchip/stm32-exti: Avoid losing interrupts due to clearing pending bits by mistake
  genirq/matrix: Deal with the sillyness of for_each_cpu() on UP
  device property: Fix the secondary firmware node handling in set_primary_fwnode()
  PM: sleep: core: Fix the handling of pending runtime resume requests
  xhci: Always restore EP_SOFT_CLEAR_TOGGLE even if ep reset failed
  xhci: Do warm-reset when both CAS and XDEV_RESUME are set
  usb: host: xhci: fix ep context print mismatch in debugfs
  XEN uses irqdesc::irq_data_common::handler_data to store a per interrupt XEN data pointer which contains XEN specific information.
  writeback: Fix sync livelock due to b_dirty_time processing
  writeback: Avoid skipping inode writeback
  writeback: Protect inode->i_io_list with inode->i_lock
  serial: 8250: change lock order in serial8250_do_startup()
  serial: 8250_exar: Fix number of ports for Commtech PCIe cards
  serial: pl011: Don't leak amba_ports entry on driver register error
  serial: pl011: Fix oops on -EPROBE_DEFER
  serial: samsung: Removes the IRQ not found warning
  vt_ioctl: change VT_RESIZEX ioctl to check for error return from vc_resize()
  vt: defer kfree() of vc_screenbuf in vc_do_resize()
  USB: lvtest: return proper error code in probe
  fbcon: prevent user font height or width change from causing potential out-of-bounds access
  btrfs: fix space cache memory leak after transaction abort
  btrfs: reset compression level for lzo on remount
  blk-mq: order adding requests to hctx->dispatch and checking SCHED_RESTART
  HID: i2c-hid: Always sleep 60ms after I2C_HID_PWR_ON commands
  block: loop: set discard granularity and alignment for block device backed loop
  powerpc/perf: Fix soft lockups due to missed interrupt accounting
  net: gianfar: Add of_node_put() before goto statement
  macvlan: validate setting of multiple remote source MAC addresses
  Revert "scsi: qla2xxx: Fix crash on qla2x00_mailbox_command"
  scsi: qla2xxx: Fix null pointer access during disconnect from subsystem
  scsi: qla2xxx: Check if FW supports MQ before enabling
  scsi: ufs: Clean up completed request without interrupt notification
  scsi: ufs: Improve interrupt handling for shared interrupts
  scsi: ufs: Fix possible infinite loop in ufshcd_hold
  scsi: fcoe: Fix I/O path allocation
  ASoC: wm8994: Avoid attempts to read unreadable registers
  s390/cio: add cond_resched() in the slow_eval_known_fn() loop
  spi: stm32: fix stm32_spi_prepare_mbr in case of odd clk_rate
  fs: prevent BUG_ON in submit_bh_wbc()
  ext4: correctly restore system zone info when remount fails
  ext4: handle error of ext4_setup_system_zone() on remount
  ext4: handle option set by mount flags correctly
  jbd2: abort journal if free a async write error metadata buffer
  ext4: handle read only external journal device
  ext4: don't BUG on inconsistent journal feature
  jbd2: make sure jh have b_transaction set in refile/unfile_buffer
  usb: gadget: f_tcm: Fix some resource leaks in some error paths
  i2c: rcar: in slave mode, clear NACK earlier
  null_blk: fix passing of REQ_FUA flag in null_handle_rq
  nvme-fc: Fix wrong return value in __nvme_fc_init_request()
  drm/msm/adreno: fix updating ring fence
  media: gpio-ir-tx: improve precision of transmitted signal due to scheduling
  Revert "ath10k: fix DMA related firmware crashes on multiple devices"
  efi: provide empty efi_enter_virtual_mode implementation
  USB: sisusbvga: Fix a potential UB casued by left shifting a negative value
  powerpc/spufs: add CONFIG_COREDUMP dependency
  KVM: arm64: Fix symbol dependency in __hyp_call_panic_nvhe
  EDAC/ie31200: Fallback if host bridge device is already initialized
  scsi: fcoe: Memory leak fix in fcoe_sysfs_fcf_del()
  ceph: fix potential mdsc use-after-free crash
  scsi: iscsi: Do not put host in iscsi_set_flashnode_param()
  btrfs: file: reserve qgroup space after the hole punch range is locked
  locking/lockdep: Fix overflow in presentation of average lock-time
  drm/nouveau: Fix reference count leak in nouveau_connector_detect
  drm/nouveau: fix reference count leak in nv50_disp_atomic_commit
  drm/nouveau/drm/noveau: fix reference count leak in nouveau_fbcon_open
  f2fs: fix use-after-free issue
  HID: quirks: add NOGET quirk for Logitech GROUP
  cec-api: prevent leaking memory through hole in structure
  mips/vdso: Fix resource leaks in genvdso.c
  rtlwifi: rtl8192cu: Prevent leaking urb
  ARM: dts: ls1021a: output PPS signal on FIPER2
  PCI: Fix pci_create_slot() reference count leak
  omapfb: fix multiple reference count leaks due to pm_runtime_get_sync
  f2fs: fix error path in do_recover_data()
  selftests/powerpc: Purge extra count_pmc() calls of ebb selftests
  xfs: Don't allow logging of XFS_ISTALE inodes
  scsi: lpfc: Fix shost refcount mismatch when deleting vport
  drm/amdgpu/display: fix ref count leak when pm_runtime_get_sync fails
  drm/amdgpu: fix ref count leak in amdgpu_display_crtc_set_config
  drm/amd/display: fix ref count leak in amdgpu_drm_ioctl
  drm/amdgpu: fix ref count leak in amdgpu_driver_open_kms
  drm/radeon: fix multiple reference count leak
  drm/amdkfd: Fix reference count leaks.
  iommu/iova: Don't BUG on invalid PFNs
  scsi: target: tcmu: Fix crash on ARM during cmd completion
  blktrace: ensure our debugfs dir exists
  media: pci: ttpci: av7110: fix possible buffer overflow caused by bad DMA value in debiirq()
  powerpc/xive: Ignore kmemleak false positives
  arm64: dts: qcom: msm8916: Pull down PDM GPIOs during sleep
  mfd: intel-lpss: Add Intel Emmitsburg PCH PCI IDs
  ASoC: tegra: Fix reference count leaks.
  ASoC: img-parallel-out: Fix a reference count leak
  ASoC: img: Fix a reference count leak in img_i2s_in_set_fmt
  ALSA: pci: delete repeated words in comments
  ipvlan: fix device features
  net: ena: Make missed_tx stat incremental
  tipc: fix uninit skb->data in tipc_nl_compat_dumpit()
  net/smc: Prevent kernel-infoleak in __smc_diag_dump()
  net: qrtr: fix usage of idr in port assignment to socket
  net: Fix potential wrong skb->protocol in skb_vlan_untag()
  gre6: Fix reception with IP6_TNL_F_RCV_DSCP_COPY
  powerpc/64s: Don't init FSCR_DSCR in __init_FSCR()
  ANDROID: gki_defconfig: initialize locals with zeroes
  UPSTREAM: security: allow using Clang's zero initialization for stack variables
  Revert "binder: Prevent context manager from incrementing ref 0"
  ANDROID: GKI: update the ABI xml
  BACKPORT: recordmcount: support >64k sections
  UPSTREAM: arm64: vdso: Build vDSO with -ffixed-x18
  UPSTREAM: cgroup: Remove unused cgrp variable
  UPSTREAM: cgroup: freezer: call cgroup_enter_frozen() with preemption disabled in ptrace_stop()
  UPSTREAM: cgroup: freezer: fix frozen state inheritance
  UPSTREAM: signal: unconditionally leave the frozen state in ptrace_stop()
  BACKPORT: cgroup: cgroup v2 freezer
  UPSTREAM: cgroup: implement __cgroup_task_count() helper
  UPSTREAM: cgroup: rename freezer.c into legacy_freezer.c
  UPSTREAM: cgroup: remove extra cgroup_migrate_finish() call
  UPSTREAM: cgroup: saner refcounting for cgroup_root
  UPSTREAM: cgroup: Add named hierarchy disabling to cgroup_no_v1 boot param
  UPSTREAM: cgroup: remove unnecessary unlikely()
  UPSTREAM: cgroup: Simplify cgroup_ancestor
  Linux 4.19.142
  KVM: arm64: Only reschedule if MMU_NOTIFIER_RANGE_BLOCKABLE is not set
  KVM: Pass MMU notifier range flags to kvm_unmap_hva_range()
  clk: Evict unregistered clks from parent caches
  xen: don't reschedule in preemption off sections
  mm/hugetlb: fix calculation of adjust_range_if_pmd_sharing_possible
  do_epoll_ctl(): clean the failure exits up a bit
  epoll: Keep a reference on files added to the check list
  efi: add missed destroy_workqueue when efisubsys_init fails
  powerpc/pseries: Do not initiate shutdown when system is running on UPS
  net: dsa: b53: check for timeout
  hv_netvsc: Fix the queue_mapping in netvsc_vf_xmit()
  net: gemini: Fix missing free_netdev() in error path of gemini_ethernet_port_probe()
  net: ena: Prevent reset after device destruction
  bonding: fix active-backup failover for current ARP slave
  afs: Fix NULL deref in afs_dynroot_depopulate()
  RDMA/bnxt_re: Do not add user qps to flushlist
  Fix build error when CONFIG_ACPI is not set/enabled:
  efi: avoid error message when booting under Xen
  kconfig: qconf: fix signal connection to invalid slots
  kconfig: qconf: do not limit the pop-up menu to the first row
  kvm: x86: Toggling CR4.PKE does not load PDPTEs in PAE mode
  kvm: x86: Toggling CR4.SMAP does not load PDPTEs in PAE mode
  vfio/type1: Add proper error unwind for vfio_iommu_replay()
  ASoC: intel: Fix memleak in sst_media_open
  ASoC: msm8916-wcd-analog: fix register Interrupt offset
  s390/ptrace: fix storage key handling
  s390/runtime_instrumentation: fix storage key handling
  bonding: fix a potential double-unregister
  bonding: show saner speed for broadcast mode
  net: fec: correct the error path for regulator disable in probe
  i40e: Fix crash during removing i40e driver
  i40e: Set RX_ONLY mode for unicast promiscuous on VLAN
  ASoC: q6routing: add dummy register read/write function
  ext4: don't allow overlapping system zones
  ext4: fix potential negative array index in do_split()
  fs/signalfd.c: fix inconsistent return codes for signalfd4
  alpha: fix annotation of io{read,write}{16,32}be()
  xfs: Fix UBSAN null-ptr-deref in xfs_sysfs_init
  tools/testing/selftests/cgroup/cgroup_util.c: cg_read_strcmp: fix null pointer dereference
  virtio_ring: Avoid loop when vq is broken in virtqueue_poll
  scsi: libfc: Free skb in fc_disc_gpn_id_resp() for valid cases
  cpufreq: intel_pstate: Fix cpuinfo_max_freq when MSR_TURBO_RATIO_LIMIT is 0
  ceph: fix use-after-free for fsc->mdsc
  jffs2: fix UAF problem
  xfs: fix inode quota reservation checks
  svcrdma: Fix another Receive buffer leak
  m68knommu: fix overwriting of bits in ColdFire V3 cache control
  Input: psmouse - add a newline when printing 'proto' by sysfs
  media: vpss: clean up resources in init
  rtc: goldfish: Enable interrupt in set_alarm() when necessary
  media: budget-core: Improve exception handling in budget_register()
  scsi: target: tcmu: Fix crash in tcmu_flush_dcache_range on ARM
  scsi: ufs: Add DELAY_BEFORE_LPM quirk for Micron devices
  spi: Prevent adding devices below an unregistering controller
  kthread: Do not preempt current task if it is going to call schedule()
  drm/amd/display: fix pow() crashing when given base 0
  scsi: zfcp: Fix use-after-free in request timeout handlers
  jbd2: add the missing unlock_buffer() in the error path of jbd2_write_superblock()
  ext4: fix checking of directory entry validity for inline directories
  mm, page_alloc: fix core hung in free_pcppages_bulk()
  mm: include CMA pages in lowmem_reserve at boot
  kernel/relay.c: fix memleak on destroy relay channel
  romfs: fix uninitialized memory leak in romfs_dev_read()
  btrfs: sysfs: use NOFS for device creation
  btrfs: inode: fix NULL pointer dereference if inode doesn't need compression
  btrfs: Move free_pages_out label in inline extent handling branch in compress_file_range
  btrfs: don't show full path of bind mounts in subvol=
  btrfs: export helpers for subvolume name/id resolution
  khugepaged: adjust VM_BUG_ON_MM() in __khugepaged_enter()
  khugepaged: khugepaged_test_exit() check mmget_still_valid()
  perf probe: Fix memory leakage when the probe point is not found
  drm/vgem: Replace opencoded version of drm_gem_dumb_map_offset()
  ANDROID: tty: fix tty name overflow
  ANDROID: Revert "PCI: Probe bridge window attributes once at enumeration-time"
  Linux 4.19.141
  drm/amdgpu: Fix bug where DPM is not enabled after hibernate and resume
  drm: Added orientation quirk for ASUS tablet model T103HAF
  arm64: dts: marvell: espressobin: add ethernet alias
  khugepaged: retract_page_tables() remember to test exit
  sh: landisk: Add missing initialization of sh_io_port_base
  tools build feature: Quote CC and CXX for their arguments
  perf bench mem: Always memset source before memcpy
  ALSA: echoaudio: Fix potential Oops in snd_echo_resume()
  mfd: dln2: Run event handler loop under spinlock
  test_kmod: avoid potential double free in trigger_config_run_type()
  fs/ufs: avoid potential u32 multiplication overflow
  fs/minix: remove expected error message in block_to_path()
  fs/minix: fix block limit check for V1 filesystems
  fs/minix: set s_maxbytes correctly
  nfs: Fix getxattr kernel panic and memory overflow
  net: qcom/emac: add missed clk_disable_unprepare in error path of emac_clks_phase1_init
  drm/vmwgfx: Fix two list_for_each loop exit tests
  drm/vmwgfx: Use correct vmw_legacy_display_unit pointer
  Input: sentelic - fix error return when fsp_reg_write fails
  watchdog: initialize device before misc_register
  scsi: lpfc: nvmet: Avoid hang / use-after-free again when destroying targetport
  openrisc: Fix oops caused when dumping stack
  i2c: rcar: avoid race when unregistering slave
  tools build feature: Use CC and CXX from parent
  pwm: bcm-iproc: handle clk_get_rate() return
  clk: clk-atlas6: fix return value check in atlas6_clk_init()
  i2c: rcar: slave: only send STOP event when we have been addressed
  iommu/vt-d: Enforce PASID devTLB field mask
  iommu/omap: Check for failure of a call to omap_iommu_dump_ctx
  selftests/powerpc: ptrace-pkey: Don't update expected UAMOR value
  selftests/powerpc: ptrace-pkey: Update the test to mark an invalid pkey correctly
  selftests/powerpc: ptrace-pkey: Rename variables to make it easier to follow code
  dm rq: don't call blk_mq_queue_stopped() in dm_stop_queue()
  gpu: ipu-v3: image-convert: Combine rotate/no-rotate irq handlers
  mmc: renesas_sdhi_internal_dmac: clean up the code for dma complete
  USB: serial: ftdi_sio: clean up receive processing
  USB: serial: ftdi_sio: make process-packet buffer unsigned
  media: rockchip: rga: Only set output CSC mode for RGB input
  media: rockchip: rga: Introduce color fmt macros and refactor CSC mode logic
  RDMA/ipoib: Fix ABBA deadlock with ipoib_reap_ah()
  RDMA/ipoib: Return void from ipoib_ib_dev_stop()
  mfd: arizona: Ensure 32k clock is put on driver unbind and error
  drm/imx: imx-ldb: Disable both channels for split mode in enc->disable()
  remoteproc: qcom: q6v5: Update running state before requesting stop
  perf intel-pt: Fix FUP packet state
  module: Correctly truncate sysfs sections output
  pseries: Fix 64 bit logical memory block panic
  watchdog: f71808e_wdt: clear watchdog timeout occurred flag
  watchdog: f71808e_wdt: remove use of wrong watchdog_info option
  watchdog: f71808e_wdt: indicate WDIOF_CARDRESET support in watchdog_info.options
  tracing: Use trace_sched_process_free() instead of exit() for pid tracing
  tracing/hwlat: Honor the tracing_cpumask
  kprobes: Fix NULL pointer dereference at kprobe_ftrace_handler
  ftrace: Setup correct FTRACE_FL_REGS flags for module
  mm/page_counter.c: fix protection usage propagation
  ocfs2: change slot number type s16 to u16
  ext2: fix missing percpu_counter_inc
  MIPS: CPU#0 is not hotpluggable
  driver core: Avoid binding drivers to dead devices
  mac80211: fix misplaced while instead of if
  bcache: fix overflow in offset_to_stripe()
  bcache: allocate meta data pages as compound pages
  md/raid5: Fix Force reconstruct-write io stuck in degraded raid5
  net/compat: Add missing sock updates for SCM_RIGHTS
  net: stmmac: dwmac1000: provide multicast filter fallback
  net: ethernet: stmmac: Disable hardware multicast filter
  media: vsp1: dl: Fix NULL pointer dereference on unbind
  powerpc: Fix circular dependency between percpu.h and mmu.h
  powerpc: Allow 4224 bytes of stack expansion for the signal frame
  cifs: Fix leak when handling lease break for cached root fid
  xtensa: fix xtensa_pmu_setup prototype
  iio: dac: ad5592r: fix unbalanced mutex unlocks in ad5592r_read_raw()
  dt-bindings: iio: io-channel-mux: Fix compatible string in example code
  btrfs: fix return value mixup in btrfs_get_extent
  btrfs: fix memory leaks after failure to lookup checksums during inode logging
  btrfs: only search for left_info if there is no right_info in try_merge_free_space
  btrfs: fix messages after changing compression level by remount
  btrfs: open device without device_list_mutex
  btrfs: don't traverse into the seed devices in show_devname
  btrfs: ref-verify: fix memory leak in add_block_entry
  btrfs: don't allocate anonymous block device for user invisible roots
  btrfs: free anon block device right after subvolume deletion
  PCI: Probe bridge window attributes once at enumeration-time
  PCI: qcom: Add support for tx term offset for rev 2.1.0
  PCI: qcom: Define some PARF params needed for ipq8064 SoC
  PCI: Add device even if driver attach failed
  PCI: Mark AMD Navi10 GPU rev 0x00 ATS as broken
  PCI: hotplug: ACPI: Fix context refcounting in acpiphp_grab_context()
  genirq/affinity: Make affinity setting if activated opt-in
  smb3: warn on confusing error scenario with sec=krb5
  ANDROID: ABI: update the ABI xml representation
  Revert "ALSA: usb-audio: work around streaming quirk for MacroSilicon MS2109"
  Linux 4.19.140
  xen/gntdev: Fix dmabuf import with non-zero sgt offset
  xen/balloon: make the balloon wait interruptible
  xen/balloon: fix accounting in alloc_xenballooned_pages error path
  irqdomain/treewide: Free firmware node after domain removal
  ARM: 8992/1: Fix unwind_frame for clang-built kernels
  parisc: mask out enable and reserved bits from sba imask
  parisc: Implement __smp_store_release and __smp_load_acquire barriers
  mtd: rawnand: qcom: avoid write to unavailable register
  spi: spidev: Align buffers for DMA
  include/asm-generic/vmlinux.lds.h: align ro_after_init
  cpufreq: dt: fix oops on armada37xx
  NFS: Don't return layout segments that are in use
  NFS: Don't move layouts to plh_return_segs list while in use
  drm/ttm/nouveau: don't call tt destroy callback on alloc failure.
  9p: Fix memory leak in v9fs_mount
  ALSA: usb-audio: add quirk for Pioneer DDJ-RB
  fs/minix: reject too-large maximum file size
  fs/minix: don't allow getting deleted inodes
  fs/minix: check return value of sb_getblk()
  bitfield.h: don't compile-time validate _val in FIELD_FIT
  crypto: cpt - don't sleep of CRYPTO_TFM_REQ_MAY_SLEEP was not specified
  crypto: ccp - Fix use of merged scatterlists
  crypto: qat - fix double free in qat_uclo_create_batch_init_list
  crypto: hisilicon - don't sleep of CRYPTO_TFM_REQ_MAY_SLEEP was not specified
  pstore: Fix linking when crypto API disabled
  ALSA: usb-audio: work around streaming quirk for MacroSilicon MS2109
  ALSA: usb-audio: fix overeager device match for MacroSilicon MS2109
  ALSA: usb-audio: Creative USB X-Fi Pro SB1095 volume knob support
  ALSA: hda - fix the micmute led status for Lenovo ThinkCentre AIO
  USB: serial: cp210x: enable usb generic throttle/unthrottle
  USB: serial: cp210x: re-enable auto-RTS on open
  net: initialize fastreuse on inet_inherit_port
  net: refactor bind_bucket fastreuse into helper
  net/tls: Fix kmap usage
  net: Set fput_needed iff FDPUT_FPUT is set
  net/nfc/rawsock.c: add CAP_NET_RAW check.
  drivers/net/wan/lapbether: Added needed_headroom and a skb->len check
  af_packet: TPACKET_V3: fix fill status rwlock imbalance
  crypto: aesni - add compatibility with IAS
  x86/fsgsbase/64: Fix NULL deref in 86_fsgsbase_read_task
  svcrdma: Fix page leak in svc_rdma_recv_read_chunk()
  pinctrl-single: fix pcs_parse_pinconf() return value
  ocfs2: fix unbalanced locking
  dlm: Fix kobject memleak
  fsl/fman: fix eth hash table allocation
  fsl/fman: check dereferencing null pointer
  fsl/fman: fix unreachable code
  fsl/fman: fix dereference null return value
  fsl/fman: use 32-bit unsigned integer
  net: spider_net: Fix the size used in a 'dma_free_coherent()' call
  liquidio: Fix wrong return value in cn23xx_get_pf_num()
  net: ethernet: aquantia: Fix wrong return value
  tools, build: Propagate build failures from tools/build/Makefile.build
  wl1251: fix always return 0 error
  s390/qeth: don't process empty bridge port events
  ASoC: meson: axg-tdm-interface: fix link fmt setup
  selftests/powerpc: Fix online CPU selection
  PCI: Release IVRS table in AMD ACS quirk
  selftests/powerpc: Fix CPU affinity for child process
  powerpc/boot: Fix CONFIG_PPC_MPC52XX references
  net: dsa: rtl8366: Fix VLAN set-up
  net: dsa: rtl8366: Fix VLAN semantics
  Bluetooth: hci_serdev: Only unregister device if it was registered
  Bluetooth: hci_h5: Set HCI_UART_RESET_ON_INIT to correct flags
  power: supply: check if calc_soc succeeded in pm860x_init_battery
  Smack: prevent underflow in smk_set_cipso()
  Smack: fix another vsscanf out of bounds
  RDMA/core: Fix return error value in _ib_modify_qp() to negative
  PCI: cadence: Fix updating Vendor ID and Subsystem Vendor ID register
  net: dsa: mv88e6xxx: MV88E6097 does not support jumbo configuration
  scsi: mesh: Fix panic after host or bus reset
  usb: dwc2: Fix error path in gadget registration
  MIPS: OCTEON: add missing put_device() call in dwc3_octeon_device_init()
  coresight: tmc: Fix TMC mode read in tmc_read_unprepare_etb()
  thermal: ti-soc-thermal: Fix reversed condition in ti_thermal_expose_sensor()
  usb: core: fix quirks_param_set() writing to a const pointer
  USB: serial: iuu_phoenix: fix led-activity helpers
  drm/imx: tve: fix regulator_disable error path
  powerpc/book3s64/pkeys: Use PVR check instead of cpu feature
  PCI/ASPM: Add missing newline in sysfs 'policy'
  staging: rtl8192u: fix a dubious looking mask before a shift
  RDMA/rxe: Prevent access to wr->next ptr afrer wr is posted to send queue
  RDMA/qedr: SRQ's bug fixes
  powerpc/vdso: Fix vdso cpu truncation
  mwifiex: Prevent memory corruption handling keys
  scsi: scsi_debug: Add check for sdebug_max_queue during module init
  drm/bridge: sil_sii8620: initialize return of sii8620_readb
  phy: exynos5-usbdrd: Calibrating makes sense only for USB2.0 PHY
  drm: panel: simple: Fix bpc for LG LB070WV8 panel
  leds: core: Flush scheduled work for system suspend
  PCI: Fix pci_cfg_wait queue locking problem
  RDMA/rxe: Skip dgid check in loopback mode
  xfs: fix reflink quota reservation accounting error
  xfs: don't eat an EIO/ENOSPC writeback error when scrubbing data fork
  media: exynos4-is: Add missed check for pinctrl_lookup_state()
  media: firewire: Using uninitialized values in node_probe()
  ipvs: allow connection reuse for unconfirmed conntrack
  scsi: eesox: Fix different dev_id between request_irq() and free_irq()
  scsi: powertec: Fix different dev_id between request_irq() and free_irq()
  drm/radeon: fix array out-of-bounds read and write issues
  cxl: Fix kobject memleak
  drm/mipi: use dcs write for mipi_dsi_dcs_set_tear_scanline
  scsi: cumana_2: Fix different dev_id between request_irq() and free_irq()
  ASoC: Intel: bxt_rt298: add missing .owner field
  media: omap3isp: Add missed v4l2_ctrl_handler_free() for preview_init_entities()
  leds: lm355x: avoid enum conversion warning
  drm/arm: fix unintentional integer overflow on left shift
  drm/etnaviv: Fix error path on failure to enable bus clk
  iio: improve IIO_CONCENTRATION channel type description
  ath10k: Acquire tx_lock in tx error paths
  video: pxafb: Fix the function used to balance a 'dma_alloc_coherent()' call
  console: newport_con: fix an issue about leak related system resources
  video: fbdev: sm712fb: fix an issue about iounmap for a wrong address
  agp/intel: Fix a memory leak on module initialisation failure
  drm/msm: ratelimit crtc event overflow error
  ACPICA: Do not increment operation_region reference counts for field units
  bcache: fix super block seq numbers comparision in register_cache_set()
  dyndbg: fix a BUG_ON in ddebug_describe_flags
  usb: bdc: Halt controller on suspend
  bdc: Fix bug causing crash after multiple disconnects
  usb: gadget: net2280: fix memory leak on probe error handling paths
  gpu: host1x: debug: Fix multiple channels emitting messages simultaneously
  iwlegacy: Check the return value of pcie_capability_read_*()
  brcmfmac: set state of hanger slot to FREE when flushing PSQ
  brcmfmac: To fix Bss Info flag definition Bug
  brcmfmac: keep SDIO watchdog running when console_interval is non-zero
  mm/mmap.c: Add cond_resched() for exit_mmap() CPU stalls
  irqchip/irq-mtk-sysirq: Replace spinlock with raw_spinlock
  drm/radeon: disable AGP by default
  drm/debugfs: fix plain echo to connector "force" attribute
  usb: mtu3: clear dual mode of u3port when disable device
  drm/nouveau: fix multiple instances of reference count leaks
  drm/etnaviv: fix ref count leak via pm_runtime_get_sync
  arm64: dts: hisilicon: hikey: fixes to comply with adi, adv7533 DT binding
  md-cluster: fix wild pointer of unlock_all_bitmaps()
  video: fbdev: neofb: fix memory leak in neo_scan_monitor()
  crypto: aesni - Fix build with LLVM_IAS=1
  drm/radeon: Fix reference count leaks caused by pm_runtime_get_sync
  drm/amdgpu: avoid dereferencing a NULL pointer
  fs/btrfs: Add cond_resched() for try_release_extent_mapping() stalls
  loop: be paranoid on exit and prevent new additions / removals
  Bluetooth: add a mutex lock to avoid UAF in do_enale_set
  soc: qcom: rpmh-rsc: Set suppress_bind_attrs flag
  drm/tilcdc: fix leak & null ref in panel_connector_get_modes
  ARM: socfpga: PM: add missing put_device() call in socfpga_setup_ocram_self_refresh()
  spi: lantiq: fix: Rx overflow error in full duplex mode
  ARM: at91: pm: add missing put_device() call in at91_pm_sram_init()
  ARM: dts: gose: Fix ports node name for adv7612
  ARM: dts: gose: Fix ports node name for adv7180
  platform/x86: intel-vbtn: Fix return value check in check_acpi_dev()
  platform/x86: intel-hid: Fix return value check in check_acpi_dev()
  m68k: mac: Fix IOP status/control register writes
  m68k: mac: Don't send IOP message until channel is idle
  clk: scmi: Fix min and max rate when registering clocks with discrete rates
  arm64: dts: exynos: Fix silent hang after boot on Espresso
  firmware: arm_scmi: Fix SCMI genpd domain probing
  crypto: ccree - fix resource leak on error path
  arm64: dts: qcom: msm8916: Replace invalid bias-pull-none property
  EDAC: Fix reference count leaks
  arm64: dts: rockchip: fix rk3399-puma gmac reset gpio
  arm64: dts: rockchip: fix rk3399-puma vcc5v0-host gpio
  arm64: dts: rockchip: fix rk3368-lion gmac reset gpio
  sched: correct SD_flags returned by tl->sd_flags()
  sched/fair: Fix NOHZ next idle balance
  x86/mce/inject: Fix a wrong assignment of i_mce.status
  cgroup: add missing skcd->no_refcnt check in cgroup_sk_clone()
  HID: input: Fix devices that return multiple bytes in battery report
  tracepoint: Mark __tracepoint_string's __used
  ANDROID: fix a bug in quota2
  ANDROID: Update the ABI xml based on the new driver core padding
  ANDROID: GKI: add some padding to some driver core structures
  ANDROID: GKI: Update the ABI xml representation
  ANDROID: sched: add "frozen" field to task_struct
  ANDROID: cgroups: add v2 freezer ABI changes
  ANDROID: cgroups: ABI padding
  Linux 4.19.139
  Smack: fix use-after-free in smk_write_relabel_self()
  i40e: Memory leak in i40e_config_iwarp_qvlist
  i40e: Fix of memory leak and integer truncation in i40e_virtchnl.c
  i40e: Wrong truncation from u16 to u8
  i40e: add num_vectors checker in iwarp handler
  rxrpc: Fix race between recvmsg and sendmsg on immediate call failure
  selftests/net: relax cpu affinity requirement in msg_zerocopy test
  Revert "vxlan: fix tos value before xmit"
  openvswitch: Prevent kernel-infoleak in ovs_ct_put_key()
  net: thunderx: use spin_lock_bh in nicvf_set_rx_mode_task()
  net: gre: recompute gre csum for sctp over gre tunnels
  hv_netvsc: do not use VF device if link is down
  net: lan78xx: replace bogus endpoint lookup
  vxlan: Ensure FDB dump is performed under RCU
  net: ethernet: mtk_eth_soc: fix MTU warnings
  ipv6: fix memory leaks on IPV6_ADDRFORM path
  ipv4: Silence suspicious RCU usage warning
  xattr: break delegations in {set,remove}xattr
  Drivers: hv: vmbus: Ignore CHANNELMSG_TL_CONNECT_RESULT(23)
  tools lib traceevent: Fix memory leak in process_dynamic_array_len
  atm: fix atm_dev refcnt leaks in atmtcp_remove_persistent
  igb: reinit_locked() should be called with rtnl_lock
  cfg80211: check vendor command doit pointer before use
  firmware: Fix a reference count leak.
  usb: hso: check for return value in hso_serial_common_create()
  i2c: slave: add sanity check when unregistering
  i2c: slave: improve sanity check when registering
  drm/nouveau/fbcon: zero-initialise the mode_cmd2 structure
  drm/nouveau/fbcon: fix module unload when fbcon init has failed for some reason
  net/9p: validate fds in p9_fd_open
  leds: 88pm860x: fix use-after-free on unbind
  leds: lm3533: fix use-after-free on unbind
  leds: da903x: fix use-after-free on unbind
  leds: wm831x-status: fix use-after-free on unbind
  mtd: properly check all write ioctls for permissions
  vgacon: Fix for missing check in scrollback handling
  binder: Prevent context manager from incrementing ref 0
  omapfb: dss: Fix max fclk divider for omap36xx
  Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_with_rssi_evt()
  Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_evt()
  Bluetooth: Fix slab-out-of-bounds read in hci_extended_inquiry_result_evt()
  staging: android: ashmem: Fix lockdep warning for write operation
  ALSA: seq: oss: Serialize ioctls
  Revert "ALSA: hda: call runtime_allow() for all hda controllers"
  usb: xhci: Fix ASMedia ASM1142 DMA addressing
  usb: xhci: define IDs for various ASMedia host controllers
  USB: iowarrior: fix up report size handling for some devices
  USB: serial: qcserial: add EM7305 QDL product ID
  BACKPORT: loop: Fix wrong masking of status flags
  BACKPORT: loop: Add LOOP_CONFIGURE ioctl
  BACKPORT: loop: Clean up LOOP_SET_STATUS lo_flags handling
  BACKPORT: loop: Rework lo_ioctl() __user argument casting
  BACKPORT: loop: Move loop_set_status_from_info() and friends up
  BACKPORT: loop: Factor out configuring loop from status
  BACKPORT: loop: Remove figure_loop_size()
  BACKPORT: loop: Refactor loop_set_status() size calculation
  BACKPORT: loop: Factor out setting loop device size
  BACKPORT: loop: Remove sector_t truncation checks
  BACKPORT: loop: Call loop_config_discard() only after new config is applied
  Linux 4.19.138
  ext4: fix direct I/O read error
  random32: move the pseudo-random 32-bit definitions to prandom.h
  random32: remove net_rand_state from the latent entropy gcc plugin
  random: fix circular include dependency on arm64 after addition of percpu.h
  ARM: percpu.h: fix build error
  random32: update the net random state on interrupt and activity
  ANDROID: GKI: update the ABI xml
  ANDROID: GKI: power: Add property to enable/disable cc toggle
  ANDROID: Enforce KMI stability
  Linux 4.19.137
  x86/i8259: Use printk_deferred() to prevent deadlock
  KVM: LAPIC: Prevent setting the tscdeadline timer if the lapic is hw disabled
  xen-netfront: fix potential deadlock in xennet_remove()
  cxgb4: add missing release on skb in uld_send()
  x86/unwind/orc: Fix ORC for newly forked tasks
  Revert "i2c: cadence: Fix the hold bit setting"
  net: ethernet: ravb: exit if re-initialization fails in tx timeout
  parisc: add support for cmpxchg on u8 pointers
  nfc: s3fwrn5: add missing release on skb in s3fwrn5_recv_frame
  qed: Disable "MFW indication via attention" SPAM every 5 minutes
  usb: hso: Fix debug compile warning on sparc32
  net/mlx5e: fix bpf_prog reference count leaks in mlx5e_alloc_rq
  net: gemini: Fix missing clk_disable_unprepare() in error path of gemini_ethernet_port_probe()
  Bluetooth: fix kernel oops in store_pending_adv_report
  arm64: csum: Fix handling of bad packets
  arm64/alternatives: move length validation inside the subsection
  mac80211: mesh: Free pending skb when destroying a mpath
  mac80211: mesh: Free ie data when leaving mesh
  bpf: Fix map leak in HASH_OF_MAPS map
  ibmvnic: Fix IRQ mapping disposal in error path
  mlxsw: core: Free EMAD transactions using kfree_rcu()
  mlxsw: core: Increase scope of RCU read-side critical section
  mlx4: disable device on shutdown
  net: lan78xx: fix transfer-buffer memory leak
  net: lan78xx: add missing endpoint sanity check
  net/mlx5: Verify Hardware supports requested ptp function on a given pin
  sh: Fix validation of system call number
  selftests/net: psock_fanout: fix clang issues for target arch PowerPC
  selftests/net: rxtimestamp: fix clang issues for target arch PowerPC
  xfrm: Fix crash when the hold queue is used.
  net/x25: Fix null-ptr-deref in x25_disconnect
  net/x25: Fix x25_neigh refcnt leak when x25 disconnect
  xfs: fix missed wakeup on l_flush_wait
  rds: Prevent kernel-infoleak in rds_notify_queue_get()
  drm: hold gem reference until object is no longer accessed
  drm/amdgpu: Prevent kernel-infoleak in amdgpu_info_ioctl()
  Revert "drm/amdgpu: Fix NULL dereference in dpm sysfs handlers"
  ARM: 8986/1: hw_breakpoint: Don't invoke overflow handler on uaccess watchpoints
  wireless: Use offsetof instead of custom macro.
  9p/trans_fd: Fix concurrency del of req_list in p9_fd_cancelled/p9_read_work
  PCI/ASPM: Disable ASPM on ASMedia ASM1083/1085 PCIe-to-PCI bridge
  Btrfs: fix selftests failure due to uninitialized i_mode in test inodes
  sctp: implement memory accounting on tx path
  btrfs: inode: Verify inode mode to avoid NULL pointer dereference
  drm/amd/display: prevent memory leak
  ath9k: release allocated buffer if timed out
  ath9k_htc: release allocated buffer if timed out
  tracing: Have error path in predicate_parse() free its allocated memory
  drm/amdgpu: fix multiple memory leaks in acp_hw_init
  iio: imu: adis16400: fix memory leak
  media: rc: prevent memory leak in cx23888_ir_probe
  crypto: ccp - Release all allocated memory if sha type is invalid
  ANDROID: GKI: kernel: tick-sched: Move wake callback registration code

 Conflicts:
	Documentation/devicetree/bindings
	Documentation/devicetree/bindings/iio/multiplexer/io-channel-mux.txt
	drivers/clk/clk.c
	drivers/hwtracing/coresight/coresight-tmc-etf.c
	drivers/mmc/host/sdhci-msm.c
	drivers/power/supply/power_supply_sysfs.c
	include/linux/power_supply.h
	include/linux/sched.h
	kernel/signal.c
	net/qrtr/qrtr.c

Change-Id: I0d8f44f054a9a56bb292460260cb3062be9e08ed
Signed-off-by: Srinivasarao P <spathi@codeaurora.org>
This commit is contained in:
Srinivasarao P
2020-10-16 11:06:12 +05:30
759 changed files with 12572 additions and 10821 deletions

View File

@@ -1559,7 +1559,8 @@ What: /sys/bus/iio/devices/iio:deviceX/in_concentrationX_voc_raw
KernelVersion: 4.3 KernelVersion: 4.3
Contact: linux-iio@vger.kernel.org Contact: linux-iio@vger.kernel.org
Description: Description:
Raw (unscaled no offset etc.) percentage reading of a substance. Raw (unscaled no offset etc.) reading of a substance. Units
after application of scale and offset are percents.
What: /sys/bus/iio/devices/iio:deviceX/in_resistance_raw What: /sys/bus/iio/devices/iio:deviceX/in_resistance_raw
What: /sys/bus/iio/devices/iio:deviceX/in_resistanceX_raw What: /sys/bus/iio/devices/iio:deviceX/in_resistanceX_raw

View File

@@ -494,10 +494,14 @@
cut the overhead, others just disable the usage. So cut the overhead, others just disable the usage. So
only cgroup_disable=memory is actually worthy} only cgroup_disable=memory is actually worthy}
cgroup_no_v1= [KNL] Disable one, multiple, all cgroup controllers in v1 cgroup_no_v1= [KNL] Disable cgroup controllers and named hierarchies in v1
Format: { controller[,controller...] | "all" } Format: { { controller | "all" | "named" }
[,{ controller | "all" | "named" }...] }
Like cgroup_disable, but only applies to cgroup v1; Like cgroup_disable, but only applies to cgroup v1;
the blacklisted controllers remain available in cgroup2. the blacklisted controllers remain available in cgroup2.
"all" blacklists all controllers and "named" disables
named mounts. Specifying both "all" and "named" disables
all v1 hierarchies.
cgroup.memory= [KNL] Pass options to the cgroup memory controller. cgroup.memory= [KNL] Pass options to the cgroup memory controller.
Format: <string> Format: <string>

View File

@@ -93,13 +93,15 @@ The Amiga protection flags RWEDRWEDHSPARWED are handled as follows:
- R maps to r for user, group and others. On directories, R implies x. - R maps to r for user, group and others. On directories, R implies x.
- If both W and D are allowed, w will be set. - W maps to w.
- E maps to x. - E maps to x.
- H and P are always retained and ignored under Linux. - D is ignored.
- A is always reset when a file is written to. - H, S and P are always retained and ignored under Linux.
- A is cleared when a file is written to.
User id and group id will be used unless set[gu]id are given as mount User id and group id will be used unless set[gu]id are given as mount
options. Since most of the Amiga file systems are single user systems options. Since most of the Amiga file systems are single user systems
@@ -111,11 +113,13 @@ Linux -> Amiga:
The Linux rwxrwxrwx file mode is handled as follows: The Linux rwxrwxrwx file mode is handled as follows:
- r permission will set R for user, group and others. - r permission will allow R for user, group and others.
- w permission will set W and D for user, group and others. - w permission will allow W for user, group and others.
- x permission of the user will set E for plain files. - x permission of the user will allow E for plain files.
- D will be allowed for user, group and others.
- All other flags (suid, sgid, ...) are ignored and will - All other flags (suid, sgid, ...) are ignored and will
not be retained. not be retained.

View File

@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
VERSION = 4 VERSION = 4
PATCHLEVEL = 19 PATCHLEVEL = 19
SUBLEVEL = 136 SUBLEVEL = 146
EXTRAVERSION = EXTRAVERSION =
NAME = "People's Front" NAME = "People's Front"
@@ -761,9 +761,18 @@ KBUILD_CFLAGS += -fomit-frame-pointer
endif endif
endif endif
# Initialize all stack variables with a pattern, if desired. # Initialize all stack variables with a 0xAA pattern.
ifdef CONFIG_INIT_STACK_ALL ifdef CONFIG_INIT_STACK_ALL_PATTERN
KBUILD_CFLAGS += -ftrivial-auto-var-init=pattern KBUILD_CFLAGS += -ftrivial-auto-var-init=pattern
endif
# Initialize all stack variables with a zero value.
ifdef CONFIG_INIT_STACK_ALL_ZERO
# Future support for zero initialization is still being debated, see
# https://bugs.llvm.org/show_bug.cgi?id=45497. These flags are subject to being
# renamed or dropped.
KBUILD_CFLAGS += -ftrivial-auto-var-init=zero
KBUILD_CFLAGS += -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang
endif endif
KBUILD_CFLAGS += $(call cc-option, -fno-var-tracking-assignments) KBUILD_CFLAGS += $(call cc-option, -fno-var-tracking-assignments)

File diff suppressed because it is too large Load Diff

View File

@@ -1571,6 +1571,7 @@
set_page_dirty_lock set_page_dirty_lock
sg_alloc_table_from_pages sg_alloc_table_from_pages
sysfs_remove_files sysfs_remove_files
__tracepoint_gpu_mem_total
unmapped_area_topdown unmapped_area_topdown
unregister_shrinker unregister_shrinker
vm_insert_page vm_insert_page
@@ -1910,6 +1911,7 @@
cpuidle_unregister_driver cpuidle_unregister_driver
cpu_pm_enter cpu_pm_enter
cpu_pm_exit cpu_pm_exit
get_next_event_cpu
param_get_bool param_get_bool
param_get_uint param_get_uint
pending_ipi pending_ipi
@@ -2691,6 +2693,7 @@
__usb_create_hcd __usb_create_hcd
usb_disabled usb_disabled
usb_hcd_is_primary_hcd usb_hcd_is_primary_hcd
usb_hcd_platform_shutdown
usb_put_hcd usb_put_hcd
usb_remove_hcd usb_remove_hcd
xhci_gen_setup xhci_gen_setup

View File

@@ -507,10 +507,10 @@ extern inline void writeq(u64 b, volatile void __iomem *addr)
} }
#endif #endif
#define ioread16be(p) be16_to_cpu(ioread16(p)) #define ioread16be(p) swab16(ioread16(p))
#define ioread32be(p) be32_to_cpu(ioread32(p)) #define ioread32be(p) swab32(ioread32(p))
#define iowrite16be(v,p) iowrite16(cpu_to_be16(v), (p)) #define iowrite16be(v,p) iowrite16(swab16(v), (p))
#define iowrite32be(v,p) iowrite32(cpu_to_be32(v), (p)) #define iowrite32be(v,p) iowrite32(swab32(v), (p))
#define inb_p inb #define inb_p inb
#define inw_p inw #define inw_p inw

View File

@@ -83,6 +83,8 @@
arcpct: pct { arcpct: pct {
compatible = "snps,archs-pct"; compatible = "snps,archs-pct";
interrupt-parent = <&cpu_intc>;
interrupts = <20>;
}; };
/* TIMER0 with interrupt for clockevent */ /* TIMER0 with interrupt for clockevent */
@@ -173,7 +175,7 @@
reg = <0x8000 0x2000>; reg = <0x8000 0x2000>;
interrupts = <10>; interrupts = <10>;
interrupt-names = "macirq"; interrupt-names = "macirq";
phy-mode = "rgmii"; phy-mode = "rgmii-id";
snps,pbl = <32>; snps,pbl = <32>;
snps,multicast-filter-bins = <256>; snps,multicast-filter-bins = <256>;
clocks = <&gmacclk>; clocks = <&gmacclk>;
@@ -191,7 +193,7 @@
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
compatible = "snps,dwmac-mdio"; compatible = "snps,dwmac-mdio";
phy0: ethernet-phy@0 { phy0: ethernet-phy@0 { /* Micrel KSZ9031 */
reg = <0>; reg = <0>;
ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;

View File

@@ -43,7 +43,6 @@
#define CTOP_AUX_DPC (CTOP_AUX_BASE + 0x02C) #define CTOP_AUX_DPC (CTOP_AUX_BASE + 0x02C)
#define CTOP_AUX_LPC (CTOP_AUX_BASE + 0x030) #define CTOP_AUX_LPC (CTOP_AUX_BASE + 0x030)
#define CTOP_AUX_EFLAGS (CTOP_AUX_BASE + 0x080) #define CTOP_AUX_EFLAGS (CTOP_AUX_BASE + 0x080)
#define CTOP_AUX_IACK (CTOP_AUX_BASE + 0x088)
#define CTOP_AUX_GPA1 (CTOP_AUX_BASE + 0x08C) #define CTOP_AUX_GPA1 (CTOP_AUX_BASE + 0x08C)
#define CTOP_AUX_UDMC (CTOP_AUX_BASE + 0x300) #define CTOP_AUX_UDMC (CTOP_AUX_BASE + 0x300)

View File

@@ -217,7 +217,7 @@
}; };
qspi: spi@27200 { qspi: spi@27200 {
compatible = "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi"; compatible = "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi";
reg = <0x027200 0x184>, reg = <0x027200 0x184>,
<0x027000 0x124>, <0x027000 0x124>,
<0x11c408 0x004>, <0x11c408 0x004>,

View File

@@ -274,7 +274,7 @@
}; };
qspi: spi@27200 { qspi: spi@27200 {
compatible = "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi"; compatible = "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi";
reg = <0x027200 0x184>, reg = <0x027200 0x184>,
<0x027000 0x124>, <0x027000 0x124>,
<0x11c408 0x004>, <0x11c408 0x004>,

View File

@@ -445,7 +445,7 @@
}; };
spi@18029200 { spi@18029200 {
compatible = "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi"; compatible = "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi";
reg = <0x18029200 0x184>, reg = <0x18029200 0x184>,
<0x18029000 0x124>, <0x18029000 0x124>,
<0x1811b408 0x004>, <0x1811b408 0x004>,

View File

@@ -55,6 +55,8 @@
&mcbsp2 { &mcbsp2 {
status = "okay"; status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&mcbsp2_pins>;
}; };
&charger { &charger {

View File

@@ -84,6 +84,8 @@
}; };
&mcbsp2 { &mcbsp2 {
pinctrl-names = "default";
pinctrl-0 = <&mcbsp2_pins>;
status = "okay"; status = "okay";
}; };

View File

@@ -168,7 +168,7 @@
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
reg = <0x0 0x1550000 0x0 0x10000>, reg = <0x0 0x1550000 0x0 0x10000>,
<0x0 0x40000000 0x0 0x40000000>; <0x0 0x40000000 0x0 0x20000000>;
reg-names = "QuadSPI", "QuadSPI-memory"; reg-names = "QuadSPI", "QuadSPI-memory";
interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
clock-names = "qspi_en", "qspi"; clock-names = "qspi_en", "qspi";
@@ -609,7 +609,7 @@
fsl,tmr-prsc = <2>; fsl,tmr-prsc = <2>;
fsl,tmr-add = <0xaaaaaaab>; fsl,tmr-add = <0xaaaaaaab>;
fsl,tmr-fiper1 = <999999995>; fsl,tmr-fiper1 = <999999995>;
fsl,tmr-fiper2 = <99990>; fsl,tmr-fiper2 = <999999995>;
fsl,max-adj = <499999999>; fsl,max-adj = <499999999>;
}; };

View File

@@ -339,7 +339,7 @@
reg = <0x20>; reg = <0x20>;
remote = <&vin1>; remote = <&vin1>;
port { ports {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
@@ -399,7 +399,7 @@
interrupts = <2 IRQ_TYPE_LEVEL_LOW>; interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
default-input = <0>; default-input = <0>;
port { ports {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@@ -791,7 +791,7 @@
timer3: timer3@ffd00100 { timer3: timer3@ffd00100 {
compatible = "snps,dw-apb-timer"; compatible = "snps,dw-apb-timer";
interrupts = <0 118 IRQ_TYPE_LEVEL_HIGH>; interrupts = <0 118 IRQ_TYPE_LEVEL_HIGH>;
reg = <0xffd01000 0x100>; reg = <0xffd00100 0x100>;
clocks = <&l4_sys_free_clk>; clocks = <&l4_sys_free_clk>;
clock-names = "timer"; clock-names = "timer";
}; };

View File

@@ -532,7 +532,7 @@
}; };
ocotp: ocotp@400a5000 { ocotp: ocotp@400a5000 {
compatible = "fsl,vf610-ocotp"; compatible = "fsl,vf610-ocotp", "syscon";
reg = <0x400a5000 0x1000>; reg = <0x400a5000 0x1000>;
clocks = <&clks VF610_CLK_OCOTP>; clocks = <&clks VF610_CLK_OCOTP>;
}; };

View File

@@ -234,7 +234,7 @@ int __kvm_arm_vcpu_set_events(struct kvm_vcpu *vcpu,
#define KVM_ARCH_WANT_MMU_NOTIFIER #define KVM_ARCH_WANT_MMU_NOTIFIER
int kvm_unmap_hva_range(struct kvm *kvm, int kvm_unmap_hva_range(struct kvm *kvm,
unsigned long start, unsigned long end); unsigned long start, unsigned long end, bool blockable);
void kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte); void kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte);
unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu); unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu);

View File

@@ -16,6 +16,8 @@
#ifndef _ASM_ARM_PERCPU_H_ #ifndef _ASM_ARM_PERCPU_H_
#define _ASM_ARM_PERCPU_H_ #define _ASM_ARM_PERCPU_H_
#include <asm/thread_info.h>
/* /*
* Same as asm-generic/percpu.h, except that we store the per cpu offset * Same as asm-generic/percpu.h, except that we store the per cpu offset
* in the TPIDRPRW. TPIDRPRW only exists on V6K and V7 * in the TPIDRPRW. TPIDRPRW only exists on V6K and V7

View File

@@ -688,6 +688,12 @@ static void disable_single_step(struct perf_event *bp)
arch_install_hw_breakpoint(bp); arch_install_hw_breakpoint(bp);
} }
static int watchpoint_fault_on_uaccess(struct pt_regs *regs,
struct arch_hw_breakpoint *info)
{
return !user_mode(regs) && info->ctrl.privilege == ARM_BREAKPOINT_USER;
}
static void watchpoint_handler(unsigned long addr, unsigned int fsr, static void watchpoint_handler(unsigned long addr, unsigned int fsr,
struct pt_regs *regs) struct pt_regs *regs)
{ {
@@ -747,16 +753,27 @@ static void watchpoint_handler(unsigned long addr, unsigned int fsr,
} }
pr_debug("watchpoint fired: address = 0x%x\n", info->trigger); pr_debug("watchpoint fired: address = 0x%x\n", info->trigger);
/*
* If we triggered a user watchpoint from a uaccess routine,
* then handle the stepping ourselves since userspace really
* can't help us with this.
*/
if (watchpoint_fault_on_uaccess(regs, info))
goto step;
perf_bp_event(wp, regs); perf_bp_event(wp, regs);
/* /*
* If no overflow handler is present, insert a temporary * Defer stepping to the overflow handler if one is installed.
* mismatch breakpoint so we can single-step over the * Otherwise, insert a temporary mismatch breakpoint so that
* watchpoint trigger. * we can single-step over the watchpoint trigger.
*/ */
if (is_default_overflow_handler(wp)) if (!is_default_overflow_handler(wp))
enable_single_step(wp, instruction_pointer(regs)); goto unlock;
step:
enable_single_step(wp, instruction_pointer(regs));
unlock: unlock:
rcu_read_unlock(); rcu_read_unlock();
} }

View File

@@ -21,6 +21,19 @@
* A simple function epilogue looks like this: * A simple function epilogue looks like this:
* ldm sp, {fp, sp, pc} * ldm sp, {fp, sp, pc}
* *
* When compiled with clang, pc and sp are not pushed. A simple function
* prologue looks like this when built with clang:
*
* stmdb {..., fp, lr}
* add fp, sp, #x
* sub sp, sp, #y
*
* A simple function epilogue looks like this when built with clang:
*
* sub sp, fp, #x
* ldm {..., fp, pc}
*
*
* Note that with framepointer enabled, even the leaf functions have the same * Note that with framepointer enabled, even the leaf functions have the same
* prologue and epilogue, therefore we can ignore the LR value in this case. * prologue and epilogue, therefore we can ignore the LR value in this case.
*/ */
@@ -33,6 +46,16 @@ int notrace unwind_frame(struct stackframe *frame)
low = frame->sp; low = frame->sp;
high = ALIGN(low, THREAD_SIZE); high = ALIGN(low, THREAD_SIZE);
#ifdef CONFIG_CC_IS_CLANG
/* check current frame pointer is within bounds */
if (fp < low + 4 || fp > high - 4)
return -EINVAL;
frame->sp = frame->fp;
frame->fp = *(unsigned long *)(fp);
frame->pc = frame->lr;
frame->lr = *(unsigned long *)(fp + 4);
#else
/* check current frame pointer is within bounds */ /* check current frame pointer is within bounds */
if (fp < low + 12 || fp > high - 4) if (fp < low + 12 || fp > high - 4)
return -EINVAL; return -EINVAL;
@@ -41,6 +64,7 @@ int notrace unwind_frame(struct stackframe *frame)
frame->fp = *(unsigned long *)(fp - 12); frame->fp = *(unsigned long *)(fp - 12);
frame->sp = *(unsigned long *)(fp - 8); frame->sp = *(unsigned long *)(fp - 8);
frame->pc = *(unsigned long *)(fp - 4); frame->pc = *(unsigned long *)(fp - 4);
#endif
return 0; return 0;
} }

View File

@@ -542,13 +542,13 @@ static void __init at91_pm_sram_init(void)
sram_pool = gen_pool_get(&pdev->dev, NULL); sram_pool = gen_pool_get(&pdev->dev, NULL);
if (!sram_pool) { if (!sram_pool) {
pr_warn("%s: sram pool unavailable!\n", __func__); pr_warn("%s: sram pool unavailable!\n", __func__);
return; goto out_put_device;
} }
sram_base = gen_pool_alloc(sram_pool, at91_pm_suspend_in_sram_sz); sram_base = gen_pool_alloc(sram_pool, at91_pm_suspend_in_sram_sz);
if (!sram_base) { if (!sram_base) {
pr_warn("%s: unable to alloc sram!\n", __func__); pr_warn("%s: unable to alloc sram!\n", __func__);
return; goto out_put_device;
} }
sram_pbase = gen_pool_virt_to_phys(sram_pool, sram_base); sram_pbase = gen_pool_virt_to_phys(sram_pool, sram_base);
@@ -556,12 +556,17 @@ static void __init at91_pm_sram_init(void)
at91_pm_suspend_in_sram_sz, false); at91_pm_suspend_in_sram_sz, false);
if (!at91_suspend_sram_fn) { if (!at91_suspend_sram_fn) {
pr_warn("SRAM: Could not map\n"); pr_warn("SRAM: Could not map\n");
return; goto out_put_device;
} }
/* Copy the pm suspend handler to SRAM */ /* Copy the pm suspend handler to SRAM */
at91_suspend_sram_fn = fncpy(at91_suspend_sram_fn, at91_suspend_sram_fn = fncpy(at91_suspend_sram_fn,
&at91_pm_suspend_in_sram, at91_pm_suspend_in_sram_sz); &at91_pm_suspend_in_sram, at91_pm_suspend_in_sram_sz);
return;
out_put_device:
put_device(&pdev->dev);
return;
} }
static bool __init at91_is_pm_mode_active(int pm_mode) static bool __init at91_is_pm_mode_active(int pm_mode)

View File

@@ -60,14 +60,14 @@ static int socfpga_setup_ocram_self_refresh(void)
if (!ocram_pool) { if (!ocram_pool) {
pr_warn("%s: ocram pool unavailable!\n", __func__); pr_warn("%s: ocram pool unavailable!\n", __func__);
ret = -ENODEV; ret = -ENODEV;
goto put_node; goto put_device;
} }
ocram_base = gen_pool_alloc(ocram_pool, socfpga_sdram_self_refresh_sz); ocram_base = gen_pool_alloc(ocram_pool, socfpga_sdram_self_refresh_sz);
if (!ocram_base) { if (!ocram_base) {
pr_warn("%s: unable to alloc ocram!\n", __func__); pr_warn("%s: unable to alloc ocram!\n", __func__);
ret = -ENOMEM; ret = -ENOMEM;
goto put_node; goto put_device;
} }
ocram_pbase = gen_pool_virt_to_phys(ocram_pool, ocram_base); ocram_pbase = gen_pool_virt_to_phys(ocram_pool, ocram_base);
@@ -78,7 +78,7 @@ static int socfpga_setup_ocram_self_refresh(void)
if (!suspend_ocram_base) { if (!suspend_ocram_base) {
pr_warn("%s: __arm_ioremap_exec failed!\n", __func__); pr_warn("%s: __arm_ioremap_exec failed!\n", __func__);
ret = -ENOMEM; ret = -ENOMEM;
goto put_node; goto put_device;
} }
/* Copy the code that puts DDR in self refresh to ocram */ /* Copy the code that puts DDR in self refresh to ocram */
@@ -92,6 +92,8 @@ static int socfpga_setup_ocram_self_refresh(void)
if (!socfpga_sdram_self_refresh_in_ocram) if (!socfpga_sdram_self_refresh_in_ocram)
ret = -EFAULT; ret = -EFAULT;
put_device:
put_device(&pdev->dev);
put_node: put_node:
of_node_put(np); of_node_put(np);

View File

@@ -745,7 +745,7 @@
}; };
qspi: spi@66470200 { qspi: spi@66470200 {
compatible = "brcm,spi-bcm-qspi", "brcm,spi-ns2-qspi"; compatible = "brcm,spi-ns2-qspi", "brcm,spi-bcm-qspi";
reg = <0x66470200 0x184>, reg = <0x66470200 0x184>,
<0x66470000 0x124>, <0x66470000 0x124>,
<0x67017408 0x004>, <0x67017408 0x004>,

View File

@@ -152,6 +152,7 @@
regulator-min-microvolt = <700000>; regulator-min-microvolt = <700000>;
regulator-max-microvolt = <1150000>; regulator-max-microvolt = <1150000>;
regulator-enable-ramp-delay = <125>; regulator-enable-ramp-delay = <125>;
regulator-always-on;
}; };
ldo8_reg: LDO8 { ldo8_reg: LDO8 {

View File

@@ -530,6 +530,17 @@
status = "ok"; status = "ok";
compatible = "adi,adv7533"; compatible = "adi,adv7533";
reg = <0x39>; reg = <0x39>;
adi,dsi-lanes = <4>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
};
port@1 {
reg = <1>;
};
};
}; };
}; };

View File

@@ -515,7 +515,7 @@
reg = <0x39>; reg = <0x39>;
interrupt-parent = <&gpio1>; interrupt-parent = <&gpio1>;
interrupts = <1 2>; interrupts = <1 2>;
pd-gpio = <&gpio0 4 0>; pd-gpios = <&gpio0 4 0>;
adi,dsi-lanes = <4>; adi,dsi-lanes = <4>;
#sound-dai-cells = <0>; #sound-dai-cells = <0>;

View File

@@ -19,6 +19,12 @@
model = "Globalscale Marvell ESPRESSOBin Board"; model = "Globalscale Marvell ESPRESSOBin Board";
compatible = "globalscale,espressobin", "marvell,armada3720", "marvell,armada3710"; compatible = "globalscale,espressobin", "marvell,armada3720", "marvell,armada3710";
aliases {
ethernet0 = &eth0;
serial0 = &uart0;
serial1 = &uart1;
};
chosen { chosen {
stdout-path = "serial0:115200n8"; stdout-path = "serial0:115200n8";
}; };

View File

@@ -516,7 +516,7 @@
pins = "gpio63", "gpio64", "gpio65", "gpio66", pins = "gpio63", "gpio64", "gpio65", "gpio66",
"gpio67", "gpio68"; "gpio67", "gpio68";
drive-strength = <8>; drive-strength = <8>;
bias-pull-none; bias-disable;
}; };
}; };
cdc_pdm_lines_sus: pdm_lines_off { cdc_pdm_lines_sus: pdm_lines_off {
@@ -529,7 +529,7 @@
pins = "gpio63", "gpio64", "gpio65", "gpio66", pins = "gpio63", "gpio64", "gpio65", "gpio66",
"gpio67", "gpio68"; "gpio67", "gpio68";
drive-strength = <2>; drive-strength = <2>;
bias-disable; bias-pull-down;
}; };
}; };
}; };
@@ -545,7 +545,7 @@
pins = "gpio113", "gpio114", "gpio115", pins = "gpio113", "gpio114", "gpio115",
"gpio116"; "gpio116";
drive-strength = <8>; drive-strength = <8>;
bias-pull-none; bias-disable;
}; };
}; };
@@ -573,7 +573,7 @@
pinconf { pinconf {
pins = "gpio110"; pins = "gpio110";
drive-strength = <8>; drive-strength = <8>;
bias-pull-none; bias-disable;
}; };
}; };
@@ -599,7 +599,7 @@
pinconf { pinconf {
pins = "gpio116"; pins = "gpio116";
drive-strength = <8>; drive-strength = <8>;
bias-pull-none; bias-disable;
}; };
}; };
ext_mclk_tlmm_lines_sus: mclk_lines_off { ext_mclk_tlmm_lines_sus: mclk_lines_off {
@@ -627,7 +627,7 @@
pins = "gpio112", "gpio117", "gpio118", pins = "gpio112", "gpio117", "gpio118",
"gpio119"; "gpio119";
drive-strength = <8>; drive-strength = <8>;
bias-pull-none; bias-disable;
}; };
}; };
ext_sec_tlmm_lines_sus: tlmm_lines_off { ext_sec_tlmm_lines_sus: tlmm_lines_off {

View File

@@ -159,7 +159,7 @@
pinctrl-0 = <&rgmii_pins>; pinctrl-0 = <&rgmii_pins>;
snps,reset-active-low; snps,reset-active-low;
snps,reset-delays-us = <0 10000 50000>; snps,reset-delays-us = <0 10000 50000>;
snps,reset-gpio = <&gpio3 RK_PB3 GPIO_ACTIVE_HIGH>; snps,reset-gpio = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>;
tx_delay = <0x10>; tx_delay = <0x10>;
rx_delay = <0x10>; rx_delay = <0x10>;
status = "okay"; status = "okay";

View File

@@ -101,7 +101,7 @@
vcc5v0_host: vcc5v0-host-regulator { vcc5v0_host: vcc5v0-host-regulator {
compatible = "regulator-fixed"; compatible = "regulator-fixed";
gpio = <&gpio4 RK_PA3 GPIO_ACTIVE_HIGH>; gpio = <&gpio4 RK_PA3 GPIO_ACTIVE_LOW>;
enable-active-low; enable-active-low;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&vcc5v0_host_en>; pinctrl-0 = <&vcc5v0_host_en>;
@@ -156,7 +156,7 @@
phy-mode = "rgmii"; phy-mode = "rgmii";
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&rgmii_pins>; pinctrl-0 = <&rgmii_pins>;
snps,reset-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>; snps,reset-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>;
snps,reset-active-low; snps,reset-active-low;
snps,reset-delays-us = <0 10000 50000>; snps,reset-delays-us = <0 10000 50000>;
tx_delay = <0x10>; tx_delay = <0x10>;

View File

@@ -492,7 +492,7 @@ CONFIG_FORTIFY_SOURCE=y
CONFIG_STATIC_USERMODEHELPER=y CONFIG_STATIC_USERMODEHELPER=y
CONFIG_STATIC_USERMODEHELPER_PATH="" CONFIG_STATIC_USERMODEHELPER_PATH=""
CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX=y
CONFIG_INIT_STACK_ALL=y CONFIG_INIT_STACK_ALL_ZERO=y
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
CONFIG_CRYPTO_ADIANTUM=y CONFIG_CRYPTO_ADIANTUM=y
CONFIG_CRYPTO_LZ4=y CONFIG_CRYPTO_LZ4=y

View File

@@ -30,16 +30,17 @@ static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl)
{ {
__uint128_t tmp; __uint128_t tmp;
u64 sum; u64 sum;
int n = ihl; /* we want it signed */
tmp = *(const __uint128_t *)iph; tmp = *(const __uint128_t *)iph;
iph += 16; iph += 16;
ihl -= 4; n -= 4;
tmp += ((tmp >> 64) | (tmp << 64)); tmp += ((tmp >> 64) | (tmp << 64));
sum = tmp >> 64; sum = tmp >> 64;
do { do {
sum += *(const u32 *)iph; sum += *(const u32 *)iph;
iph += 4; iph += 4;
} while (--ihl); } while (--n > 0);
sum += ((sum >> 32) | (sum << 32)); sum += ((sum >> 32) | (sum << 32));
return csum_fold((__force u32)(sum >> 32)); return csum_fold((__force u32)(sum >> 32));

View File

@@ -83,11 +83,12 @@
* IMO: Override CPSR.I and enable signaling with VI * IMO: Override CPSR.I and enable signaling with VI
* FMO: Override CPSR.F and enable signaling with VF * FMO: Override CPSR.F and enable signaling with VF
* SWIO: Turn set/way invalidates into set/way clean+invalidate * SWIO: Turn set/way invalidates into set/way clean+invalidate
* PTW: Take a stage2 fault if a stage1 walk steps in device memory
*/ */
#define HCR_GUEST_FLAGS (HCR_TSC | HCR_TSW | HCR_TWE | HCR_TWI | HCR_VM | \ #define HCR_GUEST_FLAGS (HCR_TSC | HCR_TSW | HCR_TWE | HCR_TWI | HCR_VM | \
HCR_TVM | HCR_BSU_IS | HCR_FB | HCR_TAC | \ HCR_TVM | HCR_BSU_IS | HCR_FB | HCR_TAC | \
HCR_AMO | HCR_SWIO | HCR_TIDCP | HCR_RW | HCR_TLOR | \ HCR_AMO | HCR_SWIO | HCR_TIDCP | HCR_RW | HCR_TLOR | \
HCR_FMO | HCR_IMO) HCR_FMO | HCR_IMO | HCR_PTW )
#define HCR_VIRT_EXCP_MASK (HCR_VSE | HCR_VI | HCR_VF) #define HCR_VIRT_EXCP_MASK (HCR_VSE | HCR_VI | HCR_VF)
#define HCR_HOST_NVHE_FLAGS (HCR_RW | HCR_API | HCR_APK) #define HCR_HOST_NVHE_FLAGS (HCR_RW | HCR_API | HCR_APK)
#define HCR_HOST_VHE_FLAGS (HCR_RW | HCR_TGE | HCR_E2H) #define HCR_HOST_VHE_FLAGS (HCR_RW | HCR_TGE | HCR_E2H)

View File

@@ -87,6 +87,34 @@ extern u32 __init_stage2_translation(void);
*__hyp_this_cpu_ptr(sym); \ *__hyp_this_cpu_ptr(sym); \
}) })
#define __KVM_EXTABLE(from, to) \
" .pushsection __kvm_ex_table, \"a\"\n" \
" .align 3\n" \
" .long (" #from " - .), (" #to " - .)\n" \
" .popsection\n"
#define __kvm_at(at_op, addr) \
( { \
int __kvm_at_err = 0; \
u64 spsr, elr; \
asm volatile( \
" mrs %1, spsr_el2\n" \
" mrs %2, elr_el2\n" \
"1: at "at_op", %3\n" \
" isb\n" \
" b 9f\n" \
"2: msr spsr_el2, %1\n" \
" msr elr_el2, %2\n" \
" mov %w0, %4\n" \
"9:\n" \
__KVM_EXTABLE(1b, 2b) \
: "+r" (__kvm_at_err), "=&r" (spsr), "=&r" (elr) \
: "r" (addr), "i" (-EFAULT)); \
__kvm_at_err; \
} )
#else /* __ASSEMBLY__ */ #else /* __ASSEMBLY__ */
.macro hyp_adr_this_cpu reg, sym, tmp .macro hyp_adr_this_cpu reg, sym, tmp
@@ -111,6 +139,21 @@ extern u32 __init_stage2_translation(void);
kern_hyp_va \vcpu kern_hyp_va \vcpu
.endm .endm
/*
* KVM extable for unexpected exceptions.
* In the same format _asm_extable, but output to a different section so that
* it can be mapped to EL2. The KVM version is not sorted. The caller must
* ensure:
* x18 has the hypervisor value to allow any Shadow-Call-Stack instrumented
* code to write to it, and that SPSR_EL2 and ELR_EL2 are restored by the fixup.
*/
.macro _kvm_extable, from, to
.pushsection __kvm_ex_table, "a"
.align 3
.long (\from - .), (\to - .)
.popsection
.endm
#endif #endif
#endif /* __ARM_KVM_ASM_H__ */ #endif /* __ARM_KVM_ASM_H__ */

View File

@@ -370,7 +370,7 @@ int __kvm_arm_vcpu_set_events(struct kvm_vcpu *vcpu,
#define KVM_ARCH_WANT_MMU_NOTIFIER #define KVM_ARCH_WANT_MMU_NOTIFIER
int kvm_unmap_hva_range(struct kvm *kvm, int kvm_unmap_hva_range(struct kvm *kvm,
unsigned long start, unsigned long end); unsigned long start, unsigned long end, bool blockable);
void kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte); void kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte);
int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end); int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end);
int kvm_test_age_hva(struct kvm *kvm, unsigned long hva); int kvm_test_age_hva(struct kvm *kvm, unsigned long hva);

View File

@@ -24,6 +24,13 @@ ENTRY(_text)
jiffies = jiffies_64; jiffies = jiffies_64;
#define HYPERVISOR_EXTABLE \
. = ALIGN(SZ_8); \
__start___kvm_ex_table = .; \
*(__kvm_ex_table) \
__stop___kvm_ex_table = .;
#define HYPERVISOR_TEXT \ #define HYPERVISOR_TEXT \
/* \ /* \
* Align to 4 KB so that \ * Align to 4 KB so that \
@@ -39,6 +46,7 @@ jiffies = jiffies_64;
__hyp_idmap_text_end = .; \ __hyp_idmap_text_end = .; \
__hyp_text_start = .; \ __hyp_text_start = .; \
*(.hyp.text) \ *(.hyp.text) \
HYPERVISOR_EXTABLE \
__hyp_text_end = .; __hyp_text_end = .;
#define IDMAP_TEXT \ #define IDMAP_TEXT \

View File

@@ -17,6 +17,7 @@
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/alternative.h>
#include <asm/asm-offsets.h> #include <asm/asm-offsets.h>
#include <asm/assembler.h> #include <asm/assembler.h>
#include <asm/fpsimdmacros.h> #include <asm/fpsimdmacros.h>
@@ -69,6 +70,20 @@ ENTRY(__guest_enter)
// Store the host regs // Store the host regs
save_callee_saved_regs x1 save_callee_saved_regs x1
// Now the host state is stored if we have a pending RAS SError it must
// affect the host. If any asynchronous exception is pending we defer
// the guest entry. The DSB isn't necessary before v8.2 as any SError
// would be fatal.
alternative_if ARM64_HAS_RAS_EXTN
dsb nshst
isb
alternative_else_nop_endif
mrs x1, isr_el1
cbz x1, 1f
mov x0, #ARM_EXCEPTION_IRQ
ret
1:
add x29, x0, #VCPU_CONTEXT add x29, x0, #VCPU_CONTEXT
// Restore guest regs x0-x17 // Restore guest regs x0-x17
@@ -151,18 +166,22 @@ alternative_endif
// This is our single instruction exception window. A pending // This is our single instruction exception window. A pending
// SError is guaranteed to occur at the earliest when we unmask // SError is guaranteed to occur at the earliest when we unmask
// it, and at the latest just after the ISB. // it, and at the latest just after the ISB.
.global abort_guest_exit_start
abort_guest_exit_start: abort_guest_exit_start:
isb isb
.global abort_guest_exit_end
abort_guest_exit_end: abort_guest_exit_end:
msr daifset, #4 // Mask aborts
ret
// If the exception took place, restore the EL1 exception _kvm_extable abort_guest_exit_start, 9997f
// context so that we can report some information. _kvm_extable abort_guest_exit_end, 9997f
// Merge the exception code with the SError pending bit. 9997:
tbz x0, #ARM_EXIT_WITH_SERROR_BIT, 1f msr daifset, #4 // Mask aborts
mov x0, #(1 << ARM_EXIT_WITH_SERROR_BIT)
// restore the EL1 exception context so that we can report some
// information. Merge the exception code with the SError pending bit.
msr elr_el2, x2 msr elr_el2, x2
msr esr_el2, x3 msr esr_el2, x3
msr spsr_el2, x4 msr spsr_el2, x4

View File

@@ -26,6 +26,30 @@
#include <asm/kvm_mmu.h> #include <asm/kvm_mmu.h>
#include <asm/mmu.h> #include <asm/mmu.h>
.macro save_caller_saved_regs_vect
/* x0 and x1 were saved in the vector entry */
stp x2, x3, [sp, #-16]!
stp x4, x5, [sp, #-16]!
stp x6, x7, [sp, #-16]!
stp x8, x9, [sp, #-16]!
stp x10, x11, [sp, #-16]!
stp x12, x13, [sp, #-16]!
stp x14, x15, [sp, #-16]!
stp x16, x17, [sp, #-16]!
.endm
.macro restore_caller_saved_regs_vect
ldp x16, x17, [sp], #16
ldp x14, x15, [sp], #16
ldp x12, x13, [sp], #16
ldp x10, x11, [sp], #16
ldp x8, x9, [sp], #16
ldp x6, x7, [sp], #16
ldp x4, x5, [sp], #16
ldp x2, x3, [sp], #16
ldp x0, x1, [sp], #16
.endm
.text .text
.pushsection .hyp.text, "ax" .pushsection .hyp.text, "ax"
@@ -162,28 +186,24 @@ el1_error:
mov x0, #ARM_EXCEPTION_EL1_SERROR mov x0, #ARM_EXCEPTION_EL1_SERROR
b __guest_exit b __guest_exit
el2_error: el2_sync:
ldp x0, x1, [sp], #16 save_caller_saved_regs_vect
stp x29, x30, [sp, #-16]!
bl kvm_unexpected_el2_exception
ldp x29, x30, [sp], #16
restore_caller_saved_regs_vect
eret
el2_error:
save_caller_saved_regs_vect
stp x29, x30, [sp, #-16]!
bl kvm_unexpected_el2_exception
ldp x29, x30, [sp], #16
restore_caller_saved_regs_vect
/*
* Only two possibilities:
* 1) Either we come from the exit path, having just unmasked
* PSTATE.A: change the return code to an EL2 fault, and
* carry on, as we're already in a sane state to handle it.
* 2) Or we come from anywhere else, and that's a bug: we panic.
*
* For (1), x0 contains the original return code and x1 doesn't
* contain anything meaningful at that stage. We can reuse them
* as temp registers.
* For (2), who cares?
*/
mrs x0, elr_el2
adr x1, abort_guest_exit_start
cmp x0, x1
adr x1, abort_guest_exit_end
ccmp x0, x1, #4, ne
b.ne __hyp_panic
mov x0, #(1 << ARM_EXIT_WITH_SERROR_BIT)
eret eret
ENTRY(__hyp_do_panic) ENTRY(__hyp_do_panic)
@@ -212,7 +232,6 @@ ENDPROC(\label)
invalid_vector el2t_irq_invalid invalid_vector el2t_irq_invalid
invalid_vector el2t_fiq_invalid invalid_vector el2t_fiq_invalid
invalid_vector el2t_error_invalid invalid_vector el2t_error_invalid
invalid_vector el2h_sync_invalid
invalid_vector el2h_irq_invalid invalid_vector el2h_irq_invalid
invalid_vector el2h_fiq_invalid invalid_vector el2h_fiq_invalid
invalid_vector el1_fiq_invalid invalid_vector el1_fiq_invalid
@@ -240,7 +259,7 @@ ENTRY(__kvm_hyp_vector)
invalid_vect el2t_fiq_invalid // FIQ EL2t invalid_vect el2t_fiq_invalid // FIQ EL2t
invalid_vect el2t_error_invalid // Error EL2t invalid_vect el2t_error_invalid // Error EL2t
invalid_vect el2h_sync_invalid // Synchronous EL2h valid_vect el2_sync // Synchronous EL2h
invalid_vect el2h_irq_invalid // IRQ EL2h invalid_vect el2h_irq_invalid // IRQ EL2h
invalid_vect el2h_fiq_invalid // FIQ EL2h invalid_vect el2h_fiq_invalid // FIQ EL2h
valid_vect el2_error // Error EL2h valid_vect el2_error // Error EL2h

View File

@@ -23,6 +23,7 @@
#include <kvm/arm_psci.h> #include <kvm/arm_psci.h>
#include <asm/cpufeature.h> #include <asm/cpufeature.h>
#include <asm/extable.h>
#include <asm/kprobes.h> #include <asm/kprobes.h>
#include <asm/kvm_asm.h> #include <asm/kvm_asm.h>
#include <asm/kvm_emulate.h> #include <asm/kvm_emulate.h>
@@ -34,6 +35,9 @@
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/thread_info.h> #include <asm/thread_info.h>
extern struct exception_table_entry __start___kvm_ex_table;
extern struct exception_table_entry __stop___kvm_ex_table;
/* Check whether the FP regs were dirtied while in the host-side run loop: */ /* Check whether the FP regs were dirtied while in the host-side run loop: */
static bool __hyp_text update_fp_enabled(struct kvm_vcpu *vcpu) static bool __hyp_text update_fp_enabled(struct kvm_vcpu *vcpu)
{ {
@@ -264,10 +268,10 @@ static bool __hyp_text __translate_far_to_hpfar(u64 far, u64 *hpfar)
* saved the guest context yet, and we may return early... * saved the guest context yet, and we may return early...
*/ */
par = read_sysreg(par_el1); par = read_sysreg(par_el1);
asm volatile("at s1e1r, %0" : : "r" (far)); if (!__kvm_at("s1e1r", far))
isb(); tmp = read_sysreg(par_el1);
else
tmp = read_sysreg(par_el1); tmp = 1; /* back to the guest */
write_sysreg(par, par_el1); write_sysreg(par, par_el1);
if (unlikely(tmp & 1)) if (unlikely(tmp & 1))
@@ -626,7 +630,7 @@ static void __hyp_text __hyp_call_panic_nvhe(u64 spsr, u64 elr, u64 par,
* making sure it is a kernel address and not a PC-relative * making sure it is a kernel address and not a PC-relative
* reference. * reference.
*/ */
asm volatile("ldr %0, =__hyp_panic_string" : "=r" (str_va)); asm volatile("ldr %0, =%1" : "=r" (str_va) : "S" (__hyp_panic_string));
__hyp_do_panic(str_va, __hyp_do_panic(str_va,
spsr, elr, spsr, elr,
@@ -663,3 +667,30 @@ void __hyp_text __noreturn hyp_panic(struct kvm_cpu_context *host_ctxt)
unreachable(); unreachable();
} }
asmlinkage void __hyp_text kvm_unexpected_el2_exception(void)
{
unsigned long addr, fixup;
struct kvm_cpu_context *host_ctxt;
struct exception_table_entry *entry, *end;
unsigned long elr_el2 = read_sysreg(elr_el2);
entry = hyp_symbol_addr(__start___kvm_ex_table);
end = hyp_symbol_addr(__stop___kvm_ex_table);
host_ctxt = __hyp_this_cpu_ptr(kvm_host_cpu_state);
while (entry < end) {
addr = (unsigned long)&entry->insn + entry->insn;
fixup = (unsigned long)&entry->fixup + entry->fixup;
if (addr != elr_el2) {
entry++;
continue;
}
write_sysreg(fixup, elr_el2);
return;
}
hyp_panic(host_ctxt);
}

View File

@@ -89,9 +89,9 @@
* coherency though in all cases. And for copyback caches we will need * coherency though in all cases. And for copyback caches we will need
* to push cached data as well. * to push cached data as well.
*/ */
#define CACHE_INIT CACR_CINVA #define CACHE_INIT (CACHE_MODE + CACR_CINVA - CACR_EC)
#define CACHE_INVALIDATE CACR_CINVA #define CACHE_INVALIDATE (CACHE_MODE + CACR_CINVA)
#define CACHE_INVALIDATED CACR_CINVA #define CACHE_INVALIDATED (CACHE_MODE + CACR_CINVA)
#define ACR0_MODE ((CONFIG_RAMBASE & 0xff000000) + \ #define ACR0_MODE ((CONFIG_RAMBASE & 0xff000000) + \
(0x000f0000) + \ (0x000f0000) + \

View File

@@ -183,7 +183,7 @@ static __inline__ void iop_writeb(volatile struct mac_iop *iop, __u16 addr, __u8
static __inline__ void iop_stop(volatile struct mac_iop *iop) static __inline__ void iop_stop(volatile struct mac_iop *iop)
{ {
iop->status_ctrl &= ~IOP_RUN; iop->status_ctrl = IOP_AUTOINC;
} }
static __inline__ void iop_start(volatile struct mac_iop *iop) static __inline__ void iop_start(volatile struct mac_iop *iop)
@@ -191,14 +191,9 @@ static __inline__ void iop_start(volatile struct mac_iop *iop)
iop->status_ctrl = IOP_RUN | IOP_AUTOINC; iop->status_ctrl = IOP_RUN | IOP_AUTOINC;
} }
static __inline__ void iop_bypass(volatile struct mac_iop *iop)
{
iop->status_ctrl |= IOP_BYPASS;
}
static __inline__ void iop_interrupt(volatile struct mac_iop *iop) static __inline__ void iop_interrupt(volatile struct mac_iop *iop)
{ {
iop->status_ctrl |= IOP_IRQ; iop->status_ctrl = IOP_IRQ | IOP_RUN | IOP_AUTOINC;
} }
static int iop_alive(volatile struct mac_iop *iop) static int iop_alive(volatile struct mac_iop *iop)
@@ -244,7 +239,6 @@ void __init iop_preinit(void)
} else { } else {
iop_base[IOP_NUM_SCC] = (struct mac_iop *) SCC_IOP_BASE_QUADRA; iop_base[IOP_NUM_SCC] = (struct mac_iop *) SCC_IOP_BASE_QUADRA;
} }
iop_base[IOP_NUM_SCC]->status_ctrl = 0x87;
iop_scc_present = 1; iop_scc_present = 1;
} else { } else {
iop_base[IOP_NUM_SCC] = NULL; iop_base[IOP_NUM_SCC] = NULL;
@@ -256,7 +250,7 @@ void __init iop_preinit(void)
} else { } else {
iop_base[IOP_NUM_ISM] = (struct mac_iop *) ISM_IOP_BASE_QUADRA; iop_base[IOP_NUM_ISM] = (struct mac_iop *) ISM_IOP_BASE_QUADRA;
} }
iop_base[IOP_NUM_ISM]->status_ctrl = 0; iop_stop(iop_base[IOP_NUM_ISM]);
iop_ism_present = 1; iop_ism_present = 1;
} else { } else {
iop_base[IOP_NUM_ISM] = NULL; iop_base[IOP_NUM_ISM] = NULL;
@@ -416,7 +410,8 @@ static void iop_handle_send(uint iop_num, uint chan)
msg->status = IOP_MSGSTATUS_UNUSED; msg->status = IOP_MSGSTATUS_UNUSED;
msg = msg->next; msg = msg->next;
iop_send_queue[iop_num][chan] = msg; iop_send_queue[iop_num][chan] = msg;
if (msg) iop_do_send(msg); if (msg && iop_readb(iop, IOP_ADDR_SEND_STATE + chan) == IOP_MSG_IDLE)
iop_do_send(msg);
} }
/* /*
@@ -490,16 +485,12 @@ int iop_send_message(uint iop_num, uint chan, void *privdata,
if (!(q = iop_send_queue[iop_num][chan])) { if (!(q = iop_send_queue[iop_num][chan])) {
iop_send_queue[iop_num][chan] = msg; iop_send_queue[iop_num][chan] = msg;
iop_do_send(msg);
} else { } else {
while (q->next) q = q->next; while (q->next) q = q->next;
q->next = msg; q->next = msg;
} }
if (iop_readb(iop_base[iop_num],
IOP_ADDR_SEND_STATE + chan) == IOP_MSG_IDLE) {
iop_do_send(msg);
}
return 0; return 0;
} }

View File

@@ -517,6 +517,7 @@ static int __init dwc3_octeon_device_init(void)
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (res == NULL) { if (res == NULL) {
put_device(&pdev->dev);
dev_err(&pdev->dev, "No memory resources\n"); dev_err(&pdev->dev, "No memory resources\n");
return -ENXIO; return -ENXIO;
} }
@@ -528,8 +529,10 @@ static int __init dwc3_octeon_device_init(void)
* know the difference. * know the difference.
*/ */
base = devm_ioremap_resource(&pdev->dev, res); base = devm_ioremap_resource(&pdev->dev, res);
if (IS_ERR(base)) if (IS_ERR(base)) {
put_device(&pdev->dev);
return PTR_ERR(base); return PTR_ERR(base);
}
mutex_lock(&dwc3_octeon_clocks_mutex); mutex_lock(&dwc3_octeon_clocks_mutex);
dwc3_octeon_clocks_start(&pdev->dev, (u64)base); dwc3_octeon_clocks_start(&pdev->dev, (u64)base);

View File

@@ -936,7 +936,7 @@ enum kvm_mips_fault_result kvm_trap_emul_gva_fault(struct kvm_vcpu *vcpu,
#define KVM_ARCH_WANT_MMU_NOTIFIER #define KVM_ARCH_WANT_MMU_NOTIFIER
int kvm_unmap_hva_range(struct kvm *kvm, int kvm_unmap_hva_range(struct kvm *kvm,
unsigned long start, unsigned long end); unsigned long start, unsigned long end, bool blockable);
void kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte); void kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte);
int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end); int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end);
int kvm_test_age_hva(struct kvm *kvm, unsigned long hva); int kvm_test_age_hva(struct kvm *kvm, unsigned long hva);

View File

@@ -240,6 +240,8 @@ static int bmips_boot_secondary(int cpu, struct task_struct *idle)
*/ */
static void bmips_init_secondary(void) static void bmips_init_secondary(void)
{ {
bmips_cpu_setup();
switch (current_cpu_type()) { switch (current_cpu_type()) {
case CPU_BMIPS4350: case CPU_BMIPS4350:
case CPU_BMIPS4380: case CPU_BMIPS4380:

View File

@@ -20,7 +20,7 @@ static int __init topology_init(void)
for_each_present_cpu(i) { for_each_present_cpu(i) {
struct cpu *c = &per_cpu(cpu_devices, i); struct cpu *c = &per_cpu(cpu_devices, i);
c->hotpluggable = 1; c->hotpluggable = !!i;
ret = register_cpu(c, i); ret = register_cpu(c, i);
if (ret) if (ret)
printk(KERN_WARNING "topology_init: register_cpu %d " printk(KERN_WARNING "topology_init: register_cpu %d "

View File

@@ -512,7 +512,8 @@ static int kvm_unmap_hva_handler(struct kvm *kvm, gfn_t gfn, gfn_t gfn_end,
return 1; return 1;
} }
int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end) int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end,
bool blockable)
{ {
handle_hva_to_gpa(kvm, start, end, &kvm_unmap_hva_handler, NULL); handle_hva_to_gpa(kvm, start, end, &kvm_unmap_hva_handler, NULL);

View File

@@ -1789,7 +1789,11 @@ static void setup_scache(void)
printk("MIPS secondary cache %ldkB, %s, linesize %d bytes.\n", printk("MIPS secondary cache %ldkB, %s, linesize %d bytes.\n",
scache_size >> 10, scache_size >> 10,
way_string[c->scache.ways], c->scache.linesz); way_string[c->scache.ways], c->scache.linesz);
if (current_cpu_type() == CPU_BMIPS5000)
c->options |= MIPS_CPU_INCLUSIVE_CACHES;
} }
#else #else
if (!(c->scache.flags & MIPS_CACHE_NOT_PRESENT)) if (!(c->scache.flags & MIPS_CACHE_NOT_PRESENT))
panic("Dunno how to handle MIPS32 / MIPS64 second level cache"); panic("Dunno how to handle MIPS32 / MIPS64 second level cache");

View File

@@ -126,6 +126,7 @@ static void *map_vdso(const char *path, size_t *_size)
if (fstat(fd, &stat) != 0) { if (fstat(fd, &stat) != 0) {
fprintf(stderr, "%s: Failed to stat '%s': %s\n", program_name, fprintf(stderr, "%s: Failed to stat '%s': %s\n", program_name,
path, strerror(errno)); path, strerror(errno));
close(fd);
return NULL; return NULL;
} }
@@ -134,6 +135,7 @@ static void *map_vdso(const char *path, size_t *_size)
if (addr == MAP_FAILED) { if (addr == MAP_FAILED) {
fprintf(stderr, "%s: Failed to map '%s': %s\n", program_name, fprintf(stderr, "%s: Failed to map '%s': %s\n", program_name,
path, strerror(errno)); path, strerror(errno));
close(fd);
return NULL; return NULL;
} }
@@ -143,6 +145,7 @@ static void *map_vdso(const char *path, size_t *_size)
if (memcmp(ehdr->e_ident, ELFMAG, SELFMAG) != 0) { if (memcmp(ehdr->e_ident, ELFMAG, SELFMAG) != 0) {
fprintf(stderr, "%s: '%s' is not an ELF file\n", program_name, fprintf(stderr, "%s: '%s' is not an ELF file\n", program_name,
path); path);
close(fd);
return NULL; return NULL;
} }
@@ -154,6 +157,7 @@ static void *map_vdso(const char *path, size_t *_size)
default: default:
fprintf(stderr, "%s: '%s' has invalid ELF class\n", fprintf(stderr, "%s: '%s' has invalid ELF class\n",
program_name, path); program_name, path);
close(fd);
return NULL; return NULL;
} }
@@ -165,6 +169,7 @@ static void *map_vdso(const char *path, size_t *_size)
default: default:
fprintf(stderr, "%s: '%s' has invalid ELF data order\n", fprintf(stderr, "%s: '%s' has invalid ELF data order\n",
program_name, path); program_name, path);
close(fd);
return NULL; return NULL;
} }
@@ -172,15 +177,18 @@ static void *map_vdso(const char *path, size_t *_size)
fprintf(stderr, fprintf(stderr,
"%s: '%s' has invalid ELF machine (expected EM_MIPS)\n", "%s: '%s' has invalid ELF machine (expected EM_MIPS)\n",
program_name, path); program_name, path);
close(fd);
return NULL; return NULL;
} else if (swap_uint16(ehdr->e_type) != ET_DYN) { } else if (swap_uint16(ehdr->e_type) != ET_DYN) {
fprintf(stderr, fprintf(stderr,
"%s: '%s' has invalid ELF type (expected ET_DYN)\n", "%s: '%s' has invalid ELF type (expected ET_DYN)\n",
program_name, path); program_name, path);
close(fd);
return NULL; return NULL;
} }
*_size = stat.st_size; *_size = stat.st_size;
close(fd);
return addr; return addr;
} }
@@ -284,10 +292,12 @@ int main(int argc, char **argv)
/* Calculate and write symbol offsets to <output file> */ /* Calculate and write symbol offsets to <output file> */
if (!get_symbols(dbg_vdso_path, dbg_vdso)) { if (!get_symbols(dbg_vdso_path, dbg_vdso)) {
unlink(out_path); unlink(out_path);
fclose(out_file);
return EXIT_FAILURE; return EXIT_FAILURE;
} }
fprintf(out_file, "};\n"); fprintf(out_file, "};\n");
fclose(out_file);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }

View File

@@ -13,6 +13,7 @@
#include <linux/export.h> #include <linux/export.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/sched/debug.h> #include <linux/sched/debug.h>
#include <linux/sched/task_stack.h>
#include <linux/stacktrace.h> #include <linux/stacktrace.h>
#include <asm/processor.h> #include <asm/processor.h>
@@ -68,12 +69,25 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
{ {
unsigned long *sp = NULL; unsigned long *sp = NULL;
if (!try_get_task_stack(tsk))
return;
if (tsk == current) if (tsk == current)
sp = (unsigned long *) &sp; sp = (unsigned long *) &sp;
else else {
sp = (unsigned long *) KSTK_ESP(tsk); unsigned long ksp;
/* Locate stack from kernel context */
ksp = task_thread_info(tsk)->ksp;
ksp += STACK_FRAME_OVERHEAD; /* redzone */
ksp += sizeof(struct pt_regs);
sp = (unsigned long *) ksp;
}
unwind_stack(trace, sp, save_stack_address_nosched); unwind_stack(trace, sp, save_stack_address_nosched);
put_task_stack(tsk);
} }
EXPORT_SYMBOL_GPL(save_stack_trace_tsk); EXPORT_SYMBOL_GPL(save_stack_trace_tsk);

View File

@@ -26,6 +26,67 @@
#define __smp_rmb() mb() #define __smp_rmb() mb()
#define __smp_wmb() mb() #define __smp_wmb() mb()
#define __smp_store_release(p, v) \
do { \
typeof(p) __p = (p); \
union { typeof(*p) __val; char __c[1]; } __u = \
{ .__val = (__force typeof(*p)) (v) }; \
compiletime_assert_atomic_type(*p); \
switch (sizeof(*p)) { \
case 1: \
asm volatile("stb,ma %0,0(%1)" \
: : "r"(*(__u8 *)__u.__c), "r"(__p) \
: "memory"); \
break; \
case 2: \
asm volatile("sth,ma %0,0(%1)" \
: : "r"(*(__u16 *)__u.__c), "r"(__p) \
: "memory"); \
break; \
case 4: \
asm volatile("stw,ma %0,0(%1)" \
: : "r"(*(__u32 *)__u.__c), "r"(__p) \
: "memory"); \
break; \
case 8: \
if (IS_ENABLED(CONFIG_64BIT)) \
asm volatile("std,ma %0,0(%1)" \
: : "r"(*(__u64 *)__u.__c), "r"(__p) \
: "memory"); \
break; \
} \
} while (0)
#define __smp_load_acquire(p) \
({ \
union { typeof(*p) __val; char __c[1]; } __u; \
typeof(p) __p = (p); \
compiletime_assert_atomic_type(*p); \
switch (sizeof(*p)) { \
case 1: \
asm volatile("ldb,ma 0(%1),%0" \
: "=r"(*(__u8 *)__u.__c) : "r"(__p) \
: "memory"); \
break; \
case 2: \
asm volatile("ldh,ma 0(%1),%0" \
: "=r"(*(__u16 *)__u.__c) : "r"(__p) \
: "memory"); \
break; \
case 4: \
asm volatile("ldw,ma 0(%1),%0" \
: "=r"(*(__u32 *)__u.__c) : "r"(__p) \
: "memory"); \
break; \
case 8: \
if (IS_ENABLED(CONFIG_64BIT)) \
asm volatile("ldd,ma 0(%1),%0" \
: "=r"(*(__u64 *)__u.__c) : "r"(__p) \
: "memory"); \
break; \
} \
__u.__val; \
})
#include <asm-generic/barrier.h> #include <asm-generic/barrier.h>
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */

View File

@@ -60,6 +60,7 @@ extern void __cmpxchg_called_with_bad_pointer(void);
extern unsigned long __cmpxchg_u32(volatile unsigned int *m, unsigned int old, extern unsigned long __cmpxchg_u32(volatile unsigned int *m, unsigned int old,
unsigned int new_); unsigned int new_);
extern u64 __cmpxchg_u64(volatile u64 *ptr, u64 old, u64 new_); extern u64 __cmpxchg_u64(volatile u64 *ptr, u64 old, u64 new_);
extern u8 __cmpxchg_u8(volatile u8 *ptr, u8 old, u8 new_);
/* don't worry...optimizer will get rid of most of this */ /* don't worry...optimizer will get rid of most of this */
static inline unsigned long static inline unsigned long
@@ -71,6 +72,7 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new_, int size)
#endif #endif
case 4: return __cmpxchg_u32((unsigned int *)ptr, case 4: return __cmpxchg_u32((unsigned int *)ptr,
(unsigned int)old, (unsigned int)new_); (unsigned int)old, (unsigned int)new_);
case 1: return __cmpxchg_u8((u8 *)ptr, (u8)old, (u8)new_);
} }
__cmpxchg_called_with_bad_pointer(); __cmpxchg_called_with_bad_pointer();
return old; return old;

View File

@@ -79,3 +79,15 @@ unsigned long __cmpxchg_u32(volatile unsigned int *ptr, unsigned int old, unsign
_atomic_spin_unlock_irqrestore(ptr, flags); _atomic_spin_unlock_irqrestore(ptr, flags);
return (unsigned long)prev; return (unsigned long)prev;
} }
u8 __cmpxchg_u8(volatile u8 *ptr, u8 old, u8 new)
{
unsigned long flags;
u8 prev;
_atomic_spin_lock_irqsave(ptr, flags);
if ((prev = *ptr) == old)
*ptr = new;
_atomic_spin_unlock_irqrestore(ptr, flags);
return prev;
}

View File

@@ -122,7 +122,7 @@ src-wlib-y := string.S crt0.S stdio.c decompress.c main.c \
elf_util.c $(zlib-y) devtree.c stdlib.c \ elf_util.c $(zlib-y) devtree.c stdlib.c \
oflib.c ofconsole.c cuboot.c oflib.c ofconsole.c cuboot.c
src-wlib-$(CONFIG_PPC_MPC52XX) += mpc52xx-psc.c src-wlib-$(CONFIG_PPC_MPC52xx) += mpc52xx-psc.c
src-wlib-$(CONFIG_PPC64_BOOT_WRAPPER) += opal-calls.S opal.c src-wlib-$(CONFIG_PPC64_BOOT_WRAPPER) += opal-calls.S opal.c
ifndef CONFIG_PPC64_BOOT_WRAPPER ifndef CONFIG_PPC64_BOOT_WRAPPER
src-wlib-y += crtsavres.S src-wlib-y += crtsavres.S

View File

@@ -127,7 +127,7 @@ int serial_console_init(void)
dt_is_compatible(devp, "fsl,cpm2-smc-uart")) dt_is_compatible(devp, "fsl,cpm2-smc-uart"))
rc = cpm_console_init(devp, &serial_cd); rc = cpm_console_init(devp, &serial_cd);
#endif #endif
#ifdef CONFIG_PPC_MPC52XX #ifdef CONFIG_PPC_MPC52xx
else if (dt_is_compatible(devp, "fsl,mpc5200-psc-uart")) else if (dt_is_compatible(devp, "fsl,mpc5200-psc-uart"))
rc = mpc5200_psc_console_init(devp, &serial_cd); rc = mpc5200_psc_console_init(devp, &serial_cd);
#endif #endif

View File

@@ -110,7 +110,6 @@ CONFIG_FB_NVIDIA=y
CONFIG_FB_NVIDIA_I2C=y CONFIG_FB_NVIDIA_I2C=y
CONFIG_FB_RADEON=y CONFIG_FB_RADEON=y
# CONFIG_LCD_CLASS_DEVICE is not set # CONFIG_LCD_CLASS_DEVICE is not set
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_LOGO=y CONFIG_LOGO=y
CONFIG_SOUND=y CONFIG_SOUND=y
CONFIG_SND=y CONFIG_SND=y

View File

@@ -779,7 +779,6 @@ CONFIG_FB_TRIDENT=m
CONFIG_FB_SM501=m CONFIG_FB_SM501=m
CONFIG_FB_IBM_GXT4500=y CONFIG_FB_IBM_GXT4500=y
CONFIG_LCD_PLATFORM=m CONFIG_LCD_PLATFORM=m
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
CONFIG_LOGO=y CONFIG_LOGO=y

View File

@@ -68,7 +68,8 @@
#define KVM_ARCH_WANT_MMU_NOTIFIER #define KVM_ARCH_WANT_MMU_NOTIFIER
extern int kvm_unmap_hva_range(struct kvm *kvm, extern int kvm_unmap_hva_range(struct kvm *kvm,
unsigned long start, unsigned long end); unsigned long start, unsigned long end,
bool blockable);
extern int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end); extern int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end);
extern int kvm_test_age_hva(struct kvm *kvm, unsigned long hva); extern int kvm_test_age_hva(struct kvm *kvm, unsigned long hva);
extern void kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte); extern void kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte);

View File

@@ -10,8 +10,6 @@
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
#include <asm/paca.h>
#define __my_cpu_offset local_paca->data_offset #define __my_cpu_offset local_paca->data_offset
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */
@@ -19,4 +17,6 @@
#include <asm-generic/percpu.h> #include <asm-generic/percpu.h>
#include <asm/paca.h>
#endif /* _ASM_POWERPC_PERCPU_H_ */ #endif /* _ASM_POWERPC_PERCPU_H_ */

View File

@@ -183,7 +183,7 @@ __init_LPCR_ISA300:
__init_FSCR: __init_FSCR:
mfspr r3,SPRN_FSCR mfspr r3,SPRN_FSCR
ori r3,r3,FSCR_TAR|FSCR_DSCR|FSCR_EBB ori r3,r3,FSCR_TAR|FSCR_EBB
mtspr SPRN_FSCR,r3 mtspr SPRN_FSCR,r3
blr blr

View File

@@ -705,7 +705,7 @@ int vdso_getcpu_init(void)
node = cpu_to_node(cpu); node = cpu_to_node(cpu);
WARN_ON_ONCE(node > 0xffff); WARN_ON_ONCE(node > 0xffff);
val = (cpu & 0xfff) | ((node & 0xffff) << 16); val = (cpu & 0xffff) | ((node & 0xffff) << 16);
mtspr(SPRN_SPRG_VDSO_WRITE, val); mtspr(SPRN_SPRG_VDSO_WRITE, val);
get_paca()->sprg_vdso = val; get_paca()->sprg_vdso = val;

View File

@@ -812,7 +812,8 @@ void kvmppc_core_commit_memory_region(struct kvm *kvm,
kvm->arch.kvm_ops->commit_memory_region(kvm, mem, old, new); kvm->arch.kvm_ops->commit_memory_region(kvm, mem, old, new);
} }
int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end) int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end,
bool blockable)
{ {
return kvm->arch.kvm_ops->unmap_hva_range(kvm, start, end); return kvm->arch.kvm_ops->unmap_hva_range(kvm, start, end);
} }

View File

@@ -737,7 +737,8 @@ static int kvm_unmap_hva(struct kvm *kvm, unsigned long hva)
return 0; return 0;
} }
int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end) int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end,
bool blockable)
{ {
/* kvm_unmap_hva flushes everything anyways */ /* kvm_unmap_hva flushes everything anyways */
kvm_unmap_hva(kvm, start); kvm_unmap_hva(kvm, start);

View File

@@ -233,6 +233,9 @@ static bool bad_kernel_fault(bool is_exec, unsigned long error_code,
return is_exec || (address >= TASK_SIZE); return is_exec || (address >= TASK_SIZE);
} }
// This comes from 64-bit struct rt_sigframe + __SIGNAL_FRAMESIZE
#define SIGFRAME_MAX_SIZE (4096 + 128)
static bool bad_stack_expansion(struct pt_regs *regs, unsigned long address, static bool bad_stack_expansion(struct pt_regs *regs, unsigned long address,
struct vm_area_struct *vma, unsigned int flags, struct vm_area_struct *vma, unsigned int flags,
bool *must_retry) bool *must_retry)
@@ -240,7 +243,7 @@ static bool bad_stack_expansion(struct pt_regs *regs, unsigned long address,
/* /*
* N.B. The POWER/Open ABI allows programs to access up to * N.B. The POWER/Open ABI allows programs to access up to
* 288 bytes below the stack pointer. * 288 bytes below the stack pointer.
* The kernel signal delivery code writes up to about 1.5kB * The kernel signal delivery code writes a bit over 4KB
* below the stack pointer (r1) before decrementing it. * below the stack pointer (r1) before decrementing it.
* The exec code can write slightly over 640kB to the stack * The exec code can write slightly over 640kB to the stack
* before setting the user r1. Thus we allow the stack to * before setting the user r1. Thus we allow the stack to
@@ -265,7 +268,7 @@ static bool bad_stack_expansion(struct pt_regs *regs, unsigned long address,
* between the last mapped region and the stack will * between the last mapped region and the stack will
* expand the stack rather than segfaulting. * expand the stack rather than segfaulting.
*/ */
if (address + 2048 >= uregs->gpr[1]) if (address + SIGFRAME_MAX_SIZE >= uregs->gpr[1])
return false; return false;
if ((flags & FAULT_FLAG_WRITE) && (flags & FAULT_FLAG_USER) && if ((flags & FAULT_FLAG_WRITE) && (flags & FAULT_FLAG_USER) &&

View File

@@ -81,13 +81,17 @@ int pkey_initialize(void)
scan_pkey_feature(); scan_pkey_feature();
/* /*
* Let's assume 32 pkeys on P8 bare metal, if its not defined by device * Let's assume 32 pkeys on P8/P9 bare metal, if its not defined by device
* tree. We make this exception since skiboot forgot to expose this * tree. We make this exception since some version of skiboot forgot to
* property on power8. * expose this property on power8/9.
*/ */
if (!pkeys_devtree_defined && !firmware_has_feature(FW_FEATURE_LPAR) && if (!pkeys_devtree_defined && !firmware_has_feature(FW_FEATURE_LPAR)) {
cpu_has_feature(CPU_FTRS_POWER8)) unsigned long pvr = mfspr(SPRN_PVR);
pkeys_total = 32;
if (PVR_VER(pvr) == PVR_POWER8 || PVR_VER(pvr) == PVR_POWER8E ||
PVR_VER(pvr) == PVR_POWER8NVL || PVR_VER(pvr) == PVR_POWER9)
pkeys_total = 32;
}
/* /*
* Adjust the upper limit, based on the number of bits supported by * Adjust the upper limit, based on the number of bits supported by

View File

@@ -2085,6 +2085,10 @@ static void record_and_restart(struct perf_event *event, unsigned long val,
if (perf_event_overflow(event, &data, regs)) if (perf_event_overflow(event, &data, regs))
power_pmu_stop(event, 0); power_pmu_stop(event, 0);
} else if (period) {
/* Account for interrupt in case of invalid SIAR */
if (perf_event_account_interrupt(event))
power_pmu_stop(event, 0);
} }
} }

View File

@@ -46,6 +46,7 @@ config SPU_FS
tristate "SPU file system" tristate "SPU file system"
default m default m
depends on PPC_CELL depends on PPC_CELL
depends on COREDUMP
select SPU_BASE select SPU_BASE
help help
The SPU file system is used to access Synergistic Processing The SPU file system is used to access Synergistic Processing

View File

@@ -31,7 +31,7 @@ static bool rtas_hp_event;
unsigned long pseries_memory_block_size(void) unsigned long pseries_memory_block_size(void)
{ {
struct device_node *np; struct device_node *np;
unsigned int memblock_size = MIN_MEMORY_BLOCK_SIZE; u64 memblock_size = MIN_MEMORY_BLOCK_SIZE;
struct resource r; struct resource r;
np = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory"); np = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory");

View File

@@ -118,7 +118,6 @@ static void handle_system_shutdown(char event_modifier)
case EPOW_SHUTDOWN_ON_UPS: case EPOW_SHUTDOWN_ON_UPS:
pr_emerg("Loss of system power detected. System is running on" pr_emerg("Loss of system power detected. System is running on"
" UPS/battery. Check RTAS error log for details\n"); " UPS/battery. Check RTAS error log for details\n");
orderly_poweroff(true);
break; break;
case EPOW_SHUTDOWN_LOSS_OF_CRITICAL_FUNCTIONS: case EPOW_SHUTDOWN_LOSS_OF_CRITICAL_FUNCTIONS:

View File

@@ -22,6 +22,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/cpumask.h> #include <linux/cpumask.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/kmemleak.h>
#include <asm/prom.h> #include <asm/prom.h>
#include <asm/io.h> #include <asm/io.h>
@@ -627,6 +628,7 @@ static bool xive_native_provision_pages(void)
pr_err("Failed to allocate provisioning page\n"); pr_err("Failed to allocate provisioning page\n");
return false; return false;
} }
kmemleak_ignore(p);
opal_xive_donate_page(chip, __pa(p)); opal_xive_donate_page(chip, __pa(p));
} }
return true; return true;

View File

@@ -29,7 +29,7 @@
typedef typeof(pcp) pcp_op_T__; \ typedef typeof(pcp) pcp_op_T__; \
pcp_op_T__ old__, new__, prev__; \ pcp_op_T__ old__, new__, prev__; \
pcp_op_T__ *ptr__; \ pcp_op_T__ *ptr__; \
preempt_disable(); \ preempt_disable_notrace(); \
ptr__ = raw_cpu_ptr(&(pcp)); \ ptr__ = raw_cpu_ptr(&(pcp)); \
prev__ = *ptr__; \ prev__ = *ptr__; \
do { \ do { \
@@ -37,7 +37,7 @@
new__ = old__ op (val); \ new__ = old__ op (val); \
prev__ = cmpxchg(ptr__, old__, new__); \ prev__ = cmpxchg(ptr__, old__, new__); \
} while (prev__ != old__); \ } while (prev__ != old__); \
preempt_enable(); \ preempt_enable_notrace(); \
new__; \ new__; \
}) })
@@ -68,7 +68,7 @@
typedef typeof(pcp) pcp_op_T__; \ typedef typeof(pcp) pcp_op_T__; \
pcp_op_T__ val__ = (val); \ pcp_op_T__ val__ = (val); \
pcp_op_T__ old__, *ptr__; \ pcp_op_T__ old__, *ptr__; \
preempt_disable(); \ preempt_disable_notrace(); \
ptr__ = raw_cpu_ptr(&(pcp)); \ ptr__ = raw_cpu_ptr(&(pcp)); \
if (__builtin_constant_p(val__) && \ if (__builtin_constant_p(val__) && \
((szcast)val__ > -129) && ((szcast)val__ < 128)) { \ ((szcast)val__ > -129) && ((szcast)val__ < 128)) { \
@@ -84,7 +84,7 @@
: [val__] "d" (val__) \ : [val__] "d" (val__) \
: "cc"); \ : "cc"); \
} \ } \
preempt_enable(); \ preempt_enable_notrace(); \
} }
#define this_cpu_add_4(pcp, val) arch_this_cpu_add(pcp, val, "laa", "asi", int) #define this_cpu_add_4(pcp, val) arch_this_cpu_add(pcp, val, "laa", "asi", int)
@@ -95,14 +95,14 @@
typedef typeof(pcp) pcp_op_T__; \ typedef typeof(pcp) pcp_op_T__; \
pcp_op_T__ val__ = (val); \ pcp_op_T__ val__ = (val); \
pcp_op_T__ old__, *ptr__; \ pcp_op_T__ old__, *ptr__; \
preempt_disable(); \ preempt_disable_notrace(); \
ptr__ = raw_cpu_ptr(&(pcp)); \ ptr__ = raw_cpu_ptr(&(pcp)); \
asm volatile( \ asm volatile( \
op " %[old__],%[val__],%[ptr__]\n" \ op " %[old__],%[val__],%[ptr__]\n" \
: [old__] "=d" (old__), [ptr__] "+Q" (*ptr__) \ : [old__] "=d" (old__), [ptr__] "+Q" (*ptr__) \
: [val__] "d" (val__) \ : [val__] "d" (val__) \
: "cc"); \ : "cc"); \
preempt_enable(); \ preempt_enable_notrace(); \
old__ + val__; \ old__ + val__; \
}) })
@@ -114,14 +114,14 @@
typedef typeof(pcp) pcp_op_T__; \ typedef typeof(pcp) pcp_op_T__; \
pcp_op_T__ val__ = (val); \ pcp_op_T__ val__ = (val); \
pcp_op_T__ old__, *ptr__; \ pcp_op_T__ old__, *ptr__; \
preempt_disable(); \ preempt_disable_notrace(); \
ptr__ = raw_cpu_ptr(&(pcp)); \ ptr__ = raw_cpu_ptr(&(pcp)); \
asm volatile( \ asm volatile( \
op " %[old__],%[val__],%[ptr__]\n" \ op " %[old__],%[val__],%[ptr__]\n" \
: [old__] "=d" (old__), [ptr__] "+Q" (*ptr__) \ : [old__] "=d" (old__), [ptr__] "+Q" (*ptr__) \
: [val__] "d" (val__) \ : [val__] "d" (val__) \
: "cc"); \ : "cc"); \
preempt_enable(); \ preempt_enable_notrace(); \
} }
#define this_cpu_and_4(pcp, val) arch_this_cpu_to_op(pcp, val, "lan") #define this_cpu_and_4(pcp, val) arch_this_cpu_to_op(pcp, val, "lan")
@@ -136,10 +136,10 @@
typedef typeof(pcp) pcp_op_T__; \ typedef typeof(pcp) pcp_op_T__; \
pcp_op_T__ ret__; \ pcp_op_T__ ret__; \
pcp_op_T__ *ptr__; \ pcp_op_T__ *ptr__; \
preempt_disable(); \ preempt_disable_notrace(); \
ptr__ = raw_cpu_ptr(&(pcp)); \ ptr__ = raw_cpu_ptr(&(pcp)); \
ret__ = cmpxchg(ptr__, oval, nval); \ ret__ = cmpxchg(ptr__, oval, nval); \
preempt_enable(); \ preempt_enable_notrace(); \
ret__; \ ret__; \
}) })
@@ -152,10 +152,10 @@
({ \ ({ \
typeof(pcp) *ptr__; \ typeof(pcp) *ptr__; \
typeof(pcp) ret__; \ typeof(pcp) ret__; \
preempt_disable(); \ preempt_disable_notrace(); \
ptr__ = raw_cpu_ptr(&(pcp)); \ ptr__ = raw_cpu_ptr(&(pcp)); \
ret__ = xchg(ptr__, nval); \ ret__ = xchg(ptr__, nval); \
preempt_enable(); \ preempt_enable_notrace(); \
ret__; \ ret__; \
}) })
@@ -171,11 +171,11 @@
typeof(pcp1) *p1__; \ typeof(pcp1) *p1__; \
typeof(pcp2) *p2__; \ typeof(pcp2) *p2__; \
int ret__; \ int ret__; \
preempt_disable(); \ preempt_disable_notrace(); \
p1__ = raw_cpu_ptr(&(pcp1)); \ p1__ = raw_cpu_ptr(&(pcp1)); \
p2__ = raw_cpu_ptr(&(pcp2)); \ p2__ = raw_cpu_ptr(&(pcp2)); \
ret__ = __cmpxchg_double(p1__, p2__, o1__, o2__, n1__, n2__); \ ret__ = __cmpxchg_double(p1__, p2__, o1__, o2__, n1__, n2__); \
preempt_enable(); \ preempt_enable_notrace(); \
ret__; \ ret__; \
}) })

View File

@@ -1286,7 +1286,6 @@ static bool is_ri_cb_valid(struct runtime_instr_cb *cb)
cb->pc == 1 && cb->pc == 1 &&
cb->qc == 0 && cb->qc == 0 &&
cb->reserved2 == 0 && cb->reserved2 == 0 &&
cb->key == PAGE_DEFAULT_KEY &&
cb->reserved3 == 0 && cb->reserved3 == 0 &&
cb->reserved4 == 0 && cb->reserved4 == 0 &&
cb->reserved5 == 0 && cb->reserved5 == 0 &&
@@ -1350,7 +1349,11 @@ static int s390_runtime_instr_set(struct task_struct *target,
kfree(data); kfree(data);
return -EINVAL; return -EINVAL;
} }
/*
* Override access key in any case, since user space should
* not be able to set it, nor should it care about it.
*/
ri_cb.key = PAGE_DEFAULT_KEY >> 4;
preempt_disable(); preempt_disable();
if (!target->thread.ri_cb) if (!target->thread.ri_cb)
target->thread.ri_cb = data; target->thread.ri_cb = data;

View File

@@ -57,7 +57,7 @@ static void init_runtime_instr_cb(struct runtime_instr_cb *cb)
cb->k = 1; cb->k = 1;
cb->ps = 1; cb->ps = 1;
cb->pc = 1; cb->pc = 1;
cb->key = PAGE_DEFAULT_KEY; cb->key = PAGE_DEFAULT_KEY >> 4;
cb->v = 1; cb->v = 1;
} }

View File

@@ -85,6 +85,9 @@ device_initcall(landisk_devices_setup);
static void __init landisk_setup(char **cmdline_p) static void __init landisk_setup(char **cmdline_p)
{ {
/* I/O port identity mapping */
__set_io_port_base(0);
/* LED ON */ /* LED ON */
__raw_writeb(__raw_readb(PA_LED) | 0x03, PA_LED); __raw_writeb(__raw_readb(PA_LED) | 0x03, PA_LED);

View File

@@ -203,7 +203,7 @@ syscall_trace_entry:
mov.l @(OFF_R7,r15), r7 ! arg3 mov.l @(OFF_R7,r15), r7 ! arg3
mov.l @(OFF_R3,r15), r3 ! syscall_nr mov.l @(OFF_R3,r15), r3 ! syscall_nr
! !
mov.l 2f, r10 ! Number of syscalls mov.l 6f, r10 ! Number of syscalls
cmp/hs r10, r3 cmp/hs r10, r3
bf syscall_call bf syscall_call
mov #-ENOSYS, r0 mov #-ENOSYS, r0
@@ -357,7 +357,7 @@ ENTRY(system_call)
tst r9, r8 tst r9, r8
bf syscall_trace_entry bf syscall_trace_entry
! !
mov.l 2f, r8 ! Number of syscalls mov.l 6f, r8 ! Number of syscalls
cmp/hs r8, r3 cmp/hs r8, r3
bt syscall_badsys bt syscall_badsys
! !
@@ -396,7 +396,7 @@ syscall_exit:
#if !defined(CONFIG_CPU_SH2) #if !defined(CONFIG_CPU_SH2)
1: .long TRA 1: .long TRA
#endif #endif
2: .long NR_syscalls 6: .long NR_syscalls
3: .long sys_call_table 3: .long sys_call_table
7: .long do_syscall_trace_enter 7: .long do_syscall_trace_enter
8: .long do_syscall_trace_leave 8: .long do_syscall_trace_leave

View File

@@ -424,7 +424,7 @@ CONFIG_FORTIFY_SOURCE=y
CONFIG_STATIC_USERMODEHELPER=y CONFIG_STATIC_USERMODEHELPER=y
CONFIG_STATIC_USERMODEHELPER_PATH="" CONFIG_STATIC_USERMODEHELPER_PATH=""
CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX=y
CONFIG_INIT_STACK_ALL=y CONFIG_INIT_STACK_ALL_ZERO=y
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
CONFIG_CRYPTO_ADIANTUM=y CONFIG_CRYPTO_ADIANTUM=y
CONFIG_CRYPTO_SHA256_SSSE3=y CONFIG_CRYPTO_SHA256_SSSE3=y

View File

@@ -216,7 +216,6 @@ CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y CONFIG_FB_TILEBLITTING=y
CONFIG_FB_EFI=y CONFIG_FB_EFI=y
# CONFIG_LCD_CLASS_DEVICE is not set # CONFIG_LCD_CLASS_DEVICE is not set
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_LOGO=y CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set # CONFIG_LOGO_LINUX_VGA16 is not set

View File

@@ -212,7 +212,6 @@ CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y CONFIG_FB_TILEBLITTING=y
CONFIG_FB_EFI=y CONFIG_FB_EFI=y
# CONFIG_LCD_CLASS_DEVICE is not set # CONFIG_LCD_CLASS_DEVICE is not set
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_LOGO=y CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set # CONFIG_LOGO_LINUX_VGA16 is not set

View File

@@ -127,10 +127,6 @@ ddq_add_8:
/* generate a unique variable for ddq_add_x */ /* generate a unique variable for ddq_add_x */
.macro setddq n
var_ddq_add = ddq_add_\n
.endm
/* generate a unique variable for xmm register */ /* generate a unique variable for xmm register */
.macro setxdata n .macro setxdata n
var_xdata = %xmm\n var_xdata = %xmm\n
@@ -140,9 +136,7 @@ ddq_add_8:
.macro club name, id .macro club name, id
.altmacro .altmacro
.if \name == DDQ_DATA .if \name == XDATA
setddq %\id
.elseif \name == XDATA
setxdata %\id setxdata %\id
.endif .endif
.noaltmacro .noaltmacro
@@ -165,9 +159,8 @@ ddq_add_8:
.set i, 1 .set i, 1
.rept (by - 1) .rept (by - 1)
club DDQ_DATA, i
club XDATA, i club XDATA, i
vpaddq var_ddq_add(%rip), xcounter, var_xdata vpaddq (ddq_add_1 + 16 * (i - 1))(%rip), xcounter, var_xdata
vptest ddq_low_msk(%rip), var_xdata vptest ddq_low_msk(%rip), var_xdata
jnz 1f jnz 1f
vpaddq ddq_high_add_1(%rip), var_xdata, var_xdata vpaddq ddq_high_add_1(%rip), var_xdata, var_xdata
@@ -180,8 +173,7 @@ ddq_add_8:
vmovdqa 1*16(p_keys), xkeyA vmovdqa 1*16(p_keys), xkeyA
vpxor xkey0, xdata0, xdata0 vpxor xkey0, xdata0, xdata0
club DDQ_DATA, by vpaddq (ddq_add_1 + 16 * (by - 1))(%rip), xcounter, xcounter
vpaddq var_ddq_add(%rip), xcounter, xcounter
vptest ddq_low_msk(%rip), xcounter vptest ddq_low_msk(%rip), xcounter
jnz 1f jnz 1f
vpaddq ddq_high_add_1(%rip), xcounter, xcounter vpaddq ddq_high_add_1(%rip), xcounter, xcounter

View File

@@ -270,7 +270,7 @@ ALL_F: .octa 0xffffffffffffffffffffffffffffffff
PSHUFB_XMM %xmm2, %xmm0 PSHUFB_XMM %xmm2, %xmm0
movdqu %xmm0, CurCount(%arg2) # ctx_data.current_counter = iv movdqu %xmm0, CurCount(%arg2) # ctx_data.current_counter = iv
PRECOMPUTE \SUBKEY, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, PRECOMPUTE \SUBKEY, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7
movdqu HashKey(%arg2), %xmm13 movdqu HashKey(%arg2), %xmm13
CALC_AAD_HASH %xmm13, \AAD, \AADLEN, %xmm0, %xmm1, %xmm2, %xmm3, \ CALC_AAD_HASH %xmm13, \AAD, \AADLEN, %xmm0, %xmm1, %xmm2, %xmm3, \
@@ -982,7 +982,7 @@ _initial_blocks_done\@:
* arg1, %arg3, %arg4 are used as pointers only, not modified * arg1, %arg3, %arg4 are used as pointers only, not modified
* %r11 is the data offset value * %r11 is the data offset value
*/ */
.macro GHASH_4_ENCRYPT_4_PARALLEL_ENC TMP1 TMP2 TMP3 TMP4 TMP5 \ .macro GHASH_4_ENCRYPT_4_PARALLEL_enc TMP1 TMP2 TMP3 TMP4 TMP5 \
TMP6 XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7 XMM8 operation TMP6 XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7 XMM8 operation
movdqa \XMM1, \XMM5 movdqa \XMM1, \XMM5
@@ -1190,7 +1190,7 @@ aes_loop_par_enc_done\@:
* arg1, %arg3, %arg4 are used as pointers only, not modified * arg1, %arg3, %arg4 are used as pointers only, not modified
* %r11 is the data offset value * %r11 is the data offset value
*/ */
.macro GHASH_4_ENCRYPT_4_PARALLEL_DEC TMP1 TMP2 TMP3 TMP4 TMP5 \ .macro GHASH_4_ENCRYPT_4_PARALLEL_dec TMP1 TMP2 TMP3 TMP4 TMP5 \
TMP6 XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7 XMM8 operation TMP6 XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7 XMM8 operation
movdqa \XMM1, \XMM5 movdqa \XMM1, \XMM5

View File

@@ -1465,7 +1465,8 @@ asmlinkage void __noreturn kvm_spurious_fault(void);
____kvm_handle_fault_on_reboot(insn, "") ____kvm_handle_fault_on_reboot(insn, "")
#define KVM_ARCH_WANT_MMU_NOTIFIER #define KVM_ARCH_WANT_MMU_NOTIFIER
int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end); int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end,
bool blockable);
int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end); int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end);
int kvm_test_age_hva(struct kvm *kvm, unsigned long hva); int kvm_test_age_hva(struct kvm *kvm, unsigned long hva);
void kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte); void kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte);

View File

@@ -2342,8 +2342,13 @@ static int mp_irqdomain_create(int ioapic)
static void ioapic_destroy_irqdomain(int idx) static void ioapic_destroy_irqdomain(int idx)
{ {
struct ioapic_domain_cfg *cfg = &ioapics[idx].irqdomain_cfg;
struct fwnode_handle *fn = ioapics[idx].irqdomain->fwnode;
if (ioapics[idx].irqdomain) { if (ioapics[idx].irqdomain) {
irq_domain_remove(ioapics[idx].irqdomain); irq_domain_remove(ioapics[idx].irqdomain);
if (!cfg->dev)
irq_domain_free_fwnode(fn);
ioapics[idx].irqdomain = NULL; ioapics[idx].irqdomain = NULL;
} }
} }

View File

@@ -556,6 +556,10 @@ static int x86_vector_alloc_irqs(struct irq_domain *domain, unsigned int virq,
irqd->chip_data = apicd; irqd->chip_data = apicd;
irqd->hwirq = virq + i; irqd->hwirq = virq + i;
irqd_set_single_target(irqd); irqd_set_single_target(irqd);
/* Don't invoke affinity setter on deactivated interrupts */
irqd_set_affinity_on_activate(irqd);
/* /*
* Legacy vectors are already assigned when the IOAPIC * Legacy vectors are already assigned when the IOAPIC
* takes them over. They stay on the same vector. This is * takes them over. They stay on the same vector. This is

View File

@@ -518,7 +518,7 @@ static void do_inject(void)
*/ */
if (inj_type == DFR_INT_INJ) { if (inj_type == DFR_INT_INJ) {
i_mce.status |= MCI_STATUS_DEFERRED; i_mce.status |= MCI_STATUS_DEFERRED;
i_mce.status |= (i_mce.status & ~MCI_STATUS_UC); i_mce.status &= ~MCI_STATUS_UC;
} }
/* /*

View File

@@ -207,7 +207,7 @@ static void mask_and_ack_8259A(struct irq_data *data)
* lets ACK and report it. [once per IRQ] * lets ACK and report it. [once per IRQ]
*/ */
if (!(spurious_irq_mask & irqmask)) { if (!(spurious_irq_mask & irqmask)) {
printk(KERN_DEBUG printk_deferred(KERN_DEBUG
"spurious 8259A interrupt: IRQ%d.\n", irq); "spurious 8259A interrupt: IRQ%d.\n", irq);
spurious_irq_mask |= irqmask; spurious_irq_mask |= irqmask;
} }

View File

@@ -374,7 +374,7 @@ static unsigned long task_seg_base(struct task_struct *task,
*/ */
mutex_lock(&task->mm->context.lock); mutex_lock(&task->mm->context.lock);
ldt = task->mm->context.ldt; ldt = task->mm->context.ldt;
if (unlikely(idx >= ldt->nr_entries)) if (unlikely(!ldt || idx >= ldt->nr_entries))
base = 0; base = 0;
else else
base = get_desc_base(ldt->entries + idx); base = get_desc_base(ldt->entries + idx);

View File

@@ -420,8 +420,11 @@ bool unwind_next_frame(struct unwind_state *state)
/* /*
* Find the orc_entry associated with the text address. * Find the orc_entry associated with the text address.
* *
* Decrement call return addresses by one so they work for sibling * For a call frame (as opposed to a signal frame), state->ip points to
* calls and calls to noreturn functions. * the instruction after the call. That instruction's stack layout
* could be different from the call instruction's layout, for example
* if the call was to a noreturn function. So get the ORC data for the
* call instruction itself.
*/ */
orc = orc_find(state->signal ? state->ip : state->ip - 1); orc = orc_find(state->signal ? state->ip : state->ip - 1);
if (!orc) if (!orc)
@@ -634,6 +637,7 @@ void __unwind_start(struct unwind_state *state, struct task_struct *task,
state->sp = task->thread.sp; state->sp = task->thread.sp;
state->bp = READ_ONCE_NOCHECK(frame->bp); state->bp = READ_ONCE_NOCHECK(frame->bp);
state->ip = READ_ONCE_NOCHECK(frame->ret_addr); state->ip = READ_ONCE_NOCHECK(frame->ret_addr);
state->signal = (void *)state->ip == ret_from_fork;
} }
if (get_stack_info((unsigned long *)state->sp, state->task, if (get_stack_info((unsigned long *)state->sp, state->task,

View File

@@ -2034,7 +2034,7 @@ void kvm_set_lapic_tscdeadline_msr(struct kvm_vcpu *vcpu, u64 data)
{ {
struct kvm_lapic *apic = vcpu->arch.apic; struct kvm_lapic *apic = vcpu->arch.apic;
if (!lapic_in_kernel(vcpu) || apic_lvtt_oneshot(apic) || if (!kvm_apic_present(vcpu) || apic_lvtt_oneshot(apic) ||
apic_lvtt_period(apic)) apic_lvtt_period(apic))
return; return;

View File

@@ -1956,7 +1956,8 @@ static int kvm_handle_hva(struct kvm *kvm, unsigned long hva,
return kvm_handle_hva_range(kvm, hva, hva + 1, data, handler); return kvm_handle_hva_range(kvm, hva, hva + 1, data, handler);
} }
int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end) int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end,
bool blockable)
{ {
return kvm_handle_hva_range(kvm, start, end, 0, kvm_unmap_rmapp); return kvm_handle_hva_range(kvm, start, end, 0, kvm_unmap_rmapp);
} }

View File

@@ -10128,6 +10128,7 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu)
(exit_reason != EXIT_REASON_EXCEPTION_NMI && (exit_reason != EXIT_REASON_EXCEPTION_NMI &&
exit_reason != EXIT_REASON_EPT_VIOLATION && exit_reason != EXIT_REASON_EPT_VIOLATION &&
exit_reason != EXIT_REASON_PML_FULL && exit_reason != EXIT_REASON_PML_FULL &&
exit_reason != EXIT_REASON_APIC_ACCESS &&
exit_reason != EXIT_REASON_TASK_SWITCH)) { exit_reason != EXIT_REASON_TASK_SWITCH)) {
vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR; vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR;
vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_DELIVERY_EV; vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_DELIVERY_EV;

View File

@@ -857,7 +857,7 @@ int kvm_set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4)
{ {
unsigned long old_cr4 = kvm_read_cr4(vcpu); unsigned long old_cr4 = kvm_read_cr4(vcpu);
unsigned long pdptr_bits = X86_CR4_PGE | X86_CR4_PSE | X86_CR4_PAE | unsigned long pdptr_bits = X86_CR4_PGE | X86_CR4_PSE | X86_CR4_PAE |
X86_CR4_SMEP | X86_CR4_SMAP | X86_CR4_PKE; X86_CR4_SMEP;
if (kvm_valid_cr4(vcpu, cr4)) if (kvm_valid_cr4(vcpu, cr4))
return 1; return 1;

View File

@@ -322,7 +322,7 @@ static int __init split_nodes_size_interleave(struct numa_meminfo *ei,
u64 addr, u64 max_addr, u64 size) u64 addr, u64 max_addr, u64 size)
{ {
return split_nodes_size_interleave_uniform(ei, pi, addr, max_addr, size, return split_nodes_size_interleave_uniform(ei, pi, addr, max_addr, size,
0, NULL, NUMA_NO_NODE); 0, NULL, 0);
} }
int __init setup_emu2phys_nid(int *dfl_phys_nid) int __init setup_emu2phys_nid(int *dfl_phys_nid)

View File

@@ -25,6 +25,7 @@
#include <asm/xen/pci.h> #include <asm/xen/pci.h>
#include <asm/xen/cpuid.h> #include <asm/xen/cpuid.h>
#include <asm/apic.h> #include <asm/apic.h>
#include <asm/acpi.h>
#include <asm/i8259.h> #include <asm/i8259.h>
static int xen_pcifront_enable_irq(struct pci_dev *dev) static int xen_pcifront_enable_irq(struct pci_dev *dev)

View File

@@ -404,7 +404,7 @@ static struct pmu xtensa_pmu = {
.read = xtensa_pmu_read, .read = xtensa_pmu_read,
}; };
static int xtensa_pmu_setup(int cpu) static int xtensa_pmu_setup(unsigned int cpu)
{ {
unsigned i; unsigned i;

View File

@@ -1038,6 +1038,8 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id,
q->backing_dev_info->ra_pages = q->backing_dev_info->ra_pages =
(VM_MAX_READAHEAD * 1024) / PAGE_SIZE; (VM_MAX_READAHEAD * 1024) / PAGE_SIZE;
q->backing_dev_info->io_pages =
(VM_MAX_READAHEAD * 1024) / PAGE_SIZE;
q->backing_dev_info->capabilities = BDI_CAP_CGROUP_WRITEBACK; q->backing_dev_info->capabilities = BDI_CAP_CGROUP_WRITEBACK;
q->backing_dev_info->name = "block"; q->backing_dev_info->name = "block";
q->node = node_id; q->node = node_id;

View File

@@ -69,6 +69,15 @@ void blk_mq_sched_restart(struct blk_mq_hw_ctx *hctx)
return; return;
clear_bit(BLK_MQ_S_SCHED_RESTART, &hctx->state); clear_bit(BLK_MQ_S_SCHED_RESTART, &hctx->state);
/*
* Order clearing SCHED_RESTART and list_empty_careful(&hctx->dispatch)
* in blk_mq_run_hw_queue(). Its pair is the barrier in
* blk_mq_dispatch_rq_list(). So dispatch code won't see SCHED_RESTART,
* meantime new request added to hctx->dispatch is missed to check in
* blk_mq_run_hw_queue().
*/
smp_mb();
blk_mq_run_hw_queue(hctx, true); blk_mq_run_hw_queue(hctx, true);
} }

View File

@@ -1221,6 +1221,15 @@ bool blk_mq_dispatch_rq_list(struct request_queue *q, struct list_head *list,
list_splice_init(list, &hctx->dispatch); list_splice_init(list, &hctx->dispatch);
spin_unlock(&hctx->lock); spin_unlock(&hctx->lock);
/*
* Order adding requests to hctx->dispatch and checking
* SCHED_RESTART flag. The pair of this smp_mb() is the one
* in blk_mq_sched_restart(). Avoid restart code path to
* miss the new added requests to hctx->dispatch, meantime
* SCHED_RESTART is observed here.
*/
smp_mb();
/* /*
* If SCHED_RESTART was set by the caller of this function and * If SCHED_RESTART was set by the caller of this function and
* it is no longer set that means that it was cleared by another * it is no longer set that means that it was cleared by another

View File

@@ -10,3 +10,4 @@ android/abi_gki_aarch64_qcom
" "
TRIM_NONLISTED_KMI=1 TRIM_NONLISTED_KMI=1
KMI_SYMBOL_LIST_STRICT_MODE=1 KMI_SYMBOL_LIST_STRICT_MODE=1
KMI_ENFORCED=1

View File

@@ -473,10 +473,6 @@ acpi_status acpi_ex_prep_field_value(struct acpi_create_field_info *info)
(u8)access_byte_width; (u8)access_byte_width;
} }
} }
/* An additional reference for the container */
acpi_ut_add_reference(obj_desc->field.region_obj);
ACPI_DEBUG_PRINT((ACPI_DB_BFIELD, ACPI_DEBUG_PRINT((ACPI_DB_BFIELD,
"RegionField: BitOff %X, Off %X, Gran %X, Region %p\n", "RegionField: BitOff %X, Off %X, Gran %X, Region %p\n",
obj_desc->field.start_field_bit_offset, obj_desc->field.start_field_bit_offset,

Some files were not shown because too many files have changed in this diff Show More