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:
jianzhou 2023-05-09 22:40:49 -07:00
commit 106629f5e1
469 changed files with 40687 additions and 7479 deletions

View File

@ -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"],

View File

@ -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(%).

View 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.

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1 +1 @@
9464c5644c653b3172e359597ee9a9972e7577ee
dd29657536f36a7e86ffcf1593fefc1d0f800320

View File

@ -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

View File

@ -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

View 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

View File

@ -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

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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)

View File

@ -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) \
)
/*

View File

@ -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

View File

@ -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,

View File

@ -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))

View File

@ -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))

View File

@ -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();

View File

@ -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);

View File

@ -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);

View File

@ -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)

View File

@ -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)) {

View File

@ -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;

View File

@ -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;
}

View File

@ -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),

View File

@ -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;
}

View File

@ -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) {

View File

@ -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)

View File

@ -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)

View File

@ -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);
}

View File

@ -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

View File

@ -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
/**

View File

@ -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 */

View File

@ -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 */

View File

@ -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;

View File

@ -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}

View File

@ -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)

View File

@ -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 */
/*

View File

@ -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;

View File

@ -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

View File

@ -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;
};

View File

@ -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

View File

@ -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];
};
};

View File

@ -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;

View File

@ -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" },

View File

@ -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)
{
}

View File

@ -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__ */

View File

@ -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,

View File

@ -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,

View File

@ -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 {

View File

@ -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;

View File

@ -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)
{
}

View File

@ -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

View File

@ -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);
}

View File

@ -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

View File

@ -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);

View File

@ -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));
}

View File

@ -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);

View File

@ -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;

View File

@ -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
"

View File

@ -1,6 +1,6 @@
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.constants
KMI_GENERATION=4
KMI_GENERATION=5
LLVM=1
DEPMOD=depmod

View File

@ -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
"

View File

@ -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
"

View File

@ -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
"

View File

@ -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;

View File

@ -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");

View File

@ -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;

View File

@ -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"),
},
},
{ }
};

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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] = '-';
}

View File

@ -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,

View File

@ -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);
&reg_config);
if (IS_ERR(regmap)) {
pr_err("failed to init regmap\n");
return PTR_ERR(regmap);

View File

@ -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

View File

@ -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

View 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);

View File

@ -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);

View File

@ -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