Merge tag 'android11-5.4.242_r00' into android11-5.4
This is the merge of the upstream LTS release of 5.4.242 into the android11-5.4 branch. It contains the following commits: b57981e17b4b Merge tag 'android11-5.4.242_r00' into android11-5.4734577d21e
Merge 5.4.242 into android11-5.4-ltsea7862c507
Linux 5.4.242d54a9f999e
ASN.1: Fix check for strdup() success2500d7edeb
iio: adc: at91-sama5d2_adc: fix an error code in at91_adc_allocate_trigger()760c2e6dee
pwm: meson: Explicitly set .polarity in .get_state()7f2b8046da
xfs: fix forkoff miscalculation related to XFS_LITINO(mp)c27a6bb178
sctp: Call inet6_destroy_sock() via sk->sk_destruct().97ce6cde1f
dccp: Call inet6_destroy_sock() via sk->sk_destruct().a01b75620e
inet6: Remove inet6_destroy_sock() in sk->sk_prot->destroy().9374db5bd1
tcp/udp: Call inet6_destroy_sock() in IPv6 sk->sk_destruct().2ac4697b77
udp: Call inet6_destroy_sock() in setsockopt(IPV6_ADDRFORM).5a62248c58
ext4: fix use-after-free in ext4_xattr_set_entry3b0044cb28
ext4: remove duplicate definition of ext4_xattr_ibody_inline_set()3c4fdbf368
Revert "ext4: fix use-after-free in ext4_xattr_set_entry"ef2aab86c3
x86/purgatory: Don't generate debug info for purgatory.roc22aefaef8
MIPS: Define RUNTIME_DISCARD_EXIT in LD scripta5167e902b
mmc: sdhci_am654: Set HIGH_SPEED_ENA for SDR12 and SDR251b8b54fc55
memstick: fix memory leak if card device is never registered5ad61a5268
nilfs2: initialize unused bytes in segment summary blocks988766b9d1
iio: light: tsl2772: fix reading proximity-diodes from device tree5cb867f1ec
xen/netback: use same error messages for same errors903f82b1a6
nvme-tcp: fix a possible UAF when failing to allocate an io queue34b74c32ff
s390/ptrace: fix PTRACE_GET_LAST_BREAK error handling64cd99da25
net: dsa: b53: mmap: add phy ops89dcf0dd7a
scsi: core: Improve scsi_vpd_inquiry() checksf729b74bb4
scsi: megaraid_sas: Fix fw_crash_buffer_show()4f4ef354f9
selftests: sigaltstack: fix -Wuninitializeda725dddf21
Input: i8042 - add quirk for Fujitsu Lifebook A574/H9df3f502e3
f2fs: Fix f2fs_truncate_partial_nodes ftrace event2f3730f182
e1000e: Disable TSO on i219-LM card to increase speed0f0a291cc5
bpf: Fix incorrect verifier pruning due to missing register precision taintsba610df83b
mlxfw: fix null-ptr-deref in mlxfw_mfa2_tlv_next()d8e120057c
i40e: fix i40e_setup_misc_vector() error handling59fba01b6c
i40e: fix accessing vsi->active_filters without holding lock01125379e2
netfilter: nf_tables: fix ifdef to also consider nf_tables=m7c1019391b
virtio_net: bugfix overflow inside xdp_linearize_page()35dceaeab9
net: sched: sch_qfq: prevent slab-out-of-bounds in qfq_activate_aggd61f24a454
regulator: fan53555: Explicitly include bits header36f098e1e4
netfilter: br_netfilter: fix recent physdev match breakage375e445b10
arm64: dts: meson-g12-common: specify full DMC rangecb1f89fe93
ARM: dts: rockchip: fix a typo error for rk3288 spdif nodeda8b283c08
Merge 5.4.241 into android11-5.4-lts58f42ed1cd
Linux 5.4.2418795936437
xfs: force log and push AIL to clear pinned inodes when aborting mountc76dd36875
xfs: don't reuse busy extents on extent trim4679b73a8e
xfs: consider shutdown in bmapbt cursor delete assert9355fd118b
xfs: shut down the filesystem if we screw up quota reservation48f75df5b3
xfs: report corruption only as a regular error3cce34ceb2
xfs: set inode size after creating symlinke76bd6da51
xfs: fix up non-directory creation in SGID directoriesad6613c984
xfs: remove the di_version field from struct icdinodeca4533c951
xfs: simplify a check in xfs_ioctl_setattr_check_cowextsizee078b3de3e
xfs: simplify di_flags2 inheritance in xfs_ialloc0c553917b6
xfs: only check the superblock version for dinode size calculation90aab52d06
xfs: add a new xfs_sb_version_has_v3inode helperedd36a57b4
xfs: remove the kuid/kgid conversion wrappers3ef81874f7
xfs: remove the icdinode di_uid/di_gid memberscc508a41ae
xfs: ensure that the inode uid/gid match values match the icdinode ones7a9dc79771
xfs: merge the projid fields in struct xfs_icdinode4f3252e7e1
xfs: show the proper user quota options799cafa4f3
coresight-etm4: Fix for() loop drvdata->nr_addr_cmp range bug440bdc49f7
watchdog: sbsa_wdog: Make sure the timeout programming is within the limits70ca826d3d
i2c: ocores: generate stop condition after timeout in polling mode5fb5bdcdcd
ubi: Fix deadlock caused by recursively holding work_sem0b27716f2d
mtd: ubi: wl: Fix a couple of kernel-doc issuese55588c442
ubi: Fix failure attaching when vid_hdr offset equals to (sub)page sizea652c30fa2
asymmetric_keys: log on fatal failures in PE/pkcs75809dbacc4
verify_pefile: relax wrapper length check0213f027d0
drm: panel-orientation-quirks: Add quirk for Lenovo Yoga Book X90Fb3052e5d46
efi: sysfb_efi: Add quirk for Lenovo Yoga Book X91F/L02a78e6539
i2c: imx-lpi2c: clean rx/tx buffers upon new message1ef5639744
power: supply: cros_usbpd: reclassify "default case!" as debug7169d16388
net: macb: fix a memory corruption in extended buffer descriptor modec39fa0398a
udp6: fix potential access to stale information9c46c49ad3
RDMA/core: Fix GID entry ref leak when create_ah failsad831a7079
sctp: fix a potential overflow in sctp_ifwdtsn_skipafffe0d1e6
qlcnic: check pci_reset_function resulta841f6a0a3
niu: Fix missing unwind goto in niu_alloc_channels()fcd084e199
9p/xen : Fix use after free bug in xen_9pfs_front_remove due to race condition1b77cb6f5e
mtd: rawnand: stm32_fmc2: remove unsupported EDO mode4c1d882b53
mtd: rawnand: meson: fix bitmask for length in command word2667460034
mtdblock: tolerate corrected bit-flips50dbfd9dac
btrfs: fix fast csum implementation detectionc6db5f2a31
btrfs: print checksum type and implementation at mount time8a99e6200c
Bluetooth: Fix race condition in hidp_session_threadc024219925
Bluetooth: L2CAP: Fix use-after-free in l2cap_disconnect_{req,rsp}9025cea8e0
ALSA: hda/sigmatel: fix S/PDIF out on Intel D*45* motherboards4d419195d6
ALSA: firewire-tascam: add missing unwind goto in snd_tscm_stream_start_duplex()fe158eeccc
ALSA: i2c/cs8427: fix iec958 mixer control deactivationaa23fa32e5
ALSA: hda/sigmatel: add pin overrides for Intel DP45SG motherboard62ccf2e0b1
ALSA: emu10k1: fix capture interrupt handler unlinking9a3ba7b24d
Revert "pinctrl: amd: Disable and mask interrupts on resume"2945f948aa
irqdomain: Fix mapping-creation racee8f3aea716
irqdomain: Refactor __irq_domain_alloc_irqs()3804f265c1
irqdomain: Look for existing mapping only oncee7bba7ddb4
mm/swap: fix swap_info_struct race between swapoff and get_swap_pages()fd644712bc
ring-buffer: Fix race while reader and writer are on the same pagec208b4321e
drm/panfrost: Fix the panfrost_mmu_map_fault_addr() error pathc381527918
net_sched: prevent NULL dereference if default qdisc setup failed987f599fc5
tracing: Free error logs of tracing instancesd2136f0569
can: j1939: j1939_tp_tx_dat_new(): fix out-of-bounds memory access5a74a75fc3
ftrace: Mark get_lock_parent_ip() __always_inline95bbfeb4ff
perf/core: Fix the same task check in perf_event_set_output666c25d35e
ALSA: hda/realtek: Add quirk for Clevo X370SNW83b16a60e4
nilfs2: fix sysfs interface lifetime613bf23c07
nilfs2: fix potential UAF of struct nilfs_sc_info in nilfs_segctor_thread()aa8e50688d
tty: serial: fsl_lpuart: avoid checking for transfer complete when UARTCTRL_SBK is asserted in lpuart32_tx_emptyaabba44404
tty: serial: sh-sci: Fix Rx on RZ/G2L SCI209ab5c234
tty: serial: sh-sci: Fix transmit end interrupt handler9a2a6443d6
iio: dac: cio-dac: Fix max DAC write value check for 12-bite469ebb28d
iio: adc: ti-ads7950: Set `can_sleep` flag for GPIO chipabc5b4f8cd
USB: serial: option: add Quectel RM500U-CN modemb9c11537ef
USB: serial: option: add Telit FE990 compositions38c00a22d6
usb: typec: altmodes/displayport: Fix configure initial pin assignmentf417d3fea3
USB: serial: cp210x: add Silicon Labs IFS-USB-DATACABLE IDs47132be17d
xhci: also avoid the XHCI_ZERO_64B_REGS quirk with a passthrough iommu5fccf2c546
NFSD: callback request does not use correct credential for AUTH_SYS3686380d9d
sunrpc: only free unix grouplist after RCU settles1627119153
gpio: davinci: Add irq chip flag to skip set wake0cf600ca1b
ipv6: Fix an uninit variable access bug in __ip6_make_skb()0443fff49d
sctp: check send stream number after wait_for_sndbuf93f3885211
net: don't let netpoll invoke NAPI if in xmit context0d2fa30078
icmp: guard against too small mtua3593082e0
wifi: mac80211: fix invalid drv_sta_pre_rcu_remove calls for non-uploaded sta4220f83b9f
pwm: sprd: Explicitly set .polarity in .get_state()6e1f29397d
pwm: cros-ec: Explicitly set .polarity in .get_state()dbd764e9d4
pinctrl: amd: Disable and mask interrupts on resumedd7e19f97f
pinctrl: amd: disable and mask interrupts on probe3f3e4bd3f0
pinctrl: amd: Use irqchip template387236b9e0
smb3: fix problem with null cifs super block with previous patch2e64d7b182
treewide: Replace DECLARE_TASKLET() with DECLARE_TASKLET_OLD()199197660b
Revert "treewide: Replace DECLARE_TASKLET() with DECLARE_TASKLET_OLD()"522af69af2
cgroup/cpuset: Wake up cpuset_attach_wq tasks in cpuset_cancel_attach()4311ae04b3
x86/PCI: Add quirk for AMD XHCI controller that loses MSI-X state in D3hot110d425cdf
scsi: ses: Handle enclosure with just a primary component gracefully974e2ad014
Merge 5.4.240 into android11-5.4-lts32bea3bac5
Linux 5.4.2404d4cb76636
gfs2: Always check inode size of inline inodes928240c368
firmware: arm_scmi: Fix device node validation for mailbox transport0f5c0e0a4c
net: sched: fix race condition in qdisc_graft()22d95b5449
net_sched: add __rcu annotation to netdev->qdisc14b6ad56df
ext4: fix kernel BUG in 'ext4_write_inline_data_end()'9b189af357
btrfs: scan device in non-exclusive mode45a9877d6c
s390/uaccess: add missing earlyclobber annotations to __clear_user()0c6df53647
drm/etnaviv: fix reference leak when mmaping imported buffer37958ac31f
ALSA: usb-audio: Fix regression on detection of Roland VS-1006dabafd829
ALSA: hda/conexant: Partial revert of a quirk for Lenovof3a6726878
NFSv4: Fix hangs when recovering open state after a server rebootc81e2965a9
pinctrl: at91-pio4: fix domain name assignment82c25ac3a2
xen/netback: don't do grant copy across page boundary99c8ba920f
Input: goodix - add Lenovo Yoga Book X90F to nine_bytes_report DMI table657d7c215c
cifs: fix DFS traversal oops without CONFIG_CIFS_DFS_UPCALL03af69bd67
cifs: prevent infinite recursion in CIFSGetDFSRefer()51d6573711
Input: focaltech - use explicitly signed char typef0f85f5e40
Input: alps - fix compatibility with -funsigned-char7e71d4d190
pinctrl: ocelot: Fix alt mode for ocelot70728d639e
net: mvneta: make tx buffer array agnostic704e06b979
net: dsa: mv88e6xxx: Enable IGMP snooping on user ports onlyfd7cff5066
bnxt_en: Fix typo in PCI id to device description string mapping58279cea0b
i40e: fix registers dump after run ethtool adapter self test5195de1d5f
s390/vfio-ap: fix memory leak in vfio_ap device driver78bc7f0ab9
can: bcm: bcm_tx_setup(): fix KMSAN uninit-value in vfs_write105cc26832
net/net_failover: fix txq exceeding warninge633fd26ab
regulator: Handle deferred clkbe7b622cd6
regulator: fix spelling mistake "Cant" -> "Can't"46c4993a15
ptp_qoriq: fix memory leak in probe()c122daa0fa
scsi: megaraid_sas: Fix crash after a double completion317c07d382
mtd: rawnand: meson: invalidate cache on polling ECC bitd65de5ee8b
mips: bmips: BCM6358: disable RAC flush for TP19690e34f22
dma-mapping: drop the dev argument to arch_sync_dma_for_*f6e2d76aa3
ca8210: Fix unsigned mac_len comparison with zero in ca8210_skb_tx()856fb74f60
fbdev: au1200fb: Fix potential divide by zerodeef33c081
fbdev: lxfb: Fix potential divide by zero4f5cc5ffa8
fbdev: intelfb: Fix potential divide by zero868f247e47
fbdev: nvidia: Fix potential divide by zerof3359f5fc9
sched_getaffinity: don't assume 'cpumask_size()' is fully initialized521877bf26
fbdev: tgafb: Fix potential divide by zero7f12f99b80
ALSA: hda/ca0132: fixup buffer overrun at tuning_ctl_set()9155a5958e
ALSA: asihpi: check pao in control_message()88a3c63a96
md: avoid signed overflow in slot_store()9966fc59d3
bus: imx-weim: fix branch condition evaluates to a garbage valued121f7883a
fsverity: don't drop pagecache at end of FS_IOC_ENABLE_VERITY4c24eb49ab
ocfs2: fix data corruption after failed write0c0e566f03
tun: avoid double free in tun_free_netdevd253120a58
sched/fair: Sanitize vruntime of entity being migratedc23928c70b
sched/fair: sanitize vruntime of entity being placed885c28ceae
dm crypt: add cond_resched() to dmcrypt_write()4a32a9a818
dm stats: check for and propagate alloc_percpu failuref8cbad984b
i2c: xgene-slimpro: Fix out-of-bounds bug in xgene_slimpro_i2c_xfer()8f5cbf6a8c
nilfs2: fix kernel-infoleak in nilfs_ioctl_wrap_copy()4ae966a7f6
wifi: mac80211: fix qos on mesh interfacesf558789a88
usb: chipidea: core: fix possible concurrent when switch role6b3287b147
usb: chipdea: core: fix return -EINVAL if request role is the same with current role0b2a56fe46
usb: cdns3: Fix issue with using incorrect PCI device functione9e93fdfce
dm thin: fix deadlock when swapping to thin devicecd1e320ac0
igb: revert rtnl_lock() that causes deadlock123698a5c6
fsverity: Remove WQ_UNBOUND from fsverity read workqueue0eda2004f3
usb: gadget: u_audio: don't let userspace block driver unbind44f080d7d7
scsi: core: Add BLIST_SKIP_VPD_PAGES for SKhynix H28U74301AMR223274d5c3
cifs: empty interface list when server doesn't support query interfaces299a309b98
sh: sanitize the flags on sigreturnf4c610f6ca
net: usb: qmi_wwan: add Telit 0x1080 compositione6b1fa6d06
net: usb: cdc_mbim: avoid altsetting toggling for Telit FE99004f4a1aa94
scsi: lpfc: Avoid usage of list iterator variable after loop11cdced6a0
scsi: ufs: core: Add soft dependency on governor_simpleondemand54ec697e3c
scsi: target: iscsi: Fix an error message in iscsi_check_key()9711522191
selftests/bpf: check that modifier resolves after pointer2100e37425
m68k: Only force 030 bus error if PC not in exception tabled2b3bd0d4c
ca8210: fix mac_len negative array access9e7723b684
riscv: Bump COMMAND_LINE_SIZE value to 102432518cd0fc
thunderbolt: Use const qualifier for `ring_interrupt_index`b40fe2e1f9
uas: Add US_FL_NO_REPORT_OPCODES for JMicron JMS583Gen 29189f20b4c
scsi: qla2xxx: Perform lockless command completion in abort pathda0383f0e8
hwmon (it87): Fix voltage scaling for chips with 10.9mV ADCs13493ad6a2
platform/chrome: cros_ec_chardev: fix kernel data leak from ioctla18fb433ce
Bluetooth: btsdio: fix use after free bug in btsdio_remove due to unfinished workb517808795
Bluetooth: btqcomsmd: Fix command timeout after setting BD addressdcd4d36462
net: mdio: thunder: Add missing fwnode_handle_put()707335918f
hvc/xen: prevent concurrent accesses to the shared ring83e442eba3
nvme-tcp: fix nvme_tcp_term_pdu to match specd673ae1840
net/sonic: use dma_mapping_error() for error checkb72f453e88
erspan: do not use skb_mac_header() in ndo_start_xmit()82e07cc5a6
atm: idt77252: fix kmemleak when rmmod idt77252fd6f643dea
net/mlx5: Read the TC mapping of all priorities on ETS queryd69c2ded95
bpf: Adjust insufficient default bpf_jit_limit97674f4cd0
keys: Do not cache key in task struct if key is requested from kernel threadf8ee2c8b0d
net/ps3_gelic_net: Use dma_mapping_error6d7e18b1d0
net/ps3_gelic_net: Fix RX sk_buff length0e5c7d00ec
net: qcom/emac: Fix use after free bug in emac_remove due to race conditiona07ec453e8
xirc2ps_cs: Fix use after free bug in xirc2ps_detach42d72c6d1e
qed/qed_sriov: guard against NULL derefs from qed_iov_get_vf_infof2111c791d
net: usb: smsc95xx: Limit packet length to skb->len5c4d71424d
scsi: scsi_dh_alua: Fix memleak for 'qdata' in alua_activate()283fdc5cfb
i2c: imx-lpi2c: check only for enabled interrupt flags90116b8289
igbvf: Regard vf reset nack as success584771762c
intel/igbvf: free irq on the error path in igbvf_request_msix()6999f85418
iavf: fix non-tunneled IPv6 UDP packet type and hashing4e752d2bae
iavf: fix inverted Rx hash condition leading to disabled hash6fe078c286
power: supply: da9150: Fix use after free bug in da9150_charger_remove due to race condition754838aa02
net: tls: fix possible race condition between do_tls_getsockopt_conf() and do_tls_setsockopt_conf()a03da9c9ae
Merge 5.4.239 into android11-5.4-lts09b1a76e78
Linux 5.4.239f0c95f229a
selftests: Fix the executable permissions for fib_tests.sh1221512b02
BACKPORT: mac80211_hwsim: notify wmediumd of used MAC addresses8ac436fa26
FROMGIT: mac80211_hwsim: add concurrent channels scanning support over virtiob6d6caabaf
Merge branch 'android11-5.4' into android11-5.4-lts5fd4376e12
Revert "HID: core: Provide new max_buffer_size attribute to over-ride the default"6efc429d3f
Revert "HID: uhid: Over-ride the default maximum data buffer value with our own"1e58c0c8e9
Merge 5.4.238 into android11-5.4-lts6849d8c4a6
Linux 5.4.238eb7716a054
HID: uhid: Over-ride the default maximum data buffer value with our ownb687ac70e6
HID: core: Provide new max_buffer_size attribute to over-ride the default144019e813
PCI: Unify delay handling for reset and resumed2130f37a4
s390/ipl: add missing intersection check to ipl_report handling3f5a833dca
serial: 8250_em: Fix UART port typec5afb97d1b
drm/i915: Don't use stolen memory for ring buffers with LLC8d26a4fecc
x86/mm: Fix use of uninitialized buffer in sme_enable()a976ff743e
fbdev: stifb: Provide valid pixelclock and add fb_check_var() checksac58b88ccb
ftrace: Fix invalid address access in lookup_rec() when index is 065e4c9a6d0
KVM: nVMX: add missing consistency checks for CR0 and CR46fe55dce9d
tracing: Make tracepoint lockdep check actually test something780f69a268
tracing: Check field value in hist_field_name()f1e3a20c60
interconnect: fix mem leak when freeing nodes325608ab60
tty: serial: fsl_lpuart: skip waiting for transmission complete when UARTCTRL_SBK is assertedc16cbd8233
ext4: fix possible double unlock when moving a directory6a1bd14d5e
sh: intc: Avoid spurious sizeof-pointer-div warningbbf5eada43
drm/amdkfd: Fix an illegal memory access2c96c52aea
ext4: fix task hung in ext4_xattr_delete_inode20ba6f8a80
ext4: fail ext4_iget if special inode unallocatedab519e2989
jffs2: correct logic when creating a hole in jffs2_write_begin00bfc67c65
mmc: atmel-mci: fix race between stop command and start of next command75f6faae2d
media: m5mols: fix off-by-one loop termination error9eb394919c
hwmon: (ina3221) return prober error code26c176ce90
hwmon: (xgene) Fix use after free bug in xgene_hwmon_remove due to race condition13efd488d3
hwmon: (adt7475) Fix masking of hysteresis registers0d3095e958
hwmon: (adt7475) Display smoothing attributes in correct order674fce59d6
ethernet: sun: add check for the mdesc_grab()71da5991b6
net/iucv: Fix size of interrupt datae0d07a3203
net: usb: smsc75xx: Move packet length check to prevent kernel panic in skb_pull5c06bd3de1
ipv4: Fix incorrect table ID in IOCTL pathc4fcfbf80c
block: sunvdc: add check for mdesc_grab() returning NULL04c3942088
nvmet: avoid potential UAF in nvmet_req_complete()9fabdd7905
net: usb: smsc75xx: Limit packet length to skb->lenb0c202a8dc
nfc: st-nci: Fix use after free bug in ndlc_remove due to race condition668de67d41
net: phy: smsc: bail out in lan87xx_read_status if genphy_read_status fails5aaab217c8
net: tunnels: annotate lockless accesses to dev->needed_headroomcba20ade78
qed/qed_dev: guard against a possible division by zero6e18f66b70
i40e: Fix kernel crash during reboot when adapter is in recovery modef0216046ae
ipvlan: Make skb->skb_iif track skb->dev for l3s mode0f9c1f26d4
nfc: pn533: initialize struct pn533_out_arg properly442aa78ed7
tcp: tcp_make_synack() can be called from process context88c3d3bb64
scsi: core: Fix a procfs host directory removal regression4b4f5e34f0
scsi: core: Fix a comment in function scsi_host_dev_release()0d59732f2a
netfilter: nft_redir: correct value of inet type `.maxattrs`90279211e9
ALSA: hda: Match only Intel devices with CONTROLLER_IN_GPU()0b7057c523
ALSA: hda: Add Intel DG2 PCI ID and HDMI codec vid5bb9fcaadb
ALSA: hda: Add Alderlake-S PCI ID and HDMI codec vid9efbdc743d
ALSA: hda - controller is in GPU on the DG1fc52e51c2c
ALSA: hda - add Intel DG1 PCI and HDMI ids090305c361
scsi: mpt3sas: Fix NULL pointer access in mpt3sas_transport_port_add()b8849e31a0
docs: Correct missing "d_" prefix for dentry_operations member d_weak_revalidate9e45e45715
clk: HI655X: select REGMAP instead of depending on itdac08e46f0
drm/meson: fix 1px pink line on GXM when scaling video overlayd7e48aa17a
cifs: Move the in_send statistic to __smb_send_rqst()06c208002d
drm/panfrost: Don't sync rpm suspension after mmu flushingc9900d1d86
xfrm: Allow transport-mode states with AF_UNSPEC selector4008fb9ad4
ext4: fix cgroup writeback accounting with fs-layer encryption6eb1bfc752
ANDROID: preserve CRC for __irq_domain_add()812963276d
Merge 5.4.237 into android11-5.4-ltsfd02046fbd
Merge 5.4.236 into android11-5.4-lts48b8328041
Revert "drm/exynos: Don't reset bridge->next"7edc66298a
Revert "drm/bridge: Rename bridge helpers targeting a bridge chain"8d15e5fac1
Revert "drm/bridge: Introduce drm_bridge_get_next_bridge()"aac98e0c73
Revert "drm: Initialize struct drm_crtc_state.no_vblank from device settings"af8848e0d9
Revert "drm/msm/mdp5: Add check for kzalloc"e4b5c766f5
Linux 5.4.2376a16810068
s390/dasd: add missing discipline function7a934a77f1
UML: define RUNTIME_DISCARD_EXIT87fcce7a6f
sh: define RUNTIME_DISCARD_EXITeb9dbb70cd
s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld < 2.36219cc98501
powerpc/vmlinux.lds: Don't discard .rela* for relocatable builds4eede1173f
powerpc/vmlinux.lds: Define RUNTIME_DISCARD_EXITd0fcf59038
arch: fix broken BuildID for arm64 and riscva4bd6d4df3
x86, vmlinux.lds: Add RUNTIME_DISCARD_EXIT to generic DISCARDS1aed78cfda
drm/i915: Don't use BAR mappings for ring buffers with LLC52fc917855
ipmi:watchdog: Set panic count to proper value on a panicdbfae25b01
ipmi/watchdog: replace atomic_add() and atomic_sub()f266cdd679
media: ov5640: Fix analogue gain controlfc9bc83150
PCI: Add SolidRun vendor ID094a073605
macintosh: windfarm: Use unsigned type for 1-bit bitfields737985dbcb
alpha: fix R_ALPHA_LITERAL reloc for large modules2fea235ef0
MIPS: Fix a compilation issue6b06c4ae64
ext4: Fix deadlock during directory renamea99a61d9e1
riscv: Use READ_ONCE_NOCHECK in imprecise unwinding stack mode1a517302db
net/smc: fix fallback failed while sendmsg with fastopen3a747490f9
scsi: megaraid_sas: Update max supported LD IDs to 240d800996fcf
btf: fix resolving BTF_KIND_VAR after ARRAY, STRUCT, UNION, PTR9f2e063dcb
netfilter: tproxy: fix deadlock due to missing BH disable16f3aae1aa
bnxt_en: Avoid order-5 memory allocation for TPA data9dc16be373
net: caif: Fix use-after-free in cfusbl_device_notify()8018aa0863
net: lan78xx: fix accessing the LAN7800's internal phy specific registers from the MAC driver1c618f150c
net: usb: lan78xx: Remove lots of set but unused 'ret' variablese4e5006c13
selftests: nft_nat: ensuring the listening side is up before starting the client783f218940
ila: do not generate empty messages in ila_xlat_nl_cmd_get_mapping()0a3664a105
nfc: fdp: add null check of devm_kmalloc_array in fdp_nci_i2c_read_device_properties43f33642f2
drm/msm/a5xx: fix setting of the CP_PREEMPT_ENABLE_LOCAL register8dac5a63cf
ext4: Fix possible corruption when moving a directory891a3cba42
scsi: core: Remove the /proc/scsi/${proc_name} directory earlier57f78226b1
cifs: Fix uninitialized memory read in smb3_qfs_tcon()a6e44cb215
SMB3: Backup intent flag missing from some more ops1b48c70fee
iommu/vt-d: Fix PASID directory pointer coherency985d9fa06b
irqdomain: Fix domain registration race01ed8ff22a
irqdomain: Change the type of 'size' in __irq_domain_add() to be consistent36c5682cbb
ipmi:ssif: Add a timer between request retriese8ba1b693a
ipmi:ssif: Increase the message retry time89fb3fa848
ipmi:ssif: Remove rtc_us_timerd1a7f56b20
ipmi:ssif: resend_msg() cannot fail59349bfcff
ipmi:ssif: make ssif_i2c_send() void5e97dc748d
iommu/amd: Add a length limitation for the ivrs_acpihid command-line parameter774c63f536
iommu/amd: Fix ill-formed ivrs_ioapic, ivrs_hpet and ivrs_acpihid options11852cc78f
iommu/amd: Add PCI segment support for ivrs_[ioapic/hpet/acpihid] commands3cdf19a29c
nfc: change order inside nfc_se_io error path0d8a6c9a64
ext4: zero i_disksize when initializing the bootloader inode74d775083e
ext4: fix WARNING in ext4_update_inline_datab36093c6f7
ext4: move where set the MAY_INLINE_DATA flag is setc24f838493
ext4: fix another off-by-one fsmap error on 1k block filesystemsaee90b0278
ext4: fix RENAME_WHITEOUT handling for inline directories1277ba3db6
drm/connector: print max_requested_bpc in state debugfse40c1e9da1
x86/CPU/AMD: Disable XSAVES on AMD family 0x176631c8da02
fs: prevent out-of-bounds array speculation when closing a file descriptorb829e8b6e1
Linux 5.4.2366e55d84223
staging: rtl8192e: Remove call_usermodehelper starting RadioPower.sh9498448b9e
staging: rtl8192e: Remove function ..dm_check_ac_dc_power calling a script6ee84b8b79
wifi: cfg80211: Partial revert "wifi: cfg80211: Fix use after free for wext"0d9d32f54c
Merge 5.4.235 into android11-5.4-lts126ee8982b
Linux 5.4.235d03bc164f3
dt-bindings: rtc: sun6i-a31-rtc: Loosen the requirements on the clocks6ab6705463
media: uvcvideo: Fix race condition with usb_kill_urb0b8962c64b
media: uvcvideo: Provide sync and async uvc_ctrl_status_event2b1c5145b0
tcp: Fix listen() regression in 5.4.229.800a1c4c8a
Bluetooth: hci_sock: purge socket queues in the destruct() callback27c64d90d9
x86/resctl: fix scheduler confusion with 'current'81da72aaf5
x86/resctrl: Apply READ_ONCE/WRITE_ONCE to task_struct.{rmid,closid}bde541a57b
net: tls: avoid hanging tasks on the tx_lockd94fbfcd9a
phy: rockchip-typec: Fix unsigned comparison with less than zerof0ee43d61d
PCI: Add ACS quirk for Wangxun NICsf6d3aee1c6
kernel/fail_function: fix memory leak with using debugfs_lookup()195c1e9f45
usb: uvc: Enumerate valid values for color matchingda4e715a46
USB: ene_usb6250: Allocate enough memory for full object1170979668
usb: host: xhci: mvebu: Iterate over array indexes instead of using pointer mathf5b76a8166
iio: accel: mma9551_core: Prevent uninitialized variable in mma9551_read_config_word()11b4b3b769
iio: accel: mma9551_core: Prevent uninitialized variable in mma9551_read_status_word()b854c66dd7
tools/iio/iio_utils:fix memory leakea9b587896
mei: bus-fixup:upon error print return values of send and receivec7ca2ca12a
tty: serial: fsl_lpuart: disable the CTS when send break signal953a4a352a
tty: fix out-of-bounds access in tty_driver_lookup_tty()70369a1117
staging: emxx_udc: Add checks for dma_alloc_coherent()2072ed7c1a
media: uvcvideo: Silence memcpy() run-time false positive warningse2cc773f1f
media: uvcvideo: Quirk for autosuspend in Logitech B910 and C910e4c535ecce
media: uvcvideo: Handle errors from calls to usb_string4e4e6ca62e
media: uvcvideo: Handle cameras with invalid descriptors7195e642b4
mfd: arizona: Use pm_runtime_resume_and_get() to prevent refcnt leakfde59e273b
firmware/efi sysfb_efi: Add quirk for Lenovo IdeaPad Duet 32cc6a3e98f
tracing: Add NULL checks for buffer in ring_buffer_free_read_page()4cfeb55a10
thermal: intel: BXT_PMIC: select REGMAP instead of depending on ite23f1d9e6e
thermal: intel: quark_dts: fix error pointer dereference584f664c57
scsi: ipr: Work around fortify-string warninge93bda4ebb
rtc: sun6i: Always export the internal oscillator728b047f4c
rtc: sun6i: Make external 32k oscillator optional9c7c1cf29f
vc_screen: modify vcs_size() handling in vcs_read()821362a2df
tcp: tcp_check_req() can be called from process context77606e383e
ARM: dts: spear320-hmi: correct STMPE GPIO compatibledda4f0a424
net/sched: act_sample: fix action bind logic271eed1736
nfc: fix memory leak of se_io context in nfc_genl_se_iof81af781f9
net/mlx5: Geneve, Fix handling of Geneve object id as error code4b71f2b543
9p/rdma: unmap receive dma buffer in rdma_request()/post_recv()7cc9dbae8a
9p/xen: fix connection sequence9d1c625c99
9p/xen: fix version parsingedfba7b322
net: fix __dev_kfree_skb_any() vs drop monitorcec326443f
sctp: add a refcnt in sctp_stream_priorities to avoid a nested loopaba298b356
ipv6: Add lwtunnel encap size of all siblings in nexthop calculation5d0d38805d
netfilter: ctnetlink: fix possible refcount leak in ctnetlink_create_conntrack()fe65d6f26b
watchdog: pcwd_usb: Fix attempting to access uninitialized memory59e391b3fc
watchdog: Fix kmemleak in watchdog_cdev_register7c428fc974
watchdog: at91sam9_wdt: use devm_request_irq to avoid missing free_irq() in error patha8816afcaf
x86: um: vdso: Add '%rcx' and '%r11' to the syscall clobber listb5be23f6ae
ubi: ubi_wl_put_peb: Fix infinite loop when wear-leveling work failed1cb14c06d6
ubi: Fix UAF wear-leveling entry in eraseblk_count_seq_show()7fcbc41d76
ubifs: ubifs_writepage: Mark page dirty after writing inode failed510b80abe8
ubifs: dirty_cow_znode: Fix memleak in error handling path0875edcad4
ubifs: Re-statistic cleaned znode count if commit failed234c53e574
ubi: Fix possible null-ptr-deref in ubi_free_volume()1f206002c6
ubifs: Fix memory leak in alloc_wbufs()07b60f7452
ubi: Fix unreferenced object reported by kmemleak in ubi_resize_volume()9c8be1f165
ubi: Fix use-after-free when volume resizing failede86d1b2bb7
ubifs: Reserve one leb for each journal head while doing budget82c096d0c9
ubifs: do_rename: Fix wrong space budget when target inode's nlink > 1bf8f549584
ubifs: Fix wrong dirty space budget for dirty inodef29168fb52
ubifs: Rectify space budget for ubifs_xrename()8666030627
ubifs: Rectify space budget for ubifs_symlink() if symlink is encrypted4ca0d74622
ubifs: Fix build errors as symbol undefinedf7adb740f9
ubi: ensure that VID header offset + VID header size <= alloc, size6480c3a127
um: vector: Fix memory leak in vector_config01c92f033b
fs: f2fs: initialize fsdata in pagecache_write()c4a89ebe92
f2fs: use memcpy_{to,from}_page() where possibleb915fac020
pwm: stm32-lp: fix the check on arr and cmp registers update1abd385802
pwm: sifive: Always let the first pwm_apply_state succeed30a3636fe6
pwm: sifive: Reduce time the controller lock is held62462a5b4f
fs/jfs: fix shift exponent db_agl2size negative7a6fb69bbc
net/sched: Retire tcindex classifierb3d346ece9
kbuild: Port silent mode detection to future gnu make.68b0cdcfa1
wifi: ath9k: use proper statements in conditionals96a8424a27
drm/radeon: Fix eDP for single-display iMac11,26e6173886f
drm/i915/quirks: Add inverted backlight quirk for HP 14-r206nvefc72cceb7
PCI: Avoid FLR for AMD FCH AHCI adaptersbcc1bafb06
PCI: hotplug: Allow marking devices as disconnected during bind/unbind2a50583117
PCI/PM: Observe reset delay irrespective of bridge_d340af9a6dee
scsi: ses: Fix slab-out-of-bounds in ses_intf_remove()79ec5dd5fb
scsi: ses: Fix possible desc_ptr out-of-bounds accesses8e454aba72
scsi: ses: Fix possible addl_desc_ptr out-of-bounds accesses467afb1dd6
scsi: ses: Fix slab-out-of-bounds in ses_enclosure_data_process()6069e04a92
scsi: ses: Don't attach if enclosure has no components70e9a93f09
scsi: qla2xxx: Fix erroneous link down3a564de3a2
scsi: qla2xxx: Fix DMA-API call trace on NVMe LS requests05a0f6fa52
scsi: qla2xxx: Fix link failure in NPIV environment18d347d1b0
ktest.pl: Add RUN_TIMEOUT option with default unlimited150ee1fc90
ktest.pl: Fix missing "end_monitor" when machine check fails2f42bfc54d
ktest.pl: Give back console on Ctrt^C on monitorb53d209d71
mm/thp: check and bail out if page in deferred queue already24900f3596
mm: memcontrol: deprecate charge moving964e9e1288
media: ipu3-cio2: Fix PM runtime usage_count in driver unbind58c0d0b2d4
mips: fix syscall_get_nr229edf8d7b
alpha: fix FEN fault handling9787b328c4
rbd: avoid use-after-free in do_rbd_add() when rbd_dev_create() fails7055754dd0
ARM: dts: exynos: correct TMU phandle in Odroid XU7b6707d66e
ARM: dts: exynos: correct TMU phandle in Exynos43c4a56ef7c
dm flakey: don't corrupt the zero pagea2be4225c3
dm flakey: fix logic when corrupting a bio64fbe39232
thermal: intel: powerclamp: Fix cur_state for multi package system6f1959c17d
wifi: cfg80211: Fix use after free for wext342cb34c52
wifi: rtl8xxxu: Use a longer retry limit of 48a92b67e768
ext4: refuse to create ea block when umounted3b28c799a1
ext4: optimize ea_inode block expansion87005d0ab5
ALSA: hda/realtek: Add quirk for HP EliteDesk 800 G6 Tower PC84ed1ade54
ALSA: ice1712: Do not left ice->gpio_mutex locked in aureon_add_controls()df129eaa2b
irqdomain: Drop bogus fwspec-mapping error handling72232dbe14
irqdomain: Fix disassociation race2101663687
irqdomain: Fix association racef9d9320189
ima: Align ima_file_mmap() parameters with mmap_file LSM hook4d47cba074
Documentation/hw-vuln: Document the interaction between IBRS and STIBP34c1b60e7a
x86/speculation: Allow enabling STIBP with legacy IBRS979e197968
x86/microcode/AMD: Fix mixed steppings support727bc2c285
x86/microcode/AMD: Add a @cpu parameter to the reloading functions4c26edf2ea
x86/microcode/amd: Remove load_microcode_amd()'s bsp parametera0415b79dd
x86/kprobes: Fix arch_check_optimized_kprobe check within optimized_kprobe rangeec206a38d3
x86/kprobes: Fix __recover_optprobed_insn check optimizing logice4ce333cc6
x86/reboot: Disable SVM, not just VMX, when stopping CPUs37459195d9
x86/reboot: Disable virtualization in an emergency if SVM is supported87459b9fce
x86/crash: Disable virt in core NMI crash handler to avoid double shootdownee80fb1dca
x86/virt: Force GIF=1 prior to disabling SVM (for reboot flows)4c9812d989
KVM: s390: disable migration mode when dirty tracking is disabled10c2a20d73
KVM: Destroy target device if coalesced MMIO unregistration fails38a1f5e9fc
udf: Fix file corruption when appending just after end of preallocated extentd747b31e29
udf: Detect system inodes linked into directory hierarchyce17ef97de
udf: Preserve link count of system files7bd8d9e1cf
udf: Do not update file length for failed writes to inline files3d20e3b768
udf: Do not bother merging very long extents4e41b1c5a2
udf: Truncate added extents on failed expansiondee96928d8
ocfs2: fix non-auto defrag path not working issue669134a66d
ocfs2: fix defrag path triggering jbd2 ASSERT68a47ca958
f2fs: fix cgroup writeback accounting with fs-layer encryption2bef8314fc
f2fs: fix information leak in f2fs_move_inline_dirents()3776ef785e
fs: hfsplus: fix UAF issue in hfsplus_put_supereda6879272
hfs: fix missing hfs_bnode_get() in __hfs_bnode_create8ecde537ed
ARM: dts: exynos: correct HDMI phy compatible in Exynos4e71e6fa07f
s390/kprobes: fix current_kprobe never cleared after kprobes reenter18075c0dc3
s390/kprobes: fix irq mask clobbering on kprobe reenter from post_handlerc5db76fcdd
s390: discard .interp sectiona9391f8bc9
ipmi_ssif: Rename idle state and check0ff4c222bd
rtc: pm8xxx: fix set-alarm race69b8af77ef
firmware: coreboot: framebuffer: Ignore reserved pixel color bits791402dd05
wifi: rtl8xxxu: fixing transmisison failure for rtl8192eu3132aa35cf
nfsd: zero out pointers after putting nfsd_files on COPY setup error38b4d3eacb
dm cache: add cond_resched() to various workqueue loops3b46b2cb91
dm thin: add cond_resched() to various workqueue loops2c055b6a07
drm: panel-orientation-quirks: Add quirk for Lenovo IdeaPad Duet 3 10IGL5718ce68b3a
pinctrl: at91: use devm_kasprintf() to avoid potential leaks4000384684
hwmon: (coretemp) Simplify platform device handling5026260ac2
regulator: s5m8767: Bounds check id indexing into arrays12527ae49d
regulator: max77802: Bounds check regulator id against opmode7fae534a30
ASoC: kirkwood: Iterate over array indexes instead of using pointer math90c278c6d0
docs/scripts/gdb: add necessary make scripts_gdb step3a9a4a9725
drm/msm/dsi: Add missing check for alloc_ordered_workqueuef9f55fc649
drm/radeon: free iio for atombios when driver shutdown5ccd8d09fe
HID: Add Mapping for System Microphone Mute341a4c04ed
drm/omap: dsi: Fix excessive stack usaged236103782
drm/amd/display: Fix potential null-deref in dm_resume5bc391944d
uaccess: Add minimum bounds check on kernel buffer size0467681f09
coda: Avoid partial allocation of sig_inputArgs1a98c4d926
net/mlx5: fw_tracer: Fix debug print21856d5615
ACPI: video: Fix Lenovo Ideapad Z570 DMI matchc727c1eb58
wifi: mt76: dma: free rx_head in mt76_dma_rx_cleanup51c0dca573
m68k: Check syscall_trace_enter() return code87363d1ab5
net: bcmgenet: Add a check for oversized packetsfe00ab1eb3
ACPI: Don't build ACPICA with '-Os'8ec82cfe4e
ice: add missing checks for PF vsi typef81c0d484a
inet: fix fast path in __inet_hash_connect()67e4519afb
wifi: mt7601u: fix an integer underflow423a1297ea
wifi: brcmfmac: ensure CLM version is null-terminated to prevent stack-out-of-boundsf3a324362b
x86/bugs: Reset speculation control settings on initc8157f67b0
timers: Prevent union confusion from unexpected restart_syscall()f570968d01
thermal: intel: Fix unsigned comparison with less than zero596d1fea05
rcu: Suppress smp_processor_id() complaint in synchronize_rcu_expedited_wait()17dbe90e13
wifi: brcmfmac: Fix potential stack-out-of-bounds in brcmf_c_preinit_dcmds()9e8bf9f95f
blk-iocost: fix divide by 0 error in calc_lcoefs()f10001af0f
ARM: dts: exynos: Use Exynos5420 compatible for the MIPI video phydae4d5ae6b
udf: Define EFSCORRUPTED error code824b167fa8
rpmsg: glink: Avoid infinite loop on intent for missing channela41bb59eff
media: usb: siano: Fix use after free bugs caused by do_submit_urb2a72e3b6bb
media: i2c: ov7670: 0 instead of -EINVAL was returnedd120334278
media: rc: Fix use-after-free bugs caused by ene_tx_irqsim()448ce1cd50
media: i2c: ov772x: Fix memleak in ov772x_probe()086a80b842
media: ov5675: Fix memleak in ov5675_init_controls()ec6bd0dccd
powerpc: Remove linker flag from KBUILD_AFLAGS44aef56083
media: platform: ti: Add missing check for devm_regulator_getfc85fb5763
remoteproc: qcom_q6v5_mss: Use a carveout to authenticate modem headers3acbec356d
MIPS: vpe-mt: drop physical_memsizea3c9200405
MIPS: SMP-CPS: fix build error when HOTPLUG_CPU not set1abc7be57c
powerpc/eeh: Set channel state after notifying the drivers7719aba7a3
powerpc/eeh: Small refactor of eeh_handle_normal_event()a39becb905
powerpc/rtas: ensure 4KB alignment for rtas_data_buf0616586eef
powerpc/rtas: make all exports GPLd8ca498591
powerpc/pseries/lparcfg: add missing RTAS retry status handling421c59c23a
powerpc/pseries/lpar: add missing RTAS retry status handling2c5ad2d642
clk: Honor CLK_OPS_PARENT_ENABLE in clk_core_is_enabled()4d178dc25f
powerpc/powernv/ioda: Skip unallocated resources when mapping to PEb1c1b6da5a
clk: qcom: gpucc-sdm845: fix clk_dis_wait being programmed for CX GDSCe3617778eb
Input: ads7846 - don't check penirq immediately for 7845ea9c4fbfda
Input: ads7846 - don't report pressure for ads784517761a1c7f
clk: renesas: cpg-mssr: Remove superfluous check in resume code8ff19db903
clk: renesas: cpg-mssr: Use enum clk_reg_layout instead of a boolean flag330b70949c
clk: renesas: cpg-mssr: Fix use after free if cpg_mssr_common_init() failedf34eb1e433
mtd: rawnand: sunxi: Fix the size of the last OOB regioncdfdd882fa
clk: qcom: gcc-qcs404: fix names of the DSI clocks used as parentsb419e91378
clk: qcom: gcc-qcs404: disable gpll[04]_out_aux parents588edb4fb1
mfd: pcf50633-adc: Fix potential memleak in pcf50633_adc_async_read()6e0a0eb18e
selftests/ftrace: Fix bash specific "==" operator16a35042ff
sparc: allow PM configs for sparc32 COMPILE_TEST090a22f599
perf tools: Fix auto-complete on aarch645d32f3e922
perf llvm: Fix inadvertent file creationce43565a6c
gfs2: jdata writepage fix3524d6da0f
cifs: Fix warning and UAF when destroy the MR list324c0c34ff
cifs: Fix lost destroy smbd connection when MR allocate faileda22f1ecab6
nfsd: fix race to check ls_layouts5a195fa41d
hid: bigben_probe(): validate report count9f525559ea
HID: asus: Fix mute and touchpad-toggle keys on Medion Akoya E1239Tbc786dfeb7
HID: asus: Add support for multi-touch touchpad on Medion Akoya E1239Tbad4a822a1
HID: asus: Add report_size to struct asus_touchpad_info63792d0ae9
HID: asus: Only set EV_REP if we are adding a mapping25e14bf0c8
HID: bigben: use spinlock to safely schedule workers715edb0109
HID: bigben_worker() remove unneeded check on report_field12533ad854
HID: bigben: use spinlock to protect concurrent accesses05cb432c09
ASoC: soc-dapm.h: fixup warning struct snd_pcm_substream not declared84beaa3e2e
ASoC: dapm: declare missing structure prototypesd6250e00bf
spi: synquacer: Fix timeout handling in synquacer_spi_transfer_one()b89d2ed564
dm: remove flush_scheduled_work() during local_exit()e6d9a876d9
hwmon: (mlxreg-fan) Return zero speed for broken fan870a0f519a
spi: bcm63xx-hsspi: Fix multi-bit mode settingdd271f1798
spi: bcm63xx-hsspi: fix pm_runtime904b717bb5
scsi: aic94xx: Add missing check for dma_map_single()3414be1c8c
hwmon: (ltc2945) Handle error case in ltc2945_value_store75a1c3f822
gpio: vf610: connect GPIO label to dev name584cb84e2c
ASoC: soc-compress.c: fixup private_data on snd_soc_new_compress()a161f1d92a
drm/mediatek: Clean dangling pointer on bind error pathb8b166db78
drm/mediatek: Drop unbalanced obj unref367c80fb34
drm/mediatek: Use NULL instead of 0 for NULL pointera0555f90d8
drm/mediatek: remove cast to pointers passed to kfree2b59e87c92
gpu: host1x: Don't skip assigning syncpoints to channels3975ea6eaf
drm/msm/mdp5: Add check for kzalloc2a8bb9dce7
drm: Initialize struct drm_crtc_state.no_vblank from device settings9b2f584490
drm/bridge: Introduce drm_bridge_get_next_bridge()bb08be7232
drm/bridge: Rename bridge helpers targeting a bridge chain2c33a6141d
drm/exynos: Don't reset bridge->nextdadd30fcc7
drm/msm/dpu: Add check for pstatesa6afb8293e
drm/msm/dpu: Add check for cstate8f9fdc830d
drm/msm: use strscpy instead of strncpyd7ea84cddf
drm/mipi-dsi: Fix byte order of 16-bit DCS set/get brightnessa9eafb0448
ALSA: hda/ca0132: minor fix for allocation sizea80767caed
ASoC: fsl_sai: initialize is_dsp_mode flag95ab6d7905
pinctrl: stm32: Fix refcount leak in stm32_pctrl_get_irq_domainfc34608fa2
drm/msm/hdmi: Add missing check for alloc_ordered_workqueue62430b3210
gpu: ipu-v3: common: Add of_node_put() for reference returned by of_graph_get_port_by_id()31701e54d3
drm/vc4: dpi: Fix format mapping for RGB565d66f26b93c
drm/vc4: dpi: Add option for inverting pixel clock and output enable7ddd8a5ecf
drm/bridge: megachips: Fix error handling in i2c_register_driver()d56e589f8b
drm: mxsfb: DRM_MXSFB should depend on ARCH_MXS || ARCH_MXCc879003a6f
drm/fourcc: Add missing big-endian XRGB1555 and RGB565 formatsc82ca67ca0
selftest: fib_tests: Always cleanup before exitc31985922e
selftests/net: Interpret UDP_GRO cmsg data as an int value6165747888
irqchip/irq-bcm7120-l2: Set IRQ_LEVEL for level triggered interrupts3947b16613
irqchip/irq-brcmstb-l2: Set IRQ_LEVEL for level triggered interruptsd772090078
can: esd_usb: Move mislocated storage of SJA1000_ECC_SEG bits in case of a bus error3cf2181e43
thermal/drivers/hisi: Drop second sensor hi366021c701cbc8
wifi: mac80211: make rate u32 in sta_set_rate_info_rx()b70d56e728
crypto: crypto4xx - Call dma_unmap_page when donea3b75b1e76
wifi: mwifiex: fix loop iterator in mwifiex_update_ampdu_txwinsize()c002d27414
wifi: iwl4965: Add missing check for create_singlethread_workqueue()7e594abc04
wifi: iwl3945: Add missing check for create_singlethread_workqueue5de7a4254e
treewide: Replace DECLARE_TASKLET() with DECLARE_TASKLET_OLD()9198eefd10
usb: gadget: udc: Avoid tasklet passing a globalcf04507f42
RISC-V: time: initialize hrtimer based broadcast clock event device142bcf7240
m68k: /proc/hardware should depend on PROC_FSc4d8c23efe
crypto: rsa-pkcs1pad - Use akcipher_request_complete8c1447495f
rds: rds_rm_zerocopy_callback() correct order for list_add_tail()291e6a6820
libbpf: Fix alen calculation in libbpf_nla_dump_errormsg()60aaccf16d
Bluetooth: L2CAP: Fix potential user-after-freed19bd48535
OPP: fix error checking in opp_migrate_dentry()522d319cda
tap: tap_open(): correctly initialize socket uidd92d87000e
tun: tun_chr_open(): correctly initialize socket uid11c9c72272
net: add sock_init_data_uid()276ccbc15f
mptcp: add sk_stop_timer_sync helper07fceab320
irqchip/ti-sci: Fix refcount leak in ti_sci_intr_irq_domain_probec7d78d36e1
irqchip/irq-mvebu-gicp: Fix refcount leak in mvebu_gicp_probe9e79ac4f70
irqchip/alpine-msi: Fix refcount leak in alpine_msix_init_domains7cce0c9fdd
net/mlx5: Enhance debug print in page allocation failuredbd6ae0956
powercap: fix possible name leak in powercap_register_zone()63551e4b7c
crypto: seqiv - Handle EBUSY correctlyc61e7d182e
crypto: essiv - Handle EBUSY correctlybfef5e3e73
crypto: essiv - remove redundant null pointer check before kfree2d1ac2f2e2
crypto: ccp - Failure on re-initialization due to duplicate sysfs filename40627e6e29
ACPI: battery: Fix missing NUL-termination with large stringsbf6dc175a2
wifi: ath9k: Fix potential stack-out-of-bounds write in ath9k_wmi_rsp_callback()cd83167670
wifi: ath9k: hif_usb: clean up skbs if ath9k_hif_usb_rx_stream() failsc3ff385b94
ath9k: htc: clean up statistics macrosa49c13ecce
ath9k: hif_usb: simplify if-if to if-else564bc2222b
wifi: ath9k: htc_hst: free skb in ath9k_htc_rx_msg() if there is no callback function17a0e61cd9
wifi: orinoco: check return value of hermes_write_wordrec()573dfeba2d
ACPICA: nsrepair: handle cases without a return value correctly987b0ff1b9
lib/mpi: Fix buffer overrun when SG is too longb55ada30b5
genirq: Fix the return type of kstat_cpu_irqs_sum()6b9f61c8b8
ACPICA: Drop port I/O validation for some regionsc300697690
crypto: x86/ghash - fix unaligned access in ghash_setkey()0c4f20c8fc
wifi: wl3501_cs: don't call kfree_skb() under spin_lock_irqsave()14ba31bb1b
wifi: libertas: cmdresp: don't call kfree_skb() under spin_lock_irqsave()38ef777203
wifi: libertas: main: don't call kfree_skb() under spin_lock_irqsave()1879fe9e40
wifi: libertas: if_usb: don't call kfree_skb() under spin_lock_irqsave()0b7b734744
wifi: libertas_tf: don't call kfree_skb() under spin_lock_irqsave()318005127c
wifi: brcmfmac: unmap dma buffer in brcmf_msgbuf_alloc_pktid()d869a18950
wifi: brcmfmac: fix potential memory leak in brcmf_netdev_start_xmit()a12610e837
wifi: wilc1000: fix potential memory leak in wilc_mac_xmit()a6059cf02a
wilc1000: let wilc_mac_xmit() return NETDEV_TX_OK112c1af02b
wifi: ipw2200: fix memory leak in ipw_wdev_init()ba1d3623fe
wifi: ipw2x00: don't call dev_kfree_skb() under spin_lock_irqsave()0d438ae7ba
ipw2x00: switch from 'pci_' to 'dma_' API28ea268d95
wifi: rtlwifi: Fix global-out-of-bounds bug in _rtl8812ae_phy_set_txpower_limit()5d171ab48b
rtlwifi: fix -Wpointer-sign warning5dd30d1acc
wifi: rtl8xxxu: don't call dev_kfree_skb() under spin_lock_irqsave()23b34e08de
wifi: libertas: fix memory leak in lbs_init_adapter()1864b22e23
wifi: iwlegacy: common: don't call dev_kfree_skb() under spin_lock_irqsave()9004aa391a
net/wireless: Delete unnecessary checks before the macro call “dev_kfree_skb”fe4d7280cf
wifi: rsi: Fix memory leak in rsi_coex_attach()82d68c3244
block: bio-integrity: Copy flags when bio_integrity_payload is cloned084cd75643
sched/rt: pick_next_rt_entity(): check list_entry0ff7ba5e8b
sched/deadline,rt: Remove unused parameter from pick_next_[rt|dl]_entity()ee986d80ac
s390/dasd: Fix potential memleak in dasd_eckd_init()8bc5a76268
s390/dasd: Prepare for additional path event handling946515fad4
blk-mq: correct stale comment of .get_budget2dc5f68fe6
blk-mq: wait on correct sbitmap_queue in blk_mq_mark_tag_wait8c225150ea
blk-mq: remove stale comment for blk_mq_sched_mark_restart_hctx260dcf1ccd
block: Limit number of items taken from the I/O scheduler in one go578c8f09c0
Revert "scsi: core: run queue if SCSI device queue isn't ready and queue is idle"2d3c3aa412
arm64: dts: mediatek: mt7622: Add missing pwm-cells to pwm node38af86810d
ARM: dts: imx7s: correct iomuxc gpr mux controller cells7fe5dc2fee
arm64: dts: amlogic: meson-gxl-s905d-phicomm-n1: fix led node name8b7aa62f4a
arm64: dts: amlogic: meson-gxl: add missing unit address to eth-phy-mux node named5fbeae6d6
arm64: dts: amlogic: meson-gx: add missing unit address to rng node namec5cd41bd10
arm64: dts: amlogic: meson-gx: add missing SCPI sensors compatible1e3ec4d1d7
arm64: dts: amlogic: meson-axg: fix SCPI clock dvfs node namee515d41185
arm64: dts: amlogic: meson-gx: fix SCPI clock dvfs node name1e1b84b022
ARM: imx: Call ida_simple_remove() for ida_simple_getb0a1b2f3ef
ARM: dts: exynos: correct wr-active property in Exynos3250 Rinato91ac4bf35a
ARM: OMAP1: call platform_device_put() in error case in omap1_dm_timer_init()af3352c16e
arm64: dts: meson: remove CPU opps below 1GHz for G12A boards9dd61d9542
arm64: dts: meson-gx: Fix the SCPI DVFS node name and unit addresscba890c4bd
arm64: dts: meson-g12a: Fix internal Ethernet PHY unit name69bdc5d014
arm64: dts: meson-gx: Fix Ethernet MAC address unit nameede0334bf4
ARM: zynq: Fix refcount leak in zynq_early_slcr_init45b44ba5df
arm64: dts: qcom: qcs404: use symbol names for PCIe resets8041f9a2a9
ARM: OMAP2+: Fix memory leak in realtime_counter_init()dd08e68d04
HID: asus: use spinlock to safely schedule workers136a9bcc0e
HID: asus: use spinlock to protect concurrent accesses9a25b22fd5
HID: asus: Remove check for same LED brightness on setf9c844d00d
Merge 5.4.234 into android11-5.4-ltsa103859aaa
Linux 5.4.234a1e89c8b29
USB: core: Don't hold device lock while reading the "descriptors" sysfs file96d380d2ae
USB: serial: option: add support for VW/Skoda "Carstick LTE"91c877d431
dmaengine: sh: rcar-dmac: Check for error num after dma_set_max_seg_size465ce31a2b
vc_screen: don't clobber return value in vcs_readee8cd3abe7
net: Remove WARN_ON_ONCE(sk->sk_forward_alloc) from sk_stream_kill_queues().db25b41eb5
bpf: bpf_fib_lookup should not return neigh in NUD_FAILED state23affaed76
HID: core: Fix deadloop in hid_apply_multiplier.93b17c7e1e
neigh: make sure used and confirmed times are validbc4601ad97
IB/hfi1: Assign npages earlier98e626c115
btrfs: send: limit number of clones and allocated memory sizeae03fa7ad3
ACPI: NFIT: fix a potential deadlock during NFIT teardown785bde8459
ARM: dts: rockchip: add power-domains property to dp node on rk3288da2bba879e
arm64: dts: rockchip: drop unused LED mode property from rk3328-roc-cc And update the .xml file due to the __irq_domain_add() change that came into this branch. Change-Id: Ia973c369a8bb9da89df14007cd6b820c9a7a2155 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
commit
3b9196f720
@ -82,6 +82,8 @@ Brief summary of control files.
|
||||
memory.swappiness set/show swappiness parameter of vmscan
|
||||
(See sysctl's vm.swappiness)
|
||||
memory.move_charge_at_immigrate set/show controls of moving charges
|
||||
This knob is deprecated and shouldn't be
|
||||
used.
|
||||
memory.oom_control set/show oom controls.
|
||||
memory.numa_stat show the number of memory usage per numa
|
||||
node
|
||||
@ -745,8 +747,15 @@ NOTE2:
|
||||
It is recommended to set the soft limit always below the hard limit,
|
||||
otherwise the hard limit will take precedence.
|
||||
|
||||
8. Move charges at task migration
|
||||
=================================
|
||||
8. Move charges at task migration (DEPRECATED!)
|
||||
===============================================
|
||||
|
||||
THIS IS DEPRECATED!
|
||||
|
||||
It's expensive and unreliable! It's better practice to launch workload
|
||||
tasks directly from inside their target cgroup. Use dedicated workload
|
||||
cgroups to allow fine-grained policy adjustments without having to
|
||||
move physical pages between control domains.
|
||||
|
||||
Users can move charges associated with a task along with task migration, that
|
||||
is, uncharge task's pages from the old cgroup and charge them to the new cgroup.
|
||||
|
@ -479,8 +479,16 @@ Spectre variant 2
|
||||
On Intel Skylake-era systems the mitigation covers most, but not all,
|
||||
cases. See :ref:`[3] <spec_ref3>` for more details.
|
||||
|
||||
On CPUs with hardware mitigation for Spectre variant 2 (e.g. Enhanced
|
||||
IBRS on x86), retpoline is automatically disabled at run time.
|
||||
On CPUs with hardware mitigation for Spectre variant 2 (e.g. IBRS
|
||||
or enhanced IBRS on x86), retpoline is automatically disabled at run time.
|
||||
|
||||
Systems which support enhanced IBRS (eIBRS) enable IBRS protection once at
|
||||
boot, by setting the IBRS bit, and they're automatically protected against
|
||||
Spectre v2 variant attacks, including cross-thread branch target injections
|
||||
on SMT systems (STIBP). In other words, eIBRS enables STIBP too.
|
||||
|
||||
Legacy IBRS systems clear the IBRS bit on exit to userspace and
|
||||
therefore explicitly enable STIBP for that
|
||||
|
||||
The retpoline mitigation is turned on by default on vulnerable
|
||||
CPUs. It can be forced on or off by the administrator
|
||||
@ -504,9 +512,12 @@ Spectre variant 2
|
||||
For Spectre variant 2 mitigation, individual user programs
|
||||
can be compiled with return trampolines for indirect branches.
|
||||
This protects them from consuming poisoned entries in the branch
|
||||
target buffer left by malicious software. Alternatively, the
|
||||
programs can disable their indirect branch speculation via prctl()
|
||||
(See :ref:`Documentation/userspace-api/spec_ctrl.rst <set_spec_ctrl>`).
|
||||
target buffer left by malicious software.
|
||||
|
||||
On legacy IBRS systems, at return to userspace, implicit STIBP is disabled
|
||||
because the kernel clears the IBRS bit. In this case, the userspace programs
|
||||
can disable indirect branch speculation via prctl() (See
|
||||
:ref:`Documentation/userspace-api/spec_ctrl.rst <set_spec_ctrl>`).
|
||||
On x86, this will turn on STIBP to guard against attacks from the
|
||||
sibling thread when the user program is running, and use IBPB to
|
||||
flush the branch target buffer when switching to/from the program.
|
||||
|
@ -1944,24 +1944,57 @@
|
||||
|
||||
ivrs_ioapic [HW,X86_64]
|
||||
Provide an override to the IOAPIC-ID<->DEVICE-ID
|
||||
mapping provided in the IVRS ACPI table. For
|
||||
example, to map IOAPIC-ID decimal 10 to
|
||||
PCI device 00:14.0 write the parameter as:
|
||||
mapping provided in the IVRS ACPI table.
|
||||
By default, PCI segment is 0, and can be omitted.
|
||||
|
||||
For example, to map IOAPIC-ID decimal 10 to
|
||||
PCI segment 0x1 and PCI device 00:14.0,
|
||||
write the parameter as:
|
||||
ivrs_ioapic=10@0001:00:14.0
|
||||
|
||||
Deprecated formats:
|
||||
* To map IOAPIC-ID decimal 10 to PCI device 00:14.0
|
||||
write the parameter as:
|
||||
ivrs_ioapic[10]=00:14.0
|
||||
* To map IOAPIC-ID decimal 10 to PCI segment 0x1 and
|
||||
PCI device 00:14.0 write the parameter as:
|
||||
ivrs_ioapic[10]=0001:00:14.0
|
||||
|
||||
ivrs_hpet [HW,X86_64]
|
||||
Provide an override to the HPET-ID<->DEVICE-ID
|
||||
mapping provided in the IVRS ACPI table. For
|
||||
example, to map HPET-ID decimal 0 to
|
||||
PCI device 00:14.0 write the parameter as:
|
||||
mapping provided in the IVRS ACPI table.
|
||||
By default, PCI segment is 0, and can be omitted.
|
||||
|
||||
For example, to map HPET-ID decimal 10 to
|
||||
PCI segment 0x1 and PCI device 00:14.0,
|
||||
write the parameter as:
|
||||
ivrs_hpet=10@0001:00:14.0
|
||||
|
||||
Deprecated formats:
|
||||
* To map HPET-ID decimal 0 to PCI device 00:14.0
|
||||
write the parameter as:
|
||||
ivrs_hpet[0]=00:14.0
|
||||
* To map HPET-ID decimal 10 to PCI segment 0x1 and
|
||||
PCI device 00:14.0 write the parameter as:
|
||||
ivrs_ioapic[10]=0001:00:14.0
|
||||
|
||||
ivrs_acpihid [HW,X86_64]
|
||||
Provide an override to the ACPI-HID:UID<->DEVICE-ID
|
||||
mapping provided in the IVRS ACPI table. For
|
||||
example, to map UART-HID:UID AMD0020:0 to
|
||||
PCI device 00:14.5 write the parameter as:
|
||||
mapping provided in the IVRS ACPI table.
|
||||
By default, PCI segment is 0, and can be omitted.
|
||||
|
||||
For example, to map UART-HID:UID AMD0020:0 to
|
||||
PCI segment 0x1 and PCI device ID 00:14.5,
|
||||
write the parameter as:
|
||||
ivrs_acpihid=AMD0020:0@0001:00:14.5
|
||||
|
||||
Deprecated formats:
|
||||
* To map UART-HID:UID AMD0020:0 to PCI segment is 0,
|
||||
PCI device ID 00:14.5, write the parameter as:
|
||||
ivrs_acpihid[00:14.5]=AMD0020:0
|
||||
* To map UART-HID:UID AMD0020:0 to PCI segment 0x1 and
|
||||
PCI device ID 00:14.5, write the parameter as:
|
||||
ivrs_acpihid[0001:00:14.5]=AMD0020:0
|
||||
|
||||
js= [HW,JOY] Analog joystick
|
||||
See Documentation/input/joydev/joystick.rst.
|
||||
|
@ -39,6 +39,10 @@ Setup
|
||||
this mode. In this case, you should build the kernel with
|
||||
CONFIG_RANDOMIZE_BASE disabled if the architecture supports KASLR.
|
||||
|
||||
- Build the gdb scripts (required on kernels v5.1 and above)::
|
||||
|
||||
make scripts_gdb
|
||||
|
||||
- Enable the gdb stub of QEMU/KVM, either
|
||||
|
||||
- at VM startup time by appending "-s" to the QEMU command line
|
||||
|
@ -128,7 +128,6 @@ required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- clock-output-names
|
||||
|
||||
additionalProperties: false
|
||||
|
@ -1173,7 +1173,7 @@ defined:
|
||||
return
|
||||
-ECHILD and it will be called again in ref-walk mode.
|
||||
|
||||
``_weak_revalidate``
|
||||
``d_weak_revalidate``
|
||||
called when the VFS needs to revalidate a "jumped" dentry. This
|
||||
is called when a path-walk ends at dentry that was not acquired
|
||||
by doing a lookup in the parent directory. This includes "/",
|
||||
|
@ -702,7 +702,7 @@ ref
|
||||
no-jd
|
||||
BIOS setup but without jack-detection
|
||||
intel
|
||||
Intel DG45* mobos
|
||||
Intel D*45* mobos
|
||||
dell-m6-amic
|
||||
Dell desktops/laptops with analog mics
|
||||
dell-m6-dmic
|
||||
|
@ -3615,6 +3615,18 @@ Type: vm ioctl
|
||||
Parameters: struct kvm_s390_cmma_log (in, out)
|
||||
Returns: 0 on success, a negative value on error
|
||||
|
||||
Errors:
|
||||
|
||||
====== =============================================================
|
||||
ENOMEM not enough memory can be allocated to complete the task
|
||||
ENXIO if CMMA is not enabled
|
||||
EINVAL if KVM_S390_CMMA_PEEK is not set but migration mode was not enabled
|
||||
EINVAL if KVM_S390_CMMA_PEEK is not set but dirty tracking has been
|
||||
disabled (and thus migration mode was automatically disabled)
|
||||
EFAULT if the userspace address is invalid or if no page table is
|
||||
present for the addresses (e.g. when using hugepages).
|
||||
====== =============================================================
|
||||
|
||||
This ioctl is used to get the values of the CMMA bits on the s390
|
||||
architecture. It is meant to be used in two scenarios:
|
||||
- During live migration to save the CMMA values. Live migration needs
|
||||
@ -3691,12 +3703,6 @@ mask is unused.
|
||||
|
||||
values points to the userspace buffer where the result will be stored.
|
||||
|
||||
This ioctl can fail with -ENOMEM if not enough memory can be allocated to
|
||||
complete the task, with -ENXIO if CMMA is not enabled, with -EINVAL if
|
||||
KVM_S390_CMMA_PEEK is not set but migration mode was not enabled, with
|
||||
-EFAULT if the userspace address is invalid or if no page table is
|
||||
present for the addresses (e.g. when using hugepages).
|
||||
|
||||
4.108 KVM_S390_SET_CMMA_BITS
|
||||
|
||||
Capability: KVM_CAP_S390_CMMA_MIGRATION
|
||||
|
@ -254,6 +254,10 @@ Allows userspace to start migration mode, needed for PGSTE migration.
|
||||
Setting this attribute when migration mode is already active will have
|
||||
no effects.
|
||||
|
||||
Dirty tracking must be enabled on all memslots, else -EINVAL is returned. When
|
||||
dirty tracking is disabled on any memslot, migration mode is automatically
|
||||
stopped.
|
||||
|
||||
Parameters: none
|
||||
Returns: -ENOMEM if there is not enough free memory to start migration mode
|
||||
-EINVAL if the state of the VM is invalid (e.g. no memory defined)
|
||||
|
13
Makefile
13
Makefile
@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 5
|
||||
PATCHLEVEL = 4
|
||||
SUBLEVEL = 233
|
||||
SUBLEVEL = 242
|
||||
EXTRAVERSION =
|
||||
NAME = Kleptomaniac Octopus
|
||||
|
||||
@ -89,9 +89,16 @@ endif
|
||||
|
||||
# If the user is running make -s (silent mode), suppress echoing of
|
||||
# commands
|
||||
# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS.
|
||||
|
||||
ifneq ($(findstring s,$(filter-out --%,$(MAKEFLAGS))),)
|
||||
quiet=silent_
|
||||
ifeq ($(filter 3.%,$(MAKE_VERSION)),)
|
||||
silence:=$(findstring s,$(firstword -$(MAKEFLAGS)))
|
||||
else
|
||||
silence:=$(findstring s,$(filter-out --%,$(MAKEFLAGS)))
|
||||
endif
|
||||
|
||||
ifeq ($(silence),s)
|
||||
quiet=silent_
|
||||
endif
|
||||
|
||||
export quiet Q KBUILD_VERBOSE
|
||||
|
165992
android/abi_gki_aarch64.xml
165992
android/abi_gki_aarch64.xml
File diff suppressed because it is too large
Load Diff
@ -146,10 +146,8 @@ apply_relocate_add(Elf64_Shdr *sechdrs, const char *strtab,
|
||||
base = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr;
|
||||
symtab = (Elf64_Sym *)sechdrs[symindex].sh_addr;
|
||||
|
||||
/* The small sections were sorted to the end of the segment.
|
||||
The following should definitely cover them. */
|
||||
gp = (u64)me->core_layout.base + me->core_layout.size - 0x8000;
|
||||
got = sechdrs[me->arch.gotsecindex].sh_addr;
|
||||
gp = got + 0x8000;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
unsigned long r_sym = ELF64_R_SYM (rela[i].r_info);
|
||||
|
@ -235,7 +235,21 @@ do_entIF(unsigned long type, struct pt_regs *regs)
|
||||
{
|
||||
int signo, code;
|
||||
|
||||
if ((regs->ps & ~IPL_MAX) == 0) {
|
||||
if (type == 3) { /* FEN fault */
|
||||
/* Irritating users can call PAL_clrfen to disable the
|
||||
FPU for the process. The kernel will then trap in
|
||||
do_switch_stack and undo_switch_stack when we try
|
||||
to save and restore the FP registers.
|
||||
|
||||
Given that GCC by default generates code that uses the
|
||||
FP registers, PAL_clrfen is not useful except for DoS
|
||||
attacks. So turn the bleeding FPU back on and be done
|
||||
with it. */
|
||||
current_thread_info()->pcb.flags |= 1;
|
||||
__reload_thread(¤t_thread_info()->pcb);
|
||||
return;
|
||||
}
|
||||
if (!user_mode(regs)) {
|
||||
if (type == 1) {
|
||||
const unsigned int *data
|
||||
= (const unsigned int *) regs->pc;
|
||||
@ -368,20 +382,6 @@ do_entIF(unsigned long type, struct pt_regs *regs)
|
||||
}
|
||||
break;
|
||||
|
||||
case 3: /* FEN fault */
|
||||
/* Irritating users can call PAL_clrfen to disable the
|
||||
FPU for the process. The kernel will then trap in
|
||||
do_switch_stack and undo_switch_stack when we try
|
||||
to save and restore the FP registers.
|
||||
|
||||
Given that GCC by default generates code that uses the
|
||||
FP registers, PAL_clrfen is not useful except for DoS
|
||||
attacks. So turn the bleeding FPU back on and be done
|
||||
with it. */
|
||||
current_thread_info()->pcb.flags |= 1;
|
||||
__reload_thread(¤t_thread_info()->pcb);
|
||||
return;
|
||||
|
||||
case 5: /* illoc */
|
||||
default: /* unexpected instruction-fault type */
|
||||
;
|
||||
|
@ -48,8 +48,8 @@ void arch_dma_prep_coherent(struct page *page, size_t size)
|
||||
* upper layer functions (in include/linux/dma-mapping.h)
|
||||
*/
|
||||
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
switch (dir) {
|
||||
case DMA_TO_DEVICE:
|
||||
@ -69,8 +69,8 @@ void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
}
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
switch (dir) {
|
||||
case DMA_TO_DEVICE:
|
||||
|
@ -239,7 +239,7 @@
|
||||
i80-if-timings {
|
||||
cs-setup = <0>;
|
||||
wr-setup = <0>;
|
||||
wr-act = <1>;
|
||||
wr-active = <1>;
|
||||
wr-hold = <0>;
|
||||
};
|
||||
};
|
||||
|
@ -10,7 +10,7 @@
|
||||
/ {
|
||||
thermal-zones {
|
||||
cpu_thermal: cpu-thermal {
|
||||
thermal-sensors = <&tmu 0>;
|
||||
thermal-sensors = <&tmu>;
|
||||
polling-delay-passive = <0>;
|
||||
polling-delay = <0>;
|
||||
trips {
|
||||
|
@ -605,7 +605,7 @@
|
||||
status = "disabled";
|
||||
|
||||
hdmi_i2c_phy: hdmiphy@38 {
|
||||
compatible = "exynos4210-hdmiphy";
|
||||
compatible = "samsung,exynos4210-hdmiphy";
|
||||
reg = <0x38>;
|
||||
};
|
||||
};
|
||||
|
@ -116,7 +116,6 @@
|
||||
};
|
||||
|
||||
&cpu0_thermal {
|
||||
thermal-sensors = <&tmu_cpu0 0>;
|
||||
polling-delay-passive = <0>;
|
||||
polling-delay = <0>;
|
||||
|
||||
|
@ -539,7 +539,7 @@
|
||||
};
|
||||
|
||||
mipi_phy: mipi-video-phy {
|
||||
compatible = "samsung,s5pv210-mipi-video-phy";
|
||||
compatible = "samsung,exynos5420-mipi-video-phy";
|
||||
syscon = <&pmu_system_controller>;
|
||||
#phy-cells = <1>;
|
||||
};
|
||||
|
@ -504,7 +504,7 @@
|
||||
|
||||
mux: mux-controller {
|
||||
compatible = "mmio-mux";
|
||||
#mux-control-cells = <0>;
|
||||
#mux-control-cells = <1>;
|
||||
mux-reg-masks = <0x14 0x00000010>;
|
||||
};
|
||||
|
||||
|
@ -942,7 +942,7 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spdif: sound@ff88b0000 {
|
||||
spdif: sound@ff8b0000 {
|
||||
compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";
|
||||
reg = <0x0 0xff8b0000 0x0 0x10000>;
|
||||
#sound-dai-cells = <0>;
|
||||
@ -1188,6 +1188,7 @@
|
||||
clock-names = "dp", "pclk";
|
||||
phys = <&edp_phy>;
|
||||
phy-names = "dp";
|
||||
power-domains = <&power RK3288_PD_VIO>;
|
||||
resets = <&cru SRST_EDP>;
|
||||
reset-names = "dp";
|
||||
rockchip,grf = <&grf>;
|
||||
|
@ -242,7 +242,7 @@
|
||||
irq-trigger = <0x1>;
|
||||
|
||||
stmpegpio: stmpe-gpio {
|
||||
compatible = "stmpe,gpio";
|
||||
compatible = "st,stmpe-gpio";
|
||||
reg = <0>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
@ -99,6 +99,7 @@ struct mmdc_pmu {
|
||||
cpumask_t cpu;
|
||||
struct hrtimer hrtimer;
|
||||
unsigned int active_events;
|
||||
int id;
|
||||
struct device *dev;
|
||||
struct perf_event *mmdc_events[MMDC_NUM_COUNTERS];
|
||||
struct hlist_node node;
|
||||
@ -433,8 +434,6 @@ static enum hrtimer_restart mmdc_pmu_timer_handler(struct hrtimer *hrtimer)
|
||||
static int mmdc_pmu_init(struct mmdc_pmu *pmu_mmdc,
|
||||
void __iomem *mmdc_base, struct device *dev)
|
||||
{
|
||||
int mmdc_num;
|
||||
|
||||
*pmu_mmdc = (struct mmdc_pmu) {
|
||||
.pmu = (struct pmu) {
|
||||
.task_ctx_nr = perf_invalid_context,
|
||||
@ -452,15 +451,16 @@ static int mmdc_pmu_init(struct mmdc_pmu *pmu_mmdc,
|
||||
.active_events = 0,
|
||||
};
|
||||
|
||||
mmdc_num = ida_simple_get(&mmdc_ida, 0, 0, GFP_KERNEL);
|
||||
pmu_mmdc->id = ida_simple_get(&mmdc_ida, 0, 0, GFP_KERNEL);
|
||||
|
||||
return mmdc_num;
|
||||
return pmu_mmdc->id;
|
||||
}
|
||||
|
||||
static int imx_mmdc_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct mmdc_pmu *pmu_mmdc = platform_get_drvdata(pdev);
|
||||
|
||||
ida_simple_remove(&mmdc_ida, pmu_mmdc->id);
|
||||
cpuhp_state_remove_instance_nocalls(cpuhp_mmdc_state, &pmu_mmdc->node);
|
||||
perf_pmu_unregister(&pmu_mmdc->pmu);
|
||||
iounmap(pmu_mmdc->mmdc_base);
|
||||
@ -474,7 +474,6 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b
|
||||
{
|
||||
struct mmdc_pmu *pmu_mmdc;
|
||||
char *name;
|
||||
int mmdc_num;
|
||||
int ret;
|
||||
const struct of_device_id *of_id =
|
||||
of_match_device(imx_mmdc_dt_ids, &pdev->dev);
|
||||
@ -497,14 +496,14 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b
|
||||
cpuhp_mmdc_state = ret;
|
||||
}
|
||||
|
||||
mmdc_num = mmdc_pmu_init(pmu_mmdc, mmdc_base, &pdev->dev);
|
||||
pmu_mmdc->mmdc_ipg_clk = mmdc_ipg_clk;
|
||||
if (mmdc_num == 0)
|
||||
name = "mmdc";
|
||||
else
|
||||
name = devm_kasprintf(&pdev->dev,
|
||||
GFP_KERNEL, "mmdc%d", mmdc_num);
|
||||
ret = mmdc_pmu_init(pmu_mmdc, mmdc_base, &pdev->dev);
|
||||
if (ret < 0)
|
||||
goto pmu_free;
|
||||
|
||||
name = devm_kasprintf(&pdev->dev,
|
||||
GFP_KERNEL, "mmdc%d", ret);
|
||||
|
||||
pmu_mmdc->mmdc_ipg_clk = mmdc_ipg_clk;
|
||||
pmu_mmdc->devtype_data = (struct fsl_mmdc_devtype_data *)of_id->data;
|
||||
|
||||
hrtimer_init(&pmu_mmdc->hrtimer, CLOCK_MONOTONIC,
|
||||
@ -525,6 +524,7 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b
|
||||
|
||||
pmu_register_err:
|
||||
pr_warn("MMDC Perf PMU failed (%d), disabled\n", ret);
|
||||
ida_simple_remove(&mmdc_ida, pmu_mmdc->id);
|
||||
cpuhp_state_remove_instance_nocalls(cpuhp_mmdc_state, &pmu_mmdc->node);
|
||||
hrtimer_cancel(&pmu_mmdc->hrtimer);
|
||||
pmu_free:
|
||||
|
@ -165,7 +165,7 @@ static int __init omap1_dm_timer_init(void)
|
||||
kfree(pdata);
|
||||
|
||||
err_free_pdev:
|
||||
platform_device_unregister(pdev);
|
||||
platform_device_put(pdev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -649,6 +649,7 @@ static void __init realtime_counter_init(void)
|
||||
}
|
||||
|
||||
rate = clk_get_rate(sys_clk);
|
||||
clk_put(sys_clk);
|
||||
|
||||
if (soc_is_dra7xx()) {
|
||||
/*
|
||||
|
@ -213,6 +213,7 @@ int __init zynq_early_slcr_init(void)
|
||||
zynq_slcr_regmap = syscon_regmap_lookup_by_compatible("xlnx,zynq-slcr");
|
||||
if (IS_ERR(zynq_slcr_regmap)) {
|
||||
pr_err("%s: failed to find zynq-slcr\n", __func__);
|
||||
of_node_put(np);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
@ -2333,15 +2333,15 @@ void arch_teardown_dma_ops(struct device *dev)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SWIOTLB
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
__dma_page_cpu_to_dev(phys_to_page(paddr), paddr & (PAGE_SIZE - 1),
|
||||
size, dir);
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
__dma_page_dev_to_cpu(phys_to_page(paddr), paddr & (PAGE_SIZE - 1),
|
||||
size, dir);
|
||||
|
@ -70,20 +70,20 @@ static void dma_cache_maint(dma_addr_t handle, size_t size, u32 op)
|
||||
* pfn_valid returns true the pages is local and we can use the native
|
||||
* dma-direct functions, otherwise we call the Xen specific version.
|
||||
*/
|
||||
void xen_dma_sync_for_cpu(struct device *dev, dma_addr_t handle,
|
||||
phys_addr_t paddr, size_t size, enum dma_data_direction dir)
|
||||
void xen_dma_sync_for_cpu(dma_addr_t handle, phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
if (pfn_valid(PFN_DOWN(handle)))
|
||||
arch_sync_dma_for_cpu(dev, paddr, size, dir);
|
||||
arch_sync_dma_for_cpu(paddr, size, dir);
|
||||
else if (dir != DMA_TO_DEVICE)
|
||||
dma_cache_maint(handle, size, GNTTAB_CACHE_INVAL);
|
||||
}
|
||||
|
||||
void xen_dma_sync_for_device(struct device *dev, dma_addr_t handle,
|
||||
phys_addr_t paddr, size_t size, enum dma_data_direction dir)
|
||||
void xen_dma_sync_for_device(dma_addr_t handle, phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
if (pfn_valid(PFN_DOWN(handle)))
|
||||
arch_sync_dma_for_device(dev, paddr, size, dir);
|
||||
arch_sync_dma_for_device(paddr, size, dir);
|
||||
else if (dir == DMA_FROM_DEVICE)
|
||||
dma_cache_maint(handle, size, GNTTAB_CACHE_INVAL);
|
||||
else
|
||||
|
@ -150,7 +150,7 @@
|
||||
scpi_clocks: clocks {
|
||||
compatible = "arm,scpi-clocks";
|
||||
|
||||
scpi_dvfs: clock-controller {
|
||||
scpi_dvfs: clocks-0 {
|
||||
compatible = "arm,scpi-dvfs-clocks";
|
||||
#clock-cells = <1>;
|
||||
clock-indices = <0>;
|
||||
@ -159,7 +159,7 @@
|
||||
};
|
||||
|
||||
scpi_sensors: sensors {
|
||||
compatible = "amlogic,meson-gxbb-scpi-sensors";
|
||||
compatible = "amlogic,meson-gxbb-scpi-sensors", "arm,scpi-sensors";
|
||||
#thermal-sensor-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
@ -1376,10 +1376,9 @@
|
||||
|
||||
dmc: bus@38000 {
|
||||
compatible = "simple-bus";
|
||||
reg = <0x0 0x38000 0x0 0x400>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges = <0x0 0x0 0x0 0x38000 0x0 0x400>;
|
||||
ranges = <0x0 0x0 0x0 0x38000 0x0 0x2000>;
|
||||
|
||||
canvas: video-lut@48 {
|
||||
compatible = "amlogic,canvas";
|
||||
@ -1783,7 +1782,7 @@
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
internal_ephy: ethernet_phy@8 {
|
||||
internal_ephy: ethernet-phy@8 {
|
||||
compatible = "ethernet-phy-id0180.3301",
|
||||
"ethernet-phy-ieee802.3-c22";
|
||||
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
@ -54,26 +54,6 @@
|
||||
compatible = "operating-points-v2";
|
||||
opp-shared;
|
||||
|
||||
opp-100000000 {
|
||||
opp-hz = /bits/ 64 <100000000>;
|
||||
opp-microvolt = <731000>;
|
||||
};
|
||||
|
||||
opp-250000000 {
|
||||
opp-hz = /bits/ 64 <250000000>;
|
||||
opp-microvolt = <731000>;
|
||||
};
|
||||
|
||||
opp-500000000 {
|
||||
opp-hz = /bits/ 64 <500000000>;
|
||||
opp-microvolt = <731000>;
|
||||
};
|
||||
|
||||
opp-667000000 {
|
||||
opp-hz = /bits/ 64 <666666666>;
|
||||
opp-microvolt = <731000>;
|
||||
};
|
||||
|
||||
opp-1000000000 {
|
||||
opp-hz = /bits/ 64 <1000000000>;
|
||||
opp-microvolt = <731000>;
|
||||
|
@ -172,7 +172,7 @@
|
||||
reg = <0x14 0x10>;
|
||||
};
|
||||
|
||||
eth_mac: eth_mac@34 {
|
||||
eth_mac: eth-mac@34 {
|
||||
reg = <0x34 0x10>;
|
||||
};
|
||||
|
||||
@ -189,7 +189,7 @@
|
||||
scpi_clocks: clocks {
|
||||
compatible = "arm,scpi-clocks";
|
||||
|
||||
scpi_dvfs: scpi_clocks@0 {
|
||||
scpi_dvfs: clocks-0 {
|
||||
compatible = "arm,scpi-dvfs-clocks";
|
||||
#clock-cells = <1>;
|
||||
clock-indices = <0>;
|
||||
@ -464,7 +464,7 @@
|
||||
#size-cells = <2>;
|
||||
ranges = <0x0 0x0 0x0 0xc8834000 0x0 0x2000>;
|
||||
|
||||
hwrng: rng {
|
||||
hwrng: rng@0 {
|
||||
compatible = "amlogic,meson-rng";
|
||||
reg = <0x0 0x0 0x0 0x4>;
|
||||
};
|
||||
|
@ -18,7 +18,7 @@
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
status {
|
||||
led {
|
||||
label = "n1:white:status";
|
||||
gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "on";
|
||||
|
@ -700,7 +700,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
eth-phy-mux {
|
||||
eth-phy-mux@55c {
|
||||
compatible = "mdio-mux-mmioreg", "mdio-mux";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
@ -428,6 +428,7 @@
|
||||
pwm: pwm@11006000 {
|
||||
compatible = "mediatek,mt7622-pwm";
|
||||
reg = <0 0x11006000 0 0x1000>;
|
||||
#pwm-cells = <2>;
|
||||
interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_LOW>;
|
||||
clocks = <&topckgen CLK_TOP_PWM_SEL>,
|
||||
<&pericfg CLK_PERI_PWM_PD>,
|
||||
|
@ -533,7 +533,7 @@
|
||||
|
||||
clocks = <&gcc GCC_PCIE_0_PIPE_CLK>;
|
||||
resets = <&gcc GCC_PCIEPHY_0_PHY_BCR>,
|
||||
<&gcc 21>;
|
||||
<&gcc GCC_PCIE_0_PIPE_ARES>;
|
||||
reset-names = "phy", "pipe";
|
||||
|
||||
clock-output-names = "pcie_0_pipe_clk";
|
||||
@ -991,12 +991,12 @@
|
||||
<&gcc GCC_PCIE_0_SLV_AXI_CLK>;
|
||||
clock-names = "iface", "aux", "master_bus", "slave_bus";
|
||||
|
||||
resets = <&gcc 18>,
|
||||
<&gcc 17>,
|
||||
<&gcc 15>,
|
||||
<&gcc 19>,
|
||||
resets = <&gcc GCC_PCIE_0_AXI_MASTER_ARES>,
|
||||
<&gcc GCC_PCIE_0_AXI_SLAVE_ARES>,
|
||||
<&gcc GCC_PCIE_0_AXI_MASTER_STICKY_ARES>,
|
||||
<&gcc GCC_PCIE_0_CORE_STICKY_ARES>,
|
||||
<&gcc GCC_PCIE_0_BCR>,
|
||||
<&gcc 16>;
|
||||
<&gcc GCC_PCIE_0_AHB_ARES>;
|
||||
reset-names = "axi_m",
|
||||
"axi_s",
|
||||
"axi_m_sticky",
|
||||
|
@ -90,7 +90,6 @@
|
||||
linux,default-trigger = "heartbeat";
|
||||
gpios = <&rk805 1 GPIO_ACTIVE_LOW>;
|
||||
default-state = "on";
|
||||
mode = <0x23>;
|
||||
};
|
||||
|
||||
user {
|
||||
@ -98,7 +97,6 @@
|
||||
linux,default-trigger = "mmc1";
|
||||
gpios = <&rk805 0 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
mode = <0x05>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -13,14 +13,14 @@
|
||||
|
||||
#include <asm/cacheflush.h>
|
||||
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
__dma_map_area(phys_to_virt(paddr), size, dir);
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
__dma_unmap_area(phys_to_virt(paddr), size, dir);
|
||||
}
|
||||
|
@ -140,7 +140,7 @@ void __init coherent_mem_init(phys_addr_t start, u32 size)
|
||||
sizeof(long));
|
||||
}
|
||||
|
||||
static void c6x_dma_sync(struct device *dev, phys_addr_t paddr, size_t size,
|
||||
static void c6x_dma_sync(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
BUG_ON(!valid_dma_direction(dir));
|
||||
@ -160,14 +160,14 @@ static void c6x_dma_sync(struct device *dev, phys_addr_t paddr, size_t size,
|
||||
}
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
return c6x_dma_sync(dev, paddr, size, dir);
|
||||
return c6x_dma_sync(paddr, size, dir);
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
return c6x_dma_sync(dev, paddr, size, dir);
|
||||
return c6x_dma_sync(paddr, size, dir);
|
||||
}
|
||||
|
@ -58,8 +58,8 @@ void arch_dma_prep_coherent(struct page *page, size_t size)
|
||||
cache_op(page_to_phys(page), size, dma_wbinv_set_zero_range);
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
switch (dir) {
|
||||
case DMA_TO_DEVICE:
|
||||
@ -74,8 +74,8 @@ void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
}
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
switch (dir) {
|
||||
case DMA_TO_DEVICE:
|
||||
|
@ -55,8 +55,8 @@ void arch_dma_free(struct device *dev, size_t size, void *vaddr,
|
||||
gen_pool_free(coherent_pool, (unsigned long) vaddr, size);
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
void *addr = phys_to_virt(paddr);
|
||||
|
||||
|
@ -73,8 +73,8 @@ __ia64_sync_icache_dcache (pte_t pte)
|
||||
* DMA can be marked as "clean" so that lazy_mmu_prot_update() doesn't have to
|
||||
* flush them when they get mapped into an executable vm-area.
|
||||
*/
|
||||
void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
unsigned long pfn = PHYS_PFN(paddr);
|
||||
|
||||
|
@ -47,6 +47,8 @@ do_trace:
|
||||
jbsr syscall_trace_enter
|
||||
RESTORE_SWITCH_STACK
|
||||
addql #4,%sp
|
||||
addql #1,%d0
|
||||
jeq ret_from_exception
|
||||
movel %sp@(PT_OFF_ORIG_D0),%d1
|
||||
movel #-ENOSYS,%d0
|
||||
cmpl #NR_syscalls,%d1
|
||||
|
@ -19,6 +19,7 @@ config HEARTBEAT
|
||||
# We have a dedicated heartbeat LED. :-)
|
||||
config PROC_HARDWARE
|
||||
bool "/proc/hardware support"
|
||||
depends on PROC_FS
|
||||
help
|
||||
Say Y here to support the /proc/hardware file, which gives you
|
||||
access to information about the machine you're running on,
|
||||
|
@ -92,6 +92,8 @@ ENTRY(system_call)
|
||||
jbsr syscall_trace_enter
|
||||
RESTORE_SWITCH_STACK
|
||||
addql #4,%sp
|
||||
addql #1,%d0
|
||||
jeq ret_from_exception
|
||||
movel %d3,%a0
|
||||
jbsr %a0@
|
||||
movel %d0,%sp@(PT_OFF_D0) /* save the return value */
|
||||
|
@ -61,8 +61,8 @@ void arch_dma_free(struct device *dev, size_t size, void *vaddr,
|
||||
|
||||
#endif /* CONFIG_MMU && !CONFIG_COLDFIRE */
|
||||
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t handle,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_device(phys_addr_t handle, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
switch (dir) {
|
||||
case DMA_BIDIRECTIONAL:
|
||||
|
@ -160,9 +160,12 @@ do_trace_entry:
|
||||
jbsr syscall_trace
|
||||
RESTORE_SWITCH_STACK
|
||||
addql #4,%sp
|
||||
addql #1,%d0 | optimization for cmpil #-1,%d0
|
||||
jeq ret_from_syscall
|
||||
movel %sp@(PT_OFF_ORIG_D0),%d0
|
||||
cmpl #NR_syscalls,%d0
|
||||
jcs syscall
|
||||
jra ret_from_syscall
|
||||
badsys:
|
||||
movel #-ENOSYS,%sp@(PT_OFF_D0)
|
||||
jra ret_from_syscall
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/kallsyms.h>
|
||||
#include <linux/extable.h>
|
||||
|
||||
#include <asm/setup.h>
|
||||
#include <asm/fpu.h>
|
||||
@ -550,7 +551,8 @@ static inline void bus_error030 (struct frame *fp)
|
||||
errorcode |= 2;
|
||||
|
||||
if (mmusr & (MMU_I | MMU_WP)) {
|
||||
if (ssw & 4) {
|
||||
/* We might have an exception table for this PC */
|
||||
if (ssw & 4 && !search_exception_tables(fp->ptregs.pc)) {
|
||||
pr_err("Data %s fault at %#010lx in %s (pc=%#lx)\n",
|
||||
ssw & RW ? "read" : "write",
|
||||
fp->un.fmtb.daddr,
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include <linux/bug.h>
|
||||
#include <asm/cacheflush.h>
|
||||
|
||||
static void __dma_sync(struct device *dev, phys_addr_t paddr, size_t size,
|
||||
static void __dma_sync(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction direction)
|
||||
{
|
||||
switch (direction) {
|
||||
@ -31,14 +31,14 @@ static void __dma_sync(struct device *dev, phys_addr_t paddr, size_t size,
|
||||
}
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
__dma_sync(dev, paddr, size, dir);
|
||||
__dma_sync(paddr, size, dir);
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
__dma_sync(dev, paddr, size, dir);
|
||||
__dma_sync(paddr, size, dir);
|
||||
}
|
||||
|
@ -64,7 +64,9 @@ phys_addr_t __dma_to_phys(struct device *dev, dma_addr_t dma_addr)
|
||||
return dma_addr;
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_cpu_all(struct device *dev)
|
||||
bool bmips_rac_flush_disable;
|
||||
|
||||
void arch_sync_dma_for_cpu_all(void)
|
||||
{
|
||||
void __iomem *cbr = BMIPS_GET_CBR();
|
||||
u32 cfg;
|
||||
@ -74,6 +76,9 @@ void arch_sync_dma_for_cpu_all(struct device *dev)
|
||||
boot_cpu_type() != CPU_BMIPS4380)
|
||||
return;
|
||||
|
||||
if (unlikely(bmips_rac_flush_disable))
|
||||
return;
|
||||
|
||||
/* Flush stale data out of the readahead cache */
|
||||
cfg = __raw_readl(cbr + BMIPS_RAC_CONFIG);
|
||||
__raw_writel(cfg | 0x100, cbr + BMIPS_RAC_CONFIG);
|
||||
|
@ -34,6 +34,8 @@
|
||||
#define REG_BCM6328_OTP ((void __iomem *)CKSEG1ADDR(0x1000062c))
|
||||
#define BCM6328_TP1_DISABLED BIT(9)
|
||||
|
||||
extern bool bmips_rac_flush_disable;
|
||||
|
||||
static const unsigned long kbase = VMLINUX_LOAD_ADDRESS & 0xfff00000;
|
||||
|
||||
struct bmips_quirk {
|
||||
@ -103,6 +105,12 @@ static void bcm6358_quirks(void)
|
||||
* disable SMP for now
|
||||
*/
|
||||
bmips_smp_enabled = 0;
|
||||
|
||||
/*
|
||||
* RAC flush causes kernel panics on BCM6358 when booting from TP1
|
||||
* because the bootloader is not initializing it properly.
|
||||
*/
|
||||
bmips_rac_flush_disable = !!(read_c0_brcm_cmt_local() & (1 << 31));
|
||||
}
|
||||
|
||||
static void bcm6368_quirks(void)
|
||||
|
@ -377,7 +377,7 @@ struct pci_msu {
|
||||
PCI_CFG04_STAT_SSE | \
|
||||
PCI_CFG04_STAT_PE)
|
||||
|
||||
#define KORINA_CNFG1 ((KORINA_STAT<<16)|KORINA_CMD)
|
||||
#define KORINA_CNFG1 (KORINA_STAT | KORINA_CMD)
|
||||
|
||||
#define KORINA_REVID 0
|
||||
#define KORINA_CLASS_CODE 0
|
||||
|
@ -38,7 +38,7 @@ static inline bool mips_syscall_is_indirect(struct task_struct *task,
|
||||
static inline long syscall_get_nr(struct task_struct *task,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
return current_thread_info()->syscall;
|
||||
return task_thread_info(task)->syscall;
|
||||
}
|
||||
|
||||
static inline void mips_syscall_update_nr(struct task_struct *task,
|
||||
|
@ -104,7 +104,6 @@ struct vpe_control {
|
||||
struct list_head tc_list; /* Thread contexts */
|
||||
};
|
||||
|
||||
extern unsigned long physical_memsize;
|
||||
extern struct vpe_control vpecontrol;
|
||||
extern const struct file_operations vpe_fops;
|
||||
|
||||
|
@ -592,7 +592,7 @@ static dma_addr_t jazz_dma_map_page(struct device *dev, struct page *page,
|
||||
phys_addr_t phys = page_to_phys(page) + offset;
|
||||
|
||||
if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))
|
||||
arch_sync_dma_for_device(dev, phys, size, dir);
|
||||
arch_sync_dma_for_device(phys, size, dir);
|
||||
return vdma_alloc(phys, size);
|
||||
}
|
||||
|
||||
@ -600,7 +600,7 @@ static void jazz_dma_unmap_page(struct device *dev, dma_addr_t dma_addr,
|
||||
size_t size, enum dma_data_direction dir, unsigned long attrs)
|
||||
{
|
||||
if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))
|
||||
arch_sync_dma_for_cpu(dev, vdma_log2phys(dma_addr), size, dir);
|
||||
arch_sync_dma_for_cpu(vdma_log2phys(dma_addr), size, dir);
|
||||
vdma_free(dma_addr);
|
||||
}
|
||||
|
||||
@ -612,7 +612,7 @@ static int jazz_dma_map_sg(struct device *dev, struct scatterlist *sglist,
|
||||
|
||||
for_each_sg(sglist, sg, nents, i) {
|
||||
if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))
|
||||
arch_sync_dma_for_device(dev, sg_phys(sg), sg->length,
|
||||
arch_sync_dma_for_device(sg_phys(sg), sg->length,
|
||||
dir);
|
||||
sg->dma_address = vdma_alloc(sg_phys(sg), sg->length);
|
||||
if (sg->dma_address == DMA_MAPPING_ERROR)
|
||||
@ -631,8 +631,7 @@ static void jazz_dma_unmap_sg(struct device *dev, struct scatterlist *sglist,
|
||||
|
||||
for_each_sg(sglist, sg, nents, i) {
|
||||
if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))
|
||||
arch_sync_dma_for_cpu(dev, sg_phys(sg), sg->length,
|
||||
dir);
|
||||
arch_sync_dma_for_cpu(sg_phys(sg), sg->length, dir);
|
||||
vdma_free(sg->dma_address);
|
||||
}
|
||||
}
|
||||
@ -640,13 +639,13 @@ static void jazz_dma_unmap_sg(struct device *dev, struct scatterlist *sglist,
|
||||
static void jazz_dma_sync_single_for_device(struct device *dev,
|
||||
dma_addr_t addr, size_t size, enum dma_data_direction dir)
|
||||
{
|
||||
arch_sync_dma_for_device(dev, vdma_log2phys(addr), size, dir);
|
||||
arch_sync_dma_for_device(vdma_log2phys(addr), size, dir);
|
||||
}
|
||||
|
||||
static void jazz_dma_sync_single_for_cpu(struct device *dev,
|
||||
dma_addr_t addr, size_t size, enum dma_data_direction dir)
|
||||
{
|
||||
arch_sync_dma_for_cpu(dev, vdma_log2phys(addr), size, dir);
|
||||
arch_sync_dma_for_cpu(vdma_log2phys(addr), size, dir);
|
||||
}
|
||||
|
||||
static void jazz_dma_sync_sg_for_device(struct device *dev,
|
||||
@ -656,7 +655,7 @@ static void jazz_dma_sync_sg_for_device(struct device *dev,
|
||||
int i;
|
||||
|
||||
for_each_sg(sgl, sg, nents, i)
|
||||
arch_sync_dma_for_device(dev, sg_phys(sg), sg->length, dir);
|
||||
arch_sync_dma_for_device(sg_phys(sg), sg->length, dir);
|
||||
}
|
||||
|
||||
static void jazz_dma_sync_sg_for_cpu(struct device *dev,
|
||||
@ -666,7 +665,7 @@ static void jazz_dma_sync_sg_for_cpu(struct device *dev,
|
||||
int i;
|
||||
|
||||
for_each_sg(sgl, sg, nents, i)
|
||||
arch_sync_dma_for_cpu(dev, sg_phys(sg), sg->length, dir);
|
||||
arch_sync_dma_for_cpu(sg_phys(sg), sg->length, dir);
|
||||
}
|
||||
|
||||
const struct dma_map_ops jazz_dma_ops = {
|
||||
|
@ -423,9 +423,11 @@ static void cps_shutdown_this_cpu(enum cpu_death death)
|
||||
wmb();
|
||||
}
|
||||
} else {
|
||||
pr_debug("Gating power to core %d\n", core);
|
||||
/* Power down the core */
|
||||
cps_pm_enter_state(CPS_PM_POWER_GATED);
|
||||
if (IS_ENABLED(CONFIG_HOTPLUG_CPU)) {
|
||||
pr_debug("Gating power to core %d\n", core);
|
||||
/* Power down the core */
|
||||
cps_pm_enter_state(CPS_PM_POWER_GATED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10,6 +10,8 @@
|
||||
*/
|
||||
#define BSS_FIRST_SECTIONS *(.bss..swapper_pg_dir)
|
||||
|
||||
#define RUNTIME_DISCARD_EXIT
|
||||
|
||||
#include <asm-generic/vmlinux.lds.h>
|
||||
|
||||
#undef mips
|
||||
|
@ -92,12 +92,11 @@ int vpe_run(struct vpe *v)
|
||||
write_tc_c0_tchalt(read_tc_c0_tchalt() & ~TCHALT_H);
|
||||
|
||||
/*
|
||||
* The sde-kit passes 'memsize' to __start in $a3, so set something
|
||||
* here... Or set $a3 to zero and define DFLT_STACK_SIZE and
|
||||
* DFLT_HEAP_SIZE when you compile your program
|
||||
* We don't pass the memsize here, so VPE programs need to be
|
||||
* compiled with DFLT_STACK_SIZE and DFLT_HEAP_SIZE defined.
|
||||
*/
|
||||
mttgpr(7, 0);
|
||||
mttgpr(6, v->ntcs);
|
||||
mttgpr(7, physical_memsize);
|
||||
|
||||
/* set up VPE1 */
|
||||
/*
|
||||
|
@ -22,12 +22,6 @@
|
||||
DEFINE_SPINLOCK(ebu_lock);
|
||||
EXPORT_SYMBOL_GPL(ebu_lock);
|
||||
|
||||
/*
|
||||
* This is needed by the VPE loader code, just set it to 0 and assume
|
||||
* that the firmware hardcodes this value to something useful.
|
||||
*/
|
||||
unsigned long physical_memsize = 0L;
|
||||
|
||||
/*
|
||||
* this struct is filled by the soc specific detection code and holds
|
||||
* information about the specific soc type, revision and name
|
||||
|
@ -39,7 +39,7 @@ static void pvc_display(unsigned long data)
|
||||
pvc_write_string(pvc_lines[i], 0, i);
|
||||
}
|
||||
|
||||
static DECLARE_TASKLET(pvc_display_tasklet, &pvc_display, 0);
|
||||
static DECLARE_TASKLET_OLD(pvc_display_tasklet, &pvc_display);
|
||||
|
||||
static int pvc_line_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
|
@ -27,7 +27,7 @@
|
||||
* R10000 and R12000 are used in such systems, the SGI IP28 Indigo² rsp.
|
||||
* SGI IP32 aka O2.
|
||||
*/
|
||||
static inline bool cpu_needs_post_dma_flush(struct device *dev)
|
||||
static inline bool cpu_needs_post_dma_flush(void)
|
||||
{
|
||||
switch (boot_cpu_type()) {
|
||||
case CPU_R10000:
|
||||
@ -118,17 +118,17 @@ static inline void dma_sync_phys(phys_addr_t paddr, size_t size,
|
||||
} while (left);
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
dma_sync_phys(paddr, size, dir);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU
|
||||
void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
if (cpu_needs_post_dma_flush(dev))
|
||||
if (cpu_needs_post_dma_flush())
|
||||
dma_sync_phys(paddr, size, dir);
|
||||
}
|
||||
#endif
|
||||
|
@ -46,8 +46,8 @@ static inline void cache_op(phys_addr_t paddr, size_t size,
|
||||
} while (left);
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
switch (dir) {
|
||||
case DMA_FROM_DEVICE:
|
||||
@ -61,8 +61,8 @@ void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
}
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
switch (dir) {
|
||||
case DMA_TO_DEVICE:
|
||||
|
@ -18,8 +18,8 @@
|
||||
#include <linux/cache.h>
|
||||
#include <asm/cacheflush.h>
|
||||
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
void *vaddr = phys_to_virt(paddr);
|
||||
|
||||
@ -42,8 +42,8 @@ void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
}
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
void *vaddr = phys_to_virt(paddr);
|
||||
|
||||
|
@ -125,7 +125,7 @@ arch_dma_free(struct device *dev, size_t size, void *vaddr,
|
||||
free_pages_exact(vaddr, size);
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t addr, size_t size,
|
||||
void arch_sync_dma_for_device(phys_addr_t addr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
unsigned long cl;
|
||||
|
@ -439,14 +439,14 @@ void arch_dma_free(struct device *dev, size_t size, void *vaddr,
|
||||
free_pages((unsigned long)__va(dma_handle), order);
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
flush_kernel_dcache_range((unsigned long)phys_to_virt(paddr), size);
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
flush_kernel_dcache_range((unsigned long)phys_to_virt(paddr), size);
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ aflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mlittle-endian
|
||||
|
||||
ifeq ($(HAS_BIARCH),y)
|
||||
KBUILD_CFLAGS += -m$(BITS)
|
||||
KBUILD_AFLAGS += -m$(BITS) -Wl,-a$(BITS)
|
||||
KBUILD_AFLAGS += -m$(BITS)
|
||||
KBUILD_LDFLAGS += -m elf$(BITS)$(LDEMULATION)
|
||||
endif
|
||||
|
||||
|
@ -1072,45 +1072,46 @@ void eeh_handle_normal_event(struct eeh_pe *pe)
|
||||
}
|
||||
|
||||
pr_info("EEH: Recovery successful.\n");
|
||||
} else {
|
||||
/*
|
||||
* About 90% of all real-life EEH failures in the field
|
||||
* are due to poorly seated PCI cards. Only 10% or so are
|
||||
* due to actual, failed cards.
|
||||
*/
|
||||
pr_err("EEH: Unable to recover from failure from PHB#%x-PE#%x.\n"
|
||||
"Please try reseating or replacing it\n",
|
||||
pe->phb->global_number, pe->addr);
|
||||
goto out;
|
||||
}
|
||||
|
||||
eeh_slot_error_detail(pe, EEH_LOG_PERM);
|
||||
/*
|
||||
* About 90% of all real-life EEH failures in the field
|
||||
* are due to poorly seated PCI cards. Only 10% or so are
|
||||
* due to actual, failed cards.
|
||||
*/
|
||||
pr_err("EEH: Unable to recover from failure from PHB#%x-PE#%x.\n"
|
||||
"Please try reseating or replacing it\n",
|
||||
pe->phb->global_number, pe->addr);
|
||||
|
||||
/* Notify all devices that they're about to go down. */
|
||||
eeh_set_channel_state(pe, pci_channel_io_perm_failure);
|
||||
eeh_set_irq_state(pe, false);
|
||||
eeh_pe_report("error_detected(permanent failure)", pe,
|
||||
eeh_report_failure, NULL);
|
||||
eeh_slot_error_detail(pe, EEH_LOG_PERM);
|
||||
|
||||
/* Mark the PE to be removed permanently */
|
||||
eeh_pe_state_mark(pe, EEH_PE_REMOVED);
|
||||
/* Notify all devices that they're about to go down. */
|
||||
eeh_set_irq_state(pe, false);
|
||||
eeh_pe_report("error_detected(permanent failure)", pe,
|
||||
eeh_report_failure, NULL);
|
||||
eeh_set_channel_state(pe, pci_channel_io_perm_failure);
|
||||
|
||||
/*
|
||||
* Shut down the device drivers for good. We mark
|
||||
* all removed devices correctly to avoid access
|
||||
* the their PCI config any more.
|
||||
*/
|
||||
if (pe->type & EEH_PE_VF) {
|
||||
eeh_pe_dev_traverse(pe, eeh_rmv_device, NULL);
|
||||
eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
|
||||
} else {
|
||||
eeh_pe_state_clear(pe, EEH_PE_PRI_BUS, true);
|
||||
eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
|
||||
/* Mark the PE to be removed permanently */
|
||||
eeh_pe_state_mark(pe, EEH_PE_REMOVED);
|
||||
|
||||
pci_lock_rescan_remove();
|
||||
pci_hp_remove_devices(bus);
|
||||
pci_unlock_rescan_remove();
|
||||
/* The passed PE should no longer be used */
|
||||
return;
|
||||
}
|
||||
/*
|
||||
* Shut down the device drivers for good. We mark
|
||||
* all removed devices correctly to avoid access
|
||||
* the their PCI config any more.
|
||||
*/
|
||||
if (pe->type & EEH_PE_VF) {
|
||||
eeh_pe_dev_traverse(pe, eeh_rmv_device, NULL);
|
||||
eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
|
||||
} else {
|
||||
eeh_pe_state_clear(pe, EEH_PE_PRI_BUS, true);
|
||||
eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
|
||||
|
||||
pci_lock_rescan_remove();
|
||||
pci_hp_remove_devices(bus);
|
||||
pci_unlock_rescan_remove();
|
||||
/* The passed PE should no longer be used */
|
||||
return;
|
||||
}
|
||||
|
||||
out:
|
||||
@ -1206,10 +1207,10 @@ void eeh_handle_special_event(void)
|
||||
|
||||
/* Notify all devices to be down */
|
||||
eeh_pe_state_clear(pe, EEH_PE_PRI_BUS, true);
|
||||
eeh_set_channel_state(pe, pci_channel_io_perm_failure);
|
||||
eeh_pe_report(
|
||||
"error_detected(permanent failure)", pe,
|
||||
eeh_report_failure, NULL);
|
||||
eeh_set_channel_state(pe, pci_channel_io_perm_failure);
|
||||
|
||||
pci_lock_rescan_remove();
|
||||
list_for_each_entry(hose, &hose_list, list_node) {
|
||||
|
@ -51,10 +51,10 @@ struct rtas_t rtas = {
|
||||
EXPORT_SYMBOL(rtas);
|
||||
|
||||
DEFINE_SPINLOCK(rtas_data_buf_lock);
|
||||
EXPORT_SYMBOL(rtas_data_buf_lock);
|
||||
EXPORT_SYMBOL_GPL(rtas_data_buf_lock);
|
||||
|
||||
char rtas_data_buf[RTAS_DATA_BUF_SIZE] __cacheline_aligned;
|
||||
EXPORT_SYMBOL(rtas_data_buf);
|
||||
char rtas_data_buf[RTAS_DATA_BUF_SIZE] __aligned(SZ_4K);
|
||||
EXPORT_SYMBOL_GPL(rtas_data_buf);
|
||||
|
||||
unsigned long rtas_rmo_buf;
|
||||
|
||||
@ -63,7 +63,7 @@ unsigned long rtas_rmo_buf;
|
||||
* This is done like this so rtas_flash can be a module.
|
||||
*/
|
||||
void (*rtas_flash_term_hook)(int);
|
||||
EXPORT_SYMBOL(rtas_flash_term_hook);
|
||||
EXPORT_SYMBOL_GPL(rtas_flash_term_hook);
|
||||
|
||||
/* RTAS use home made raw locking instead of spin_lock_irqsave
|
||||
* because those can be called from within really nasty contexts
|
||||
@ -311,7 +311,7 @@ void rtas_progress(char *s, unsigned short hex)
|
||||
|
||||
spin_unlock(&progress_lock);
|
||||
}
|
||||
EXPORT_SYMBOL(rtas_progress); /* needed by rtas_flash module */
|
||||
EXPORT_SYMBOL_GPL(rtas_progress); /* needed by rtas_flash module */
|
||||
|
||||
int rtas_token(const char *service)
|
||||
{
|
||||
@ -321,7 +321,7 @@ int rtas_token(const char *service)
|
||||
tokp = of_get_property(rtas.dev, service, NULL);
|
||||
return tokp ? be32_to_cpu(*tokp) : RTAS_UNKNOWN_SERVICE;
|
||||
}
|
||||
EXPORT_SYMBOL(rtas_token);
|
||||
EXPORT_SYMBOL_GPL(rtas_token);
|
||||
|
||||
int rtas_service_present(const char *service)
|
||||
{
|
||||
@ -481,7 +481,7 @@ int rtas_call(int token, int nargs, int nret, int *outputs, ...)
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(rtas_call);
|
||||
EXPORT_SYMBOL_GPL(rtas_call);
|
||||
|
||||
/* For RTAS_BUSY (-2), delay for 1 millisecond. For an extended busy status
|
||||
* code of 990n, perform the hinted delay of 10^n (last digit) milliseconds.
|
||||
@ -516,7 +516,7 @@ unsigned int rtas_busy_delay(int status)
|
||||
|
||||
return ms;
|
||||
}
|
||||
EXPORT_SYMBOL(rtas_busy_delay);
|
||||
EXPORT_SYMBOL_GPL(rtas_busy_delay);
|
||||
|
||||
static int rtas_error_rc(int rtas_rc)
|
||||
{
|
||||
@ -562,7 +562,7 @@ int rtas_get_power_level(int powerdomain, int *level)
|
||||
return rtas_error_rc(rc);
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL(rtas_get_power_level);
|
||||
EXPORT_SYMBOL_GPL(rtas_get_power_level);
|
||||
|
||||
int rtas_set_power_level(int powerdomain, int level, int *setlevel)
|
||||
{
|
||||
@ -580,7 +580,7 @@ int rtas_set_power_level(int powerdomain, int level, int *setlevel)
|
||||
return rtas_error_rc(rc);
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL(rtas_set_power_level);
|
||||
EXPORT_SYMBOL_GPL(rtas_set_power_level);
|
||||
|
||||
int rtas_get_sensor(int sensor, int index, int *state)
|
||||
{
|
||||
@ -598,7 +598,7 @@ int rtas_get_sensor(int sensor, int index, int *state)
|
||||
return rtas_error_rc(rc);
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL(rtas_get_sensor);
|
||||
EXPORT_SYMBOL_GPL(rtas_get_sensor);
|
||||
|
||||
int rtas_get_sensor_fast(int sensor, int index, int *state)
|
||||
{
|
||||
@ -659,7 +659,7 @@ int rtas_set_indicator(int indicator, int index, int new_value)
|
||||
return rtas_error_rc(rc);
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL(rtas_set_indicator);
|
||||
EXPORT_SYMBOL_GPL(rtas_set_indicator);
|
||||
|
||||
/*
|
||||
* Ignoring RTAS extended delay
|
||||
|
@ -6,6 +6,7 @@
|
||||
#endif
|
||||
|
||||
#define BSS_FIRST_SECTIONS *(.bss.prominit)
|
||||
#define RUNTIME_DISCARD_EXIT
|
||||
|
||||
#include <asm/page.h>
|
||||
#include <asm-generic/vmlinux.lds.h>
|
||||
@ -394,9 +395,12 @@ SECTIONS
|
||||
DISCARDS
|
||||
/DISCARD/ : {
|
||||
*(*.EMB.apuinfo)
|
||||
*(.glink .iplt .plt .rela* .comment)
|
||||
*(.glink .iplt .plt .comment)
|
||||
*(.gnu.version*)
|
||||
*(.gnu.attributes)
|
||||
*(.eh_frame)
|
||||
#ifndef CONFIG_RELOCATABLE
|
||||
*(.rela*)
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -104,14 +104,14 @@ static void __dma_sync_page(phys_addr_t paddr, size_t size, int dir)
|
||||
#endif
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
__dma_sync_page(paddr, size, dir);
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
__dma_sync_page(paddr, size, dir);
|
||||
}
|
||||
|
@ -3008,7 +3008,8 @@ static void pnv_ioda_setup_pe_res(struct pnv_ioda_pe *pe,
|
||||
int index;
|
||||
int64_t rc;
|
||||
|
||||
if (!res || !res->flags || res->start > res->end)
|
||||
if (!res || !res->flags || res->start > res->end ||
|
||||
res->flags & IORESOURCE_UNSET)
|
||||
return;
|
||||
|
||||
if (res->flags & IORESOURCE_IO) {
|
||||
|
@ -1416,22 +1416,22 @@ static inline void __init check_lp_set_hblkrm(unsigned int lp,
|
||||
|
||||
void __init pseries_lpar_read_hblkrm_characteristics(void)
|
||||
{
|
||||
const s32 token = rtas_token("ibm,get-system-parameter");
|
||||
unsigned char local_buffer[SPLPAR_TLB_BIC_MAXLENGTH];
|
||||
int call_status, len, idx, bpsize;
|
||||
|
||||
if (!firmware_has_feature(FW_FEATURE_BLOCK_REMOVE))
|
||||
return;
|
||||
|
||||
spin_lock(&rtas_data_buf_lock);
|
||||
memset(rtas_data_buf, 0, RTAS_DATA_BUF_SIZE);
|
||||
call_status = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1,
|
||||
NULL,
|
||||
SPLPAR_TLB_BIC_TOKEN,
|
||||
__pa(rtas_data_buf),
|
||||
RTAS_DATA_BUF_SIZE);
|
||||
memcpy(local_buffer, rtas_data_buf, SPLPAR_TLB_BIC_MAXLENGTH);
|
||||
local_buffer[SPLPAR_TLB_BIC_MAXLENGTH - 1] = '\0';
|
||||
spin_unlock(&rtas_data_buf_lock);
|
||||
do {
|
||||
spin_lock(&rtas_data_buf_lock);
|
||||
memset(rtas_data_buf, 0, RTAS_DATA_BUF_SIZE);
|
||||
call_status = rtas_call(token, 3, 1, NULL, SPLPAR_TLB_BIC_TOKEN,
|
||||
__pa(rtas_data_buf), RTAS_DATA_BUF_SIZE);
|
||||
memcpy(local_buffer, rtas_data_buf, SPLPAR_TLB_BIC_MAXLENGTH);
|
||||
local_buffer[SPLPAR_TLB_BIC_MAXLENGTH - 1] = '\0';
|
||||
spin_unlock(&rtas_data_buf_lock);
|
||||
} while (rtas_busy_delay(call_status));
|
||||
|
||||
if (call_status != 0) {
|
||||
pr_warn("%s %s Error calling get-system-parameter (0x%x)\n",
|
||||
|
@ -289,6 +289,7 @@ static void parse_mpp_x_data(struct seq_file *m)
|
||||
*/
|
||||
static void parse_system_parameter_string(struct seq_file *m)
|
||||
{
|
||||
const s32 token = rtas_token("ibm,get-system-parameter");
|
||||
int call_status;
|
||||
|
||||
unsigned char *local_buffer = kmalloc(SPLPAR_MAXLENGTH, GFP_KERNEL);
|
||||
@ -298,16 +299,15 @@ static void parse_system_parameter_string(struct seq_file *m)
|
||||
return;
|
||||
}
|
||||
|
||||
spin_lock(&rtas_data_buf_lock);
|
||||
memset(rtas_data_buf, 0, SPLPAR_MAXLENGTH);
|
||||
call_status = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1,
|
||||
NULL,
|
||||
SPLPAR_CHARACTERISTICS_TOKEN,
|
||||
__pa(rtas_data_buf),
|
||||
RTAS_DATA_BUF_SIZE);
|
||||
memcpy(local_buffer, rtas_data_buf, SPLPAR_MAXLENGTH);
|
||||
local_buffer[SPLPAR_MAXLENGTH - 1] = '\0';
|
||||
spin_unlock(&rtas_data_buf_lock);
|
||||
do {
|
||||
spin_lock(&rtas_data_buf_lock);
|
||||
memset(rtas_data_buf, 0, SPLPAR_MAXLENGTH);
|
||||
call_status = rtas_call(token, 3, 1, NULL, SPLPAR_CHARACTERISTICS_TOKEN,
|
||||
__pa(rtas_data_buf), RTAS_DATA_BUF_SIZE);
|
||||
memcpy(local_buffer, rtas_data_buf, SPLPAR_MAXLENGTH);
|
||||
local_buffer[SPLPAR_MAXLENGTH - 1] = '\0';
|
||||
spin_unlock(&rtas_data_buf_lock);
|
||||
} while (rtas_busy_delay(call_status));
|
||||
|
||||
if (call_status != 0) {
|
||||
printk(KERN_INFO
|
||||
|
8
arch/riscv/include/uapi/asm/setup.h
Normal file
8
arch/riscv/include/uapi/asm/setup.h
Normal file
@ -0,0 +1,8 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
|
||||
|
||||
#ifndef _UAPI_ASM_RISCV_SETUP_H
|
||||
#define _UAPI_ASM_RISCV_SETUP_H
|
||||
|
||||
#define COMMAND_LINE_SIZE 1024
|
||||
|
||||
#endif /* _UAPI_ASM_RISCV_SETUP_H */
|
@ -89,7 +89,7 @@ void notrace walk_stackframe(struct task_struct *task,
|
||||
while (!kstack_end(ksp)) {
|
||||
if (__kernel_text_address(pc) && unlikely(fn(pc, arg)))
|
||||
break;
|
||||
pc = (*ksp++) - 0x4;
|
||||
pc = READ_ONCE_NOCHECK(*ksp++) - 0x4;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
#include <linux/of_clk.h>
|
||||
#include <linux/clockchips.h>
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/delay.h>
|
||||
#include <asm/sbi.h>
|
||||
@ -28,4 +29,6 @@ void __init time_init(void)
|
||||
|
||||
of_clk_init(NULL);
|
||||
timer_probe();
|
||||
|
||||
tick_setup_hrtimer_broadcast();
|
||||
}
|
||||
|
@ -57,11 +57,19 @@ static unsigned long find_bootdata_space(struct ipl_rb_components *comps,
|
||||
if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && INITRD_START && INITRD_SIZE &&
|
||||
intersects(INITRD_START, INITRD_SIZE, safe_addr, size))
|
||||
safe_addr = INITRD_START + INITRD_SIZE;
|
||||
if (intersects(safe_addr, size, (unsigned long)comps, comps->len)) {
|
||||
safe_addr = (unsigned long)comps + comps->len;
|
||||
goto repeat;
|
||||
}
|
||||
for_each_rb_entry(comp, comps)
|
||||
if (intersects(safe_addr, size, comp->addr, comp->len)) {
|
||||
safe_addr = comp->addr + comp->len;
|
||||
goto repeat;
|
||||
}
|
||||
if (intersects(safe_addr, size, (unsigned long)certs, certs->len)) {
|
||||
safe_addr = (unsigned long)certs + certs->len;
|
||||
goto repeat;
|
||||
}
|
||||
for_each_rb_entry(cert, certs)
|
||||
if (intersects(safe_addr, size, cert->addr, cert->len)) {
|
||||
safe_addr = cert->addr + cert->len;
|
||||
|
@ -255,6 +255,7 @@ static void pop_kprobe(struct kprobe_ctlblk *kcb)
|
||||
{
|
||||
__this_cpu_write(current_kprobe, kcb->prev_kprobe.kp);
|
||||
kcb->kprobe_status = kcb->prev_kprobe.status;
|
||||
kcb->prev_kprobe.kp = NULL;
|
||||
}
|
||||
NOKPROBE_SYMBOL(pop_kprobe);
|
||||
|
||||
@ -509,12 +510,11 @@ static int post_kprobe_handler(struct pt_regs *regs)
|
||||
if (!p)
|
||||
return 0;
|
||||
|
||||
resume_execution(p, regs);
|
||||
if (kcb->kprobe_status != KPROBE_REENTER && p->post_handler) {
|
||||
kcb->kprobe_status = KPROBE_HIT_SSDONE;
|
||||
p->post_handler(p, regs, 0);
|
||||
}
|
||||
|
||||
resume_execution(p, regs);
|
||||
pop_kprobe(kcb);
|
||||
preempt_enable_no_resched();
|
||||
|
||||
|
@ -502,9 +502,7 @@ long arch_ptrace(struct task_struct *child, long request,
|
||||
}
|
||||
return 0;
|
||||
case PTRACE_GET_LAST_BREAK:
|
||||
put_user(child->thread.last_break,
|
||||
(unsigned long __user *) data);
|
||||
return 0;
|
||||
return put_user(child->thread.last_break, (unsigned long __user *)data);
|
||||
case PTRACE_ENABLE_TE:
|
||||
if (!MACHINE_HAS_TE)
|
||||
return -EIO;
|
||||
@ -856,9 +854,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
|
||||
}
|
||||
return 0;
|
||||
case PTRACE_GET_LAST_BREAK:
|
||||
put_user(child->thread.last_break,
|
||||
(unsigned int __user *) data);
|
||||
return 0;
|
||||
return put_user(child->thread.last_break, (unsigned int __user *)data);
|
||||
}
|
||||
return compat_ptrace_request(child, request, addr, data);
|
||||
}
|
||||
|
@ -15,6 +15,8 @@
|
||||
/* Handle ro_after_init data on our own. */
|
||||
#define RO_AFTER_INIT_DATA
|
||||
|
||||
#define RUNTIME_DISCARD_EXIT
|
||||
|
||||
#include <asm-generic/vmlinux.lds.h>
|
||||
#include <asm/vmlinux.lds.h>
|
||||
|
||||
@ -189,5 +191,6 @@ SECTIONS
|
||||
DISCARDS
|
||||
/DISCARD/ : {
|
||||
*(.eh_frame)
|
||||
*(.interp)
|
||||
}
|
||||
}
|
||||
|
@ -4527,6 +4527,22 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
|
||||
if (mem->guest_phys_addr + mem->memory_size > kvm->arch.mem_limit)
|
||||
return -EINVAL;
|
||||
|
||||
if (!kvm->arch.migration_mode)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Turn off migration mode when:
|
||||
* - userspace creates a new memslot with dirty logging off,
|
||||
* - userspace modifies an existing memslot (MOVE or FLAGS_ONLY) and
|
||||
* dirty logging is turned off.
|
||||
* Migration mode expects dirty page logging being enabled to store
|
||||
* its dirty bitmap.
|
||||
*/
|
||||
if (change != KVM_MR_DELETE &&
|
||||
!(mem->flags & KVM_MEM_LOG_DIRTY_PAGES))
|
||||
WARN(kvm_s390_vm_stop_migration(kvm),
|
||||
"Failed to stop migration mode");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -339,7 +339,7 @@ static inline unsigned long clear_user_mvcos(void __user *to, unsigned long size
|
||||
"4: slgr %0,%0\n"
|
||||
"5:\n"
|
||||
EX_TABLE(0b,2b) EX_TABLE(3b,5b)
|
||||
: "+a" (size), "+a" (to), "+a" (tmp1), "=a" (tmp2)
|
||||
: "+&a" (size), "+&a" (to), "+a" (tmp1), "=&a" (tmp2)
|
||||
: "a" (empty_zero_page), "d" (reg0) : "cc", "memory");
|
||||
return size;
|
||||
}
|
||||
|
@ -51,6 +51,7 @@
|
||||
#define SR_FD 0x00008000
|
||||
#define SR_MD 0x40000000
|
||||
|
||||
#define SR_USER_MASK 0x00000303 // M, Q, S, T bits
|
||||
/*
|
||||
* DSP structure and data
|
||||
*/
|
||||
|
@ -25,7 +25,7 @@ void *arch_dma_alloc(struct device *dev, size_t size, dma_addr_t *dma_handle,
|
||||
* Pages from the page allocator may have data present in
|
||||
* cache. So flush the cache before using uncached memory.
|
||||
*/
|
||||
arch_sync_dma_for_device(dev, virt_to_phys(ret), size,
|
||||
arch_sync_dma_for_device(virt_to_phys(ret), size,
|
||||
DMA_BIDIRECTIONAL);
|
||||
|
||||
ret_nocache = (void __force *)ioremap_nocache(virt_to_phys(ret), size);
|
||||
@ -59,8 +59,8 @@ void arch_dma_free(struct device *dev, size_t size, void *vaddr,
|
||||
iounmap(vaddr);
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
void *addr = sh_cacheop_vaddr(phys_to_virt(paddr));
|
||||
|
||||
|
@ -116,6 +116,7 @@ static int
|
||||
restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *r0_p)
|
||||
{
|
||||
unsigned int err = 0;
|
||||
unsigned int sr = regs->sr & ~SR_USER_MASK;
|
||||
|
||||
#define COPY(x) err |= __get_user(regs->x, &sc->sc_##x)
|
||||
COPY(regs[1]);
|
||||
@ -131,6 +132,8 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *r0_p
|
||||
COPY(sr); COPY(pc);
|
||||
#undef COPY
|
||||
|
||||
regs->sr = (regs->sr & SR_USER_MASK) | sr;
|
||||
|
||||
#ifdef CONFIG_SH_FPU
|
||||
if (boot_cpu_data.flags & CPU_HAS_FPU) {
|
||||
int owned_fp;
|
||||
|
@ -10,6 +10,7 @@ OUTPUT_ARCH(sh:sh5)
|
||||
#define LOAD_OFFSET 0
|
||||
OUTPUT_ARCH(sh)
|
||||
#endif
|
||||
#define RUNTIME_DISCARD_EXIT
|
||||
|
||||
#include <asm/thread_info.h>
|
||||
#include <asm/cache.h>
|
||||
|
@ -321,7 +321,7 @@ config FORCE_MAX_ZONEORDER
|
||||
This config option is actually maximum order plus one. For example,
|
||||
a value of 13 means that the largest free memory block is 2^12 pages.
|
||||
|
||||
if SPARC64
|
||||
if SPARC64 || COMPILE_TEST
|
||||
source "kernel/power/Kconfig"
|
||||
endif
|
||||
|
||||
|
@ -368,8 +368,8 @@ void arch_dma_free(struct device *dev, size_t size, void *cpu_addr,
|
||||
|
||||
/* IIep is write-through, not flushing on cpu to device transfer. */
|
||||
|
||||
void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
|
||||
size_t size, enum dma_data_direction dir)
|
||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
if (dir != PCI_DMA_TODEVICE)
|
||||
dma_make_coherent(paddr, PAGE_ALIGN(size));
|
||||
|
@ -746,6 +746,7 @@ static int vector_config(char *str, char **error_out)
|
||||
|
||||
if (parsed == NULL) {
|
||||
*error_out = "vector_config failed to parse parameters";
|
||||
kfree(params);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
|
||||
#define RUNTIME_DISCARD_EXIT
|
||||
KERNEL_STACK_SIZE = 4096 * (1 << CONFIG_KERNEL_STACK_ORDER);
|
||||
|
||||
#ifdef CONFIG_LD_SCRIPT_STATIC
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <crypto/internal/simd.h>
|
||||
#include <asm/cpu_device_id.h>
|
||||
#include <asm/simd.h>
|
||||
#include <asm/unaligned.h>
|
||||
|
||||
#define GHASH_BLOCK_SIZE 16
|
||||
#define GHASH_DIGEST_SIZE 16
|
||||
@ -54,7 +55,6 @@ static int ghash_setkey(struct crypto_shash *tfm,
|
||||
const u8 *key, unsigned int keylen)
|
||||
{
|
||||
struct ghash_ctx *ctx = crypto_shash_ctx(tfm);
|
||||
be128 *x = (be128 *)key;
|
||||
u64 a, b;
|
||||
|
||||
if (keylen != GHASH_BLOCK_SIZE) {
|
||||
@ -63,8 +63,8 @@ static int ghash_setkey(struct crypto_shash *tfm,
|
||||
}
|
||||
|
||||
/* perform multiplication by 'x' in GF(2^128) */
|
||||
a = be64_to_cpu(x->a);
|
||||
b = be64_to_cpu(x->b);
|
||||
a = get_unaligned_be64(key);
|
||||
b = get_unaligned_be64(key + 8);
|
||||
|
||||
ctx->shash.a = (b << 1) | (a >> 63);
|
||||
ctx->shash.b = (a << 1) | (b >> 63);
|
||||
|
@ -131,7 +131,7 @@ static inline unsigned int x86_cpuid_family(void)
|
||||
int __init microcode_init(void);
|
||||
extern void __init load_ucode_bsp(void);
|
||||
extern void load_ucode_ap(void);
|
||||
void reload_early_microcode(void);
|
||||
void reload_early_microcode(unsigned int cpu);
|
||||
extern bool get_builtin_firmware(struct cpio_data *cd, const char *name);
|
||||
extern bool initrd_gone;
|
||||
void microcode_bsp_resume(void);
|
||||
@ -139,7 +139,7 @@ void microcode_bsp_resume(void);
|
||||
static inline int __init microcode_init(void) { return 0; };
|
||||
static inline void __init load_ucode_bsp(void) { }
|
||||
static inline void load_ucode_ap(void) { }
|
||||
static inline void reload_early_microcode(void) { }
|
||||
static inline void reload_early_microcode(unsigned int cpu) { }
|
||||
static inline void microcode_bsp_resume(void) { }
|
||||
static inline bool
|
||||
get_builtin_firmware(struct cpio_data *cd, const char *name) { return false; }
|
||||
|
@ -47,12 +47,12 @@ struct microcode_amd {
|
||||
extern void __init load_ucode_amd_bsp(unsigned int family);
|
||||
extern void load_ucode_amd_ap(unsigned int family);
|
||||
extern int __init save_microcode_in_initrd_amd(unsigned int family);
|
||||
void reload_ucode_amd(void);
|
||||
void reload_ucode_amd(unsigned int cpu);
|
||||
#else
|
||||
static inline void __init load_ucode_amd_bsp(unsigned int family) {}
|
||||
static inline void load_ucode_amd_ap(unsigned int family) {}
|
||||
static inline int __init
|
||||
save_microcode_in_initrd_amd(unsigned int family) { return -EINVAL; }
|
||||
void reload_ucode_amd(void) {}
|
||||
static inline void reload_ucode_amd(unsigned int cpu) {}
|
||||
#endif
|
||||
#endif /* _ASM_X86_MICROCODE_AMD_H */
|
||||
|
@ -50,6 +50,10 @@
|
||||
#define SPEC_CTRL_RRSBA_DIS_S_SHIFT 6 /* Disable RRSBA behavior */
|
||||
#define SPEC_CTRL_RRSBA_DIS_S BIT(SPEC_CTRL_RRSBA_DIS_S_SHIFT)
|
||||
|
||||
/* A mask for bits which the kernel toggles when controlling mitigations */
|
||||
#define SPEC_CTRL_MITIGATIONS_MASK (SPEC_CTRL_IBRS | SPEC_CTRL_STIBP | SPEC_CTRL_SSBD \
|
||||
| SPEC_CTRL_RRSBA_DIS_S)
|
||||
|
||||
#define MSR_IA32_PRED_CMD 0x00000049 /* Prediction Command */
|
||||
#define PRED_CMD_IBPB BIT(0) /* Indirect Branch Prediction Barrier */
|
||||
|
||||
|
@ -25,6 +25,8 @@ void __noreturn machine_real_restart(unsigned int type);
|
||||
#define MRR_BIOS 0
|
||||
#define MRR_APM 1
|
||||
|
||||
void cpu_emergency_disable_virtualization(void);
|
||||
|
||||
typedef void (*nmi_shootdown_cb)(int, struct pt_regs*);
|
||||
void nmi_panic_self_stop(struct pt_regs *regs);
|
||||
void nmi_shootdown_cpus(nmi_shootdown_cb callback);
|
||||
|
@ -51,24 +51,27 @@ DECLARE_STATIC_KEY_FALSE(rdt_mon_enable_key);
|
||||
* simple as possible.
|
||||
* Must be called with preemption disabled.
|
||||
*/
|
||||
static void __resctrl_sched_in(void)
|
||||
static inline void __resctrl_sched_in(struct task_struct *tsk)
|
||||
{
|
||||
struct resctrl_pqr_state *state = this_cpu_ptr(&pqr_state);
|
||||
u32 closid = state->default_closid;
|
||||
u32 rmid = state->default_rmid;
|
||||
u32 tmp;
|
||||
|
||||
/*
|
||||
* If this task has a closid/rmid assigned, use it.
|
||||
* Else use the closid/rmid assigned to this cpu.
|
||||
*/
|
||||
if (static_branch_likely(&rdt_alloc_enable_key)) {
|
||||
if (current->closid)
|
||||
closid = current->closid;
|
||||
tmp = READ_ONCE(tsk->closid);
|
||||
if (tmp)
|
||||
closid = tmp;
|
||||
}
|
||||
|
||||
if (static_branch_likely(&rdt_mon_enable_key)) {
|
||||
if (current->rmid)
|
||||
rmid = current->rmid;
|
||||
tmp = READ_ONCE(tsk->rmid);
|
||||
if (tmp)
|
||||
rmid = tmp;
|
||||
}
|
||||
|
||||
if (closid != state->cur_closid || rmid != state->cur_rmid) {
|
||||
@ -78,15 +81,15 @@ static void __resctrl_sched_in(void)
|
||||
}
|
||||
}
|
||||
|
||||
static inline void resctrl_sched_in(void)
|
||||
static inline void resctrl_sched_in(struct task_struct *tsk)
|
||||
{
|
||||
if (static_branch_likely(&rdt_enable_key))
|
||||
__resctrl_sched_in();
|
||||
__resctrl_sched_in(tsk);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static inline void resctrl_sched_in(void) {}
|
||||
static inline void resctrl_sched_in(struct task_struct *tsk) {}
|
||||
|
||||
#endif /* CONFIG_X86_CPU_RESCTRL */
|
||||
|
||||
|
@ -120,7 +120,21 @@ static inline void cpu_svm_disable(void)
|
||||
|
||||
wrmsrl(MSR_VM_HSAVE_PA, 0);
|
||||
rdmsrl(MSR_EFER, efer);
|
||||
wrmsrl(MSR_EFER, efer & ~EFER_SVME);
|
||||
if (efer & EFER_SVME) {
|
||||
/*
|
||||
* Force GIF=1 prior to disabling SVM to ensure INIT and NMI
|
||||
* aren't blocked, e.g. if a fatal error occurred between CLGI
|
||||
* and STGI. Note, STGI may #UD if SVM is disabled from NMI
|
||||
* context between reading EFER and executing STGI. In that
|
||||
* case, GIF must already be set, otherwise the NMI would have
|
||||
* been blocked, so just eat the fault.
|
||||
*/
|
||||
asm_volatile_goto("1: stgi\n\t"
|
||||
_ASM_EXTABLE(1b, %l[fault])
|
||||
::: "memory" : fault);
|
||||
fault:
|
||||
wrmsrl(MSR_EFER, efer & ~EFER_SVME);
|
||||
}
|
||||
}
|
||||
|
||||
/** Makes sure SVM is disabled, if it is supported on the CPU
|
||||
|
@ -205,6 +205,15 @@ static void init_amd_k6(struct cpuinfo_x86 *c)
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
* Work around Erratum 1386. The XSAVES instruction malfunctions in
|
||||
* certain circumstances on Zen1/2 uarch, and not all parts have had
|
||||
* updated microcode at the time of writing (March 2023).
|
||||
*
|
||||
* Affected parts all have no supervisor XSAVE states, meaning that
|
||||
* the XSAVEC instruction (which works fine) is equivalent.
|
||||
*/
|
||||
clear_cpu_cap(c, X86_FEATURE_XSAVES);
|
||||
}
|
||||
|
||||
static void init_amd_k7(struct cpuinfo_x86 *c)
|
||||
|
@ -135,9 +135,17 @@ void __init check_bugs(void)
|
||||
* have unknown values. AMD64_LS_CFG MSR is cached in the early AMD
|
||||
* init code as it is not enumerated and depends on the family.
|
||||
*/
|
||||
if (boot_cpu_has(X86_FEATURE_MSR_SPEC_CTRL))
|
||||
if (cpu_feature_enabled(X86_FEATURE_MSR_SPEC_CTRL)) {
|
||||
rdmsrl(MSR_IA32_SPEC_CTRL, x86_spec_ctrl_base);
|
||||
|
||||
/*
|
||||
* Previously running kernel (kexec), may have some controls
|
||||
* turned ON. Clear them and let the mitigations setup below
|
||||
* rediscover them based on configuration.
|
||||
*/
|
||||
x86_spec_ctrl_base &= ~SPEC_CTRL_MITIGATIONS_MASK;
|
||||
}
|
||||
|
||||
/* Select the proper CPU mitigations before patching alternatives: */
|
||||
spectre_v1_select_mitigation();
|
||||
spectre_v2_select_mitigation();
|
||||
@ -975,14 +983,18 @@ spectre_v2_parse_user_cmdline(void)
|
||||
return SPECTRE_V2_USER_CMD_AUTO;
|
||||
}
|
||||
|
||||
static inline bool spectre_v2_in_ibrs_mode(enum spectre_v2_mitigation mode)
|
||||
static inline bool spectre_v2_in_eibrs_mode(enum spectre_v2_mitigation mode)
|
||||
{
|
||||
return mode == SPECTRE_V2_IBRS ||
|
||||
mode == SPECTRE_V2_EIBRS ||
|
||||
return mode == SPECTRE_V2_EIBRS ||
|
||||
mode == SPECTRE_V2_EIBRS_RETPOLINE ||
|
||||
mode == SPECTRE_V2_EIBRS_LFENCE;
|
||||
}
|
||||
|
||||
static inline bool spectre_v2_in_ibrs_mode(enum spectre_v2_mitigation mode)
|
||||
{
|
||||
return spectre_v2_in_eibrs_mode(mode) || mode == SPECTRE_V2_IBRS;
|
||||
}
|
||||
|
||||
static void __init
|
||||
spectre_v2_user_select_mitigation(void)
|
||||
{
|
||||
@ -1045,12 +1057,19 @@ spectre_v2_user_select_mitigation(void)
|
||||
}
|
||||
|
||||
/*
|
||||
* If no STIBP, IBRS or enhanced IBRS is enabled, or SMT impossible,
|
||||
* STIBP is not required.
|
||||
* If no STIBP, enhanced IBRS is enabled, or SMT impossible, STIBP
|
||||
* is not required.
|
||||
*
|
||||
* Enhanced IBRS also protects against cross-thread branch target
|
||||
* injection in user-mode as the IBRS bit remains always set which
|
||||
* implicitly enables cross-thread protections. However, in legacy IBRS
|
||||
* mode, the IBRS bit is set only on kernel entry and cleared on return
|
||||
* to userspace. This disables the implicit cross-thread protection,
|
||||
* so allow for STIBP to be selected in that case.
|
||||
*/
|
||||
if (!boot_cpu_has(X86_FEATURE_STIBP) ||
|
||||
!smt_possible ||
|
||||
spectre_v2_in_ibrs_mode(spectre_v2_enabled))
|
||||
spectre_v2_in_eibrs_mode(spectre_v2_enabled))
|
||||
return;
|
||||
|
||||
/*
|
||||
@ -2113,7 +2132,7 @@ static ssize_t mmio_stale_data_show_state(char *buf)
|
||||
|
||||
static char *stibp_state(void)
|
||||
{
|
||||
if (spectre_v2_in_ibrs_mode(spectre_v2_enabled))
|
||||
if (spectre_v2_in_eibrs_mode(spectre_v2_enabled))
|
||||
return "";
|
||||
|
||||
switch (spectre_v2_user_stibp) {
|
||||
|
@ -55,7 +55,9 @@ struct cont_desc {
|
||||
};
|
||||
|
||||
static u32 ucode_new_rev;
|
||||
static u8 amd_ucode_patch[PATCH_MAX_SIZE];
|
||||
|
||||
/* One blob per node. */
|
||||
static u8 amd_ucode_patch[MAX_NUMNODES][PATCH_MAX_SIZE];
|
||||
|
||||
/*
|
||||
* Microcode patch container file is prepended to the initrd in cpio
|
||||
@ -429,7 +431,7 @@ apply_microcode_early_amd(u32 cpuid_1_eax, void *ucode, size_t size, bool save_p
|
||||
patch = (u8 (*)[PATCH_MAX_SIZE])__pa_nodebug(&amd_ucode_patch);
|
||||
#else
|
||||
new_rev = &ucode_new_rev;
|
||||
patch = &amd_ucode_patch;
|
||||
patch = &amd_ucode_patch[0];
|
||||
#endif
|
||||
|
||||
desc.cpuid_1_eax = cpuid_1_eax;
|
||||
@ -548,8 +550,7 @@ void load_ucode_amd_ap(unsigned int cpuid_1_eax)
|
||||
apply_microcode_early_amd(cpuid_1_eax, cp.data, cp.size, false);
|
||||
}
|
||||
|
||||
static enum ucode_state
|
||||
load_microcode_amd(bool save, u8 family, const u8 *data, size_t size);
|
||||
static enum ucode_state load_microcode_amd(u8 family, const u8 *data, size_t size);
|
||||
|
||||
int __init save_microcode_in_initrd_amd(unsigned int cpuid_1_eax)
|
||||
{
|
||||
@ -567,19 +568,19 @@ int __init save_microcode_in_initrd_amd(unsigned int cpuid_1_eax)
|
||||
if (!desc.mc)
|
||||
return -EINVAL;
|
||||
|
||||
ret = load_microcode_amd(true, x86_family(cpuid_1_eax), desc.data, desc.size);
|
||||
ret = load_microcode_amd(x86_family(cpuid_1_eax), desc.data, desc.size);
|
||||
if (ret > UCODE_UPDATED)
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void reload_ucode_amd(void)
|
||||
void reload_ucode_amd(unsigned int cpu)
|
||||
{
|
||||
struct microcode_amd *mc;
|
||||
u32 rev, dummy;
|
||||
struct microcode_amd *mc;
|
||||
|
||||
mc = (struct microcode_amd *)amd_ucode_patch;
|
||||
mc = (struct microcode_amd *)amd_ucode_patch[cpu_to_node(cpu)];
|
||||
|
||||
rdmsr(MSR_AMD64_PATCH_LEVEL, rev, dummy);
|
||||
|
||||
@ -845,9 +846,10 @@ static enum ucode_state __load_microcode_amd(u8 family, const u8 *data,
|
||||
return UCODE_OK;
|
||||
}
|
||||
|
||||
static enum ucode_state
|
||||
load_microcode_amd(bool save, u8 family, const u8 *data, size_t size)
|
||||
static enum ucode_state load_microcode_amd(u8 family, const u8 *data, size_t size)
|
||||
{
|
||||
struct cpuinfo_x86 *c;
|
||||
unsigned int nid, cpu;
|
||||
struct ucode_patch *p;
|
||||
enum ucode_state ret;
|
||||
|
||||
@ -860,23 +862,23 @@ load_microcode_amd(bool save, u8 family, const u8 *data, size_t size)
|
||||
return ret;
|
||||
}
|
||||
|
||||
p = find_patch(0);
|
||||
if (!p) {
|
||||
return ret;
|
||||
} else {
|
||||
if (boot_cpu_data.microcode >= p->patch_id)
|
||||
return ret;
|
||||
for_each_node(nid) {
|
||||
cpu = cpumask_first(cpumask_of_node(nid));
|
||||
c = &cpu_data(cpu);
|
||||
|
||||
p = find_patch(cpu);
|
||||
if (!p)
|
||||
continue;
|
||||
|
||||
if (c->microcode >= p->patch_id)
|
||||
continue;
|
||||
|
||||
ret = UCODE_NEW;
|
||||
|
||||
memset(&amd_ucode_patch[nid], 0, PATCH_MAX_SIZE);
|
||||
memcpy(&amd_ucode_patch[nid], p->data, min_t(u32, p->size, PATCH_MAX_SIZE));
|
||||
}
|
||||
|
||||
/* save BSP's matching patch for early load */
|
||||
if (!save)
|
||||
return ret;
|
||||
|
||||
memset(amd_ucode_patch, 0, PATCH_MAX_SIZE);
|
||||
memcpy(amd_ucode_patch, p->data, min_t(u32, p->size, PATCH_MAX_SIZE));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -901,12 +903,11 @@ static enum ucode_state request_microcode_amd(int cpu, struct device *device,
|
||||
{
|
||||
char fw_name[36] = "amd-ucode/microcode_amd.bin";
|
||||
struct cpuinfo_x86 *c = &cpu_data(cpu);
|
||||
bool bsp = c->cpu_index == boot_cpu_data.cpu_index;
|
||||
enum ucode_state ret = UCODE_NFOUND;
|
||||
const struct firmware *fw;
|
||||
|
||||
/* reload ucode container only on the boot cpu */
|
||||
if (!refresh_fw || !bsp)
|
||||
if (!refresh_fw)
|
||||
return UCODE_OK;
|
||||
|
||||
if (c->x86 >= 0x15)
|
||||
@ -921,7 +922,7 @@ static enum ucode_state request_microcode_amd(int cpu, struct device *device,
|
||||
if (!verify_container(fw->data, fw->size, false))
|
||||
goto fw_release;
|
||||
|
||||
ret = load_microcode_amd(bsp, c->x86, fw->data, fw->size);
|
||||
ret = load_microcode_amd(c->x86, fw->data, fw->size);
|
||||
|
||||
fw_release:
|
||||
release_firmware(fw);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user