mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 02:21:52 +09:00
Merge 6.1.121-lts branch changes into android14-6.1
Steps on the way to a final 6.1.124 lts merge into android14-6.1 Changes included in here are: *747746a3c9Revert "net: defer final 'struct net' free in netns dismantle" *e31da5fb5cMerge 6.1.121 into android14-6.1-lts |\ | *29f02ec58aLinux 6.1.121 | *5d16dd18bfx86/static-call: fix 32-bit build | *b61f346fa0ALSA: usb-audio: Fix a DMA to stack memory bug | *4c24703978x86/xen: remove hypercall page | *1a2471af32x86/xen: use new hypercall functions instead of hypercall page | *7e44e70652x86/xen: add central hypercall functions | *fa719857f6x86/xen: don't do PV iret hypercall through hypercall page | *f8b1f5472bx86/static-call: provide a way to do very early static-call updates | *054f07a204objtool/x86: allow syscall instruction | *259550d6b0x86: make get_cpu_vendor() accessible from Xen code | *8b41e6bccfxen/netfront: fix crash when removing device | *b070291c83tracing/kprobes: Skip symbol counting logic for module symbols in create_local_trace_kprobe() | *60fd3538d2bpf: sync_linked_regs() must preserve subreg_def | *6fb69bb519blk-iocost: Avoid using clamp() on inuse in __propagate_weights() | *0f40a04c2bBluetooth: SCO: Add support for 16 bits transparent voice setting | *48b1de8156Bluetooth: iso: Fix recursive locking warning | *5953891425ACPICA: events/evxfregn: don't release the ContextMutex that was never acquired | *88f1014b5cteam: Fix feature propagation of NETIF_F_GSO_ENCAP_ALL | *4842df9528bonding: Fix feature propagation of NETIF_F_GSO_ENCAP_ALL | *10df49cfcanet/sched: netem: account for backlog updates from child qdisc | *27a650a3d4net: dsa: felix: fix stuck CPU-injected packets with short taprio windows | *4d25a292a7Documentation: PM: Clarify pm_runtime_resume_and_get() return value | *a52ac1d883ASoC: amd: yc: Fix the wrong return value | *9721c398c8qca_spi: Make driver probing reliable | *c47ec91706qca_spi: Fix clock speed for multiple QCA7000 | *dbb159c6cbcxgb4: use port number to set mac addr | *73d97072f6ACPI: resource: Fix memory resource type union access | *32e2b0b796net: sparx5: fix the maximum frame length register | *3860cc1f6anet: sparx5: fix FDMA performance issue | *a0427b82d1spi: aspeed: Fix an error handling path in aspeed_spi_[read|write]_user() | *1c765f5710net: mscc: ocelot: perform error cleanup in ocelot_hwstamp_set() | *da0732ef2anet: mscc: ocelot: be resilient to loss of PTP packets during transmission | *ffd597b227net: mscc: ocelot: ocelot->ts_id_lock and ocelot_port->tx_skbs.lock are IRQ-safe | *5422e628aenet: mscc: ocelot: improve handling of TX timestamp for unknown skb | *534ad1c380net: mscc: ocelot: fix memory leak on ocelot_port_add_txtstamp_skb() | *3267b254dcnet: defer final 'struct net' free in netns dismantle | *f094919965net: lapb: increase LAPB_HEADER_LEN | *9724cb1881ptp: kvm: x86: Return EOPNOTSUPP instead of ENODEV from kvm_arch_ptp_init() | *5ea817f40dptp: kvm: Use decrypted memory in confidential guest on x86 | *e9c208b290selftests: mlxsw: sharedbuffer: Ensure no extra packets are counted | *4dcd14efb3selftests: mlxsw: sharedbuffer: Remove duplicate test cases | *f12b37e165selftests: mlxsw: sharedbuffer: Remove h1 ingress test case | *61f720e801net/mlx5: DR, prevent potential error pointer dereference | *754ec823eetipc: fix NULL deref in cleanup_bearer() | *a6b98dd546batman-adv: Do not let TT changes list grows indefinitely | *0456f8de1cbatman-adv: Remove uninitialized data in full table TT response | *38f007a96ebatman-adv: Do not send uninitialized TT changes | *28e17d8e1aamdgpu/uvd: get ring reference from rq scheduler | *143f723e9eacpi: nfit: vmalloc-out-of-bounds Read in acpi_nfit_ctl | *3faaad820cwifi: mac80211: fix station NSS capability initialization order | *7df24b3a8cwifi: mac80211: clean up 'ret' in sta_link_apply_parameters() | *29e640ae64wifi: nl80211: fix NL80211_ATTR_MLO_LINK_ID off-by-one | *cd1c785864exfat: fix potential deadlock on __exfat_get_dentry_set | *d8fe01ad2dexfat: support dynamic allocate bh for exfat_entry_set_cache | *755fe68cd4smb: client: fix UAF in smb2_reconnect_server() | *46fd10f458bpf, sockmap: Fix update element with same | *842e5af282bpf,perf: Fix invalid prog_array access in perf_event_detach_bpf_prog | *ccab6aad13xfs: only run precommits once per transaction object | *618d34fb8exfs: fix scrub tracepoints when inode-rooted btrees are involved | *c9a5e3a17cxfs: return from xfs_symlink_verify early on V4 filesystems | *eca6418250xfs: don't drop errno values when we fail to ficlone the entire range | *6b72c03ae5xfs: update btree keys correctly when _insrec splits an inode root block | *2129c9d7abdrm/i915: Fix memory leak by correcting cache object name in error handler | *1c5902fa3eusb: dwc3: xilinx: make sure pipe clock is deselected in usb2 only mode | *c83213b664usb: gadget: u_serial: Fix the issue that gs_start_io crashed due to accessing null pointer | *569793fc68usb: typec: anx7411: fix OF node reference leaks in anx7411_typec_switch_probe() | *3fa13f853dusb: typec: anx7411: fix fwnode_handle reference leak | *02ceda7f64usb: ehci-hcd: fix call balance of clocks handling routines | *e92f79d582usb: dwc2: Fix HCD port connection race | *37927e3600usb: dwc2: hcd: Fix GetPortStatus & SetPortFeature | *195eda3d06usb: dwc2: Fix HCD resume | *b8251050f5ata: sata_highbank: fix OF node reference leak in highbank_initialize_phys() | *1a5b5f5b86usb: host: max3421-hcd: Correctly abort a USB request. | *cebf90c2d8ALSA: usb-audio: Add implicit feedback quirk for Yamaha THR5 | *64afc6fe24blk-cgroup: Fix UAF in blkcg_unpin_online() | *e681c5a824tcp: check space before adding MPTCP SYN options | *37a0e2b362ksmbd: fix racy issue from session lookup and expire | *9245459a99bpf: Fix UAF via mismatching bpf_prog/attachment RCU flavors * |5a18c898ddANDROID: GKI: fix CRC changes in ttm_tt.c * |b59a4bd0ccRevert "net: Move {l,t,d}stats allocation to core and convert veth & vrf" * |0b4ff5581fRevert "veth: Use tstats per-CPU traffic counters" * |765e0bd4a4Revert "bpf: Fix dev's rx stats for bpf_redirect_peer traffic" * |a25df979f6Revert "bpf: Fix helper writes to read-only maps" * |115fd6611eRevert "arm64: smccc: Remove broken support for SMCCCv1.3 SVE discard hint" * |4cf1dd1184Merge 6.1.120 into android14-6.1-lts |\| | *52f863f820Linux 6.1.120 | *c3f594a347Bluetooth: MGMT: Fix possible deadlocks | *56bddf543di3c: master: svc: Fix use after free vulnerability in svc_i3c_master Driver Due to Race Condition | *ec062a450cfs/ntfs3: Sequential field availability check in mi_enum_attr() | *746ed28a96drm/msm: DEVFREQ_GOV_SIMPLE_ONDEMAND is no longer needed | *5446585e42PM / devfreq: Fix build issues with devfreq disabled | *a08c1f1268i3c: master: svc: fix possible assignment of the same address to two devices | *e9645cf5e0i3c: master: Remove i3c_dev_disable_ibi_locked(olddev) on device hotjoin | *7f5c20b9faserial: amba-pl011: fix build regression | *4cb99eeb1dusb: dwc3: ep0: Don't reset resource alloc flag | *c807ab3a86drm/amdgpu: rework resume handling for display (v2) | *77ab79b9e4drm/ttm: Print the memory decryption status just once | *ef7efa60a3drm/ttm: Make sure the mapped tt pages are decrypted when needed | *7ca7b6649bveth: Use tstats per-CPU traffic counters | *8e7b5300a0bpf: Fix dev's rx stats for bpf_redirect_peer traffic | *877c81faf0net: Move {l,t,d}stats allocation to core and convert veth & vrf | *988e55abcfbpf: Fix helper writes to read-only maps | *0f910dbf2fmm: call the security_mmap_file() LSM hook in remap_file_pages() | *2c38ab25aaASoC: Intel: avs: Fix return status of avs_pcm_hw_constraints_init() | *bfcaffd4ccarm64: smccc: Remove broken support for SMCCCv1.3 SVE discard hint | *de529504b3arm64/sve: Discard stale CPU state when handling SVE traps | *7d687b9874gve: Fixes for napi_poll when budget is 0 | *6ec0b877d1Revert "drm/amdgpu: add missing size check in amdgpu_debugfs_gprwave_read()" | *4ed23e9dd8ocfs2: Revert "ocfs2: fix the la space leak when unmounting an ocfs2 volume" | *eef7301e67drm/amd/display: Check BIOS images before it is used | *40aed32594mmc: mtk-sd: Fix error handle of probe function | *ca5c9cb647xhci: dbc: Fix STALL transfer event handling | *3ab9326f93io_uring: wake up optimisations | *7d5c04d26dmm/damon/vaddr: fix issue in damon_va_evenly_split_region() | *dd16397b47jffs2: Fix rtime decompressor | *47c9a7f810jffs2: Prevent rtime decompress memory corruption * |04df8ff9abMerge4118bd1834("KVM: x86/mmu: Ensure that kvm_release_pfn_clean() takes exact pfn from kvm_faultin_pfn()") into android14-6.1-lts |\| | *4118bd1834KVM: x86/mmu: Ensure that kvm_release_pfn_clean() takes exact pfn from kvm_faultin_pfn() | *21bc72eef0KVM: arm64: vgic-its: Clear ITE when DISCARD frees an ITE | *fe695bc157KVM: arm64: vgic-its: Clear DTE when MAPD unmaps a device | *cb35445052KVM: arm64: vgic-its: Add a data length check in vgic_its_save_* * |d61182f8b1Revert "scsi: ufs: core: Make DMA mask configuration more flexible" * |9da7c09f0bMergeeed8395d94("udf: Fold udf_getblk() into udf_bread()") into android14-6.1-lts |\| | *eed8395d94udf: Fold udf_getblk() into udf_bread() | *97c22fd510vfio/mlx5: Align the page tracking max message size with the device capability | *ca8e6a7369Revert "unicode: Don't special case ignorable code points" | *db774504betracing/eprobe: Fix to release eprobe when failed to add dyn_event | *b15437fb26btrfs: fix missing snapshot drew unlock when root is dead during swap activation | *641e9638aasched/core: Prevent wakeup of ksoftirqd during idle load balance | *f4a4250cf5sched/fair: Check idle_cpu() before need_resched() to detect ilb CPU turning busy | *7791249606sched/core: Remove the unnecessary need_resched() check in nohz_csd_func() | *74b6d260cbkasan: make report_lock a raw spinlock | *ac77fe0577kasan: suppress recursive reports for HW_TAGS | *94ad56f61bio_uring/tctx: work around xa_store() allocation error issue | *3613d540c1serial: 8250_dw: Add Sophgo SG2044 quirk | *2c9502ac83rtc: cmos: avoid taking rtc_lock for extended period of time | *80be263f3fmisc: eeprom: eeprom_93cx6: Add quirk for extra read clock cycle | *6d5f0453a2powerpc/prom_init: Fixup missing powermac #size-cells | *c239c3c004ASoC: amd: yc: Add quirk for microphone on Lenovo Thinkpad T14s Gen 6 21M1CTO1WW | *c8ee41fc35MIPS: Loongson64: DTS: Really fix PCIe port nodes for ls7a | *b41d8adfd0iio: light: ltr501: Add LTER0303 to the supported devices | *af1d1d3e4eusb: chipidea: udc: handle USB Error Interrupt if IOC not set | *08715b741fLoongArch: Fix sleeping in atomic context for PREEMPT_RT | *816187b183i3c: Use i3cdev->desc->info instead of calling i3c_device_get_info() to avoid deadlock | *d51345f75fPCI: Add ACS quirk for Wangxun FF5xxx NICs | *07911f8385PCI: Add 'reset_subordinate' to reset hierarchy below bridge | *2dcaa24a00PCI: Detect and trust built-in Thunderbolt chips | *9d745a56aei3c: mipi-i3c-hci: Mask ring interrupts before ring stop request | *ef517d2d21f2fs: fix f2fs_bug_on when uninstalling filesystem call f2fs_evict_inode. | *c6bdc33263verification/dot2: Improve dot parser robustness | *08f3ca17c1smb: client: memcpy() with surrounding object base address | *12433c87d2nvdimm: rectify the illogical code within nd_dax_probe() | *b859dd6702pinctrl: qcom: spmi-mpp: Add PM8937 compatible | *3cc16b146dpinctrl: qcom-pmic-gpio: add support for PM8937 | *0d63c36f03scsi: st: Add MTIOCGET and MTLOAD to ioctls allowed after device reset | *f3ffc7769fscsi: st: Don't modify unknown block number in MTIOCGET | *50d9f68e4aleds: class: Protect brightness_show() with led_cdev->led_access mutex | *6e8a13f27escsi: ufs: core: Make DMA mask configuration more flexible | *2991a02389scsi: hisi_sas: Add cond_resched() for no forced preemption model | *4e5a4e8d1btools/rtla: fix collision with glibc sched_attr/sched_set_attr | *943a0c5fa4tracing: Use atomic64_inc_return() in trace_clock_counter() | *69243255f2tracing/ftrace: disable preemption in syscall probe | *a9ca98ec15pinctrl: freescale: fix COMPILE_TEST error with PINCTRL_IMX_SCU | *1a16deb517netpoll: Use rcu_access_pointer() in __netpoll_setup | *3100034a2dnet/neighbor: clear error in case strict check is not set | *84e49db5b3rocker: fix link status detection in rocker_carrier_init() | *7c557ba828ASoC: hdmi-codec: reorder channel allocation list | *559b1c7ac2Bluetooth: hci_core: Fix not checking skb length on hci_acldata_packet | *f2c3deaf20Bluetooth: btusb: Add RTL8852BE device 0489:e123 to device tables | *7d9a095160dsa: qca8k: Use nested lock to avoid splat | *67a25ea28fwifi: brcmfmac: Fix oops due to NULL pointer dereference in brcmf_sdiod_sglist_rw() | *4adc692826wifi: ipw2x00: libipw_rx_any(): fix bad alignment | *ff0346a746drm/amdgpu: set the right AMDGPU sg segment limitation | *324a76b89fALSA: usb-audio: Make mic volume workarounds globally applicable | *6f014c96a1drm/amdgpu: skip amdgpu_device_cache_pci_state under sriov | *491487eeddjfs: add a check to prevent array-index-out-of-bounds in dbAdjTree | *ff9fc48fabjfs: fix array-index-out-of-bounds in jfs_readdir | *51a203470fjfs: fix shift-out-of-bounds in dbSplit | *2eea5fda55jfs: array-index-out-of-bounds fix in dtReadFirst | *8c1b4fea8ddma-debug: fix a possible deadlock on radix_lock | *b295b197dadrm/amdgpu: refine error handling in amdgpu_ttm_tt_pin_userptr | *8ffd84c694drm/amdgpu: Dereference the ATCS ACPI buffer | *266a3354f7drm/amdgpu: clear RB_OVERFLOW bit when enabling interrupts for vega20_ih | *166df51487drm/sched: memset() 'job' in drm_sched_job_init() | *490f09dee8net: sfp: change quirks for Alcatel Lucent G-010S-P | *8b0161589edrm/panel: simple: Add Microchip AC69T88A LVDS Display panel | *18e450fc83wifi: ath5k: add PCI ID for Arcadyan devices | *cc871a02a5wifi: ath5k: add PCI ID for SX76X | *79e16a0d33net: inet6: do not leave a dangling sk pointer in inet6_create() | *b4513cfd3anet: inet: do not leave a dangling sk pointer in inet_create() | *e8bd6c5f5dnet: ieee802154: do not leave a dangling sk pointer in ieee802154_create() | *5947c9ac08net: af_can: do not leave a dangling sk pointer in can_create() | *ac3eaac4cfBluetooth: RFCOMM: avoid leaving dangling sk pointer in rfcomm_sock_alloc() | *bb2f2342a6Bluetooth: L2CAP: do not leave dangling sk pointer on error in l2cap_sock_create() | *a6cf750b73af_packet: avoid erroring out after sock_init_data() in packet_create() | *a478f3841enet/sched: cbs: Fix integer overflow in cbs_set_port_rate() | *9c3d8ed728net: ethernet: fs_enet: Use %pa to format resource_size_t | *ab716f7666net: fec_mpc52xx_phy: Use %pa to format resource_size_t | *039daf6f02samples/bpf: Fix a resource leak | *77f168247br8169: don't apply UDP padding quirk on RTL8126A | *c5648abf72drm/display: Fix building with GCC 15 | *578afcc9d9drm/radeon/r600_cs: Fix possible int overflow in r600_packet3_check() | *b2f6165aecdrm/mcde: Enable module autoloading | *20baf71507drm/bridge: it6505: Enable module autoloading | *dd376b0e61drm: panel-orientation-quirks: Add quirk for AYA NEO GEEK | *719497a715drm: panel-orientation-quirks: Add quirk for AYA NEO Founder edition | *dce37cb7f6drm: panel-orientation-quirks: Add quirk for AYA NEO 2 model | *09ba19adb9drm/vc4: hvs: Set AXI panic modes for the HVS | *040299b28cdrm/vc4: hdmi: Avoid log spam for audio start failure | *9459e166bcHID: magicmouse: Apple Magic Trackpad 2 USB-C driver support | *ea2ff66febsoc: imx8m: Probe the SoC driver as platform driver * |87f1720a7fRevert "device property: Constify device child node APIs" * |8d0582984fRevert "device property: Add cleanup.h based fwnode_handle_put() scope based cleanup." * |872fb392d5Revert "device property: Introduce device_for_each_child_node_scoped()" * |f5e8852244Revert "leds: flash: mt6360: Fix device_for_each_child_node() refcounting in error paths" * |3504076522Revert "i3c: Make i3c_master_unregister() return void" * |86f0a42718Revert "i3c: master: add enable(disable) hot join in sys entry" * |b16f40cc36Revert "i3c: master: svc: add hot join support" * |ad10d48070Revert "i3c: master: fix kernel-doc check warning" * |6e6b3eeb00Revert "i3c: master: support to adjust first broadcast address speed" * |efa48b6122Revert "i3c: master: svc: use slow speed for first broadcast address" * |efa3571a54Revert "i3c: master: svc: Modify enabled_events bit 7:0 to act as IBI enable counter" * |e8a4474f16Revert "PCI: endpoint: Use a separate lock for protecting epc->pci_epf list" * |703a8674dfRevert "PCI: endpoint: Clear secondary (not primary) EPC in pci_epc_remove_epf()" * |81df1c4551Revert "i3c: master: Replace hard code 2 with macro I3C_ADDR_SLOT_STATUS_BITS" * |fc7774be6bRevert "i3c: master: Extend address status bit to 4 and add I3C_ADDR_SLOT_EXT_DESIRED" * |77e519c5beRevert "i3c: master: Fix dynamic address leak when 'assigned-address' is present" * |059dc61b44Merge8379d0cbd5("mmc: core: Add SD card quirk for broken poweroff notification") into android14-6.1-lts |\| | *8379d0cbd5mmc: core: Add SD card quirk for broken poweroff notification | *8caec5e4a5media: cx231xx: Add support for Dexatek USB Video Grabber 1d19:6108 | *467d2d7ccbmedia: uvcvideo: Add a quirk for the Kaiweets KTI-W02 infrared camera | *1b36192357perf/x86/amd: Warn only on new bits set | *0ab4951c14kcsan: Turn report_filterlist_lock into a raw_spinlock | *2c0027dc17kselftest/arm64: Don't leak pipe fds in pac.exec_sign_all() | *bcea29dff6btrfs: do not clear read-only when adding sprout device | *72c49143fbbtrfs: avoid unnecessary device path update for the same device | *b5be6a0bb6s390/cpum_sf: Handle CPU hotplug remove during sampling | *670fc6d14fepoll: annotate racy check | *f8f794f387iommu/arm-smmu: Defer probe of clients after smmu device bound | *254abd3d87lib: stackinit: hide never-taken branch from compiler | *5411aaa1d8ocfs2: update seq_file index in ocfs2_dlm_seq_next | *74eb8dd0c5mmc: core: Further prevent card detect during shutdown | *374914d90ammc: sdhci-pci: Add DMI quirk for missing CD GPIO on Vexia Edu Atla 10 tablet | *48dc44f3c1regmap: detach regmap from dev on regmap_exit | *ed08c93d5axsk: fix OOB map writes when deleting elements | *0af08132eedma-fence: Use kernel's sort for merging fences | *033e49e92fdma-fence: Fix reference leak on fence merge failure path | *9dee6bfab0dma-buf: fix dma_fence_array_signaled v4 | *98c03d0593bpf: fix OOB devmap writes when deleting elements | *c23abcb314modpost: Add .irqentry.text to OTHER_SECTIONS | *f0cbcf1f77drm/amdgpu/hdp5.2: do a posting read when flushing HDP | *94b33b2d76drm/dp_mst: Fix resetting msg rx state after topology removal | *b0afd7eadcdrm/dp_mst: Verify request type in the corresponding down message reply | *780fa184d4drm/dp_mst: Fix MST sideband message body length check | *5202391970bcache: revert replacing IS_ERR_OR_NULL with IS_ERR again | *5af8366625nilfs2: fix potential out-of-bounds memory access in nilfs_find_entry() | *8972226129scsi: ufs: core: Add missing post notify for power mode change | *7b21233e5fscsi: ufs: core: sysfs: Prevent div by zero | *c7a2f0ce45scsi: qla2xxx: Remove check req_sg_cnt should be equal to rsp_sg_cnt | *b3e6f25176scsi: qla2xxx: Fix use after free on unload | *7f3e10e9c2scsi: qla2xxx: Supported speed displayed incorrectly for VPorts | *61cee38459scsi: qla2xxx: Fix NVMe and NPIV connect issue | *1b8b9c0eeescsi: qla2xxx: Fix abort in bsg timeout | *ed4e9fa189ALSA: hda/realtek: Add support for Samsung Galaxy Book3 360 (NP730QFG) | *388ff61cf0ALSA: hda/realtek: Enable mute and micmute LED on HP ProBook 430 G8 | *2e72135e07ALSA: usb-audio: add mixer mapping for Corsair HS80 | *1370cf3eb5arm64: ptrace: fix partial SETREGSET for NT_ARM_TAGGED_ADDR_CTRL | *83df26299darm64: Ensure bits ASID[15:8] are masked out when the kernel uses 8-bit ASIDs | *896c1557f8tracing: Fix cmp_entries_dup() to respect sort() comparison rules | *bfd8d65d84can: mcp251xfd: mcp251xfd_get_tef_len(): work around erratum DS80000789E 6. | *46637a608fcan: dev: can_set_termination(): allow sleeping GPIOs | *4b2f2abd27watchdog: rti: of: honor timeout-sec property | *8cd7490fc0ksmbd: fix Out-of-Bounds Write in ksmbd_vfs_stream_write | *de4d790dcfksmbd: fix Out-of-Bounds Read in ksmbd_vfs_stream_read | *dba3c45e33LoongArch: Add architecture specific huge_pte_clear() | *2cd323c55bHID: wacom: fix when get product name maybe null pointer | *2521664c1fmm: page_alloc: move mlocked flag clearance into free_pages_prepare() | *f6b5e3c7cbbpf: Fix exact match conditions in trie_get_next_key() | *b332849f27bpf: Handle in-place update for full LPM trie correctly | *e4fd0dde29bpf: Remove unnecessary kfree(im_node) in lpm_trie_update_elem | *5bc31abdc7bpf: Handle BPF_EXIST and BPF_NOEXIST for LPM trie | *68fc3da03ciio: magnetometer: yas530: use signed integer type for clamp limits | *2939c05efbscatterlist: fix incorrect func name in kernel-doc | *67c2c6d056ocfs2: free inode when ocfs2_get_init_inode() fails | *5abef60d14drm/v3d: Enable Performance Counters before clearing them | *907362d4c4scsi: scsi_debug: Fix hrtimer support for ndelay | *373d55a47dspi: mpc52xx: Add cancel_work_sync before module remove | *935ac3d517tools: Override makefile ARCH variable if defined, but empty | *8c28274b2dALSA: usb-audio: Notify xrun for low-latency mode | *456f08d24atcp_bpf: Fix the sk_mem_uncharge logic in tcp_bpf_sendmsg | *0f51eb88c3drm/sti: Add __iomem for mixer_dbg_mxn's parameter | *31a19580babpftool: fix potential NULL pointer dereferencing in prog_dump() | *e7a289f3e3bpftool: Remove asserts from JIT disassembler | *98452de451xsk: always clear DMA mapping information when unmapping the pool | *4ba1e05536drm/bridge: it6505: Fix inverted reset polarity | *39d3bb22a8drm/bridge: it6505: update usleep_range for RC circuit charge time | *28a01c6b3fleds: flash: mt6360: Fix device_for_each_child_node() refcounting in error paths | *6fedf3dc30device property: Introduce device_for_each_child_node_scoped() | *da1097f8d9device property: Add cleanup.h based fwnode_handle_put() scope based cleanup. | *0ba045ab08device property: Constify device child node APIs | *3c2a6d4d02PCI: endpoint: Clear secondary (not primary) EPC in pci_epc_remove_epf() | *9102582762PCI: endpoint: Use a separate lock for protecting epc->pci_epf list | *8c77c55f45i3c: master: Fix dynamic address leak when 'assigned-address' is present | *432b688424i3c: master: Extend address status bit to 4 and add I3C_ADDR_SLOT_EXT_DESIRED | *e195da0610i3c: master: Replace hard code 2 with macro I3C_ADDR_SLOT_STATUS_BITS | *6d636e0934i3c: master: svc: Modify enabled_events bit 7:0 to act as IBI enable counter | *9530ad77c2i3c: master: svc: use slow speed for first broadcast address | *9be9327905i3c: master: support to adjust first broadcast address speed | *4c135c0a52i3c: master: fix kernel-doc check warning | *6d4fffb144i3c: master: svc: add hot join support | *4fa1dfad77i3c: master: add enable(disable) hot join in sys entry | *87e0f28edai3c: Make i3c_master_unregister() return void | *c74e733b96driver core: fw_devlink: Stop trying to optimize cycle detection logic | *a3284739bbdriver core: Add FWLINK_FLAG_IGNORE to completely ignore a fwnode link | *84bdb88f70driver core: fw_devlink: Improve logs for cycle detection | *6f24a5f830ntp: Remove invalid cast in time offset math | *6c013fde1cpowerpc/vdso: Drop -mstack-protector-guard flags in 32-bit files with clang | *2b015f0652powerpc/vdso: Refactor CFLAGS for CVDSO build | *e4ccf8ec27powerpc/vdso: Include CLANG_FLAGS explicitly in ldflags-y | *1234c16941powerpc/vdso: Remove an unsupported flag from vgettimeofday-32.o with clang | *8d1d3940efpowerpc/vdso: Improve linker flags | *a911a32157powerpc/vdso: Remove unused '-s' flag from ASFLAGS | *1747a559aapowerpc/vdso: Skip objtool from running on VDSO files * |84fa5db774ANDROID: GKI: virtual_device: add usb_find_common_endpoints to symbol list * |c3c00ed2dcRevert "crypto: api - Add crypto_tfm_get" * |b0bd967ce7Revert "crypto: api - Add crypto_clone_tfm" * |24ffe8caa6Revert "llc: Improve setsockopt() handling of malformed user input" * |daaf475999Merge749a916a9c("usb: dwc3: ep0: Don't clear ep0 DWC3_EP_TRANSFER_STARTED") into android14-6.1-lts |\| | *749a916a9cusb: dwc3: ep0: Don't clear ep0 DWC3_EP_TRANSFER_STARTED | *68fb250eecusb: dwc3: ep0: Don't reset resource alloc flag (including ep0) | *d60098113dusb: dwc3: gadget: Rewrite endpoint allocation flow | *cc372a2739serial: amba-pl011: Fix RX stall when DMA is used | *5283338fcdserial: amba-pl011: Use port lock wrappers | *09adf8792bgpio: grgpio: Add NULL check in grgpio_probe | *c942c54a36gpio: grgpio: use a helper variable to store the address of ofdev->dev | *6af853cf5fKVM: arm64: Don't retire aborted MMIO instruction | *b18c92b051KVM: arm64: Change kvm_handle_mmio_return() return polarity | *c1c2c835a0net/mlx5e: Remove workaround to avoid syndrome for internal port | *2ee7bdc7cbgeneve: do not assume mac header is set in geneve_xmit_skb() | *a1a68b5702ethtool: Fix wrong mod state in case of verbose and no_mask bitset | *23a6919bb3netfilter: nft_set_hash: skip duplicated elements pending gc run | *5bae60a933netfilter: ipset: Hold module reference while requesting a module | *082b0dac78net: sched: fix erspan_opt settings in cls_flower | *8009cdcc49igb: Fix potential invalid memory access in igb_init_module() | *49b0aa1008ixgbe: downgrade logging of unsupported VF API version to debug | *8ac227d875ixgbevf: stop attempting IPSEC offload on Mailbox API 1.5 | *b6fcf1f335net/qed: allow old cards not supporting "num_images" to work | *0cf598548anet/smc: fix LGR and link use-after-free issue | *d62d5180c0tipc: Fix use-after-free of kernel socket in cleanup_bearer(). | *6ff67909eedccp: Fix memory leak in dccp_feat_change_recv | *535add1e9fnet/ipv6: release expired exception dst cached in socket | *c3c87e1432net-timestamp: make sk_tskey more predictable in error path | *f117cba69ccan: j1939: j1939_session_new(): fix skb reference counting | *6bb5c8ebc9net: hsr: avoid potential out-of-bound access in fill_frame_info() | *11a9c19c28net/sched: tbf: correct backlog statistic for GSO packets | *085980b68bptp: Add error handling for adjfine callback in ptp_clock_adjtime | *4db84fc352ptp: convert remaining drivers to adjfine interface | *7064a6daa4netfilter: nft_socket: remove WARN_ON_ONCE on maximum cgroup level | *ab9916321cnetfilter: x_tables: fix LED ID check in led_tg_check() | *664d0feab9ipvs: fix UB due to uninitialized stack access in ip_vs_protocol_init() | *d6c90ba51ecan: ems_usb: ems_usb_rx_err(): fix {rx,tx}_errors statistics | *425d7c6fa5can: sun4i_can: sun4i_can_err(): fix {rx,tx}_errors statistics | *94f2bb4386can: sja1000: sja1000_err(): fix {rx,tx}_errors statistics | *4a76e5e83ecan: hi311x: hi3110_can_ist(): fix {rx,tx}_errors statistics | *3537b2860ccan: ifi_canfd: ifi_canfd_handle_lec_err(): fix {rx,tx}_errors statistics | *0691005ad7can: m_can: m_can_handle_lec_err(): fix {rx,tx}_errors statistics | *4ad77eb8f2can: hi311x: hi3110_can_ist(): fix potential use-after-free | *3a03875399can: sun4i_can: sun4i_can_err(): call can_change_state() even if cf is NULL | *c5435a6d5ccan: c_can: c_can_handle_bus_err(): update statistics if skb allocation fails | *b6109556cacan: gs_usb: add usb endpoint address detection at driver probe step | *003f492e95can: gs_usb: add VID/PID for Xylanta SAINT3 product family | *92cd695dd5can: gs_usb: uniformly use "parent" as variable name for struct gs_usb | *a04d8f5834can: gs_usb: gs_usb_probe(): align block comment | *3c5d346668can: gs_usb: remove leading space from goto labels | *e58e41c25awatchdog: mediatek: Make sure system reset gets asserted in mtk_wdt_restart() | *d0c1a72b56watchdog: apple: Actually flush writes after requesting watchdog restart | *0bcea01215iTCO_wdt: mask NMI_NOW bit for update_no_reboot_bit() call | *d17b991ac4drm/amd/pm: update current_socclk and current_uclk in gpu_metrics on smu v13.0.7 | *42c2dab662drm/etnaviv: flush shader L1 cache after user commandstream | *40725c5fabdrm/sti: avoid potential dereference of error pointers | *b79612ed6bdrm/sti: avoid potential dereference of error pointers in sti_gdp_atomic_check | *6b0d0d6e9ddrm/sti: avoid potential dereference of error pointers in sti_hqvdp_atomic_check | *44a2c518abbtrfs: don't BUG_ON on ENOMEM from btrfs_lookup_extent_info() in walk_down_proc() | *005873743fpowerpc: Adjust adding stack protector flags to KBUILD_CLAGS for clang | *d497cdd2c3powerpc: Fix stack protector Kconfig test for clang | *00663d3e00iio: adc: ad7923: Fix buffer overflow for tx_buf and ring_xfer | *fa4c8ae526iio: Fix fwnode_handle in __fwnode_iio_channel_get_by_name() | *45abb68c94nfsd: fix nfs4_openowner leak when concurrent nfsd4_open occur | *7d8f7816benfsd: make sure exp active before svc_export_show | *39353c9259PCI: rockchip-ep: Fix address translation unit programming | *6404f3ae4fdm thin: Add missing destroy_work_on_stack() | *514b6cca20ovl: properly handle large files in ovl_security_fileattr | *748d495e87thermal: int3400: Fix reading of current_uuid for active policy | *e8ceff4995fs/proc/kcore.c: Clear ret value in read_kcore_iter after successful iov_iter_zero | *d0c2cb03abPCI: keystone: Add link up check to ks_pcie_other_map_bus() | *481a1e8a79PCI: keystone: Set mode as Root Complex for "ti,keystone-pcie" compatible | *991e33a99fi3c: master: Fix miss free init_dyn_addr at i3c_master_put_i3c_addrs() | *e1cf8c1177i3c: master: svc: Fix pm_runtime_set_suspended() with runtime pm enabled | *6968bcb7fascsi: ufs: exynos: Fix hibern8 notify callbacks | *a87760ae39util_macros.h: fix/rework find_closest() macros | *051762925eceph: extract entity name from device id | *213f22fb42ARM: 9431/1: mm: Pair atomic_set_release() with _read_acquire() | *8fe148d39cARM: 9430/1: entry: Do a dummy read from VMAP shadow | *5bb7a2c3afs390/entry: Mark IRQ entries to fix stack depot warnings | *95c98e7ab8ARM: 9429/1: ioremap: Sync PGDs for VMALLOC shadow | *022e13518bad7780: fix division by zero in ad7780_write_raw() | *4c028c1bf8clk: qcom: gcc-qcs404: fix initial rate of GPLL3 | *133be7fa5aleds: lp55xx: Remove redundant test for invalid channel number | *34e18de94biommu/io-pgtable-arm: Fix stage-2 map/unmap for concatenated tables | *df8796f1ccvmstat: call fold_vm_zone_numa_events() before show per zone NUMA event | *7ae27880deftrace: Fix regression with module command in stack_trace_filter | *459904a873maple_tree: refine mas_store_root() on storing NULL | *ff43d008bbovl: Filter invalid inodes with missing lookup function | *19464d7322media: uvcvideo: Require entities to have a non-zero unique ID | *5aad0a6b59media: uvcvideo: Stop stream during unregister | *17e5613666media: platform: allegro-dvt: Fix possible memory leak in allocate_buffers_internal() | *71d0e403f6media: gspca: ov534-ov772x: Fix off-by-one error in set_frame_rate() | *bbbc4f7459media: venus: Fix pm_runtime_set_suspended() with runtime pm enabled | *c72d1cd2bemedia: amphion: Fix pm_runtime_set_suspended() with runtime pm enabled | *2155e91924media: platform: exynos4-is: Fix an OF node reference leak in fimc_md_is_isp_available | *dc03866b5fmedia: ts2020: fix null-ptr-deref in ts2020_probe() | *12914fd765media: imx-jpeg: Ensure power suppliers be suspended before detach them | *34a3466a92media: i2c: tc358743: Fix crash in the probe error path when using polling | *9eb254505darm64: dts: freescale: imx8mp-verdin: Fix SD regulator startup delay | *e90b73f02fmedia: i2c: dw9768: Fix pm_runtime_set_suspended() with runtime pm enabled | *b88556e82dmedia: imx-jpeg: Set video drvdata before register video device | *cfe96c7c33media: amphion: Set video drvdata before register video device | *6ca8299aa7arm64: dts: freescale: imx8mm-verdin: Fix SD regulator startup delay | *3f1fcc1021arm64: dts: allwinner: pinephone: Add mount matrix to accelerometer | *6370db28afbtrfs: ref-verify: fix use-after-free after invalid ref action | *db66fb87c2btrfs: add a sanity check for btrfs root in btrfs_search_slot() | *1dfc86bea8btrfs: add might_sleep() annotations | *dcbcd9c88ebtrfs: don't loop for nowait writes when checking for cross references | *3e6ff207cdquota: flush quota_release_work upon quota writeback | *f5803e3bb9xfs: remove unknown compat feature check in superblock write validation | *c43df7dae2sh: intc: Fix use-after-free bug in register_intc_controller() | *87a95ee34asunrpc: clear XPRT_SOCK_UPD_TIMEOUT when reset transport | *0f29fd2cd3nfs: ignore SB_RDONLY when mounting nfs | *c2f8665338modpost: remove incorrect code in do_eisa_entry() | *a6f772c796rtc: ab-eoz9: don't fail temperature reads on undervoltage notification | *4dcaa86552perf/arm-cmn: Ensure port and device id bits are set properly | *ddce811ed3perf/arm-smmuv3: Fix lockdep assert in ->event_init() | *b9e26059669p/xen: fix release of IRQ | *91b4763da39p/xen: fix init sequence | *c375804cf5block: return unsigned int from bdev_io_min | *cfc4647055rtc: rzn1: fix BCD to rtc_time conversion errors | *37a22fd4b8jffs2: fix use of uninitialized variable | *74981f7577ubifs: authentication: Fix use-after-free in ubifs_tnc_end_commit | *6afdcb2857ubi: fastmap: Fix duplicate slab cache names while attaching | *f88a7f5e26ubifs: Correct the total block count by deducting journal reservation | *6aa2932c6eubi: fastmap: wl: Schedule fm_work if wear-leveling pool is empty | *fde5653550rtc: check if __rtc_read_time was successful in rtc_timer_do_work() | *54a60de9a6rtc: abx80x: Fix WDT bit position of the status register | *ba3135792ertc: st-lpc: Use IRQF_NO_AUTOEN flag in request_irq() | *ba6e6c04f6NFSv4.0: Fix a use-after-free problem in the asynchronous open() | *8a73401dacum: Always dump trace for specified task in show_stack | *8fd508d433um: Fix the return value of elf_core_copy_task_fpregs | *1575df9686um: Fix potential integer overflow during physmem setup | *068c0b50f3SUNRPC: make sure cache entry active before cache_show | *de53c53051NFSD: Prevent a potential integer overflow | *3d230cfd4bipc: fix memleak if msg_init_ns failed in create_ipc_ns | *7f34d90a7flib: string_helpers: silence snprintf() output truncation warning | *2de63befbeublk: fix error code for unsupported command | *c9e72352a1usb: dwc3: gadget: Fix looping of queued SG entries | *6cb33da1c8usb: dwc3: gadget: Fix checking for number of TRBs left | *c749500b28usb: musb: Fix hardware lockup on first Rx endpoint request | *338ae99f3esmb3: request handle caching when caching directories | *7ca7a0a983ALSA: hda/realtek: Apply quirk for Medion E15433 | *9d186d6aacALSA: hda/realtek: Fix Internal Speaker and Mic boost of Infinix Y4 Max | *3a5fc93296ALSA: hda/realtek: Set PCBeep to default value for ALC274 | *fe73dc2740ALSA: hda/realtek: Update ALC225 depop procedure | *832efbb74bALSA: pcm: Add sanity NULL check for the default mmap fault handler | *71f9c0f1e3media: v4l2-core: v4l2-dv-timings: check cvt/gtf result | *6b4c689060soc: fsl: rcpm: fix missing of_node_put() in copy_ippdexpcr1_setting() | *372dc95091media: wl128x: Fix atomicity violation in fmc_send_cmd() | *18023f0992HID: wacom: Interpret tilt data from Intuos Pro BT as signed values | *5f10c60629block: fix ordering between checking BLK_MQ_S_STOPPED request adding | *023438d01barm64: tls: Fix context-switching of tpidrro_el0 when kpti is enabled | *59ad8b56afublk: fix ublk_ch_mmap() for 64K page size | *2b6b8e011fsh: cpuinfo: Fix a warning for CONFIG_CPUMASK_OFFSTACK | *dc5251b1afum: vector: Do not use drvdata in release | *03d1f525d4serial: 8250: omap: Move pm_runtime_get_sync | *ef42e3edf9serial: 8250_fintek: Add support for F81216E | *170011e922dt-bindings: serial: rs485: Fix rs485-rts-delay property | *160cd5f956um: net: Do not use drvdata in release | *a5a75207efum: ubd: Do not use drvdata in release | *6a3dbe75b2ubi: wl: Put source PEB into correct list if trying locking LEB failed | *d427e3aa84platform/chrome: cros_ec_typec: fix missing fwnode reference decrement | *082dc185b8parisc/ftrace: Fix function graph tracing disablement | *c923c437edcpufreq: mediatek-hw: Fix wrong return value in mtk_cpufreq_get_cpu_power() | *1050f58715mtd: spi-nor: core: replace dummy buswidth from addr to data | *f69123bb5cspi: Fix acpi deferred irq probe | *7ffef5e5d5netfilter: ipset: add missing range check in bitmap_ip_uadt | *69418eec0cgpio: exar: set value when external pull-up or pull-down is present | *51c8380cc4Revert "serial: sh-sci: Clean sci_ports[0] after at earlycon exit" | *6a558edf0fserial: sh-sci: Clean sci_ports[0] after at earlycon exit | *c17418f43aRevert "usb: gadget: composite: fix OS descriptors w_value logic" | *7e696b9790wifi: brcmfmac: release 'root' node in all execution paths | *c386fb76f0wifi: rtlwifi: Drastically reduce the attempts to read efuse in case of failures | *fc1f391a71driver core: bus: Fix double free in driver API bus_register() | *d5a63a0bc8usb: xhci: Fix TD invalidation under pending Set TR Dequeue | *9e07ab9ad3Bluetooth: Fix type of len in rfcomm_sock_getsockopt{,_old}() | *d84150aab3exfat: fix uninit-value in __exfat_get_dentry_set | *20a9244a39dt-bindings: iio: dac: ad3552r: fix maximum spi speed | *9a27ca3da0pinctrl: qcom: spmi: fix debugfs drive strength | *be063ffa28locking/lockdep: Avoid creating new name string literals in lockdep_set_subclass() | *445faec21ftty: ldsic: fix tty_ldisc_autoload sysctl's proc_handler | *89265f8870apparmor: test: Fix memory leak for aa_unpack_strdup() | *16c507df50comedi: Flush partial mappings in error case | *65988ab857fsnotify: fix sending inotify event with unexpected filename | *20502f0b3fPCI: Fix use-after-free of slot->bus on hot remove | *147c97ea83KVM: arm64: Ignore PMCNTENSET_EL0 while checking for overflow status | *488d303696KVM: arm64: vgic-v3: Sanitise guest writes to GICR_INVLPIR | *b2256aa49epowerpc/pseries: Fix KVM guest detection for disabling hardlockup detector | *b3286d64d9KVM: x86/mmu: Skip the "try unsync" path iff the old SPTE was a leaf SPTE | *1d3d3513d4crypto: x86/aegis128 - access 32-bit arguments as 32-bit | *d54a6d066aperf/x86/intel/pt: Fix buffer full but size is 0 case | *687c5f18b0ASoC: codecs: Fix atomicity violation in snd_soc_component_get_drvdata() | *b10ab1fd2aASoC: amd: yc: Add a quirk for microfone on Lenovo ThinkPad P14s Gen 5 21MES00B00 | *9c356fc32ajfs: xattr: check invalid xattr size more strictly | *e99f7c2c16ext4: fix FS_IOC_GETFSMAP handling | *a486ba40e2ext4: supress data-race warnings in ext4_free_inodes_{count,set}() | *78e9af68a7soc: qcom: socinfo: fix revision check in qcom_socinfo_probe() | *f584f211c0ASoC: Intel: sst: Fix used of uninitialized ctx to log an error | *ed753a3bd9dma: allow dma_get_cache_alignment() to be overridden by the arch code | *5e859e08bepowerpc: move the ARCH_DMA_MINALIGN definition to asm/cache.h | *3d52b86bd5mm/slab: decouple ARCH_KMALLOC_MINALIGN from ARCH_DMA_MINALIGN | *95a4d701e2arm64: dts: mediatek: mt8195-cherry: Mark USB 3.0 on xhci1 as disabled | *cdbef2d0e2Revert "arm64: dts: mediatek: mt8195-cherry: Mark USB 3.0 on xhci1 as disabled" | *920a369a9fALSA: usb-audio: Fix potential out-of-bound accesses for Extigy and Mbox devices | *75fa2d8b3cmlxsw: spectrum_acl_tcam: Fix NULL pointer dereference in error path | *c81154a308perf/x86/intel: Hide Topdown metrics events if the feature is not enumerated | *945559be6ebtrfs: qgroup: fix qgroup prealloc rsv leak in subvolume operations | *224fd631c4rcu-tasks: Fix access non-existent percpu rtpcp variable in rcu_tasks_need_gpcb() | *db1d7e1794drm/amd/display: Check phantom_stream before it is used | *e8a2476789drm/amd/display: Add NULL check for function pointer in dcn20_set_output_transfer_func | *0d94d9cbd9drm/amd/display: Add NULL check for clk_mgr in dcn32_init_hw | *23cb613954drm/amd/display: Add NULL check for clk_mgr and clk_mgr->funcs in dcn30_init_hw | *cbc6fc9cfcwifi: iwlwifi: mvm: avoid NULL pointer dereference | *4c823e4027media: aspeed: Fix memory overwrite if timing is 1600x900 | *4a04ce0bc9usb: ehci-spear: fix call balance of sehci clk handling routines | *da13ade87aALSA: usb-audio: Fix out of bounds reads when finding clock sources | *3fc0996d2fxen: Fix the issue of resource not being properly released in xenbus_dev_probe() | *d1e3efe783xfs: add bounds checking to xlog_recover_process_data | *5873aa7f81scsi: lpfc: Validate hdwq pointers before dereferencing in reset/errata paths | *386613a44bntfs3: Add bounds checking to mi_enum_attr() | *e99faa9735fs/ntfs3: Fixed overflow check in mi_enum_attr() | *1403991a40mailbox: mtk-cmdq: Move devm_mbox_controller_register() after devm_pm_runtime_enable() | *2f3cee7f3eASoC: amd: yc: Fix for enabling DMIC on acp6x via _DSD entry | *3ae27e61d1apparmor: fix 'Do simple duplicate message elimination' | *5db93cdacfALSA: hda/realtek: Update ALC256 depop procedure | *6adeb401fdcounter: ti-ecap-capture: Add check for clk_enable() | *cb479d737dcounter: stm32-timer-cnt: Add check for clk_enable() | *367f7727aemisc: apds990x: Fix missing pm_runtime_disable() | *de47d0f430USB: chaoskey: Fix possible deadlock chaoskey_list_lock | *78e892874cUSB: chaoskey: fail open after removal | *cfb7f88ed3usb: yurex: make waiting on yurex_write interruptible | *83aa97ef37usb: using mutex lock and supporting O_NONBLOCK flag in iowarrior_read() | *2dc9845228iio: light: al3010: Fix an error handling path in al3010_probe() | *7d338cee86ipmr: fix tables suspicious RCU usage | *5e656d0565ip6mr: fix tables suspicious RCU usage | *9a3c1ad93etcp: Fix use-after-free of nreq in reqsk_timer_handler(). | *a7845361d5rxrpc: Improve setsockopt() handling of malformed user input | *981d647c6fllc: Improve setsockopt() handling of malformed user input | *f688979e42crypto: api - Add crypto_clone_tfm | *e470d423b0crypto: api - Add crypto_tfm_get | *cdfc818ffdBluetooth: MGMT: Fix slab-use-after-free Read in set_powered_sync | *be3fa6b041bnxt_en: Reserve rings after PCIe AER recovery if NIC interface is down | *0d339e1258net: hsr: fix hsr_init_sk() vs network/transport headers. | *1169cfe66aspi: atmel-quadspi: Fix register name in verbose logging function | *5b8520754focteontx2-af: RPM: Fix mismatch in lmac type | *86fd76e6e8net: stmmac: dwmac-socfpga: Set RX watchdog interrupt as broken | *c93792cad8marvell: pxa168_eth: fix call balance of pep->clk handling routines | *9a2c2ca00enet: mdio-ipq4019: add missing error check | *ca97dd1042net/ipv6: delete temporary address if mngtmpaddr is removed or unmanaged | *934326aef7s390/iucv: MSG_PEEK causes memory leak in iucv_sock_destruct() | *cd11087343net: usb: lan78xx: Fix refcounting and autosuspend on invalid WoL configuration | *ef71bab156tg3: Set coherent DMA mask bits to 31 for BCM57766 chipsets | *a217fc3958net: usb: lan78xx: Fix memory leak on device unplug by freeing PHY device | *977128343fnet: usb: lan78xx: Fix double free issue with interrupt buffer allocation | *42bc30da34power: supply: bq27xxx: Fix registers of bq27426 | *dc7c33eec3power: supply: core: Remove might_sleep() from power_supply_put() | *8382e92f90LoongArch: BPF: Sign-extend return values | *bcfb04e974LoongArch: Fix build failure with GCC 15 (-std=gnu23) | *9db9e4d50bLoongArch: Tweak CFLAGS for Clang compatibility | *df10201960fs_parser: update mount_api doc to match function signature | *6c6502d944vfio/pci: Properly hide first-in-list PCIe extended capability | *ea3f18a680selftests/mount_setattr: Fix failures on 64K PAGE_SIZE kernels | *7c8938844evdpa/mlx5: Fix suboptimal range on iotlb iteration | *bc4f7dde47hwmon: (tps23861) Fix reporting of negative temperatures | *2ee368b447NFSD: Fix nfsd4_shutdown_copy() | *94d2d6d398svcrdma: fix miss destroy percpu_counter in svc_rdma_proc_init() | *f143df272csunrpc: simplify two-level sysctl registration for svcrdma_parm_table | *03b72929f7NFSD: Cap the number of bytes copied by nfs4_reset_recoverydir() | *0c3b0e326fNFSD: Prevent NULL dereference in nfsd4_process_cb_update() | *a1cc346cf7remoteproc: qcom_q6v5_mss: Re-order writes to the IMEM region | *a572eb5078rpmsg: glink: use only lower 16-bits of param2 for CMD_OPEN name length | *1ad64de591rpmsg: glink: Fix GLINK command prefix | *79327e3662remoteproc: qcom: pas: add minidump_id to SM8350 resources | *4e115f31c3remoteproc: qcom: q6v5: Use _clk_get_optional for aggre2_clk | *57ef7705a3perf trace: Avoid garbage when not printing a syscall's arguments | *8b601e05c4perf trace: Do not lose last events in a race | *c1f8195bf6svcrdma: Address an integer overflow | *bab3e34276m68k: coldfire/device.c: only build FEC when HW macros are defined | *b3154c4320m68k: mcfgpio: Fix incorrect register offset for CONFIG_M5441x | *6ac0ea38a8perf trace: avoid garbage when not printing a trace event's arguments | *e92bca0277f2fs: fix to avoid forcing direct write to use buffered IO on inline_data inode | *07c0787286f2fs: fix to avoid use GC_AT when setting gc_mode as GC_URGENT_LOW or GC_URGENT_MID | *b4751fc0dbf2fs: check curseg->inited before write_sum_page in change_curseg | *3d3926eec7f2fs: remove the unused flush argument to change_curseg | *f3ba45c176f2fs: open code allocate_segment_by_default | *7d9b8b6ca9f2fs: remove struct segment_allocation default_salloc_ops | *77f047d81cf2fs: fix the wrong f2fs_bug_on condition in f2fs_do_replace_block | *afc63bbc9cperf ftrace latency: Fix unit on histogram first entry when using --use-nsec | *4e9d6942d1PCI: cpqphp: Fix PCIBIOS_* return value confusion | *60f5d361aePCI: cpqphp: Use PCI_POSSIBLE_ERROR() to check config reads | *928883efeeperf probe: Correct demangled symbols in C++ program | *918b71d6f1perf probe: Fix libdw memory leak | *6e58b29879f2fs: fix to account dirty data in __get_secs_required() | *b6e617c111f2fs: compress: fix inconsistent update of i_blocks in release_compress_blocks and reserve_compress_blocks | *4d41eb5bfaperf stat: Fix affinity memory leaks on error path | *d4b553cc5cperf stat: Close cork_fd when create_perf_stat_counter() failed | *931d07ccffPCI: Fix reset_method_store() memory leak | *4fe12d6bf7perf cs-etm: Don't flush when packet_queue fills up | *04eef38c53mailbox: arm_mhuv2: clean up loop in get_irq_chan_comb() | *cd2a4e32aasmb: cached directories can be more than root file handle | *07fdc51604pinctrl: k210: Undef K210_PC_DEFAULT | *08c494c198clk: clk-axi-clkgen: make sure to enable the AXI bus clock | *d9b1bd1e1edt-bindings: clock: axi-clkgen: include AXI clk | *9a5905b725clk: clk-apple-nco: Add NULL check in applnco_probe | *40f4326ed0fbdev: sh7760fb: Fix a possible memory leak in sh7760fb_alloc_mem() | *30293309effbdev/sh7760fb: Alloc DMA memory from hardware device | *3d9f5e40ffpowerpc/kexec: Fix return of uninitialized variable | *6ad49b3c53powerpc/sstep: make emulate_vsx_load and emulate_vsx_store static | *f99cc5112fKVM: PPC: Book3S HV: Avoid returning to nested hypervisor on pending doorbells | *6a6e47dc00KVM: PPC: Book3S HV: Stop using vc->dpdes for nested KVM guests | *ac2ec07ce6dax: delete a stale directory pmem | *83f8713a0eocfs2: fix uninitialized value in ocfs2_file_read_iter() | *678098cef6cpufreq: CPPC: Fix wrong return value in cppc_get_cpu_power() | *8ef0b11af7cpufreq: CPPC: Fix wrong return value in cppc_get_cpu_cost() | *52617e76f4RDMA/hns: Fix NULL pointer derefernce in hns_roce_map_mr_sg() | *630c6b9116RDMA/hns: Fix out-of-order issue of requester when setting FENCE * |c80fef4574Revert "sock_diag: add module pointer to "struct sock_diag_handler"" * |6101867a91Revert "sock_diag: allow concurrent operations" * |6e60bcaa85Revert "sock_diag: allow concurrent operation in sock_diag_rcv_msg()" * |8702a01dbdRevert "net: use unrcu_pointer() helper" * |11afae5231Revert "ipv6: release nexthop on device removal" * |bbe27ab999Mergeb778b52404("scsi: qedi: Fix a possible memory leak in qedi_alloc_and_init_sb()") into android14-6.1-lts |\| | *b778b52404scsi: qedi: Fix a possible memory leak in qedi_alloc_and_init_sb() | *b514f45e0fscsi: qedf: Fix a possible memory leak in qedf_alloc_and_init_sb() | *31f29289c7scsi: fusion: Remove unused variable 'rc' | *8f5a97443bscsi: bfa: Fix use-after-free in bfad_im_module_exit() | *41f80bdd52fs/proc/kcore.c: fix coccinelle reported ERROR instances | *7d3b437385mfd: rt5033: Fix missing regmap_del_irq_chip() | *23a2a5770diommu/vt-d: Fix checks and print in pgtable_walk() | *ef4a6cb5f2iommu/vt-d: Fix checks and print in dmar_fault_dump_ptes() | *6786d623fbclk: imx: clk-scu: fix clk enable state save and restore | *882d94d746clk: imx: fracn-gppll: fix pll power up | *f7aee64ed7clk: imx: fracn-gppll: correct PLL initialization flow | *c92515247fclk: imx: lpcg-scu: SW workaround for errata (e10858) | *1b67ca853aclk: renesas: rzg2l: Fix FOUTPOSTDIV clk | *9bc7ccfbd3clk: sunxi-ng: d1: Fix PLL_AUDIO0 preset | *4799f3f8fdRDMA/bnxt_re: Check cqe flags to know imm_data vs inv_irkey | *31c6fe9b79RDMA/hns: Fix cpu stuck caused by printings during reset | *284a8650dfRDMA/hns: Remove unnecessary QP type checks | *7519e81df8RDMA/hns: Use dev_* printings in hem code instead of ibdev_* | *9f42b87d0fRDMA/hns: Add clear_hem return value to log | *503d957679RDMA/hns: Fix an AEQE overflow error caused by untimely update of eq_db_ci | *1975b481f6cpufreq: CPPC: Fix possible null-ptr-deref for cppc_get_cpu_cost() | *a357b63fd2cpufreq: CPPC: Fix possible null-ptr-deref for cpufreq_cpu_get_raw() | *fa5b5ea257powerpc/pseries: Fix dtl_access_lock to be a rw_semaphore | *4d2655754epowerpc/mm/fault: Fix kfence page fault reporting | *24cbc37e83mtd: rawnand: atmel: Fix possible memory leak | *57d385c07fmtd: hyperbus: rpc-if: Add missing MODULE_DEVICE_TABLE | *dff61d85bcmtd: hyperbus: rpc-if: Convert to platform remove callback returning void | *a0222dbbf6memory: renesas-rpc-if: Remove Runtime PM wrappers | *f025336fd8memory: renesas-rpc-if: Pass device instead of rpcif to rpcif_*() | *f7ef1b97cememory: renesas-rpc-if: Improve Runtime PM handling | *aabef6301dpowerpc/fadump: Move fadump_cma_init to setup_arch() after initmem_init() | *6ffdb03366powerpc/fadump: Refactor and prepare fadump_cma_init for late init | *dd6383dd6acpufreq: loongson2: Unregister platform_driver on failure | *7ba45b8bc6mfd: intel_soc_pmic_bxtwc: Use IRQ domain for PMIC devices | *56acf41577mfd: intel_soc_pmic_bxtwc: Use IRQ domain for TMU device | *c310e6916cmfd: intel_soc_pmic_bxtwc: Use IRQ domain for USB Type-C device | *50952a6ff5mfd: da9052-spi: Change read-mask to write-mask | *c929407918mfd: tps65010: Use IRQF_NO_AUTOEN flag in request_irq() to fix race | *ccfbcc7d55powerpc/vdso: Flag VDSO64 entry points as functions | *3887bc73d4pinctrl: zynqmp: drop excess struct member description | *cc344fdd0etrace/trace_event_perf: remove duplicate samples on the first tracepoint event | *4387cef540unicode: Fix utf8_load() error path | *386efa339ebpf: fix recursive lock when verdict program return SK_PASS | *a628d40d28wireguard: selftests: load nf_conntrack if not present | *7cd5b42796netpoll: Use rcu_access_pointer() in netpoll_poll_lock | *0f67ca2a80Bluetooth: fix use-after-free in device_for_each_child() | *ea8cc56db6ALSA: 6fire: Release resources at card release | *237f3faf01ALSA: caiaq: Use snd_card_free_when_closed() at disconnection | *bc778ad3e4ALSA: us122l: Use snd_card_free_when_closed() at disconnection | *7bd8838c0eALSA: usx2y: Use snd_card_free_when_closed() at disconnection | *f61b836ce9net: rfkill: gpio: Add check for clk_enable() | *c01c0b270ddrm/amdkfd: Fix wrong usage of INIT_WORK() | *e636d87d12selftests: net: really check for bg process completion | *b2f26a27eaipv6: release nexthop on device removal | *ad3c88eb3cnet: use unrcu_pointer() helper | *adf8650938sock_diag: allow concurrent operation in sock_diag_rcv_msg() | *916551244asock_diag: allow concurrent operations | *9c116890aesock_diag: add module pointer to "struct sock_diag_handler" | *9610b69033bpf, sockmap: Fix sk_msg_reset_curr | *f58d3aa457bpf, sockmap: Several fixes to bpf_msg_pop_data | *cadfa4d23fbpf, sockmap: Several fixes to bpf_msg_push_data | *9f5d3dd142selftests/bpf: Add push/pop checking for msg_verify_data in test_sockmap | *4a9eebcee4selftests/bpf: Fix total_bytes in msg_loop_rx in test_sockmap | *0bff469c83selftests/bpf: Fix SENDPAGE data logic in test_sockmap | *a479d22242selftests/bpf: Add txmsg_pass to pull/push/pop in test_sockmap | *f500518cc8netlink: typographical error in nlmsg_type constants definition | *9c49d37707netfilter: nf_tables: must hold rcu read lock while iterating object type list | *7703551d0bnetfilter: nf_tables: skip transaction if update object is not implemented | *7f6f583be3drm/msm/dpu: cast crtc_clk calculation to u64 in _dpu_core_perf_calc_clk() | *27591e2e91wifi: wfx: Fix error handling in wfx_core_init() | *5a8c948d3adrm/etnaviv: hold GPU lock across perfmon sampling | *f8cae8a21bdrm/etnaviv: fix power register offset on GC300 | *ab96894adedrm/etnaviv: Request pages from DMA32 zone on addressing_limited | *1867879b7adrm/msm/gpu: Check the status of registration to PM QoS | *372f00e22edrm/msm/gpu: Bypass PM QoS constraint for idle clamp | *5d187dcbaadrm/msm/gpu: Add devfreq tuning debugfs | *8e57e58ecfdrm/msm/adreno: Use IRQF_NO_AUTOEN flag in request_irq() | *9e63fd47e6bpf, arm64: Remove garbage frame for struct_ops trampoline | *8f544cfc96drm/panfrost: Remove unused id_mask from struct panfrost_model | *b94052830eocteontx2-pf: handle otx2_mbox_get_rsp errors in otx2_dcbnl.c | *1611b1ea7cocteontx2-pf: handle otx2_mbox_get_rsp errors in otx2_dmac_flt.c | *856ad633e1octeontx2-pf: handle otx2_mbox_get_rsp errors in cn10k.c | *8c9f8b35dcocteontx2-pf: handle otx2_mbox_get_rsp errors in otx2_flows.c | *05a6ce174cocteontx2-pf: handle otx2_mbox_get_rsp errors in otx2_ethtool.c | *9265b6ee75octeontx2-pf: handle otx2_mbox_get_rsp errors in otx2_common.c | *2bea5fa601drm: fsl-dcu: enable PIXCLK on LS1021A | *b466746cfbwifi: mwifiex: Fix memcpy() field-spanning write warning in mwifiex_config_scan() | *861cebee26selftests/bpf: Fix txmsg_redir of test_txmsg_pull in test_sockmap | *a315b5b672selftests/bpf: Fix msg_verify_data in test_sockmap | *df3554b221drm/bridge: tc358767: Fix link properties discovery | *b3a9001123netdevsim: copy addresses for both in and out paths | *241aef4f88libbpf: never interpret subprogs in .text as entry programs | *da508bb398libbpf: fix sym_is_subprog() logic for weak global subprogs | *b15f3d26c4selftests/bpf: add missing header include for htons | *2eda63873bselftests/bpf: Fix backtrace printing for selftests crashes | *6a75c14af6selftests/bpf: Add csum helpers | *79c83dc3c8bpf: Fix the xdp_adjust_tail sample prog issue | *d0307b1aa0libbpf: Fix output .symtab byte-order during linking | *1f3288f2bddrm/bridge: anx7625: Drop EDID cache on bridge power off | *ea6a2cc95eASoC: dt-bindings: mt6359: Update generic node name and dmic-mode | *5e6df74efcASoC: fsl_micfil: fix regmap_write_bits usage | *54ea2e51bbdt-bindings: vendor-prefixes: Add NeoFidelity, Inc | *ade744bf81wifi: ath10k: fix invalid VHT parameters in supported_vht_mcs_rate_nss2 | *266f9d3b7cwifi: ath10k: fix invalid VHT parameters in supported_vht_mcs_rate_nss1 | *1ec51f8404drm/v3d: Address race-condition in MMU flush | *372e43bdc7drm/imx/ipuv3: Use IRQF_NO_AUTOEN flag in request_irq() | *e6f8ec9cdbdrm/imx/dcss: Use IRQF_NO_AUTOEN flag in request_irq() | *53cbeffdd7wifi: mwifiex: Use IRQF_NO_AUTOEN flag in request_irq() | *3496512fe8wifi: p54: Use IRQF_NO_AUTOEN flag in request_irq() | *fa4a24f5b3drm/omap: Fix locking in omap_gem_new_dmabuf() | *6534234a5fdrm/omap: Fix possible NULL dereference | *70eae50d21wifi: ath9k: add range check for conn_rsp_epid in htc_connect_service() | *cd53f82a1ddrm/vc4: hvs: Correct logic on stopping an HVS channel | *151bec2fd0drm/vc4: hvs: Remove incorrect limit from hvs_dlist debugfs function | *253ccf145bdrm/vc4: hvs: Fix dlist debug not resetting the next entry pointer | *0ea29bd7d9drm/vc4: hdmi: Avoid hang with debug registers when suspended | *a5aeb962e4drm/vc4: hvs: Don't write gamma luts on 2711 | *1e9265b252drm/mm: Mark drm_mm_interval_tree*() functions with __maybe_unused * |9a8c28486fUPSTREAM: ASoC: Intel: sst: Fix used of uninitialized ctx to log an error * |9c7193f1e7Merge2c1e2dbb72("platform/x86: panasonic-laptop: Return errno correctly in show callback") into android14-6.1-lts |/ *2c1e2dbb72platform/x86: panasonic-laptop: Return errno correctly in show callback *02a97d9d7fmedia: atomisp: Add check for rgby_data memory allocation failure *18028c437emedia: venus: provide ctx queue lock for ioctl synchronization *23f63457f0venus: venc: add handling for VIDIOC_ENCODER_CMD *06258e57fefirmware: arm_scpi: Check the DVFS OPP count returned by the firmware *07121977ccselftests/resctrl: Protect against array overrun during iMC config parsing *a5e0980fcdarm64: dts: mediatek: mt8183-kukui-jacuzzi: Add supplies for fixed regulators *6441c359d8arm64: dts: mediatek: mt8183-kukui-jacuzzi: Fix DP bridge supply names *21030e4c7farm64: dts: mt8183: jacuzzi: Move panel under aux-bus *46cb2dc1b0regmap: irq: Set lockdep class for hierarchical IRQ domains *321e4f9466spi: zynqmp-gqspi: Undo runtime PM changes at driver exit time *4c61c30203spi: tegra210-quad: Avoid shift-out-of-bounds *aecbbaf2c0pmdomain: ti-sci: Add missing of_node_put() for args.np *5a2f0e663cARM: dts: cubieboard4: Fix DCDC5 regulator constraints *1649f1224bpwm: imx27: Workaround of the pwm output bug when decrease the duty cycle *195b1a022carm64: dts: mt8183: Damu: add i2c2's i2c-scl-internal-delay-ns *1340d82aa0arm64: dts: mt8183: cozmo: add i2c2's i2c-scl-internal-delay-ns *da7b2b7be2arm64: dts: mt8183: burnet: add i2c2's i2c-scl-internal-delay-ns *449aa993c4arm64: dts: mt8183: fennel: add i2c2's i2c-scl-internal-delay-ns *8c222df370cgroup/bpf: only cgroup v2 can be attached by bpf programs *c4e5e64d28Revert "cgroup: Fix memory leak caused by missing cgroup_bpf_offline" *34772c3f1aarm64: dts: mediatek: mt8173-elm-hana: Add vdd-supply to second source trackpad *fe6370363darm64: dts: mt8183: kukui: Fix the address of eeprom at i2c4 *98d36e06c5arm64: dts: mt8183: krane: Fix the address of eeprom at i2c4 *2b71026220tpm: fix signed/unsigned bug when checking event logs *16c888161cmmc: mmc_spi: drop buggy snprintf() *b0a9c6ccafsoc: qcom: geni-se: fix array underflow in geni_se_clk_tbl_get() *f177f3c116soc: ti: smartreflex: Use IRQF_NO_AUTOEN flag in request_irq() *2c39349952arm64: dts: mt8195: Fix dtbs_check error for infracfg_ao node *7a3e9bf08cmicroblaze: Export xmb_manager functions *272168927fdrivers: soc: xilinx: add the missing kfree in xlnx_add_cb_for_suspend() *3d89ff55ffspi: spi-fsl-lpspi: Use IRQF_NO_AUTOEN flag in request_irq() *99b60d5a73spi: spi-fsl-lpspi: downgrade log level for pio mode *713e85376bclocksource/drivers/timer-ti-dm: Fix child node refcount handling *b5b6e8a1baclocksource/drivers:sp804: Make user selectable *19770c1c0ekcsan, seqlock: Fix incorrect assumption in read_seqbegin() *5c0d57df48kcsan, seqlock: Support seqcount_latch_t *fb83772959seqlock/latch: Provide raw_read_seqcount_latch_retry() *2b96f1d03atime: Fix references to _msecs_to_jiffies() handling of values *bc50e498e3thermal/lib: Fix memory leak on error in thermal_genl_auto() *ad9210452atools/lib/thermal: Make more generic the command encoding function *9d0c18d84acrypto: cavium - Fix an error handling path in cpt_ucode_load_fw() *05f0a3f547crypto: bcm - add error check in the ahash_hmac_init function *e951b29237crypto: caam - add error check to caam_rsa_set_priv_key_form *4771ad8c70ACPI: CPPC: Fix _CPC register setting issue *ae703f8ff0hwmon: (nct6775-core) Fix overflows seen when writing limit attributes *a9666f4895doc: rcu: update printed dynticks counter bits *04dcf1ce3bcrypto: inside-secure - Fix the return value of safexcel_xcbcmac_cra_init() *2a80e710bbEDAC/igen6: Avoid segmentation fault on module unload *67c3ca63d4crypto: hisilicon/qm - disable same error report before resetting *ea88b83f5ecrypto: cavium - Fix the if condition to exit loop after timeout *92834692a5crypto: pcrypt - Call crypto layer directly when padata_do_parallel() return -EBUSY *2ad60df36fEDAC/fsl_ddr: Fix bad bit shift operations *f17f863256thermal: core: Initialize thermal zones before registering them *8aaa74fd4acrypto: qat - remove faulty arbiter config reset *578ca89b04EDAC/bluefield: Fix potential integer overflow *c5fbc57cecfirmware: google: Unregister driver_info on failure *66eddb8dcbcrypto: caam - Fix the pointer passed to caam_qi_shutdown() *58998a4595virtio_blk: reverse request order in virtio_queue_rqs *995457cd2anvme-pci: reverse request order in nvme_queue_rqs *3d7bda75e1hfsplus: don't query the device logical block size multiple times *b1a52470f1s390/syscalls: Avoid creation of arch/arch/ directory *2cd22baf74block: fix bio_split_rw_at to take zone_write_granularity into account *ddab02607enetfs/fscache: Add a memory barrier for FSCACHE_VOLUME_CREATING *679d7276d4cachefiles: Fix missing pos updates in cachefiles_ondemand_fd_write_iter() *c68110dee0acpi/arm64: Adjust error handling procedure in gtdt_parse_timer_block() *bae56996ffarm64: fix .data.rel.ro size assertion when CONFIG_LTO_CLANG *a8627dde40m68k: mvme147: Reinstate early console *797cb79af1m68k: mvme16x: Add and use "mvme16x.h" *9cd327b45cm68k: mvme147: Fix SCSI controller IRQ numbers *fb96d5cfa9nvme-pci: fix freeing of the HMB descriptor table *f892ddcf9finitramfs: avoid filename buffer overrun *7961d460ecmips: asm: fix warning when disabling MIPS_FP_SUPPORT *dfc2eb2901ext4: avoid remount errors with 'abort' mount option *a8dad6db0eext4: make 'abort' mount option handling standard *259bf92558brd: defer automatic disk creation until module initialization succeeds *2185802447s390/cio: Do not unregister the subchannel based on DNV *64a56ca76bkselftest/arm64: mte: fix printf type warnings about longs *59f99fa254kselftest/arm64: mte: fix printf type warnings about __u64 *cefad6b772x86/barrier: Do not serialize MSR accesses on AMD *1a4159138efs/inode: Prevent dump_mapping() accessing invalid dentry.d_name.name *9be768f08bdrm/amd/display: Initialize denominators' default to 1 *b04650b5a9wifi: rtw89: avoid to add interface to list twice when SER *aeb1293a78mptcp: fix possible integer overflow in mptcp_reset_tout_timer *2a9c40c720fbdev: efifb: Register sysfs groups through driver core *19b40ca626Bluetooth: MGMT: Fix possible crash on mgmt_index_removed *f00f36db76Bluetooth: hci_sync: Add helper functions to manipulate cmd_sync queue *26d262b79adrm/amd/display: Check null-initialized variables *e087c9738edrm/amd/display: Add NULL check for function pointer in dcn32_set_output_transfer_func *304f8032d6fpga: manager: add owner module and take its refcount *18dc8366abfpga: bridge: add owner module and take its refcount *ec79e6170bcifs: Fix buffer overflow when parsing NFS reparse points *cc6a3f35bcserial: sc16is7xx: fix invalid FIFO access with special register set *e9365368b4net: fix crash when config small gso_max_size/gso_ipv4_max_size *c894a74756closures: Change BUG_ON() to WARN_ON() *889ec2e427ipmr: Fix access to mfc_cache_list without lock held *f57b5752f5ARM: 9420/1: smp: Fix SMP for xip kernels *61e43f619eALSA: usb-audio: Fix Yamaha P-125 Quirk Entry *cbd1ed34c8LoongArch: Define a default value for VM_DATA_DEFAULT_FLAGS *6125482489ASoC: audio-graph-card2: Purge absent supplies for device tree nodes *747ad49dd8proc/softirqs: replace seq_printf with seq_put_decimal_ull_width *cddb339587drm: panel-orientation-quirks: Make Lenovo Yoga Tab 3 X90F DMI match less strict *dccfd9a4dfASoC: stm: Prevent potential division by zero in stm32_sai_get_clk_div() *5d1838582dASoC: stm: Prevent potential division by zero in stm32_sai_mclk_round_rate() *4a7911bdccASoC: amd: yc: Support dmic on another model of Lenovo Thinkpad E14 Gen 6 *78d10f2b0dplatform/x86: thinkpad_acpi: Fix for ThinkPad's with ECFW showing incorrect fan speed *9529e0e599can: j1939: fix error in J1939 documentation. *af010abad5tools/lib/thermal: Remove the thermal.h soft link when doing make clean *2d7d478d39platform/x86: dell-wmi-base: Handle META key Lock/Unlock events *ad5112e48cplatform/x86: dell-smbios-base: Extends support to Alienware products *e920aa8d2cregulator: rk808: Add apply_bit for BUCK3 on RK809 *6f785b89a9soc: qcom: Add check devm_kasprintf() returned value *dc9a5182d3net: usb: qmi_wwan: add Quectel RG650V *79b09458ebbpf: fix filed access without lock *665edd4bc0x86/amd_nb: Fix compile-testing without CONFIG_AMD_NB *2c4188b883ALSA: hda/realtek: Add subwoofer quirk for Infinix ZERO BOOK 13 *c1d17ef00fselftests/watchdog-test: Fix system accidentally reset after watchdog-test *f263bd1170usb: add support for new USB device ID 0x17EF:0x3098 for the r8152 driver *57fd15bdc0mac80211: fix user-power when emulating chanctx *916eaa5814wifi: iwlwifi: mvm: Use the sync timepoint API in suspend *d4c5d4f4c9ASoC: Intel: sst: Support LPE0F28 ACPI HID *bd3700860bASoC: Intel: bytcr_rt5640: Add DMI quirk for Vexia Edu Atla 10 tablet *eade0698b8ASoC: Intel: bytcr_rt5640: Add support for non ACPI instantiated codec Change-Id: If87954814262ab17836032ba37f1ec7b21512ea3 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -163,6 +163,17 @@ Description:
|
||||
will be present in sysfs. Writing 1 to this file
|
||||
will perform reset.
|
||||
|
||||
What: /sys/bus/pci/devices/.../reset_subordinate
|
||||
Date: October 2024
|
||||
Contact: linux-pci@vger.kernel.org
|
||||
Description:
|
||||
This is visible only for bridge devices. If you want to reset
|
||||
all devices attached through the subordinate bus of a specific
|
||||
bridge device, writing 1 to this will try to do it. This will
|
||||
affect all devices attached to the system through this bridge
|
||||
similiar to writing 1 to their individual "reset" file, so use
|
||||
with caution.
|
||||
|
||||
What: /sys/bus/pci/devices/.../vpd
|
||||
Date: February 2008
|
||||
Contact: Ben Hutchings <bwh@kernel.org>
|
||||
|
||||
@@ -311,10 +311,13 @@ Description: Do background GC aggressively when set. Set to 0 by default.
|
||||
GC approach and turns SSR mode on.
|
||||
gc urgent low(2): lowers the bar of checking I/O idling in
|
||||
order to process outstanding discard commands and GC a
|
||||
little bit aggressively. uses cost benefit GC approach.
|
||||
little bit aggressively. always uses cost benefit GC approach,
|
||||
and will override age-threshold GC approach if ATGC is enabled
|
||||
at the same time.
|
||||
gc urgent mid(3): does GC forcibly in a period of given
|
||||
gc_urgent_sleep_time and executes a mid level of I/O idling check.
|
||||
uses cost benefit GC approach.
|
||||
always uses cost benefit GC approach, and will override
|
||||
age-threshold GC approach if ATGC is enabled at the same time.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/gc_urgent_sleep_time
|
||||
Date: August 2017
|
||||
|
||||
@@ -243,7 +243,7 @@ ticks this GP)" indicates that this CPU has not taken any scheduling-clock
|
||||
interrupts during the current stalled grace period.
|
||||
|
||||
The "idle=" portion of the message prints the dyntick-idle state.
|
||||
The hex number before the first "/" is the low-order 12 bits of the
|
||||
The hex number before the first "/" is the low-order 16 bits of the
|
||||
dynticks counter, which will have an even-numbered value if the CPU
|
||||
is in dyntick-idle mode and an odd-numbered value otherwise. The hex
|
||||
number between the two "/"s is the value of the nesting, which will be
|
||||
|
||||
@@ -26,9 +26,21 @@ properties:
|
||||
description:
|
||||
Specifies the reference clock(s) from which the output frequency is
|
||||
derived. This must either reference one clock if only the first clock
|
||||
input is connected or two if both clock inputs are connected.
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
input is connected or two if both clock inputs are connected. The last
|
||||
clock is the AXI bus clock that needs to be enabled so we can access the
|
||||
core registers.
|
||||
minItems: 2
|
||||
maxItems: 3
|
||||
|
||||
clock-names:
|
||||
oneOf:
|
||||
- items:
|
||||
- const: clkin1
|
||||
- const: s_axi_aclk
|
||||
- items:
|
||||
- const: clkin1
|
||||
- const: clkin2
|
||||
- const: s_axi_aclk
|
||||
|
||||
'#clock-cells':
|
||||
const: 0
|
||||
@@ -40,6 +52,7 @@ required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- '#clock-cells'
|
||||
|
||||
additionalProperties: false
|
||||
@@ -50,5 +63,6 @@ examples:
|
||||
compatible = "adi,axi-clkgen-2.00.a";
|
||||
#clock-cells = <0>;
|
||||
reg = <0xff000000 0x1000>;
|
||||
clocks = <&osc 1>;
|
||||
clocks = <&osc 1>, <&clkc 15>;
|
||||
clock-names = "clkin1", "s_axi_aclk";
|
||||
};
|
||||
|
||||
@@ -26,7 +26,7 @@ properties:
|
||||
maxItems: 1
|
||||
|
||||
spi-max-frequency:
|
||||
maximum: 30000000
|
||||
maximum: 66000000
|
||||
|
||||
reset-gpios:
|
||||
maxItems: 1
|
||||
|
||||
@@ -18,16 +18,15 @@ properties:
|
||||
description: prop-encoded-array <a b>
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
items:
|
||||
items:
|
||||
- description: Delay between rts signal and beginning of data sent in
|
||||
milliseconds. It corresponds to the delay before sending data.
|
||||
default: 0
|
||||
maximum: 100
|
||||
- description: Delay between end of data sent and rts signal in milliseconds.
|
||||
It corresponds to the delay after sending data and actual release
|
||||
of the line.
|
||||
default: 0
|
||||
maximum: 100
|
||||
- description: Delay between rts signal and beginning of data sent in
|
||||
milliseconds. It corresponds to the delay before sending data.
|
||||
default: 0
|
||||
maximum: 100
|
||||
- description: Delay between end of data sent and rts signal in milliseconds.
|
||||
It corresponds to the delay after sending data and actual release
|
||||
of the line.
|
||||
default: 0
|
||||
maximum: 100
|
||||
|
||||
rs485-rts-active-low:
|
||||
description: drive RTS low when sending (default is high).
|
||||
|
||||
@@ -23,8 +23,8 @@ properties:
|
||||
Indicates how many data pins are used to transmit two channels of PDM
|
||||
signal. 0 means two wires, 1 means one wire. Default value is 0.
|
||||
enum:
|
||||
- 0 # one wire
|
||||
- 1 # two wires
|
||||
- 0 # two wires
|
||||
- 1 # one wire
|
||||
|
||||
mediatek,mic-type-0:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
@@ -53,9 +53,9 @@ additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
mt6359codec: mt6359codec {
|
||||
mediatek,dmic-mode = <0>;
|
||||
mediatek,mic-type-0 = <2>;
|
||||
mt6359codec: audio-codec {
|
||||
mediatek,dmic-mode = <0>;
|
||||
mediatek,mic-type-0 = <2>;
|
||||
};
|
||||
|
||||
...
|
||||
|
||||
@@ -869,6 +869,8 @@ patternProperties:
|
||||
description: National Semiconductor
|
||||
"^nec,.*":
|
||||
description: NEC LCD Technologies, Ltd.
|
||||
"^neofidelity,.*":
|
||||
description: Neofidelity Inc.
|
||||
"^neonode,.*":
|
||||
description: Neonode Inc.
|
||||
"^netgear,.*":
|
||||
|
||||
@@ -6,9 +6,12 @@ API to implement a new FPGA bridge
|
||||
|
||||
* struct fpga_bridge - The FPGA Bridge structure
|
||||
* struct fpga_bridge_ops - Low level Bridge driver ops
|
||||
* fpga_bridge_register() - Create and register a bridge
|
||||
* __fpga_bridge_register() - Create and register a bridge
|
||||
* fpga_bridge_unregister() - Unregister a bridge
|
||||
|
||||
The helper macro ``fpga_bridge_register()`` automatically sets
|
||||
the module that registers the FPGA bridge as the owner.
|
||||
|
||||
.. kernel-doc:: include/linux/fpga/fpga-bridge.h
|
||||
:functions: fpga_bridge
|
||||
|
||||
@@ -16,7 +19,7 @@ API to implement a new FPGA bridge
|
||||
:functions: fpga_bridge_ops
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-bridge.c
|
||||
:functions: fpga_bridge_register
|
||||
:functions: __fpga_bridge_register
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-bridge.c
|
||||
:functions: fpga_bridge_unregister
|
||||
|
||||
@@ -24,7 +24,8 @@ How to support a new FPGA device
|
||||
--------------------------------
|
||||
|
||||
To add another FPGA manager, write a driver that implements a set of ops. The
|
||||
probe function calls fpga_mgr_register() or fpga_mgr_register_full(), such as::
|
||||
probe function calls ``fpga_mgr_register()`` or ``fpga_mgr_register_full()``,
|
||||
such as::
|
||||
|
||||
static const struct fpga_manager_ops socfpga_fpga_ops = {
|
||||
.write_init = socfpga_fpga_ops_configure_init,
|
||||
@@ -69,10 +70,11 @@ probe function calls fpga_mgr_register() or fpga_mgr_register_full(), such as::
|
||||
}
|
||||
|
||||
Alternatively, the probe function could call one of the resource managed
|
||||
register functions, devm_fpga_mgr_register() or devm_fpga_mgr_register_full().
|
||||
When these functions are used, the parameter syntax is the same, but the call
|
||||
to fpga_mgr_unregister() should be removed. In the above example, the
|
||||
socfpga_fpga_remove() function would not be required.
|
||||
register functions, ``devm_fpga_mgr_register()`` or
|
||||
``devm_fpga_mgr_register_full()``. When these functions are used, the
|
||||
parameter syntax is the same, but the call to ``fpga_mgr_unregister()`` should be
|
||||
removed. In the above example, the ``socfpga_fpga_remove()`` function would not be
|
||||
required.
|
||||
|
||||
The ops will implement whatever device specific register writes are needed to
|
||||
do the programming sequence for this particular FPGA. These ops return 0 for
|
||||
@@ -125,15 +127,19 @@ API for implementing a new FPGA Manager driver
|
||||
* struct fpga_manager - the FPGA manager struct
|
||||
* struct fpga_manager_ops - Low level FPGA manager driver ops
|
||||
* struct fpga_manager_info - Parameter structure for fpga_mgr_register_full()
|
||||
* fpga_mgr_register_full() - Create and register an FPGA manager using the
|
||||
* __fpga_mgr_register_full() - Create and register an FPGA manager using the
|
||||
fpga_mgr_info structure to provide the full flexibility of options
|
||||
* fpga_mgr_register() - Create and register an FPGA manager using standard
|
||||
* __fpga_mgr_register() - Create and register an FPGA manager using standard
|
||||
arguments
|
||||
* devm_fpga_mgr_register_full() - Resource managed version of
|
||||
fpga_mgr_register_full()
|
||||
* devm_fpga_mgr_register() - Resource managed version of fpga_mgr_register()
|
||||
* __devm_fpga_mgr_register_full() - Resource managed version of
|
||||
__fpga_mgr_register_full()
|
||||
* __devm_fpga_mgr_register() - Resource managed version of __fpga_mgr_register()
|
||||
* fpga_mgr_unregister() - Unregister an FPGA manager
|
||||
|
||||
Helper macros ``fpga_mgr_register_full()``, ``fpga_mgr_register()``,
|
||||
``devm_fpga_mgr_register_full()``, and ``devm_fpga_mgr_register()`` are available
|
||||
to ease the registration.
|
||||
|
||||
.. kernel-doc:: include/linux/fpga/fpga-mgr.h
|
||||
:functions: fpga_mgr_states
|
||||
|
||||
@@ -147,16 +153,16 @@ API for implementing a new FPGA Manager driver
|
||||
:functions: fpga_manager_info
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||
:functions: fpga_mgr_register_full
|
||||
:functions: __fpga_mgr_register_full
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||
:functions: fpga_mgr_register
|
||||
:functions: __fpga_mgr_register
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||
:functions: devm_fpga_mgr_register_full
|
||||
:functions: __devm_fpga_mgr_register_full
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||
:functions: devm_fpga_mgr_register
|
||||
:functions: __devm_fpga_mgr_register
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||
:functions: fpga_mgr_unregister
|
||||
|
||||
@@ -778,7 +778,8 @@ process the parameters it is given.
|
||||
|
||||
* ::
|
||||
|
||||
bool fs_validate_description(const struct fs_parameter_description *desc);
|
||||
bool fs_validate_description(const char *name,
|
||||
const struct fs_parameter_description *desc);
|
||||
|
||||
This performs some validation checks on a parameter description. It
|
||||
returns true if the description is good and false if it is not. It will
|
||||
|
||||
@@ -153,7 +153,7 @@ Use seqcount_latch_t when the write side sections cannot be protected
|
||||
from interruption by readers. This is typically the case when the read
|
||||
side can be invoked from NMI handlers.
|
||||
|
||||
Check `raw_write_seqcount_latch()` for more information.
|
||||
Check `write_seqcount_latch()` for more information.
|
||||
|
||||
|
||||
.. _seqlock_t:
|
||||
|
||||
@@ -121,7 +121,7 @@ format, the Group Extension is set in the PS-field.
|
||||
|
||||
On the other hand, when using PDU1 format, the PS-field contains a so-called
|
||||
Destination Address, which is _not_ part of the PGN. When communicating a PGN
|
||||
from user space to kernel (or vice versa) and PDU2 format is used, the PS-field
|
||||
from user space to kernel (or vice versa) and PDU1 format is used, the PS-field
|
||||
of the PGN shall be set to zero. The Destination Address shall be set
|
||||
elsewhere.
|
||||
|
||||
|
||||
@@ -347,7 +347,9 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
|
||||
|
||||
`int pm_runtime_resume_and_get(struct device *dev);`
|
||||
- run pm_runtime_resume(dev) and if successful, increment the device's
|
||||
usage counter; return the result of pm_runtime_resume
|
||||
usage counter; returns 0 on success (whether or not the device's
|
||||
runtime PM status was already 'active') or the error code from
|
||||
pm_runtime_resume() on failure.
|
||||
|
||||
`int pm_request_idle(struct device *dev);`
|
||||
- submit a request to execute the subsystem-level idle callback for the
|
||||
|
||||
2
Makefile
2
Makefile
@@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 6
|
||||
PATCHLEVEL = 1
|
||||
SUBLEVEL = 119
|
||||
SUBLEVEL = 121
|
||||
EXTRAVERSION =
|
||||
NAME = Curry Ramen
|
||||
|
||||
|
||||
@@ -473,6 +473,7 @@
|
||||
usb_create_shared_hcd
|
||||
usb_deregister
|
||||
usb_disabled
|
||||
usb_find_common_endpoints
|
||||
usb_free_urb
|
||||
usb_get_dev
|
||||
usb_hcd_check_unlink_urb
|
||||
|
||||
@@ -280,8 +280,8 @@
|
||||
|
||||
reg_dcdc5: dcdc5 {
|
||||
regulator-always-on;
|
||||
regulator-min-microvolt = <1425000>;
|
||||
regulator-max-microvolt = <1575000>;
|
||||
regulator-min-microvolt = <1450000>;
|
||||
regulator-max-microvolt = <1550000>;
|
||||
regulator-name = "vcc-dram";
|
||||
};
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <asm/tls.h>
|
||||
#include <asm/system_info.h>
|
||||
#include <asm/uaccess-asm.h>
|
||||
#include <asm/kasan_def.h>
|
||||
|
||||
#include "entry-header.S"
|
||||
#include <asm/probes.h>
|
||||
@@ -787,6 +788,13 @@ ENTRY(__switch_to)
|
||||
@ entries covering the vmalloc region.
|
||||
@
|
||||
ldr r2, [ip]
|
||||
#ifdef CONFIG_KASAN_VMALLOC
|
||||
@ Also dummy read from the KASAN shadow memory for the new stack if we
|
||||
@ are using KASAN
|
||||
mov_l r2, KASAN_SHADOW_OFFSET
|
||||
add r2, r2, ip, lsr #KASAN_SHADOW_SCALE_SHIFT
|
||||
ldr r2, [r2]
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ When CONFIG_THREAD_INFO_IN_TASK=n, the update of SP itself is what
|
||||
|
||||
@@ -411,7 +411,11 @@ ENTRY(secondary_startup)
|
||||
/*
|
||||
* Use the page tables supplied from __cpu_up.
|
||||
*/
|
||||
#ifdef CONFIG_XIP_KERNEL
|
||||
ldr r3, =(secondary_data + PLAT_PHYS_OFFSET - PAGE_OFFSET)
|
||||
#else
|
||||
adr_l r3, secondary_data
|
||||
#endif
|
||||
mov_l r12, __secondary_switched
|
||||
ldrd r4, r5, [r3, #0] @ get secondary_data.pgdir
|
||||
ARM_BE8(eor r4, r4, r5) @ Swap r5 and r4 in BE:
|
||||
|
||||
@@ -45,8 +45,15 @@ extern void secondary_startup(void);
|
||||
static int psci_boot_secondary(unsigned int cpu, struct task_struct *idle)
|
||||
{
|
||||
if (psci_ops.cpu_on)
|
||||
#ifdef CONFIG_XIP_KERNEL
|
||||
return psci_ops.cpu_on(cpu_logical_map(cpu),
|
||||
((phys_addr_t)(&secondary_startup)
|
||||
- XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR)
|
||||
+ CONFIG_XIP_PHYS_ADDR));
|
||||
#else
|
||||
return psci_ops.cpu_on(cpu_logical_map(cpu),
|
||||
virt_to_idmap(&secondary_startup));
|
||||
#endif
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
||||
@@ -84,8 +84,15 @@ static void identity_mapping_add(pgd_t *pgd, const char *text_start,
|
||||
unsigned long addr, end;
|
||||
unsigned long next;
|
||||
|
||||
#ifdef CONFIG_XIP_KERNEL
|
||||
addr = (phys_addr_t)(text_start) - XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR)
|
||||
+ CONFIG_XIP_PHYS_ADDR;
|
||||
end = (phys_addr_t)(text_end) - XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR)
|
||||
+ CONFIG_XIP_PHYS_ADDR;
|
||||
#else
|
||||
addr = virt_to_idmap(text_start);
|
||||
end = virt_to_idmap(text_end);
|
||||
#endif
|
||||
pr_info("Setting up static identity map for 0x%lx - 0x%lx\n", addr, end);
|
||||
|
||||
prot |= PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AF;
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
*/
|
||||
#include <linux/module.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/kasan.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/io.h>
|
||||
@@ -115,16 +116,40 @@ int ioremap_page(unsigned long virt, unsigned long phys,
|
||||
}
|
||||
EXPORT_SYMBOL(ioremap_page);
|
||||
|
||||
#ifdef CONFIG_KASAN
|
||||
static unsigned long arm_kasan_mem_to_shadow(unsigned long addr)
|
||||
{
|
||||
return (unsigned long)kasan_mem_to_shadow((void *)addr);
|
||||
}
|
||||
#else
|
||||
static unsigned long arm_kasan_mem_to_shadow(unsigned long addr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void memcpy_pgd(struct mm_struct *mm, unsigned long start,
|
||||
unsigned long end)
|
||||
{
|
||||
end = ALIGN(end, PGDIR_SIZE);
|
||||
memcpy(pgd_offset(mm, start), pgd_offset_k(start),
|
||||
sizeof(pgd_t) * (pgd_index(end) - pgd_index(start)));
|
||||
}
|
||||
|
||||
void __check_vmalloc_seq(struct mm_struct *mm)
|
||||
{
|
||||
int seq;
|
||||
|
||||
do {
|
||||
seq = atomic_read(&init_mm.context.vmalloc_seq);
|
||||
memcpy(pgd_offset(mm, VMALLOC_START),
|
||||
pgd_offset_k(VMALLOC_START),
|
||||
sizeof(pgd_t) * (pgd_index(VMALLOC_END) -
|
||||
pgd_index(VMALLOC_START)));
|
||||
seq = atomic_read_acquire(&init_mm.context.vmalloc_seq);
|
||||
memcpy_pgd(mm, VMALLOC_START, VMALLOC_END);
|
||||
if (IS_ENABLED(CONFIG_KASAN_VMALLOC)) {
|
||||
unsigned long start =
|
||||
arm_kasan_mem_to_shadow(VMALLOC_START);
|
||||
unsigned long end =
|
||||
arm_kasan_mem_to_shadow(VMALLOC_END);
|
||||
memcpy_pgd(mm, start, end);
|
||||
}
|
||||
/*
|
||||
* Use a store-release so that other CPUs that observe the
|
||||
* counter's new value are guaranteed to see the results of the
|
||||
|
||||
@@ -202,6 +202,9 @@
|
||||
interrupts = <7 5 IRQ_TYPE_EDGE_RISING>; /* PH5 */
|
||||
vdd-supply = <®_dldo1>;
|
||||
vddio-supply = <®_dldo1>;
|
||||
mount-matrix = "0", "1", "0",
|
||||
"-1", "0", "0",
|
||||
"0", "0", "1";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-name = "+V3.3_SD";
|
||||
startup-delay-us = <2000>;
|
||||
startup-delay-us = <20000>;
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-name = "+V3.3_SD";
|
||||
startup-delay-us = <2000>;
|
||||
startup-delay-us = <20000>;
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
|
||||
@@ -43,6 +43,14 @@
|
||||
interrupts = <117 IRQ_TYPE_LEVEL_LOW>;
|
||||
reg = <0x2c>;
|
||||
hid-descr-addr = <0x0020>;
|
||||
/*
|
||||
* The trackpad needs a post-power-on delay of 100ms,
|
||||
* but at time of writing, the power supply for it on
|
||||
* this board is always on. The delay is therefore not
|
||||
* added to avoid impacting the readiness of the
|
||||
* trackpad.
|
||||
*/
|
||||
vdd-supply = <&mt6397_vgp6_reg>;
|
||||
wakeup-source;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -29,3 +29,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
i2c-scl-internal-delay-ns = <4100>;
|
||||
};
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
i2c-scl-internal-delay-ns = <25000>;
|
||||
|
||||
trackpad@2c {
|
||||
compatible = "hid-over-i2c";
|
||||
reg = <0x2c>;
|
||||
|
||||
@@ -30,3 +30,6 @@
|
||||
qcom,ath10k-calibration-variant = "GO_DAMU";
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
i2c-scl-internal-delay-ns = <20000>;
|
||||
};
|
||||
|
||||
@@ -25,3 +25,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
i2c-scl-internal-delay-ns = <21500>;
|
||||
};
|
||||
|
||||
@@ -8,40 +8,32 @@
|
||||
#include <arm/cros-ec-keyboard.dtsi>
|
||||
|
||||
/ {
|
||||
panel: panel {
|
||||
compatible = "auo,b116xw03";
|
||||
power-supply = <&pp3300_panel>;
|
||||
backlight = <&backlight_lcd0>;
|
||||
|
||||
port {
|
||||
panel_in: endpoint {
|
||||
remote-endpoint = <&anx7625_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
pp1200_mipibrdg: pp1200-mipibrdg {
|
||||
pp1000_mipibrdg: pp1000-mipibrdg {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "pp1200_mipibrdg";
|
||||
regulator-name = "pp1000_mipibrdg";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pp1200_mipibrdg_en>;
|
||||
pinctrl-0 = <&pp1000_mipibrdg_en>;
|
||||
|
||||
enable-active-high;
|
||||
regulator-boot-on;
|
||||
|
||||
gpio = <&pio 54 GPIO_ACTIVE_HIGH>;
|
||||
vin-supply = <&pp1800_alw>;
|
||||
};
|
||||
|
||||
pp1800_mipibrdg: pp1800-mipibrdg {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "pp1800_mipibrdg";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pp1800_lcd_en>;
|
||||
pinctrl-0 = <&pp1800_mipibrdg_en>;
|
||||
|
||||
enable-active-high;
|
||||
regulator-boot-on;
|
||||
|
||||
gpio = <&pio 36 GPIO_ACTIVE_HIGH>;
|
||||
vin-supply = <&pp1800_alw>;
|
||||
};
|
||||
|
||||
pp3300_panel: pp3300-panel {
|
||||
@@ -56,18 +48,20 @@
|
||||
regulator-boot-on;
|
||||
|
||||
gpio = <&pio 35 GPIO_ACTIVE_HIGH>;
|
||||
vin-supply = <&pp3300_alw>;
|
||||
};
|
||||
|
||||
vddio_mipibrdg: vddio-mipibrdg {
|
||||
pp3300_mipibrdg: pp3300-mipibrdg {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vddio_mipibrdg";
|
||||
regulator-name = "pp3300_mipibrdg";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&vddio_mipibrdg_en>;
|
||||
pinctrl-0 = <&pp3300_mipibrdg_en>;
|
||||
|
||||
enable-active-high;
|
||||
regulator-boot-on;
|
||||
|
||||
gpio = <&pio 37 GPIO_ACTIVE_HIGH>;
|
||||
vin-supply = <&pp3300_alw>;
|
||||
};
|
||||
|
||||
volume_buttons: volume-buttons {
|
||||
@@ -164,9 +158,9 @@
|
||||
panel_flags = <1>;
|
||||
enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
|
||||
reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
|
||||
vdd10-supply = <&pp1200_mipibrdg>;
|
||||
vdd10-supply = <&pp1000_mipibrdg>;
|
||||
vdd18-supply = <&pp1800_mipibrdg>;
|
||||
vdd33-supply = <&vddio_mipibrdg>;
|
||||
vdd33-supply = <&pp3300_mipibrdg>;
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
@@ -188,6 +182,20 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
aux-bus {
|
||||
panel: panel {
|
||||
compatible = "edp-panel";
|
||||
power-supply = <&pp3300_panel>;
|
||||
backlight = <&backlight_lcd0>;
|
||||
|
||||
port {
|
||||
panel_in: endpoint {
|
||||
remote-endpoint = <&anx7625_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -395,14 +403,14 @@
|
||||
"",
|
||||
"";
|
||||
|
||||
pp1200_mipibrdg_en: pp1200-mipibrdg-en {
|
||||
pp1000_mipibrdg_en: pp1000-mipibrdg-en {
|
||||
pins1 {
|
||||
pinmux = <PINMUX_GPIO54__FUNC_GPIO54>;
|
||||
output-low;
|
||||
};
|
||||
};
|
||||
|
||||
pp1800_lcd_en: pp1800-lcd-en {
|
||||
pp1800_mipibrdg_en: pp1800-mipibrdg-en {
|
||||
pins1 {
|
||||
pinmux = <PINMUX_GPIO36__FUNC_GPIO36>;
|
||||
output-low;
|
||||
@@ -464,7 +472,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
vddio_mipibrdg_en: vddio-mipibrdg-en {
|
||||
pp3300_mipibrdg_en: pp3300-mipibrdg-en {
|
||||
pins1 {
|
||||
pinmux = <PINMUX_GPIO37__FUNC_GPIO37>;
|
||||
output-low;
|
||||
|
||||
@@ -105,9 +105,9 @@
|
||||
clock-frequency = <400000>;
|
||||
vbus-supply = <&mt6358_vcn18_reg>;
|
||||
|
||||
eeprom@54 {
|
||||
eeprom@50 {
|
||||
compatible = "atmel,24c32";
|
||||
reg = <0x54>;
|
||||
reg = <0x50>;
|
||||
pagesize = <32>;
|
||||
vcc-supply = <&mt6358_vcn18_reg>;
|
||||
};
|
||||
|
||||
@@ -80,9 +80,9 @@
|
||||
clock-frequency = <400000>;
|
||||
vbus-supply = <&mt6358_vcn18_reg>;
|
||||
|
||||
eeprom@54 {
|
||||
eeprom@50 {
|
||||
compatible = "atmel,24c64";
|
||||
reg = <0x54>;
|
||||
reg = <0x50>;
|
||||
pagesize = <32>;
|
||||
vcc-supply = <&mt6358_vcn18_reg>;
|
||||
};
|
||||
|
||||
@@ -89,9 +89,9 @@
|
||||
clock-frequency = <400000>;
|
||||
vbus-supply = <&mt6358_vcn18_reg>;
|
||||
|
||||
eeprom@54 {
|
||||
eeprom@50 {
|
||||
compatible = "atmel,24c32";
|
||||
reg = <0x54>;
|
||||
reg = <0x50>;
|
||||
pagesize = <32>;
|
||||
vcc-supply = <&mt6358_vcn18_reg>;
|
||||
};
|
||||
|
||||
@@ -906,6 +906,7 @@
|
||||
|
||||
vusb33-supply = <&mt6359_vusb_ldo_reg>;
|
||||
vbus-supply = <&usb_vbus>;
|
||||
mediatek,u3p-dis-msk = <1>;
|
||||
};
|
||||
|
||||
&xhci2 {
|
||||
@@ -922,7 +923,6 @@
|
||||
usb2-lpm-disable;
|
||||
vusb33-supply = <&mt6359_vusb_ldo_reg>;
|
||||
vbus-supply = <&usb_vbus>;
|
||||
mediatek,u3p-dis-msk = <1>;
|
||||
};
|
||||
|
||||
#include <arm/cros-ec-keyboard.dtsi>
|
||||
|
||||
@@ -332,7 +332,7 @@
|
||||
};
|
||||
|
||||
infracfg_ao: syscon@10001000 {
|
||||
compatible = "mediatek,mt8195-infracfg_ao", "syscon", "simple-mfd";
|
||||
compatible = "mediatek,mt8195-infracfg_ao", "syscon";
|
||||
reg = <0 0x10001000 0 0x1000>;
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
|
||||
@@ -1383,6 +1383,7 @@ static void sve_init_regs(void)
|
||||
fpsimd_bind_task_to_cpu();
|
||||
} else {
|
||||
fpsimd_to_sve(current);
|
||||
fpsimd_flush_task_state(current);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -429,7 +429,7 @@ static void tls_thread_switch(struct task_struct *next)
|
||||
|
||||
if (is_compat_thread(task_thread_info(next)))
|
||||
write_sysreg(next->thread.uw.tp_value, tpidrro_el0);
|
||||
else if (!arm64_kernel_unmapped_at_el0())
|
||||
else
|
||||
write_sysreg(0, tpidrro_el0);
|
||||
|
||||
write_sysreg(*task_user_tls(next), tpidr_el0);
|
||||
|
||||
@@ -1342,7 +1342,7 @@ static int tagged_addr_ctrl_get(struct task_struct *target,
|
||||
{
|
||||
long ctrl = get_tagged_addr_ctrl(target);
|
||||
|
||||
if (IS_ERR_VALUE(ctrl))
|
||||
if (WARN_ON_ONCE(IS_ERR_VALUE(ctrl)))
|
||||
return ctrl;
|
||||
|
||||
return membuf_write(&to, &ctrl, sizeof(ctrl));
|
||||
@@ -1356,6 +1356,10 @@ static int tagged_addr_ctrl_set(struct task_struct *target, const struct
|
||||
int ret;
|
||||
long ctrl;
|
||||
|
||||
ctrl = get_tagged_addr_ctrl(target);
|
||||
if (WARN_ON_ONCE(IS_ERR_VALUE(ctrl)))
|
||||
return ctrl;
|
||||
|
||||
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &ctrl, 0, -1);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -315,6 +315,9 @@ SECTIONS
|
||||
__initdata_end = .;
|
||||
__init_end = .;
|
||||
|
||||
.data.rel.ro : { *(.data.rel.ro) }
|
||||
ASSERT(SIZEOF(.data.rel.ro) == 0, "Unexpected RELRO detected!")
|
||||
|
||||
_data = .;
|
||||
_sdata = .;
|
||||
RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_ALIGN)
|
||||
@@ -368,9 +371,6 @@ SECTIONS
|
||||
*(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt)
|
||||
}
|
||||
ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
|
||||
|
||||
.data.rel.ro : { *(.data.rel.ro) }
|
||||
ASSERT(SIZEOF(.data.rel.ro) == 0, "Unexpected RELRO detected!")
|
||||
}
|
||||
|
||||
#include "image-vars.h"
|
||||
|
||||
@@ -1003,7 +1003,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
|
||||
|
||||
if (run->exit_reason == KVM_EXIT_MMIO) {
|
||||
ret = kvm_handle_mmio_return(vcpu);
|
||||
if (ret)
|
||||
if (ret <= 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -72,6 +72,31 @@ unsigned long kvm_mmio_read_buf(const void *buf, unsigned int len)
|
||||
return data;
|
||||
}
|
||||
|
||||
static bool kvm_pending_sync_exception(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
if (!vcpu_get_flag(vcpu, PENDING_EXCEPTION))
|
||||
return false;
|
||||
|
||||
if (vcpu_el1_is_32bit(vcpu)) {
|
||||
switch (vcpu_get_flag(vcpu, EXCEPT_MASK)) {
|
||||
case unpack_vcpu_flag(EXCEPT_AA32_UND):
|
||||
case unpack_vcpu_flag(EXCEPT_AA32_IABT):
|
||||
case unpack_vcpu_flag(EXCEPT_AA32_DABT):
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
switch (vcpu_get_flag(vcpu, EXCEPT_MASK)) {
|
||||
case unpack_vcpu_flag(EXCEPT_AA64_EL1_SYNC):
|
||||
case unpack_vcpu_flag(EXCEPT_AA64_EL2_SYNC):
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_handle_mmio_return -- Handle MMIO loads after user space emulation
|
||||
* or in-kernel IO emulation
|
||||
@@ -84,9 +109,12 @@ int kvm_handle_mmio_return(struct kvm_vcpu *vcpu)
|
||||
unsigned int len;
|
||||
int mask;
|
||||
|
||||
/* Detect an already handled MMIO return */
|
||||
if (unlikely(!vcpu->mmio_needed))
|
||||
return 0;
|
||||
/*
|
||||
* Detect if the MMIO return was already handled or if userspace aborted
|
||||
* the MMIO access.
|
||||
*/
|
||||
if (unlikely(!vcpu->mmio_needed || kvm_pending_sync_exception(vcpu)))
|
||||
return 1;
|
||||
|
||||
vcpu->mmio_needed = 0;
|
||||
|
||||
@@ -117,7 +145,7 @@ int kvm_handle_mmio_return(struct kvm_vcpu *vcpu)
|
||||
*/
|
||||
kvm_incr_pc(vcpu);
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int io_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa)
|
||||
|
||||
@@ -294,7 +294,6 @@ static u64 kvm_pmu_overflow_status(struct kvm_vcpu *vcpu)
|
||||
|
||||
if ((__vcpu_sys_reg(vcpu, PMCR_EL0) & ARMV8_PMU_PMCR_E)) {
|
||||
reg = __vcpu_sys_reg(vcpu, PMOVSSET_EL0);
|
||||
reg &= __vcpu_sys_reg(vcpu, PMCNTENSET_EL0);
|
||||
reg &= __vcpu_sys_reg(vcpu, PMINTENSET_EL1);
|
||||
}
|
||||
|
||||
|
||||
@@ -855,6 +855,9 @@ static int vgic_its_cmd_handle_discard(struct kvm *kvm, struct vgic_its *its,
|
||||
|
||||
ite = find_ite(its, device_id, event_id);
|
||||
if (ite && its_is_collection_mapped(ite->collection)) {
|
||||
struct its_device *device = find_its_device(its, device_id);
|
||||
int ite_esz = vgic_its_get_abi(its)->ite_esz;
|
||||
gpa_t gpa = device->itt_addr + ite->event_id * ite_esz;
|
||||
/*
|
||||
* Though the spec talks about removing the pending state, we
|
||||
* don't bother here since we clear the ITTE anyway and the
|
||||
@@ -863,7 +866,8 @@ static int vgic_its_cmd_handle_discard(struct kvm *kvm, struct vgic_its *its,
|
||||
vgic_its_invalidate_cache(kvm);
|
||||
|
||||
its_free_ite(kvm, ite);
|
||||
return 0;
|
||||
|
||||
return vgic_its_write_entry_lock(its, gpa, 0, ite_esz);
|
||||
}
|
||||
|
||||
return E_ITS_DISCARD_UNMAPPED_INTERRUPT;
|
||||
@@ -1211,9 +1215,11 @@ static int vgic_its_cmd_handle_mapd(struct kvm *kvm, struct vgic_its *its,
|
||||
bool valid = its_cmd_get_validbit(its_cmd);
|
||||
u8 num_eventid_bits = its_cmd_get_size(its_cmd);
|
||||
gpa_t itt_addr = its_cmd_get_ittaddr(its_cmd);
|
||||
int dte_esz = vgic_its_get_abi(its)->dte_esz;
|
||||
struct its_device *device;
|
||||
gpa_t gpa;
|
||||
|
||||
if (!vgic_its_check_id(its, its->baser_device_table, device_id, NULL))
|
||||
if (!vgic_its_check_id(its, its->baser_device_table, device_id, &gpa))
|
||||
return E_ITS_MAPD_DEVICE_OOR;
|
||||
|
||||
if (valid && num_eventid_bits > VITS_TYPER_IDBITS)
|
||||
@@ -1234,7 +1240,7 @@ static int vgic_its_cmd_handle_mapd(struct kvm *kvm, struct vgic_its *its,
|
||||
* is an error, so we are done in any case.
|
||||
*/
|
||||
if (!valid)
|
||||
return 0;
|
||||
return vgic_its_write_entry_lock(its, gpa, 0, dte_esz);
|
||||
|
||||
device = vgic_its_alloc_device(its, device_id, itt_addr,
|
||||
num_eventid_bits);
|
||||
@@ -2207,7 +2213,6 @@ static int scan_its_table(struct vgic_its *its, gpa_t base, int size, u32 esz,
|
||||
static int vgic_its_save_ite(struct vgic_its *its, struct its_device *dev,
|
||||
struct its_ite *ite, gpa_t gpa, int ite_esz)
|
||||
{
|
||||
struct kvm *kvm = its->dev->kvm;
|
||||
u32 next_offset;
|
||||
u64 val;
|
||||
|
||||
@@ -2216,7 +2221,8 @@ static int vgic_its_save_ite(struct vgic_its *its, struct its_device *dev,
|
||||
((u64)ite->irq->intid << KVM_ITS_ITE_PINTID_SHIFT) |
|
||||
ite->collection->collection_id;
|
||||
val = cpu_to_le64(val);
|
||||
return vgic_write_guest_lock(kvm, gpa, &val, ite_esz);
|
||||
|
||||
return vgic_its_write_entry_lock(its, gpa, val, ite_esz);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2357,7 +2363,6 @@ static int vgic_its_restore_itt(struct vgic_its *its, struct its_device *dev)
|
||||
static int vgic_its_save_dte(struct vgic_its *its, struct its_device *dev,
|
||||
gpa_t ptr, int dte_esz)
|
||||
{
|
||||
struct kvm *kvm = its->dev->kvm;
|
||||
u64 val, itt_addr_field;
|
||||
u32 next_offset;
|
||||
|
||||
@@ -2368,7 +2373,8 @@ static int vgic_its_save_dte(struct vgic_its *its, struct its_device *dev,
|
||||
(itt_addr_field << KVM_ITS_DTE_ITTADDR_SHIFT) |
|
||||
(dev->num_eventid_bits - 1));
|
||||
val = cpu_to_le64(val);
|
||||
return vgic_write_guest_lock(kvm, ptr, &val, dte_esz);
|
||||
|
||||
return vgic_its_write_entry_lock(its, ptr, val, dte_esz);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2555,7 +2561,8 @@ static int vgic_its_save_cte(struct vgic_its *its,
|
||||
((u64)collection->target_addr << KVM_ITS_CTE_RDBASE_SHIFT) |
|
||||
collection->collection_id);
|
||||
val = cpu_to_le64(val);
|
||||
return vgic_write_guest_lock(its->dev->kvm, gpa, &val, esz);
|
||||
|
||||
return vgic_its_write_entry_lock(its, gpa, val, esz);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2571,8 +2578,7 @@ static int vgic_its_restore_cte(struct vgic_its *its, gpa_t gpa, int esz)
|
||||
u64 val;
|
||||
int ret;
|
||||
|
||||
BUG_ON(esz > sizeof(val));
|
||||
ret = kvm_read_guest_lock(kvm, gpa, &val, esz);
|
||||
ret = vgic_its_read_entry_lock(its, gpa, &val, esz);
|
||||
if (ret)
|
||||
return ret;
|
||||
val = le64_to_cpu(val);
|
||||
@@ -2610,7 +2616,6 @@ static int vgic_its_save_collection_table(struct vgic_its *its)
|
||||
u64 baser = its->baser_coll_table;
|
||||
gpa_t gpa = GITS_BASER_ADDR_48_to_52(baser);
|
||||
struct its_collection *collection;
|
||||
u64 val;
|
||||
size_t max_size, filled = 0;
|
||||
int ret, cte_esz = abi->cte_esz;
|
||||
|
||||
@@ -2634,10 +2639,7 @@ static int vgic_its_save_collection_table(struct vgic_its *its)
|
||||
* table is not fully filled, add a last dummy element
|
||||
* with valid bit unset
|
||||
*/
|
||||
val = 0;
|
||||
BUG_ON(cte_esz > sizeof(val));
|
||||
ret = vgic_write_guest_lock(its->dev->kvm, gpa, &val, cte_esz);
|
||||
return ret;
|
||||
return vgic_its_write_entry_lock(its, gpa, 0, cte_esz);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -555,6 +555,7 @@ static void vgic_mmio_write_invlpi(struct kvm_vcpu *vcpu,
|
||||
unsigned long val)
|
||||
{
|
||||
struct vgic_irq *irq;
|
||||
u32 intid;
|
||||
|
||||
/*
|
||||
* If the guest wrote only to the upper 32bit part of the
|
||||
@@ -566,9 +567,13 @@ static void vgic_mmio_write_invlpi(struct kvm_vcpu *vcpu,
|
||||
if ((addr & 4) || !vgic_lpis_enabled(vcpu))
|
||||
return;
|
||||
|
||||
intid = lower_32_bits(val);
|
||||
if (intid < VGIC_MIN_LPI)
|
||||
return;
|
||||
|
||||
vgic_set_rdist_busy(vcpu, true);
|
||||
|
||||
irq = vgic_get_irq(vcpu->kvm, NULL, lower_32_bits(val));
|
||||
irq = vgic_get_irq(vcpu->kvm, NULL, intid);
|
||||
if (irq) {
|
||||
vgic_its_inv_lpi(vcpu->kvm, irq);
|
||||
vgic_put_irq(vcpu->kvm, irq);
|
||||
|
||||
@@ -132,14 +132,27 @@ static inline bool vgic_irq_is_multi_sgi(struct vgic_irq *irq)
|
||||
return vgic_irq_get_lr_count(irq) > 1;
|
||||
}
|
||||
|
||||
static inline int vgic_write_guest_lock(struct kvm *kvm, gpa_t gpa,
|
||||
const void *data, unsigned long len)
|
||||
static inline int vgic_its_read_entry_lock(struct vgic_its *its, gpa_t eaddr,
|
||||
u64 *eval, unsigned long esize)
|
||||
{
|
||||
int ret;
|
||||
struct kvm *kvm = its->dev->kvm;
|
||||
|
||||
ret = kvm_write_guest_lock(kvm, gpa, data, len);
|
||||
if (KVM_BUG_ON(esize != sizeof(*eval), kvm))
|
||||
return -EINVAL;
|
||||
|
||||
return ret;
|
||||
return kvm_read_guest_lock(kvm, eaddr, eval, esize);
|
||||
|
||||
}
|
||||
|
||||
static inline int vgic_its_write_entry_lock(struct vgic_its *its, gpa_t eaddr,
|
||||
u64 eval, unsigned long esize)
|
||||
{
|
||||
struct kvm *kvm = its->dev->kvm;
|
||||
|
||||
if (KVM_BUG_ON(esize != sizeof(eval), kvm))
|
||||
return -EINVAL;
|
||||
|
||||
return kvm_write_guest_lock(kvm, eaddr, &eval, esize);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -32,9 +32,9 @@ static unsigned long nr_pinned_asids;
|
||||
static unsigned long *pinned_asid_map;
|
||||
|
||||
#define ASID_MASK (~GENMASK(asid_bits - 1, 0))
|
||||
#define ASID_FIRST_VERSION (1UL << asid_bits)
|
||||
#define ASID_FIRST_VERSION (1UL << 16)
|
||||
|
||||
#define NUM_USER_ASIDS ASID_FIRST_VERSION
|
||||
#define NUM_USER_ASIDS (1UL << asid_bits)
|
||||
#define ctxid2asid(asid) ((asid) & ~ASID_MASK)
|
||||
#define asid2ctxid(asid, genid) ((asid) | (genid))
|
||||
|
||||
|
||||
@@ -1757,6 +1757,12 @@ static void restore_args(struct jit_ctx *ctx, int args_off, int nargs)
|
||||
}
|
||||
}
|
||||
|
||||
static bool is_struct_ops_tramp(const struct bpf_tramp_links *fentry_links)
|
||||
{
|
||||
return fentry_links->nr_links == 1 &&
|
||||
fentry_links->links[0]->link.type == BPF_LINK_TYPE_STRUCT_OPS;
|
||||
}
|
||||
|
||||
/* Based on the x86's implementation of arch_prepare_bpf_trampoline().
|
||||
*
|
||||
* bpf prog and function entry before bpf trampoline hooked:
|
||||
@@ -1786,6 +1792,7 @@ static int prepare_trampoline(struct jit_ctx *ctx, struct bpf_tramp_image *im,
|
||||
struct bpf_tramp_links *fmod_ret = &tlinks[BPF_TRAMP_MODIFY_RETURN];
|
||||
bool save_ret;
|
||||
__le32 **branches = NULL;
|
||||
bool is_struct_ops = is_struct_ops_tramp(fentry);
|
||||
|
||||
/* trampoline stack layout:
|
||||
* [ parent ip ]
|
||||
@@ -1854,11 +1861,14 @@ static int prepare_trampoline(struct jit_ctx *ctx, struct bpf_tramp_image *im,
|
||||
*/
|
||||
emit_bti(A64_BTI_JC, ctx);
|
||||
|
||||
/* frame for parent function */
|
||||
emit(A64_PUSH(A64_FP, A64_R(9), A64_SP), ctx);
|
||||
emit(A64_MOV(1, A64_FP, A64_SP), ctx);
|
||||
/* x9 is not set for struct_ops */
|
||||
if (!is_struct_ops) {
|
||||
/* frame for parent function */
|
||||
emit(A64_PUSH(A64_FP, A64_R(9), A64_SP), ctx);
|
||||
emit(A64_MOV(1, A64_FP, A64_SP), ctx);
|
||||
}
|
||||
|
||||
/* frame for patched function */
|
||||
/* frame for patched function for tracing, or caller for struct_ops */
|
||||
emit(A64_PUSH(A64_FP, A64_LR, A64_SP), ctx);
|
||||
emit(A64_MOV(1, A64_FP, A64_SP), ctx);
|
||||
|
||||
@@ -1944,19 +1954,24 @@ static int prepare_trampoline(struct jit_ctx *ctx, struct bpf_tramp_image *im,
|
||||
/* reset SP */
|
||||
emit(A64_MOV(1, A64_SP, A64_FP), ctx);
|
||||
|
||||
/* pop frames */
|
||||
emit(A64_POP(A64_FP, A64_LR, A64_SP), ctx);
|
||||
emit(A64_POP(A64_FP, A64_R(9), A64_SP), ctx);
|
||||
|
||||
if (flags & BPF_TRAMP_F_SKIP_FRAME) {
|
||||
/* skip patched function, return to parent */
|
||||
emit(A64_MOV(1, A64_LR, A64_R(9)), ctx);
|
||||
emit(A64_RET(A64_R(9)), ctx);
|
||||
if (is_struct_ops) {
|
||||
emit(A64_POP(A64_FP, A64_LR, A64_SP), ctx);
|
||||
emit(A64_RET(A64_LR), ctx);
|
||||
} else {
|
||||
/* return to patched function */
|
||||
emit(A64_MOV(1, A64_R(10), A64_LR), ctx);
|
||||
emit(A64_MOV(1, A64_LR, A64_R(9)), ctx);
|
||||
emit(A64_RET(A64_R(10)), ctx);
|
||||
/* pop frames */
|
||||
emit(A64_POP(A64_FP, A64_LR, A64_SP), ctx);
|
||||
emit(A64_POP(A64_FP, A64_R(9), A64_SP), ctx);
|
||||
|
||||
if (flags & BPF_TRAMP_F_SKIP_FRAME) {
|
||||
/* skip patched function, return to parent */
|
||||
emit(A64_MOV(1, A64_LR, A64_R(9)), ctx);
|
||||
emit(A64_RET(A64_R(9)), ctx);
|
||||
} else {
|
||||
/* return to patched function */
|
||||
emit(A64_MOV(1, A64_R(10), A64_LR), ctx);
|
||||
emit(A64_MOV(1, A64_LR, A64_R(9)), ctx);
|
||||
emit(A64_RET(A64_R(10)), ctx);
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx->image)
|
||||
|
||||
@@ -41,8 +41,8 @@ ld-emul = $(64bit-emul)
|
||||
cflags-y += -mabi=lp64s
|
||||
endif
|
||||
|
||||
cflags-y += -G0 -pipe -msoft-float
|
||||
LDFLAGS_vmlinux += -G0 -static -n -nostdlib
|
||||
cflags-y += -pipe -msoft-float
|
||||
LDFLAGS_vmlinux += -static -n -nostdlib
|
||||
|
||||
# When the assembler supports explicit relocation hint, we must use it.
|
||||
# GCC may have -mexplicit-relocs off by default if it was built with an old
|
||||
@@ -51,13 +51,18 @@ LDFLAGS_vmlinux += -G0 -static -n -nostdlib
|
||||
# When the assembler does not supports explicit relocation hint, we can't use
|
||||
# it. Disable it if the compiler supports it.
|
||||
#
|
||||
# If you've seen "unknown reloc hint" message building the kernel and you are
|
||||
# now wondering why "-mexplicit-relocs" is not wrapped with cc-option: the
|
||||
# combination of a "new" assembler and "old" compiler is not supported. Either
|
||||
# upgrade the compiler or downgrade the assembler.
|
||||
# The combination of a "new" assembler and "old" GCC is not supported, given
|
||||
# the rarity of this combo and the extra complexity needed to make it work.
|
||||
# Either upgrade the compiler or downgrade the assembler; the build will error
|
||||
# out if it is the case (by probing for the model attribute; all supported
|
||||
# compilers in this case would have support).
|
||||
#
|
||||
# Also, -mdirect-extern-access is useful in case of building with explicit
|
||||
# relocs, for avoiding unnecessary GOT accesses. It is harmless to not have
|
||||
# support though.
|
||||
ifdef CONFIG_AS_HAS_EXPLICIT_RELOCS
|
||||
cflags-y += -mexplicit-relocs
|
||||
KBUILD_CFLAGS_KERNEL += -mdirect-extern-access
|
||||
cflags-y += $(call cc-option,-mexplicit-relocs)
|
||||
KBUILD_CFLAGS_KERNEL += $(call cc-option,-mdirect-extern-access)
|
||||
else
|
||||
cflags-y += $(call cc-option,-mno-explicit-relocs)
|
||||
KBUILD_AFLAGS_KERNEL += -Wa,-mla-global-with-pcrel
|
||||
|
||||
@@ -29,6 +29,16 @@ static inline int prepare_hugepage_range(struct file *file,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define __HAVE_ARCH_HUGE_PTE_CLEAR
|
||||
static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
|
||||
pte_t *ptep, unsigned long sz)
|
||||
{
|
||||
pte_t clear;
|
||||
|
||||
pte_val(clear) = (unsigned long)invalid_pte_table;
|
||||
set_pte_at(mm, addr, ptep, clear);
|
||||
}
|
||||
|
||||
#define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
|
||||
static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
|
||||
unsigned long addr, pte_t *ptep)
|
||||
|
||||
@@ -102,10 +102,7 @@ static inline int pfn_valid(unsigned long pfn)
|
||||
extern int __virt_addr_valid(volatile void *kaddr);
|
||||
#define virt_addr_valid(kaddr) __virt_addr_valid((volatile void *)(kaddr))
|
||||
|
||||
#define VM_DATA_DEFAULT_FLAGS \
|
||||
(VM_READ | VM_WRITE | \
|
||||
((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0) | \
|
||||
VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
|
||||
#define VM_DATA_DEFAULT_FLAGS VM_DATA_FLAGS_TSK_EXEC
|
||||
|
||||
#include <asm-generic/memory_model.h>
|
||||
#include <asm-generic/getorder.h>
|
||||
|
||||
@@ -14,7 +14,11 @@
|
||||
* loaded. Tell the compiler this fact when using explicit relocs.
|
||||
*/
|
||||
#if defined(MODULE) && defined(CONFIG_AS_HAS_EXPLICIT_RELOCS)
|
||||
#define PER_CPU_ATTRIBUTES __attribute__((model("extreme")))
|
||||
# if __has_attribute(model)
|
||||
# define PER_CPU_ATTRIBUTES __attribute__((model("extreme")))
|
||||
# else
|
||||
# error compiler support for the model attribute is necessary when a recent assembler is used
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Use r21 for fast access */
|
||||
|
||||
@@ -279,7 +279,7 @@ void setup_tlb_handler(int cpu)
|
||||
/* Avoid lockdep warning */
|
||||
rcu_cpu_starting(cpu);
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
#if defined(CONFIG_NUMA) && !defined(CONFIG_PREEMPT_RT)
|
||||
vec_sz = sizeof(exception_handlers);
|
||||
|
||||
if (pcpu_handlers[cpu])
|
||||
|
||||
@@ -179,7 +179,7 @@ static void __build_epilogue(struct jit_ctx *ctx, bool is_tail_call)
|
||||
|
||||
if (!is_tail_call) {
|
||||
/* Set return value */
|
||||
move_reg(ctx, LOONGARCH_GPR_A0, regmap[BPF_REG_0]);
|
||||
emit_insn(ctx, addiw, LOONGARCH_GPR_A0, regmap[BPF_REG_0], 0);
|
||||
/* Return to the caller */
|
||||
emit_insn(ctx, jirl, LOONGARCH_GPR_RA, LOONGARCH_GPR_ZERO, 0);
|
||||
} else {
|
||||
|
||||
@@ -23,7 +23,7 @@ endif
|
||||
cflags-vdso := $(ccflags-vdso) \
|
||||
-isystem $(shell $(CC) -print-file-name=include) \
|
||||
$(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \
|
||||
-O2 -g -fno-strict-aliasing -fno-common -fno-builtin -G0 \
|
||||
-std=gnu11 -O2 -g -fno-strict-aliasing -fno-common -fno-builtin \
|
||||
-fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \
|
||||
$(call cc-option, -fno-asynchronous-unwind-tables) \
|
||||
$(call cc-option, -fno-stack-protector)
|
||||
|
||||
@@ -93,7 +93,7 @@ static struct platform_device mcf_uart = {
|
||||
.dev.platform_data = mcf_uart_platform_data,
|
||||
};
|
||||
|
||||
#if IS_ENABLED(CONFIG_FEC)
|
||||
#ifdef MCFFEC_BASE0
|
||||
|
||||
#ifdef CONFIG_M5441x
|
||||
#define FEC_NAME "enet-fec"
|
||||
@@ -145,6 +145,7 @@ static struct platform_device mcf_fec0 = {
|
||||
.platform_data = FEC_PDATA,
|
||||
}
|
||||
};
|
||||
#endif /* MCFFEC_BASE0 */
|
||||
|
||||
#ifdef MCFFEC_BASE1
|
||||
static struct resource mcf_fec1_resources[] = {
|
||||
@@ -182,7 +183,6 @@ static struct platform_device mcf_fec1 = {
|
||||
}
|
||||
};
|
||||
#endif /* MCFFEC_BASE1 */
|
||||
#endif /* CONFIG_FEC */
|
||||
|
||||
#if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI)
|
||||
/*
|
||||
@@ -624,12 +624,12 @@ static struct platform_device mcf_flexcan0 = {
|
||||
|
||||
static struct platform_device *mcf_devices[] __initdata = {
|
||||
&mcf_uart,
|
||||
#if IS_ENABLED(CONFIG_FEC)
|
||||
#ifdef MCFFEC_BASE0
|
||||
&mcf_fec0,
|
||||
#endif
|
||||
#ifdef MCFFEC_BASE1
|
||||
&mcf_fec1,
|
||||
#endif
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI)
|
||||
&mcf_qspi,
|
||||
#endif
|
||||
|
||||
@@ -144,7 +144,7 @@ static inline void gpio_free(unsigned gpio)
|
||||
* read-modify-write as well as those controlled by the EPORT and GPIO modules.
|
||||
*/
|
||||
#define MCFGPIO_SCR_START 40
|
||||
#elif defined(CONFIGM5441x)
|
||||
#elif defined(CONFIG_M5441x)
|
||||
/* The m5441x EPORT doesn't have its own GPIO port, uses PORT C */
|
||||
#define MCFGPIO_SCR_START 0
|
||||
#else
|
||||
|
||||
@@ -93,8 +93,8 @@ struct pcc_regs {
|
||||
#define M147_SCC_B_ADDR 0xfffe3000
|
||||
#define M147_SCC_PCLK 5000000
|
||||
|
||||
#define MVME147_IRQ_SCSI_PORT (IRQ_USER+0x45)
|
||||
#define MVME147_IRQ_SCSI_DMA (IRQ_USER+0x46)
|
||||
#define MVME147_IRQ_SCSI_PORT (IRQ_USER + 5)
|
||||
#define MVME147_IRQ_SCSI_DMA (IRQ_USER + 6)
|
||||
|
||||
/* SCC interrupts, for MVME147 */
|
||||
|
||||
|
||||
@@ -12,8 +12,9 @@
|
||||
#include <linux/string.h>
|
||||
#include <asm/setup.h>
|
||||
|
||||
extern void mvme16x_cons_write(struct console *co,
|
||||
const char *str, unsigned count);
|
||||
|
||||
#include "../mvme147/mvme147.h"
|
||||
#include "../mvme16x/mvme16x.h"
|
||||
|
||||
asmlinkage void __init debug_cons_nputs(const char *s, unsigned n);
|
||||
|
||||
@@ -22,7 +23,9 @@ static void __ref debug_cons_write(struct console *c,
|
||||
{
|
||||
#if !(defined(CONFIG_SUN3) || defined(CONFIG_M68000) || \
|
||||
defined(CONFIG_COLDFIRE))
|
||||
if (MACH_IS_MVME16x)
|
||||
if (MACH_IS_MVME147)
|
||||
mvme147_scc_write(c, s, n);
|
||||
else if (MACH_IS_MVME16x)
|
||||
mvme16x_cons_write(c, s, n);
|
||||
else
|
||||
debug_cons_nputs(s, n);
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include <asm/mvme147hw.h>
|
||||
#include <asm/config.h>
|
||||
|
||||
#include "mvme147.h"
|
||||
|
||||
static void mvme147_get_model(char *model);
|
||||
extern void mvme147_sched_init(void);
|
||||
@@ -188,3 +189,32 @@ int mvme147_hwclk(int op, struct rtc_time *t)
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void scc_delay(void)
|
||||
{
|
||||
__asm__ __volatile__ ("nop; nop;");
|
||||
}
|
||||
|
||||
static void scc_write(char ch)
|
||||
{
|
||||
do {
|
||||
scc_delay();
|
||||
} while (!(in_8(M147_SCC_A_ADDR) & BIT(2)));
|
||||
scc_delay();
|
||||
out_8(M147_SCC_A_ADDR, 8);
|
||||
scc_delay();
|
||||
out_8(M147_SCC_A_ADDR, ch);
|
||||
}
|
||||
|
||||
void mvme147_scc_write(struct console *co, const char *str, unsigned int count)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
while (count--) {
|
||||
if (*str == '\n')
|
||||
scc_write('\r');
|
||||
scc_write(*str++);
|
||||
}
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
6
arch/m68k/mvme147/mvme147.h
Normal file
6
arch/m68k/mvme147/mvme147.h
Normal file
@@ -0,0 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
struct console;
|
||||
|
||||
/* config.c */
|
||||
void mvme147_scc_write(struct console *co, const char *str, unsigned int count);
|
||||
@@ -38,6 +38,8 @@
|
||||
#include <asm/mvme16xhw.h>
|
||||
#include <asm/config.h>
|
||||
|
||||
#include "mvme16x.h"
|
||||
|
||||
extern t_bdid mvme_bdid;
|
||||
|
||||
static MK48T08ptr_t volatile rtc = (MK48T08ptr_t)MVME_RTC_BASE;
|
||||
|
||||
6
arch/m68k/mvme16x/mvme16x.h
Normal file
6
arch/m68k/mvme16x/mvme16x.h
Normal file
@@ -0,0 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
struct console;
|
||||
|
||||
/* config.c */
|
||||
void mvme16x_cons_write(struct console *co, const char *str, unsigned count);
|
||||
@@ -16,6 +16,7 @@
|
||||
#include <asm/page.h>
|
||||
#include <linux/ftrace.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <asm/xilinx_mb_manager.h>
|
||||
|
||||
#ifdef CONFIG_FUNCTION_TRACER
|
||||
extern void _mcount(void);
|
||||
@@ -46,3 +47,12 @@ extern void __udivsi3(void);
|
||||
EXPORT_SYMBOL(__udivsi3);
|
||||
extern void __umodsi3(void);
|
||||
EXPORT_SYMBOL(__umodsi3);
|
||||
|
||||
#ifdef CONFIG_MB_MANAGER
|
||||
extern void xmb_manager_register(uintptr_t phys_baseaddr, u32 cr_val,
|
||||
void (*callback)(void *data),
|
||||
void *priv, void (*reset_callback)(void *data));
|
||||
EXPORT_SYMBOL(xmb_manager_register);
|
||||
extern asmlinkage void xmb_inject_err(void);
|
||||
EXPORT_SYMBOL(xmb_inject_err);
|
||||
#endif
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
device_type = "pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <2>;
|
||||
msi-parent = <&msi>;
|
||||
|
||||
reg = <0 0x1a000000 0 0x02000000>,
|
||||
@@ -227,7 +226,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
pci_bridge@9,0 {
|
||||
pcie@9,0 {
|
||||
compatible = "pci0014,7a19.1",
|
||||
"pci0014,7a19",
|
||||
"pciclass060400",
|
||||
@@ -237,12 +236,16 @@
|
||||
interrupts = <32 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&pic>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &pic 32 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
};
|
||||
|
||||
pci_bridge@a,0 {
|
||||
pcie@a,0 {
|
||||
compatible = "pci0014,7a09.1",
|
||||
"pci0014,7a09",
|
||||
"pciclass060400",
|
||||
@@ -252,12 +255,16 @@
|
||||
interrupts = <33 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&pic>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &pic 33 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
};
|
||||
|
||||
pci_bridge@b,0 {
|
||||
pcie@b,0 {
|
||||
compatible = "pci0014,7a09.1",
|
||||
"pci0014,7a09",
|
||||
"pciclass060400",
|
||||
@@ -267,12 +274,16 @@
|
||||
interrupts = <34 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&pic>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &pic 34 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
};
|
||||
|
||||
pci_bridge@c,0 {
|
||||
pcie@c,0 {
|
||||
compatible = "pci0014,7a09.1",
|
||||
"pci0014,7a09",
|
||||
"pciclass060400",
|
||||
@@ -282,12 +293,16 @@
|
||||
interrupts = <35 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&pic>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &pic 35 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
};
|
||||
|
||||
pci_bridge@d,0 {
|
||||
pcie@d,0 {
|
||||
compatible = "pci0014,7a19.1",
|
||||
"pci0014,7a19",
|
||||
"pciclass060400",
|
||||
@@ -297,12 +312,16 @@
|
||||
interrupts = <36 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&pic>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &pic 36 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
};
|
||||
|
||||
pci_bridge@e,0 {
|
||||
pcie@e,0 {
|
||||
compatible = "pci0014,7a09.1",
|
||||
"pci0014,7a09",
|
||||
"pciclass060400",
|
||||
@@ -312,12 +331,16 @@
|
||||
interrupts = <37 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&pic>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &pic 37 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
};
|
||||
|
||||
pci_bridge@f,0 {
|
||||
pcie@f,0 {
|
||||
compatible = "pci0014,7a29.1",
|
||||
"pci0014,7a29",
|
||||
"pciclass060400",
|
||||
@@ -327,12 +350,16 @@
|
||||
interrupts = <40 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&pic>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &pic 40 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
};
|
||||
|
||||
pci_bridge@10,0 {
|
||||
pcie@10,0 {
|
||||
compatible = "pci0014,7a19.1",
|
||||
"pci0014,7a19",
|
||||
"pciclass060400",
|
||||
@@ -342,12 +369,16 @@
|
||||
interrupts = <41 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&pic>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &pic 41 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
};
|
||||
|
||||
pci_bridge@11,0 {
|
||||
pcie@11,0 {
|
||||
compatible = "pci0014,7a29.1",
|
||||
"pci0014,7a29",
|
||||
"pciclass060400",
|
||||
@@ -357,12 +388,16 @@
|
||||
interrupts = <42 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&pic>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &pic 42 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
};
|
||||
|
||||
pci_bridge@12,0 {
|
||||
pcie@12,0 {
|
||||
compatible = "pci0014,7a19.1",
|
||||
"pci0014,7a19",
|
||||
"pciclass060400",
|
||||
@@ -372,12 +407,16 @@
|
||||
interrupts = <43 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&pic>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &pic 43 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
};
|
||||
|
||||
pci_bridge@13,0 {
|
||||
pcie@13,0 {
|
||||
compatible = "pci0014,7a29.1",
|
||||
"pci0014,7a29",
|
||||
"pciclass060400",
|
||||
@@ -387,12 +426,16 @@
|
||||
interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&pic>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &pic 38 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
};
|
||||
|
||||
pci_bridge@14,0 {
|
||||
pcie@14,0 {
|
||||
compatible = "pci0014,7a19.1",
|
||||
"pci0014,7a19",
|
||||
"pciclass060400",
|
||||
@@ -402,9 +445,13 @@
|
||||
interrupts = <39 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&pic>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &pic 39 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ do { \
|
||||
} \
|
||||
} while (0)
|
||||
#else
|
||||
# define __sanitize_fcr31(next)
|
||||
# define __sanitize_fcr31(next) do { (void) (next); } while (0)
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
@@ -87,7 +87,7 @@ int ftrace_enable_ftrace_graph_caller(void)
|
||||
|
||||
int ftrace_disable_ftrace_graph_caller(void)
|
||||
{
|
||||
static_key_enable(&ftrace_graph_enable.key);
|
||||
static_key_disable(&ftrace_graph_enable.key);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -253,8 +253,8 @@ config PPC
|
||||
select HAVE_RSEQ
|
||||
select HAVE_SETUP_PER_CPU_AREA if PPC64
|
||||
select HAVE_SOFTIRQ_ON_OWN_STACK
|
||||
select HAVE_STACKPROTECTOR if PPC32 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r2)
|
||||
select HAVE_STACKPROTECTOR if PPC64 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r13)
|
||||
select HAVE_STACKPROTECTOR if PPC32 && $(cc-option,$(m32-flag) -mstack-protector-guard=tls -mstack-protector-guard-reg=r2 -mstack-protector-guard-offset=0)
|
||||
select HAVE_STACKPROTECTOR if PPC64 && $(cc-option,$(m64-flag) -mstack-protector-guard=tls -mstack-protector-guard-reg=r13 -mstack-protector-guard-offset=0)
|
||||
select HAVE_STATIC_CALL if PPC32
|
||||
select HAVE_SYSCALL_TRACEPOINTS
|
||||
select HAVE_VIRT_CPU_ACCOUNTING
|
||||
|
||||
@@ -89,13 +89,6 @@ KBUILD_AFLAGS += -m$(BITS)
|
||||
KBUILD_LDFLAGS += -m elf$(BITS)$(LDEMULATION)
|
||||
endif
|
||||
|
||||
cflags-$(CONFIG_STACKPROTECTOR) += -mstack-protector-guard=tls
|
||||
ifdef CONFIG_PPC64
|
||||
cflags-$(CONFIG_STACKPROTECTOR) += -mstack-protector-guard-reg=r13
|
||||
else
|
||||
cflags-$(CONFIG_STACKPROTECTOR) += -mstack-protector-guard-reg=r2
|
||||
endif
|
||||
|
||||
LDFLAGS_vmlinux-y := -Bstatic
|
||||
LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) := -pie
|
||||
LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) += -z notext
|
||||
@@ -383,9 +376,11 @@ prepare: stack_protector_prepare
|
||||
PHONY += stack_protector_prepare
|
||||
stack_protector_prepare: prepare0
|
||||
ifdef CONFIG_PPC64
|
||||
$(eval KBUILD_CFLAGS += -mstack-protector-guard-offset=$(shell awk '{if ($$2 == "PACA_CANARY") print $$3;}' include/generated/asm-offsets.h))
|
||||
$(eval KBUILD_CFLAGS += -mstack-protector-guard=tls -mstack-protector-guard-reg=r13 \
|
||||
-mstack-protector-guard-offset=$(shell awk '{if ($$2 == "PACA_CANARY") print $$3;}' include/generated/asm-offsets.h))
|
||||
else
|
||||
$(eval KBUILD_CFLAGS += -mstack-protector-guard-offset=$(shell awk '{if ($$2 == "TASK_CANARY") print $$3;}' include/generated/asm-offsets.h))
|
||||
$(eval KBUILD_CFLAGS += -mstack-protector-guard=tls -mstack-protector-guard-reg=r2 \
|
||||
-mstack-protector-guard-offset=$(shell awk '{if ($$2 == "TASK_CANARY") print $$3;}' include/generated/asm-offsets.h))
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
@@ -33,6 +33,10 @@
|
||||
|
||||
#define IFETCH_ALIGN_BYTES (1 << IFETCH_ALIGN_SHIFT)
|
||||
|
||||
#ifdef CONFIG_NOT_COHERENT_CACHE
|
||||
#define ARCH_DMA_MINALIGN L1_CACHE_BYTES
|
||||
#endif
|
||||
|
||||
#if !defined(__ASSEMBLY__)
|
||||
#ifdef CONFIG_PPC64
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#ifndef _ASM_POWERPC_DTL_H
|
||||
#define _ASM_POWERPC_DTL_H
|
||||
|
||||
#include <linux/rwsem.h>
|
||||
#include <asm/lppaca.h>
|
||||
#include <linux/spinlock_types.h>
|
||||
|
||||
/*
|
||||
* Layout of entries in the hypervisor's dispatch trace log buffer.
|
||||
@@ -35,7 +35,7 @@ struct dtl_entry {
|
||||
#define DTL_LOG_ALL (DTL_LOG_CEDE | DTL_LOG_PREEMPT | DTL_LOG_FAULT)
|
||||
|
||||
extern struct kmem_cache *dtl_cache;
|
||||
extern rwlock_t dtl_access_lock;
|
||||
extern struct rw_semaphore dtl_access_lock;
|
||||
|
||||
extern void register_dtl_buffer(int cpu);
|
||||
extern void alloc_dtl_buffers(unsigned long *time_limit);
|
||||
|
||||
@@ -32,4 +32,11 @@ extern int early_init_dt_scan_fw_dump(unsigned long node, const char *uname,
|
||||
int depth, void *data);
|
||||
extern int fadump_reserve_mem(void);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_FA_DUMP) && defined(CONFIG_CMA)
|
||||
void fadump_cma_init(void);
|
||||
#else
|
||||
static inline void fadump_cma_init(void) { }
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_POWERPC_FADUMP_H */
|
||||
|
||||
@@ -12,10 +12,6 @@
|
||||
|
||||
#define VM_DATA_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS32
|
||||
|
||||
#ifdef CONFIG_NOT_COHERENT_CACHE
|
||||
#define ARCH_DMA_MINALIGN L1_CACHE_BYTES
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_PPC_256K_PAGES) || \
|
||||
(defined(CONFIG_PPC_8xx) && defined(CONFIG_PPC_16K_PAGES))
|
||||
#define PTE_SHIFT (PAGE_SHIFT - PTE_T_LOG2 - 2) /* 1/4 of a page */
|
||||
|
||||
@@ -173,9 +173,4 @@ int emulate_step(struct pt_regs *regs, ppc_inst_t instr);
|
||||
*/
|
||||
extern int emulate_loadstore(struct pt_regs *regs, struct instruction_op *op);
|
||||
|
||||
extern void emulate_vsx_load(struct instruction_op *op, union vsx_reg *reg,
|
||||
const void *mem, bool cross_endian);
|
||||
extern void emulate_vsx_store(struct instruction_op *op,
|
||||
const union vsx_reg *reg, void *mem,
|
||||
bool cross_endian);
|
||||
extern int emulate_dcbz(unsigned long ea, struct pt_regs *regs);
|
||||
|
||||
@@ -25,6 +25,7 @@ int vdso_getcpu_init(void);
|
||||
#ifdef __VDSO64__
|
||||
#define V_FUNCTION_BEGIN(name) \
|
||||
.globl name; \
|
||||
.type name,@function; \
|
||||
name: \
|
||||
|
||||
#define V_FUNCTION_END(name) \
|
||||
|
||||
@@ -80,27 +80,23 @@ static struct cma *fadump_cma;
|
||||
* But for some reason even if it fails we still have the memory reservation
|
||||
* with us and we can still continue doing fadump.
|
||||
*/
|
||||
static int __init fadump_cma_init(void)
|
||||
void __init fadump_cma_init(void)
|
||||
{
|
||||
unsigned long long base, size;
|
||||
int rc;
|
||||
|
||||
if (!fw_dump.fadump_enabled)
|
||||
return 0;
|
||||
|
||||
if (!fw_dump.fadump_supported || !fw_dump.fadump_enabled ||
|
||||
fw_dump.dump_active)
|
||||
return;
|
||||
/*
|
||||
* Do not use CMA if user has provided fadump=nocma kernel parameter.
|
||||
* Return 1 to continue with fadump old behaviour.
|
||||
*/
|
||||
if (fw_dump.nocma)
|
||||
return 1;
|
||||
if (fw_dump.nocma || !fw_dump.boot_memory_size)
|
||||
return;
|
||||
|
||||
base = fw_dump.reserve_dump_area_start;
|
||||
size = fw_dump.boot_memory_size;
|
||||
|
||||
if (!size)
|
||||
return 0;
|
||||
|
||||
rc = cma_init_reserved_mem(base, size, 0, "fadump_cma", &fadump_cma);
|
||||
if (rc) {
|
||||
pr_err("Failed to init cma area for firmware-assisted dump,%d\n", rc);
|
||||
@@ -110,7 +106,7 @@ static int __init fadump_cma_init(void)
|
||||
* blocked from production system usage. Hence return 1,
|
||||
* so that we can continue with fadump.
|
||||
*/
|
||||
return 1;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -127,10 +123,7 @@ static int __init fadump_cma_init(void)
|
||||
cma_get_size(fadump_cma),
|
||||
(unsigned long)cma_get_base(fadump_cma) >> 20,
|
||||
fw_dump.reserve_dump_area_size);
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
static int __init fadump_cma_init(void) { return 1; }
|
||||
#endif /* CONFIG_CMA */
|
||||
|
||||
/* Scan the Firmware Assisted dump configuration details. */
|
||||
@@ -647,8 +640,6 @@ int __init fadump_reserve_mem(void)
|
||||
|
||||
pr_info("Reserved %lldMB of memory at %#016llx (System RAM: %lldMB)\n",
|
||||
(size >> 20), base, (memblock_phys_mem_size() >> 20));
|
||||
|
||||
ret = fadump_cma_init();
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
@@ -2924,7 +2924,7 @@ static void __init fixup_device_tree_chrp(void)
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_PPC64) && defined(CONFIG_PPC_PMAC)
|
||||
static void __init fixup_device_tree_pmac(void)
|
||||
static void __init fixup_device_tree_pmac64(void)
|
||||
{
|
||||
phandle u3, i2c, mpic;
|
||||
u32 u3_rev;
|
||||
@@ -2964,7 +2964,31 @@ static void __init fixup_device_tree_pmac(void)
|
||||
&parent, sizeof(parent));
|
||||
}
|
||||
#else
|
||||
#define fixup_device_tree_pmac()
|
||||
#define fixup_device_tree_pmac64()
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PPC_PMAC
|
||||
static void __init fixup_device_tree_pmac(void)
|
||||
{
|
||||
__be32 val = 1;
|
||||
char type[8];
|
||||
phandle node;
|
||||
|
||||
// Some pmacs are missing #size-cells on escc nodes
|
||||
for (node = 0; prom_next_node(&node); ) {
|
||||
type[0] = '\0';
|
||||
prom_getprop(node, "device_type", type, sizeof(type));
|
||||
if (prom_strcmp(type, "escc"))
|
||||
continue;
|
||||
|
||||
if (prom_getproplen(node, "#size-cells") != PROM_ERROR)
|
||||
continue;
|
||||
|
||||
prom_setprop(node, NULL, "#size-cells", &val, sizeof(val));
|
||||
}
|
||||
}
|
||||
#else
|
||||
static inline void fixup_device_tree_pmac(void) { }
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PPC_EFIKA
|
||||
@@ -3189,6 +3213,7 @@ static void __init fixup_device_tree(void)
|
||||
fixup_device_tree_maple_memory_controller();
|
||||
fixup_device_tree_chrp();
|
||||
fixup_device_tree_pmac();
|
||||
fixup_device_tree_pmac64();
|
||||
fixup_device_tree_efika();
|
||||
fixup_device_tree_pasemi();
|
||||
}
|
||||
|
||||
@@ -982,9 +982,11 @@ void __init setup_arch(char **cmdline_p)
|
||||
initmem_init();
|
||||
|
||||
/*
|
||||
* Reserve large chunks of memory for use by CMA for KVM and hugetlb. These must
|
||||
* be called after initmem_init(), so that pageblock_order is initialised.
|
||||
* Reserve large chunks of memory for use by CMA for fadump, KVM and
|
||||
* hugetlb. These must be called after initmem_init(), so that
|
||||
* pageblock_order is initialised.
|
||||
*/
|
||||
fadump_cma_init();
|
||||
kvm_cma_reserve();
|
||||
gigantic_hugetlb_cma_reserve();
|
||||
|
||||
|
||||
@@ -924,6 +924,7 @@ static int __init disable_hardlockup_detector(void)
|
||||
hardlockup_detector_disable();
|
||||
#else
|
||||
if (firmware_has_feature(FW_FEATURE_LPAR)) {
|
||||
check_kvm_guest();
|
||||
if (is_kvm_guest())
|
||||
hardlockup_detector_disable();
|
||||
}
|
||||
|
||||
@@ -10,23 +10,11 @@ obj-vdso64 = sigtramp64-64.o gettimeofday-64.o datapage-64.o cacheflush-64.o not
|
||||
|
||||
ifneq ($(c-gettimeofday-y),)
|
||||
CFLAGS_vgettimeofday-32.o += -include $(c-gettimeofday-y)
|
||||
CFLAGS_vgettimeofday-32.o += $(DISABLE_LATENT_ENTROPY_PLUGIN)
|
||||
CFLAGS_vgettimeofday-32.o += $(call cc-option, -fno-stack-protector)
|
||||
CFLAGS_vgettimeofday-32.o += -DDISABLE_BRANCH_PROFILING
|
||||
CFLAGS_vgettimeofday-32.o += -ffreestanding -fasynchronous-unwind-tables
|
||||
CFLAGS_REMOVE_vgettimeofday-32.o = $(CC_FLAGS_FTRACE)
|
||||
CFLAGS_REMOVE_vgettimeofday-32.o += -mcmodel=medium -mabi=elfv1 -mabi=elfv2 -mcall-aixdesc
|
||||
CFLAGS_vgettimeofday-64.o += -include $(c-gettimeofday-y)
|
||||
CFLAGS_vgettimeofday-64.o += $(DISABLE_LATENT_ENTROPY_PLUGIN)
|
||||
CFLAGS_vgettimeofday-64.o += $(call cc-option, -fno-stack-protector)
|
||||
CFLAGS_vgettimeofday-64.o += -DDISABLE_BRANCH_PROFILING
|
||||
CFLAGS_vgettimeofday-64.o += -ffreestanding -fasynchronous-unwind-tables
|
||||
CFLAGS_REMOVE_vgettimeofday-64.o = $(CC_FLAGS_FTRACE)
|
||||
# Go prior to 1.16.x assumes r30 is not clobbered by any VDSO code. That used to be true
|
||||
# by accident when the VDSO was hand-written asm code, but may not be now that the VDSO is
|
||||
# compiler generated. To avoid breaking Go tell GCC not to use r30. Impact on code
|
||||
# generation is minimal, it will just use r29 instead.
|
||||
CFLAGS_vgettimeofday-64.o += $(call cc-option, -ffixed-r30)
|
||||
CFLAGS_vgettimeofday-64.o += -include $(c-gettimeofday-y) $(call cc-option, -ffixed-r30)
|
||||
endif
|
||||
|
||||
# Build rules
|
||||
@@ -47,14 +35,33 @@ KCOV_INSTRUMENT := n
|
||||
UBSAN_SANITIZE := n
|
||||
KASAN_SANITIZE := n
|
||||
|
||||
ccflags-y := -shared -fno-common -fno-builtin -nostdlib -Wl,--hash-style=both
|
||||
ccflags-$(CONFIG_LD_IS_LLD) += $(call cc-option,--ld-path=$(LD),-fuse-ld=lld)
|
||||
ccflags-y := -fno-common -fno-builtin
|
||||
ccflags-y += $(DISABLE_LATENT_ENTROPY_PLUGIN)
|
||||
ccflags-y += $(call cc-option, -fno-stack-protector)
|
||||
ccflags-y += -DDISABLE_BRANCH_PROFILING
|
||||
ccflags-y += -ffreestanding -fasynchronous-unwind-tables
|
||||
ccflags-remove-y := $(CC_FLAGS_FTRACE)
|
||||
ldflags-y := -Wl,--hash-style=both -nostdlib -shared -z noexecstack $(CLANG_FLAGS)
|
||||
ldflags-$(CONFIG_LD_IS_LLD) += $(call cc-option,--ld-path=$(LD),-fuse-ld=lld)
|
||||
# Filter flags that clang will warn are unused for linking
|
||||
ldflags-y += $(filter-out $(CC_FLAGS_FTRACE) -Wa$(comma)%, $(KBUILD_CFLAGS))
|
||||
|
||||
CC32FLAGS := -Wl,-soname=linux-vdso32.so.1 -m32
|
||||
AS32FLAGS := -D__VDSO32__ -s
|
||||
CC32FLAGS := -m32
|
||||
CC32FLAGSREMOVE := -mcmodel=medium -mabi=elfv1 -mabi=elfv2 -mcall-aixdesc
|
||||
ifdef CONFIG_CC_IS_CLANG
|
||||
# This flag is supported by clang for 64-bit but not 32-bit so it will cause
|
||||
# an unused command line flag warning for this file.
|
||||
CC32FLAGSREMOVE += -fno-stack-clash-protection
|
||||
# -mstack-protector-guard values from the 64-bit build are not valid for the
|
||||
# 32-bit one. clang validates the values passed to these arguments during
|
||||
# parsing, even when -fno-stack-protector is passed afterwards.
|
||||
CC32FLAGSREMOVE += -mstack-protector-guard%
|
||||
endif
|
||||
LD32FLAGS := -Wl,-soname=linux-vdso32.so.1
|
||||
AS32FLAGS := -D__VDSO32__
|
||||
|
||||
CC64FLAGS := -Wl,-soname=linux-vdso64.so.1
|
||||
AS64FLAGS := -D__VDSO64__ -s
|
||||
LD64FLAGS := -Wl,-soname=linux-vdso64.so.1
|
||||
AS64FLAGS := -D__VDSO64__
|
||||
|
||||
targets += vdso32.lds
|
||||
CPPFLAGS_vdso32.lds += -P -C -Upowerpc
|
||||
@@ -92,13 +99,15 @@ include/generated/vdso64-offsets.h: $(obj)/vdso64.so.dbg FORCE
|
||||
|
||||
# actual build commands
|
||||
quiet_cmd_vdso32ld_and_check = VDSO32L $@
|
||||
cmd_vdso32ld_and_check = $(VDSOCC) $(c_flags) $(CC32FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^) -z noexecstack ; $(cmd_vdso_check)
|
||||
cmd_vdso32ld_and_check = $(VDSOCC) $(ldflags-y) $(CC32FLAGS) $(LD32FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^); $(cmd_vdso_check)
|
||||
quiet_cmd_vdso32as = VDSO32A $@
|
||||
cmd_vdso32as = $(VDSOCC) $(a_flags) $(CC32FLAGS) $(AS32FLAGS) -c -o $@ $<
|
||||
quiet_cmd_vdso32cc = VDSO32C $@
|
||||
cmd_vdso32cc = $(VDSOCC) $(c_flags) $(CC32FLAGS) -c -o $@ $<
|
||||
cmd_vdso32cc = $(VDSOCC) $(filter-out $(CC32FLAGSREMOVE), $(c_flags)) $(CC32FLAGS) -c -o $@ $<
|
||||
|
||||
quiet_cmd_vdso64ld_and_check = VDSO64L $@
|
||||
cmd_vdso64ld_and_check = $(VDSOCC) $(c_flags) $(CC64FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^) -z noexecstack ; $(cmd_vdso_check)
|
||||
cmd_vdso64ld_and_check = $(VDSOCC) $(ldflags-y) $(LD64FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^); $(cmd_vdso_check)
|
||||
quiet_cmd_vdso64as = VDSO64A $@
|
||||
cmd_vdso64as = $(VDSOCC) $(a_flags) $(CC64FLAGS) $(AS64FLAGS) -c -o $@ $<
|
||||
cmd_vdso64as = $(VDSOCC) $(a_flags) $(AS64FLAGS) -c -o $@ $<
|
||||
|
||||
OBJECT_FILES_NON_STANDARD := y
|
||||
|
||||
@@ -911,13 +911,18 @@ int setup_purgatory_ppc64(struct kimage *image, const void *slave_code,
|
||||
if (dn) {
|
||||
u64 val;
|
||||
|
||||
of_property_read_u64(dn, "opal-base-address", &val);
|
||||
ret = of_property_read_u64(dn, "opal-base-address", &val);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = kexec_purgatory_get_set_symbol(image, "opal_base", &val,
|
||||
sizeof(val), false);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
of_property_read_u64(dn, "opal-entry-address", &val);
|
||||
ret = of_property_read_u64(dn, "opal-entry-address", &val);
|
||||
if (ret)
|
||||
goto out;
|
||||
ret = kexec_purgatory_get_set_symbol(image, "opal_entry", &val,
|
||||
sizeof(val), false);
|
||||
}
|
||||
|
||||
@@ -4062,6 +4062,15 @@ static int kvmhv_vcpu_entry_p9_nested(struct kvm_vcpu *vcpu, u64 time_limit, uns
|
||||
}
|
||||
hvregs.hdec_expiry = time_limit;
|
||||
|
||||
/*
|
||||
* hvregs has the doorbell status, so zero it here which
|
||||
* enables us to receive doorbells when H_ENTER_NESTED is
|
||||
* in progress for this vCPU
|
||||
*/
|
||||
|
||||
if (vcpu->arch.doorbell_request)
|
||||
vcpu->arch.doorbell_request = 0;
|
||||
|
||||
/*
|
||||
* When setting DEC, we must always deal with irq_work_raise
|
||||
* via NMI vs setting DEC. The problem occurs right as we
|
||||
@@ -4644,7 +4653,6 @@ int kvmhv_run_single_vcpu(struct kvm_vcpu *vcpu, u64 time_limit,
|
||||
lpcr |= LPCR_MER;
|
||||
}
|
||||
} else if (vcpu->arch.pending_exceptions ||
|
||||
vcpu->arch.doorbell_request ||
|
||||
xive_interrupt_pending(vcpu)) {
|
||||
vcpu->arch.ret = RESUME_HOST;
|
||||
goto out;
|
||||
|
||||
@@ -32,7 +32,7 @@ void kvmhv_save_hv_regs(struct kvm_vcpu *vcpu, struct hv_guest_state *hr)
|
||||
struct kvmppc_vcore *vc = vcpu->arch.vcore;
|
||||
|
||||
hr->pcr = vc->pcr | PCR_MASK;
|
||||
hr->dpdes = vc->dpdes;
|
||||
hr->dpdes = vcpu->arch.doorbell_request;
|
||||
hr->hfscr = vcpu->arch.hfscr;
|
||||
hr->tb_offset = vc->tb_offset;
|
||||
hr->dawr0 = vcpu->arch.dawr0;
|
||||
@@ -105,7 +105,7 @@ static void save_hv_return_state(struct kvm_vcpu *vcpu,
|
||||
{
|
||||
struct kvmppc_vcore *vc = vcpu->arch.vcore;
|
||||
|
||||
hr->dpdes = vc->dpdes;
|
||||
hr->dpdes = vcpu->arch.doorbell_request;
|
||||
hr->purr = vcpu->arch.purr;
|
||||
hr->spurr = vcpu->arch.spurr;
|
||||
hr->ic = vcpu->arch.ic;
|
||||
@@ -143,7 +143,7 @@ static void restore_hv_regs(struct kvm_vcpu *vcpu, const struct hv_guest_state *
|
||||
struct kvmppc_vcore *vc = vcpu->arch.vcore;
|
||||
|
||||
vc->pcr = hr->pcr | PCR_MASK;
|
||||
vc->dpdes = hr->dpdes;
|
||||
vcpu->arch.doorbell_request = hr->dpdes;
|
||||
vcpu->arch.hfscr = hr->hfscr;
|
||||
vcpu->arch.dawr0 = hr->dawr0;
|
||||
vcpu->arch.dawrx0 = hr->dawrx0;
|
||||
@@ -170,7 +170,13 @@ void kvmhv_restore_hv_return_state(struct kvm_vcpu *vcpu,
|
||||
{
|
||||
struct kvmppc_vcore *vc = vcpu->arch.vcore;
|
||||
|
||||
vc->dpdes = hr->dpdes;
|
||||
/*
|
||||
* This L2 vCPU might have received a doorbell while H_ENTER_NESTED was being handled.
|
||||
* Make sure we preserve the doorbell if it was either:
|
||||
* a) Sent after H_ENTER_NESTED was called on this vCPU (arch.doorbell_request would be 1)
|
||||
* b) Doorbell was not handled and L2 exited for some other reason (hr->dpdes would be 1)
|
||||
*/
|
||||
vcpu->arch.doorbell_request = vcpu->arch.doorbell_request | hr->dpdes;
|
||||
vcpu->arch.hfscr = hr->hfscr;
|
||||
vcpu->arch.purr = hr->purr;
|
||||
vcpu->arch.spurr = hr->spurr;
|
||||
|
||||
@@ -780,8 +780,8 @@ static nokprobe_inline int emulate_stq(struct pt_regs *regs, unsigned long ea,
|
||||
#endif /* __powerpc64 */
|
||||
|
||||
#ifdef CONFIG_VSX
|
||||
void emulate_vsx_load(struct instruction_op *op, union vsx_reg *reg,
|
||||
const void *mem, bool rev)
|
||||
static nokprobe_inline void emulate_vsx_load(struct instruction_op *op, union vsx_reg *reg,
|
||||
const void *mem, bool rev)
|
||||
{
|
||||
int size, read_size;
|
||||
int i, j;
|
||||
@@ -863,11 +863,9 @@ void emulate_vsx_load(struct instruction_op *op, union vsx_reg *reg,
|
||||
break;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(emulate_vsx_load);
|
||||
NOKPROBE_SYMBOL(emulate_vsx_load);
|
||||
|
||||
void emulate_vsx_store(struct instruction_op *op, const union vsx_reg *reg,
|
||||
void *mem, bool rev)
|
||||
static nokprobe_inline void emulate_vsx_store(struct instruction_op *op, const union vsx_reg *reg,
|
||||
void *mem, bool rev)
|
||||
{
|
||||
int size, write_size;
|
||||
int i, j;
|
||||
@@ -955,8 +953,6 @@ void emulate_vsx_store(struct instruction_op *op, const union vsx_reg *reg,
|
||||
break;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(emulate_vsx_store);
|
||||
NOKPROBE_SYMBOL(emulate_vsx_store);
|
||||
|
||||
static nokprobe_inline int do_vsx_load(struct instruction_op *op,
|
||||
unsigned long ea, struct pt_regs *regs,
|
||||
|
||||
@@ -431,10 +431,16 @@ static int ___do_page_fault(struct pt_regs *regs, unsigned long address,
|
||||
/*
|
||||
* The kernel should never take an execute fault nor should it
|
||||
* take a page fault to a kernel address or a page fault to a user
|
||||
* address outside of dedicated places
|
||||
* address outside of dedicated places.
|
||||
*
|
||||
* Rather than kfence directly reporting false negatives, search whether
|
||||
* the NIP belongs to the fixup table for cases where fault could come
|
||||
* from functions like copy_from_kernel_nofault().
|
||||
*/
|
||||
if (unlikely(!is_user && bad_kernel_fault(regs, error_code, address, is_write))) {
|
||||
if (kfence_handle_page_fault(address, is_write, regs))
|
||||
if (is_kfence_address((void *)address) &&
|
||||
!search_exception_tables(instruction_pointer(regs)) &&
|
||||
kfence_handle_page_fault(address, is_write, regs))
|
||||
return 0;
|
||||
|
||||
return SIGSEGV;
|
||||
|
||||
@@ -191,7 +191,7 @@ static int dtl_enable(struct dtl *dtl)
|
||||
return -EBUSY;
|
||||
|
||||
/* ensure there are no other conflicting dtl users */
|
||||
if (!read_trylock(&dtl_access_lock))
|
||||
if (!down_read_trylock(&dtl_access_lock))
|
||||
return -EBUSY;
|
||||
|
||||
n_entries = dtl_buf_entries;
|
||||
@@ -199,7 +199,7 @@ static int dtl_enable(struct dtl *dtl)
|
||||
if (!buf) {
|
||||
printk(KERN_WARNING "%s: buffer alloc failed for cpu %d\n",
|
||||
__func__, dtl->cpu);
|
||||
read_unlock(&dtl_access_lock);
|
||||
up_read(&dtl_access_lock);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@@ -217,7 +217,7 @@ static int dtl_enable(struct dtl *dtl)
|
||||
spin_unlock(&dtl->lock);
|
||||
|
||||
if (rc) {
|
||||
read_unlock(&dtl_access_lock);
|
||||
up_read(&dtl_access_lock);
|
||||
kmem_cache_free(dtl_cache, buf);
|
||||
}
|
||||
|
||||
@@ -232,7 +232,7 @@ static void dtl_disable(struct dtl *dtl)
|
||||
dtl->buf = NULL;
|
||||
dtl->buf_entries = 0;
|
||||
spin_unlock(&dtl->lock);
|
||||
read_unlock(&dtl_access_lock);
|
||||
up_read(&dtl_access_lock);
|
||||
}
|
||||
|
||||
/* file interface */
|
||||
|
||||
@@ -167,7 +167,7 @@ struct vcpu_dispatch_data {
|
||||
*/
|
||||
#define NR_CPUS_H NR_CPUS
|
||||
|
||||
DEFINE_RWLOCK(dtl_access_lock);
|
||||
DECLARE_RWSEM(dtl_access_lock);
|
||||
static DEFINE_PER_CPU(struct vcpu_dispatch_data, vcpu_disp_data);
|
||||
static DEFINE_PER_CPU(u64, dtl_entry_ridx);
|
||||
static DEFINE_PER_CPU(struct dtl_worker, dtl_workers);
|
||||
@@ -461,7 +461,7 @@ static int dtl_worker_enable(unsigned long *time_limit)
|
||||
{
|
||||
int rc = 0, state;
|
||||
|
||||
if (!write_trylock(&dtl_access_lock)) {
|
||||
if (!down_write_trylock(&dtl_access_lock)) {
|
||||
rc = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
@@ -477,7 +477,7 @@ static int dtl_worker_enable(unsigned long *time_limit)
|
||||
pr_err("vcpudispatch_stats: unable to setup workqueue for DTL processing\n");
|
||||
free_dtl_buffers(time_limit);
|
||||
reset_global_dtl_mask();
|
||||
write_unlock(&dtl_access_lock);
|
||||
up_write(&dtl_access_lock);
|
||||
rc = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
@@ -492,7 +492,7 @@ static void dtl_worker_disable(unsigned long *time_limit)
|
||||
cpuhp_remove_state(dtl_worker_state);
|
||||
free_dtl_buffers(time_limit);
|
||||
reset_global_dtl_mask();
|
||||
write_unlock(&dtl_access_lock);
|
||||
up_write(&dtl_access_lock);
|
||||
}
|
||||
|
||||
static ssize_t vcpudispatch_stats_write(struct file *file, const char __user *p,
|
||||
|
||||
@@ -484,9 +484,13 @@ ENTRY(\name)
|
||||
ENDPROC(\name)
|
||||
.endm
|
||||
|
||||
.section .irqentry.text, "ax"
|
||||
|
||||
INT_HANDLER ext_int_handler,__LC_EXT_OLD_PSW,do_ext_irq
|
||||
INT_HANDLER io_int_handler,__LC_IO_OLD_PSW,do_io_irq
|
||||
|
||||
.section .kprobes.text, "ax"
|
||||
|
||||
/*
|
||||
* Load idle PSW.
|
||||
*/
|
||||
|
||||
@@ -549,6 +549,12 @@ int __init arch_init_kprobes(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int __init arch_populate_kprobe_blacklist(void)
|
||||
{
|
||||
return kprobe_add_area_blacklist((unsigned long)__irqentry_text_start,
|
||||
(unsigned long)__irqentry_text_end);
|
||||
}
|
||||
|
||||
int arch_trampoline_kprobe(struct kprobe *p)
|
||||
{
|
||||
return 0;
|
||||
|
||||
@@ -1896,7 +1896,9 @@ static void cpumsf_pmu_stop(struct perf_event *event, int flags)
|
||||
event->hw.state |= PERF_HES_STOPPED;
|
||||
|
||||
if ((flags & PERF_EF_UPDATE) && !(event->hw.state & PERF_HES_UPTODATE)) {
|
||||
hw_perf_event_update(event, 1);
|
||||
/* CPU hotplug off removes SDBs. No samples to extract. */
|
||||
if (cpuhw->flags & PMU_F_RESERVED)
|
||||
hw_perf_event_update(event, 1);
|
||||
event->hw.state |= PERF_HES_UPTODATE;
|
||||
}
|
||||
perf_pmu_enable(event->pmu);
|
||||
|
||||
@@ -12,7 +12,7 @@ kapi-hdrs-y := $(kapi)/unistd_nr.h
|
||||
uapi-hdrs-y := $(uapi)/unistd_32.h
|
||||
uapi-hdrs-y += $(uapi)/unistd_64.h
|
||||
|
||||
targets += $(addprefix ../../../,$(gen-y) $(kapi-hdrs-y) $(uapi-hdrs-y))
|
||||
targets += $(addprefix ../../../../,$(gen-y) $(kapi-hdrs-y) $(uapi-hdrs-y))
|
||||
|
||||
PHONY += kapi uapi
|
||||
|
||||
|
||||
@@ -132,7 +132,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
|
||||
|
||||
static void *c_start(struct seq_file *m, loff_t *pos)
|
||||
{
|
||||
return *pos < NR_CPUS ? cpu_data + *pos : NULL;
|
||||
return *pos < nr_cpu_ids ? cpu_data + *pos : NULL;
|
||||
}
|
||||
static void *c_next(struct seq_file *m, void *v, loff_t *pos)
|
||||
{
|
||||
|
||||
@@ -336,7 +336,7 @@ static struct platform_driver uml_net_driver = {
|
||||
|
||||
static void net_device_release(struct device *dev)
|
||||
{
|
||||
struct uml_net *device = dev_get_drvdata(dev);
|
||||
struct uml_net *device = container_of(dev, struct uml_net, pdev.dev);
|
||||
struct net_device *netdev = device->dev;
|
||||
struct uml_net_private *lp = netdev_priv(netdev);
|
||||
|
||||
|
||||
@@ -799,7 +799,7 @@ static int ubd_open_dev(struct ubd *ubd_dev)
|
||||
|
||||
static void ubd_device_release(struct device *dev)
|
||||
{
|
||||
struct ubd *ubd_dev = dev_get_drvdata(dev);
|
||||
struct ubd *ubd_dev = container_of(dev, struct ubd, pdev.dev);
|
||||
|
||||
blk_mq_free_tag_set(&ubd_dev->tag_set);
|
||||
*ubd_dev = ((struct ubd) DEFAULT_UBD);
|
||||
|
||||
@@ -823,7 +823,8 @@ static struct platform_driver uml_net_driver = {
|
||||
|
||||
static void vector_device_release(struct device *dev)
|
||||
{
|
||||
struct vector_device *device = dev_get_drvdata(dev);
|
||||
struct vector_device *device =
|
||||
container_of(dev, struct vector_device, pdev.dev);
|
||||
struct net_device *netdev = device->dev;
|
||||
|
||||
list_del(&device->list);
|
||||
|
||||
@@ -80,10 +80,10 @@ void __init setup_physmem(unsigned long start, unsigned long reserve_end,
|
||||
unsigned long len, unsigned long long highmem)
|
||||
{
|
||||
unsigned long reserve = reserve_end - start;
|
||||
long map_size = len - reserve;
|
||||
unsigned long map_size = len - reserve;
|
||||
int err;
|
||||
|
||||
if(map_size <= 0) {
|
||||
if (len <= reserve) {
|
||||
os_warn("Too few physical memory! Needed=%lu, given=%lu\n",
|
||||
reserve, len);
|
||||
exit(1);
|
||||
@@ -94,7 +94,7 @@ void __init setup_physmem(unsigned long start, unsigned long reserve_end,
|
||||
err = os_map_memory((void *) reserve_end, physmem_fd, reserve,
|
||||
map_size, 1, 1, 1);
|
||||
if (err < 0) {
|
||||
os_warn("setup_physmem - mapping %ld bytes of memory at 0x%p "
|
||||
os_warn("setup_physmem - mapping %lu bytes of memory at 0x%p "
|
||||
"failed - errno = %d\n", map_size,
|
||||
(void *) reserve_end, err);
|
||||
exit(1);
|
||||
|
||||
@@ -397,6 +397,6 @@ int elf_core_copy_fpregs(struct task_struct *t, elf_fpregset_t *fpu)
|
||||
{
|
||||
int cpu = current_thread_info()->cpu;
|
||||
|
||||
return save_i387_registers(userspace_pid[cpu], (unsigned long *) fpu);
|
||||
return save_i387_registers(userspace_pid[cpu], (unsigned long *) fpu) == 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -53,5 +53,5 @@ void show_stack(struct task_struct *task, unsigned long *stack,
|
||||
}
|
||||
|
||||
printk("%sCall Trace:\n", loglvl);
|
||||
dump_trace(current, &stackops, (void *)loglvl);
|
||||
dump_trace(task ?: current, &stackops, (void *)loglvl);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
#define T1 %xmm7
|
||||
|
||||
#define STATEP %rdi
|
||||
#define LEN %rsi
|
||||
#define LEN %esi
|
||||
#define SRC %rdx
|
||||
#define DST %rcx
|
||||
|
||||
@@ -76,32 +76,32 @@ SYM_FUNC_START_LOCAL(__load_partial)
|
||||
xor %r9d, %r9d
|
||||
pxor MSG, MSG
|
||||
|
||||
mov LEN, %r8
|
||||
mov LEN, %r8d
|
||||
and $0x1, %r8
|
||||
jz .Lld_partial_1
|
||||
|
||||
mov LEN, %r8
|
||||
mov LEN, %r8d
|
||||
and $0x1E, %r8
|
||||
add SRC, %r8
|
||||
mov (%r8), %r9b
|
||||
|
||||
.Lld_partial_1:
|
||||
mov LEN, %r8
|
||||
mov LEN, %r8d
|
||||
and $0x2, %r8
|
||||
jz .Lld_partial_2
|
||||
|
||||
mov LEN, %r8
|
||||
mov LEN, %r8d
|
||||
and $0x1C, %r8
|
||||
add SRC, %r8
|
||||
shl $0x10, %r9
|
||||
mov (%r8), %r9w
|
||||
|
||||
.Lld_partial_2:
|
||||
mov LEN, %r8
|
||||
mov LEN, %r8d
|
||||
and $0x4, %r8
|
||||
jz .Lld_partial_4
|
||||
|
||||
mov LEN, %r8
|
||||
mov LEN, %r8d
|
||||
and $0x18, %r8
|
||||
add SRC, %r8
|
||||
shl $32, %r9
|
||||
@@ -111,11 +111,11 @@ SYM_FUNC_START_LOCAL(__load_partial)
|
||||
.Lld_partial_4:
|
||||
movq %r9, MSG
|
||||
|
||||
mov LEN, %r8
|
||||
mov LEN, %r8d
|
||||
and $0x8, %r8
|
||||
jz .Lld_partial_8
|
||||
|
||||
mov LEN, %r8
|
||||
mov LEN, %r8d
|
||||
and $0x10, %r8
|
||||
add SRC, %r8
|
||||
pslldq $8, MSG
|
||||
@@ -139,7 +139,7 @@ SYM_FUNC_END(__load_partial)
|
||||
* %r10
|
||||
*/
|
||||
SYM_FUNC_START_LOCAL(__store_partial)
|
||||
mov LEN, %r8
|
||||
mov LEN, %r8d
|
||||
mov DST, %r9
|
||||
|
||||
movq T0, %r10
|
||||
@@ -677,7 +677,7 @@ SYM_TYPED_FUNC_START(crypto_aegis128_aesni_dec_tail)
|
||||
call __store_partial
|
||||
|
||||
/* mask with byte count: */
|
||||
movq LEN, T0
|
||||
movd LEN, T0
|
||||
punpcklbw T0, T0
|
||||
punpcklbw T0, T0
|
||||
punpcklbw T0, T0
|
||||
@@ -702,7 +702,8 @@ SYM_FUNC_END(crypto_aegis128_aesni_dec_tail)
|
||||
|
||||
/*
|
||||
* void crypto_aegis128_aesni_final(void *state, void *tag_xor,
|
||||
* u64 assoclen, u64 cryptlen);
|
||||
* unsigned int assoclen,
|
||||
* unsigned int cryptlen);
|
||||
*/
|
||||
SYM_FUNC_START(crypto_aegis128_aesni_final)
|
||||
FRAME_BEGIN
|
||||
@@ -715,8 +716,8 @@ SYM_FUNC_START(crypto_aegis128_aesni_final)
|
||||
movdqu 0x40(STATEP), STATE4
|
||||
|
||||
/* prepare length block: */
|
||||
movq %rdx, MSG
|
||||
movq %rcx, T0
|
||||
movd %edx, MSG
|
||||
movd %ecx, T0
|
||||
pslldq $8, T0
|
||||
pxor T0, MSG
|
||||
psllq $3, MSG /* multiply by 8 (to get bit count) */
|
||||
|
||||
@@ -881,11 +881,12 @@ static int amd_pmu_handle_irq(struct pt_regs *regs)
|
||||
static int amd_pmu_v2_handle_irq(struct pt_regs *regs)
|
||||
{
|
||||
struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);
|
||||
static atomic64_t status_warned = ATOMIC64_INIT(0);
|
||||
u64 reserved, status, mask, new_bits, prev_bits;
|
||||
struct perf_sample_data data;
|
||||
struct hw_perf_event *hwc;
|
||||
struct perf_event *event;
|
||||
int handled = 0, idx;
|
||||
u64 reserved, status, mask;
|
||||
bool pmu_enabled;
|
||||
|
||||
/*
|
||||
@@ -952,7 +953,12 @@ static int amd_pmu_v2_handle_irq(struct pt_regs *regs)
|
||||
* the corresponding PMCs are expected to be inactive according to the
|
||||
* active_mask
|
||||
*/
|
||||
WARN_ON(status > 0);
|
||||
if (status > 0) {
|
||||
prev_bits = atomic64_fetch_or(status, &status_warned);
|
||||
// A new bit was set for the very first time.
|
||||
new_bits = status & ~prev_bits;
|
||||
WARN(new_bits, "New overflows for inactive PMCs: %llx\n", new_bits);
|
||||
}
|
||||
|
||||
/* Clear overflow and freeze bits */
|
||||
amd_pmu_ack_global_status(~status);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user