Merge keystone/android14-6.1-keystone-qcom-release.6.1.25 (98d56a5
) into qcom-6.1
* refs/heads/tmp-98d56a5: FROMLIST: ANDROID: GKI: psi: remove 500ms min window size limitation for triggers ANDROID: uid_sys_stat: split the global lock uid_lock to the fine-grained locks for each hlist in hash_table. ANDROID: uid_sys_stats: defer process_notifier work if uid_lock is contended ANDROID: Add symbols for pkvm module support ANDROID: abi_gki_aarch64_qcom: Add dma_resv iterator symbols ANDROID: Unnest MAKE_GOALS from build configs ANDROID: iommu/dma: Add support for DMA_ATTR_SYS_CACHE_NWA ANDROID: iommu/dma: Add support for DMA_ATTR_SYS_CACHE ANDROID: iommu/io-pgtable-arm: Add IOMMU_SYS_CACHE/_NWA ANDROID: Enable CONFIG_ZONE_DEVICE ANDROID: abi_gki_aarch64_qcom: Add sock_gen_put BACKPORT: FROMLIST: Revert "scsi: ufs: core: Initialize devfreq synchronously" FROMLIST: staging: greybus: drop loopback test files UPSTREAM: wifi: cfg80211: Authentication offload to user space for MLO connection in STA mode UPSTREAM: wifi: cfg80211: trace: remove MAC_PR_{FMT,ARG} ANDROID: arm64: Add support for system cache memory type ANDROID: fuse-bpf: Fix bpf_test_xattr testcase error ANDROID: fuse-bpf: Simplify and fix setting bpf program ANDROID: GKI: update the ABI symbol list ANDROID: schedutil: add vendor hook for adjusting util to freq calculation BACKPORT: FROMLIST: arm64: Also reset KASAN tag if page is not PG_mte_tagged FROMLIST: arm64: mte: Do not set PG_mte_tagged if tags were not initialized ANDROID: GKI: Convert USB network adpaters to modules ANDROID: KVM: arm64: Prevent kmemleak from accessing EL2 module sections ANDROID: KVM: arm64: Move addr_is_allowed_memory() check into host callback UPSTREAM: wifi: cfg80211: Authentication offload to user space for MLO connection in STA mode ANDROID: Enable CONFIG_ZONE_DEVICE ANDROID: abi_gki_aarch64_qcom: Add sock_gen_put BACKPORT: FROMLIST: Revert "scsi: ufs: core: Initialize devfreq synchronously" FROMLIST: staging: greybus: drop loopback test files ANDROID: fuse-bpf: Make fuse_test compile and pass ANDROID: abi_gki_aarch64_qcom: Add missing symbol to QCOM list ANDROID: Update ABI representation ANDROID: ABI: Update QCOM symbol list for display drivers ANDROID: KVM: arm64: Prevent kmemleak from accessing .hyp.data ANDROID: 4/26/2023 KMI update ANDROID: mm: Create hooks for ZONE_MOVABLE allocs ANDROID: zram: allow zram to allocate CMA pages ANDROID: mm: add cma pcp list ANDROID: cma: redirect page allocation to CMA ANDROID: GKI: fscrypt: add OEM data to struct fscrypt_operations ANDROID: KVM: arm64: iommu: Pass device specific flags to hypervisor ANDROID: abi_gki_aarch64_qcom: Update qcom abi symbol list ANDROID: vmscan: Support multiple kswapd threads per node ANDROID: mm: Export kswapd function ANDROID: gki_defconfig: enable IPV6_MROUTE_MULTIPLE_TABLES Revert "ANDROID: gki_defconfig: remove CONFIG_CLEANCACHE from gki_defconfig" ANDROID: Revert "mm: remove cleancache" ANDROID: dma-buf: heaps: dmabuf page pool spinlock should be spinlock_t ANDROID: GKI: Update db845c symbol list for dmabuf_page_pool_get_size ANDROID: GKI: Update virtual_device symbol list for dmabuf_page_pool_get_size ANDROID: dma-heap: Let system heap report total pool size ANDROID: dma-buf: heaps: Add a sysfs file to report total pool size. ANDROID: block: Prepare for preserving the zoned write order ANDROID: Update symbol list for Exynos SoC ANDROID: ABI: Update symbol list for imx ANDROID: db845c: Update symbol list ANDROID: preserve CRC for xhci symbols Revert "raw: use net_hash_mix() in hash function" Revert "raw: Fix NULL deref in raw_get_next()." Revert "pwm: Make .get_state() callback return an error code" Revert "pwm: hibvt: Explicitly set .polarity in .get_state()" Revert "pwm: cros-ec: Explicitly set .polarity in .get_state()" Revert "pwm: iqs620a: Explicitly set .polarity in .get_state()" Revert "pwm: sprd: Explicitly set .polarity in .get_state()" Revert "pwm: meson: Explicitly set .polarity in .get_state()" Revert "KVM: arm64: PMU: Align chained counter implementation with architecture pseudocode" Revert "KVM: arm64: PMU: Distinguish between 64bit counter and 64bit overflow" Revert "KVM: arm64: PMU: Sanitise PMCR_EL0.LP on first vcpu run" Revert "KVM: arm64: PMU: Don't save PMCR_EL0.{C,P} for the vCPU" BACKPORT: KVM: arm64: Make vcpu flag updates non-preemptible BACKPORT: KVM: arm64: Advertise ID_AA64PFR0_EL1.CSV2/3 to protected VMs FROMGIT: usb: dwc3: gadget: Refactor EP0 forced stall/restart into a separate API ANDROID: Update symbol list for mtk FROMGIT: usb: dwc3: gadget: Execute gadget stop after halting the controller UPSTREAM: scsi: ufs: core: Print trs for pending requests in MCQ mode UPSTREAM: scsi: ufs: core: Add trace event for MCQ ANDROID: ABI: update the pixel symbol list FROMGIT: USB: dwc3: gadget: drop dead hibernation code FROMGIT: usb: dwc3: gadget: Stall and restart EP0 if host is unresponsive FROMGIT: media: add RealVideo format RV30 and RV40 FROMGIT: media: add Sorenson Spark video format ANDROID: Update ABI representation for imx symbol list updates ANDROID: ABI: Add clk/power related symbols for imx ANDROID: ABI: Add phy/pinctrl/regulator related symbols for imx ANDROID: ABI: Add bus/mmc/dma related symbols for imx ANDROID: ABI: Add display related symbols for imx ANDROID: ABI: Add video/camera related symbols for imx ANDROID: ABI: Add sensor/led/iput related symbols for imx ANDROID: ABI: Add usb related symbols for imx ANDROID: ABI: Add net related symbols for imx ANDROID: ABI: Add sound/soc/ related symbols for imx ANDROID: KVM: arm64: Clear the PTEs which are not refcounted on unmap path Revert "ANDROID: Add utf8_data_table for case-folding support" ANDROID: Add filp_open_block() for zram ANDROID: GKI: add init symbol list file for vivo FROMGIT: clocksource/drivers/timer-mediatek: Split out CPUXGPT timers ANDROID: dma-buf: Export is_dma_buf_file Linux 6.1.25 cgroup/cpuset: Add cpuset_can_fork() and cpuset_cancel_fork() methods cgroup/cpuset: Make cpuset_fork() handle CLONE_INTO_CGROUP properly cgroup/cpuset: Skip spread flags update on v2 nvme-pci: add NVME_QUIRK_BOGUS_NID for T-FORCE Z330 SSD nvme-pci: mark Lexar NM760 as IGNORE_DEV_SUBNQN cifs: fix negotiate context parsing i2c: ocores: generate stop condition after timeout in polling mode x86/rtc: Remove __init for runtime functions sched/fair: Fix imbalance overflow powerpc/papr_scm: Update the NUMA distance table for the target node i2c: mchp-pci1xxxx: Update Timing registers ubi: Fix deadlock caused by recursively holding work_sem ubi: Fix failure attaching when vid_hdr offset equals to (sub)page size mptcp: stricter state check in mptcp_worker mptcp: use mptcp_schedule_work instead of open-coding it drm/amd/pm: correct SMU13.0.7 max shader clock reporting drm/amd/pm: correct SMU13.0.7 pstate profiling clock settings cgroup/cpuset: Wake up cpuset_attach_wq tasks in cpuset_cancel_attach() cgroup/cpuset: Fix partition root's cpuset.cpus update bug cgroup: fix display of forceidle time at root x86/PCI: Add quirk for AMD XHCI controller that loses MSI-X state in D3hot scsi: ses: Handle enclosure with just a primary component gracefully net: phy: nxp-c45-tja11xx: fix unsigned long multiplication overflow net: phy: nxp-c45-tja11xx: add remove callback net: sfp: initialize sfp->i2c_block_size at sfp allocation HID: intel-ish-hid: Fix kernel panic during warm reset riscv: add icache flush for nommu sigreturn trampoline ksmbd: avoid out of bounds access in decode_preauth_ctxt() maple_tree: fix write memory barrier of nodes once dead for RCU mode tracing: Have tracing_snapshot_instance_cond() write errors to the appropriate instance tracing: Add trace_array_puts() to write into instance KVM: SVM: Flush Hyper-V TLB when required x86/hyperv: KVM: Rename "hv_enlightenments" to "hv_vmcb_enlightenments" KVM: SVM: Add a proper field for Hyper-V VMCB enlightenments KVM: selftests: Move "struct hv_enlightenments" to x86_64/svm.h x86/hyperv: Move VMCB enlightenment definitions to hyperv-tlfs.h ACPI: resource: Add Medion S17413 to IRQ override quirk drm/amdgpu/gfx: set cg flags to enter/exit safe mode drm/amdgpu: Force signal hw_fences that are embedded in non-sched jobs drm/amdgpu: add mes resume when do gfx post soft reset wifi: iwlwifi: mvm: protect TXQ list manipulation wifi: iwlwifi: mvm: fix mvmtxq->stopped handling nvme: send Identify with CNS 06h only to I/O controllers asymmetric_keys: log on fatal failures in PE/pkcs7 verify_pefile: relax wrapper length check hwmon: (xgene) Fix ioremap and memremap leak hwmon: (peci/cputemp) Fix miscalculated DTS for SKX drm: panel-orientation-quirks: Add quirk for Lenovo Yoga Book X90F ACPI: video: Add backlight=native DMI quirk for Acer Aspire 3830TG block: ublk_drv: mark device as LIVE before adding disk efi: sysfb_efi: Add quirk for Lenovo Yoga Book X91F/L i2c: hisi: Avoid redundant interrupts i2c: imx-lpi2c: clean rx/tx buffers upon new message wifi: mwifiex: mark OF related data as maybe unused selftests/bpf: Fix progs/find_vma_fail1.c build error. power: supply: axp288_fuel_gauge: Added check for negative values power: supply: cros_usbpd: reclassify "default case!" as debug power: supply: rk817: Fix unsigned comparison with less than zero ARM: dts: qcom: apq8026-lg-lenok: add missing reserved memory ARM: 9290/1: uaccess: Fix KASAN false-positives libbpf: Fix single-line struct definition output in btf_dump skbuff: Fix a race between coalescing and releasing SKBs net: macb: fix a memory corruption in extended buffer descriptor mode udp6: fix potential access to stale information selftests: openvswitch: adjust datapath NL message declaration RDMA/core: Fix GID entry ref leak when create_ah fails sctp: fix a potential overflow in sctp_ifwdtsn_skip net: qrtr: Fix an uninit variable access bug in qrtr_tx_resume() cgroup,freezer: hold cpu_hotplug_lock before freezer_mutex net: wwan: iosm: Fix error handling path in ipc_pcie_probe() qlcnic: check pci_reset_function result drm/armada: Fix a potential double free in an error handling path Bluetooth: Set ISO Data Path on broadcast sink Bluetooth: SCO: Fix possible circular locking dependency sco_sock_getsockopt Bluetooth: Fix printing errors if LE Connection times out Bluetooth: hci_conn: Fix not cleaning up on LE Connection failure net: openvswitch: fix race on port output iavf: remove active_cvlans and active_svlans bitmaps iavf: refactor VLAN filter states bonding: fix ns validation on backup slaves tcp: restrict net.ipv4.tcp_app_win niu: Fix missing unwind goto in niu_alloc_channels() KVM: arm64: Advertise ID_AA64PFR0_EL1.CSV2/3 to protected VMs KVM: arm64: Initialise hypervisor copies of host symbols unconditionally bpf, arm64: Fixed a BTI error on returning to patched function 9p/xen : Fix use after free bug in xen_9pfs_front_remove due to race condition dmaengine: apple-admac: Fix 'current_tx' not getting freed dmaengine: apple-admac: Set src_addr_widths capability dmaengine: apple-admac: Handle 'global' interrupt flags LoongArch, bpf: Fix jit to skip speculation barrier opcode bpf: tcp: Use sock_gen_put instead of sock_put in bpf_iter_tcp RDMA/cma: Allow UD qp_type to join multicast only clk: rs9: Fix suspend/resume RDMA/erdma: Defer probing if netdevice can not be found RDMA/erdma: Inline mtt entries into WQE if supported RDMA/erdma: Update default EQ depth to 4096 and max_send_wr to 8192 IB/mlx5: Add support for 400G_8X lane speed RDMA/irdma: Add ipv4 check to irdma_find_listener() RDMA/irdma: Increase iWARP CM default rexmit count RDMA/irdma: Fix memory leak of PBLE objects RDMA/irdma: Do not generate SW completions for NOPs clk: sprd: set max_register according to mapping range drm/i915/dsi: fix DSS CTL register offsets for TGL+ fbcon: set_con2fb_map needs to set con2fb_map! fbcon: Fix error paths in set_con2fb_map KVM: arm64: PMU: Restore the guest's EL0 event counting after migration mtd: rawnand: stm32_fmc2: use timings.mode instead of checking tRC_min mtd: rawnand: stm32_fmc2: remove unsupported EDO mode mtd: rawnand: meson: fix bitmask for length in command word mtdblock: tolerate corrected bit-flips fbmem: Reject FB_ACTIVATE_KD_TEXT from userspace btrfs: fix fast csum implementation detection btrfs: restore the thread_pool= behavior in remount for the end I/O workqueues Bluetooth: hci_conn: Fix possible UAF Bluetooth: Free potentially unfreed SCO connection bluetooth: btbcm: Fix logic error in forming the board name. Bluetooth: Fix race condition in hidp_session_thread Bluetooth: L2CAP: Fix use-after-free in l2cap_disconnect_{req,rsp} ALSA: hda/hdmi: disable KAE for Intel DG2 ALSA: hda/sigmatel: fix S/PDIF out on Intel D*45* motherboards ALSA: emu10k1: don't create old pass-through playback device on Audigy ALSA: firewire-tascam: add missing unwind goto in snd_tscm_stream_start_duplex() ALSA: hda/realtek: Add quirks for Lenovo Z13/Z16 Gen2 ALSA: hda: patch_realtek: add quirk for Asus N7601ZM ALSA: i2c/cs8427: fix iec958 mixer control deactivation ALSA: hda/sigmatel: add pin overrides for Intel DP45SG motherboard ALSA: emu10k1: fix capture interrupt handler unlinking drm/amd/display: Pass the right info to drm_dp_remove_payload Revert "pinctrl: amd: Disable and mask interrupts on resume" f2fs: remove unnessary comment in __may_age_extent_tree f2fs: allocate node blocks for atomic write block replacement f2fs: use cow inode data when updating atomic write f2fs: remove power-of-two limitation of zoned device f2fs: allocate trace path buffer from names_cache ANDROID: ABI: Update the tcpci symbols for pixel ANDROID: ABI: Add drm_atomic_bridge_chain_disable and drm_atomic_bridge_chain_enable in QCOM symbol list ANDROID: firmware/psci: Remove PSCI_1_1_FN64_MEM_PROTECT definition ANDROID: Add initial symbol list for Exynos SoC f2fs: add has_enough_free_secs() f2fs: relax sanity check if checkpoint is corrupted f2fs: refactor f2fs_gc to call checkpoint in urgent condition f2fs: remove folio_detach_private() in .invalidate_folio and .release_folio f2fs: remove bulk remove_proc_entry() and unnecessary kobject_del() f2fs: support iopoll method Linux 6.1.24 bpftool: Print newline before '}' for struct with padding only fields mm: enable maple tree RCU mode by default. maple_tree: add RCU lock checking to rcu callback functions maple_tree: add smp_rmb() to dead node detection maple_tree: remove extra smp_wmb() from mas_dead_leaves() maple_tree: fix freeing of nodes in rcu mode maple_tree: detect dead nodes in mas_start() maple_tree: refine ma_state init from mas_start() maple_tree: be more cautious about dead nodes maple_tree: fix mas_prev() and mas_find() state handling maple_tree: fix handle of invalidated state in mas_wr_store_setup() maple_tree: reduce user error potential maple_tree: fix potential rcu issue maple_tree: remove GFP_ZERO from kmem_cache_alloc() and kmem_cache_alloc_bulk() mm: take a page reference when removing device exclusive entries drm/i915: Split icl_color_commit_noarm() from skl_color_commit_noarm() drm/i915: Use _MMIO_PIPE() for SKL_BOTTOM_COLOR drm/bridge: lt9611: Fix PLL being unable to lock drm/i915/dp_mst: Fix payload removal during output disabling drm/display/dp_mst: Handle old/new payload states in drm_dp_remove_payload() drm/amdgpu: skip psp suspend for IMU enabled ASICs mode2 reset drm/amdgpu: for S0ix, skip SDMA 5.x+ suspend/resume drm/amd/display: Clear MST topology if it fails to resume blk-throttle: Fix that bps of child could exceed bps limited in parent maple_tree: fix a potential concurrency bug in RCU mode maple_tree: fix get wrong data_end in mtree_lookup_walk() mm/hugetlb: fix uffd wr-protection for CoW optimization path mm/swap: fix swap_info_struct race between swapoff and get_swap_pages() ring-buffer: Fix race while reader and writer are on the same page drm/i915: fix race condition UAF in i915_perf_add_config_ioctl drm/i915: Fix context runtime accounting drm/nouveau/disp: Support more modes by checking with lower bpc drm/panfrost: Fix the panfrost_mmu_map_fault_addr() error path ublk: read any SQE values upfront wifi: mt76: ignore key disable commands mm: vmalloc: avoid warn_alloc noise caused by fatal signal zsmalloc: document freeable stats tracing/synthetic: Make lastcmd_mutex static ASoC: hdac_hdmi: use set_stream() instead of set_tdm_slots() tracing: Free error logs of tracing instances tracing/osnoise: Fix notify new tracing_max_latency tracing/timerlat: Notify new max thread latency tracing/synthetic: Fix races on freeing last_cmd net: stmmac: Add queue reset into stmmac_xdp_open() function ACPI: video: Add acpi_backlight=video quirk for Lenovo ThinkPad W530 ACPI: video: Add acpi_backlight=video quirk for Apple iMac14,1 and iMac14,2 ACPI: video: Make acpi_backlight=video work independent from GPU driver ACPI: video: Add auto_detect arg to __acpi_video_get_backlight_type() can: isotp: isotp_recvmsg(): use sock_recv_cmsgs() to get SOCK_RXQ_OVFL infos can: isotp: isotp_ops: fix poll() to not report false EPOLLOUT events can: isotp: fix race between isotp_sendsmg() and isotp_release() can: j1939: j1939_tp_tx_dat_new(): fix out-of-bounds memory access fs: drop peer group ids under namespace lock ftrace: Fix issue that 'direct->addr' not restored in modify_ftrace_direct() ftrace: Mark get_lock_parent_ip() __always_inline perf/core: Fix the same task check in perf_event_set_output block: don't set GD_NEED_PART_SCAN if scan partition failed block: ublk: make sure that block size is set correctly cifs: sanitize paths in cifs_update_super_prepath. nvme: fix discard support without oncs scsi: iscsi_tcp: Check that sock is valid before iscsi_set_param() scsi: qla2xxx: Fix memory leak in qla2x00_probe_one() io_uring: fix memory leak when removing provided buffers io_uring: fix return value when removing provided buffers iio: adc: ad7791: fix IRQ flags blk-mq: directly poll requests counter: 104-quad-8: Fix Synapse action reported for Index signals counter: 104-quad-8: Fix race condition between FLAG and CNTR reads coresight-etm4: Fix for() loop drvdata->nr_addr_cmp range bug coresight: etm4x: Do not access TRCIDR1 for identification mm: kfence: fix handling discontiguous page mm: kfence: fix PG_slab and memcg_data clearing KVM: nVMX: Do not report error code when synthesizing VM-Exit from Real Mode KVM: x86: Clear "has_error_code", not "error_code", for RM exception injection x86/ACPI/boot: Use FADT version to check support for online capable x86/acpi/boot: Correct acpi_is_processor_usable() check ALSA: hda/realtek: fix mute/micmute LEDs for a HP ProBook ALSA: hda/realtek: Add quirk for Clevo X370SNW ksmbd: fix slab-out-of-bounds in init_smb2_rsp_hdr ksmbd: do not call kvmalloc() with __GFP_NORETRY | __GFP_NO_WARN serial: 8250: Prevent starting up DMA Rx on THRI interrupt dt-bindings: serial: renesas,scif: Fix 4th IRQ for 4-IRQ SCIFs nilfs2: fix sysfs interface lifetime nilfs2: fix potential UAF of struct nilfs_sc_info in nilfs_segctor_thread() tty: serial: fsl_lpuart: avoid checking for transfer complete when UARTCTRL_SBK is asserted in lpuart32_tx_empty tty: serial: sh-sci: Fix Rx on RZ/G2L SCI tty: serial: sh-sci: Fix transmit end interrupt handler iio: light: cm32181: Unregister second I2C client if present iio: buffer: make sure O_NONBLOCK is respected iio: buffer: correctly return bytes written in output buffers iio: dac: cio-dac: Fix max DAC write value check for 12-bit iio: adc: ti-ads7950: Set `can_sleep` flag for GPIO chip iio: adc: qcom-spmi-adc5: Fix the channel name iio: adis16480: select CONFIG_CRC32 drivers: iio: adc: ltc2497: fix LSB shift USB: serial: option: add Quectel RM500U-CN modem USB: serial: option: add Telit FE990 compositions usb: typec: altmodes/displayport: Fix configure initial pin assignment USB: serial: cp210x: add Silicon Labs IFS-USB-DATACABLE IDs usb: dwc3: pci: add support for the Intel Meteor Lake-S usb: cdnsp: Fixes error: uninitialized symbol 'len' xhci: also avoid the XHCI_ZERO_64B_REGS quirk with a passthrough iommu xhci: Free the command allocated for setting LPM if we return early usb: xhci: tegra: fix sleep in atomic call PCI/DOE: Fix memory leak with CONFIG_DEBUG_OBJECTS=y PCI/DOE: Silence WARN splat with CONFIG_DEBUG_OBJECTS=y cxl/pci: Handle excessive CDAT length cxl/pci: Handle truncated CDAT entries cxl/pci: Handle truncated CDAT header cxl/pci: Fix CDAT retrieval on big endian net: stmmac: check fwnode for phy device before scanning for phy arm64: compat: Work around uninitialized variable warning gve: Secure enough bytes in the first TX desc for all TCP pkts netlink: annotate lockless accesses to nlk->max_recvmsg_len ethtool: reset #lanes when lanes is omitted ping: Fix potentail NULL deref for /proc/net/icmp. raw: Fix NULL deref in raw_get_next(). raw: use net_hash_mix() in hash function ice: Reset FDIR counter in FDIR init stage ice: fix wrong fallback logic for FDIR NFSD: callback request does not use correct credential for AUTH_SYS sunrpc: only free unix grouplist after RCU settles net: stmmac: fix up RX flow hash indirection table when setting channels net: ethernet: ti: am65-cpsw: Fix mdio cleanup in probe gpio: davinci: Add irq chip flag to skip set wake gpio: davinci: Do not clear the bank intr enable bit in save_context platform/x86: think-lmi: Clean up display of current_value on Thinkstation platform/x86: think-lmi: Fix memory leaks when parsing ThinkStation WMI strings platform/x86: think-lmi: Fix memory leak when showing current settings ipv6: Fix an uninit variable access bug in __ip6_make_skb() net: qrtr: Do not do DEL_SERVER broadcast after DEL_CLIENT sctp: check send stream number after wait_for_sndbuf net: dsa: mv88e6xxx: Reset mv88e6393x force WD event bit net: don't let netpoll invoke NAPI if in xmit context ALSA: hda/hdmi: Preserve the previous PCM device upon re-enablement icmp: guard against too small mtu nfsd: call op_release, even when op_func returns an error NFSD: Avoid calling OPDESC() with ops->opnum == OP_ILLEGAL wifi: brcmfmac: Fix SDIO suspend/resume regression l2tp: generate correct module alias strings net: stmmac: remove redundant fixup to support fixed-link mode net: stmmac: check if MAC needs to attach to a PHY net: phylink: add phylink_expects_phy() method net: qrtr: Fix a refcount bug in qrtr_recvmsg() wifi: mac80211: fix invalid drv_sta_pre_rcu_remove calls for non-uploaded sta wifi: mac80211: fix the size calculation of ieee80211_ie_len_eht_cap() KVM: s390: pv: fix external interruption loop not always detected ASoC: codecs: lpass: fix the order or clks turn off during suspend pwm: meson: Explicitly set .polarity in .get_state() pwm: sprd: Explicitly set .polarity in .get_state() pwm: iqs620a: Explicitly set .polarity in .get_state() pwm: cros-ec: Explicitly set .polarity in .get_state() pwm: hibvt: Explicitly set .polarity in .get_state() pwm: Make .get_state() callback return an error code ASoC: SOF: ipc4: Ensure DSP is in D0I0 during sof_ipc4_set_get_data() Drivers: vmbus: Check for channel allocation before looking up relids gpio: GPIO_REGMAP: select REGMAP instead of depending on it KVM: arm64: PMU: Don't save PMCR_EL0.{C,P} for the vCPU KVM: arm64: PMU: Sanitise PMCR_EL0.LP on first vcpu run KVM: arm64: PMU: Distinguish between 64bit counter and 64bit overflow KVM: arm64: PMU: Align chained counter implementation with architecture pseudocode dm: fix improper splitting for abnormal bios dm: change "unsigned" to "unsigned int" dm integrity: Remove bi_sector that's only used by commented debug code dm cache: Add some documentation to dm-cache-background-tracker.h f2fs: remove batched_trim_sections node description f2fs: fix to check return value of inc_valid_block_count() f2fs: fix to check return value of f2fs_do_truncate_blocks() f2fs: fix passing relative address when discard zones f2fs: fix potential corruption when moving a directory f2fs: add radix_tree_preload_end in error case f2fs: fix to recover quota data correctly f2fs: fix to check readonly condition correctly docs: f2fs: Correct instruction to disable checkpoint f2fs: fix to keep consistent i_gc_rwsem lock order f2fs: fix to drop all dirty pages during umount() if cp_error is set f2fs: fix to avoid use-after-free for cached IPU bio f2fs: remove unneeded in-memory i_crtime copy f2fs: use f2fs_hw_is_readonly() instead of bdev_read_only() f2fs: use common implementation of file type f2fs: merge lz4hc_compress_pages() to lz4_compress_pages() f2fs: convert to use sysfs_emit f2fs: set default compress option only when sb_has_compression f2fs: Fix system crash due to lack of free space in LFS f2fs: remove struct victim_selection default_v_ops f2fs: fix null pointer panic in tracepoint in __replace_atomic_write_block f2fs: fix iostat lock protection f2fs: fix align check for npo2 f2fs: add compression feature check for all compress mount opt f2fs: convert is_extension_exist() to return bool type f2fs: fix scheduling while atomic in decompression path f2fs: preserve direct write semantics when buffering is forced f2fs: compress: fix to call f2fs_wait_on_page_writeback() in f2fs_write_raw_pages() f2fs: remove else in f2fs_write_cache_pages() f2fs: apply zone capacity to all zone type f2fs: fix to handle filemap_fdatawrite() error in f2fs_ioc_decompress_file/f2fs_ioc_compress_file f2fs: convert to MAX_SBI_FLAG instead of 32 in stat_show() f2fs: Fix discard bug on zoned block devices with 2MiB zone size f2fs: remove entire rb_entry sharing f2fs: factor out discard_cmd usage from general rb_tree use f2fs: factor out victim_entry usage from general rb_tree use f2fs: fix uninitialized skipped_gc_rwsem f2fs: handle dqget error in f2fs_transfer_project_quota() f2fs: convert to use bitmap API f2fs: export compress_percent and compress_watermark entries f2fs: make f2fs_sync_inode_meta() static f2fs: Fix f2fs_truncate_partial_nodes ftrace event Conflicts: Documentation/devicetree/bindings Documentation/devicetree/bindings/serial/renesas,scif.yaml android/abi_gki_aarch64.stg net/qrtr/af_qrtr.c net/qrtr/ns.c Change-Id: I2b2b2f1569aa65700b2382c7ea4ea5d84c8f573c Upstream-Build: ks_qcom-android14-6.1-keystone-qcom-release@10066587 UKQ2.230504.001 Signed-off-by: jianzhou <quic_jianzhou@quicinc.com>
This commit is contained in:
commit
106629f5e1
@ -17,6 +17,7 @@ filegroup(
|
||||
srcs = [
|
||||
# keep sorted
|
||||
"android/abi_gki_aarch64_db845c",
|
||||
"android/abi_gki_aarch64_exynos",
|
||||
"android/abi_gki_aarch64_galaxy",
|
||||
"android/abi_gki_aarch64_imx",
|
||||
"android/abi_gki_aarch64_mtk",
|
||||
@ -24,6 +25,7 @@ filegroup(
|
||||
"android/abi_gki_aarch64_pixel",
|
||||
"android/abi_gki_aarch64_qcom",
|
||||
"android/abi_gki_aarch64_virtual_device",
|
||||
"android/abi_gki_aarch64_vivo",
|
||||
"android/abi_gki_aarch64_xiaomi",
|
||||
],
|
||||
visibility = ["//visibility:public"],
|
||||
|
@ -190,12 +190,6 @@ Description: Controls the memory footprint used by free nids and cached
|
||||
nat entries. By default, 1 is set, which indicates
|
||||
10 MB / 1 GB RAM.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/batched_trim_sections
|
||||
Date: February 2015
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description: Controls the trimming rate in batch mode.
|
||||
<deprecated>
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/cp_interval
|
||||
Date: October 2015
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
@ -729,3 +723,20 @@ What: /sys/fs/f2fs/<disk>/last_age_weight
|
||||
Date: January 2023
|
||||
Contact: "Ping Xiong" <xiongping1@xiaomi.com>
|
||||
Description: When DATA SEPARATION is on, it controls the weight of last data block age.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/compress_watermark
|
||||
Date: February 2023
|
||||
Contact: "Yangtao Li" <frank.li@vivo.com>
|
||||
Description: When compress cache is on, it controls free memory watermark
|
||||
in order to limit caching compress page. If free memory is lower
|
||||
than watermark, then deny caching compress page. The value should be in
|
||||
range of (0, 100], by default it was initialized as 20(%).
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/compress_percent
|
||||
Date: February 2023
|
||||
Contact: "Yangtao Li" <frank.li@vivo.com>
|
||||
Description: When compress cache is on, it controls cached page
|
||||
percent(compress pages / free_ram) in order to limit caching compress page.
|
||||
If cached page percent exceed threshold, then deny caching compress page.
|
||||
The value should be in range of (0, 100], by default it was initialized
|
||||
as 20(%).
|
||||
|
7
Documentation/ABI/testing/sysfs-kernel-dmaheap
Normal file
7
Documentation/ABI/testing/sysfs-kernel-dmaheap
Normal file
@ -0,0 +1,7 @@
|
||||
What: /sys/kernel/dma_heap/total_pools_kb
|
||||
Date: Feb 2021
|
||||
KernelVersion: 5.10
|
||||
Contact: T.J. Mercier <tjmercier@google.com>
|
||||
Description:
|
||||
The total_pools_kb file is read-only and specifies how much
|
||||
memory in KiB is allocated to DMA-BUF heap pools.
|
@ -264,7 +264,7 @@ checkpoint=%s[:%u[%]] Set to "disable" to turn off checkpointing. Set to "enabl
|
||||
disabled, any unmounting or unexpected shutdowns will cause
|
||||
the filesystem contents to appear as they did when the
|
||||
filesystem was mounted with that option.
|
||||
While mounting with checkpoint=disabled, the filesystem must
|
||||
While mounting with checkpoint=disable, the filesystem must
|
||||
run garbage collection to ensure that all available space can
|
||||
be used. If this takes too much time, the mount may return
|
||||
EAGAIN. You may optionally add a value to indicate how much
|
||||
|
@ -8,6 +8,12 @@ Frontswap provides a "transcendent memory" interface for swap pages.
|
||||
In some environments, dramatic performance savings may be obtained because
|
||||
swapped pages are saved in RAM (or a RAM-like device) instead of a swap disk.
|
||||
|
||||
(Note, frontswap -- and :ref:`cleancache` (merged at 3.0) -- are the "frontends"
|
||||
and the only necessary changes to the core kernel for transcendent memory;
|
||||
all other supporting code -- the "backends" -- is implemented as drivers.
|
||||
See the LWN.net article `Transcendent memory in a nutshell`_
|
||||
for a detailed overview of frontswap and related kernel parts)
|
||||
|
||||
.. _Transcendent memory in a nutshell: https://lwn.net/Articles/454795/
|
||||
|
||||
Frontswap is so named because it can be thought of as the opposite of
|
||||
@ -75,9 +81,11 @@ This interface is ideal when data is transformed to a different form
|
||||
and size (such as with compression) or secretly moved (as might be
|
||||
useful for write-balancing for some RAM-like devices). Swap pages (and
|
||||
evicted page-cache pages) are a great use for this kind of slower-than-RAM-
|
||||
but-much-faster-than-disk "pseudo-RAM device".
|
||||
but-much-faster-than-disk "pseudo-RAM device" and the frontswap (and
|
||||
cleancache) interface to transcendent memory provides a nice way to read
|
||||
and write -- and indirectly "name" -- the pages.
|
||||
|
||||
Frontswap with a fairly small impact on the kernel,
|
||||
Frontswap -- and cleancache -- with a fairly small impact on the kernel,
|
||||
provides a huge amount of flexibility for more dynamic, flexible RAM
|
||||
utilization in various system configurations:
|
||||
|
||||
|
@ -68,6 +68,8 @@ pages_used
|
||||
the number of pages allocated for the class
|
||||
pages_per_zspage
|
||||
the number of 0-order pages to make a zspage
|
||||
freeable
|
||||
the approximate number of pages class compaction can free
|
||||
|
||||
We assign a zspage to ZS_ALMOST_EMPTY fullness group when n <= N / f, where
|
||||
|
||||
|
@ -337,6 +337,8 @@ tcp_app_win - INTEGER
|
||||
Reserve max(window/2^tcp_app_win, mss) of window for application
|
||||
buffer. Value 0 is special, it means that nothing is reserved.
|
||||
|
||||
Possible values are [0, 31], inclusive.
|
||||
|
||||
Default: 31
|
||||
|
||||
tcp_autocorking - BOOLEAN
|
||||
|
@ -704,7 +704,7 @@ ref
|
||||
no-jd
|
||||
BIOS setup but without jack-detection
|
||||
intel
|
||||
Intel DG45* mobos
|
||||
Intel D*45* mobos
|
||||
dell-m6-amic
|
||||
Dell desktops/laptops with analog mics
|
||||
dell-m6-dmic
|
||||
|
@ -88,6 +88,11 @@ Compressed Formats
|
||||
- ``V4L2_PIX_FMT_H263``
|
||||
- 'H263'
|
||||
- H263 video elementary stream.
|
||||
* .. _V4L2-PIX-FMT-SPK:
|
||||
|
||||
- ``V4L2_PIX_FMT_SPK``
|
||||
- 'SPK0'
|
||||
- Sorenson Spark is an implementation of H.263 for use in Flash Video and Adobe Flash files
|
||||
* .. _V4L2-PIX-FMT-MPEG1:
|
||||
|
||||
- ``V4L2_PIX_FMT_MPEG1``
|
||||
@ -232,6 +237,26 @@ Compressed Formats
|
||||
Metadata associated with the frame to decode is required to be passed
|
||||
through the ``V4L2_CID_STATELESS_FWHT_PARAMS`` control.
|
||||
See the :ref:`associated Codec Control ID <codec-stateless-fwht>`.
|
||||
* .. _V4L2-PIX-FMT-RV30:
|
||||
|
||||
- ``V4L2_PIX_FMT_RV30``
|
||||
- 'RV30'
|
||||
- RealVideo, or also spelled as Real Video, is a suite of
|
||||
proprietary video compression formats developed by
|
||||
RealNetworks - the specific format changes with the version.
|
||||
RealVideo codecs are identified by four-character codes.
|
||||
RV30 corresponds to RealVideo 8, suspected to be based
|
||||
largely on an early draft of H.264
|
||||
* .. _V4L2-PIX-FMT-RV40:
|
||||
|
||||
- ``V4L2_PIX_FMT_RV40``
|
||||
- 'RV40'
|
||||
- RV40 represents RealVideo 9 and RealVideo 10.
|
||||
RealVideo 9, suspected to be based on H.264.
|
||||
RealVideo 10, aka RV9 EHQ, This refers to an improved encoder
|
||||
for the RV9 format that is fully backwards compatible with
|
||||
RV9 players - the format and decoder did not change, only
|
||||
the encoder did. As a result, it uses the same FourCC.
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
|
@ -5083,6 +5083,13 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/har
|
||||
F: include/linux/cfi.h
|
||||
F: kernel/cfi.c
|
||||
|
||||
CLEANCACHE API
|
||||
M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: include/linux/cleancache.h
|
||||
F: mm/cleancache.c
|
||||
|
||||
CLK API
|
||||
M: Russell King <linux@armlinux.org.uk>
|
||||
L: linux-clk@vger.kernel.org
|
||||
|
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 6
|
||||
PATCHLEVEL = 1
|
||||
SUBLEVEL = 23
|
||||
SUBLEVEL = 25
|
||||
EXTRAVERSION =
|
||||
NAME = Hurr durr I'ma ninja sloth
|
||||
|
||||
|
@ -1 +1 @@
|
||||
9464c5644c653b3172e359597ee9a9972e7577ee
|
||||
dd29657536f36a7e86ffcf1593fefc1d0f800320
|
||||
|
@ -2,4 +2,3 @@
|
||||
# commonly used symbols
|
||||
module_layout
|
||||
__put_task_struct
|
||||
utf8_data_table
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -265,6 +265,7 @@
|
||||
geni_icc_get
|
||||
geni_icc_set_bw
|
||||
geni_se_config_packing
|
||||
geni_se_get_qup_hw_version
|
||||
geni_se_init
|
||||
geni_se_resources_off
|
||||
geni_se_resources_on
|
||||
@ -581,7 +582,6 @@
|
||||
__pskb_pull_tail
|
||||
put_device
|
||||
__put_task_struct
|
||||
qcom_icc_xlate_extended
|
||||
qcom_smem_state_register
|
||||
qcom_smem_state_unregister
|
||||
qcom_smem_state_update_bits
|
||||
@ -1138,6 +1138,9 @@
|
||||
icc_std_aggregate
|
||||
of_icc_xlate_onecell
|
||||
|
||||
# required by icc-rpmh.ko
|
||||
qcom_icc_xlate_extended
|
||||
|
||||
# required by leds-qcom-lpg.ko
|
||||
__bitmap_clear
|
||||
devm_led_classdev_multicolor_register_ext
|
||||
@ -1690,7 +1693,7 @@
|
||||
device_get_next_child_node
|
||||
devm_iio_device_alloc
|
||||
__devm_iio_device_register
|
||||
fwnode_get_name
|
||||
strchrnul
|
||||
|
||||
# required by qcom-spmi-pmic.ko
|
||||
__devm_regmap_init_spmi_ext
|
||||
@ -1755,10 +1758,6 @@
|
||||
regulator_get_current_limit_regmap
|
||||
regulator_set_current_limit_regmap
|
||||
|
||||
# required by qnoc-sm8450.ko
|
||||
icc_provider_add
|
||||
icc_provider_del
|
||||
|
||||
# required by qrtr-tun.ko
|
||||
_copy_to_iter
|
||||
|
||||
@ -1940,7 +1939,6 @@
|
||||
|
||||
# required by spi-geni-qcom.ko
|
||||
geni_se_clk_freq_match
|
||||
geni_se_get_qup_hw_version
|
||||
|
||||
# required by spi-pl022.ko
|
||||
amba_driver_register
|
||||
@ -1970,6 +1968,7 @@
|
||||
dmabuf_page_pool_create
|
||||
dmabuf_page_pool_destroy
|
||||
dmabuf_page_pool_free
|
||||
dmabuf_page_pool_get_size
|
||||
dma_heap_add
|
||||
dma_heap_get_dev
|
||||
dma_heap_get_name
|
||||
@ -2050,3 +2049,6 @@
|
||||
|
||||
# preserved by --additions-only
|
||||
__alloc_pages
|
||||
fwnode_get_name
|
||||
icc_provider_add
|
||||
icc_provider_del
|
||||
|
957
android/abi_gki_aarch64_exynos
Normal file
957
android/abi_gki_aarch64_exynos
Normal file
@ -0,0 +1,957 @@
|
||||
[abi_symbol_list]
|
||||
# commonly used symbols
|
||||
alloc_workqueue
|
||||
alt_cb_patch_nops
|
||||
android_rvh_probe_register
|
||||
__arch_copy_from_user
|
||||
__arch_copy_to_user
|
||||
arm64_use_ng_mappings
|
||||
__arm_smccc_smc
|
||||
atomic_notifier_chain_register
|
||||
__bitmap_and
|
||||
__bitmap_equal
|
||||
bitmap_parselist
|
||||
__bitmap_weight
|
||||
blocking_notifier_call_chain
|
||||
blocking_notifier_chain_register
|
||||
blocking_notifier_chain_unregister
|
||||
bpf_trace_run1
|
||||
bpf_trace_run2
|
||||
bpf_trace_run3
|
||||
bpf_trace_run4
|
||||
bpf_trace_run5
|
||||
bpf_trace_run6
|
||||
bpf_trace_run9
|
||||
cancel_delayed_work
|
||||
cancel_delayed_work_sync
|
||||
__check_object_size
|
||||
__class_create
|
||||
class_destroy
|
||||
clk_disable
|
||||
clk_enable
|
||||
clk_get_rate
|
||||
clk_prepare
|
||||
clk_set_rate
|
||||
clk_unprepare
|
||||
complete
|
||||
__const_udelay
|
||||
cpu_bit_bitmap
|
||||
cpufreq_cpu_get
|
||||
cpu_hwcaps
|
||||
cpu_number
|
||||
__cpu_online_mask
|
||||
__cpu_possible_mask
|
||||
debugfs_create_dir
|
||||
debugfs_create_file
|
||||
debugfs_remove
|
||||
default_llseek
|
||||
delayed_work_timer_fn
|
||||
destroy_workqueue
|
||||
dev_driver_string
|
||||
_dev_err
|
||||
devfreq_get_devfreq_by_phandle
|
||||
device_create
|
||||
device_create_file
|
||||
device_destroy
|
||||
device_for_each_child
|
||||
device_initialize
|
||||
device_remove_file
|
||||
device_set_wakeup_capable
|
||||
device_wakeup_disable
|
||||
device_wakeup_enable
|
||||
_dev_info
|
||||
devm_clk_get
|
||||
devm_gpiochip_add_data_with_key
|
||||
devm_i2c_new_dummy_device
|
||||
devm_ioremap
|
||||
devm_ioremap_resource
|
||||
__devm_irq_alloc_descs
|
||||
devm_kfree
|
||||
devm_kmalloc
|
||||
devm_mfd_add_devices
|
||||
devm_pinctrl_get
|
||||
devm_pinctrl_register
|
||||
devm_platform_ioremap_resource
|
||||
devm_regulator_register
|
||||
devm_request_threaded_irq
|
||||
dev_pm_opp_find_freq_ceil
|
||||
dev_pm_opp_get_voltage
|
||||
_dev_warn
|
||||
disable_irq
|
||||
disable_irq_nosync
|
||||
dma_alloc_attrs
|
||||
dma_buf_export
|
||||
dma_buf_get
|
||||
dma_buf_put
|
||||
dma_free_attrs
|
||||
dma_heap_find
|
||||
dma_heap_put
|
||||
dmam_alloc_attrs
|
||||
dma_map_page_attrs
|
||||
dmam_free_coherent
|
||||
dma_set_coherent_mask
|
||||
dma_set_mask
|
||||
dma_sync_single_for_cpu
|
||||
dma_sync_single_for_device
|
||||
dma_unmap_page_attrs
|
||||
d_path
|
||||
dump_stack
|
||||
enable_irq
|
||||
fd_install
|
||||
_find_first_bit
|
||||
_find_last_bit
|
||||
_find_next_bit
|
||||
find_vpid
|
||||
__flush_workqueue
|
||||
fortify_panic
|
||||
free_irq
|
||||
__free_pages
|
||||
free_pages
|
||||
generic_file_llseek
|
||||
gen_pool_add_owner
|
||||
gen_pool_alloc_algo_owner
|
||||
gen_pool_free_owner
|
||||
get_cpu_device
|
||||
get_device
|
||||
__get_free_pages
|
||||
get_task_mm
|
||||
get_unused_fd_flags
|
||||
gic_nonsecure_priorities
|
||||
gpiochip_add_pin_range
|
||||
gpiochip_generic_free
|
||||
gpiochip_generic_request
|
||||
gpiochip_get_data
|
||||
gpiod_direction_input
|
||||
gpiod_direction_output_raw
|
||||
gpiod_get_raw_value
|
||||
gpiod_set_raw_value
|
||||
gpiod_to_irq
|
||||
gpio_free
|
||||
gpio_request
|
||||
gpio_to_desc
|
||||
handle_edge_irq
|
||||
handle_level_irq
|
||||
handle_nested_irq
|
||||
hrtimer_init
|
||||
hrtimer_start_range_ns
|
||||
hrtimer_try_to_cancel
|
||||
i2c_add_numbered_adapter
|
||||
i2c_del_driver
|
||||
i2c_register_driver
|
||||
i2c_smbus_read_byte_data
|
||||
i2c_smbus_read_i2c_block_data
|
||||
i2c_smbus_read_word_data
|
||||
i2c_smbus_write_byte_data
|
||||
i2c_smbus_write_i2c_block_data
|
||||
__init_swait_queue_head
|
||||
init_timer_key
|
||||
ioremap_prot
|
||||
iounmap
|
||||
__irq_apply_affinity_hint
|
||||
irq_get_irq_data
|
||||
irq_modify_status
|
||||
irq_of_parse_and_map
|
||||
irq_set_chip_and_handler_name
|
||||
irq_set_chip_data
|
||||
irq_set_irq_wake
|
||||
is_vmalloc_addr
|
||||
jiffies
|
||||
jiffies_to_msecs
|
||||
kasan_flag_enabled
|
||||
kernel_kobj
|
||||
kfree
|
||||
kimage_voffset
|
||||
__kmalloc
|
||||
kmalloc_caches
|
||||
kmalloc_large
|
||||
kmalloc_trace
|
||||
kobject_create_and_add
|
||||
krealloc
|
||||
kstrtoll
|
||||
kstrtou8
|
||||
kstrtouint
|
||||
kthread_create_on_node
|
||||
kthread_stop
|
||||
ktime_get
|
||||
ktime_get_mono_fast_ns
|
||||
__list_add_valid
|
||||
__list_del_entry_valid
|
||||
log_post_read_mmio
|
||||
log_post_write_mmio
|
||||
log_read_mmio
|
||||
log_write_mmio
|
||||
loops_per_jiffy
|
||||
memcpy
|
||||
memdup_user
|
||||
memset
|
||||
memstart_addr
|
||||
mfd_add_devices
|
||||
mfd_remove_devices
|
||||
misc_deregister
|
||||
misc_register
|
||||
module_layout
|
||||
__msecs_to_jiffies
|
||||
msleep
|
||||
__mutex_init
|
||||
mutex_lock
|
||||
mutex_unlock
|
||||
nr_cpu_ids
|
||||
__num_online_cpus
|
||||
of_address_to_resource
|
||||
of_alias_get_id
|
||||
of_count_phandle_with_args
|
||||
of_device_get_match_data
|
||||
of_find_compatible_node
|
||||
of_find_device_by_node
|
||||
of_find_matching_node_and_match
|
||||
of_find_node_by_name
|
||||
of_find_node_opts_by_path
|
||||
of_find_property
|
||||
of_get_child_by_name
|
||||
of_get_named_gpio_flags
|
||||
of_get_next_available_child
|
||||
of_get_next_child
|
||||
of_get_property
|
||||
of_get_regulator_init_data
|
||||
of_iomap
|
||||
of_match_node
|
||||
of_n_addr_cells
|
||||
of_n_size_cells
|
||||
__of_parse_phandle_with_args
|
||||
of_platform_populate
|
||||
of_property_count_elems_of_size
|
||||
of_property_read_string
|
||||
of_property_read_string_helper
|
||||
of_property_read_u32_index
|
||||
of_property_read_variable_u32_array
|
||||
of_reserved_mem_lookup
|
||||
of_root
|
||||
panic
|
||||
panic_notifier_list
|
||||
param_ops_bool
|
||||
param_ops_int
|
||||
__per_cpu_offset
|
||||
perf_trace_buf_alloc
|
||||
perf_trace_run_bpf_submit
|
||||
pinconf_generic_dt_node_to_map
|
||||
pinctrl_dev_get_drvdata
|
||||
pinctrl_lookup_state
|
||||
pinctrl_select_state
|
||||
pinctrl_utils_free_map
|
||||
platform_device_register
|
||||
platform_device_unregister
|
||||
__platform_driver_register
|
||||
platform_driver_unregister
|
||||
platform_get_irq
|
||||
platform_get_resource
|
||||
platform_get_resource_byname
|
||||
__pm_relax
|
||||
pm_relax
|
||||
__pm_runtime_disable
|
||||
pm_runtime_enable
|
||||
__pm_runtime_idle
|
||||
__pm_runtime_resume
|
||||
pm_runtime_set_autosuspend_delay
|
||||
__pm_runtime_suspend
|
||||
__pm_runtime_use_autosuspend
|
||||
__pm_stay_awake
|
||||
pm_stay_awake
|
||||
pm_wakeup_ws_event
|
||||
power_supply_changed
|
||||
power_supply_get_by_name
|
||||
power_supply_get_drvdata
|
||||
power_supply_get_property
|
||||
power_supply_register
|
||||
power_supply_set_property
|
||||
power_supply_unregister
|
||||
preempt_schedule_notrace
|
||||
_printk
|
||||
put_device
|
||||
__put_task_struct
|
||||
put_unused_fd
|
||||
queue_delayed_work_on
|
||||
queue_work_on
|
||||
_raw_spin_lock
|
||||
_raw_spin_lock_irqsave
|
||||
_raw_spin_trylock
|
||||
_raw_spin_unlock
|
||||
_raw_spin_unlock_irqrestore
|
||||
rdev_get_drvdata
|
||||
rdev_get_id
|
||||
refcount_warn_saturate
|
||||
register_pm_notifier
|
||||
register_reboot_notifier
|
||||
register_syscore_ops
|
||||
regmap_read
|
||||
regmap_update_bits_base
|
||||
regmap_write
|
||||
regulator_disable
|
||||
regulator_enable
|
||||
regulator_list_voltage_linear
|
||||
regulator_map_voltage_linear
|
||||
request_threaded_irq
|
||||
runqueues
|
||||
sched_clock
|
||||
scnprintf
|
||||
seq_lseek
|
||||
seq_printf
|
||||
seq_puts
|
||||
seq_read
|
||||
set_cpus_allowed_ptr
|
||||
simple_attr_open
|
||||
simple_attr_read
|
||||
simple_attr_release
|
||||
simple_attr_write
|
||||
simple_open
|
||||
simple_read_from_buffer
|
||||
simple_write_to_buffer
|
||||
single_open
|
||||
single_release
|
||||
snprintf
|
||||
sprintf
|
||||
sscanf
|
||||
__stack_chk_fail
|
||||
strcasecmp
|
||||
strcmp
|
||||
strcpy
|
||||
strlen
|
||||
strncasecmp
|
||||
strncmp
|
||||
strncpy
|
||||
strnlen
|
||||
strsep
|
||||
subsys_system_register
|
||||
syscon_regmap_lookup_by_phandle
|
||||
sysfs_create_bin_file
|
||||
sysfs_create_file_ns
|
||||
sysfs_create_group
|
||||
sysfs_create_link
|
||||
sysfs_remove_group
|
||||
system_wq
|
||||
trace_event_buffer_commit
|
||||
trace_event_buffer_reserve
|
||||
trace_event_printf
|
||||
trace_event_raw_init
|
||||
trace_event_reg
|
||||
trace_handle_return
|
||||
tracepoint_probe_register
|
||||
trace_raw_output_prep
|
||||
__trace_trigger_soft_disabled
|
||||
__udelay
|
||||
unregister_pm_notifier
|
||||
usleep_range_state
|
||||
vfree
|
||||
vmalloc
|
||||
vmap
|
||||
vunmap
|
||||
wait_for_completion_timeout
|
||||
wake_up_process
|
||||
wakeup_source_register
|
||||
wakeup_source_unregister
|
||||
__warn_printk
|
||||
|
||||
# required by clk_exynos.ko
|
||||
__clk_get_hw
|
||||
clk_hw_get_parent
|
||||
clk_register
|
||||
clk_register_clkdev
|
||||
clk_register_fixed_factor
|
||||
clk_register_fixed_rate
|
||||
of_clk_add_provider
|
||||
of_clk_src_onecell_get
|
||||
|
||||
# required by cmupmucal.ko
|
||||
debugfs_create_u32
|
||||
debugfs_create_x32
|
||||
kstrtoint
|
||||
single_open_size
|
||||
strstr
|
||||
|
||||
# required by ems.ko
|
||||
activate_task
|
||||
add_timer_on
|
||||
__alloc_percpu
|
||||
available_idle_cpu
|
||||
balance_push_callback
|
||||
__bitmap_andnot
|
||||
__bitmap_complement
|
||||
__bitmap_intersects
|
||||
__bitmap_or
|
||||
bitmap_parse
|
||||
__bitmap_subset
|
||||
bpf_trace_run11
|
||||
bpf_trace_run7
|
||||
bpf_trace_run8
|
||||
cgroup_taskset_first
|
||||
cgroup_taskset_next
|
||||
check_preempt_curr
|
||||
__cpu_active_mask
|
||||
cpufreq_add_update_util_hook
|
||||
cpufreq_disable_fast_switch
|
||||
cpufreq_driver_fast_switch
|
||||
__cpufreq_driver_target
|
||||
cpufreq_enable_fast_switch
|
||||
cpufreq_frequency_table_get_index
|
||||
cpufreq_register_governor
|
||||
cpufreq_register_notifier
|
||||
cpufreq_remove_update_util_hook
|
||||
cpufreq_this_cpu_can_update
|
||||
cpufreq_unregister_notifier
|
||||
cpuidle_governor_latency_req
|
||||
cpuidle_register_governor
|
||||
cpupri_find_fitness
|
||||
cpu_scale
|
||||
cpu_topology
|
||||
_ctype
|
||||
deactivate_task
|
||||
del_timer_sync
|
||||
dev_pm_qos_add_notifier
|
||||
dev_pm_qos_add_request
|
||||
dev_pm_qos_remove_request
|
||||
dev_pm_qos_update_request
|
||||
double_rq_lock
|
||||
_find_next_and_bit
|
||||
get_pid_task
|
||||
housekeeping_cpumask
|
||||
__hrtimer_get_remaining
|
||||
init_task
|
||||
__init_waitqueue_head
|
||||
irq_work_queue
|
||||
irq_work_sync
|
||||
kobject_init_and_add
|
||||
kobject_uevent_env
|
||||
kthread_cancel_work_sync
|
||||
__kthread_init_worker
|
||||
kthread_queue_work
|
||||
kthread_worker_fn
|
||||
match_string
|
||||
memory_read_from_buffer
|
||||
migrate_swap
|
||||
pick_highest_pushable_task
|
||||
raw_notifier_call_chain
|
||||
raw_notifier_chain_register
|
||||
raw_notifier_chain_unregister
|
||||
_raw_read_lock
|
||||
_raw_read_unlock
|
||||
raw_spin_rq_lock_nested
|
||||
raw_spin_rq_unlock
|
||||
_raw_write_trylock
|
||||
_raw_write_unlock_irqrestore
|
||||
__rcu_read_lock
|
||||
__rcu_read_unlock
|
||||
reciprocal_value
|
||||
resched_curr
|
||||
sched_feat_keys
|
||||
sched_feat_names
|
||||
sched_setscheduler_nocheck
|
||||
sched_uclamp_used
|
||||
set_next_entity
|
||||
set_task_cpu
|
||||
smp_call_function_single_async
|
||||
static_key_disable
|
||||
stop_machine
|
||||
stop_one_cpu_nowait
|
||||
synchronize_rcu
|
||||
sysctl_sched_features
|
||||
system_32bit_el0_cpumask
|
||||
system_highpri_wq
|
||||
tick_nohz_get_sleep_length
|
||||
__traceiter_android_rvh_can_migrate_task
|
||||
__traceiter_android_rvh_check_preempt_wakeup
|
||||
__traceiter_android_rvh_cpu_cgroup_attach
|
||||
__traceiter_android_rvh_dequeue_task
|
||||
__traceiter_android_rvh_do_sched_yield
|
||||
__traceiter_android_rvh_enqueue_task
|
||||
__traceiter_android_rvh_find_busiest_queue
|
||||
__traceiter_android_rvh_find_lowest_rq
|
||||
__traceiter_android_rvh_find_new_ilb
|
||||
__traceiter_android_rvh_flush_task
|
||||
__traceiter_android_rvh_new_task_stats
|
||||
__traceiter_android_rvh_replace_next_task_fair
|
||||
__traceiter_android_rvh_sched_fork_init
|
||||
__traceiter_android_rvh_sched_newidle_balance
|
||||
__traceiter_android_rvh_sched_nohz_balancer_kick
|
||||
__traceiter_android_rvh_sched_rebalance_domains
|
||||
__traceiter_android_rvh_schedule
|
||||
__traceiter_android_rvh_select_fallback_rq
|
||||
__traceiter_android_rvh_select_task_rq_fair
|
||||
__traceiter_android_rvh_select_task_rq_rt
|
||||
__traceiter_android_rvh_set_task_cpu
|
||||
__traceiter_android_rvh_try_to_wake_up
|
||||
__traceiter_android_rvh_update_misfit_status
|
||||
__traceiter_android_rvh_wake_up_new_task
|
||||
__traceiter_android_vh_binder_restore_priority
|
||||
__traceiter_android_vh_binder_set_priority
|
||||
__traceiter_android_vh_binder_wakeup_ilocked
|
||||
__traceiter_android_vh_cpu_idle_enter
|
||||
__traceiter_android_vh_cpu_idle_exit
|
||||
__traceiter_android_vh_scheduler_tick
|
||||
__traceiter_android_vh_syscall_prctl_finished
|
||||
__traceiter_binder_transaction_received
|
||||
__tracepoint_android_rvh_can_migrate_task
|
||||
__tracepoint_android_rvh_check_preempt_wakeup
|
||||
__tracepoint_android_rvh_cpu_cgroup_attach
|
||||
__tracepoint_android_rvh_dequeue_task
|
||||
__tracepoint_android_rvh_do_sched_yield
|
||||
__tracepoint_android_rvh_enqueue_task
|
||||
__tracepoint_android_rvh_find_busiest_queue
|
||||
__tracepoint_android_rvh_find_lowest_rq
|
||||
__tracepoint_android_rvh_find_new_ilb
|
||||
__tracepoint_android_rvh_flush_task
|
||||
__tracepoint_android_rvh_new_task_stats
|
||||
__tracepoint_android_rvh_replace_next_task_fair
|
||||
__tracepoint_android_rvh_sched_fork_init
|
||||
__tracepoint_android_rvh_sched_newidle_balance
|
||||
__tracepoint_android_rvh_sched_nohz_balancer_kick
|
||||
__tracepoint_android_rvh_sched_rebalance_domains
|
||||
__tracepoint_android_rvh_schedule
|
||||
__tracepoint_android_rvh_select_fallback_rq
|
||||
__tracepoint_android_rvh_select_task_rq_fair
|
||||
__tracepoint_android_rvh_select_task_rq_rt
|
||||
__tracepoint_android_rvh_set_task_cpu
|
||||
__tracepoint_android_rvh_try_to_wake_up
|
||||
__tracepoint_android_rvh_update_misfit_status
|
||||
__tracepoint_android_rvh_wake_up_new_task
|
||||
__tracepoint_android_vh_binder_restore_priority
|
||||
__tracepoint_android_vh_binder_set_priority
|
||||
__tracepoint_android_vh_binder_wakeup_ilocked
|
||||
__tracepoint_android_vh_cpu_idle_enter
|
||||
__tracepoint_android_vh_cpu_idle_exit
|
||||
__tracepoint_android_vh_scheduler_tick
|
||||
__tracepoint_android_vh_syscall_prctl_finished
|
||||
__tracepoint_binder_transaction_received
|
||||
uclamp_eff_value
|
||||
update_rq_clock
|
||||
wake_up_if_idle
|
||||
|
||||
# required by exynos-chipid_v2.ko
|
||||
kasprintf
|
||||
soc_device_register
|
||||
|
||||
# required by exynos-esca-dm.ko
|
||||
sysfs_add_file_to_group
|
||||
|
||||
# required by exynos-pd.ko
|
||||
kstrdup
|
||||
of_device_is_available
|
||||
of_genpd_add_provider_simple
|
||||
pm_genpd_add_subdomain
|
||||
pm_genpd_init
|
||||
|
||||
# required by exynos-pm.ko
|
||||
irq_to_desc
|
||||
|
||||
# required by exynos-reboot.ko
|
||||
pm_power_off
|
||||
register_restart_handler
|
||||
|
||||
# required by exynos-s2i.ko
|
||||
__traceiter_android_vh_cpuidle_psci_enter
|
||||
__traceiter_android_vh_cpuidle_psci_exit
|
||||
__tracepoint_android_vh_cpuidle_psci_enter
|
||||
__tracepoint_android_vh_cpuidle_psci_exit
|
||||
|
||||
# required by exynos-sci_dbg.ko
|
||||
hrtimer_forward
|
||||
__platform_driver_probe
|
||||
|
||||
# required by exynos-seclog.ko
|
||||
debugfs_create_bool
|
||||
devm_free_irq
|
||||
flush_work
|
||||
|
||||
# required by exynos-ssp.ko
|
||||
devm_regulator_get_optional
|
||||
ktime_get_with_offset
|
||||
|
||||
# required by exynos_acpm.ko
|
||||
nsecs_to_jiffies
|
||||
register_die_notifier
|
||||
wait_for_completion_interruptible_timeout
|
||||
|
||||
# required by exynos_devfreq.ko
|
||||
devfreq_add_device
|
||||
devfreq_add_governor
|
||||
devfreq_recommended_opp
|
||||
devfreq_register_opp_notifier
|
||||
devfreq_remove_device
|
||||
devfreq_unregister_opp_notifier
|
||||
dev_pm_opp_add
|
||||
dev_pm_opp_disable
|
||||
dev_pm_opp_get_freq
|
||||
dev_pm_opp_put
|
||||
of_property_match_string
|
||||
srcu_notifier_call_chain
|
||||
srcu_notifier_chain_register
|
||||
srcu_notifier_chain_unregister
|
||||
__traceiter_clock_set_rate
|
||||
__tracepoint_clock_set_rate
|
||||
update_devfreq
|
||||
|
||||
# required by exynos_mct_v3.ko
|
||||
clockevents_config_and_register
|
||||
__clocksource_register_scale
|
||||
__cpuhp_setup_state
|
||||
irq_force_affinity
|
||||
of_clk_get_by_name
|
||||
of_irq_parse_one
|
||||
__traceiter_suspend_resume
|
||||
__tracepoint_suspend_resume
|
||||
|
||||
# required by exynos_pm_qos.ko
|
||||
kstrtoint_from_user
|
||||
noop_llseek
|
||||
__usecs_to_jiffies
|
||||
|
||||
# required by exynos_sci.ko
|
||||
devm_devfreq_register_notifier
|
||||
|
||||
# required by exynos_tty.ko
|
||||
console_stop
|
||||
console_suspend_enabled
|
||||
dma_get_slave_caps
|
||||
dma_release_channel
|
||||
dma_request_chan
|
||||
do_SAK
|
||||
handle_sysrq
|
||||
iomem_resource
|
||||
proc_create
|
||||
proc_mkdir
|
||||
__release_region
|
||||
__request_region
|
||||
sg_init_table
|
||||
sysrq_mask
|
||||
tty_flip_buffer_push
|
||||
tty_insert_flip_string_fixed_flag
|
||||
tty_kref_put
|
||||
tty_port_tty_get
|
||||
uart_add_one_port
|
||||
uart_console_write
|
||||
uart_get_baud_rate
|
||||
uart_parse_options
|
||||
uart_register_driver
|
||||
uart_remove_one_port
|
||||
uart_resume_port
|
||||
uart_set_options
|
||||
uart_suspend_port
|
||||
uart_try_toggle_sysrq
|
||||
uart_unregister_driver
|
||||
uart_update_timeout
|
||||
uart_write_wakeup
|
||||
|
||||
# required by exyswd-rng.ko
|
||||
devm_hwrng_register
|
||||
|
||||
# required by hdcp2.ko
|
||||
crypto_alloc_shash
|
||||
crypto_destroy_tfm
|
||||
crypto_shash_digest
|
||||
|
||||
# required by i2c-dev.ko
|
||||
bus_register_notifier
|
||||
bus_unregister_notifier
|
||||
cdev_device_add
|
||||
cdev_device_del
|
||||
cdev_init
|
||||
dev_set_name
|
||||
i2c_adapter_type
|
||||
i2c_bus_type
|
||||
i2c_for_each_dev
|
||||
i2c_get_adapter
|
||||
i2c_put_adapter
|
||||
i2c_smbus_xfer
|
||||
i2c_transfer
|
||||
i2c_transfer_buffer_flags
|
||||
i2c_verify_client
|
||||
register_chrdev_region
|
||||
sysfs_emit
|
||||
unregister_chrdev_region
|
||||
|
||||
# required by i2c-exynos5.ko
|
||||
i2c_del_adapter
|
||||
|
||||
# required by i3c-hci-exynos.ko
|
||||
i3c_generic_ibi_alloc_pool
|
||||
i3c_generic_ibi_free_pool
|
||||
i3c_generic_ibi_get_free_slot
|
||||
i3c_generic_ibi_recycle_slot
|
||||
i3c_master_add_i3c_dev_locked
|
||||
i3c_master_defslvs_locked
|
||||
i3c_master_disec_locked
|
||||
i3c_master_do_daa
|
||||
i3c_master_enec_locked
|
||||
i3c_master_entdaa_locked
|
||||
i3c_master_get_free_addr
|
||||
i3c_master_queue_ibi
|
||||
i3c_master_register
|
||||
i3c_master_set_info
|
||||
i3c_master_unregister
|
||||
|
||||
# required by ifconn_notifier.ko
|
||||
__init_rwsem
|
||||
|
||||
# required by irq-gic-v3-vh.ko
|
||||
__traceiter_android_rvh_gic_v3_set_affinity
|
||||
__tracepoint_android_rvh_gic_v3_set_affinity
|
||||
|
||||
# required by leds-s2mf301.ko
|
||||
devm_led_classdev_register_ext
|
||||
|
||||
# required by pinctrl-samsung-core.ko
|
||||
bitmap_to_arr32
|
||||
device_get_next_child_node
|
||||
devm_kmemdup
|
||||
fwnode_handle_put
|
||||
fwnode_property_present
|
||||
generic_handle_domain_irq
|
||||
gpiochip_lock_as_irq
|
||||
gpiochip_unlock_as_irq
|
||||
irq_create_mapping_affinity
|
||||
__irq_domain_add
|
||||
irq_domain_remove
|
||||
irq_domain_xlate_twocell
|
||||
irq_set_chained_handler_and_data
|
||||
kmemdup
|
||||
of_fwnode_ops
|
||||
of_node_name_eq
|
||||
of_prop_next_string
|
||||
pinctrl_add_gpio_range
|
||||
pinctrl_force_sleep
|
||||
pinctrl_remove_gpio_range
|
||||
pin_get_name
|
||||
platform_get_irq_optional
|
||||
strlcat
|
||||
strscpy
|
||||
|
||||
# required by s2m_chg_manager.ko
|
||||
alarm_cancel
|
||||
alarm_init
|
||||
alarm_start_relative
|
||||
|
||||
# required by s2m_muic_module.ko
|
||||
printk_timed_ratelimit
|
||||
|
||||
# required by s2m_pdic_module.ko
|
||||
devm_regulator_get
|
||||
ktime_get_ts64
|
||||
typec_get_drvdata
|
||||
typec_register_partner
|
||||
typec_register_port
|
||||
typec_set_data_role
|
||||
typec_set_pwr_opmode
|
||||
typec_set_pwr_role
|
||||
typec_unregister_partner
|
||||
typec_unregister_port
|
||||
|
||||
# required by s2mf301_mfd.ko
|
||||
i2c_new_dummy_device
|
||||
i2c_smbus_write_word_data
|
||||
i2c_unregister_device
|
||||
__irq_alloc_descs
|
||||
|
||||
# required by s2mpm07_pinctrl_9945.ko
|
||||
gpiochip_add_data_with_key
|
||||
gpiochip_remove
|
||||
|
||||
# required by s2mps27_adc.ko
|
||||
devm_iio_device_alloc
|
||||
__devm_iio_device_register
|
||||
|
||||
# required by s2mps27_key.ko
|
||||
devm_input_allocate_device
|
||||
input_event
|
||||
input_register_device
|
||||
input_set_capability
|
||||
input_unregister_device
|
||||
|
||||
# required by s2mps27_rtc.ko
|
||||
devm_rtc_device_register
|
||||
rtc_update_irq
|
||||
rtc_valid_tm
|
||||
system_freezable_wq
|
||||
|
||||
# required by s3c2410_wdt.ko
|
||||
atomic_notifier_call_chain
|
||||
_dev_emerg
|
||||
rtc_class_close
|
||||
rtc_class_open
|
||||
rtc_read_time
|
||||
system_state
|
||||
watchdog_init_timeout
|
||||
watchdog_register_device
|
||||
watchdog_set_restart_priority
|
||||
watchdog_unregister_device
|
||||
|
||||
# required by samsung-iommu-group-v9.ko
|
||||
iommu_group_alloc
|
||||
iommu_group_set_name
|
||||
|
||||
# required by samsung-secure-iova.ko
|
||||
gen_pool_avail
|
||||
gen_pool_create
|
||||
gen_pool_destroy
|
||||
gen_pool_first_fit_align
|
||||
gen_pool_size
|
||||
|
||||
# required by samsung_dma_heap.ko
|
||||
adjust_managed_page_count
|
||||
anon_inode_getfile
|
||||
__arm_smccc_hvc
|
||||
cma_alloc
|
||||
cma_release
|
||||
__copy_overflow
|
||||
deferred_free
|
||||
devm_add_action
|
||||
devm_gen_pool_create
|
||||
devm_kasprintf
|
||||
dma_buf_get_flags
|
||||
dmabuf_page_pool_alloc
|
||||
dmabuf_page_pool_create
|
||||
dmabuf_page_pool_destroy
|
||||
dmabuf_page_pool_free
|
||||
dma_heap_add
|
||||
dma_heap_get_dev
|
||||
dma_heap_get_drvdata
|
||||
dma_heap_get_name
|
||||
dma_map_sgtable
|
||||
dma_sync_sg_for_cpu
|
||||
dma_sync_sg_for_device
|
||||
dma_unmap_sg_attrs
|
||||
iommu_get_domain_for_dev
|
||||
is_dma_buf_file
|
||||
iterate_fd
|
||||
kvfree
|
||||
kvmalloc_node
|
||||
mutex_trylock
|
||||
ns_to_timespec64
|
||||
of_reserved_mem_device_init_by_idx
|
||||
of_reserved_mem_device_release
|
||||
preempt_schedule
|
||||
___ratelimit
|
||||
remap_pfn_range
|
||||
sg_alloc_table
|
||||
sg_free_table
|
||||
sg_next
|
||||
__sg_page_iter_next
|
||||
__sg_page_iter_start
|
||||
sort
|
||||
_totalram_pages
|
||||
|
||||
# required by samsung_iommu_v9.ko
|
||||
__alloc_pages
|
||||
device_link_add
|
||||
device_link_del
|
||||
devres_add
|
||||
__devres_alloc_node
|
||||
iommu_alloc_resv_region
|
||||
iommu_device_register
|
||||
iommu_device_sysfs_add
|
||||
iommu_device_sysfs_remove
|
||||
iommu_device_unlink
|
||||
iommu_fwspec_add_ids
|
||||
iommu_fwspec_free
|
||||
iommu_group_for_each_dev
|
||||
iommu_group_get
|
||||
iommu_group_get_iommudata
|
||||
iommu_group_set_iommudata
|
||||
iommu_report_device_fault
|
||||
kmem_cache_alloc
|
||||
kmem_cache_create
|
||||
kmem_cache_destroy
|
||||
kmem_cache_free
|
||||
mem_section
|
||||
of_find_node_with_property
|
||||
split_page
|
||||
|
||||
# required by scsi_srpmb.ko
|
||||
pfn_is_map_memory
|
||||
scsi_block_when_processing_errors
|
||||
__scsi_device_lookup_by_target
|
||||
scsi_execute_cmd
|
||||
scsi_print_sense_hdr
|
||||
sdev_prefix_printk
|
||||
wakeup_source_add
|
||||
wakeup_source_remove
|
||||
|
||||
# required by secmem.ko
|
||||
dma_buf_attach
|
||||
dma_buf_detach
|
||||
dma_buf_map_attachment
|
||||
dma_buf_unmap_attachment
|
||||
|
||||
# required by spi-s3c64xx.ko
|
||||
gpio_request_one
|
||||
__spi_alloc_controller
|
||||
spi_controller_resume
|
||||
spi_controller_suspend
|
||||
spi_delay_exec
|
||||
spi_finalize_current_message
|
||||
spi_register_controller
|
||||
spi_unregister_controller
|
||||
|
||||
# required by spidev.ko
|
||||
device_get_match_data
|
||||
device_property_match_string
|
||||
driver_unregister
|
||||
param_ops_uint
|
||||
_raw_spin_lock_irq
|
||||
_raw_spin_unlock_irq
|
||||
__register_chrdev
|
||||
__spi_register_driver
|
||||
spi_setup
|
||||
spi_sync
|
||||
stream_open
|
||||
__unregister_chrdev
|
||||
|
||||
# required by ufs-exynos-core.ko
|
||||
blk_crypto_reprogram_all_keys
|
||||
cancel_work_sync
|
||||
del_timer
|
||||
devm_blk_crypto_profile_init
|
||||
kobject_add
|
||||
kobject_init
|
||||
kobject_put
|
||||
kthread_should_stop
|
||||
mod_timer
|
||||
of_cpu_node_to_id
|
||||
of_property_read_variable_u8_array
|
||||
schedule
|
||||
scsi_dma_unmap
|
||||
scsi_done
|
||||
sysfs_create_files
|
||||
__traceiter_android_vh_ufs_check_int_errors
|
||||
__traceiter_android_vh_ufs_compl_command
|
||||
__tracepoint_android_vh_ufs_check_int_errors
|
||||
__tracepoint_android_vh_ufs_compl_command
|
||||
trace_print_symbols_seq
|
||||
ufshcd_auto_hibern8_update
|
||||
ufshcd_dme_configure_adapt
|
||||
ufshcd_dme_get_attr
|
||||
ufshcd_dme_set_attr
|
||||
ufshcd_hold
|
||||
ufshcd_mcq_poll_cqe_nolock
|
||||
ufshcd_mcq_write_cqis
|
||||
ufshcd_pltfrm_init
|
||||
ufshcd_release
|
||||
ufshcd_remove
|
||||
ufshcd_resume_complete
|
||||
ufshcd_shutdown
|
||||
ufshcd_suspend_prepare
|
||||
ufshcd_system_resume
|
||||
ufshcd_system_suspend
|
||||
ufshcd_uic_change_pwr_mode
|
||||
|
||||
# required by xperf.ko
|
||||
cpufreq_cpu_put
|
||||
cpufreq_quick_get
|
||||
cpufreq_quick_get_max
|
||||
freq_qos_add_request
|
||||
freq_qos_remove_request
|
||||
freq_qos_update_request
|
||||
kthread_bind
|
||||
kthread_bind_mask
|
||||
ktime_get_real_ts64
|
||||
of_property_read_u64
|
||||
stpcpy
|
||||
thermal_zone_get_temp
|
||||
thermal_zone_get_zone_by_name
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -18,8 +18,10 @@
|
||||
__alloc_skb
|
||||
alloc_workqueue
|
||||
alt_cb_patch_nops
|
||||
amba_bustype
|
||||
amba_driver_register
|
||||
amba_driver_unregister
|
||||
android_rvh_probe_register
|
||||
anon_inode_getfd
|
||||
__arch_clear_user
|
||||
__arch_copy_from_user
|
||||
@ -29,6 +31,7 @@
|
||||
argv_split
|
||||
arm64_use_ng_mappings
|
||||
__arm_smccc_smc
|
||||
__arm_smccc_sve_check
|
||||
async_schedule_node_domain
|
||||
async_synchronize_full_domain
|
||||
atomic_notifier_call_chain
|
||||
@ -36,8 +39,15 @@
|
||||
atomic_notifier_chain_unregister
|
||||
autoremove_wake_function
|
||||
backlight_device_set_brightness
|
||||
badblocks_check
|
||||
badblocks_clear
|
||||
badblocks_exit
|
||||
badblocks_init
|
||||
badblocks_set
|
||||
badblocks_show
|
||||
bcmp
|
||||
bdev_end_io_acct
|
||||
bdev_nr_zones
|
||||
bdev_start_io_acct
|
||||
bin2hex
|
||||
bio_endio
|
||||
@ -47,28 +57,54 @@
|
||||
__bitmap_andnot
|
||||
__bitmap_clear
|
||||
__bitmap_equal
|
||||
bitmap_find_next_zero_area_off
|
||||
bitmap_free
|
||||
bitmap_from_arr32
|
||||
__bitmap_or
|
||||
bitmap_parse
|
||||
bitmap_parselist
|
||||
bitmap_print_to_pagebuf
|
||||
__bitmap_set
|
||||
__bitmap_subset
|
||||
bitmap_to_arr32
|
||||
__bitmap_weight
|
||||
__bitmap_xor
|
||||
bitmap_zalloc
|
||||
blk_abort_request
|
||||
__blk_alloc_disk
|
||||
blk_execute_rq_nowait
|
||||
__blk_mq_alloc_disk
|
||||
blk_mq_alloc_tag_set
|
||||
blk_mq_complete_request
|
||||
blk_mq_end_request
|
||||
blk_mq_end_request_batch
|
||||
blk_mq_free_request
|
||||
blk_mq_free_tag_set
|
||||
blk_mq_map_queues
|
||||
blk_mq_start_request
|
||||
blk_mq_start_stopped_hw_queues
|
||||
blk_mq_stop_hw_queues
|
||||
blk_mq_unique_tag
|
||||
blk_mq_update_nr_hw_queues
|
||||
blk_op_str
|
||||
blk_queue_chunk_sectors
|
||||
blk_queue_flag_clear
|
||||
blk_queue_flag_set
|
||||
blk_queue_io_min
|
||||
blk_queue_io_opt
|
||||
blk_queue_logical_block_size
|
||||
blk_queue_max_discard_sectors
|
||||
blk_queue_max_hw_sectors
|
||||
blk_queue_max_write_zeroes_sectors
|
||||
blk_queue_max_zone_append_sectors
|
||||
blk_queue_physical_block_size
|
||||
blk_queue_required_elevator_features
|
||||
blk_queue_virt_boundary
|
||||
blk_queue_write_cache
|
||||
blk_revalidate_disk_zones
|
||||
blk_rq_map_user_io
|
||||
blk_rq_unmap_user
|
||||
blk_zone_cond_str
|
||||
blocking_notifier_call_chain
|
||||
blocking_notifier_chain_register
|
||||
blocking_notifier_chain_unregister
|
||||
@ -175,7 +211,15 @@
|
||||
component_match_add_release
|
||||
component_unbind_all
|
||||
config_ep_by_speed
|
||||
configfs_register_group
|
||||
configfs_register_subsystem
|
||||
configfs_unregister_group
|
||||
configfs_unregister_subsystem
|
||||
config_group_init
|
||||
config_group_init_type_name
|
||||
config_item_init_type_name
|
||||
config_item_put
|
||||
config_item_set_name
|
||||
console_set_on_cmdline
|
||||
console_suspend_enabled
|
||||
__const_udelay
|
||||
@ -195,6 +239,7 @@
|
||||
cpufreq_frequency_table_verify
|
||||
cpufreq_generic_attr
|
||||
cpufreq_get
|
||||
cpufreq_get_policy
|
||||
cpufreq_quick_get
|
||||
cpufreq_register_driver
|
||||
cpufreq_register_notifier
|
||||
@ -212,7 +257,9 @@
|
||||
cpu_number
|
||||
__cpu_online_mask
|
||||
cpu_pm_register_notifier
|
||||
cpu_pm_unregister_notifier
|
||||
__cpu_possible_mask
|
||||
__cpu_present_mask
|
||||
cpus_read_lock
|
||||
cpus_read_unlock
|
||||
cpu_subsys
|
||||
@ -231,13 +278,18 @@
|
||||
crypto_comp_decompress
|
||||
crypto_destroy_tfm
|
||||
crypto_has_alg
|
||||
crypto_register_notifier
|
||||
crypto_register_shash
|
||||
crypto_req_done
|
||||
crypto_shash_digest
|
||||
crypto_shash_finup
|
||||
crypto_shash_setkey
|
||||
crypto_shash_update
|
||||
crypto_skcipher_decrypt
|
||||
crypto_skcipher_encrypt
|
||||
crypto_skcipher_setkey
|
||||
crypto_unregister_notifier
|
||||
crypto_unregister_shash
|
||||
csum_ipv6_magic
|
||||
csum_tcpudp_nofold
|
||||
_ctype
|
||||
@ -245,9 +297,11 @@
|
||||
debugfs_attr_write
|
||||
debugfs_create_atomic_t
|
||||
debugfs_create_bool
|
||||
debugfs_create_devm_seqfile
|
||||
debugfs_create_dir
|
||||
debugfs_create_file
|
||||
debugfs_create_size_t
|
||||
debugfs_create_symlink
|
||||
debugfs_create_u16
|
||||
debugfs_create_u32
|
||||
debugfs_create_u64
|
||||
@ -293,11 +347,14 @@
|
||||
device_destroy
|
||||
device_find_child
|
||||
device_for_each_child
|
||||
device_get_child_node_count
|
||||
device_get_dma_attr
|
||||
device_get_match_data
|
||||
device_get_next_child_node
|
||||
device_initialize
|
||||
device_link_add
|
||||
device_link_del
|
||||
device_match_fwnode
|
||||
device_property_match_string
|
||||
device_property_present
|
||||
device_property_read_string
|
||||
@ -319,6 +376,7 @@
|
||||
devm_clk_get
|
||||
devm_clk_get_optional
|
||||
devm_clk_put
|
||||
devm_device_add_group
|
||||
devm_device_add_groups
|
||||
__devm_drm_dev_alloc
|
||||
devm_drm_panel_bridge_add_typed
|
||||
@ -336,6 +394,7 @@
|
||||
devm_i2c_new_dummy_device
|
||||
devm_iio_device_alloc
|
||||
__devm_iio_device_register
|
||||
devm_input_allocate_device
|
||||
devm_ioremap
|
||||
devm_ioremap_resource
|
||||
devm_ioremap_wc
|
||||
@ -360,6 +419,7 @@
|
||||
devm_platform_ioremap_resource
|
||||
devm_platform_ioremap_resource_byname
|
||||
devm_power_supply_register
|
||||
devm_regmap_add_irq_chip
|
||||
__devm_regmap_init
|
||||
__devm_regmap_init_i2c
|
||||
__devm_regmap_init_spi
|
||||
@ -406,7 +466,9 @@
|
||||
disable_irq
|
||||
disable_irq_nosync
|
||||
disable_percpu_irq
|
||||
disk_set_zoned
|
||||
dma_alloc_attrs
|
||||
dma_alloc_pages
|
||||
dma_async_device_register
|
||||
dma_async_device_unregister
|
||||
dma_async_tx_descriptor_init
|
||||
@ -442,6 +504,7 @@
|
||||
dma_fence_signal_locked
|
||||
dma_fence_wait_timeout
|
||||
dma_free_attrs
|
||||
dma_free_pages
|
||||
dma_get_slave_caps
|
||||
dma_get_slave_channel
|
||||
dma_heap_add
|
||||
@ -475,6 +538,7 @@
|
||||
downgrade_write
|
||||
down_interruptible
|
||||
down_read
|
||||
down_read_trylock
|
||||
down_trylock
|
||||
down_write
|
||||
dput
|
||||
@ -673,6 +737,7 @@
|
||||
emergency_restart
|
||||
enable_irq
|
||||
enable_percpu_irq
|
||||
errno_to_blk_status
|
||||
eth_type_trans
|
||||
eventfd_ctx_fdget
|
||||
eventfd_ctx_put
|
||||
@ -702,6 +767,7 @@
|
||||
find_vma_intersection
|
||||
finish_wait
|
||||
flush_dcache_page
|
||||
flush_delayed_work
|
||||
flush_work
|
||||
__flush_workqueue
|
||||
__folio_put
|
||||
@ -726,6 +792,12 @@
|
||||
full_name_hash
|
||||
fwnode_get_name
|
||||
fwnode_gpiod_get_index
|
||||
fwnode_handle_get
|
||||
fwnode_handle_put
|
||||
fwnode_property_present
|
||||
fwnode_property_read_string
|
||||
fwnode_property_read_u32_array
|
||||
gcd
|
||||
generic_file_llseek
|
||||
generic_handle_domain_irq
|
||||
genlmsg_put
|
||||
@ -738,6 +810,7 @@
|
||||
gen_pool_destroy
|
||||
gen_pool_first_fit_align
|
||||
gen_pool_free_owner
|
||||
gen_pool_has_addr
|
||||
gen_pool_size
|
||||
get_cpu_device
|
||||
get_cpu_idle_time
|
||||
@ -790,6 +863,7 @@
|
||||
handle_nested_irq
|
||||
handle_simple_irq
|
||||
handle_sysrq
|
||||
hashlen_string
|
||||
hex2bin
|
||||
hex_dump_to_buffer
|
||||
hex_to_bin
|
||||
@ -857,9 +931,11 @@
|
||||
init_timer_key
|
||||
init_wait_entry
|
||||
__init_waitqueue_head
|
||||
input_alloc_absinfo
|
||||
input_allocate_device
|
||||
input_close_device
|
||||
input_event
|
||||
input_ff_create
|
||||
input_free_device
|
||||
input_mt_destroy_slots
|
||||
input_mt_init_slots
|
||||
@ -879,6 +955,7 @@
|
||||
interval_tree_iter_next
|
||||
interval_tree_remove
|
||||
int_sqrt
|
||||
int_to_scsilun
|
||||
iomem_resource
|
||||
iommu_alloc_resv_region
|
||||
iommu_attach_group
|
||||
@ -908,15 +985,19 @@
|
||||
iommu_unmap
|
||||
iommu_unregister_device_fault_handler
|
||||
ioremap_prot
|
||||
io_schedule
|
||||
io_schedule_timeout
|
||||
iounmap
|
||||
ip_compute_csum
|
||||
ip_send_check
|
||||
__irq_alloc_descs
|
||||
__irq_apply_affinity_hint
|
||||
irq_create_mapping_affinity
|
||||
irq_create_of_mapping
|
||||
__irq_domain_add
|
||||
irq_domain_get_irq_data
|
||||
irq_domain_remove
|
||||
irq_domain_set_info
|
||||
irq_domain_xlate_twocell
|
||||
irq_get_irq_data
|
||||
irq_modify_status
|
||||
@ -928,6 +1009,7 @@
|
||||
irq_set_chip_data
|
||||
irq_set_irq_type
|
||||
irq_set_irq_wake
|
||||
irq_to_desc
|
||||
is_vmalloc_addr
|
||||
jiffies64_to_msecs
|
||||
jiffies
|
||||
@ -989,6 +1071,7 @@
|
||||
kthread_bind
|
||||
kthread_bind_mask
|
||||
kthread_cancel_delayed_work_sync
|
||||
kthread_cancel_work_sync
|
||||
kthread_complete_and_exit
|
||||
kthread_create_on_cpu
|
||||
kthread_create_on_node
|
||||
@ -999,9 +1082,13 @@
|
||||
kthread_flush_worker
|
||||
__kthread_init_worker
|
||||
kthread_mod_delayed_work
|
||||
kthread_park
|
||||
kthread_parkme
|
||||
kthread_queue_work
|
||||
kthread_should_park
|
||||
kthread_should_stop
|
||||
kthread_stop
|
||||
kthread_unpark
|
||||
kthread_worker_fn
|
||||
ktime_get
|
||||
ktime_get_mono_fast_ns
|
||||
@ -1040,6 +1127,7 @@
|
||||
mbox_free_channel
|
||||
mbox_request_channel
|
||||
mbox_send_message
|
||||
memchr
|
||||
memcmp
|
||||
memcpy
|
||||
__memcpy_fromio
|
||||
@ -1052,6 +1140,7 @@
|
||||
mem_section
|
||||
memset64
|
||||
memset
|
||||
__memset_io
|
||||
memstart_addr
|
||||
memunmap
|
||||
mfd_add_devices
|
||||
@ -1074,6 +1163,9 @@
|
||||
mipi_dsi_picture_parameter_set
|
||||
misc_deregister
|
||||
misc_register
|
||||
__mmap_lock_do_trace_acquire_returned
|
||||
__mmap_lock_do_trace_released
|
||||
__mmap_lock_do_trace_start_locking
|
||||
__mmdrop
|
||||
mod_delayed_work_on
|
||||
mod_node_page_state
|
||||
@ -1159,8 +1251,14 @@
|
||||
of_get_named_gpio_flags
|
||||
of_get_next_available_child
|
||||
of_get_next_child
|
||||
of_get_next_parent
|
||||
of_get_property
|
||||
of_get_regulator_init_data
|
||||
of_graph_get_next_endpoint
|
||||
of_graph_get_port_parent
|
||||
of_graph_get_remote_endpoint
|
||||
of_graph_is_present
|
||||
of_graph_parse_endpoint
|
||||
of_iomap
|
||||
of_irq_find_parent
|
||||
of_irq_get
|
||||
@ -1201,9 +1299,13 @@
|
||||
of_translate_address
|
||||
of_usb_host_tpl_support
|
||||
page_endio
|
||||
page_frag_alloc_align
|
||||
__page_frag_cache_drain
|
||||
page_frag_free
|
||||
panic
|
||||
panic_notifier_list
|
||||
param_array_ops
|
||||
param_get_int
|
||||
param_ops_bool
|
||||
param_ops_byte
|
||||
param_ops_charp
|
||||
@ -1225,6 +1327,8 @@
|
||||
pci_get_device
|
||||
pci_load_and_free_saved_state
|
||||
pci_load_saved_state
|
||||
pci_msi_mask_irq
|
||||
pci_msi_unmask_irq
|
||||
pci_read_config_dword
|
||||
pci_read_config_word
|
||||
__pci_register_driver
|
||||
@ -1241,6 +1345,10 @@
|
||||
pci_write_config_dword
|
||||
pci_write_config_word
|
||||
__per_cpu_offset
|
||||
perf_aux_output_begin
|
||||
perf_aux_output_end
|
||||
perf_aux_output_flag
|
||||
perf_event_addr_filters_sync
|
||||
perf_event_create_kernel_counter
|
||||
perf_event_disable
|
||||
perf_event_enable
|
||||
@ -1249,6 +1357,7 @@
|
||||
perf_event_read_value
|
||||
perf_event_release_kernel
|
||||
perf_event_update_userpage
|
||||
perf_get_aux
|
||||
perf_pmu_migrate_context
|
||||
perf_pmu_register
|
||||
perf_pmu_unregister
|
||||
@ -1273,6 +1382,12 @@
|
||||
pin_user_pages_fast
|
||||
pin_user_pages_remote
|
||||
pktgen_xfrm_outer_mode_output
|
||||
pkvm_iommu_driver_init
|
||||
pkvm_iommu_finalize
|
||||
pkvm_iommu_register
|
||||
pkvm_iommu_resume
|
||||
pkvm_iommu_suspend
|
||||
__pkvm_load_el2_module
|
||||
platform_bus_type
|
||||
platform_device_add
|
||||
platform_device_add_data
|
||||
@ -1339,6 +1454,7 @@
|
||||
_printk
|
||||
proc_create
|
||||
proc_create_data
|
||||
proc_create_single_data
|
||||
proc_dointvec
|
||||
proc_dostring
|
||||
proc_mkdir
|
||||
@ -1354,6 +1470,11 @@
|
||||
put_vaddr_frames
|
||||
queue_delayed_work_on
|
||||
queue_work_on
|
||||
radix_tree_delete_item
|
||||
radix_tree_gang_lookup
|
||||
radix_tree_insert
|
||||
radix_tree_lookup
|
||||
radix_tree_preload
|
||||
___ratelimit
|
||||
raw_notifier_call_chain
|
||||
raw_notifier_chain_register
|
||||
@ -1422,6 +1543,7 @@
|
||||
regmap_bulk_read
|
||||
regmap_bulk_write
|
||||
regmap_get_device
|
||||
regmap_irq_get_virq
|
||||
regmap_multi_reg_write
|
||||
regmap_multi_reg_write_bypassed
|
||||
regmap_raw_read
|
||||
@ -1470,6 +1592,8 @@
|
||||
rfkill_init_sw_state
|
||||
rfkill_register
|
||||
rfkill_unregister
|
||||
__root_device_register
|
||||
root_device_unregister
|
||||
rps_needed
|
||||
rtc_class_close
|
||||
rtc_class_open
|
||||
@ -1494,20 +1618,30 @@
|
||||
schedule_timeout
|
||||
schedule_timeout_interruptible
|
||||
scnprintf
|
||||
scsi_add_host_with_dma
|
||||
scsi_alloc_request
|
||||
scsi_autopm_get_device
|
||||
scsi_autopm_put_device
|
||||
scsi_block_requests
|
||||
scsi_block_when_processing_errors
|
||||
scsi_build_sense
|
||||
scsi_change_queue_depth
|
||||
scsi_cmd_allowed
|
||||
scsi_command_size_tbl
|
||||
scsi_device_get
|
||||
scsi_device_put
|
||||
scsi_done
|
||||
scsi_host_alloc
|
||||
scsi_host_put
|
||||
scsi_ioctl
|
||||
scsi_ioctl_block_when_processing_errors
|
||||
__scsi_iterate_devices
|
||||
scsi_normalize_sense
|
||||
__scsi_print_sense
|
||||
scsi_register_interface
|
||||
scsi_remove_host
|
||||
scsi_scan_host
|
||||
scsi_set_sense_information
|
||||
scsi_unblock_requests
|
||||
sdev_prefix_printk
|
||||
seq_hex_dump
|
||||
@ -1531,12 +1665,20 @@
|
||||
set_user_nice
|
||||
sg_alloc_table
|
||||
sg_alloc_table_from_pages_segment
|
||||
sg_copy_buffer
|
||||
sg_copy_from_buffer
|
||||
sg_copy_to_buffer
|
||||
sg_free_table
|
||||
sg_init_one
|
||||
sg_init_table
|
||||
sg_miter_next
|
||||
sg_miter_start
|
||||
sg_miter_stop
|
||||
sg_next
|
||||
__sg_page_iter_next
|
||||
__sg_page_iter_start
|
||||
sg_pcopy_from_buffer
|
||||
shmem_file_setup
|
||||
simple_attr_open
|
||||
simple_attr_read
|
||||
simple_attr_release
|
||||
@ -1590,7 +1732,9 @@
|
||||
snd_soc_card_get_kcontrol
|
||||
snd_soc_card_jack_new_pins
|
||||
snd_soc_component_disable_pin
|
||||
snd_soc_component_enable_pin
|
||||
snd_soc_component_force_enable_pin
|
||||
snd_soc_component_get_pin_status
|
||||
snd_soc_component_set_jack
|
||||
snd_soc_component_set_pll
|
||||
snd_soc_component_set_sysclk
|
||||
@ -1601,6 +1745,7 @@
|
||||
snd_soc_dai_set_sysclk
|
||||
snd_soc_dai_set_tdm_slot
|
||||
snd_soc_dapm_add_routes
|
||||
snd_soc_dapm_del_routes
|
||||
snd_soc_dapm_get_enum_double
|
||||
snd_soc_dapm_get_volsw
|
||||
snd_soc_dapm_ignore_suspend
|
||||
@ -1613,9 +1758,12 @@
|
||||
snd_soc_get_enum_double
|
||||
snd_soc_get_volsw
|
||||
snd_soc_get_volsw_range
|
||||
snd_soc_get_volsw_sx
|
||||
snd_soc_info_enum_double
|
||||
snd_soc_info_volsw
|
||||
snd_soc_info_volsw_range
|
||||
snd_soc_info_volsw_sx
|
||||
snd_soc_lookup_component
|
||||
snd_soc_new_compress
|
||||
snd_soc_of_get_dai_link_codecs
|
||||
snd_soc_of_get_dai_name
|
||||
@ -1624,6 +1772,7 @@
|
||||
snd_soc_put_enum_double
|
||||
snd_soc_put_volsw
|
||||
snd_soc_put_volsw_range
|
||||
snd_soc_put_volsw_sx
|
||||
snd_soc_register_card
|
||||
snd_soc_register_component
|
||||
snd_soc_runtime_set_dai_fmt
|
||||
@ -1655,6 +1804,7 @@
|
||||
srcu_notifier_chain_unregister
|
||||
sscanf
|
||||
__stack_chk_fail
|
||||
static_key_disable
|
||||
static_key_slow_dec
|
||||
static_key_slow_inc
|
||||
stop_machine
|
||||
@ -1695,6 +1845,7 @@
|
||||
synchronize_rcu
|
||||
syscon_regmap_lookup_by_phandle
|
||||
sysfs_add_file_to_group
|
||||
sysfs_add_link_to_group
|
||||
sysfs_create_file_ns
|
||||
sysfs_create_files
|
||||
sysfs_create_group
|
||||
@ -1704,14 +1855,17 @@
|
||||
sysfs_emit_at
|
||||
__sysfs_match_string
|
||||
sysfs_notify
|
||||
sysfs_remove_file_from_group
|
||||
sysfs_remove_file_ns
|
||||
sysfs_remove_group
|
||||
sysfs_remove_groups
|
||||
sysfs_remove_link
|
||||
sysfs_remove_link_from_group
|
||||
sysfs_streq
|
||||
sysfs_update_group
|
||||
sysrq_mask
|
||||
system_highpri_wq
|
||||
system_long_wq
|
||||
system_state
|
||||
system_unbound_wq
|
||||
system_wq
|
||||
@ -1754,11 +1908,16 @@
|
||||
trace_event_raw_init
|
||||
trace_event_reg
|
||||
trace_handle_return
|
||||
__traceiter_android_rvh_typec_tcpci_get_vbus
|
||||
__traceiter_android_vh_cpu_idle_enter
|
||||
__traceiter_android_vh_cpu_idle_exit
|
||||
__traceiter_android_vh_ipi_stop
|
||||
__traceiter_android_vh_scheduler_tick
|
||||
__traceiter_android_vh_sysrq_crash
|
||||
__traceiter_android_vh_typec_store_partner_src_caps
|
||||
__traceiter_android_vh_typec_tcpci_override_toggling
|
||||
__traceiter_android_vh_typec_tcpm_get_timer
|
||||
__traceiter_android_vh_typec_tcpm_log
|
||||
__traceiter_android_vh_ufs_check_int_errors
|
||||
__traceiter_android_vh_ufs_compl_command
|
||||
__traceiter_android_vh_ufs_fill_prdt
|
||||
@ -1766,18 +1925,27 @@
|
||||
__traceiter_android_vh_ufs_send_command
|
||||
__traceiter_android_vh_ufs_send_tm_command
|
||||
__traceiter_android_vh_ufs_send_uic_command
|
||||
__traceiter_android_vh_ufs_update_sdev
|
||||
__traceiter_android_vh_ufs_update_sysfs
|
||||
__traceiter_clock_set_rate
|
||||
__traceiter_device_pm_callback_end
|
||||
__traceiter_device_pm_callback_start
|
||||
__traceiter_gpu_mem_total
|
||||
__traceiter_mmap_lock_acquire_returned
|
||||
__traceiter_mmap_lock_released
|
||||
__traceiter_mmap_lock_start_locking
|
||||
__traceiter_suspend_resume
|
||||
trace_output_call
|
||||
__tracepoint_android_rvh_typec_tcpci_get_vbus
|
||||
__tracepoint_android_vh_cpu_idle_enter
|
||||
__tracepoint_android_vh_cpu_idle_exit
|
||||
__tracepoint_android_vh_ipi_stop
|
||||
__tracepoint_android_vh_scheduler_tick
|
||||
__tracepoint_android_vh_sysrq_crash
|
||||
__tracepoint_android_vh_typec_store_partner_src_caps
|
||||
__tracepoint_android_vh_typec_tcpci_override_toggling
|
||||
__tracepoint_android_vh_typec_tcpm_get_timer
|
||||
__tracepoint_android_vh_typec_tcpm_log
|
||||
__tracepoint_android_vh_ufs_check_int_errors
|
||||
__tracepoint_android_vh_ufs_compl_command
|
||||
__tracepoint_android_vh_ufs_fill_prdt
|
||||
@ -1785,11 +1953,15 @@
|
||||
__tracepoint_android_vh_ufs_send_command
|
||||
__tracepoint_android_vh_ufs_send_tm_command
|
||||
__tracepoint_android_vh_ufs_send_uic_command
|
||||
__tracepoint_android_vh_ufs_update_sdev
|
||||
__tracepoint_android_vh_ufs_update_sysfs
|
||||
__tracepoint_clock_set_rate
|
||||
__tracepoint_device_pm_callback_end
|
||||
__tracepoint_device_pm_callback_start
|
||||
__tracepoint_gpu_mem_total
|
||||
__tracepoint_mmap_lock_acquire_returned
|
||||
__tracepoint_mmap_lock_released
|
||||
__tracepoint_mmap_lock_start_locking
|
||||
tracepoint_probe_register
|
||||
tracepoint_probe_unregister
|
||||
__tracepoint_suspend_resume
|
||||
@ -1799,6 +1971,8 @@
|
||||
trace_print_hex_seq
|
||||
trace_print_symbols_seq
|
||||
trace_raw_output_prep
|
||||
trace_seq_printf
|
||||
trace_seq_putc
|
||||
__trace_trigger_soft_disabled
|
||||
try_module_get
|
||||
try_to_del_timer_sync
|
||||
@ -1892,6 +2066,8 @@
|
||||
usb_unregister_notify
|
||||
__usecs_to_jiffies
|
||||
usleep_range_state
|
||||
utf8_data_table
|
||||
uuid_gen
|
||||
v4l2_ctrl_handler_free
|
||||
v4l2_ctrl_handler_init_class
|
||||
v4l2_ctrl_log_status
|
||||
@ -2008,6 +2184,15 @@
|
||||
wiphy_unregister
|
||||
woken_wake_function
|
||||
work_busy
|
||||
__xa_alloc
|
||||
xa_clear_mark
|
||||
xa_destroy
|
||||
xa_erase
|
||||
xa_find
|
||||
xa_find_after
|
||||
xa_get_mark
|
||||
xa_load
|
||||
xa_set_mark
|
||||
__xfrm_state_destroy
|
||||
xfrm_state_lookup_byspi
|
||||
xfrm_stateonly_find
|
||||
|
@ -15,6 +15,7 @@
|
||||
adjust_managed_page_count
|
||||
aes_encrypt
|
||||
aes_expandkey
|
||||
alarm_expires_remaining
|
||||
alloc_anon_inode
|
||||
alloc_candev_mqs
|
||||
alloc_can_err_skb
|
||||
@ -625,6 +626,7 @@
|
||||
dev_get_flags
|
||||
dev_get_regmap
|
||||
dev_get_stats
|
||||
dev_get_tstats64
|
||||
device_add
|
||||
device_add_disk
|
||||
device_add_groups
|
||||
@ -921,6 +923,8 @@
|
||||
driver_unregister
|
||||
drm_add_edid_modes
|
||||
drm_add_modes_noedid
|
||||
drm_atomic_bridge_chain_disable
|
||||
drm_atomic_bridge_chain_enable
|
||||
drm_atomic_commit
|
||||
drm_atomic_get_connector_state
|
||||
drm_atomic_get_crtc_state
|
||||
@ -1154,6 +1158,7 @@
|
||||
eth_mac_addr
|
||||
ethnl_cable_test_fault_length
|
||||
ethnl_cable_test_result
|
||||
eth_platform_get_mac_address
|
||||
eth_prepare_mac_addr_change
|
||||
ethtool_convert_legacy_u32_to_link_mode
|
||||
ethtool_convert_link_mode_to_legacy_u32
|
||||
@ -1910,6 +1915,7 @@
|
||||
__kmalloc
|
||||
kmalloc_caches
|
||||
kmalloc_large
|
||||
kmalloc_large_node
|
||||
kmalloc_node_trace
|
||||
__kmalloc_node_track_caller
|
||||
kmalloc_trace
|
||||
@ -1965,6 +1971,7 @@
|
||||
kstrtoul_from_user
|
||||
kstrtoull
|
||||
kstrtoull_from_user
|
||||
kswapd
|
||||
kthread_bind
|
||||
kthread_bind_mask
|
||||
kthread_cancel_delayed_work_sync
|
||||
@ -2077,6 +2084,7 @@
|
||||
mdiobus_modify_changed
|
||||
__mdiobus_read
|
||||
mdiobus_read
|
||||
__mdiobus_register
|
||||
mdiobus_unregister
|
||||
__mdiobus_write
|
||||
mdiobus_write
|
||||
@ -2208,6 +2216,7 @@
|
||||
netif_schedule_queue
|
||||
netif_set_real_num_rx_queues
|
||||
netif_set_real_num_tx_queues
|
||||
netif_set_tso_max_size
|
||||
__netif_set_xps_queue
|
||||
netif_stacked_transfer_operstate
|
||||
netif_tx_lock
|
||||
@ -2488,6 +2497,7 @@
|
||||
perf_trace_run_bpf_submit
|
||||
phy_attached_info
|
||||
phy_calibrate
|
||||
phy_do_ioctl_running
|
||||
phy_drivers_register
|
||||
phy_drivers_unregister
|
||||
phy_error
|
||||
@ -2532,6 +2542,7 @@
|
||||
phy_power_on
|
||||
phy_read_mmd
|
||||
phy_set_mode_ext
|
||||
phy_suspend
|
||||
phy_trigger_machine
|
||||
phy_write_mmd
|
||||
pick_highest_pushable_task
|
||||
@ -3512,6 +3523,8 @@
|
||||
__traceiter_android_rvh_select_task_rq_rt
|
||||
__traceiter_android_rvh_set_balance_anon_file_reclaim
|
||||
__traceiter_android_rvh_set_cpus_allowed_by_task
|
||||
__traceiter_android_rvh_set_gfp_zone_flags
|
||||
__traceiter_android_rvh_set_readahead_gfp_mask
|
||||
__traceiter_android_rvh_setscheduler
|
||||
__traceiter_android_rvh_set_task_cpu
|
||||
__traceiter_android_rvh_set_user_nice
|
||||
@ -3553,6 +3566,7 @@
|
||||
__traceiter_android_vh_ignore_dmabuf_vmap_bounds
|
||||
__traceiter_android_vh_ipi_stop
|
||||
__traceiter_android_vh_jiffies_update
|
||||
__traceiter_android_vh_kswapd_per_node
|
||||
__traceiter_android_vh_printk_hotplug
|
||||
__traceiter_android_vh_rproc_recovery
|
||||
__traceiter_android_vh_rproc_recovery_set
|
||||
@ -3641,6 +3655,8 @@
|
||||
__tracepoint_android_rvh_select_task_rq_rt
|
||||
__tracepoint_android_rvh_set_balance_anon_file_reclaim
|
||||
__tracepoint_android_rvh_set_cpus_allowed_by_task
|
||||
__tracepoint_android_rvh_set_gfp_zone_flags
|
||||
__tracepoint_android_rvh_set_readahead_gfp_mask
|
||||
__tracepoint_android_rvh_setscheduler
|
||||
__tracepoint_android_rvh_set_task_cpu
|
||||
__tracepoint_android_rvh_set_user_nice
|
||||
@ -3682,6 +3698,7 @@
|
||||
__tracepoint_android_vh_ignore_dmabuf_vmap_bounds
|
||||
__tracepoint_android_vh_ipi_stop
|
||||
__tracepoint_android_vh_jiffies_update
|
||||
__tracepoint_android_vh_kswapd_per_node
|
||||
__tracepoint_android_vh_printk_hotplug
|
||||
__tracepoint_android_vh_rproc_recovery
|
||||
__tracepoint_android_vh_rproc_recovery_set
|
||||
@ -3872,6 +3889,7 @@
|
||||
usb_add_phy_dev
|
||||
usb_alloc_coherent
|
||||
usb_alloc_urb
|
||||
usb_altnum_to_altsetting
|
||||
usb_anchor_urb
|
||||
usb_assign_descriptors
|
||||
usb_autopm_get_interface
|
||||
@ -3893,6 +3911,8 @@
|
||||
usb_disabled
|
||||
usb_driver_claim_interface
|
||||
usb_driver_release_interface
|
||||
usb_driver_set_configuration
|
||||
usb_enable_lpm
|
||||
usb_ep_alloc_request
|
||||
usb_ep_autoconfig
|
||||
usb_ep_dequeue
|
||||
@ -3911,6 +3931,7 @@
|
||||
usb_get_dev
|
||||
usb_get_from_anchor
|
||||
usb_get_intf
|
||||
usb_get_urb
|
||||
usb_ifnum_to_if
|
||||
usb_interface_id
|
||||
usb_kill_urb
|
||||
@ -3924,6 +3945,7 @@
|
||||
usb_register_driver
|
||||
usb_register_notify
|
||||
usb_remove_phy
|
||||
usb_reset_configuration
|
||||
usb_role_switch_find_by_fwnode
|
||||
usb_role_switch_get_drvdata
|
||||
usb_role_switch_register
|
||||
@ -3954,8 +3976,10 @@
|
||||
usb_show_dynids
|
||||
usb_speed_string
|
||||
usb_store_new_id
|
||||
usb_string
|
||||
usb_string_id
|
||||
usb_submit_urb
|
||||
usb_unlink_urb
|
||||
usb_unpoison_urb
|
||||
usb_unregister_notify
|
||||
__usecs_to_jiffies
|
||||
@ -3995,11 +4019,18 @@
|
||||
v4l2_fh_release
|
||||
v4l2_m2m_ctx_init
|
||||
v4l2_m2m_ctx_release
|
||||
v4l2_m2m_dqbuf
|
||||
v4l2_m2m_init
|
||||
v4l2_m2m_job_finish
|
||||
v4l2_m2m_poll
|
||||
v4l2_m2m_querybuf
|
||||
v4l2_m2m_register_media_controller
|
||||
v4l2_m2m_release
|
||||
v4l2_m2m_reqbufs
|
||||
v4l2_m2m_request_queue
|
||||
v4l2_m2m_streamoff
|
||||
v4l2_m2m_streamon
|
||||
v4l2_m2m_try_schedule
|
||||
v4l2_m2m_unregister_media_controller
|
||||
v4l2_s_ctrl
|
||||
v4l2_src_change_event_subscribe
|
||||
|
@ -902,6 +902,7 @@
|
||||
dmabuf_page_pool_create
|
||||
dmabuf_page_pool_destroy
|
||||
dmabuf_page_pool_free
|
||||
dmabuf_page_pool_get_size
|
||||
dma_heap_add
|
||||
dma_heap_get_dev
|
||||
dma_heap_get_name
|
||||
@ -1071,7 +1072,6 @@
|
||||
balloon_page_dequeue
|
||||
balloon_page_enqueue
|
||||
__ClearPageMovable
|
||||
contig_page_data
|
||||
init_on_free
|
||||
mutex_trylock
|
||||
page_relinquish
|
||||
@ -1361,6 +1361,7 @@
|
||||
capable
|
||||
__class_register
|
||||
class_unregister
|
||||
contig_page_data
|
||||
__cpu_possible_mask
|
||||
crypto_alloc_base
|
||||
crypto_comp_compress
|
||||
|
5385
android/abi_gki_aarch64_vivo
Normal file
5385
android/abi_gki_aarch64_vivo
Normal file
File diff suppressed because it is too large
Load Diff
@ -110,10 +110,6 @@
|
||||
__traceiter_android_vh_free_task
|
||||
__tracepoint_android_vh_free_task
|
||||
jiffies_64
|
||||
__traceiter_android_rvh_after_enqueue_task
|
||||
__traceiter_android_rvh_after_dequeue_task
|
||||
__tracepoint_android_rvh_after_enqueue_task
|
||||
__tracepoint_android_rvh_after_dequeue_task
|
||||
__traceiter_android_rvh_check_preempt_tick
|
||||
__traceiter_android_rvh_dequeue_entity
|
||||
__traceiter_android_rvh_enqueue_entity
|
||||
@ -129,3 +125,11 @@
|
||||
wakeup_sources_read_unlock
|
||||
wakeup_sources_walk_start
|
||||
wakeup_sources_walk_next
|
||||
|
||||
#required by migt.ko
|
||||
__traceiter_android_rvh_after_enqueue_task
|
||||
__traceiter_android_rvh_after_dequeue_task
|
||||
__traceiter_android_vh_map_util_freq
|
||||
__tracepoint_android_rvh_after_enqueue_task
|
||||
__tracepoint_android_rvh_after_dequeue_task
|
||||
__tracepoint_android_vh_map_util_freq
|
||||
|
@ -77,8 +77,20 @@ can_rx_unregister
|
||||
can_send
|
||||
can_skb_get_frame_len
|
||||
can_sock_destruct
|
||||
cdc_ncm_bind_common
|
||||
cdc_ncm_change_mtu
|
||||
cdc_ncm_fill_tx_frame
|
||||
cdc_ncm_rx_fixup
|
||||
cdc_ncm_rx_verify_ndp16
|
||||
cdc_ncm_rx_verify_ndp32
|
||||
cdc_ncm_rx_verify_nth16
|
||||
cdc_ncm_rx_verify_nth32
|
||||
cdc_ncm_select_altsetting
|
||||
cdc_ncm_tx_fixup
|
||||
cdc_ncm_unbind
|
||||
close_candev
|
||||
free_candev
|
||||
generic_mii_ioctl
|
||||
h4_recv_buf
|
||||
hci_alloc_dev_priv
|
||||
hci_cmd_sync
|
||||
@ -166,6 +178,15 @@ lowpan_register_netdev
|
||||
lowpan_register_netdevice
|
||||
lowpan_unregister_netdev
|
||||
lowpan_unregister_netdevice
|
||||
mii_check_gmii_support
|
||||
mii_check_link
|
||||
mii_check_media
|
||||
mii_ethtool_get_link_ksettings
|
||||
mii_ethtool_gset
|
||||
mii_ethtool_set_link_ksettings
|
||||
mii_ethtool_sset
|
||||
mii_link_ok
|
||||
mii_nway_restart
|
||||
nfc_add_se
|
||||
nfc_alloc_recv_skb
|
||||
nfc_allocate_device
|
||||
@ -228,6 +249,7 @@ rfkill_set_states
|
||||
rfkill_set_sw_state
|
||||
rfkill_soft_blocked
|
||||
rfkill_unregister
|
||||
rtl8152_get_version
|
||||
safe_candev_priv
|
||||
slhc_compress
|
||||
slhc_free
|
||||
@ -263,6 +285,50 @@ usb_serial_port_softint
|
||||
usb_serial_register_drivers
|
||||
usb_serial_resume
|
||||
usb_serial_suspend
|
||||
usbnet_cdc_bind
|
||||
usbnet_cdc_status
|
||||
usbnet_cdc_unbind
|
||||
usbnet_cdc_update_filter
|
||||
usbnet_cdc_zte_rx_fixup
|
||||
usbnet_change_mtu
|
||||
usbnet_defer_kevent
|
||||
usbnet_device_suggests_idle
|
||||
usbnet_disconnect
|
||||
usbnet_ether_cdc_bind
|
||||
usbnet_generic_cdc_bind
|
||||
usbnet_get_drvinfo
|
||||
usbnet_get_endpoints
|
||||
usbnet_get_ethernet_addr
|
||||
usbnet_get_link
|
||||
usbnet_get_link_ksettings_internal
|
||||
usbnet_get_link_ksettings_mii
|
||||
usbnet_get_msglevel
|
||||
usbnet_link_change
|
||||
usbnet_manage_power
|
||||
usbnet_nway_reset
|
||||
usbnet_open
|
||||
usbnet_pause_rx
|
||||
usbnet_probe
|
||||
usbnet_purge_paused_rxq
|
||||
usbnet_read_cmd
|
||||
usbnet_read_cmd_nopm
|
||||
usbnet_resume
|
||||
usbnet_resume_rx
|
||||
usbnet_set_link_ksettings_mii
|
||||
usbnet_set_msglevel
|
||||
usbnet_set_rx_mode
|
||||
usbnet_skb_return
|
||||
usbnet_start_xmit
|
||||
usbnet_status_start
|
||||
usbnet_status_stop
|
||||
usbnet_stop
|
||||
usbnet_suspend
|
||||
usbnet_tx_timeout
|
||||
usbnet_unlink_rx_urbs
|
||||
usbnet_update_max_qlen
|
||||
usbnet_write_cmd
|
||||
usbnet_write_cmd_async
|
||||
usbnet_write_cmd_nopm
|
||||
wpan_phy_find
|
||||
wpan_phy_for_each
|
||||
wpan_phy_free
|
||||
|
@ -83,6 +83,17 @@ can_rx_unregister
|
||||
can_send
|
||||
can_skb_get_frame_len
|
||||
can_sock_destruct
|
||||
cdc_ncm_bind_common
|
||||
cdc_ncm_change_mtu
|
||||
cdc_ncm_fill_tx_frame
|
||||
cdc_ncm_rx_fixup
|
||||
cdc_ncm_rx_verify_ndp16
|
||||
cdc_ncm_rx_verify_ndp32
|
||||
cdc_ncm_rx_verify_nth16
|
||||
cdc_ncm_rx_verify_nth32
|
||||
cdc_ncm_select_altsetting
|
||||
cdc_ncm_tx_fixup
|
||||
cdc_ncm_unbind
|
||||
cfg80211_any_usable_channels
|
||||
cfg80211_assoc_comeback
|
||||
cfg80211_assoc_failure
|
||||
@ -175,11 +186,13 @@ cfg80211_tx_mlme_mgmt
|
||||
cfg80211_unlink_bss
|
||||
cfg80211_unregister_wdev
|
||||
cfg80211_update_owe_info_event
|
||||
cfg80211_valid_disable_subchannel_bitmap
|
||||
cfg80211_vendor_cmd_get_sender
|
||||
cfg80211_vendor_cmd_reply
|
||||
close_candev
|
||||
free_candev
|
||||
freq_reg_info
|
||||
generic_mii_ioctl
|
||||
get_wiphy_regdom
|
||||
h4_recv_buf
|
||||
hci_alloc_dev_priv
|
||||
@ -414,6 +427,15 @@ lowpan_register_netdev
|
||||
lowpan_register_netdevice
|
||||
lowpan_unregister_netdev
|
||||
lowpan_unregister_netdevice
|
||||
mii_check_gmii_support
|
||||
mii_check_link
|
||||
mii_check_media
|
||||
mii_ethtool_get_link_ksettings
|
||||
mii_ethtool_gset
|
||||
mii_ethtool_set_link_ksettings
|
||||
mii_ethtool_sset
|
||||
mii_link_ok
|
||||
mii_nway_restart
|
||||
nfc_add_se
|
||||
nfc_alloc_recv_skb
|
||||
nfc_allocate_device
|
||||
@ -484,6 +506,7 @@ rfkill_set_states
|
||||
rfkill_set_sw_state
|
||||
rfkill_soft_blocked
|
||||
rfkill_unregister
|
||||
rtl8152_get_version
|
||||
safe_candev_priv
|
||||
slhc_compress
|
||||
slhc_free
|
||||
@ -519,6 +542,50 @@ usb_serial_port_softint
|
||||
usb_serial_register_drivers
|
||||
usb_serial_resume
|
||||
usb_serial_suspend
|
||||
usbnet_cdc_bind
|
||||
usbnet_cdc_status
|
||||
usbnet_cdc_unbind
|
||||
usbnet_cdc_update_filter
|
||||
usbnet_cdc_zte_rx_fixup
|
||||
usbnet_change_mtu
|
||||
usbnet_defer_kevent
|
||||
usbnet_device_suggests_idle
|
||||
usbnet_disconnect
|
||||
usbnet_ether_cdc_bind
|
||||
usbnet_generic_cdc_bind
|
||||
usbnet_get_drvinfo
|
||||
usbnet_get_endpoints
|
||||
usbnet_get_ethernet_addr
|
||||
usbnet_get_link
|
||||
usbnet_get_link_ksettings_internal
|
||||
usbnet_get_link_ksettings_mii
|
||||
usbnet_get_msglevel
|
||||
usbnet_link_change
|
||||
usbnet_manage_power
|
||||
usbnet_nway_reset
|
||||
usbnet_open
|
||||
usbnet_pause_rx
|
||||
usbnet_probe
|
||||
usbnet_purge_paused_rxq
|
||||
usbnet_read_cmd
|
||||
usbnet_read_cmd_nopm
|
||||
usbnet_resume
|
||||
usbnet_resume_rx
|
||||
usbnet_set_link_ksettings_mii
|
||||
usbnet_set_msglevel
|
||||
usbnet_set_rx_mode
|
||||
usbnet_skb_return
|
||||
usbnet_start_xmit
|
||||
usbnet_status_start
|
||||
usbnet_status_stop
|
||||
usbnet_stop
|
||||
usbnet_suspend
|
||||
usbnet_tx_timeout
|
||||
usbnet_unlink_rx_urbs
|
||||
usbnet_update_max_qlen
|
||||
usbnet_write_cmd
|
||||
usbnet_write_cmd_async
|
||||
usbnet_write_cmd_nopm
|
||||
wdev_chandef
|
||||
wdev_to_ieee80211_vif
|
||||
wiphy_apply_custom_regulatory
|
||||
|
@ -5,6 +5,7 @@ drivers/bluetooth/hci_uart.ko
|
||||
drivers/net/can/dev/can-dev.ko
|
||||
drivers/net/can/slcan/slcan.ko
|
||||
drivers/net/can/vcan.ko
|
||||
drivers/net/mii.ko
|
||||
drivers/net/ppp/bsd_comp.ko
|
||||
drivers/net/ppp/ppp_deflate.ko
|
||||
drivers/net/ppp/ppp_generic.ko
|
||||
@ -12,6 +13,16 @@ drivers/net/ppp/ppp_mppe.ko
|
||||
drivers/net/ppp/pppox.ko
|
||||
drivers/net/ppp/pptp.ko
|
||||
drivers/net/slip/slhc.ko
|
||||
drivers/net/usb/aqc111.ko
|
||||
drivers/net/usb/asix.ko
|
||||
drivers/net/usb/ax88179_178a.ko
|
||||
drivers/net/usb/cdc_eem.ko
|
||||
drivers/net/usb/cdc_ether.ko
|
||||
drivers/net/usb/cdc_ncm.ko
|
||||
drivers/net/usb/r8152.ko
|
||||
drivers/net/usb/r8153_ecm.ko
|
||||
drivers/net/usb/rtl8150.ko
|
||||
drivers/net/usb/usbnet.ko
|
||||
drivers/usb/class/cdc-acm.ko
|
||||
drivers/usb/serial/ftdi_sio.ko
|
||||
drivers/usb/serial/usbserial.ko
|
||||
|
@ -6,6 +6,7 @@ drivers/bluetooth/hci_uart.ko
|
||||
drivers/net/can/dev/can-dev.ko
|
||||
drivers/net/can/slcan/slcan.ko
|
||||
drivers/net/can/vcan.ko
|
||||
drivers/net/mii.ko
|
||||
drivers/net/ppp/bsd_comp.ko
|
||||
drivers/net/ppp/ppp_deflate.ko
|
||||
drivers/net/ppp/ppp_generic.ko
|
||||
@ -13,6 +14,16 @@ drivers/net/ppp/ppp_mppe.ko
|
||||
drivers/net/ppp/pppox.ko
|
||||
drivers/net/ppp/pptp.ko
|
||||
drivers/net/slip/slhc.ko
|
||||
drivers/net/usb/aqc111.ko
|
||||
drivers/net/usb/asix.ko
|
||||
drivers/net/usb/ax88179_178a.ko
|
||||
drivers/net/usb/cdc_eem.ko
|
||||
drivers/net/usb/cdc_ether.ko
|
||||
drivers/net/usb/cdc_ncm.ko
|
||||
drivers/net/usb/r8152.ko
|
||||
drivers/net/usb/r8153_ecm.ko
|
||||
drivers/net/usb/rtl8150.ko
|
||||
drivers/net/usb/usbnet.ko
|
||||
drivers/usb/class/cdc-acm.ko
|
||||
drivers/usb/serial/ftdi_sio.ko
|
||||
drivers/usb/serial/usbserial.ko
|
||||
|
@ -5,6 +5,7 @@ drivers/bluetooth/hci_uart.ko
|
||||
drivers/net/can/dev/can-dev.ko
|
||||
drivers/net/can/slcan/slcan.ko
|
||||
drivers/net/can/vcan.ko
|
||||
drivers/net/mii.ko
|
||||
drivers/net/ppp/bsd_comp.ko
|
||||
drivers/net/ppp/ppp_deflate.ko
|
||||
drivers/net/ppp/ppp_generic.ko
|
||||
@ -12,6 +13,16 @@ drivers/net/ppp/ppp_mppe.ko
|
||||
drivers/net/ppp/pppox.ko
|
||||
drivers/net/ppp/pptp.ko
|
||||
drivers/net/slip/slhc.ko
|
||||
drivers/net/usb/aqc111.ko
|
||||
drivers/net/usb/asix.ko
|
||||
drivers/net/usb/ax88179_178a.ko
|
||||
drivers/net/usb/cdc_eem.ko
|
||||
drivers/net/usb/cdc_ether.ko
|
||||
drivers/net/usb/cdc_ncm.ko
|
||||
drivers/net/usb/r8152.ko
|
||||
drivers/net/usb/r8153_ecm.ko
|
||||
drivers/net/usb/rtl8150.ko
|
||||
drivers/net/usb/usbnet.ko
|
||||
drivers/usb/class/cdc-acm.ko
|
||||
drivers/usb/serial/ftdi_sio.ko
|
||||
drivers/usb/serial/usbserial.ko
|
||||
|
@ -26,6 +26,16 @@ chosen {
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
sbl_region: sbl@2f00000 {
|
||||
reg = <0x02f00000 0x100000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
external_image_region: external-image@3100000 {
|
||||
reg = <0x03100000 0x200000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
adsp_region: adsp@3300000 {
|
||||
reg = <0x03300000 0x1400000>;
|
||||
no-map;
|
||||
|
@ -116,7 +116,7 @@ __copy_to_user_memcpy(void __user *to, const void *from, unsigned long n)
|
||||
tocopy = n;
|
||||
|
||||
ua_flags = uaccess_save_and_enable();
|
||||
memcpy((void *)to, from, tocopy);
|
||||
__memcpy((void *)to, from, tocopy);
|
||||
uaccess_restore(ua_flags);
|
||||
to += tocopy;
|
||||
from += tocopy;
|
||||
@ -178,7 +178,7 @@ __clear_user_memset(void __user *addr, unsigned long n)
|
||||
tocopy = n;
|
||||
|
||||
ua_flags = uaccess_save_and_enable();
|
||||
memset((void *)addr, 0, tocopy);
|
||||
__memset((void *)addr, 0, tocopy);
|
||||
uaccess_restore(ua_flags);
|
||||
addr += tocopy;
|
||||
n -= tocopy;
|
||||
|
@ -108,6 +108,7 @@ CONFIG_MEMORY_HOTREMOVE=y
|
||||
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
|
||||
CONFIG_CLEANCACHE=y
|
||||
CONFIG_CMA=y
|
||||
CONFIG_CMA_DEBUGFS=y
|
||||
CONFIG_CMA_AREAS=16
|
||||
@ -147,6 +148,7 @@ CONFIG_IPV6_VTI=y
|
||||
CONFIG_IPV6_GRE=y
|
||||
CONFIG_IPV6_MULTIPLE_TABLES=y
|
||||
CONFIG_IPV6_MROUTE=y
|
||||
CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_NF_CONNTRACK=y
|
||||
CONFIG_NF_CONNTRACK_SECMARK=y
|
||||
@ -327,6 +329,7 @@ CONFIG_IFB=y
|
||||
CONFIG_MACSEC=y
|
||||
CONFIG_TUN=y
|
||||
CONFIG_VETH=y
|
||||
CONFIG_AX88796B_PHY=y
|
||||
CONFIG_CAN_VCAN=m
|
||||
CONFIG_CAN_SLCAN=m
|
||||
CONFIG_PPP=m
|
||||
@ -335,14 +338,15 @@ CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPP_MPPE=m
|
||||
CONFIG_PPTP=m
|
||||
CONFIG_PPPOL2TP=m
|
||||
CONFIG_USB_RTL8150=y
|
||||
CONFIG_USB_RTL8152=y
|
||||
CONFIG_USB_USBNET=y
|
||||
CONFIG_USB_NET_CDC_EEM=y
|
||||
CONFIG_USB_NET_DRIVERS=m
|
||||
CONFIG_USB_RTL8150=m
|
||||
CONFIG_USB_RTL8152=m
|
||||
CONFIG_USB_USBNET=m
|
||||
CONFIG_USB_NET_CDC_EEM=m
|
||||
# CONFIG_USB_NET_NET1080 is not set
|
||||
# CONFIG_USB_NET_CDC_SUBSET is not set
|
||||
# CONFIG_USB_NET_ZAURUS is not set
|
||||
CONFIG_USB_NET_AQC111=y
|
||||
CONFIG_USB_NET_AQC111=m
|
||||
# CONFIG_WLAN_VENDOR_ADMTEK is not set
|
||||
# CONFIG_WLAN_VENDOR_ATH is not set
|
||||
# CONFIG_WLAN_VENDOR_ATMEL is not set
|
||||
|
@ -394,8 +394,8 @@ struct pkvm_iommu_driver {
|
||||
};
|
||||
|
||||
int pkvm_iommu_driver_init(u64 drv, void *data, size_t size);
|
||||
int pkvm_iommu_register(struct device *dev, u64 drv,
|
||||
phys_addr_t pa, size_t size, struct device *parent);
|
||||
int pkvm_iommu_register(struct device *dev, u64 drv, phys_addr_t pa,
|
||||
size_t size, struct device *parent, u8 flags);
|
||||
int pkvm_iommu_suspend(struct device *dev);
|
||||
int pkvm_iommu_resume(struct device *dev);
|
||||
|
||||
@ -562,9 +562,22 @@ struct kvm_vcpu_arch {
|
||||
({ \
|
||||
__build_check_flag(v, flagset, f, m); \
|
||||
\
|
||||
v->arch.flagset & (m); \
|
||||
READ_ONCE(v->arch.flagset) & (m); \
|
||||
})
|
||||
|
||||
/*
|
||||
* Note that the set/clear accessors must be preempt-safe in order to
|
||||
* avoid nesting them with load/put which also manipulate flags...
|
||||
*/
|
||||
#ifdef __KVM_NVHE_HYPERVISOR__
|
||||
/* the nVHE hypervisor is always non-preemptible */
|
||||
#define __vcpu_flags_preempt_disable()
|
||||
#define __vcpu_flags_preempt_enable()
|
||||
#else
|
||||
#define __vcpu_flags_preempt_disable() preempt_disable()
|
||||
#define __vcpu_flags_preempt_enable() preempt_enable()
|
||||
#endif
|
||||
|
||||
#define __vcpu_set_flag(v, flagset, f, m) \
|
||||
do { \
|
||||
typeof(v->arch.flagset) *fset; \
|
||||
@ -572,9 +585,11 @@ struct kvm_vcpu_arch {
|
||||
__build_check_flag(v, flagset, f, m); \
|
||||
\
|
||||
fset = &v->arch.flagset; \
|
||||
__vcpu_flags_preempt_disable(); \
|
||||
if (HWEIGHT(m) > 1) \
|
||||
*fset &= ~(m); \
|
||||
*fset |= (f); \
|
||||
__vcpu_flags_preempt_enable(); \
|
||||
} while (0)
|
||||
|
||||
#define __vcpu_clear_flag(v, flagset, f, m) \
|
||||
@ -584,7 +599,9 @@ struct kvm_vcpu_arch {
|
||||
__build_check_flag(v, flagset, f, m); \
|
||||
\
|
||||
fset = &v->arch.flagset; \
|
||||
__vcpu_flags_preempt_disable(); \
|
||||
*fset &= ~(m); \
|
||||
__vcpu_flags_preempt_enable(); \
|
||||
} while (0)
|
||||
|
||||
#define __vcpu_copy_flag(vt, vs, flagset, f, m) \
|
||||
@ -593,12 +610,14 @@ struct kvm_vcpu_arch {
|
||||
\
|
||||
__build_check_flag(vs, flagset, f, m); \
|
||||
\
|
||||
__vcpu_flags_preempt_disable(); \
|
||||
val = READ_ONCE(vs->arch.flagset); \
|
||||
val &= (m); \
|
||||
tmp = READ_ONCE(vt->arch.flagset); \
|
||||
tmp &= ~(m); \
|
||||
tmp |= val; \
|
||||
WRITE_ONCE(vt->arch.flagset, tmp); \
|
||||
__vcpu_flags_preempt_enable(); \
|
||||
} while (0)
|
||||
|
||||
|
||||
|
@ -67,12 +67,15 @@ void pkvm_host_reclaim_page(struct kvm *host_kvm, phys_addr_t ipa);
|
||||
* - Floating-point and Advanced SIMD
|
||||
* - GICv3(+) system register interface
|
||||
* - Data Independent Timing
|
||||
* - Spectre/Meltdown Mitigation
|
||||
*/
|
||||
#define PVM_ID_AA64PFR0_ALLOW (\
|
||||
ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_FP) | \
|
||||
ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_AdvSIMD) | \
|
||||
ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_GIC) | \
|
||||
ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_DIT) \
|
||||
ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_DIT) | \
|
||||
ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_CSV2) | \
|
||||
ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_CSV3) \
|
||||
)
|
||||
|
||||
/*
|
||||
|
@ -142,6 +142,7 @@
|
||||
#define MT_NORMAL_NC 2
|
||||
#define MT_DEVICE_nGnRnE 3
|
||||
#define MT_DEVICE_nGnRE 4
|
||||
#define MT_NORMAL_iNC_oWB 5
|
||||
|
||||
/*
|
||||
* Memory types for Stage-2 translation
|
||||
|
@ -583,6 +583,15 @@ static inline void set_pud_at(struct mm_struct *mm, unsigned long addr,
|
||||
__pgprot_modify(prot, PTE_ATTRINDX_MASK, \
|
||||
PTE_ATTRINDX(MT_NORMAL_NC) | PTE_PXN | PTE_UXN)
|
||||
|
||||
/*
|
||||
* Mark the prot value as outer cacheable and inner non-cacheable. Non-coherent
|
||||
* devices on a system with support for a system or last level cache use these
|
||||
* attributes to cache allocations in the system cache.
|
||||
*/
|
||||
#define pgprot_syscached(prot) \
|
||||
__pgprot_modify(prot, PTE_ATTRINDX_MASK, \
|
||||
PTE_ATTRINDX(MT_NORMAL_iNC_oWB) | PTE_PXN | PTE_UXN)
|
||||
|
||||
#define __HAVE_PHYS_MEM_ACCESS_PROT
|
||||
struct file;
|
||||
extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
|
||||
|
@ -663,6 +663,7 @@
|
||||
#define MAIR_ATTR_NORMAL_TAGGED UL(0xf0)
|
||||
#define MAIR_ATTR_NORMAL UL(0xff)
|
||||
#define MAIR_ATTR_MASK UL(0xff)
|
||||
#define MAIR_ATTR_NORMAL_iNC_oWB UL(0xf4)
|
||||
|
||||
/* Position the attr at the correct index */
|
||||
#define MAIR_ATTRIDX(attr, idx) ((attr) << ((idx) * 8))
|
||||
|
@ -314,36 +314,32 @@ int do_compat_alignment_fixup(unsigned long addr, struct pt_regs *regs)
|
||||
int (*handler)(unsigned long addr, u32 instr, struct pt_regs *regs);
|
||||
unsigned int type;
|
||||
u32 instr = 0;
|
||||
u16 tinstr = 0;
|
||||
int isize = 4;
|
||||
int thumb2_32b = 0;
|
||||
int fault;
|
||||
|
||||
instrptr = instruction_pointer(regs);
|
||||
|
||||
if (compat_thumb_mode(regs)) {
|
||||
__le16 __user *ptr = (__le16 __user *)(instrptr & ~1);
|
||||
u16 tinstr, tinst2;
|
||||
|
||||
fault = alignment_get_thumb(regs, ptr, &tinstr);
|
||||
if (!fault) {
|
||||
if (IS_T32(tinstr)) {
|
||||
/* Thumb-2 32-bit */
|
||||
u16 tinst2;
|
||||
fault = alignment_get_thumb(regs, ptr + 1, &tinst2);
|
||||
instr = ((u32)tinstr << 16) | tinst2;
|
||||
thumb2_32b = 1;
|
||||
} else {
|
||||
isize = 2;
|
||||
instr = thumb2arm(tinstr);
|
||||
}
|
||||
if (alignment_get_thumb(regs, ptr, &tinstr))
|
||||
return 1;
|
||||
|
||||
if (IS_T32(tinstr)) { /* Thumb-2 32-bit */
|
||||
if (alignment_get_thumb(regs, ptr + 1, &tinst2))
|
||||
return 1;
|
||||
instr = ((u32)tinstr << 16) | tinst2;
|
||||
thumb2_32b = 1;
|
||||
} else {
|
||||
isize = 2;
|
||||
instr = thumb2arm(tinstr);
|
||||
}
|
||||
} else {
|
||||
fault = alignment_get_arm(regs, (__le32 __user *)instrptr, &instr);
|
||||
if (alignment_get_arm(regs, (__le32 __user *)instrptr, &instr))
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (fault)
|
||||
return 1;
|
||||
|
||||
switch (CODING_BITS(instr)) {
|
||||
case 0x00000000: /* 3.13.4 load/store instruction extensions */
|
||||
if (LDSTHD_I_BIT(instr))
|
||||
|
@ -72,13 +72,10 @@ void mte_sync_tags(pte_t old_pte, pte_t pte)
|
||||
return;
|
||||
|
||||
/* if PG_mte_tagged is set, tags have already been initialised */
|
||||
for (i = 0; i < nr_pages; i++, page++) {
|
||||
if (!page_mte_tagged(page)) {
|
||||
for (i = 0; i < nr_pages; i++, page++)
|
||||
if (!page_mte_tagged(page))
|
||||
mte_sync_page_tags(page, old_pte, check_swap,
|
||||
pte_is_tagged);
|
||||
set_page_mte_tagged(page);
|
||||
}
|
||||
}
|
||||
|
||||
/* ensure the tags are visible before the PTE is set */
|
||||
smp_wmb();
|
||||
|
@ -1999,9 +1999,33 @@ static int do_pkvm_init(u32 hyp_va_bits)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static u64 get_hyp_id_aa64pfr0_el1(void)
|
||||
{
|
||||
/*
|
||||
* Track whether the system isn't affected by spectre/meltdown in the
|
||||
* hypervisor's view of id_aa64pfr0_el1, used for protected VMs.
|
||||
* Although this is per-CPU, we make it global for simplicity, e.g., not
|
||||
* to have to worry about vcpu migration.
|
||||
*
|
||||
* Unlike for non-protected VMs, userspace cannot override this for
|
||||
* protected VMs.
|
||||
*/
|
||||
u64 val = read_sanitised_ftr_reg(SYS_ID_AA64PFR0_EL1);
|
||||
|
||||
val &= ~(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_CSV2) |
|
||||
ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_CSV3));
|
||||
|
||||
val |= FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_CSV2),
|
||||
arm64_get_spectre_v2_state() == SPECTRE_UNAFFECTED);
|
||||
val |= FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_CSV3),
|
||||
arm64_get_meltdown_state() == SPECTRE_UNAFFECTED);
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
static void kvm_hyp_init_symbols(void)
|
||||
{
|
||||
kvm_nvhe_sym(id_aa64pfr0_el1_sys_val) = read_sanitised_ftr_reg(SYS_ID_AA64PFR0_EL1);
|
||||
kvm_nvhe_sym(id_aa64pfr0_el1_sys_val) = get_hyp_id_aa64pfr0_el1();
|
||||
kvm_nvhe_sym(id_aa64pfr1_el1_sys_val) = read_sanitised_ftr_reg(SYS_ID_AA64PFR1_EL1);
|
||||
kvm_nvhe_sym(id_aa64isar0_el1_sys_val) = read_sanitised_ftr_reg(SYS_ID_AA64ISAR0_EL1);
|
||||
kvm_nvhe_sym(id_aa64isar1_el1_sys_val) = read_sanitised_ftr_reg(SYS_ID_AA64ISAR1_EL1);
|
||||
|
@ -81,14 +81,15 @@ struct pkvm_iommu {
|
||||
void *va;
|
||||
size_t size;
|
||||
bool powered;
|
||||
u8 flags;
|
||||
char data[];
|
||||
};
|
||||
|
||||
int __pkvm_iommu_driver_init(struct pkvm_iommu_driver *drv, void *data, size_t size);
|
||||
int __pkvm_iommu_register(unsigned long dev_id, unsigned long drv_id,
|
||||
phys_addr_t dev_pa, size_t dev_size,
|
||||
unsigned long parent_id,
|
||||
void *kern_mem_va, size_t mem_size);
|
||||
unsigned long parent_id, u8 flags,
|
||||
void *kern_mem_va);
|
||||
int __pkvm_iommu_pm_notify(unsigned long dev_id,
|
||||
enum pkvm_iommu_pm_event event);
|
||||
int __pkvm_iommu_finalize(int err);
|
||||
|
@ -1152,12 +1152,11 @@ static void handle___pkvm_iommu_register(struct kvm_cpu_context *host_ctxt)
|
||||
DECLARE_REG(phys_addr_t, dev_pa, host_ctxt, 3);
|
||||
DECLARE_REG(size_t, dev_size, host_ctxt, 4);
|
||||
DECLARE_REG(unsigned long, parent_id, host_ctxt, 5);
|
||||
DECLARE_REG(void *, mem, host_ctxt, 6);
|
||||
DECLARE_REG(size_t, mem_size, host_ctxt, 7);
|
||||
DECLARE_REG(u8, flags, host_ctxt, 6);
|
||||
DECLARE_REG(void *, mem, host_ctxt, 7);
|
||||
|
||||
cpu_reg(host_ctxt, 1) = __pkvm_iommu_register(dev_id, drv_id, dev_pa,
|
||||
dev_size, parent_id,
|
||||
mem, mem_size);
|
||||
dev_size, parent_id, flags, mem);
|
||||
}
|
||||
|
||||
static void handle___pkvm_iommu_pm_notify(struct kvm_cpu_context *host_ctxt)
|
||||
|
@ -329,8 +329,8 @@ int __pkvm_iommu_driver_init(struct pkvm_iommu_driver *drv, void *data, size_t s
|
||||
|
||||
int __pkvm_iommu_register(unsigned long dev_id, unsigned long drv_id,
|
||||
phys_addr_t dev_pa, size_t dev_size,
|
||||
unsigned long parent_id,
|
||||
void *kern_mem_va, size_t mem_size)
|
||||
unsigned long parent_id, u8 flags,
|
||||
void *kern_mem_va)
|
||||
{
|
||||
struct pkvm_iommu *dev = NULL;
|
||||
struct pkvm_iommu_driver *drv;
|
||||
@ -364,16 +364,15 @@ int __pkvm_iommu_register(unsigned long dev_id, unsigned long drv_id,
|
||||
* Accept memory donation if the host is providing new memory.
|
||||
* Note: We do not return the memory even if there is an error later.
|
||||
*/
|
||||
if (kern_mem_va && mem_size) {
|
||||
if (kern_mem_va) {
|
||||
mem_va = kern_hyp_va(kern_mem_va);
|
||||
|
||||
if (!PAGE_ALIGNED(mem_va) || !PAGE_ALIGNED(mem_size)) {
|
||||
if (!PAGE_ALIGNED(mem_va)) {
|
||||
ret = -EINVAL;
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
ret = __pkvm_host_donate_hyp(hyp_virt_to_pfn(mem_va),
|
||||
mem_size >> PAGE_SHIFT);
|
||||
ret = __pkvm_host_donate_hyp(hyp_virt_to_pfn(mem_va), 1);
|
||||
if (ret)
|
||||
goto out_unlock;
|
||||
}
|
||||
@ -381,7 +380,7 @@ int __pkvm_iommu_register(unsigned long dev_id, unsigned long drv_id,
|
||||
host_lock_component();
|
||||
|
||||
/* Allocate memory for the new device entry. */
|
||||
dev = alloc_iommu(drv, mem_va, mem_size);
|
||||
dev = alloc_iommu(drv, mem_va, PAGE_SIZE);
|
||||
if (!dev) {
|
||||
ret = -ENOMEM;
|
||||
goto out_free;
|
||||
@ -394,6 +393,7 @@ int __pkvm_iommu_register(unsigned long dev_id, unsigned long drv_id,
|
||||
.ops = drv->ops,
|
||||
.pa = dev_pa,
|
||||
.size = dev_size,
|
||||
.flags = flags,
|
||||
};
|
||||
|
||||
if (!validate_against_existing_iommus(dev)) {
|
||||
|
@ -948,9 +948,6 @@ static int __check_page_state_visitor(u64 addr, u64 end, u32 level,
|
||||
struct check_walk_data *d = arg;
|
||||
kvm_pte_t pte = *ptep;
|
||||
|
||||
if (kvm_pte_valid(pte) && !addr_is_allowed_memory(kvm_pte_to_phys(pte)))
|
||||
return -EINVAL;
|
||||
|
||||
return d->get_page_state(pte, addr) == d->desired ? 0 : -EPERM;
|
||||
}
|
||||
|
||||
@ -975,6 +972,9 @@ static enum pkvm_page_state host_get_page_state(kvm_pte_t pte, u64 addr)
|
||||
if (is_memory && hyp_phys_to_page(addr)->flags & MODULE_OWNED_PAGE)
|
||||
return PKVM_MODULE_DONT_TOUCH;
|
||||
|
||||
if (!addr_is_allowed_memory(addr))
|
||||
return PKVM_NOPAGE;
|
||||
|
||||
if (!kvm_pte_valid(pte) && pte)
|
||||
return PKVM_NOPAGE;
|
||||
|
||||
|
@ -85,19 +85,12 @@ static u64 get_restricted_features_unsigned(u64 sys_reg_val,
|
||||
|
||||
static u64 get_pvm_id_aa64pfr0(const struct kvm_vcpu *vcpu)
|
||||
{
|
||||
const struct kvm *kvm = (const struct kvm *)kern_hyp_va(vcpu->kvm);
|
||||
u64 set_mask = 0;
|
||||
u64 allow_mask = PVM_ID_AA64PFR0_ALLOW;
|
||||
|
||||
set_mask |= get_restricted_features_unsigned(id_aa64pfr0_el1_sys_val,
|
||||
PVM_ID_AA64PFR0_RESTRICT_UNSIGNED);
|
||||
|
||||
/* Spectre and Meltdown mitigation in KVM */
|
||||
set_mask |= FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_CSV2),
|
||||
(u64)kvm->arch.pfr0_csv2);
|
||||
set_mask |= FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_CSV3),
|
||||
(u64)kvm->arch.pfr0_csv3);
|
||||
|
||||
return (id_aa64pfr0_el1_sys_val & allow_mask) | set_mask;
|
||||
}
|
||||
|
||||
|
@ -993,6 +993,8 @@ static int stage2_unmap_walker(u64 addr, u64 end, u32 level, kvm_pte_t *ptep,
|
||||
*/
|
||||
if (pte_ops->pte_is_counted_cb(pte, level))
|
||||
stage2_put_pte(ptep, mmu, addr, level, mm_ops);
|
||||
else
|
||||
stage2_clear_pte(ptep, mmu, addr, level);
|
||||
|
||||
if (need_flush && mm_ops->dcache_clean_inval_poc)
|
||||
mm_ops->dcache_clean_inval_poc(kvm_pte_follow(pte, mm_ops),
|
||||
|
@ -19,7 +19,7 @@ int pkvm_iommu_driver_init(u64 drv, void *data, size_t size)
|
||||
EXPORT_SYMBOL_GPL(pkvm_iommu_driver_init);
|
||||
|
||||
int pkvm_iommu_register(struct device *dev, u64 drv, phys_addr_t pa,
|
||||
size_t size, struct device *parent)
|
||||
size_t size, struct device *parent, u8 flags)
|
||||
{
|
||||
void *mem;
|
||||
int ret;
|
||||
@ -30,15 +30,14 @@ int pkvm_iommu_register(struct device *dev, u64 drv, phys_addr_t pa,
|
||||
* We assume that hyp never allocates more than a page per hypcall.
|
||||
*/
|
||||
ret = kvm_call_hyp_nvhe(__pkvm_iommu_register, dev_to_id(dev),
|
||||
drv, pa, size, dev_to_id(parent), NULL, 0);
|
||||
drv, pa, size, dev_to_id(parent), flags, NULL);
|
||||
if (ret == -ENOMEM) {
|
||||
mem = (void *)__get_free_page(GFP_KERNEL);
|
||||
if (!mem)
|
||||
return -ENOMEM;
|
||||
|
||||
ret = kvm_call_hyp_nvhe(__pkvm_iommu_register, dev_to_id(dev),
|
||||
drv, pa, size, dev_to_id(parent),
|
||||
mem, PAGE_SIZE);
|
||||
drv, pa, size, dev_to_id(parent), flags, mem);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
@ -506,6 +506,7 @@ static int __init finalize_pkvm(void)
|
||||
* at, which would end badly once inaccessible.
|
||||
*/
|
||||
kmemleak_free_part(__hyp_bss_start, __hyp_bss_end - __hyp_bss_start);
|
||||
kmemleak_free_part(__hyp_data_start, __hyp_data_end - __hyp_data_start);
|
||||
kmemleak_free_part_phys(hyp_mem_base, hyp_mem_size);
|
||||
|
||||
ret = pkvm_drop_host_privileges();
|
||||
@ -844,6 +845,12 @@ int __pkvm_load_el2_module(struct module *this, unsigned long *token)
|
||||
endrel = (void *)mod->relocs + mod->nr_relocs * sizeof(*endrel);
|
||||
kvm_apply_hyp_module_relocations(start, hyp_va, mod->relocs, endrel);
|
||||
|
||||
/*
|
||||
* Exclude EL2 module sections from kmemleak before making them
|
||||
* inaccessible.
|
||||
*/
|
||||
kmemleak_free_part(start, size);
|
||||
|
||||
ret = pkvm_map_module_sections(secs_map + secs_first, hyp_va,
|
||||
ARRAY_SIZE(secs_map) - secs_first);
|
||||
if (ret) {
|
||||
|
@ -608,6 +608,7 @@ void kvm_pmu_handle_pmcr(struct kvm_vcpu *vcpu, u64 val)
|
||||
for_each_set_bit(i, &mask, 32)
|
||||
kvm_pmu_set_counter_value(vcpu, i, 0);
|
||||
}
|
||||
kvm_vcpu_pmu_restore_guest(vcpu);
|
||||
}
|
||||
|
||||
static bool kvm_pmu_counter_is_enabled(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
|
@ -673,7 +673,6 @@ static bool access_pmcr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
|
||||
val |= ARMV8_PMU_PMCR_LC;
|
||||
__vcpu_sys_reg(vcpu, PMCR_EL0) = val;
|
||||
kvm_pmu_handle_pmcr(vcpu, val);
|
||||
kvm_vcpu_pmu_restore_guest(vcpu);
|
||||
} else {
|
||||
/* PMCR.P & PMCR.C are RAZ */
|
||||
val = __vcpu_sys_reg(vcpu, PMCR_EL0)
|
||||
|
@ -21,9 +21,10 @@ void copy_highpage(struct page *to, struct page *from)
|
||||
|
||||
copy_page(kto, kfrom);
|
||||
|
||||
if (kasan_hw_tags_enabled())
|
||||
page_kasan_tag_reset(to);
|
||||
|
||||
if (system_supports_mte() && page_mte_tagged(from)) {
|
||||
if (kasan_hw_tags_enabled())
|
||||
page_kasan_tag_reset(to);
|
||||
mte_copy_page_tags(kto, kfrom);
|
||||
set_page_mte_tagged(to);
|
||||
}
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include <linux/perf_event.h>
|
||||
#include <linux/preempt.h>
|
||||
#include <linux/hugetlb.h>
|
||||
#include <linux/gfp_types.h>
|
||||
|
||||
#include <asm/acpi.h>
|
||||
#include <asm/bug.h>
|
||||
@ -956,7 +957,7 @@ NOKPROBE_SYMBOL(do_debug_exception);
|
||||
struct page *alloc_zeroed_user_highpage_movable(struct vm_area_struct *vma,
|
||||
unsigned long vaddr)
|
||||
{
|
||||
gfp_t flags = GFP_HIGHUSER_MOVABLE | __GFP_ZERO;
|
||||
gfp_t flags = GFP_HIGHUSER_MOVABLE | __GFP_ZERO | __GFP_CMA;
|
||||
|
||||
/*
|
||||
* If the page is mapped with PROT_MTE, initialise the tags at the
|
||||
|
@ -68,7 +68,8 @@
|
||||
MAIR_ATTRIDX(MAIR_ATTR_DEVICE_nGnRE, MT_DEVICE_nGnRE) | \
|
||||
MAIR_ATTRIDX(MAIR_ATTR_NORMAL_NC, MT_NORMAL_NC) | \
|
||||
MAIR_ATTRIDX(MAIR_ATTR_NORMAL, MT_NORMAL) | \
|
||||
MAIR_ATTRIDX(MAIR_ATTR_NORMAL, MT_NORMAL_TAGGED))
|
||||
MAIR_ATTRIDX(MAIR_ATTR_NORMAL, MT_NORMAL_TAGGED) | \
|
||||
MAIR_ATTRIDX(MAIR_ATTR_NORMAL_iNC_oWB, MT_NORMAL_iNC_oWB))
|
||||
|
||||
#ifdef CONFIG_CPU_PM
|
||||
/**
|
||||
|
@ -281,4 +281,8 @@
|
||||
/* DMB */
|
||||
#define A64_DMB_ISH aarch64_insn_gen_dmb(AARCH64_INSN_MB_ISH)
|
||||
|
||||
/* ADR */
|
||||
#define A64_ADR(Rd, offset) \
|
||||
aarch64_insn_gen_adr(0, offset, Rd, AARCH64_INSN_ADR_TYPE_ADR)
|
||||
|
||||
#endif /* _BPF_JIT_H */
|
||||
|
@ -1905,7 +1905,8 @@ static int prepare_trampoline(struct jit_ctx *ctx, struct bpf_tramp_image *im,
|
||||
restore_args(ctx, args_off, nargs);
|
||||
/* call original func */
|
||||
emit(A64_LDR64I(A64_R(10), A64_SP, retaddr_off), ctx);
|
||||
emit(A64_BLR(A64_R(10)), ctx);
|
||||
emit(A64_ADR(A64_LR, AARCH64_INSN_SIZE * 2), ctx);
|
||||
emit(A64_RET(A64_R(10)), ctx);
|
||||
/* store return value */
|
||||
emit(A64_STR64I(A64_R(0), A64_SP, retval_off), ctx);
|
||||
/* reserve a nop for bpf_tramp_image_put */
|
||||
|
@ -955,6 +955,10 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, bool ext
|
||||
emit_atomic(insn, ctx);
|
||||
break;
|
||||
|
||||
/* Speculation barrier */
|
||||
case BPF_ST | BPF_NOSPEC:
|
||||
break;
|
||||
|
||||
default:
|
||||
pr_err("bpf_jit: unknown opcode %02x\n", code);
|
||||
return -EINVAL;
|
||||
|
@ -366,6 +366,7 @@ void update_numa_distance(struct device_node *node)
|
||||
WARN(numa_distance_table[nid][nid] == -1,
|
||||
"NUMA distance details for node %d not provided\n", nid);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(update_numa_distance);
|
||||
|
||||
/*
|
||||
* ibm,numa-lookup-index-table= {N, domainid1, domainid2, ..... domainidN}
|
||||
|
@ -1428,6 +1428,13 @@ static int papr_scm_probe(struct platform_device *pdev)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/*
|
||||
* open firmware platform device create won't update the NUMA
|
||||
* distance table. For PAPR SCM devices we use numa_map_to_online_node()
|
||||
* to find the nearest online NUMA node and that requires correct
|
||||
* distance table information.
|
||||
*/
|
||||
update_numa_distance(dn);
|
||||
|
||||
p = kzalloc(sizeof(*p), GFP_KERNEL);
|
||||
if (!p)
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <asm/signal32.h>
|
||||
#include <asm/switch_to.h>
|
||||
#include <asm/csr.h>
|
||||
#include <asm/cacheflush.h>
|
||||
|
||||
extern u32 __user_rt_sigreturn[2];
|
||||
|
||||
@ -181,6 +182,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
|
||||
{
|
||||
struct rt_sigframe __user *frame;
|
||||
long err = 0;
|
||||
unsigned long __maybe_unused addr;
|
||||
|
||||
frame = get_sigframe(ksig, regs, sizeof(*frame));
|
||||
if (!access_ok(frame, sizeof(*frame)))
|
||||
@ -209,7 +211,12 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
|
||||
if (copy_to_user(&frame->sigreturn_code, __user_rt_sigreturn,
|
||||
sizeof(frame->sigreturn_code)))
|
||||
return -EFAULT;
|
||||
regs->ra = (unsigned long)&frame->sigreturn_code;
|
||||
|
||||
addr = (unsigned long)&frame->sigreturn_code;
|
||||
/* Make sure the two instructions are pushed to icache. */
|
||||
flush_icache_range(addr, addr + sizeof(frame->sigreturn_code));
|
||||
|
||||
regs->ra = addr;
|
||||
#endif /* CONFIG_MMU */
|
||||
|
||||
/*
|
||||
|
@ -271,10 +271,18 @@ static int handle_prog(struct kvm_vcpu *vcpu)
|
||||
* handle_external_interrupt - used for external interruption interceptions
|
||||
* @vcpu: virtual cpu
|
||||
*
|
||||
* This interception only occurs if the CPUSTAT_EXT_INT bit was set, or if
|
||||
* the new PSW does not have external interrupts disabled. In the first case,
|
||||
* we've got to deliver the interrupt manually, and in the second case, we
|
||||
* drop to userspace to handle the situation there.
|
||||
* This interception occurs if:
|
||||
* - the CPUSTAT_EXT_INT bit was already set when the external interrupt
|
||||
* occurred. In this case, the interrupt needs to be injected manually to
|
||||
* preserve interrupt priority.
|
||||
* - the external new PSW has external interrupts enabled, which will cause an
|
||||
* interruption loop. We drop to userspace in this case.
|
||||
*
|
||||
* The latter case can be detected by inspecting the external mask bit in the
|
||||
* external new psw.
|
||||
*
|
||||
* Under PV, only the latter case can occur, since interrupt priorities are
|
||||
* handled in the ultravisor.
|
||||
*/
|
||||
static int handle_external_interrupt(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
@ -285,10 +293,18 @@ static int handle_external_interrupt(struct kvm_vcpu *vcpu)
|
||||
|
||||
vcpu->stat.exit_external_interrupt++;
|
||||
|
||||
rc = read_guest_lc(vcpu, __LC_EXT_NEW_PSW, &newpsw, sizeof(psw_t));
|
||||
if (rc)
|
||||
return rc;
|
||||
/* We can not handle clock comparator or timer interrupt with bad PSW */
|
||||
if (kvm_s390_pv_cpu_is_protected(vcpu)) {
|
||||
newpsw = vcpu->arch.sie_block->gpsw;
|
||||
} else {
|
||||
rc = read_guest_lc(vcpu, __LC_EXT_NEW_PSW, &newpsw, sizeof(psw_t));
|
||||
if (rc)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*
|
||||
* Clock comparator or timer interrupt with external interrupt enabled
|
||||
* will cause interrupt loop. Drop to userspace.
|
||||
*/
|
||||
if ((eic == EXT_IRQ_CLK_COMP || eic == EXT_IRQ_CPU_TIMER) &&
|
||||
(newpsw.mask & PSW_MASK_EXT))
|
||||
return -EOPNOTSUPP;
|
||||
|
@ -105,6 +105,7 @@ CONFIG_MEMORY_HOTREMOVE=y
|
||||
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
|
||||
CONFIG_CLEANCACHE=y
|
||||
CONFIG_CMA=y
|
||||
CONFIG_CMA_DEBUGFS=y
|
||||
CONFIG_CMA_AREAS=16
|
||||
@ -144,6 +145,7 @@ CONFIG_IPV6_VTI=y
|
||||
CONFIG_IPV6_GRE=y
|
||||
CONFIG_IPV6_MULTIPLE_TABLES=y
|
||||
CONFIG_IPV6_MROUTE=y
|
||||
CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_NF_CONNTRACK=y
|
||||
CONFIG_NF_CONNTRACK_SECMARK=y
|
||||
@ -315,6 +317,7 @@ CONFIG_IFB=y
|
||||
CONFIG_MACSEC=y
|
||||
CONFIG_TUN=y
|
||||
CONFIG_VETH=y
|
||||
CONFIG_AX88796B_PHY=y
|
||||
CONFIG_CAN_VCAN=m
|
||||
CONFIG_CAN_SLCAN=m
|
||||
CONFIG_PPP=m
|
||||
@ -323,14 +326,15 @@ CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPP_MPPE=m
|
||||
CONFIG_PPTP=m
|
||||
CONFIG_PPPOL2TP=m
|
||||
CONFIG_USB_RTL8150=y
|
||||
CONFIG_USB_RTL8152=y
|
||||
CONFIG_USB_USBNET=y
|
||||
CONFIG_USB_NET_CDC_EEM=y
|
||||
CONFIG_USB_NET_DRIVERS=m
|
||||
CONFIG_USB_RTL8150=m
|
||||
CONFIG_USB_RTL8152=m
|
||||
CONFIG_USB_USBNET=m
|
||||
CONFIG_USB_NET_CDC_EEM=m
|
||||
# CONFIG_USB_NET_NET1080 is not set
|
||||
# CONFIG_USB_NET_CDC_SUBSET is not set
|
||||
# CONFIG_USB_NET_ZAURUS is not set
|
||||
CONFIG_USB_NET_AQC111=y
|
||||
CONFIG_USB_NET_AQC111=m
|
||||
# CONFIG_WLAN_VENDOR_ADMTEK is not set
|
||||
# CONFIG_WLAN_VENDOR_ATH is not set
|
||||
# CONFIG_WLAN_VENDOR_ATMEL is not set
|
||||
|
@ -598,6 +598,28 @@ struct hv_enlightened_vmcs {
|
||||
|
||||
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL 0xFFFF
|
||||
|
||||
/*
|
||||
* Hyper-V uses the software reserved 32 bytes in VMCB control area to expose
|
||||
* SVM enlightenments to guests.
|
||||
*/
|
||||
struct hv_vmcb_enlightenments {
|
||||
struct __packed hv_enlightenments_control {
|
||||
u32 nested_flush_hypercall:1;
|
||||
u32 msr_bitmap:1;
|
||||
u32 enlightened_npt_tlb: 1;
|
||||
u32 reserved:29;
|
||||
} __packed hv_enlightenments_control;
|
||||
u32 hv_vp_id;
|
||||
u64 hv_vm_id;
|
||||
u64 partition_assist_page;
|
||||
u64 reserved;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* Hyper-V uses the software reserved clean bit in VMCB.
|
||||
*/
|
||||
#define HV_VMCB_NESTED_ENLIGHTENMENTS 31
|
||||
|
||||
struct hv_partition_assist_pg {
|
||||
u32 tlb_lock_count;
|
||||
};
|
||||
|
@ -35,7 +35,7 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
|
||||
}
|
||||
|
||||
#define alloc_zeroed_user_highpage_movable(vma, vaddr) \
|
||||
alloc_page_vma(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, vma, vaddr)
|
||||
alloc_page_vma(GFP_HIGHUSER_MOVABLE | __GFP_ZERO | __GFP_CMA, vma, vaddr)
|
||||
#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE_MOVABLE
|
||||
|
||||
#ifndef __pa
|
||||
|
@ -5,6 +5,8 @@
|
||||
#include <uapi/asm/svm.h>
|
||||
#include <uapi/asm/kvm.h>
|
||||
|
||||
#include <asm/hyperv-tlfs.h>
|
||||
|
||||
/*
|
||||
* 32-bit intercept words in the VMCB Control Area, starting
|
||||
* at Byte offset 000h.
|
||||
@ -161,7 +163,10 @@ struct __attribute__ ((__packed__)) vmcb_control_area {
|
||||
* Offset 0x3e0, 32 bytes reserved
|
||||
* for use by hypervisor/software.
|
||||
*/
|
||||
u8 reserved_sw[32];
|
||||
union {
|
||||
struct hv_vmcb_enlightenments hv_enlightenments;
|
||||
u8 reserved_sw[32];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
@ -146,7 +146,11 @@ static int __init acpi_parse_madt(struct acpi_table_header *table)
|
||||
|
||||
pr_debug("Local APIC address 0x%08x\n", madt->address);
|
||||
}
|
||||
if (madt->header.revision >= 5)
|
||||
|
||||
/* ACPI 6.3 and newer support the online capable bit. */
|
||||
if (acpi_gbl_FADT.header.revision > 6 ||
|
||||
(acpi_gbl_FADT.header.revision == 6 &&
|
||||
acpi_gbl_FADT.minor_revision >= 3))
|
||||
acpi_support_online_capable = true;
|
||||
|
||||
default_acpi_madt_oem_check(madt->header.oem_id,
|
||||
@ -193,7 +197,8 @@ static bool __init acpi_is_processor_usable(u32 lapic_flags)
|
||||
if (lapic_flags & ACPI_MADT_ENABLED)
|
||||
return true;
|
||||
|
||||
if (acpi_support_online_capable && (lapic_flags & ACPI_MADT_ONLINE_CAPABLE))
|
||||
if (!acpi_support_online_capable ||
|
||||
(lapic_flags & ACPI_MADT_ONLINE_CAPABLE))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
@ -33,8 +33,8 @@ static int __init iommu_init_noop(void) { return 0; }
|
||||
static void iommu_shutdown_noop(void) { }
|
||||
bool __init bool_x86_init_noop(void) { return false; }
|
||||
void x86_op_int_noop(int cpu) { }
|
||||
static __init int set_rtc_noop(const struct timespec64 *now) { return -EINVAL; }
|
||||
static __init void get_rtc_noop(struct timespec64 *now) { }
|
||||
static int set_rtc_noop(const struct timespec64 *now) { return -EINVAL; }
|
||||
static void get_rtc_noop(struct timespec64 *now) { }
|
||||
|
||||
static __initconst const struct of_device_id of_cmos_match[] = {
|
||||
{ .compatible = "motorola,mc146818" },
|
||||
|
@ -12,6 +12,11 @@ int hv_remote_flush_tlb_with_range(struct kvm *kvm,
|
||||
int hv_remote_flush_tlb(struct kvm *kvm);
|
||||
void hv_track_root_tdp(struct kvm_vcpu *vcpu, hpa_t root_tdp);
|
||||
#else /* !CONFIG_HYPERV */
|
||||
static inline int hv_remote_flush_tlb(struct kvm *kvm)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static inline void hv_track_root_tdp(struct kvm_vcpu *vcpu, hpa_t root_tdp)
|
||||
{
|
||||
}
|
||||
|
@ -10,26 +10,4 @@
|
||||
|
||||
#include "../hyperv.h"
|
||||
|
||||
/*
|
||||
* Hyper-V uses the software reserved 32 bytes in VMCB
|
||||
* control area to expose SVM enlightenments to guests.
|
||||
*/
|
||||
struct hv_enlightenments {
|
||||
struct __packed hv_enlightenments_control {
|
||||
u32 nested_flush_hypercall:1;
|
||||
u32 msr_bitmap:1;
|
||||
u32 enlightened_npt_tlb: 1;
|
||||
u32 reserved:29;
|
||||
} __packed hv_enlightenments_control;
|
||||
u32 hv_vp_id;
|
||||
u64 hv_vm_id;
|
||||
u64 partition_assist_page;
|
||||
u64 reserved;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* Hyper-V uses the software reserved clean bit in VMCB
|
||||
*/
|
||||
#define VMCB_HV_NESTED_ENLIGHTENMENTS VMCB_SW
|
||||
|
||||
#endif /* __ARCH_X86_KVM_SVM_HYPERV_H__ */
|
||||
|
@ -179,8 +179,7 @@ void recalc_intercepts(struct vcpu_svm *svm)
|
||||
*/
|
||||
static bool nested_svm_vmrun_msrpm(struct vcpu_svm *svm)
|
||||
{
|
||||
struct hv_enlightenments *hve =
|
||||
(struct hv_enlightenments *)svm->nested.ctl.reserved_sw;
|
||||
struct hv_vmcb_enlightenments *hve = &svm->nested.ctl.hv_enlightenments;
|
||||
int i;
|
||||
|
||||
/*
|
||||
@ -194,7 +193,7 @@ static bool nested_svm_vmrun_msrpm(struct vcpu_svm *svm)
|
||||
if (!svm->nested.force_msr_bitmap_recalc &&
|
||||
kvm_hv_hypercall_enabled(&svm->vcpu) &&
|
||||
hve->hv_enlightenments_control.msr_bitmap &&
|
||||
(svm->nested.ctl.clean & BIT(VMCB_HV_NESTED_ENLIGHTENMENTS)))
|
||||
(svm->nested.ctl.clean & BIT(HV_VMCB_NESTED_ENLIGHTENMENTS)))
|
||||
goto set_msrpm_base_pa;
|
||||
|
||||
if (!(vmcb12_is_intercept(&svm->nested.ctl, INTERCEPT_MSR_PROT)))
|
||||
@ -369,8 +368,8 @@ void __nested_copy_vmcb_control_to_cache(struct kvm_vcpu *vcpu,
|
||||
/* Hyper-V extensions (Enlightened VMCB) */
|
||||
if (kvm_hv_hypercall_enabled(vcpu)) {
|
||||
to->clean = from->clean;
|
||||
memcpy(to->reserved_sw, from->reserved_sw,
|
||||
sizeof(struct hv_enlightenments));
|
||||
memcpy(&to->hv_enlightenments, &from->hv_enlightenments,
|
||||
sizeof(to->hv_enlightenments));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1485,7 +1484,7 @@ static void nested_copy_vmcb_cache_to_control(struct vmcb_control_area *dst,
|
||||
dst->virt_ext = from->virt_ext;
|
||||
dst->pause_filter_count = from->pause_filter_count;
|
||||
dst->pause_filter_thresh = from->pause_filter_thresh;
|
||||
/* 'clean' and 'reserved_sw' are not changed by KVM */
|
||||
/* 'clean' and 'hv_enlightenments' are not changed by KVM */
|
||||
}
|
||||
|
||||
static int svm_get_nested_state(struct kvm_vcpu *vcpu,
|
||||
|
@ -3719,7 +3719,7 @@ static void svm_enable_nmi_window(struct kvm_vcpu *vcpu)
|
||||
svm->vmcb->save.rflags |= (X86_EFLAGS_TF | X86_EFLAGS_RF);
|
||||
}
|
||||
|
||||
static void svm_flush_tlb_current(struct kvm_vcpu *vcpu)
|
||||
static void svm_flush_tlb_asid(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
struct vcpu_svm *svm = to_svm(vcpu);
|
||||
|
||||
@ -3736,6 +3736,37 @@ static void svm_flush_tlb_current(struct kvm_vcpu *vcpu)
|
||||
svm->current_vmcb->asid_generation--;
|
||||
}
|
||||
|
||||
static void svm_flush_tlb_current(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
hpa_t root_tdp = vcpu->arch.mmu->root.hpa;
|
||||
|
||||
/*
|
||||
* When running on Hyper-V with EnlightenedNptTlb enabled, explicitly
|
||||
* flush the NPT mappings via hypercall as flushing the ASID only
|
||||
* affects virtual to physical mappings, it does not invalidate guest
|
||||
* physical to host physical mappings.
|
||||
*/
|
||||
if (svm_hv_is_enlightened_tlb_enabled(vcpu) && VALID_PAGE(root_tdp))
|
||||
hyperv_flush_guest_mapping(root_tdp);
|
||||
|
||||
svm_flush_tlb_asid(vcpu);
|
||||
}
|
||||
|
||||
static void svm_flush_tlb_all(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
/*
|
||||
* When running on Hyper-V with EnlightenedNptTlb enabled, remote TLB
|
||||
* flushes should be routed to hv_remote_flush_tlb() without requesting
|
||||
* a "regular" remote flush. Reaching this point means either there's
|
||||
* a KVM bug or a prior hv_remote_flush_tlb() call failed, both of
|
||||
* which might be fatal to the guest. Yell, but try to recover.
|
||||
*/
|
||||
if (WARN_ON_ONCE(svm_hv_is_enlightened_tlb_enabled(vcpu)))
|
||||
hv_remote_flush_tlb(vcpu->kvm);
|
||||
|
||||
svm_flush_tlb_asid(vcpu);
|
||||
}
|
||||
|
||||
static void svm_flush_tlb_gva(struct kvm_vcpu *vcpu, gva_t gva)
|
||||
{
|
||||
struct vcpu_svm *svm = to_svm(vcpu);
|
||||
@ -4733,10 +4764,10 @@ static struct kvm_x86_ops svm_x86_ops __initdata = {
|
||||
.set_rflags = svm_set_rflags,
|
||||
.get_if_flag = svm_get_if_flag,
|
||||
|
||||
.flush_tlb_all = svm_flush_tlb_current,
|
||||
.flush_tlb_all = svm_flush_tlb_all,
|
||||
.flush_tlb_current = svm_flush_tlb_current,
|
||||
.flush_tlb_gva = svm_flush_tlb_gva,
|
||||
.flush_tlb_guest = svm_flush_tlb_current,
|
||||
.flush_tlb_guest = svm_flush_tlb_asid,
|
||||
|
||||
.vcpu_pre_run = svm_vcpu_pre_run,
|
||||
.vcpu_run = svm_vcpu_run,
|
||||
|
@ -151,7 +151,10 @@ struct vmcb_ctrl_area_cached {
|
||||
u64 nested_cr3;
|
||||
u64 virt_ext;
|
||||
u32 clean;
|
||||
u8 reserved_sw[32];
|
||||
union {
|
||||
struct hv_vmcb_enlightenments hv_enlightenments;
|
||||
u8 reserved_sw[32];
|
||||
};
|
||||
};
|
||||
|
||||
struct svm_nested_state {
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
int svm_hv_enable_direct_tlbflush(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
struct hv_enlightenments *hve;
|
||||
struct hv_vmcb_enlightenments *hve;
|
||||
struct hv_partition_assist_pg **p_hv_pa_pg =
|
||||
&to_kvm_hv(vcpu->kvm)->hv_pa_pg;
|
||||
|
||||
@ -26,13 +26,13 @@ int svm_hv_enable_direct_tlbflush(struct kvm_vcpu *vcpu)
|
||||
if (!*p_hv_pa_pg)
|
||||
return -ENOMEM;
|
||||
|
||||
hve = (struct hv_enlightenments *)to_svm(vcpu)->vmcb->control.reserved_sw;
|
||||
hve = &to_svm(vcpu)->vmcb->control.hv_enlightenments;
|
||||
|
||||
hve->partition_assist_page = __pa(*p_hv_pa_pg);
|
||||
hve->hv_vm_id = (unsigned long)vcpu->kvm;
|
||||
if (!hve->hv_enlightenments_control.nested_flush_hypercall) {
|
||||
hve->hv_enlightenments_control.nested_flush_hypercall = 1;
|
||||
vmcb_mark_dirty(to_svm(vcpu)->vmcb, VMCB_HV_NESTED_ENLIGHTENMENTS);
|
||||
vmcb_mark_dirty(to_svm(vcpu)->vmcb, HV_VMCB_NESTED_ENLIGHTENMENTS);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -6,6 +6,8 @@
|
||||
#ifndef __ARCH_X86_KVM_SVM_ONHYPERV_H__
|
||||
#define __ARCH_X86_KVM_SVM_ONHYPERV_H__
|
||||
|
||||
#include <asm/mshyperv.h>
|
||||
|
||||
#if IS_ENABLED(CONFIG_HYPERV)
|
||||
|
||||
#include "kvm_onhyperv.h"
|
||||
@ -15,10 +17,20 @@ static struct kvm_x86_ops svm_x86_ops;
|
||||
|
||||
int svm_hv_enable_direct_tlbflush(struct kvm_vcpu *vcpu);
|
||||
|
||||
static inline bool svm_hv_is_enlightened_tlb_enabled(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
struct hv_vmcb_enlightenments *hve = &to_svm(vcpu)->vmcb->control.hv_enlightenments;
|
||||
|
||||
return ms_hyperv.nested_features & HV_X64_NESTED_ENLIGHTENED_TLB &&
|
||||
!!hve->hv_enlightenments_control.enlightened_npt_tlb;
|
||||
}
|
||||
|
||||
static inline void svm_hv_init_vmcb(struct vmcb *vmcb)
|
||||
{
|
||||
struct hv_enlightenments *hve =
|
||||
(struct hv_enlightenments *)vmcb->control.reserved_sw;
|
||||
struct hv_vmcb_enlightenments *hve = &vmcb->control.hv_enlightenments;
|
||||
|
||||
BUILD_BUG_ON(sizeof(vmcb->control.hv_enlightenments) !=
|
||||
sizeof(vmcb->control.reserved_sw));
|
||||
|
||||
if (npt_enabled &&
|
||||
ms_hyperv.nested_features & HV_X64_NESTED_ENLIGHTENED_TLB)
|
||||
@ -60,27 +72,29 @@ static inline void svm_hv_vmcb_dirty_nested_enlightenments(
|
||||
struct kvm_vcpu *vcpu)
|
||||
{
|
||||
struct vmcb *vmcb = to_svm(vcpu)->vmcb;
|
||||
struct hv_enlightenments *hve =
|
||||
(struct hv_enlightenments *)vmcb->control.reserved_sw;
|
||||
struct hv_vmcb_enlightenments *hve = &vmcb->control.hv_enlightenments;
|
||||
|
||||
if (hve->hv_enlightenments_control.msr_bitmap)
|
||||
vmcb_mark_dirty(vmcb, VMCB_HV_NESTED_ENLIGHTENMENTS);
|
||||
vmcb_mark_dirty(vmcb, HV_VMCB_NESTED_ENLIGHTENMENTS);
|
||||
}
|
||||
|
||||
static inline void svm_hv_update_vp_id(struct vmcb *vmcb,
|
||||
struct kvm_vcpu *vcpu)
|
||||
static inline void svm_hv_update_vp_id(struct vmcb *vmcb, struct kvm_vcpu *vcpu)
|
||||
{
|
||||
struct hv_enlightenments *hve =
|
||||
(struct hv_enlightenments *)vmcb->control.reserved_sw;
|
||||
struct hv_vmcb_enlightenments *hve = &vmcb->control.hv_enlightenments;
|
||||
u32 vp_index = kvm_hv_get_vpindex(vcpu);
|
||||
|
||||
if (hve->hv_vp_id != vp_index) {
|
||||
hve->hv_vp_id = vp_index;
|
||||
vmcb_mark_dirty(vmcb, VMCB_HV_NESTED_ENLIGHTENMENTS);
|
||||
vmcb_mark_dirty(vmcb, HV_VMCB_NESTED_ENLIGHTENMENTS);
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
||||
static inline bool svm_hv_is_enlightened_tlb_enabled(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline void svm_hv_init_vmcb(struct vmcb *vmcb)
|
||||
{
|
||||
}
|
||||
|
@ -3845,7 +3845,12 @@ static void nested_vmx_inject_exception_vmexit(struct kvm_vcpu *vcpu)
|
||||
exit_qual = 0;
|
||||
}
|
||||
|
||||
if (ex->has_error_code) {
|
||||
/*
|
||||
* Unlike AMD's Paged Real Mode, which reports an error code on #PF
|
||||
* VM-Exits even if the CPU is in Real Mode, Intel VMX never sets the
|
||||
* "has error code" flags on VM-Exit if the CPU is in Real Mode.
|
||||
*/
|
||||
if (ex->has_error_code && is_protmode(vcpu)) {
|
||||
/*
|
||||
* Intel CPUs do not generate error codes with bits 31:16 set,
|
||||
* and more importantly VMX disallows setting bits 31:16 in the
|
||||
|
@ -9853,13 +9853,20 @@ int kvm_check_nested_events(struct kvm_vcpu *vcpu)
|
||||
|
||||
static void kvm_inject_exception(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
/*
|
||||
* Suppress the error code if the vCPU is in Real Mode, as Real Mode
|
||||
* exceptions don't report error codes. The presence of an error code
|
||||
* is carried with the exception and only stripped when the exception
|
||||
* is injected as intercepted #PF VM-Exits for AMD's Paged Real Mode do
|
||||
* report an error code despite the CPU being in Real Mode.
|
||||
*/
|
||||
vcpu->arch.exception.has_error_code &= is_protmode(vcpu);
|
||||
|
||||
trace_kvm_inj_exception(vcpu->arch.exception.vector,
|
||||
vcpu->arch.exception.has_error_code,
|
||||
vcpu->arch.exception.error_code,
|
||||
vcpu->arch.exception.injected);
|
||||
|
||||
if (vcpu->arch.exception.error_code && !is_protmode(vcpu))
|
||||
vcpu->arch.exception.error_code = false;
|
||||
static_call(kvm_x86_inject_exception)(vcpu);
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include <linux/dmi.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/vgaarb.h>
|
||||
#include <asm/amd_nb.h>
|
||||
#include <asm/hpet.h>
|
||||
#include <asm/pci_x86.h>
|
||||
|
||||
@ -824,3 +825,23 @@ static void rs690_fix_64bit_dma(struct pci_dev *pdev)
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x7910, rs690_fix_64bit_dma);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_AMD_NB
|
||||
|
||||
#define AMD_15B8_RCC_DEV2_EPF0_STRAP2 0x10136008
|
||||
#define AMD_15B8_RCC_DEV2_EPF0_STRAP2_NO_SOFT_RESET_DEV2_F0_MASK 0x00000080L
|
||||
|
||||
static void quirk_clear_strap_no_soft_reset_dev2_f0(struct pci_dev *dev)
|
||||
{
|
||||
u32 data;
|
||||
|
||||
if (!amd_smn_read(0, AMD_15B8_RCC_DEV2_EPF0_STRAP2, &data)) {
|
||||
data &= ~AMD_15B8_RCC_DEV2_EPF0_STRAP2_NO_SOFT_RESET_DEV2_F0_MASK;
|
||||
if (amd_smn_write(0, AMD_15B8_RCC_DEV2_EPF0_STRAP2, data))
|
||||
pci_err(dev, "Failed to write data 0x%x\n", data);
|
||||
} else {
|
||||
pci_err(dev, "Failed to read data\n");
|
||||
}
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, 0x15b8, quirk_clear_strap_no_soft_reset_dev2_f0);
|
||||
#endif
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include <linux/pseudo_fs.h>
|
||||
#include <linux/uio.h>
|
||||
#include <linux/namei.h>
|
||||
#include <linux/cleancache.h>
|
||||
#include <linux/part_stat.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/stat.h>
|
||||
@ -86,6 +87,10 @@ void invalidate_bdev(struct block_device *bdev)
|
||||
lru_add_drain_all(); /* make sure all lru add caches are flushed */
|
||||
invalidate_mapping_pages(mapping, 0, -1);
|
||||
}
|
||||
/* 99% of the time, we don't need to flush the cleancache on the bdev.
|
||||
* But, for the strange corners, lets be cautious
|
||||
*/
|
||||
cleancache_invalidate_inode(mapping);
|
||||
}
|
||||
EXPORT_SYMBOL(invalidate_bdev);
|
||||
|
||||
|
@ -1340,8 +1340,6 @@ bool blk_rq_is_poll(struct request *rq)
|
||||
return false;
|
||||
if (rq->mq_hctx->type != HCTX_TYPE_POLL)
|
||||
return false;
|
||||
if (WARN_ON_ONCE(!rq->bio))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(blk_rq_is_poll);
|
||||
@ -1349,7 +1347,7 @@ EXPORT_SYMBOL_GPL(blk_rq_is_poll);
|
||||
static void blk_rq_poll_completion(struct request *rq, struct completion *wait)
|
||||
{
|
||||
do {
|
||||
bio_poll(rq->bio, NULL, 0);
|
||||
blk_mq_poll(rq->q, blk_rq_to_qc(rq), NULL, 0);
|
||||
cond_resched();
|
||||
} while (!completion_done(wait));
|
||||
}
|
||||
|
@ -1066,7 +1066,6 @@ static void tg_dispatch_one_bio(struct throtl_grp *tg, bool rw)
|
||||
sq->nr_queued[rw]--;
|
||||
|
||||
throtl_charge_bio(tg, bio);
|
||||
bio_set_flag(bio, BIO_BPS_THROTTLED);
|
||||
|
||||
/*
|
||||
* If our parent is another tg, we just need to transfer @bio to
|
||||
@ -1079,6 +1078,7 @@ static void tg_dispatch_one_bio(struct throtl_grp *tg, bool rw)
|
||||
throtl_add_bio_tg(bio, &tg->qnode_on_parent[rw], parent_tg);
|
||||
start_parent_slice_with_credit(tg, parent_tg, rw);
|
||||
} else {
|
||||
bio_set_flag(bio, BIO_BPS_THROTTLED);
|
||||
throtl_qnode_add_bio(bio, &tg->qnode_on_parent[rw],
|
||||
&parent_sq->queued[rw]);
|
||||
BUG_ON(tg->td->nr_queued[rw] <= 0);
|
||||
|
@ -368,7 +368,6 @@ int disk_scan_partitions(struct gendisk *disk, fmode_t mode)
|
||||
if (disk->open_partitions)
|
||||
return -EBUSY;
|
||||
|
||||
set_bit(GD_NEED_PART_SCAN, &disk->state);
|
||||
/*
|
||||
* If the device is opened exclusively by current thread already, it's
|
||||
* safe to scan partitons, otherwise, use bd_prepare_to_claim() to
|
||||
@ -381,12 +380,19 @@ int disk_scan_partitions(struct gendisk *disk, fmode_t mode)
|
||||
return ret;
|
||||
}
|
||||
|
||||
set_bit(GD_NEED_PART_SCAN, &disk->state);
|
||||
bdev = blkdev_get_by_dev(disk_devt(disk), mode & ~FMODE_EXCL, NULL);
|
||||
if (IS_ERR(bdev))
|
||||
ret = PTR_ERR(bdev);
|
||||
else
|
||||
blkdev_put(bdev, mode & ~FMODE_EXCL);
|
||||
|
||||
/*
|
||||
* If blkdev_get_by_dev() failed early, GD_NEED_PART_SCAN is still set,
|
||||
* and this will cause that re-assemble partitioned raid device will
|
||||
* creat partition for underlying disk.
|
||||
*/
|
||||
clear_bit(GD_NEED_PART_SCAN, &disk->state);
|
||||
if (!(mode & FMODE_EXCL))
|
||||
bd_abort_claiming(disk->part0, disk_scan_partitions);
|
||||
return ret;
|
||||
|
@ -9,7 +9,11 @@ POST_DEFCONFIG_CMDS="rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG
|
||||
# needed for DT overlay support
|
||||
DTC_FLAGS="-@"
|
||||
|
||||
MAKE_GOALS="${MAKE_GOALS}
|
||||
MAKE_GOALS="
|
||||
Image
|
||||
modules
|
||||
Image.lz4
|
||||
Image.gz
|
||||
dtbs
|
||||
"
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.constants
|
||||
|
||||
KMI_GENERATION=4
|
||||
KMI_GENERATION=5
|
||||
|
||||
LLVM=1
|
||||
DEPMOD=depmod
|
||||
|
@ -2,7 +2,9 @@
|
||||
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.aarch64
|
||||
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki
|
||||
|
||||
MAKE_GOALS="${MAKE_GOALS}
|
||||
MAKE_GOALS="
|
||||
Image
|
||||
modules
|
||||
Image.lz4
|
||||
Image.gz
|
||||
"
|
||||
|
@ -2,7 +2,9 @@
|
||||
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.riscv64
|
||||
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki
|
||||
|
||||
MAKE_GOALS="${MAKE_GOALS}
|
||||
MAKE_GOALS="
|
||||
Image
|
||||
modules
|
||||
Image.lz4
|
||||
Image.gz
|
||||
"
|
||||
|
@ -12,7 +12,9 @@ POST_DEFCONFIG_CMDS="rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG
|
||||
|
||||
DTS_EXT_DIR=common-modules/virtual-device
|
||||
DTC_INCLUDE=${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/boot/dts/rockchip
|
||||
MAKE_GOALS="${MAKE_GOALS}
|
||||
MAKE_GOALS="
|
||||
Image
|
||||
modules
|
||||
rk3399-rock-pi-4b.dtb
|
||||
"
|
||||
|
||||
|
@ -79,16 +79,16 @@ static int pkcs7_digest(struct pkcs7_message *pkcs7,
|
||||
}
|
||||
|
||||
if (sinfo->msgdigest_len != sig->digest_size) {
|
||||
pr_debug("Sig %u: Invalid digest size (%u)\n",
|
||||
sinfo->index, sinfo->msgdigest_len);
|
||||
pr_warn("Sig %u: Invalid digest size (%u)\n",
|
||||
sinfo->index, sinfo->msgdigest_len);
|
||||
ret = -EBADMSG;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (memcmp(sig->digest, sinfo->msgdigest,
|
||||
sinfo->msgdigest_len) != 0) {
|
||||
pr_debug("Sig %u: Message digest doesn't match\n",
|
||||
sinfo->index);
|
||||
pr_warn("Sig %u: Message digest doesn't match\n",
|
||||
sinfo->index);
|
||||
ret = -EKEYREJECTED;
|
||||
goto error;
|
||||
}
|
||||
@ -478,7 +478,7 @@ int pkcs7_supply_detached_data(struct pkcs7_message *pkcs7,
|
||||
const void *data, size_t datalen)
|
||||
{
|
||||
if (pkcs7->data) {
|
||||
pr_debug("Data already supplied\n");
|
||||
pr_warn("Data already supplied\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
pkcs7->data = data;
|
||||
|
@ -74,7 +74,7 @@ static int pefile_parse_binary(const void *pebuf, unsigned int pelen,
|
||||
break;
|
||||
|
||||
default:
|
||||
pr_debug("Unknown PEOPT magic = %04hx\n", pe32->magic);
|
||||
pr_warn("Unknown PEOPT magic = %04hx\n", pe32->magic);
|
||||
return -ELIBBAD;
|
||||
}
|
||||
|
||||
@ -95,7 +95,7 @@ static int pefile_parse_binary(const void *pebuf, unsigned int pelen,
|
||||
ctx->certs_size = ddir->certs.size;
|
||||
|
||||
if (!ddir->certs.virtual_address || !ddir->certs.size) {
|
||||
pr_debug("Unsigned PE binary\n");
|
||||
pr_warn("Unsigned PE binary\n");
|
||||
return -ENODATA;
|
||||
}
|
||||
|
||||
@ -127,7 +127,7 @@ static int pefile_strip_sig_wrapper(const void *pebuf,
|
||||
unsigned len;
|
||||
|
||||
if (ctx->sig_len < sizeof(wrapper)) {
|
||||
pr_debug("Signature wrapper too short\n");
|
||||
pr_warn("Signature wrapper too short\n");
|
||||
return -ELIBBAD;
|
||||
}
|
||||
|
||||
@ -135,19 +135,23 @@ static int pefile_strip_sig_wrapper(const void *pebuf,
|
||||
pr_debug("sig wrapper = { %x, %x, %x }\n",
|
||||
wrapper.length, wrapper.revision, wrapper.cert_type);
|
||||
|
||||
/* Both pesign and sbsign round up the length of certificate table
|
||||
* (in optional header data directories) to 8 byte alignment.
|
||||
/* sbsign rounds up the length of certificate table (in optional
|
||||
* header data directories) to 8 byte alignment. However, the PE
|
||||
* specification states that while entries are 8-byte aligned, this is
|
||||
* not included in their length, and as a result, pesign has not
|
||||
* rounded up since 0.110.
|
||||
*/
|
||||
if (round_up(wrapper.length, 8) != ctx->sig_len) {
|
||||
pr_debug("Signature wrapper len wrong\n");
|
||||
if (wrapper.length > ctx->sig_len) {
|
||||
pr_warn("Signature wrapper bigger than sig len (%x > %x)\n",
|
||||
ctx->sig_len, wrapper.length);
|
||||
return -ELIBBAD;
|
||||
}
|
||||
if (wrapper.revision != WIN_CERT_REVISION_2_0) {
|
||||
pr_debug("Signature is not revision 2.0\n");
|
||||
pr_warn("Signature is not revision 2.0\n");
|
||||
return -ENOTSUPP;
|
||||
}
|
||||
if (wrapper.cert_type != WIN_CERT_TYPE_PKCS_SIGNED_DATA) {
|
||||
pr_debug("Signature certificate type is not PKCS\n");
|
||||
pr_warn("Signature certificate type is not PKCS\n");
|
||||
return -ENOTSUPP;
|
||||
}
|
||||
|
||||
@ -160,7 +164,7 @@ static int pefile_strip_sig_wrapper(const void *pebuf,
|
||||
ctx->sig_offset += sizeof(wrapper);
|
||||
ctx->sig_len -= sizeof(wrapper);
|
||||
if (ctx->sig_len < 4) {
|
||||
pr_debug("Signature data missing\n");
|
||||
pr_warn("Signature data missing\n");
|
||||
return -EKEYREJECTED;
|
||||
}
|
||||
|
||||
@ -194,7 +198,7 @@ static int pefile_strip_sig_wrapper(const void *pebuf,
|
||||
return 0;
|
||||
}
|
||||
not_pkcs7:
|
||||
pr_debug("Signature data not PKCS#7\n");
|
||||
pr_warn("Signature data not PKCS#7\n");
|
||||
return -ELIBBAD;
|
||||
}
|
||||
|
||||
@ -337,8 +341,8 @@ static int pefile_digest_pe(const void *pebuf, unsigned int pelen,
|
||||
digest_size = crypto_shash_digestsize(tfm);
|
||||
|
||||
if (digest_size != ctx->digest_len) {
|
||||
pr_debug("Digest size mismatch (%zx != %x)\n",
|
||||
digest_size, ctx->digest_len);
|
||||
pr_warn("Digest size mismatch (%zx != %x)\n",
|
||||
digest_size, ctx->digest_len);
|
||||
ret = -EBADMSG;
|
||||
goto error_no_desc;
|
||||
}
|
||||
@ -369,7 +373,7 @@ static int pefile_digest_pe(const void *pebuf, unsigned int pelen,
|
||||
* PKCS#7 certificate.
|
||||
*/
|
||||
if (memcmp(digest, ctx->digest, ctx->digest_len) != 0) {
|
||||
pr_debug("Digest mismatch\n");
|
||||
pr_warn("Digest mismatch\n");
|
||||
ret = -EKEYREJECTED;
|
||||
} else {
|
||||
pr_debug("The digests match!\n");
|
||||
|
@ -1984,6 +1984,7 @@ static int instance;
|
||||
static int acpi_video_bus_add(struct acpi_device *device)
|
||||
{
|
||||
struct acpi_video_bus *video;
|
||||
bool auto_detect;
|
||||
int error;
|
||||
acpi_status status;
|
||||
|
||||
@ -2045,10 +2046,20 @@ static int acpi_video_bus_add(struct acpi_device *device)
|
||||
mutex_unlock(&video_list_lock);
|
||||
|
||||
/*
|
||||
* The userspace visible backlight_device gets registered separately
|
||||
* from acpi_video_register_backlight().
|
||||
* If backlight-type auto-detection is used then a native backlight may
|
||||
* show up later and this may change the result from video to native.
|
||||
* Therefor normally the userspace visible /sys/class/backlight device
|
||||
* gets registered separately by the GPU driver calling
|
||||
* acpi_video_register_backlight() when an internal panel is detected.
|
||||
* Register the backlight now when not using auto-detection, so that
|
||||
* when the kernel cmdline or DMI-quirks are used the backlight will
|
||||
* get registered even if acpi_video_register_backlight() is not called.
|
||||
*/
|
||||
acpi_video_run_bcl_for_osi(video);
|
||||
if (__acpi_video_get_backlight_type(false, &auto_detect) == acpi_backlight_video &&
|
||||
!auto_detect)
|
||||
acpi_video_bus_register_backlight(video);
|
||||
|
||||
acpi_video_bus_add_notify_handler(video);
|
||||
|
||||
return 0;
|
||||
|
@ -400,6 +400,13 @@ static const struct dmi_system_id medion_laptop[] = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "M17T"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.ident = "MEDION S17413",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "MEDION"),
|
||||
DMI_MATCH(DMI_BOARD_NAME, "M1xA"),
|
||||
},
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
|
@ -274,6 +274,43 @@ static const struct dmi_system_id video_detect_dmi_table[] = {
|
||||
},
|
||||
},
|
||||
|
||||
/*
|
||||
* Models which need acpi_video backlight control where the GPU drivers
|
||||
* do not call acpi_video_register_backlight() because no internal panel
|
||||
* is detected. Typically these are all-in-ones (monitors with builtin
|
||||
* PC) where the panel connection shows up as regular DP instead of eDP.
|
||||
*/
|
||||
{
|
||||
.callback = video_detect_force_video,
|
||||
/* Apple iMac14,1 */
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "iMac14,1"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.callback = video_detect_force_video,
|
||||
/* Apple iMac14,2 */
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "iMac14,2"),
|
||||
},
|
||||
},
|
||||
|
||||
/*
|
||||
* Older models with nvidia GPU which need acpi_video backlight
|
||||
* control and where the old nvidia binary driver series does not
|
||||
* call acpi_video_register_backlight().
|
||||
*/
|
||||
{
|
||||
.callback = video_detect_force_video,
|
||||
/* ThinkPad W530 */
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad W530"),
|
||||
},
|
||||
},
|
||||
|
||||
/*
|
||||
* These models have a working acpi_video backlight control, and using
|
||||
* native backlight causes a regression where backlight does not work
|
||||
@ -493,6 +530,14 @@ static const struct dmi_system_id video_detect_dmi_table[] = {
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Precision 7510"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.callback = video_detect_force_native,
|
||||
/* Acer Aspire 3830TG */
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 3830TG"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.callback = video_detect_force_native,
|
||||
/* Acer Aspire 4810T */
|
||||
@ -772,7 +817,7 @@ static bool prefer_native_over_acpi_video(void)
|
||||
* Determine which type of backlight interface to use on this system,
|
||||
* First check cmdline, then dmi quirks, then do autodetect.
|
||||
*/
|
||||
static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native)
|
||||
enum acpi_backlight_type __acpi_video_get_backlight_type(bool native, bool *auto_detect)
|
||||
{
|
||||
static DEFINE_MUTEX(init_mutex);
|
||||
static bool nvidia_wmi_ec_present;
|
||||
@ -797,6 +842,9 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native)
|
||||
native_available = true;
|
||||
mutex_unlock(&init_mutex);
|
||||
|
||||
if (auto_detect)
|
||||
*auto_detect = false;
|
||||
|
||||
/*
|
||||
* The below heuristics / detection steps are in order of descending
|
||||
* presedence. The commandline takes presedence over anything else.
|
||||
@ -808,6 +856,9 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native)
|
||||
if (acpi_backlight_dmi != acpi_backlight_undef)
|
||||
return acpi_backlight_dmi;
|
||||
|
||||
if (auto_detect)
|
||||
*auto_detect = true;
|
||||
|
||||
/* Special cases such as nvidia_wmi_ec and apple gmux. */
|
||||
if (nvidia_wmi_ec_present)
|
||||
return acpi_backlight_nvidia_wmi_ec;
|
||||
@ -827,15 +878,4 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native)
|
||||
/* No ACPI video/native (old hw), use vendor specific fw methods. */
|
||||
return acpi_backlight_vendor;
|
||||
}
|
||||
|
||||
enum acpi_backlight_type acpi_video_get_backlight_type(void)
|
||||
{
|
||||
return __acpi_video_get_backlight_type(false);
|
||||
}
|
||||
EXPORT_SYMBOL(acpi_video_get_backlight_type);
|
||||
|
||||
bool acpi_video_backlight_use_native(void)
|
||||
{
|
||||
return __acpi_video_get_backlight_type(true) == acpi_backlight_native;
|
||||
}
|
||||
EXPORT_SYMBOL(acpi_video_backlight_use_native);
|
||||
EXPORT_SYMBOL(__acpi_video_get_backlight_type);
|
||||
|
@ -180,9 +180,12 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_disable_thermal_cooling_stats);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_resume);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_audio_usb_offload_connect);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_audio_usb_offload_disconnect);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kswapd_per_node);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpci_override_toggling);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_typec_tcpci_get_vbus);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_store_partner_src_caps);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_get_timer);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_modify_src_caps);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_log);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_gfp_zone_flags);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_readahead_gfp_mask);
|
||||
|
@ -233,7 +233,7 @@ static int ublk_validate_params(const struct ublk_device *ub)
|
||||
if (ub->params.types & UBLK_PARAM_TYPE_BASIC) {
|
||||
const struct ublk_param_basic *p = &ub->params.basic;
|
||||
|
||||
if (p->logical_bs_shift > PAGE_SHIFT)
|
||||
if (p->logical_bs_shift > PAGE_SHIFT || p->logical_bs_shift < 9)
|
||||
return -EINVAL;
|
||||
|
||||
if (p->logical_bs_shift > p->physical_bs_shift)
|
||||
@ -1202,9 +1202,10 @@ static void ublk_handle_need_get_data(struct ublk_device *ub, int q_id,
|
||||
ublk_queue_cmd(ubq, req);
|
||||
}
|
||||
|
||||
static int ublk_ch_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags)
|
||||
static int __ublk_ch_uring_cmd(struct io_uring_cmd *cmd,
|
||||
unsigned int issue_flags,
|
||||
struct ublksrv_io_cmd *ub_cmd)
|
||||
{
|
||||
struct ublksrv_io_cmd *ub_cmd = (struct ublksrv_io_cmd *)cmd->cmd;
|
||||
struct ublk_device *ub = cmd->file->private_data;
|
||||
struct ublk_queue *ubq;
|
||||
struct ublk_io *io;
|
||||
@ -1306,6 +1307,23 @@ static int ublk_ch_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags)
|
||||
return -EIOCBQUEUED;
|
||||
}
|
||||
|
||||
static int ublk_ch_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags)
|
||||
{
|
||||
struct ublksrv_io_cmd *ub_src = (struct ublksrv_io_cmd *) cmd->cmd;
|
||||
struct ublksrv_io_cmd ub_cmd;
|
||||
|
||||
/*
|
||||
* Not necessary for async retry, but let's keep it simple and always
|
||||
* copy the values to avoid any potential reuse.
|
||||
*/
|
||||
ub_cmd.q_id = READ_ONCE(ub_src->q_id);
|
||||
ub_cmd.tag = READ_ONCE(ub_src->tag);
|
||||
ub_cmd.result = READ_ONCE(ub_src->result);
|
||||
ub_cmd.addr = READ_ONCE(ub_src->addr);
|
||||
|
||||
return __ublk_ch_uring_cmd(cmd, issue_flags, &ub_cmd);
|
||||
}
|
||||
|
||||
static const struct file_operations ublk_ch_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ublk_ch_open,
|
||||
@ -1553,17 +1571,18 @@ static int ublk_ctrl_start_dev(struct io_uring_cmd *cmd)
|
||||
set_bit(GD_SUPPRESS_PART_SCAN, &disk->state);
|
||||
|
||||
get_device(&ub->cdev_dev);
|
||||
ub->dev_info.state = UBLK_S_DEV_LIVE;
|
||||
ret = add_disk(disk);
|
||||
if (ret) {
|
||||
/*
|
||||
* Has to drop the reference since ->free_disk won't be
|
||||
* called in case of add_disk failure.
|
||||
*/
|
||||
ub->dev_info.state = UBLK_S_DEV_DEAD;
|
||||
ublk_put_device(ub);
|
||||
goto out_put_disk;
|
||||
}
|
||||
set_bit(UB_STATE_USED, &ub->state);
|
||||
ub->dev_info.state = UBLK_S_DEV_LIVE;
|
||||
out_put_disk:
|
||||
if (ret)
|
||||
put_disk(disk);
|
||||
@ -1886,6 +1905,8 @@ static int ublk_ctrl_set_params(struct io_uring_cmd *cmd)
|
||||
/* clear all we don't support yet */
|
||||
ub->params.types &= UBLK_PARAM_TYPE_ALL;
|
||||
ret = ublk_validate_params(ub);
|
||||
if (ret)
|
||||
ub->params.types = 0;
|
||||
}
|
||||
mutex_unlock(&ub->mutex);
|
||||
ublk_put_device(ub);
|
||||
|
@ -505,7 +505,7 @@ static ssize_t backing_dev_store(struct device *dev,
|
||||
if (sz > 0 && file_name[sz - 1] == '\n')
|
||||
file_name[sz - 1] = 0x00;
|
||||
|
||||
backing_dev = filp_open(file_name, O_RDWR|O_LARGEFILE, 0);
|
||||
backing_dev = filp_open_block(file_name, O_RDWR|O_LARGEFILE, 0);
|
||||
if (IS_ERR(backing_dev)) {
|
||||
err = PTR_ERR(backing_dev);
|
||||
backing_dev = NULL;
|
||||
@ -1395,13 +1395,14 @@ static int __zram_bvec_write(struct zram *zram, struct bio_vec *bvec,
|
||||
__GFP_KSWAPD_RECLAIM |
|
||||
__GFP_NOWARN |
|
||||
__GFP_HIGHMEM |
|
||||
__GFP_MOVABLE);
|
||||
__GFP_MOVABLE |
|
||||
__GFP_CMA);
|
||||
if (IS_ERR((void *)handle)) {
|
||||
zcomp_stream_put(zram->comp);
|
||||
atomic64_inc(&zram->stats.writestall);
|
||||
handle = zs_malloc(zram->mem_pool, comp_len,
|
||||
GFP_NOIO | __GFP_HIGHMEM |
|
||||
__GFP_MOVABLE);
|
||||
__GFP_MOVABLE | __GFP_CMA);
|
||||
if (IS_ERR((void *)handle))
|
||||
return PTR_ERR((void *)handle);
|
||||
|
||||
|
@ -511,7 +511,7 @@ static const char *btbcm_get_board_name(struct device *dev)
|
||||
len = strlen(tmp) + 1;
|
||||
board_type = devm_kzalloc(dev, len, GFP_KERNEL);
|
||||
strscpy(board_type, tmp, len);
|
||||
for (i = 0; i < board_type[i]; i++) {
|
||||
for (i = 0; i < len; i++) {
|
||||
if (board_type[i] == '/')
|
||||
board_type[i] = '-';
|
||||
}
|
||||
|
@ -144,8 +144,9 @@ static int rs9_regmap_i2c_read(void *context,
|
||||
static const struct regmap_config rs9_regmap_config = {
|
||||
.reg_bits = 8,
|
||||
.val_bits = 8,
|
||||
.cache_type = REGCACHE_NONE,
|
||||
.cache_type = REGCACHE_FLAT,
|
||||
.max_register = RS9_REG_BCP,
|
||||
.num_reg_defaults_raw = 0x8,
|
||||
.rd_table = &rs9_readable_table,
|
||||
.wr_table = &rs9_writeable_table,
|
||||
.reg_write = rs9_regmap_i2c_write,
|
||||
|
@ -17,7 +17,6 @@ static const struct regmap_config sprdclk_regmap_config = {
|
||||
.reg_bits = 32,
|
||||
.reg_stride = 4,
|
||||
.val_bits = 32,
|
||||
.max_register = 0xffff,
|
||||
.fast_io = true,
|
||||
};
|
||||
|
||||
@ -43,6 +42,8 @@ int sprd_clk_regmap_init(struct platform_device *pdev,
|
||||
struct device *dev = &pdev->dev;
|
||||
struct device_node *node = dev->of_node, *np;
|
||||
struct regmap *regmap;
|
||||
struct resource *res;
|
||||
struct regmap_config reg_config = sprdclk_regmap_config;
|
||||
|
||||
if (of_find_property(node, "sprd,syscon", NULL)) {
|
||||
regmap = syscon_regmap_lookup_by_phandle(node, "sprd,syscon");
|
||||
@ -59,12 +60,14 @@ int sprd_clk_regmap_init(struct platform_device *pdev,
|
||||
return PTR_ERR(regmap);
|
||||
}
|
||||
} else {
|
||||
base = devm_platform_ioremap_resource(pdev, 0);
|
||||
base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
|
||||
if (IS_ERR(base))
|
||||
return PTR_ERR(base);
|
||||
|
||||
reg_config.max_register = resource_size(res) - reg_config.reg_stride;
|
||||
|
||||
regmap = devm_regmap_init_mmio(&pdev->dev, base,
|
||||
&sprdclk_regmap_config);
|
||||
®_config);
|
||||
if (IS_ERR(regmap)) {
|
||||
pr_err("failed to init regmap\n");
|
||||
return PTR_ERR(regmap);
|
||||
|
@ -479,6 +479,15 @@ config MTK_TIMER
|
||||
help
|
||||
Support for Mediatek timer driver.
|
||||
|
||||
config MTK_CPUX_TIMER
|
||||
bool "MediaTek CPUX timer driver" if COMPILE_TEST
|
||||
depends on HAS_IOMEM
|
||||
default ARCH_MEDIATEK
|
||||
select TIMER_OF
|
||||
select CLKSRC_MMIO
|
||||
help
|
||||
Support for MediaTek CPUXGPT timer driver.
|
||||
|
||||
config SPRD_TIMER
|
||||
bool "Spreadtrum timer driver" if EXPERT
|
||||
depends on HAS_IOMEM
|
||||
|
@ -51,6 +51,7 @@ obj-$(CONFIG_FSL_FTM_TIMER) += timer-fsl-ftm.o
|
||||
obj-$(CONFIG_VF_PIT_TIMER) += timer-vf-pit.o
|
||||
obj-$(CONFIG_CLKSRC_QCOM) += timer-qcom.o
|
||||
obj-$(CONFIG_MTK_TIMER) += timer-mediatek.o
|
||||
obj-$(CONFIG_MTK_CPUX_TIMER) += timer-mediatek-cpux.o
|
||||
obj-$(CONFIG_CLKSRC_PISTACHIO) += timer-pistachio.o
|
||||
obj-$(CONFIG_CLKSRC_TI_32K) += timer-ti-32k.o
|
||||
obj-$(CONFIG_OXNAS_RPS_TIMER) += timer-oxnas-rps.o
|
||||
|
140
drivers/clocksource/timer-mediatek-cpux.c
Normal file
140
drivers/clocksource/timer-mediatek-cpux.c
Normal file
@ -0,0 +1,140 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* MediaTek SoCs CPUX General Purpose Timer handling
|
||||
*
|
||||
* Based on timer-mediatek.c:
|
||||
* Copyright (C) 2014 Matthias Brugger <matthias.bgg@gmail.com>
|
||||
*
|
||||
* Copyright (C) 2022 Collabora Ltd.
|
||||
* AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/clockchips.h>
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irqreturn.h>
|
||||
#include <linux/sched_clock.h>
|
||||
#include <linux/slab.h>
|
||||
#include "timer-of.h"
|
||||
|
||||
#define TIMER_SYNC_TICKS 3
|
||||
|
||||
/* cpux mcusys wrapper */
|
||||
#define CPUX_CON_REG 0x0
|
||||
#define CPUX_IDX_REG 0x4
|
||||
|
||||
/* cpux */
|
||||
#define CPUX_IDX_GLOBAL_CTRL 0x0
|
||||
#define CPUX_ENABLE BIT(0)
|
||||
#define CPUX_CLK_DIV_MASK GENMASK(10, 8)
|
||||
#define CPUX_CLK_DIV1 BIT(8)
|
||||
#define CPUX_CLK_DIV2 BIT(9)
|
||||
#define CPUX_CLK_DIV4 BIT(10)
|
||||
#define CPUX_IDX_GLOBAL_IRQ 0x30
|
||||
|
||||
static u32 mtk_cpux_readl(u32 reg_idx, struct timer_of *to)
|
||||
{
|
||||
writel(reg_idx, timer_of_base(to) + CPUX_IDX_REG);
|
||||
return readl(timer_of_base(to) + CPUX_CON_REG);
|
||||
}
|
||||
|
||||
static void mtk_cpux_writel(u32 val, u32 reg_idx, struct timer_of *to)
|
||||
{
|
||||
writel(reg_idx, timer_of_base(to) + CPUX_IDX_REG);
|
||||
writel(val, timer_of_base(to) + CPUX_CON_REG);
|
||||
}
|
||||
|
||||
static void mtk_cpux_set_irq(struct timer_of *to, bool enable)
|
||||
{
|
||||
const unsigned long *irq_mask = cpumask_bits(cpu_possible_mask);
|
||||
u32 val;
|
||||
|
||||
val = mtk_cpux_readl(CPUX_IDX_GLOBAL_IRQ, to);
|
||||
|
||||
if (enable)
|
||||
val |= *irq_mask;
|
||||
else
|
||||
val &= ~(*irq_mask);
|
||||
|
||||
mtk_cpux_writel(val, CPUX_IDX_GLOBAL_IRQ, to);
|
||||
}
|
||||
|
||||
static int mtk_cpux_clkevt_shutdown(struct clock_event_device *clkevt)
|
||||
{
|
||||
/* Clear any irq */
|
||||
mtk_cpux_set_irq(to_timer_of(clkevt), false);
|
||||
|
||||
/*
|
||||
* Disabling CPUXGPT timer will crash the platform, especially
|
||||
* if Trusted Firmware is using it (usually, for sleep states),
|
||||
* so we only mask the IRQ and call it a day.
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mtk_cpux_clkevt_resume(struct clock_event_device *clkevt)
|
||||
{
|
||||
mtk_cpux_set_irq(to_timer_of(clkevt), true);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct timer_of to = {
|
||||
/*
|
||||
* There are per-cpu interrupts for the CPUX General Purpose Timer
|
||||
* but since this timer feeds the AArch64 System Timer we can rely
|
||||
* on the CPU timer PPIs as well, so we don't declare TIMER_OF_IRQ.
|
||||
*/
|
||||
.flags = TIMER_OF_BASE | TIMER_OF_CLOCK,
|
||||
|
||||
.clkevt = {
|
||||
.name = "mtk-cpuxgpt",
|
||||
.cpumask = cpu_possible_mask,
|
||||
.rating = 10,
|
||||
.set_state_shutdown = mtk_cpux_clkevt_shutdown,
|
||||
.tick_resume = mtk_cpux_clkevt_resume,
|
||||
},
|
||||
};
|
||||
|
||||
static int __init mtk_cpux_init(struct device_node *node)
|
||||
{
|
||||
u32 freq, val;
|
||||
int ret;
|
||||
|
||||
/* If this fails, bad things are about to happen... */
|
||||
ret = timer_of_init(node, &to);
|
||||
if (ret) {
|
||||
WARN(1, "Cannot start CPUX timers.\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if we're given a clock with the right frequency for this
|
||||
* timer, otherwise warn but keep going with the setup anyway, as
|
||||
* that makes it possible to still boot the kernel, even though
|
||||
* it may not work correctly (random lockups, etc).
|
||||
* The reason behind this is that having an early UART may not be
|
||||
* possible for everyone and this gives a chance to retrieve kmsg
|
||||
* for eventual debugging even on consumer devices.
|
||||
*/
|
||||
freq = timer_of_rate(&to);
|
||||
if (freq > 13000000)
|
||||
WARN(1, "Requested unsupported timer frequency %u\n", freq);
|
||||
|
||||
/* Clock input is 26MHz, set DIV2 to achieve 13MHz clock */
|
||||
val = mtk_cpux_readl(CPUX_IDX_GLOBAL_CTRL, &to);
|
||||
val &= ~CPUX_CLK_DIV_MASK;
|
||||
val |= CPUX_CLK_DIV2;
|
||||
mtk_cpux_writel(val, CPUX_IDX_GLOBAL_CTRL, &to);
|
||||
|
||||
/* Enable all CPUXGPT timers */
|
||||
val = mtk_cpux_readl(CPUX_IDX_GLOBAL_CTRL, &to);
|
||||
mtk_cpux_writel(val | CPUX_ENABLE, CPUX_IDX_GLOBAL_CTRL, &to);
|
||||
|
||||
clockevents_config_and_register(&to.clkevt, timer_of_rate(&to),
|
||||
TIMER_SYNC_TICKS, 0xffffffff);
|
||||
|
||||
return 0;
|
||||
}
|
||||
TIMER_OF_DECLARE(mtk_mt6795, "mediatek,mt6795-systimer", mtk_cpux_init);
|
@ -22,19 +22,6 @@
|
||||
|
||||
#define TIMER_SYNC_TICKS (3)
|
||||
|
||||
/* cpux mcusys wrapper */
|
||||
#define CPUX_CON_REG 0x0
|
||||
#define CPUX_IDX_REG 0x4
|
||||
|
||||
/* cpux */
|
||||
#define CPUX_IDX_GLOBAL_CTRL 0x0
|
||||
#define CPUX_ENABLE BIT(0)
|
||||
#define CPUX_CLK_DIV_MASK GENMASK(10, 8)
|
||||
#define CPUX_CLK_DIV1 BIT(8)
|
||||
#define CPUX_CLK_DIV2 BIT(9)
|
||||
#define CPUX_CLK_DIV4 BIT(10)
|
||||
#define CPUX_IDX_GLOBAL_IRQ 0x30
|
||||
|
||||
/* gpt */
|
||||
#define GPT_IRQ_EN_REG 0x00
|
||||
#define GPT_IRQ_ENABLE(val) BIT((val) - 1)
|
||||
@ -85,52 +72,6 @@
|
||||
|
||||
static void __iomem *gpt_sched_reg __read_mostly;
|
||||
|
||||
static u32 mtk_cpux_readl(u32 reg_idx, struct timer_of *to)
|
||||
{
|
||||
writel(reg_idx, timer_of_base(to) + CPUX_IDX_REG);
|
||||
return readl(timer_of_base(to) + CPUX_CON_REG);
|
||||
}
|
||||
|
||||
static void mtk_cpux_writel(u32 val, u32 reg_idx, struct timer_of *to)
|
||||
{
|
||||
writel(reg_idx, timer_of_base(to) + CPUX_IDX_REG);
|
||||
writel(val, timer_of_base(to) + CPUX_CON_REG);
|
||||
}
|
||||
|
||||
static void mtk_cpux_set_irq(struct timer_of *to, bool enable)
|
||||
{
|
||||
const unsigned long *irq_mask = cpumask_bits(cpu_possible_mask);
|
||||
u32 val;
|
||||
|
||||
val = mtk_cpux_readl(CPUX_IDX_GLOBAL_IRQ, to);
|
||||
|
||||
if (enable)
|
||||
val |= *irq_mask;
|
||||
else
|
||||
val &= ~(*irq_mask);
|
||||
|
||||
mtk_cpux_writel(val, CPUX_IDX_GLOBAL_IRQ, to);
|
||||
}
|
||||
|
||||
static int mtk_cpux_clkevt_shutdown(struct clock_event_device *clkevt)
|
||||
{
|
||||
/* Clear any irq */
|
||||
mtk_cpux_set_irq(to_timer_of(clkevt), false);
|
||||
|
||||
/*
|
||||
* Disabling CPUXGPT timer will crash the platform, especially
|
||||
* if Trusted Firmware is using it (usually, for sleep states),
|
||||
* so we only mask the IRQ and call it a day.
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mtk_cpux_clkevt_resume(struct clock_event_device *clkevt)
|
||||
{
|
||||
mtk_cpux_set_irq(to_timer_of(clkevt), true);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void mtk_syst_ack_irq(struct timer_of *to)
|
||||
{
|
||||
/* Clear and disable interrupt */
|
||||
@ -340,60 +281,6 @@ static struct timer_of to = {
|
||||
},
|
||||
};
|
||||
|
||||
static int __init mtk_cpux_init(struct device_node *node)
|
||||
{
|
||||
static struct timer_of to_cpux;
|
||||
u32 freq, val;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* There are per-cpu interrupts for the CPUX General Purpose Timer
|
||||
* but since this timer feeds the AArch64 System Timer we can rely
|
||||
* on the CPU timer PPIs as well, so we don't declare TIMER_OF_IRQ.
|
||||
*/
|
||||
to_cpux.flags = TIMER_OF_BASE | TIMER_OF_CLOCK;
|
||||
to_cpux.clkevt.name = "mtk-cpuxgpt";
|
||||
to_cpux.clkevt.rating = 10;
|
||||
to_cpux.clkevt.cpumask = cpu_possible_mask;
|
||||
to_cpux.clkevt.set_state_shutdown = mtk_cpux_clkevt_shutdown;
|
||||
to_cpux.clkevt.tick_resume = mtk_cpux_clkevt_resume;
|
||||
|
||||
/* If this fails, bad things are about to happen... */
|
||||
ret = timer_of_init(node, &to_cpux);
|
||||
if (ret) {
|
||||
WARN(1, "Cannot start CPUX timers.\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if we're given a clock with the right frequency for this
|
||||
* timer, otherwise warn but keep going with the setup anyway, as
|
||||
* that makes it possible to still boot the kernel, even though
|
||||
* it may not work correctly (random lockups, etc).
|
||||
* The reason behind this is that having an early UART may not be
|
||||
* possible for everyone and this gives a chance to retrieve kmsg
|
||||
* for eventual debugging even on consumer devices.
|
||||
*/
|
||||
freq = timer_of_rate(&to_cpux);
|
||||
if (freq > 13000000)
|
||||
WARN(1, "Requested unsupported timer frequency %u\n", freq);
|
||||
|
||||
/* Clock input is 26MHz, set DIV2 to achieve 13MHz clock */
|
||||
val = mtk_cpux_readl(CPUX_IDX_GLOBAL_CTRL, &to_cpux);
|
||||
val &= ~CPUX_CLK_DIV_MASK;
|
||||
val |= CPUX_CLK_DIV2;
|
||||
mtk_cpux_writel(val, CPUX_IDX_GLOBAL_CTRL, &to_cpux);
|
||||
|
||||
/* Enable all CPUXGPT timers */
|
||||
val = mtk_cpux_readl(CPUX_IDX_GLOBAL_CTRL, &to_cpux);
|
||||
mtk_cpux_writel(val | CPUX_ENABLE, CPUX_IDX_GLOBAL_CTRL, &to_cpux);
|
||||
|
||||
clockevents_config_and_register(&to_cpux.clkevt, timer_of_rate(&to_cpux),
|
||||
TIMER_SYNC_TICKS, 0xffffffff);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init mtk_syst_init(struct device_node *node)
|
||||
{
|
||||
int ret;
|
||||
@ -452,4 +339,3 @@ static int __init mtk_gpt_init(struct device_node *node)
|
||||
}
|
||||
TIMER_OF_DECLARE(mtk_mt6577, "mediatek,mt6577-timer", mtk_gpt_init);
|
||||
TIMER_OF_DECLARE(mtk_mt6765, "mediatek,mt6765-timer", mtk_syst_init);
|
||||
TIMER_OF_DECLARE(mtk_mt6795, "mediatek,mt6795-systimer", mtk_cpux_init);
|
||||
|
@ -97,10 +97,6 @@ struct quad8 {
|
||||
struct quad8_reg __iomem *reg;
|
||||
};
|
||||
|
||||
/* Borrow Toggle flip-flop */
|
||||
#define QUAD8_FLAG_BT BIT(0)
|
||||
/* Carry Toggle flip-flop */
|
||||
#define QUAD8_FLAG_CT BIT(1)
|
||||
/* Error flag */
|
||||
#define QUAD8_FLAG_E BIT(4)
|
||||
/* Up/Down flag */
|
||||
@ -133,6 +129,9 @@ struct quad8 {
|
||||
#define QUAD8_CMR_QUADRATURE_X2 0x10
|
||||
#define QUAD8_CMR_QUADRATURE_X4 0x18
|
||||
|
||||
/* Each Counter is 24 bits wide */
|
||||
#define LS7267_CNTR_MAX GENMASK(23, 0)
|
||||
|
||||
static int quad8_signal_read(struct counter_device *counter,
|
||||
struct counter_signal *signal,
|
||||
enum counter_signal_level *level)
|
||||
@ -156,18 +155,10 @@ static int quad8_count_read(struct counter_device *counter,
|
||||
{
|
||||
struct quad8 *const priv = counter_priv(counter);
|
||||
struct channel_reg __iomem *const chan = priv->reg->channel + count->id;
|
||||
unsigned int flags;
|
||||
unsigned int borrow;
|
||||
unsigned int carry;
|
||||
unsigned long irqflags;
|
||||
int i;
|
||||
|
||||
flags = ioread8(&chan->control);
|
||||
borrow = flags & QUAD8_FLAG_BT;
|
||||
carry = !!(flags & QUAD8_FLAG_CT);
|
||||
|
||||
/* Borrow XOR Carry effectively doubles count range */
|
||||
*val = (unsigned long)(borrow ^ carry) << 24;
|
||||
*val = 0;
|
||||
|
||||
spin_lock_irqsave(&priv->lock, irqflags);
|
||||
|
||||
@ -191,8 +182,7 @@ static int quad8_count_write(struct counter_device *counter,
|
||||
unsigned long irqflags;
|
||||
int i;
|
||||
|
||||
/* Only 24-bit values are supported */
|
||||
if (val > 0xFFFFFF)
|
||||
if (val > LS7267_CNTR_MAX)
|
||||
return -ERANGE;
|
||||
|
||||
spin_lock_irqsave(&priv->lock, irqflags);
|
||||
@ -378,7 +368,7 @@ static int quad8_action_read(struct counter_device *counter,
|
||||
|
||||
/* Handle Index signals */
|
||||
if (synapse->signal->id >= 16) {
|
||||
if (priv->preset_enable[count->id])
|
||||
if (!priv->preset_enable[count->id])
|
||||
*action = COUNTER_SYNAPSE_ACTION_RISING_EDGE;
|
||||
else
|
||||
*action = COUNTER_SYNAPSE_ACTION_NONE;
|
||||
@ -806,8 +796,7 @@ static int quad8_count_preset_write(struct counter_device *counter,
|
||||
struct quad8 *const priv = counter_priv(counter);
|
||||
unsigned long irqflags;
|
||||
|
||||
/* Only 24-bit values are supported */
|
||||
if (preset > 0xFFFFFF)
|
||||
if (preset > LS7267_CNTR_MAX)
|
||||
return -ERANGE;
|
||||
|
||||
spin_lock_irqsave(&priv->lock, irqflags);
|
||||
@ -834,8 +823,7 @@ static int quad8_count_ceiling_read(struct counter_device *counter,
|
||||
*ceiling = priv->preset[count->id];
|
||||
break;
|
||||
default:
|
||||
/* By default 0x1FFFFFF (25 bits unsigned) is maximum count */
|
||||
*ceiling = 0x1FFFFFF;
|
||||
*ceiling = LS7267_CNTR_MAX;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -850,8 +838,7 @@ static int quad8_count_ceiling_write(struct counter_device *counter,
|
||||
struct quad8 *const priv = counter_priv(counter);
|
||||
unsigned long irqflags;
|
||||
|
||||
/* Only 24-bit values are supported */
|
||||
if (ceiling > 0xFFFFFF)
|
||||
if (ceiling > LS7267_CNTR_MAX)
|
||||
return -ERANGE;
|
||||
|
||||
spin_lock_irqsave(&priv->lock, irqflags);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user