Merge tag 'ASB-2024-06-05_11-5.4' of https://android.googlesource.com/kernel/common into android13-5.4-lahaina
https://source.android.com/docs/security/bulletin/2024-06-01 CVE-2024-26926 * tag 'ASB-2024-06-05_11-5.4' of https://android.googlesource.com/kernel/common: ANDROID: ABI fixup for abi break in struct dst_ops BACKPORT: net: fix __dst_negative_advice() race UPSTREAM: selftests: timers: Fix valid-adjtimex signed left-shift undefined behavior Revert "timers: Rename del_timer_sync() to timer_delete_sync()" Reapply "media: ttpci: fix two memleaks in budget_av_attach" Revert "media: rename VFL_TYPE_GRABBER to _VIDEO" Revert "media: media/pci: rename VFL_TYPE_GRABBER to _VIDEO" Revert "media: ttpci: fix two memleaks in budget_av_attach" Revert "net: ip_tunnel: make sure to pull inner header in ip_tunnel_rcv()" Revert "regmap: allow to define reg_update_bits for no bus configuration" Revert "regmap: Add bulk read/write callbacks into regmap_config" Revert "serial: max310x: fix IO data corruption in batched operations" Revert "geneve: make sure to pull inner header in geneve_rx()" Linux 5.4.274 firmware: meson_sm: fix to avoid potential NULL pointer dereference ip_gre: do not report erspan version on GRE interface erspan: Check IFLA_GRE_ERSPAN_VER is set. VMCI: Fix possible memcpy() run-time warning in vmci_datagram_invoke_guest_handler() Bluetooth: btintel: Fixe build regression x86/alternative: Don't call text_poke() in lazy TLB mode drm/i915/gt: Reset queue_priority_hint on parking x86/mm/pat: fix VM_PAT handling in COW mappings virtio: reenable config if freezing device failed drm/vkms: call drm_atomic_helper_shutdown before drm_dev_put() tty: n_gsm: require CAP_NET_ADMIN to attach N_GSM0710 ldisc netfilter: nf_tables: discard table flag update with pending basechain deletion netfilter: nf_tables: release mutex after nft_gc_seq_end from abort path netfilter: nf_tables: release batch on table validation from abort path netfilter: nf_tables: reject new basechain after table flag update fbmon: prevent division by zero in fb_videomode_from_videomode() fbdev: viafb: fix typo in hw_bitblt_1 and hw_bitblt_2 usb: sl811-hcd: only defined function checkdone if QUIRK2 is defined usb: typec: tcpci: add generic tcpci fallback compatible tools: iio: replace seekdir() in iio_generic_buffer ktest: force $buildonly = 1 for 'make_warnings_file' test type Input: allocate keycode for Display refresh rate toggle block: prevent division by zero in blk_rq_stat_sum() Revert "ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default" SUNRPC: increase size of rpc_wait_queue.qlen from unsigned short to unsigned int drm/amd/display: Fix nanosec stat overflow media: sta2x11: fix irq handler cast isofs: handle CDs with bad root inode but good Joliet root directory scsi: lpfc: Fix possible memory leak in lpfc_rcv_padisc() sysv: don't call sb_bread() with pointers_lock held Input: synaptics-rmi4 - fail probing if memory allocation for "phys" fails Bluetooth: btintel: Fix null ptr deref in btintel_read_version btrfs: send: handle path ref underflow in header iterate_inode_ref() btrfs: export: handle invalid inode or root reference in btrfs_get_parent() btrfs: handle chunk tree lookup error in btrfs_relocate_sys_chunks() tools/power x86_energy_perf_policy: Fix file leak in get_pkg_num() ionic: set adminq irq affinity arm64: dts: rockchip: fix rk3399 hdmi ports node arm64: dts: rockchip: fix rk3328 hdmi ports node panic: Flush kernel log buffer at the end VMCI: Fix memcpy() run-time warning in dg_dispatch_as_host() wifi: ath9k: fix LNA selection in ath_ant_try_scan() s390/entry: align system call table on 8 bytes x86/mce: Make sure to grab mce_sysfs_mutex in set_bank() ALSA: hda/realtek: Update Panasonic CF-SZ6 quirk to support headset with microphone ata: sata_mv: Fix PCI device ID table declaration compilation warning scsi: mylex: Fix sysfs buffer lengths ata: sata_sx4: fix pdc20621_get_from_dimm() on 64-bit ASoC: ops: Fix wraparound for mask in snd_soc_get_volsw net: ravb: Always process TX descriptor ring erspan: make sure erspan_base_hdr is present in skb->head erspan: Add type I version 0 support. init: open /initrd.image with O_LARGEFILE initramfs: switch initramfs unpacking to struct file based APIs fs: add a vfs_fchmod helper fs: add a vfs_fchown helper staging: vc04_services: fix information leak in create_component() staging: vc04_services: changen strncpy() to strscpy_pad() staging: mmal-vchiq: Fix client_component for 64 bit kernel staging: mmal-vchiq: Allocate and free components as required i40e: fix vf may be used uninitialized in this function warning ipv6: Fix infinite recursion in fib6_dump_done(). selftests: reuseaddr_conflict: add missing new line at the end of the output net: stmmac: fix rx queue priority assignment net/sched: act_skbmod: prevent kernel-infoleak bpf, sockmap: Prevent lock inversion deadlock in map delete elem netfilter: nf_tables: Fix potential data-race in __nft_flowtable_type_get() netfilter: nf_tables: flush pending destroy work before exit_net release mm, vmscan: prevent infinite loop for costly GFP_NOIO | __GFP_RETRY_MAYFAIL allocations Revert "x86/mm/ident_map: Use gbpages only where full GB page should be mapped." vfio/platform: Create persistent IRQ handlers vfio/pci: Create persistent INTx handler vfio: Introduce interface to flush virqfd inject workqueue vfio/pci: Lock external INTx masking ops vfio/pci: Disable auto-enable of exclusive INTx IRQ net/rds: fix possible cp null dereference netfilter: nf_tables: disallow timeout for anonymous sets Bluetooth: Fix TOCTOU in HCI debugfs implementation Bluetooth: hci_event: set the conn encrypted before conn establishes x86/cpufeatures: Add new word for scattered features r8169: fix issue caused by buggy BIOS on certain boards with RTL8168d dm integrity: fix out-of-range warning tcp: properly terminate timers for kernel sockets ixgbe: avoid sleeping allocation in ixgbe_ipsec_vf_add_sa() nfc: nci: Fix uninit-value in nci_dev_up and nci_ntf_packet USB: core: Fix deadlock in usb_deauthorize_interface() scsi: lpfc: Correct size for wqe for memset() x86/cpu: Enable STIBP on AMD if Automatic IBRS is enabled scsi: qla2xxx: Fix command flush on cable pull usb: udc: remove warning when queue disabled ep usb: dwc2: gadget: LPM flow fix usb: dwc2: host: Fix ISOC flow in DDMA mode usb: dwc2: host: Fix hibernation flow usb: dwc2: host: Fix remote wakeup from hibernation scsi: core: Fix unremoved procfs host directory regression ALSA: sh: aica: reorder cleanup operations to avoid UAF bugs usb: cdc-wdm: close race between read and workqueue mmc: core: Avoid negative index with array access mmc: core: Initialize mmc_blk_ioc_data exec: Fix NOMMU linux_binprm::exec in transfer_args_to_stack() wifi: mac80211: check/clear fast rx for non-4addr sta VLAN changes mm/migrate: set swap entry values of THP tail pages properly. mm/memory-failure: fix an incorrect use of tail pages vt: fix memory overlapping when deleting chars in the buffer bounds: support non-power-of-two CONFIG_NR_CPUS powerpc: xor_vmx: Add '-mhard-float' to CFLAGS efivarfs: Request at most 512 bytes for variable names perf/core: Fix reentry problem in perf_output_read_group() loop: loop_set_status_from_info() check before assignment loop: Check for overflow while configuring loop loop: Factor out configuring loop from status loop: Refactor loop_set_status() size calculation loop: Factor out setting loop device size loop: Remove sector_t truncation checks loop: Call loop_config_discard() only after new config is applied Revert "loop: Check for overflow while configuring loop" btrfs: allocate btrfs_ioctl_defrag_range_args on stack printk: Update @console_may_schedule in console_trylock_spinning() xen/events: close evtchn after mapping cleanup x86/speculation: Support intra-function call validation objtool: Add support for intra-function calls objtool: is_fentry_call() crashes if call has no destination fs/aio: Check IOCB_AIO_RW before the struct aio_kiocb conversion vt: fix unicode buffer corruption when deleting characters tty: serial: fsl_lpuart: avoid idle preamble pending if CTS is enabled usb: port: Don't try to peer unused USB ports based on location usb: gadget: ncm: Fix handling of zero block length packets USB: usb-storage: Prevent divide-by-0 error in isd200_ata_command ALSA: hda/realtek - Fix headset Mic no show at resume back for Lenovo ALC897 platform xfrm: Avoid clang fortify warning in copy_to_user_tmpl() netfilter: nf_tables: reject constant set with timeout netfilter: nf_tables: disallow anonymous set with timeout flag netfilter: nf_tables: mark set as dead when unbinding anonymous set with timeout comedi: comedi_test: Prevent timers rescheduling during deletion dm snapshot: fix lockup in dm_exception_table_exit ahci: asm1064: asm1166: don't limit reported ports ahci: asm1064: correct count of reported ports x86/CPU/AMD: Update the Zenbleed microcode revisions nilfs2: prevent kernel bug at submit_bh_wbc() nilfs2: use a more common logging style nilfs2: fix failure to detect DAT corruption in btree and direct mappings memtest: use {READ,WRITE}_ONCE in memory scanning drm/vc4: hdmi: do not return negative values from .get_modes() drm/imx/ipuv3: do not return negative values from .get_modes() drm/exynos: do not return negative values from .get_modes() s390/zcrypt: fix reference counting on zcrypt card objects soc: fsl: qbman: Use raw spinlock for cgr_lock soc: fsl: qbman: Add CGR update function soc: fsl: qbman: Add helper for sanity checking cgr ops soc: fsl: qbman: Always disable interrupts when taking cgr_lock ring-buffer: Fix full_waiters_pending in poll ring-buffer: Fix resetting of shortest_full vfio/platform: Disable virqfds on cleanup kbuild: Move -Wenum-{compare-conditional,enum-conversion} into W=1 speakup: Fix 8bit characters from direct synth slimbus: core: Remove usage of the deprecated ida_simple_xx() API nvmem: meson-efuse: fix function pointer type mismatch firmware: meson_sm: Rework driver as a proper platform driver ext4: fix corruption during on-line resize hwmon: (amc6821) add of_match table mmc: core: Fix switch on gp3 partition dm-raid: fix lockdep waring in "pers->hot_add_disk" Revert "Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d"" PCI/PM: Drain runtime-idle callbacks before driver removal PCI: Drop pci_device_remove() test of pci_dev->driver btrfs: fix off-by-one chunk length calculation at contains_pending_extent() fuse: don't unhash root mmc: tmio: avoid concurrent runs of mmc_request_done() PM: sleep: wakeirq: fix wake irq warning in system suspend USB: serial: cp210x: add pid/vid for TDK NC0110013M and MM0110113M USB: serial: option: add MeiG Smart SLM320 product USB: serial: cp210x: add ID for MGP Instruments PDS100 USB: serial: add device ID for VeriFone adapter USB: serial: ftdi_sio: add support for GMC Z216C Adapter IR-USB powerpc/fsl: Fix mfpmr build errors with newer binutils clk: qcom: mmcc-msm8974: fix terminating of frequency table arrays clk: qcom: mmcc-apq8084: fix terminating of frequency table arrays clk: qcom: gcc-ipq8074: fix terminating of frequency table arrays PM: suspend: Set mem_sleep_current during kernel command line setup parisc: Strip upper 32 bit of sum in csum_ipv6_magic for 64-bit builds parisc: Fix csum_ipv6_magic on 64-bit systems parisc: Fix csum_ipv6_magic on 32-bit systems parisc: Fix ip_fast_csum parisc: Do not hardcode registers in checksum functions mtd: rawnand: meson: fix scrambling mode value in command macro ubi: correct the calculation of fastmap size ubi: Check for too small LEB size in VTBL code ubifs: Set page uptodate in the correct place fat: fix uninitialized field in nostale filehandles ext4: correct best extent lstart adjustment logic selftests/mqueue: Set timeout to 180 seconds crypto: qat - resolve race condition during AER recovery crypto: qat - fix double free during reset sparc: vDSO: fix return value of __setup handler sparc64: NMI watchdog: fix return value of __setup handler KVM: Always flush async #PF workqueue when vCPU is being destroyed media: xc4000: Fix atomicity violation in xc4000_get_frequency serial: max310x: fix NULL pointer dereference in I2C instantiation arm: dts: marvell: Fix maxium->maxim typo in brownstone dts ARM: dts: mmp2-brownstone: Don't redeclare phandle references smack: Handle SMACK64TRANSMUTE in smack_inode_setsecurity() smack: Set SMACK64TRANSMUTE only for dirs in smack_inode_setxattr() clk: qcom: gcc-sdm845: Add soft dependency on rpmhpd media: staging: ipu3-imgu: Set fields before media_entity_pads_init() wifi: brcmfmac: Fix use-after-free bug in brcmf_cfg80211_detach timers: Rename del_timer_sync() to timer_delete_sync() timers: Use del_timer_sync() even on UP timers: Update kernel-doc for various functions x86/bugs: Use sysfs_emit() x86/cpu: Support AMD Automatic IBRS Documentation/hw-vuln: Update spectre doc amdkfd: use calloc instead of kzalloc to avoid integer overflow Linux 5.4.273 regmap: Add missing map->bus check spi: spi-mt65xx: Fix NULL pointer access in interrupt handler bpf: report RCU QS in cpumap kthread rcu: add a helper to report consolidated flavor QS netfilter: nf_tables: do not compare internal table flags on updates ARM: dts: sun8i-h2-plus-bananapi-m2-zero: add regulator nodes vcc-dram and vcc1v2 octeontx2-af: Use separate handlers for interrupts net/bnx2x: Prevent access to a freed page in page_pool hsr: Handle failures in module init rds: introduce acquire/release ordering in acquire/release_in_xmit() packet: annotate data-races around ignore_outgoing hsr: Fix uninit-value access in hsr_get_node() s390/vtime: fix average steal time calculation octeontx2-af: Use matching wake_up API variant in CGX command interface usb: gadget: net2272: Use irqflags in the call to net2272_probe_fin staging: greybus: fix get_channel_from_mode() failure path serial: 8250_exar: Don't remove GPIO device on suspend rtc: mt6397: select IRQ_DOMAIN instead of depending on it kconfig: fix infinite loop when expanding a macro at the end of file tty: serial: samsung: fix tx_empty() to return TIOCSER_TEMT serial: max310x: fix syntax error in IRQ error message tty: vt: fix 20 vs 0x20 typo in EScsiignore afs: Revert "afs: Hide silly-rename files from userspace" NFS: Fix an off by one in root_nfs_cat() watchdog: stm32_iwdg: initialize default timeout net: sunrpc: Fix an off by one in rpc_sockaddr2uaddr() scsi: bfa: Fix function pointer type mismatch for hcb_qe->cbfn RDMA/device: Fix a race between mad_client and cm_client init scsi: csiostor: Avoid function pointer casts ALSA: usb-audio: Stop parsing channels bits when all channels are found. clk: Fix clk_core_get NULL dereference sparc32: Fix section mismatch in leon_pci_grpci backlight: lp8788: Fully initialize backlight_properties during probe backlight: lm3639: Fully initialize backlight_properties during probe backlight: da9052: Fully initialize backlight_properties during probe backlight: lm3630a: Don't set bl->props.brightness in get_brightness backlight: lm3630a: Initialize backlight_properties on init powerpc/embedded6xx: Fix no previous prototype for avr_uart_send() etc. drm/msm/dpu: add division of drm_display_mode's hskew parameter powerpc/hv-gpci: Fix the H_GET_PERF_COUNTER_INFO hcall return value checks drm/mediatek: Fix a null pointer crash in mtk_drm_crtc_finish_page_flip media: ttpci: fix two memleaks in budget_av_attach media: media/pci: rename VFL_TYPE_GRABBER to _VIDEO media: rename VFL_TYPE_GRABBER to _VIDEO media: v4l2-core: correctly validate video and metadata ioctls media: go7007: fix a memleak in go7007_load_encoder media: dvb-frontends: avoid stack overflow warnings with clang media: pvrusb2: fix uaf in pvr2_context_set_notify drm/amdgpu: Fix missing break in ATOM_ARG_IMM Case of atom_get_src_int() ASoC: meson: axg-tdm-interface: fix mclk setup without mclk-fs mtd: rawnand: lpc32xx_mlc: fix irq handler prototype mtd: maps: physmap-core: fix flash size larger than 32-bit crypto: arm/sha - fix function cast warnings mfd: altera-sysmgr: Call of_node_put() only when of_parse_phandle() takes a ref mfd: syscon: Call of_node_put() only when of_parse_phandle() takes a ref drm/tegra: put drm_gem_object ref on error in tegra_fb_create clk: hisilicon: hi3519: Release the correct number of gates in hi3519_clk_unregister() PCI: Mark 3ware-9650SE Root Port Extended Tags as broken drm/mediatek: dsi: Fix DSI RGB666 formats and definitions clk: qcom: dispcc-sdm845: Adjust internal GDSC wait times media: pvrusb2: fix pvr2_stream_callback casts media: pvrusb2: remove redundant NULL check media: go7007: add check of return value of go7007_read_addr() media: imx: csc/scaler: fix v4l2_ctrl_handler memory leak perf stat: Avoid metric-only segv ALSA: seq: fix function cast warnings drm/radeon/ni: Fix wrong firmware size logging in ni_init_microcode() perf thread_map: Free strlist on normal path in thread_map__new_by_tid_str() PCI: switchtec: Fix an error handling path in switchtec_pci_probe() quota: Fix rcu annotations of inode dquot pointers quota: Fix potential NULL pointer dereference quota: simplify drop_dquot_ref() clk: qcom: reset: Ensure write completion on reset de/assertion clk: qcom: reset: Commonize the de/assert functions clk: qcom: reset: support resetting multiple bits clk: qcom: reset: Allow specifying custom reset delay media: edia: dvbdev: fix a use-after-free media: v4l2-mem2mem: fix a memleak in v4l2_m2m_register_entity media: v4l2-tpg: fix some memleaks in tpg_alloc media: em28xx: annotate unchecked call to media_device_register() perf evsel: Fix duplicate initialization of data->id in evsel__parse_sample() drm/amd/display: Fix potential NULL pointer dereferences in 'dcn10_set_output_transfer_func()' perf record: Fix possible incorrect free in record__switch_output() PCI/DPC: Print all TLP Prefixes, not just the first media: tc358743: register v4l2 async device only after successful setup dmaengine: tegra210-adma: Update dependency to ARCH_TEGRA drm/rockchip: lvds: do not overwrite error code drm: Don't treat 0 as -1 in drm_fixp2int_ceil drm/rockchip: inno_hdmi: Fix video timing drm/tegra: output: Fix missing i2c_put_adapter() in the error handling paths of tegra_output_probe() drm/tegra: dsi: Fix missing pm_runtime_disable() in the error handling path of tegra_dsi_probe() drm/tegra: dsi: Fix some error handling paths in tegra_dsi_probe() drm/tegra: dsi: Make use of the helper function dev_err_probe() gpu: host1x: mipi: Update tegra_mipi_request() to be node based drm/tegra: dsi: Add missing check for of_find_device_by_node dm: call the resume method on internal suspend dm raid: fix false positive for requeue needed during reshape nfp: flower: handle acti_netdevs allocation failure net/x25: fix incorrect parameter validation in the x25_getsockopt() function net: kcm: fix incorrect parameter validation in the kcm_getsockopt) function udp: fix incorrect parameter validation in the udp_lib_getsockopt() function l2tp: fix incorrect parameter validation in the pppol2tp_getsockopt() function tcp: fix incorrect parameter validation in the do_tcp_getsockopt() function net: hns3: fix port duplex configure error in IMP reset net: ip_tunnel: make sure to pull inner header in ip_tunnel_rcv() ipv6: fib6_rules: flush route cache when rule is changed bpf: Fix stackmap overflow check on 32-bit arches bpf: Fix hashtab overflow check on 32-bit arches sr9800: Add check for usbnet_get_endpoints Bluetooth: hci_core: Fix possible buffer overflow Bluetooth: Remove superfluous call to hci_conn_check_pending() igb: Fix missing time sync events igb: move PEROUT and EXTTS isr logic to separate functions mmc: wmt-sdmmc: remove an incorrect release_mem_region() call in the .remove function SUNRPC: fix some memleaks in gssx_dec_option_array x86, relocs: Ignore relocations in .notes section ACPI: scan: Fix device check notification handling ARM: dts: imx6dl-yapp4: Move the internal switch PHYs under the switch node ARM: dts: imx6dl-yapp4: Fix typo in the QCA switch register address ARM: dts: imx6dl-yapp4: Move phy reset into switch node ARM: dts: arm: realview: Fix development chip ROM compatible value net: ena: Remove ena_select_queue net: ena: cosmetic: fix line break issues wifi: brcmsmac: avoid function pointer casts iommu/amd: Mark interrupt as managed bus: tegra-aconnect: Update dependency to ARCH_TEGRA ACPI: processor_idle: Fix memory leak in acpi_processor_power_exit() arm64: dts: qcom: msm8996: Pad addresses arm64: dts: qcom: msm8996: Move regulator consumers to db820c arm64: dts: qcom: msm8996: Use node references in db820c arm64: dts: qcom: db820c: Move non-soc entries out of /soc bpf: Mark bpf_spin_{lock,unlock}() helpers with notrace correctly bpf: Factor out bpf_spin_lock into helpers. bpf: Add typecast to bpf helpers to help BTF generation arm64: dts: mediatek: mt7622: add missing "device_type" to memory nodes wifi: libertas: fix some memleaks in lbs_allocate_cmd_buffer() net: blackhole_dev: fix build warning for ethh set but not used af_unix: Annotate data-race of gc_in_progress in wait_for_unix_gc(). sock_diag: annotate data-races around sock_diag_handlers[family] wifi: mwifiex: debugfs: Drop unnecessary error check for debugfs_create_dir() wifi: wilc1000: fix RCU usage in connect path wifi: wilc1000: fix declarations ordering wifi: b43: Disable QoS for bcm4331 wifi: b43: Stop correct queue in DMA worker when QoS is disabled b43: main: Fix use true/false for bool type wifi: b43: Stop/wake correct queue in PIO Tx path when QoS is disabled wifi: b43: Stop/wake correct queue in DMA Tx path when QoS is disabled b43: dma: Fix use true/false for bool type variable wifi: ath10k: fix NULL pointer dereference in ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev() timekeeping: Fix cross-timestamp interpolation for non-x86 timekeeping: Fix cross-timestamp interpolation corner case decision timekeeping: Fix cross-timestamp interpolation on counter wrap aoe: fix the potential use-after-free problem in aoecmd_cfg_pkts fs/select: rework stack allocation hack for clang nbd: null check for nla_nest_start do_sys_name_to_handle(): use kzalloc() to fix kernel-infoleak ASoC: wm8962: Fix up incorrect error message in wm8962_set_fll ASoC: wm8962: Enable both SPKOUTR_ENA and SPKOUTL_ENA in mono mode ASoC: wm8962: Enable oscillator if selecting WM8962_FLL_OSC Input: gpio_keys_polled - suppress deferred probe error for gpio ASoC: Intel: bytcr_rt5640: Add an extra entry for the Chuwi Vi8 tablet firewire: core: use long bus reset on gap count error Bluetooth: rfcomm: Fix null-ptr-deref in rfcomm_check_security scsi: mpt3sas: Prevent sending diag_reset when the controller is ready btrfs: fix data race at btrfs_use_block_rsv() when accessing block reserve dm-verity, dm-crypt: align "struct bvec_iter" correctly block: sed-opal: handle empty atoms when parsing response parisc/ftrace: add missing CONFIG_DYNAMIC_FTRACE check net/iucv: fix the allocation size of iucv_path_table array RDMA/mlx5: Relax DEVX access upon modify commands HID: multitouch: Add required quirk for Synaptics 0xcddc device MIPS: Clear Cause.BD in instruction_pointer_set x86/xen: Add some null pointer checking to smp.c ASoC: rt5645: Make LattePanda board DMI match more precise selftests: tls: use exact comparison in recv_partial io_uring: drop any code related to SCM_RIGHTS io_uring/unix: drop usage of io_uring socket UPSTREAM: arm64: dts: qcom: sdm845: fix USB DP/DM HS PHY interrupts UPSTREAM: arm64: dts: qcom: add PDC interrupt controller for SDM845 Linux 5.4.272 arm64: dts: qcom: sdm845: fix USB DP/DM HS PHY interrupts arm64: dts: qcom: add PDC interrupt controller for SDM845 serial: max310x: fix IO data corruption in batched operations serial: max310x: implement I2C support serial: max310x: make accessing revision id interface-agnostic regmap: Add bulk read/write callbacks into regmap_config regmap: allow to define reg_update_bits for no bus configuration serial: max310x: Unprepare and disable clock in error path getrusage: use sig->stats_lock rather than lock_task_sighand() getrusage: use __for_each_thread() getrusage: move thread_group_cputime_adjusted() outside of lock_task_sighand() getrusage: add the "signal_struct *sig" local variable y2038: rusage: use __kernel_old_timeval hv_netvsc: Register VF in netvsc_probe if NET_DEVICE_REGISTER missed hv_netvsc: use netif_is_bond_master() instead of open code hv_netvsc: Make netvsc/VF binding check both MAC and serial number Input: i8042 - fix strange behavior of touchpad on Clevo NS70PU serial: max310x: prevent infinite while() loop in port startup serial: max310x: use a separate regmap for each port serial: max310x: use regmap methods for SPI batch operations serial: max310x: Make use of device properties serial: max310x: fail probe if clock crystal is unstable serial: max310x: Try to get crystal clock rate from property serial: max310x: Use devm_clk_get_optional() to get the input clock um: allow not setting extra rpaths in the linux binary selftests: mm: fix map_hugetlb failure on 64K page size systems netrom: Fix data-races around sysctl_net_busy_read netrom: Fix a data-race around sysctl_netrom_link_fails_count netrom: Fix a data-race around sysctl_netrom_routing_control netrom: Fix a data-race around sysctl_netrom_transport_no_activity_timeout netrom: Fix a data-race around sysctl_netrom_transport_requested_window_size netrom: Fix a data-race around sysctl_netrom_transport_busy_delay netrom: Fix a data-race around sysctl_netrom_transport_acknowledge_delay netrom: Fix a data-race around sysctl_netrom_transport_maximum_tries netrom: Fix a data-race around sysctl_netrom_transport_timeout netrom: Fix data-races around sysctl_netrom_network_ttl_initialiser netrom: Fix a data-race around sysctl_netrom_obsolescence_count_initialiser netrom: Fix a data-race around sysctl_netrom_default_path_quality netfilter: nf_conntrack_h323: Add protection for bmp length out of range netfilter: nft_ct: fix l3num expectations with inet pseudo family net/rds: fix WARNING in rds_conn_connect_if_down net/ipv6: avoid possible UAF in ip6_route_mpath_notify() net: ice: Fix potential NULL pointer dereference in ice_bridge_setlink() geneve: make sure to pull inner header in geneve_rx() ixgbe: {dis, en}able irqs in ixgbe_txrx_ring_{dis, en}able net: lan78xx: fix runtime PM count underflow on link stop lan78xx: Fix race conditions in suspend/resume handling lan78xx: Fix partial packet errors on suspend/resume lan78xx: Add missing return code checks lan78xx: Fix white space and style issues Linux 5.4.271 gpio: 74x164: Enable output pins after registers are reset fs,hugetlb: fix NULL pointer dereference in hugetlbs_fill_super cachefiles: fix memory leak in cachefiles_add_cache() x86/cpu/intel: Detect TME keyid bits before setting MTRR mask registers mmc: core: Fix eMMC initialization with 1-bit bus connection dmaengine: fsl-qdma: init irq after reg initialization dmaengine: fsl-qdma: fix SoC may hang on 16 byte unaligned read btrfs: dev-replace: properly validate device names wifi: nl80211: reject iftype change with mesh ID change gtp: fix use-after-free and null-ptr-deref in gtp_newlink() afs: Fix endless loop in directory parsing ALSA: Drop leftover snd-rtctimer stuff from Makefile power: supply: bq27xxx-i2c: Do not free non existing IRQ efi/capsule-loader: fix incorrect allocation size rtnetlink: fix error logic of IFLA_BRIDGE_FLAGS writing back netfilter: nf_tables: allow NFPROTO_INET in nft_(match/target)_validate() Bluetooth: Enforce validation on max value of connection interval Bluetooth: hci_event: Fix handling of HCI_EV_IO_CAPA_REQUEST Bluetooth: Avoid potential use-after-free in hci_error_reset net: usb: dm9601: fix wrong return value in dm9601_mdio_read lan78xx: enable auto speed configuration for LAN7850 if no EEPROM is detected ipv6: fix potential "struct net" leak in inet6_rtm_getaddr() tun: Fix xdp_rxq_info's queue_index when detaching net: ip_tunnel: prevent perpetual headroom growth netlink: Fix kernel-infoleak-after-free in __skb_datagram_iter ANDROID: GKI: update .xml file due to USB changes in 5.4.270 Revert "bpf: Add map and need_defer parameters to .map_fd_put_ptr()" Revert "hrtimer: Report offline hrtimer enqueue" Revert "drm/mipi-dsi: Fix detach call without attach" Linux 5.4.270 scripts/bpf: Fix xdp_md forward declaration typo fs/aio: Restrict kiocb_set_cancel_fn() to I/O submitted via libaio drm/syncobj: call drm_syncobj_fence_add_wait when WAIT_AVAILABLE flag is set drm/syncobj: make lockdep complain on WAIT_FOR_SUBMIT v3 netfilter: nf_tables: set dormant flag on hook register failure tls: stop recv() if initial process_rx_list gave us non-DATA tls: rx: drop pointless else after goto tls: rx: jump to a more appropriate label s390: use the correct count for __iowrite64_copy() packet: move from strlcpy with unused retval to strscpy ipv6: sr: fix possible use-after-free and null-ptr-deref afs: Increase buffer size in afs_update_volume_status() ipv6: properly combine dev_base_seq and ipv6.dev_addr_genid ipv4: properly combine dev_base_seq and ipv4.dev_addr_genid nouveau: fix function cast warnings scsi: jazz_esp: Only build if SCSI core is builtin bpf, scripts: Correct GPL license name scripts/bpf: teach bpf_helpers_doc.py to dump BPF helper definitions RDMA/srpt: fix function pointer cast warnings RDMA/srpt: Make debug output more detailed RDMA/bnxt_re: Return error for SRQ resize IB/hfi1: Fix a memleak in init_credit_return usb: roles: don't get/set_role() when usb_role_switch is unregistered usb: gadget: ncm: Avoid dropping datagrams of properly parsed NTBs usb: cdns3: fix memory double free when handle zero packet usb: cdns3: fixed memory use after free at cdns3_gadget_ep_disable() ARM: ep93xx: Add terminator to gpiod_lookup_table l2tp: pass correct message length to ip6_append_data PCI/MSI: Prevent MSI hardware interrupt number truncation gtp: fix use-after-free and null-ptr-deref in gtp_genl_dump_pdp() dm-crypt: don't modify the data when using authenticated encryption IB/hfi1: Fix sdma.h tx->num_descs off-by-one error PCI: tegra: Fix OF node reference leak PCI: tegra: Fix reporting GPIO error value arm64: dts: qcom: msm8916: Fix typo in pronto remoteproc node drm/amdgpu: Fix type of second parameter in trans_msg() callback iomap: Set all uptodate bits for an Uptodate page dm-integrity: don't modify bio's immutable bio_vec in integrity_metadata() x86/alternatives: Disable KASAN in apply_alternatives() drm/amdgpu: Check for valid number of registers to read Revert "drm/sun4i: dsi: Change the start delay calculation" ALSA: hda/realtek - Enable micmute LED on and HP system selftests/bpf: Avoid running unprivileged tests with alignment requirements net: bridge: clear bridge's private skb space on xmit spi: mt7621: Fix an error message in mt7621_spi_probe() pinctrl: rockchip: Fix refcount leak in rockchip_pinctrl_parse_groups pinctrl: pinctrl-rockchip: Fix a bunch of kerneldoc misdemeanours tcp: add annotations around sk->sk_shutdown accesses tcp: return EPOLLOUT from tcp_poll only when notsent_bytes is half the limit tcp: factor out __tcp_close() helper pmdomain: renesas: r8a77980-sysc: CR7 must be always on s390/qeth: Fix potential loss of L3-IP@ in case of network issues virtio-blk: Ensure no requests in virtqueues before deleting vqs. firewire: core: send bus reset promptly on gap count error scsi: lpfc: Use unsigned type for num_sge hwmon: (coretemp) Enlarge per package core count limit nvmet-fc: abort command when there is no binding netfilter: conntrack: check SCTP_CID_SHUTDOWN_ACK for vtag setting in sctp_new ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616 nvmet-tcp: fix nvme tcp ida memory leak regulator: pwm-regulator: Add validity checks in continuous .get_voltage ext4: avoid allocating blocks from corrupted group in ext4_mb_find_by_goal() ext4: avoid allocating blocks from corrupted group in ext4_mb_try_best_found() ahci: add 43-bit DMA address quirk for ASMedia ASM1061 controllers ahci: asm1166: correct count of reported ports fbdev: sis: Error out if pixclock equals zero fbdev: savage: Error out if pixclock equals zero wifi: mac80211: fix race condition on enabling fast-xmit wifi: cfg80211: fix missing interfaces when dumping dmaengine: fsl-qdma: increase size of 'irq_name' dmaengine: shdma: increase size of 'dev_id' scsi: target: core: Add TMF to tmr_list handling sched/rt: Disallow writing invalid values to sched_rt_period_us sched/rt: Fix sysctl_sched_rr_timeslice intial value userfaultfd: fix mmap_changing checking in mfill_atomic_hugetlb nilfs2: replace WARN_ONs for invalid DAT metadata block requests memcg: add refcnt for pcpu stock to avoid UAF problem in drain_all_stock() sched/rt: sysctl_sched_rr_timeslice show default timeslice after reset net/sched: Retire dsmark qdisc net/sched: Retire ATM qdisc net/sched: Retire CBQ qdisc KVM: arm64: vgic-its: Test for valid IRQ in MOVALL handler KVM: arm64: vgic-its: Test for valid IRQ in its_sync_lpi_pending_table() Linux 5.4.269 of: gpio unittest kfree() wrong object of: unittest: fix EXPECT text for gpio hog errors net: bcmgenet: Fix EEE implementation Revert "Revert "mtd: rawnand: gpmi: Fix setting busy timeout setting"" netfilter: nf_tables: fix pointer math issue in nft_byteorder_eval() lsm: new security_file_ioctl_compat() hook drm/msm/dsi: Enable runtime PM PM: runtime: Have devm_pm_runtime_enable() handle pm_runtime_dont_use_autosuspend() PM: runtime: add devm_pm_runtime_enable helper nilfs2: fix potential bug in end_buffer_async_write sched/membarrier: reduce the ability to hammer on sys_membarrier net: prevent mss overflow in skb_segment() netfilter: ipset: Missing gc cancellations fixed netfilter: ipset: fix performance regression in swap operation KVM: arm64: vgic-its: Avoid potential UAF in LPI translation cache mips: Fix max_mapnr being uninitialized on early stages arch, mm: remove stale mentions of DISCONIGMEM bus: moxtet: Add spi device table Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d" tracing: Inform kmemleak of saved_cmdlines allocation pmdomain: core: Move the unused cleanup to a _sync initcall can: j1939: Fix UAF in j1939_sk_match_filter during setsockopt(SO_J1939_FILTER) irqchip/irq-brcmstb-l2: Add write memory barrier before exit nfp: flower: prevent re-adding mac index for bonded port nfp: use correct macro for LengthSelect in BAR config nilfs2: fix hang in nilfs_lookup_dirty_data_buffers() nilfs2: fix data corruption in dsync block recovery for small block sizes ALSA: hda/conexant: Add quirk for SWS JS201D mmc: slot-gpio: Allow non-sleeping GPIO ro x86/mm/ident_map: Use gbpages only where full GB page should be mapped. x86/Kconfig: Transmeta Crusoe is CPU family 5, not 6 serial: max310x: improve crystal stable clock detection serial: max310x: set default value when reading clock ready bit ring-buffer: Clean ring_buffer_poll_wait() error return iio: magnetometer: rm3100: add boundary check for the value read from RM3100_REG_TMRC staging: iio: ad5933: fix type mismatch regression tracing: Fix wasted memory in saved_cmdlines logic ext4: fix double-free of blocks due to wrong extents moved_len misc: fastrpc: Mark all sessions as invalid in cb_remove binder: signal epoll threads of self-work ALSA: hda/realtek: Enable headset mic on Vaio VJFE-ADL xen-netback: properly sync TX responses nfc: nci: free rx_data_reassembly skb on NCI device cleanup kbuild: Fix changing ELF file type for output of gen_btf for big endian firewire: core: correct documentation of fw_csr_string() kernel API scsi: Revert "scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock" i2c: i801: Fix block process call transactions i2c: i801: Remove i801_set_block_buffer_mode usb: f_mass_storage: forbid async queue when shutdown happen USB: hub: check for alternate port before enabling A_ALT_HNP_SUPPORT HID: wacom: Do not register input devices until after hid_hw_start HID: wacom: generic: Avoid reporting a serial of '0' to userspace mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again tracing/trigger: Fix to return error if failed to alloc snapshot i40e: Fix waiting for queues of all VSIs to be disabled MIPS: Add 'memory' clobber to csum_ipv6_magic() inline assembler ASoC: rt5645: Fix deadlock in rt5645_jack_detect_work() spi: ppc4xx: Drop write-only variable of: unittest: Fix compile in the non-dynamic case of: unittest: add overlay gpio test to catch gpio hog problem btrfs: send: return EOPNOTSUPP on unknown flags btrfs: forbid deleting live subvol qgroup btrfs: forbid creating subvol qgroups netfilter: nft_set_rbtree: skip end interval element from gc net: stmmac: xgmac: fix a typo of register name in DPP safety handling net: stmmac: xgmac: use #define for string constants vhost: use kzalloc() instead of kmalloc() followed by memset() Input: atkbd - skip ATKBD_CMD_SETLEDS when skipping ATKBD_CMD_GETID hrtimer: Report offline hrtimer enqueue USB: serial: cp210x: add ID for IMST iM871A-USB USB: serial: option: add Fibocom FM101-GL variant USB: serial: qcserial: add new usb-id for Dell Wireless DW5826e net/af_iucv: clean up a try_then_request_module() netfilter: nft_ct: reject direction for ct id netfilter: nft_compat: restrict match/target protocol to u16 netfilter: nft_compat: reject unused compat flag ppp_async: limit MRU to 64K tipc: Check the bearer type before calling tipc_udp_nl_bearer_add() rxrpc: Fix response to PING RESPONSE ACKs to a dead call inet: read sk->sk_family once in inet_recv_error() hwmon: (coretemp) Fix bogus core_id to attr name mapping hwmon: (coretemp) Fix out-of-bounds memory access hwmon: (aspeed-pwm-tacho) mutex for tach reading atm: idt77252: fix a memleak in open_card_ubr0 selftests: net: avoid just another constant wait net: stmmac: xgmac: fix handling of DPP safety error for DMA channels phy: ti: phy-omap-usb2: Fix NULL pointer dereference for SRP dmaengine: fix is_slave_direction() return false when DMA_DEV_TO_DEV phy: renesas: rcar-gen3-usb2: Fix returning wrong error code dmaengine: fsl-qdma: Fix a memory leak related to the queue command DMA dmaengine: fsl-qdma: Fix a memory leak related to the status queue DMA bonding: remove print in bond_verify_device_path HID: apple: Add 2021 magic keyboard FN key mapping HID: apple: Swap the Fn and Left Control keys on Apple keyboards HID: apple: Add support for the 2021 Magic Keyboard net: sysfs: Fix /sys/class/net/<iface> path af_unix: fix lockdep positive in sk_diag_dump_icons() net: ipv4: fix a memleak in ip_setup_cork netfilter: nft_ct: sanitize layer 3 and 4 protocol number in custom expectations netfilter: nf_log: replace BUG_ON by WARN_ON_ONCE when putting logger llc: call sock_orphan() at release time ipv6: Ensure natural alignment of const ipv6 loopback and router addresses ixgbe: Fix an error handling path in ixgbe_read_iosf_sb_reg_x550() ixgbe: Refactor overtemp event handling ixgbe: Refactor returning internal error codes ixgbe: Remove non-inclusive language net: remove unneeded break scsi: isci: Fix an error code problem in isci_io_request_build() wifi: cfg80211: fix RCU dereference in __cfg80211_bss_update perf: Fix the nr_addr_filters fix drm/amdgpu: Release 'adev->pm.fw' before return in 'amdgpu_device_need_post()' ceph: fix deadlock or deadcode of misusing dget() blk-mq: fix IO hang from sbitmap wakeup race virtio_net: Fix "‘%d’ directive writing between 1 and 11 bytes into a region of size 10" warnings libsubcmd: Fix memory leak in uniq() PCI/AER: Decode Requester ID when no error info found fs/kernfs/dir: obey S_ISGID usb: hub: Replace hardcoded quirk value with BIT() macro PCI: switchtec: Fix stdev_release() crash after surprise hot remove PCI: Only override AMD USB controller if required mfd: ti_am335x_tscadc: Fix TI SoC dependencies i3c: master: cdns: Update maximum prescaler value for i2c clock um: net: Fix return type of uml_net_start_xmit() um: Don't use vfprintf() for os_info() um: Fix naming clash between UML and scheduler leds: trigger: panic: Don't register panic notifier if creating the trigger failed drm/amdgpu: Drop 'fence' check in 'to_amdgpu_amdkfd_fence()' drm/amdgpu: Let KFD sync with VM fences clk: mmp: pxa168: Fix memory leak in pxa168_clk_init() clk: hi3620: Fix memory leak in hi3620_mmc_clk_init() drm/msm/dpu: Ratelimit framedone timeout msgs media: ddbridge: fix an error code problem in ddb_probe IB/ipoib: Fix mcast list locking drm/exynos: Call drm_atomic_helper_shutdown() at shutdown/unbind time ALSA: hda: Intel: add HDA_ARL PCI ID support PCI: add INTEL_HDA_ARL to pci_ids.h media: rockchip: rga: fix swizzling for RGB formats media: stk1160: Fixed high volume of stk1160_dbg messages drm/mipi-dsi: Fix detach call without attach drm/framebuffer: Fix use of uninitialized variable drm/drm_file: fix use of uninitialized variable RDMA/IPoIB: Fix error code return in ipoib_mcast_join fast_dput(): handle underflows gracefully ASoC: doc: Fix undefined SND_SOC_DAPM_NOPM argument f2fs: fix to check return value of f2fs_reserve_new_block() wifi: cfg80211: free beacon_ies when overridden from hidden BSS wifi: rtlwifi: rtl8723{be,ae}: using calculate_bit_shift() wifi: rtl8xxxu: Add additional USB IDs for RTL8192EU devices arm64: dts: qcom: msm8998: Fix 'out-ports' is a required property arm64: dts: qcom: msm8996: Fix 'in-ports' is a required property md: Whenassemble the array, consult the superblock of the freshest device block: prevent an integer overflow in bvec_try_merge_hw_page ARM: dts: imx23/28: Fix the DMA controller node name ARM: dts: imx23-sansa: Use preferred i2c-gpios properties ARM: dts: imx27-apf27dev: Fix LED name ARM: dts: imx25/27: Pass timing0 ARM: dts: imx1: Fix sram node ARM: dts: imx27: Fix sram node ARM: dts: imx: Use flash@0,0 pattern ARM: dts: imx25/27-eukrea: Fix RTC node name ARM: dts: rockchip: fix rk3036 hdmi ports node scsi: libfc: Fix up timeout error in fc_fcp_rec_error() scsi: libfc: Don't schedule abort twice bpf: Add map and need_defer parameters to .map_fd_put_ptr() wifi: ath9k: Fix potential array-index-out-of-bounds read in ath9k_htc_txstatus() ARM: dts: imx7s: Fix nand-controller #size-cells ARM: dts: imx7s: Fix lcdif compatible ARM: dts: imx7d: Fix coresight funnel ports bonding: return -ENOMEM instead of BUG in alb_upper_dev_walk PCI: Add no PM reset quirk for NVIDIA Spectrum devices scsi: lpfc: Fix possible file string name overflow when updating firmware selftests/bpf: Fix pyperf180 compilation failure with clang18 selftests/bpf: satisfy compiler by having explicit return in btf test wifi: rt2x00: restart beacon queue when hardware reset ext4: avoid online resizing failures due to oversized flex bg ext4: remove unnecessary check from alloc_flex_gd() ext4: unify the type of flexbg_size to unsigned int ext4: fix inconsistent between segment fstrim and full fstrim ecryptfs: Reject casefold directory inodes SUNRPC: Fix a suspicious RCU usage warning KVM: s390: fix setting of fpc register s390/ptrace: handle setting of fpc register correctly jfs: fix array-index-out-of-bounds in diNewExt rxrpc_find_service_conn_rcu: fix the usage of read_seqbegin_or_lock() afs: fix the usage of read_seqbegin_or_lock() in afs_find_server*() crypto: stm32/crc32 - fix parsing list of devices pstore/ram: Fix crash when setting number of cpus to an odd number jfs: fix uaf in jfs_evict_inode jfs: fix array-index-out-of-bounds in dbAdjTree jfs: fix slab-out-of-bounds Read in dtSearch UBSAN: array-index-out-of-bounds in dtSplitRoot FS:JFS:UBSAN:array-index-out-of-bounds in dbAdjTree ACPI: extlog: fix NULL pointer dereference check PNP: ACPI: fix fortify warning ACPI: video: Add quirk for the Colorful X15 AT 23 Laptop audit: Send netlink ACK before setting connection in auditd_set regulator: core: Only increment use_count when enable_count changes perf/core: Fix narrow startup race when creating the perf nr_addr_filters sysfs file x86/mce: Mark fatal MCE's page as poison to avoid panic in the kdump kernel powerpc/lib: Validate size for vector operations powerpc: pmd_move_must_withdraw() is only needed for CONFIG_TRANSPARENT_HUGEPAGE powerpc/mm: Fix build failures due to arch_reserved_kernel_pages() powerpc: Fix build error due to is_valid_bugaddr() powerpc/mm: Fix null-pointer dereference in pgtable_cache_add x86/entry/ia32: Ensure s32 is sign extended to s64 tick/sched: Preserve number of idle sleeps across CPU hotplug events mips: Call lose_fpu(0) before initializing fcr31 in mips_set_personality_nan spi: bcm-qspi: fix SFDP BFPT read by usig mspi read gpio: eic-sprd: Clear interrupt after set the interrupt type drm/exynos: gsc: minor fix for loop iteration in gsc_runtime_resume drm/exynos: fix accidental on-stack copy of exynos_drm_plane drm/bridge: nxp-ptn3460: simplify some error checking drm/bridge: nxp-ptn3460: fix i2c_master_send() error checking drm: Don't unref the same fb many times by mistake due to deadlock handling gpiolib: acpi: Ignore touchpad wakeup on GPD G1619-04 netfilter: nf_tables: reject QUEUE/DROP verdict parameters rbd: don't move requests to the running list on errors btrfs: defrag: reject unknown flags of btrfs_ioctl_defrag_range_args btrfs: don't warn if discard range is not aligned to sector btrfs: tree-checker: fix inline ref size in error messages btrfs: ref-verify: free ref cache before clearing mount opt net: fec: fix the unhandled context fault from smmu fjes: fix memleaks in fjes_hw_setup netfilter: nf_tables: validate NFPROTO_* family netfilter: nf_tables: restrict anonymous set and map names to 16 bytes net/mlx5e: fix a double-free in arfs_create_groups net/mlx5: Use kfree(ft->g) in arfs_create_groups() net/mlx5: DR, Use the right GVMI number for drop action netlink: fix potential sleeping issue in mqueue_flush_file tcp: Add memory barrier to tcp_push() afs: Hide silly-rename files from userspace tracing: Ensure visibility when inserting an element into tracing_map net/rds: Fix UBSAN: array-index-out-of-bounds in rds_cmsg_recv llc: Drop support for ETH_P_TR_802_2. llc: make llc_ui_sendmsg() more robust against bonding changes vlan: skip nested type that is not IFLA_VLAN_QOS_MAPPING net/smc: fix illegal rmb_desc access in SMC-D connection dump x86/CPU/AMD: Fix disabling XSAVES on AMD family 0x17 due to erratum powerpc: Use always instead of always-y in for crtsavres.o fs: move S_ISGID stripping into the vfs_*() helpers fs: add mode_strip_sgid() helper mtd: spinand: macronix: Fix MX35LFxGE4AD page size block: Remove special-casing of compound pages rename(): fix the locking of subdirectories ubifs: ubifs_symlink: Fix memleak of inode->i_link in error path nouveau/vmm: don't set addr on the fail path to avoid warning mmc: core: Use mrq.sbc in close-ended ffu arm64: dts: qcom: sdm845: fix USB wakeup interrupt types parisc/firmware: Fix F-extend for PDC addresses rpmsg: virtio: Free driver_override when rpmsg_remove() hwrng: core - Fix page fault dead lock on mmap-ed hwrng PM: hibernate: Enforce ordering during image compression/decompression crypto: api - Disallow identical driver names ext4: allow for the last group to be marked as trimmed serial: sc16is7xx: add check for unsupported SPI modes during probe spi: introduce SPI_MODE_X_MASK macro serial: sc16is7xx: set safe default SPI clock frequency units: add the HZ macros units: change from 'L' to 'UL' units: Add Watt units include/linux/units.h: add helpers for kelvin to/from Celsius conversion PCI: mediatek: Clear interrupt status before dispatching handler Conflicts: include/linux/timer.h mm/memory-failure.c Change-Id: I4974903c79ecddc3d9225b0b723a30b6c83ef572
This commit is contained in:
commit
73abf253d5
733 changed files with 10861 additions and 9699 deletions
|
|
@ -1,4 +1,4 @@
|
|||
What: /sys/class/<iface>/queues/rx-<queue>/rps_cpus
|
||||
What: /sys/class/net/<iface>/queues/rx-<queue>/rps_cpus
|
||||
Date: March 2010
|
||||
KernelVersion: 2.6.35
|
||||
Contact: netdev@vger.kernel.org
|
||||
|
|
@ -8,7 +8,7 @@ Description:
|
|||
network device queue. Possible values depend on the number
|
||||
of available CPU(s) in the system.
|
||||
|
||||
What: /sys/class/<iface>/queues/rx-<queue>/rps_flow_cnt
|
||||
What: /sys/class/net/<iface>/queues/rx-<queue>/rps_flow_cnt
|
||||
Date: April 2010
|
||||
KernelVersion: 2.6.35
|
||||
Contact: netdev@vger.kernel.org
|
||||
|
|
@ -16,7 +16,7 @@ Description:
|
|||
Number of Receive Packet Steering flows being currently
|
||||
processed by this particular network device receive queue.
|
||||
|
||||
What: /sys/class/<iface>/queues/tx-<queue>/tx_timeout
|
||||
What: /sys/class/net/<iface>/queues/tx-<queue>/tx_timeout
|
||||
Date: November 2011
|
||||
KernelVersion: 3.3
|
||||
Contact: netdev@vger.kernel.org
|
||||
|
|
@ -24,7 +24,7 @@ Description:
|
|||
Indicates the number of transmit timeout events seen by this
|
||||
network interface transmit queue.
|
||||
|
||||
What: /sys/class/<iface>/queues/tx-<queue>/tx_maxrate
|
||||
What: /sys/class/net/<iface>/queues/tx-<queue>/tx_maxrate
|
||||
Date: March 2015
|
||||
KernelVersion: 4.1
|
||||
Contact: netdev@vger.kernel.org
|
||||
|
|
@ -32,7 +32,7 @@ Description:
|
|||
A Mbps max-rate set for the queue, a value of zero means disabled,
|
||||
default is disabled.
|
||||
|
||||
What: /sys/class/<iface>/queues/tx-<queue>/xps_cpus
|
||||
What: /sys/class/net/<iface>/queues/tx-<queue>/xps_cpus
|
||||
Date: November 2010
|
||||
KernelVersion: 2.6.38
|
||||
Contact: netdev@vger.kernel.org
|
||||
|
|
@ -42,7 +42,7 @@ Description:
|
|||
network device transmit queue. Possible vaules depend on the
|
||||
number of available CPU(s) in the system.
|
||||
|
||||
What: /sys/class/<iface>/queues/tx-<queue>/xps_rxqs
|
||||
What: /sys/class/net/<iface>/queues/tx-<queue>/xps_rxqs
|
||||
Date: June 2018
|
||||
KernelVersion: 4.18.0
|
||||
Contact: netdev@vger.kernel.org
|
||||
|
|
@ -53,7 +53,7 @@ Description:
|
|||
number of available receive queue(s) in the network device.
|
||||
Default is disabled.
|
||||
|
||||
What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/hold_time
|
||||
What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/hold_time
|
||||
Date: November 2011
|
||||
KernelVersion: 3.3
|
||||
Contact: netdev@vger.kernel.org
|
||||
|
|
@ -62,7 +62,7 @@ Description:
|
|||
of this particular network device transmit queue.
|
||||
Default value is 1000.
|
||||
|
||||
What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/inflight
|
||||
What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/inflight
|
||||
Date: November 2011
|
||||
KernelVersion: 3.3
|
||||
Contact: netdev@vger.kernel.org
|
||||
|
|
@ -70,7 +70,7 @@ Description:
|
|||
Indicates the number of bytes (objects) in flight on this
|
||||
network device transmit queue.
|
||||
|
||||
What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/limit
|
||||
What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/limit
|
||||
Date: November 2011
|
||||
KernelVersion: 3.3
|
||||
Contact: netdev@vger.kernel.org
|
||||
|
|
@ -79,7 +79,7 @@ Description:
|
|||
on this network device transmit queue. This value is clamped
|
||||
to be within the bounds defined by limit_max and limit_min.
|
||||
|
||||
What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/limit_max
|
||||
What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/limit_max
|
||||
Date: November 2011
|
||||
KernelVersion: 3.3
|
||||
Contact: netdev@vger.kernel.org
|
||||
|
|
@ -88,7 +88,7 @@ Description:
|
|||
queued on this network device transmit queue. See
|
||||
include/linux/dynamic_queue_limits.h for the default value.
|
||||
|
||||
What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/limit_min
|
||||
What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/limit_min
|
||||
Date: November 2011
|
||||
KernelVersion: 3.3
|
||||
Contact: netdev@vger.kernel.org
|
||||
|
|
|
|||
|
|
@ -484,11 +484,14 @@ Spectre variant 2
|
|||
|
||||
Systems which support enhanced IBRS (eIBRS) enable IBRS protection once at
|
||||
boot, by setting the IBRS bit, and they're automatically protected against
|
||||
Spectre v2 variant attacks, including cross-thread branch target injections
|
||||
on SMT systems (STIBP). In other words, eIBRS enables STIBP too.
|
||||
Spectre v2 variant attacks.
|
||||
|
||||
Legacy IBRS systems clear the IBRS bit on exit to userspace and
|
||||
therefore explicitly enable STIBP for that
|
||||
On Intel's enhanced IBRS systems, this includes cross-thread branch target
|
||||
injections on SMT systems (STIBP). In other words, Intel eIBRS enables
|
||||
STIBP, too.
|
||||
|
||||
AMD Automatic IBRS does not protect userspace, and Legacy IBRS systems clear
|
||||
the IBRS bit on exit to userspace, therefore both explicitly enable STIBP.
|
||||
|
||||
The retpoline mitigation is turned on by default on vulnerable
|
||||
CPUs. It can be forced on or off by the administrator
|
||||
|
|
@ -622,9 +625,10 @@ kernel command line.
|
|||
retpoline,generic Retpolines
|
||||
retpoline,lfence LFENCE; indirect branch
|
||||
retpoline,amd alias for retpoline,lfence
|
||||
eibrs enhanced IBRS
|
||||
eibrs,retpoline enhanced IBRS + Retpolines
|
||||
eibrs,lfence enhanced IBRS + LFENCE
|
||||
eibrs Enhanced/Auto IBRS
|
||||
eibrs,retpoline Enhanced/Auto IBRS + Retpolines
|
||||
eibrs,lfence Enhanced/Auto IBRS + LFENCE
|
||||
ibrs use IBRS to protect kernel
|
||||
|
||||
Not specifying this option is equivalent to
|
||||
spectre_v2=auto.
|
||||
|
|
|
|||
|
|
@ -4615,9 +4615,9 @@
|
|||
retpoline,generic - Retpolines
|
||||
retpoline,lfence - LFENCE; indirect branch
|
||||
retpoline,amd - alias for retpoline,lfence
|
||||
eibrs - enhanced IBRS
|
||||
eibrs,retpoline - enhanced IBRS + Retpolines
|
||||
eibrs,lfence - enhanced IBRS + LFENCE
|
||||
eibrs - Enhanced/Auto IBRS
|
||||
eibrs,retpoline - Enhanced/Auto IBRS + Retpolines
|
||||
eibrs,lfence - Enhanced/Auto IBRS + LFENCE
|
||||
ibrs - use IBRS to protect kernel
|
||||
|
||||
Not specifying this option is equivalent to
|
||||
|
|
|
|||
|
|
@ -22,13 +22,16 @@ exclusive.
|
|||
3) object removal. Locking rules: caller locks parent, finds victim,
|
||||
locks victim and calls the method. Locks are exclusive.
|
||||
|
||||
4) rename() that is _not_ cross-directory. Locking rules: caller locks the
|
||||
parent and finds source and target. We lock both (provided they exist). If we
|
||||
need to lock two inodes of different type (dir vs non-dir), we lock directory
|
||||
first. If we need to lock two inodes of the same type, lock them in inode
|
||||
pointer order. Then call the method. All locks are exclusive.
|
||||
NB: we might get away with locking the the source (and target in exchange
|
||||
case) shared.
|
||||
4) rename() that is _not_ cross-directory. Locking rules: caller locks
|
||||
the parent and finds source and target. Then we decide which of the
|
||||
source and target need to be locked. Source needs to be locked if it's a
|
||||
non-directory; target - if it's a non-directory or about to be removed.
|
||||
Take the locks that need to be taken, in inode pointer order if need
|
||||
to take both (that can happen only when both source and target are
|
||||
non-directories - the source because it wouldn't be locked otherwise
|
||||
and the target because mixing directory and non-directory is allowed
|
||||
only with RENAME_EXCHANGE, and that won't be removing the target).
|
||||
After the locks had been taken, call the method. All locks are exclusive.
|
||||
|
||||
5) link creation. Locking rules:
|
||||
|
||||
|
|
@ -44,7 +47,7 @@ rules:
|
|||
|
||||
* lock the filesystem
|
||||
* lock parents in "ancestors first" order. If one is not ancestor of
|
||||
the other, lock them in inode pointer order.
|
||||
the other, lock the parent of source first.
|
||||
* find source and target.
|
||||
* if old parent is equal to or is a descendent of target
|
||||
fail with -ENOTEMPTY
|
||||
|
|
@ -54,10 +57,11 @@ rules:
|
|||
need to lock two inodes of different type (dir vs non-dir), we lock
|
||||
the directory first. If we need to lock two inodes of the same type,
|
||||
lock them in inode pointer order.
|
||||
* Lock subdirectories involved (source before target).
|
||||
* Lock non-directories involved, in inode pointer order.
|
||||
* call the method.
|
||||
|
||||
All ->i_rwsem are taken exclusive. Again, we might get away with locking
|
||||
the the source (and target in exchange case) shared.
|
||||
All ->i_rwsem are taken exclusive.
|
||||
|
||||
The rules above obviously guarantee that all directories that are going to be
|
||||
read, modified or removed by method will be locked by caller.
|
||||
|
|
@ -67,6 +71,7 @@ If no directory is its own ancestor, the scheme above is deadlock-free.
|
|||
|
||||
Proof:
|
||||
|
||||
[XXX: will be updated once we are done massaging the lock_rename()]
|
||||
First of all, at any moment we have a linear ordering of the
|
||||
objects - A < B iff (A is an ancestor of B) or (B is not an ancestor
|
||||
of A and ptr(A) < ptr(B)).
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ symlink: exclusive
|
|||
mkdir: exclusive
|
||||
unlink: exclusive (both)
|
||||
rmdir: exclusive (both)(see below)
|
||||
rename: exclusive (all) (see below)
|
||||
rename: exclusive (both parents, some children) (see below)
|
||||
readlink: no
|
||||
get_link: no
|
||||
setattr: exclusive
|
||||
|
|
@ -113,6 +113,9 @@ tmpfile: no
|
|||
Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_rwsem
|
||||
exclusive on victim.
|
||||
cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem.
|
||||
->unlink() and ->rename() have ->i_rwsem exclusive on all non-directories
|
||||
involved.
|
||||
->rename() has ->i_rwsem exclusive on any subdirectory that changes parent.
|
||||
|
||||
See Documentation/filesystems/directory-locking.rst for more detailed discussion
|
||||
of the locking scheme for directory operations.
|
||||
|
|
|
|||
|
|
@ -858,3 +858,21 @@ be misspelled d_alloc_anon().
|
|||
[should've been added in 2016] stale comment in finish_open() nonwithstanding,
|
||||
failure exits in ->atomic_open() instances should *NOT* fput() the file,
|
||||
no matter what. Everything is handled by the caller.
|
||||
|
||||
---
|
||||
|
||||
**mandatory**
|
||||
|
||||
If ->rename() update of .. on cross-directory move needs an exclusion with
|
||||
directory modifications, do *not* lock the subdirectory in question in your
|
||||
->rename() - it's done by the caller now [that item should've been added in
|
||||
28eceeda130f "fs: Lock moved directories"].
|
||||
|
||||
---
|
||||
|
||||
**mandatory**
|
||||
|
||||
On same-directory ->rename() the (tautological) update of .. is not protected
|
||||
by any locks; just don't do it if the old parent is the same as the new one.
|
||||
We really can't lock two subdirectories in same-directory rename - not without
|
||||
deadlocks.
|
||||
|
|
|
|||
|
|
@ -234,7 +234,7 @@ corresponding soft power control. In this case it is necessary to create
|
|||
a virtual widget - a widget with no control bits e.g.
|
||||
::
|
||||
|
||||
SND_SOC_DAPM_MIXER("AC97 Mixer", SND_SOC_DAPM_NOPM, 0, 0, NULL, 0),
|
||||
SND_SOC_DAPM_MIXER("AC97 Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
|
||||
|
||||
This can be used to merge to signal paths together in software.
|
||||
|
||||
|
|
|
|||
2
Makefile
2
Makefile
|
|
@ -1,7 +1,7 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 5
|
||||
PATCHLEVEL = 4
|
||||
SUBLEVEL = 268
|
||||
SUBLEVEL = 274
|
||||
EXTRAVERSION =
|
||||
NAME = Kleptomaniac Octopus
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -963,7 +963,7 @@ put_tv32(struct timeval32 __user *o, struct timespec64 *i)
|
|||
}
|
||||
|
||||
static inline long
|
||||
put_tv_to_tv32(struct timeval32 __user *o, struct timeval *i)
|
||||
put_tv_to_tv32(struct timeval32 __user *o, struct __kernel_old_timeval *i)
|
||||
{
|
||||
return copy_to_user(o, &(struct timeval32){
|
||||
.tv_sec = i->tv_sec,
|
||||
|
|
|
|||
|
|
@ -435,7 +435,7 @@
|
|||
|
||||
/* Direct-mapped development chip ROM */
|
||||
pb1176_rom@10200000 {
|
||||
compatible = "direct-mapped";
|
||||
compatible = "mtd-rom";
|
||||
reg = <0x10200000 0x4000>;
|
||||
bank-width = <1>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@
|
|||
pinctrl-0 = <&pinctrl_weim>;
|
||||
status = "okay";
|
||||
|
||||
nor: nor@0,0 {
|
||||
nor: flash@0,0 {
|
||||
compatible = "cfi-flash";
|
||||
reg = <0 0x00000000 0x02000000>;
|
||||
bank-width = <4>;
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@
|
|||
pinctrl-0 = <&pinctrl_weim>;
|
||||
status = "okay";
|
||||
|
||||
nor: nor@0,0 {
|
||||
nor: flash@0,0 {
|
||||
compatible = "cfi-flash";
|
||||
reg = <0 0x00000000 0x02000000>;
|
||||
bank-width = <2>;
|
||||
|
|
|
|||
|
|
@ -268,9 +268,12 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
esram: esram@300000 {
|
||||
esram: sram@300000 {
|
||||
compatible = "mmio-sram";
|
||||
reg = <0x00300000 0x20000>;
|
||||
ranges = <0 0x00300000 0x20000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -175,10 +175,8 @@
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "i2c-gpio";
|
||||
gpios = <
|
||||
&gpio1 24 0 /* SDA */
|
||||
&gpio1 22 0 /* SCL */
|
||||
>;
|
||||
sda-gpios = <&gpio1 24 0>;
|
||||
scl-gpios = <&gpio1 22 0>;
|
||||
i2c-gpio,delay-us = <2>; /* ~100 kHz */
|
||||
};
|
||||
|
||||
|
|
@ -186,10 +184,8 @@
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "i2c-gpio";
|
||||
gpios = <
|
||||
&gpio0 31 0 /* SDA */
|
||||
&gpio0 30 0 /* SCL */
|
||||
>;
|
||||
sda-gpios = <&gpio0 31 0>;
|
||||
scl-gpios = <&gpio0 30 0>;
|
||||
i2c-gpio,delay-us = <2>; /* ~100 kHz */
|
||||
|
||||
touch: touch@20 {
|
||||
|
|
|
|||
|
|
@ -406,7 +406,7 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
dma_apbx: dma-apbx@80024000 {
|
||||
dma_apbx: dma-controller@80024000 {
|
||||
compatible = "fsl,imx23-dma-apbx";
|
||||
reg = <0x80024000 0x2000>;
|
||||
interrupts = <7 5 9 26
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
pinctrl-0 = <&pinctrl_i2c1>;
|
||||
status = "okay";
|
||||
|
||||
pcf8563@51 {
|
||||
rtc@51 {
|
||||
compatible = "nxp,pcf8563";
|
||||
reg = <0x51>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
bus-width = <18>;
|
||||
display-timings {
|
||||
native-mode = <&qvga_timings>;
|
||||
qvga_timings: 320x240 {
|
||||
qvga_timings: timing0 {
|
||||
clock-frequency = <6500000>;
|
||||
hactive = <320>;
|
||||
vactive = <240>;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
bus-width = <18>;
|
||||
display-timings {
|
||||
native-mode = <&dvi_svga_timings>;
|
||||
dvi_svga_timings: 800x600 {
|
||||
dvi_svga_timings: timing0 {
|
||||
clock-frequency = <40000000>;
|
||||
hactive = <800>;
|
||||
vactive = <600>;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
bus-width = <18>;
|
||||
display-timings {
|
||||
native-mode = <&dvi_vga_timings>;
|
||||
dvi_vga_timings: 640x480 {
|
||||
dvi_vga_timings: timing0 {
|
||||
clock-frequency = <31250000>;
|
||||
hactive = <640>;
|
||||
vactive = <480>;
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@
|
|||
bus-width = <18>;
|
||||
display-timings {
|
||||
native-mode = <&wvga_timings>;
|
||||
wvga_timings: 640x480 {
|
||||
wvga_timings: timing0 {
|
||||
hactive = <640>;
|
||||
vactive = <480>;
|
||||
hback-porch = <45>;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
fsl,pcr = <0xfae80083>; /* non-standard but required */
|
||||
display-timings {
|
||||
native-mode = <&timing0>;
|
||||
timing0: 800x480 {
|
||||
timing0: timing0 {
|
||||
clock-frequency = <33000033>;
|
||||
hactive = <800>;
|
||||
vactive = <480>;
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_gpio_leds>;
|
||||
|
||||
user {
|
||||
led-user {
|
||||
label = "Heartbeat";
|
||||
gpios = <&gpio6 14 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
pinctrl-0 = <&pinctrl_i2c1>;
|
||||
status = "okay";
|
||||
|
||||
pcf8563@51 {
|
||||
rtc@51 {
|
||||
compatible = "nxp,pcf8563";
|
||||
reg = <0x51>;
|
||||
};
|
||||
|
|
@ -90,7 +90,7 @@
|
|||
&weim {
|
||||
status = "okay";
|
||||
|
||||
nor: nor@0,0 {
|
||||
nor: flash@0,0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "cfi-flash";
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
display-timings {
|
||||
native-mode = <&timing0>;
|
||||
timing0: 320x240 {
|
||||
timing0: timing0 {
|
||||
clock-frequency = <6500000>;
|
||||
hactive = <320>;
|
||||
vactive = <240>;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
fsl,pcr = <0xf0c88080>; /* non-standard but required */
|
||||
display-timings {
|
||||
native-mode = <&timing0>;
|
||||
timing0: 640x480 {
|
||||
timing0: timing0 {
|
||||
hactive = <640>;
|
||||
vactive = <480>;
|
||||
hback-porch = <112>;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
display-timings {
|
||||
native-mode = <&timing0>;
|
||||
timing0: 240x320 {
|
||||
timing0: timing0 {
|
||||
clock-frequency = <5500000>;
|
||||
hactive = <240>;
|
||||
vactive = <320>;
|
||||
|
|
|
|||
|
|
@ -322,7 +322,7 @@
|
|||
&weim {
|
||||
status = "okay";
|
||||
|
||||
nor: nor@0,0 {
|
||||
nor: flash@0,0 {
|
||||
compatible = "cfi-flash";
|
||||
reg = <0 0x00000000 0x02000000>;
|
||||
bank-width = <2>;
|
||||
|
|
|
|||
|
|
@ -588,6 +588,9 @@
|
|||
iram: iram@ffff4c00 {
|
||||
compatible = "mmio-sram";
|
||||
reg = <0xffff4c00 0xb400>;
|
||||
ranges = <0 0xffff4c00 0xb400>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -982,7 +982,7 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
dma_apbx: dma-apbx@80024000 {
|
||||
dma_apbx: dma-controller@80024000 {
|
||||
compatible = "fsl,imx28-dma-apbx";
|
||||
reg = <0x80024000 0x2000>;
|
||||
interrupts = <78 79 66 0
|
||||
|
|
|
|||
|
|
@ -96,8 +96,6 @@
|
|||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_enet>;
|
||||
phy-mode = "rgmii-id";
|
||||
phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
|
||||
phy-reset-duration = <20>;
|
||||
phy-supply = <&sw2_reg>;
|
||||
status = "okay";
|
||||
|
||||
|
|
@ -110,17 +108,10 @@
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
phy_port2: phy@1 {
|
||||
reg = <1>;
|
||||
};
|
||||
|
||||
phy_port3: phy@2 {
|
||||
reg = <2>;
|
||||
};
|
||||
|
||||
switch@10 {
|
||||
compatible = "qca,qca8334";
|
||||
reg = <10>;
|
||||
reg = <0x10>;
|
||||
reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
|
||||
|
||||
switch_ports: ports {
|
||||
#address-cells = <1>;
|
||||
|
|
@ -141,15 +132,30 @@
|
|||
port@2 {
|
||||
reg = <2>;
|
||||
label = "eth2";
|
||||
phy-mode = "internal";
|
||||
phy-handle = <&phy_port2>;
|
||||
};
|
||||
|
||||
port@3 {
|
||||
reg = <3>;
|
||||
label = "eth1";
|
||||
phy-mode = "internal";
|
||||
phy-handle = <&phy_port3>;
|
||||
};
|
||||
};
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
phy_port2: ethernet-phy@1 {
|
||||
reg = <1>;
|
||||
};
|
||||
|
||||
phy_port3: ethernet-phy@2 {
|
||||
reg = <2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -204,9 +204,6 @@
|
|||
};
|
||||
|
||||
&ca_funnel_in_ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
ca_funnel_in_port1: endpoint {
|
||||
|
|
|
|||
|
|
@ -183,7 +183,11 @@
|
|||
clock-names = "apb_pclk";
|
||||
|
||||
ca_funnel_in_ports: in-ports {
|
||||
port {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
ca_funnel_in_port0: endpoint {
|
||||
remote-endpoint = <&etm0_out_port>;
|
||||
};
|
||||
|
|
@ -765,7 +769,7 @@
|
|||
};
|
||||
|
||||
lcdif: lcdif@30730000 {
|
||||
compatible = "fsl,imx7d-lcdif", "fsl,imx28-lcdif";
|
||||
compatible = "fsl,imx7d-lcdif", "fsl,imx6sx-lcdif";
|
||||
reg = <0x30730000 0x10000>;
|
||||
interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clks IMX7D_LCDIF_PIXEL_ROOT_CLK>,
|
||||
|
|
@ -1213,7 +1217,7 @@
|
|||
gpmi: gpmi-nand@33002000{
|
||||
compatible = "fsl,imx7d-gpmi-nand";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x33002000 0x2000>, <0x33004000 0x4000>;
|
||||
reg-names = "gpmi-nand", "bch";
|
||||
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
|
|
|||
|
|
@ -19,176 +19,174 @@
|
|||
device_type = "memory";
|
||||
reg = <0x00000000 0x08000000>;
|
||||
};
|
||||
};
|
||||
|
||||
soc {
|
||||
apb@d4000000 {
|
||||
uart3: uart@d4018000 {
|
||||
status = "okay";
|
||||
};
|
||||
twsi1: i2c@d4011000 {
|
||||
status = "okay";
|
||||
pmic: max8925@3c {
|
||||
compatible = "maxium,max8925";
|
||||
reg = <0x3c>;
|
||||
interrupts = <1>;
|
||||
interrupt-parent = <&intcmux4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
maxim,tsc-irq = <0>;
|
||||
&uart3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
regulators {
|
||||
SDV1 {
|
||||
regulator-min-microvolt = <637500>;
|
||||
regulator-max-microvolt = <1425000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
SDV2 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2225000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
SDV3 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO1 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO2 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2250000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO3 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2250000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO4 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO5 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO6 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO7 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO8 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO9 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO10 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
};
|
||||
LDO11 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO12 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO13 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO14 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO15 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO16 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO17 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2250000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO18 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2250000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO19 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO20 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
backlight {
|
||||
maxim,max8925-dual-string = <0>;
|
||||
};
|
||||
charger {
|
||||
batt-detect = <0>;
|
||||
topoff-threshold = <1>;
|
||||
fast-charge = <7>;
|
||||
no-temp-support = <0>;
|
||||
no-insert-detect = <0>;
|
||||
};
|
||||
};
|
||||
&twsi1 {
|
||||
status = "okay";
|
||||
pmic: max8925@3c {
|
||||
compatible = "maxim,max8925";
|
||||
reg = <0x3c>;
|
||||
interrupts = <1>;
|
||||
interrupt-parent = <&intcmux4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
maxim,tsc-irq = <0>;
|
||||
|
||||
regulators {
|
||||
SDV1 {
|
||||
regulator-min-microvolt = <637500>;
|
||||
regulator-max-microvolt = <1425000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
rtc: rtc@d4010000 {
|
||||
status = "okay";
|
||||
SDV2 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2225000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
SDV3 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO1 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO2 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2250000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO3 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2250000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO4 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO5 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO6 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO7 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO8 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO9 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO10 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
};
|
||||
LDO11 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO12 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO13 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO14 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO15 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO16 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO17 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2250000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO18 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2250000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO19 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO20 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
backlight {
|
||||
maxim,max8925-dual-string = <0>;
|
||||
};
|
||||
charger {
|
||||
batt-detect = <0>;
|
||||
topoff-threshold = <1>;
|
||||
fast-charge = <7>;
|
||||
no-temp-support = <0>;
|
||||
no-insert-detect = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&rtc {
|
||||
status = "okay";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -337,12 +337,20 @@
|
|||
pinctrl-0 = <&hdmi_ctl>;
|
||||
status = "disabled";
|
||||
|
||||
hdmi_in: port {
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
hdmi_in_vop: endpoint@0 {
|
||||
|
||||
hdmi_in: port@0 {
|
||||
reg = <0>;
|
||||
remote-endpoint = <&vop_out_hdmi>;
|
||||
|
||||
hdmi_in_vop: endpoint {
|
||||
remote-endpoint = <&vop_out_hdmi>;
|
||||
};
|
||||
};
|
||||
|
||||
hdmi_out: port@1 {
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -62,6 +62,30 @@
|
|||
states = <1100000 0>, <1300000 1>;
|
||||
};
|
||||
|
||||
reg_vcc_dram: vcc-dram {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc-dram";
|
||||
regulator-min-microvolt = <1500000>;
|
||||
regulator-max-microvolt = <1500000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
enable-active-high;
|
||||
gpio = <&r_pio 0 9 GPIO_ACTIVE_HIGH>; /* PL9 */
|
||||
vin-supply = <®_vcc5v0>;
|
||||
};
|
||||
|
||||
reg_vcc1v2: vcc1v2 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc1v2";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
enable-active-high;
|
||||
gpio = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */
|
||||
vin-supply = <®_vcc5v0>;
|
||||
};
|
||||
|
||||
wifi_pwrseq: wifi_pwrseq {
|
||||
compatible = "mmc-pwrseq-simple";
|
||||
reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@
|
|||
|
||||
#include "sha256_glue.h"
|
||||
|
||||
asmlinkage void sha256_block_data_order(u32 *digest, const void *data,
|
||||
unsigned int num_blks);
|
||||
asmlinkage void sha256_block_data_order(struct sha256_state *state,
|
||||
const u8 *data, int num_blks);
|
||||
|
||||
int crypto_sha256_arm_update(struct shash_desc *desc, const u8 *data,
|
||||
unsigned int len)
|
||||
|
|
@ -34,23 +34,20 @@ int crypto_sha256_arm_update(struct shash_desc *desc, const u8 *data,
|
|||
/* make sure casting to sha256_block_fn() is safe */
|
||||
BUILD_BUG_ON(offsetof(struct sha256_state, state) != 0);
|
||||
|
||||
return sha256_base_do_update(desc, data, len,
|
||||
(sha256_block_fn *)sha256_block_data_order);
|
||||
return sha256_base_do_update(desc, data, len, sha256_block_data_order);
|
||||
}
|
||||
EXPORT_SYMBOL(crypto_sha256_arm_update);
|
||||
|
||||
static int crypto_sha256_arm_final(struct shash_desc *desc, u8 *out)
|
||||
{
|
||||
sha256_base_do_finalize(desc,
|
||||
(sha256_block_fn *)sha256_block_data_order);
|
||||
sha256_base_do_finalize(desc, sha256_block_data_order);
|
||||
return sha256_base_finish(desc, out);
|
||||
}
|
||||
|
||||
int crypto_sha256_arm_finup(struct shash_desc *desc, const u8 *data,
|
||||
unsigned int len, u8 *out)
|
||||
{
|
||||
sha256_base_do_update(desc, data, len,
|
||||
(sha256_block_fn *)sha256_block_data_order);
|
||||
sha256_base_do_update(desc, data, len, sha256_block_data_order);
|
||||
return crypto_sha256_arm_final(desc, out);
|
||||
}
|
||||
EXPORT_SYMBOL(crypto_sha256_arm_finup);
|
||||
|
|
|
|||
|
|
@ -25,27 +25,25 @@ MODULE_ALIAS_CRYPTO("sha512");
|
|||
MODULE_ALIAS_CRYPTO("sha384-arm");
|
||||
MODULE_ALIAS_CRYPTO("sha512-arm");
|
||||
|
||||
asmlinkage void sha512_block_data_order(u64 *state, u8 const *src, int blocks);
|
||||
asmlinkage void sha512_block_data_order(struct sha512_state *state,
|
||||
u8 const *src, int blocks);
|
||||
|
||||
int sha512_arm_update(struct shash_desc *desc, const u8 *data,
|
||||
unsigned int len)
|
||||
{
|
||||
return sha512_base_do_update(desc, data, len,
|
||||
(sha512_block_fn *)sha512_block_data_order);
|
||||
return sha512_base_do_update(desc, data, len, sha512_block_data_order);
|
||||
}
|
||||
|
||||
static int sha512_arm_final(struct shash_desc *desc, u8 *out)
|
||||
{
|
||||
sha512_base_do_finalize(desc,
|
||||
(sha512_block_fn *)sha512_block_data_order);
|
||||
sha512_base_do_finalize(desc, sha512_block_data_order);
|
||||
return sha512_base_finish(desc, out);
|
||||
}
|
||||
|
||||
int sha512_arm_finup(struct shash_desc *desc, const u8 *data,
|
||||
unsigned int len, u8 *out)
|
||||
{
|
||||
sha512_base_do_update(desc, data, len,
|
||||
(sha512_block_fn *)sha512_block_data_order);
|
||||
sha512_base_do_update(desc, data, len, sha512_block_data_order);
|
||||
return sha512_arm_final(desc, out);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -337,6 +337,7 @@ static struct gpiod_lookup_table ep93xx_i2c_gpiod_table = {
|
|||
GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
|
||||
GPIO_LOOKUP_IDX("G", 0, NULL, 1,
|
||||
GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
|
||||
{ }
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@
|
|||
|
||||
memory@40000000 {
|
||||
reg = <0 0x40000000 0 0x40000000>;
|
||||
device_type = "memory";
|
||||
};
|
||||
|
||||
reg_1p8v: regulator-1p8v {
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@
|
|||
|
||||
memory@40000000 {
|
||||
reg = <0 0x40000000 0 0x20000000>;
|
||||
device_type = "memory";
|
||||
};
|
||||
|
||||
reg_1p8v: regulator-1p8v {
|
||||
|
|
|
|||
|
|
@ -77,425 +77,427 @@
|
|||
enable-gpios = <&pm8994_gpios 15 0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
soc {
|
||||
serial@7570000 {
|
||||
label = "BT-UART";
|
||||
status = "okay";
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&blsp1_uart1_default>;
|
||||
pinctrl-1 = <&blsp1_uart1_sleep>;
|
||||
&blsp1_uart1 {
|
||||
label = "BT-UART";
|
||||
status = "okay";
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&blsp1_uart1_default>;
|
||||
pinctrl-1 = <&blsp1_uart1_sleep>;
|
||||
|
||||
bluetooth {
|
||||
compatible = "qcom,qca6174-bt";
|
||||
bluetooth {
|
||||
compatible = "qcom,qca6174-bt";
|
||||
|
||||
/* bt_disable_n gpio */
|
||||
enable-gpios = <&pm8994_gpios 19 GPIO_ACTIVE_HIGH>;
|
||||
/* bt_disable_n gpio */
|
||||
enable-gpios = <&pm8994_gpios 19 GPIO_ACTIVE_HIGH>;
|
||||
|
||||
clocks = <&divclk4>;
|
||||
};
|
||||
};
|
||||
|
||||
serial@75b0000 {
|
||||
label = "LS-UART1";
|
||||
status = "okay";
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&blsp2_uart1_2pins_default>;
|
||||
pinctrl-1 = <&blsp2_uart1_2pins_sleep>;
|
||||
};
|
||||
|
||||
serial@75b1000 {
|
||||
label = "LS-UART0";
|
||||
status = "disabled";
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&blsp2_uart2_4pins_default>;
|
||||
pinctrl-1 = <&blsp2_uart2_4pins_sleep>;
|
||||
};
|
||||
|
||||
i2c@7577000 {
|
||||
/* On Low speed expansion */
|
||||
label = "LS-I2C0";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
i2c@75b6000 {
|
||||
/* On Low speed expansion */
|
||||
label = "LS-I2C1";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
spi@7575000 {
|
||||
/* On Low speed expansion */
|
||||
label = "LS-SPI0";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
i2c@75b5000 {
|
||||
/* On High speed expansion */
|
||||
label = "HS-I2C2";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
spi@75ba000{
|
||||
/* On High speed expansion */
|
||||
label = "HS-SPI1";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
sdhci@74a4900 {
|
||||
/* External SD card */
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
|
||||
pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
|
||||
cd-gpios = <&msmgpio 38 0x1>;
|
||||
vmmc-supply = <&pm8994_l21>;
|
||||
vqmmc-supply = <&pm8994_l13>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
phy@627000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
ufshc@624000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
pinctrl@1010000 {
|
||||
gpio-line-names =
|
||||
"[SPI0_DOUT]", /* GPIO_0, BLSP1_SPI_MOSI, LSEC pin 14 */
|
||||
"[SPI0_DIN]", /* GPIO_1, BLSP1_SPI_MISO, LSEC pin 10 */
|
||||
"[SPI0_CS]", /* GPIO_2, BLSP1_SPI_CS_N, LSEC pin 12 */
|
||||
"[SPI0_SCLK]", /* GPIO_3, BLSP1_SPI_CLK, LSEC pin 8 */
|
||||
"[UART1_TxD]", /* GPIO_4, BLSP8_UART_TX, LSEC pin 11 */
|
||||
"[UART1_RxD]", /* GPIO_5, BLSP8_UART_RX, LSEC pin 13 */
|
||||
"[I2C1_SDA]", /* GPIO_6, BLSP8_I2C_SDA, LSEC pin 21 */
|
||||
"[I2C1_SCL]", /* GPIO_7, BLSP8_I2C_SCL, LSEC pin 19 */
|
||||
"GPIO-H", /* GPIO_8, LCD0_RESET_N, LSEC pin 30 */
|
||||
"TP93", /* GPIO_9 */
|
||||
"GPIO-G", /* GPIO_10, MDP_VSYNC_P, LSEC pin 29 */
|
||||
"[MDP_VSYNC_S]", /* GPIO_11, S HSEC pin 55 */
|
||||
"NC", /* GPIO_12 */
|
||||
"[CSI0_MCLK]", /* GPIO_13, CAM_MCLK0, P HSEC pin 15 */
|
||||
"[CAM_MCLK1]", /* GPIO_14, J14 pin 11 */
|
||||
"[CSI1_MCLK]", /* GPIO_15, CAM_MCLK2, P HSEC pin 17 */
|
||||
"TP99", /* GPIO_16 */
|
||||
"[I2C2_SDA]", /* GPIO_17, CCI_I2C_SDA0, P HSEC pin 34 */
|
||||
"[I2C2_SCL]", /* GPIO_18, CCI_I2C_SCL0, P HSEC pin 32 */
|
||||
"[CCI_I2C_SDA1]", /* GPIO_19, S HSEC pin 38 */
|
||||
"[CCI_I2C_SCL1]", /* GPIO_20, S HSEC pin 36 */
|
||||
"FLASH_STROBE_EN", /* GPIO_21, S HSEC pin 5 */
|
||||
"FLASH_STROBE_TRIG", /* GPIO_22, S HSEC pin 1 */
|
||||
"GPIO-K", /* GPIO_23, CAM2_RST_N, LSEC pin 33 */
|
||||
"GPIO-D", /* GPIO_24, LSEC pin 26 */
|
||||
"GPIO-I", /* GPIO_25, CAM0_RST_N, LSEC pin 31 */
|
||||
"GPIO-J", /* GPIO_26, CAM0_STANDBY_N, LSEC pin 32 */
|
||||
"BLSP6_I2C_SDA", /* GPIO_27 */
|
||||
"BLSP6_I2C_SCL", /* GPIO_28 */
|
||||
"GPIO-B", /* GPIO_29, TS0_RESET_N, LSEC pin 24 */
|
||||
"GPIO30", /* GPIO_30, S HSEC pin 4 */
|
||||
"HDMI_CEC", /* GPIO_31 */
|
||||
"HDMI_DDC_CLOCK", /* GPIO_32 */
|
||||
"HDMI_DDC_DATA", /* GPIO_33 */
|
||||
"HDMI_HOT_PLUG_DETECT", /* GPIO_34 */
|
||||
"PCIE0_RST_N", /* GPIO_35 */
|
||||
"PCIE0_CLKREQ_N", /* GPIO_36 */
|
||||
"PCIE0_WAKE", /* GPIO_37 */
|
||||
"SD_CARD_DET_N", /* GPIO_38 */
|
||||
"TSIF1_SYNC", /* GPIO_39, S HSEC pin 48 */
|
||||
"W_DISABLE_N", /* GPIO_40 */
|
||||
"[BLSP9_UART_TX]", /* GPIO_41 */
|
||||
"[BLSP9_UART_RX]", /* GPIO_42 */
|
||||
"[BLSP2_UART_CTS_N]", /* GPIO_43 */
|
||||
"[BLSP2_UART_RFR_N]", /* GPIO_44 */
|
||||
"[BLSP3_UART_TX]", /* GPIO_45 */
|
||||
"[BLSP3_UART_RX]", /* GPIO_46 */
|
||||
"[I2C0_SDA]", /* GPIO_47, LS_I2C0_SDA, LSEC pin 17 */
|
||||
"[I2C0_SCL]", /* GPIO_48, LS_I2C0_SCL, LSEC pin 15 */
|
||||
"[UART0_TxD]", /* GPIO_49, BLSP9_UART_TX, LSEC pin 5 */
|
||||
"[UART0_RxD]", /* GPIO_50, BLSP9_UART_RX, LSEC pin 7 */
|
||||
"[UART0_CTS]", /* GPIO_51, BLSP9_UART_CTS_N, LSEC pin 3 */
|
||||
"[UART0_RTS]", /* GPIO_52, BLSP9_UART_RFR_N, LSEC pin 9 */
|
||||
"[CODEC_INT1_N]", /* GPIO_53 */
|
||||
"[CODEC_INT2_N]", /* GPIO_54 */
|
||||
"[BLSP7_I2C_SDA]", /* GPIO_55 */
|
||||
"[BLSP7_I2C_SCL]", /* GPIO_56 */
|
||||
"MI2S_MCLK", /* GPIO_57, S HSEC pin 3 */
|
||||
"[PCM_CLK]", /* GPIO_58, QUA_MI2S_SCK, LSEC pin 18 */
|
||||
"[PCM_FS]", /* GPIO_59, QUA_MI2S_WS, LSEC pin 16 */
|
||||
"[PCM_DO]", /* GPIO_60, QUA_MI2S_DATA0, LSEC pin 20 */
|
||||
"[PCM_DI]", /* GPIO_61, QUA_MI2S_DATA1, LSEC pin 22 */
|
||||
"GPIO-E", /* GPIO_62, LSEC pin 27 */
|
||||
"TP87", /* GPIO_63 */
|
||||
"[CODEC_RST_N]", /* GPIO_64 */
|
||||
"[PCM1_CLK]", /* GPIO_65 */
|
||||
"[PCM1_SYNC]", /* GPIO_66 */
|
||||
"[PCM1_DIN]", /* GPIO_67 */
|
||||
"[PCM1_DOUT]", /* GPIO_68 */
|
||||
"AUDIO_REF_CLK", /* GPIO_69 */
|
||||
"SLIMBUS_CLK", /* GPIO_70 */
|
||||
"SLIMBUS_DATA0", /* GPIO_71 */
|
||||
"SLIMBUS_DATA1", /* GPIO_72 */
|
||||
"NC", /* GPIO_73 */
|
||||
"NC", /* GPIO_74 */
|
||||
"NC", /* GPIO_75 */
|
||||
"NC", /* GPIO_76 */
|
||||
"TP94", /* GPIO_77 */
|
||||
"NC", /* GPIO_78 */
|
||||
"TP95", /* GPIO_79 */
|
||||
"GPIO-A", /* GPIO_80, MEMS_RESET_N, LSEC pin 23 */
|
||||
"TP88", /* GPIO_81 */
|
||||
"TP89", /* GPIO_82 */
|
||||
"TP90", /* GPIO_83 */
|
||||
"TP91", /* GPIO_84 */
|
||||
"[SD_DAT0]", /* GPIO_85, BLSP12_SPI_MOSI, P HSEC pin 1 */
|
||||
"[SD_CMD]", /* GPIO_86, BLSP12_SPI_MISO, P HSEC pin 11 */
|
||||
"[SD_DAT3]", /* GPIO_87, BLSP12_SPI_CS_N, P HSEC pin 7 */
|
||||
"[SD_SCLK]", /* GPIO_88, BLSP12_SPI_CLK, P HSEC pin 9 */
|
||||
"TSIF1_CLK", /* GPIO_89, S HSEC pin 42 */
|
||||
"TSIF1_EN", /* GPIO_90, S HSEC pin 46 */
|
||||
"TSIF1_DATA", /* GPIO_91, S HSEC pin 44 */
|
||||
"NC", /* GPIO_92 */
|
||||
"TSIF2_CLK", /* GPIO_93, S HSEC pin 52 */
|
||||
"TSIF2_EN", /* GPIO_94, S HSEC pin 56 */
|
||||
"TSIF2_DATA", /* GPIO_95, S HSEC pin 54 */
|
||||
"TSIF2_SYNC", /* GPIO_96, S HSEC pin 58 */
|
||||
"NC", /* GPIO_97 */
|
||||
"CAM1_STANDBY_N", /* GPIO_98 */
|
||||
"NC", /* GPIO_99 */
|
||||
"NC", /* GPIO_100 */
|
||||
"[LCD1_RESET_N]", /* GPIO_101, S HSEC pin 51 */
|
||||
"BOOT_CONFIG1", /* GPIO_102 */
|
||||
"USB_HUB_RESET", /* GPIO_103 */
|
||||
"CAM1_RST_N", /* GPIO_104 */
|
||||
"NC", /* GPIO_105 */
|
||||
"NC", /* GPIO_106 */
|
||||
"NC", /* GPIO_107 */
|
||||
"NC", /* GPIO_108 */
|
||||
"NC", /* GPIO_109 */
|
||||
"NC", /* GPIO_110 */
|
||||
"NC", /* GPIO_111 */
|
||||
"NC", /* GPIO_112 */
|
||||
"PMI8994_BUA", /* GPIO_113 */
|
||||
"PCIE2_RST_N", /* GPIO_114 */
|
||||
"PCIE2_CLKREQ_N", /* GPIO_115 */
|
||||
"PCIE2_WAKE", /* GPIO_116 */
|
||||
"SSC_IRQ_0", /* GPIO_117 */
|
||||
"SSC_IRQ_1", /* GPIO_118 */
|
||||
"SSC_IRQ_2", /* GPIO_119 */
|
||||
"NC", /* GPIO_120 */
|
||||
"GPIO121", /* GPIO_121, S HSEC pin 2 */
|
||||
"NC", /* GPIO_122 */
|
||||
"SSC_IRQ_6", /* GPIO_123 */
|
||||
"SSC_IRQ_7", /* GPIO_124 */
|
||||
"GPIO-C", /* GPIO_125, TS_INT0, LSEC pin 25 */
|
||||
"BOOT_CONFIG5", /* GPIO_126 */
|
||||
"NC", /* GPIO_127 */
|
||||
"NC", /* GPIO_128 */
|
||||
"BOOT_CONFIG7", /* GPIO_129 */
|
||||
"PCIE1_RST_N", /* GPIO_130 */
|
||||
"PCIE1_CLKREQ_N", /* GPIO_131 */
|
||||
"PCIE1_WAKE", /* GPIO_132 */
|
||||
"GPIO-L", /* GPIO_133, CAM2_STANDBY_N, LSEC pin 34 */
|
||||
"NC", /* GPIO_134 */
|
||||
"NC", /* GPIO_135 */
|
||||
"BOOT_CONFIG8", /* GPIO_136 */
|
||||
"NC", /* GPIO_137 */
|
||||
"NC", /* GPIO_138 */
|
||||
"GPS_SSBI2", /* GPIO_139 */
|
||||
"GPS_SSBI1", /* GPIO_140 */
|
||||
"NC", /* GPIO_141 */
|
||||
"NC", /* GPIO_142 */
|
||||
"NC", /* GPIO_143 */
|
||||
"BOOT_CONFIG6", /* GPIO_144 */
|
||||
"NC", /* GPIO_145 */
|
||||
"NC", /* GPIO_146 */
|
||||
"NC", /* GPIO_147 */
|
||||
"NC", /* GPIO_148 */
|
||||
"NC"; /* GPIO_149 */
|
||||
};
|
||||
|
||||
qcom,spmi@400f000 {
|
||||
pmic@0 {
|
||||
gpios@c000 {
|
||||
gpio-line-names =
|
||||
"NC",
|
||||
"KEY_VOLP_N",
|
||||
"NC",
|
||||
"BL1_PWM",
|
||||
"GPIO-F", /* BL0_PWM, LSEC pin 28 */
|
||||
"BL1_EN",
|
||||
"NC",
|
||||
"WLAN_EN",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"DIVCLK1",
|
||||
"DIVCLK2",
|
||||
"DIVCLK3",
|
||||
"DIVCLK4",
|
||||
"BT_EN",
|
||||
"PMIC_SLB",
|
||||
"PMIC_BUA",
|
||||
"USB_VBUS_DET";
|
||||
};
|
||||
|
||||
mpps@a000 {
|
||||
gpio-line-names =
|
||||
"VDDPX_BIAS",
|
||||
"WIFI_LED",
|
||||
"NC",
|
||||
"BT_LED",
|
||||
"PM_MPP05",
|
||||
"PM_MPP06",
|
||||
"PM_MPP07",
|
||||
"NC";
|
||||
};
|
||||
};
|
||||
|
||||
pmic@2 {
|
||||
gpios@c000 {
|
||||
gpio-line-names =
|
||||
"NC",
|
||||
"SPKR_AMP_EN1",
|
||||
"SPKR_AMP_EN2",
|
||||
"TP61",
|
||||
"NC",
|
||||
"USB2_VBUS_DET",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
phy@34000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
phy@7410000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
phy@7411000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
phy@7412000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
usb@6af8800 {
|
||||
status = "okay";
|
||||
extcon = <&usb3_id>;
|
||||
|
||||
dwc3@6a00000 {
|
||||
extcon = <&usb3_id>;
|
||||
dr_mode = "otg";
|
||||
};
|
||||
};
|
||||
|
||||
usb3_id: usb3-id {
|
||||
compatible = "linux,extcon-usb-gpio";
|
||||
id-gpio = <&pm8994_gpios 22 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb3_vbus_det_gpio>;
|
||||
};
|
||||
|
||||
usb@76f8800 {
|
||||
status = "okay";
|
||||
extcon = <&usb2_id>;
|
||||
|
||||
dwc3@7600000 {
|
||||
extcon = <&usb2_id>;
|
||||
dr_mode = "otg";
|
||||
maximum-speed = "high-speed";
|
||||
};
|
||||
};
|
||||
|
||||
usb2_id: usb2-id {
|
||||
compatible = "linux,extcon-usb-gpio";
|
||||
id-gpio = <&pmi8994_gpios 6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb2_vbus_det_gpio>;
|
||||
};
|
||||
|
||||
wlan_en: wlan-en-1-8v {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&wlan_en_gpios>;
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "wlan-en-regulator";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
gpio = <&pm8994_gpios 8 0>;
|
||||
|
||||
/* WLAN card specific delay */
|
||||
startup-delay-us = <70000>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
agnoc@0 {
|
||||
pcie@600000 {
|
||||
status = "okay";
|
||||
perst-gpio = <&msmgpio 35 GPIO_ACTIVE_LOW>;
|
||||
vddpe-3v3-supply = <&wlan_en>;
|
||||
};
|
||||
|
||||
pcie@608000 {
|
||||
status = "okay";
|
||||
perst-gpio = <&msmgpio 130 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
pcie@610000 {
|
||||
status = "okay";
|
||||
perst-gpio = <&msmgpio 114 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
slim_msm: slim@91c0000 {
|
||||
ngd@1 {
|
||||
wcd9335: codec@1{
|
||||
clock-names = "mclk", "slimbus";
|
||||
clocks = <&div1_mclk>,
|
||||
<&rpmcc RPM_SMD_BB_CLK1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
mdss@900000 {
|
||||
status = "okay";
|
||||
|
||||
mdp@901000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
hdmi-phy@9a0600 {
|
||||
status = "okay";
|
||||
|
||||
vddio-supply = <&pm8994_l12>;
|
||||
vcca-supply = <&pm8994_l28>;
|
||||
#phy-cells = <0>;
|
||||
};
|
||||
|
||||
hdmi-tx@9a0000 {
|
||||
status = "okay";
|
||||
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&hdmi_hpd_active &hdmi_ddc_active>;
|
||||
pinctrl-1 = <&hdmi_hpd_suspend &hdmi_ddc_suspend>;
|
||||
|
||||
core-vdda-supply = <&pm8994_l12>;
|
||||
core-vcc-supply = <&pm8994_s4>;
|
||||
};
|
||||
};
|
||||
clocks = <&divclk4>;
|
||||
};
|
||||
};
|
||||
|
||||
&blsp2_uart1 {
|
||||
label = "LS-UART1";
|
||||
status = "okay";
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&blsp2_uart1_2pins_default>;
|
||||
pinctrl-1 = <&blsp2_uart1_2pins_sleep>;
|
||||
};
|
||||
|
||||
&blsp2_uart2 {
|
||||
label = "LS-UART0";
|
||||
status = "disabled";
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&blsp2_uart2_4pins_default>;
|
||||
pinctrl-1 = <&blsp2_uart2_4pins_sleep>;
|
||||
};
|
||||
|
||||
&blsp1_i2c2 {
|
||||
/* On Low speed expansion */
|
||||
label = "LS-I2C0";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&blsp2_i2c1 {
|
||||
/* On Low speed expansion */
|
||||
label = "LS-I2C1";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&blsp1_spi0 {
|
||||
/* On Low speed expansion */
|
||||
label = "LS-SPI0";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&blsp2_i2c0 {
|
||||
/* On High speed expansion */
|
||||
label = "HS-I2C2";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&blsp2_spi5 {
|
||||
/* On High speed expansion */
|
||||
label = "HS-SPI1";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&camss {
|
||||
vdda-supply = <&pm8994_l2>;
|
||||
};
|
||||
|
||||
&sdhc2 {
|
||||
/* External SD card */
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
|
||||
pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
|
||||
cd-gpios = <&msmgpio 38 0x1>;
|
||||
vmmc-supply = <&pm8994_l21>;
|
||||
vqmmc-supply = <&pm8994_l13>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ufsphy {
|
||||
status = "okay";
|
||||
|
||||
vdda-phy-supply = <&pm8994_l28>;
|
||||
vdda-pll-supply = <&pm8994_l12>;
|
||||
|
||||
vdda-phy-max-microamp = <18380>;
|
||||
vdda-pll-max-microamp = <9440>;
|
||||
|
||||
vddp-ref-clk-supply = <&pm8994_l25>;
|
||||
vddp-ref-clk-max-microamp = <100>;
|
||||
vddp-ref-clk-always-on;
|
||||
};
|
||||
|
||||
&ufshc {
|
||||
status = "okay";
|
||||
|
||||
vcc-supply = <&pm8994_l20>;
|
||||
vccq-supply = <&pm8994_l25>;
|
||||
vccq2-supply = <&pm8994_s4>;
|
||||
|
||||
vcc-max-microamp = <600000>;
|
||||
vccq-max-microamp = <450000>;
|
||||
vccq2-max-microamp = <450000>;
|
||||
};
|
||||
|
||||
&msmgpio {
|
||||
gpio-line-names =
|
||||
"[SPI0_DOUT]", /* GPIO_0, BLSP1_SPI_MOSI, LSEC pin 14 */
|
||||
"[SPI0_DIN]", /* GPIO_1, BLSP1_SPI_MISO, LSEC pin 10 */
|
||||
"[SPI0_CS]", /* GPIO_2, BLSP1_SPI_CS_N, LSEC pin 12 */
|
||||
"[SPI0_SCLK]", /* GPIO_3, BLSP1_SPI_CLK, LSEC pin 8 */
|
||||
"[UART1_TxD]", /* GPIO_4, BLSP8_UART_TX, LSEC pin 11 */
|
||||
"[UART1_RxD]", /* GPIO_5, BLSP8_UART_RX, LSEC pin 13 */
|
||||
"[I2C1_SDA]", /* GPIO_6, BLSP8_I2C_SDA, LSEC pin 21 */
|
||||
"[I2C1_SCL]", /* GPIO_7, BLSP8_I2C_SCL, LSEC pin 19 */
|
||||
"GPIO-H", /* GPIO_8, LCD0_RESET_N, LSEC pin 30 */
|
||||
"TP93", /* GPIO_9 */
|
||||
"GPIO-G", /* GPIO_10, MDP_VSYNC_P, LSEC pin 29 */
|
||||
"[MDP_VSYNC_S]", /* GPIO_11, S HSEC pin 55 */
|
||||
"NC", /* GPIO_12 */
|
||||
"[CSI0_MCLK]", /* GPIO_13, CAM_MCLK0, P HSEC pin 15 */
|
||||
"[CAM_MCLK1]", /* GPIO_14, J14 pin 11 */
|
||||
"[CSI1_MCLK]", /* GPIO_15, CAM_MCLK2, P HSEC pin 17 */
|
||||
"TP99", /* GPIO_16 */
|
||||
"[I2C2_SDA]", /* GPIO_17, CCI_I2C_SDA0, P HSEC pin 34 */
|
||||
"[I2C2_SCL]", /* GPIO_18, CCI_I2C_SCL0, P HSEC pin 32 */
|
||||
"[CCI_I2C_SDA1]", /* GPIO_19, S HSEC pin 38 */
|
||||
"[CCI_I2C_SCL1]", /* GPIO_20, S HSEC pin 36 */
|
||||
"FLASH_STROBE_EN", /* GPIO_21, S HSEC pin 5 */
|
||||
"FLASH_STROBE_TRIG", /* GPIO_22, S HSEC pin 1 */
|
||||
"GPIO-K", /* GPIO_23, CAM2_RST_N, LSEC pin 33 */
|
||||
"GPIO-D", /* GPIO_24, LSEC pin 26 */
|
||||
"GPIO-I", /* GPIO_25, CAM0_RST_N, LSEC pin 31 */
|
||||
"GPIO-J", /* GPIO_26, CAM0_STANDBY_N, LSEC pin 32 */
|
||||
"BLSP6_I2C_SDA", /* GPIO_27 */
|
||||
"BLSP6_I2C_SCL", /* GPIO_28 */
|
||||
"GPIO-B", /* GPIO_29, TS0_RESET_N, LSEC pin 24 */
|
||||
"GPIO30", /* GPIO_30, S HSEC pin 4 */
|
||||
"HDMI_CEC", /* GPIO_31 */
|
||||
"HDMI_DDC_CLOCK", /* GPIO_32 */
|
||||
"HDMI_DDC_DATA", /* GPIO_33 */
|
||||
"HDMI_HOT_PLUG_DETECT", /* GPIO_34 */
|
||||
"PCIE0_RST_N", /* GPIO_35 */
|
||||
"PCIE0_CLKREQ_N", /* GPIO_36 */
|
||||
"PCIE0_WAKE", /* GPIO_37 */
|
||||
"SD_CARD_DET_N", /* GPIO_38 */
|
||||
"TSIF1_SYNC", /* GPIO_39, S HSEC pin 48 */
|
||||
"W_DISABLE_N", /* GPIO_40 */
|
||||
"[BLSP9_UART_TX]", /* GPIO_41 */
|
||||
"[BLSP9_UART_RX]", /* GPIO_42 */
|
||||
"[BLSP2_UART_CTS_N]", /* GPIO_43 */
|
||||
"[BLSP2_UART_RFR_N]", /* GPIO_44 */
|
||||
"[BLSP3_UART_TX]", /* GPIO_45 */
|
||||
"[BLSP3_UART_RX]", /* GPIO_46 */
|
||||
"[I2C0_SDA]", /* GPIO_47, LS_I2C0_SDA, LSEC pin 17 */
|
||||
"[I2C0_SCL]", /* GPIO_48, LS_I2C0_SCL, LSEC pin 15 */
|
||||
"[UART0_TxD]", /* GPIO_49, BLSP9_UART_TX, LSEC pin 5 */
|
||||
"[UART0_RxD]", /* GPIO_50, BLSP9_UART_RX, LSEC pin 7 */
|
||||
"[UART0_CTS]", /* GPIO_51, BLSP9_UART_CTS_N, LSEC pin 3 */
|
||||
"[UART0_RTS]", /* GPIO_52, BLSP9_UART_RFR_N, LSEC pin 9 */
|
||||
"[CODEC_INT1_N]", /* GPIO_53 */
|
||||
"[CODEC_INT2_N]", /* GPIO_54 */
|
||||
"[BLSP7_I2C_SDA]", /* GPIO_55 */
|
||||
"[BLSP7_I2C_SCL]", /* GPIO_56 */
|
||||
"MI2S_MCLK", /* GPIO_57, S HSEC pin 3 */
|
||||
"[PCM_CLK]", /* GPIO_58, QUA_MI2S_SCK, LSEC pin 18 */
|
||||
"[PCM_FS]", /* GPIO_59, QUA_MI2S_WS, LSEC pin 16 */
|
||||
"[PCM_DO]", /* GPIO_60, QUA_MI2S_DATA0, LSEC pin 20 */
|
||||
"[PCM_DI]", /* GPIO_61, QUA_MI2S_DATA1, LSEC pin 22 */
|
||||
"GPIO-E", /* GPIO_62, LSEC pin 27 */
|
||||
"TP87", /* GPIO_63 */
|
||||
"[CODEC_RST_N]", /* GPIO_64 */
|
||||
"[PCM1_CLK]", /* GPIO_65 */
|
||||
"[PCM1_SYNC]", /* GPIO_66 */
|
||||
"[PCM1_DIN]", /* GPIO_67 */
|
||||
"[PCM1_DOUT]", /* GPIO_68 */
|
||||
"AUDIO_REF_CLK", /* GPIO_69 */
|
||||
"SLIMBUS_CLK", /* GPIO_70 */
|
||||
"SLIMBUS_DATA0", /* GPIO_71 */
|
||||
"SLIMBUS_DATA1", /* GPIO_72 */
|
||||
"NC", /* GPIO_73 */
|
||||
"NC", /* GPIO_74 */
|
||||
"NC", /* GPIO_75 */
|
||||
"NC", /* GPIO_76 */
|
||||
"TP94", /* GPIO_77 */
|
||||
"NC", /* GPIO_78 */
|
||||
"TP95", /* GPIO_79 */
|
||||
"GPIO-A", /* GPIO_80, MEMS_RESET_N, LSEC pin 23 */
|
||||
"TP88", /* GPIO_81 */
|
||||
"TP89", /* GPIO_82 */
|
||||
"TP90", /* GPIO_83 */
|
||||
"TP91", /* GPIO_84 */
|
||||
"[SD_DAT0]", /* GPIO_85, BLSP12_SPI_MOSI, P HSEC pin 1 */
|
||||
"[SD_CMD]", /* GPIO_86, BLSP12_SPI_MISO, P HSEC pin 11 */
|
||||
"[SD_DAT3]", /* GPIO_87, BLSP12_SPI_CS_N, P HSEC pin 7 */
|
||||
"[SD_SCLK]", /* GPIO_88, BLSP12_SPI_CLK, P HSEC pin 9 */
|
||||
"TSIF1_CLK", /* GPIO_89, S HSEC pin 42 */
|
||||
"TSIF1_EN", /* GPIO_90, S HSEC pin 46 */
|
||||
"TSIF1_DATA", /* GPIO_91, S HSEC pin 44 */
|
||||
"NC", /* GPIO_92 */
|
||||
"TSIF2_CLK", /* GPIO_93, S HSEC pin 52 */
|
||||
"TSIF2_EN", /* GPIO_94, S HSEC pin 56 */
|
||||
"TSIF2_DATA", /* GPIO_95, S HSEC pin 54 */
|
||||
"TSIF2_SYNC", /* GPIO_96, S HSEC pin 58 */
|
||||
"NC", /* GPIO_97 */
|
||||
"CAM1_STANDBY_N", /* GPIO_98 */
|
||||
"NC", /* GPIO_99 */
|
||||
"NC", /* GPIO_100 */
|
||||
"[LCD1_RESET_N]", /* GPIO_101, S HSEC pin 51 */
|
||||
"BOOT_CONFIG1", /* GPIO_102 */
|
||||
"USB_HUB_RESET", /* GPIO_103 */
|
||||
"CAM1_RST_N", /* GPIO_104 */
|
||||
"NC", /* GPIO_105 */
|
||||
"NC", /* GPIO_106 */
|
||||
"NC", /* GPIO_107 */
|
||||
"NC", /* GPIO_108 */
|
||||
"NC", /* GPIO_109 */
|
||||
"NC", /* GPIO_110 */
|
||||
"NC", /* GPIO_111 */
|
||||
"NC", /* GPIO_112 */
|
||||
"PMI8994_BUA", /* GPIO_113 */
|
||||
"PCIE2_RST_N", /* GPIO_114 */
|
||||
"PCIE2_CLKREQ_N", /* GPIO_115 */
|
||||
"PCIE2_WAKE", /* GPIO_116 */
|
||||
"SSC_IRQ_0", /* GPIO_117 */
|
||||
"SSC_IRQ_1", /* GPIO_118 */
|
||||
"SSC_IRQ_2", /* GPIO_119 */
|
||||
"NC", /* GPIO_120 */
|
||||
"GPIO121", /* GPIO_121, S HSEC pin 2 */
|
||||
"NC", /* GPIO_122 */
|
||||
"SSC_IRQ_6", /* GPIO_123 */
|
||||
"SSC_IRQ_7", /* GPIO_124 */
|
||||
"GPIO-C", /* GPIO_125, TS_INT0, LSEC pin 25 */
|
||||
"BOOT_CONFIG5", /* GPIO_126 */
|
||||
"NC", /* GPIO_127 */
|
||||
"NC", /* GPIO_128 */
|
||||
"BOOT_CONFIG7", /* GPIO_129 */
|
||||
"PCIE1_RST_N", /* GPIO_130 */
|
||||
"PCIE1_CLKREQ_N", /* GPIO_131 */
|
||||
"PCIE1_WAKE", /* GPIO_132 */
|
||||
"GPIO-L", /* GPIO_133, CAM2_STANDBY_N, LSEC pin 34 */
|
||||
"NC", /* GPIO_134 */
|
||||
"NC", /* GPIO_135 */
|
||||
"BOOT_CONFIG8", /* GPIO_136 */
|
||||
"NC", /* GPIO_137 */
|
||||
"NC", /* GPIO_138 */
|
||||
"GPS_SSBI2", /* GPIO_139 */
|
||||
"GPS_SSBI1", /* GPIO_140 */
|
||||
"NC", /* GPIO_141 */
|
||||
"NC", /* GPIO_142 */
|
||||
"NC", /* GPIO_143 */
|
||||
"BOOT_CONFIG6", /* GPIO_144 */
|
||||
"NC", /* GPIO_145 */
|
||||
"NC", /* GPIO_146 */
|
||||
"NC", /* GPIO_147 */
|
||||
"NC", /* GPIO_148 */
|
||||
"NC"; /* GPIO_149 */
|
||||
};
|
||||
|
||||
&pm8994_gpios {
|
||||
gpio-line-names =
|
||||
"NC",
|
||||
"KEY_VOLP_N",
|
||||
"NC",
|
||||
"BL1_PWM",
|
||||
"GPIO-F", /* BL0_PWM, LSEC pin 28 */
|
||||
"BL1_EN",
|
||||
"NC",
|
||||
"WLAN_EN",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"DIVCLK1",
|
||||
"DIVCLK2",
|
||||
"DIVCLK3",
|
||||
"DIVCLK4",
|
||||
"BT_EN",
|
||||
"PMIC_SLB",
|
||||
"PMIC_BUA",
|
||||
"USB_VBUS_DET";
|
||||
};
|
||||
|
||||
&pm8994_mpps {
|
||||
gpio-line-names =
|
||||
"VDDPX_BIAS",
|
||||
"WIFI_LED",
|
||||
"NC",
|
||||
"BT_LED",
|
||||
"PM_MPP05",
|
||||
"PM_MPP06",
|
||||
"PM_MPP07",
|
||||
"NC";
|
||||
};
|
||||
|
||||
&pmi8994_gpios {
|
||||
gpio-line-names =
|
||||
"NC",
|
||||
"SPKR_AMP_EN1",
|
||||
"SPKR_AMP_EN2",
|
||||
"TP61",
|
||||
"NC",
|
||||
"USB2_VBUS_DET",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC";
|
||||
};
|
||||
|
||||
&pcie_phy {
|
||||
status = "okay";
|
||||
|
||||
vdda-phy-supply = <&pm8994_l28>;
|
||||
vdda-pll-supply = <&pm8994_l12>;
|
||||
};
|
||||
|
||||
&usb3phy {
|
||||
status = "okay";
|
||||
|
||||
vdda-phy-supply = <&pm8994_l28>;
|
||||
vdda-pll-supply = <&pm8994_l12>;
|
||||
|
||||
};
|
||||
|
||||
&hsusb_phy1 {
|
||||
status = "okay";
|
||||
|
||||
vdda-pll-supply = <&pm8994_l12>;
|
||||
vdda-phy-dpdm-supply = <&pm8994_l24>;
|
||||
};
|
||||
|
||||
&hsusb_phy2 {
|
||||
status = "okay";
|
||||
|
||||
vdda-pll-supply = <&pm8994_l12>;
|
||||
vdda-phy-dpdm-supply = <&pm8994_l24>;
|
||||
};
|
||||
|
||||
&usb3 {
|
||||
status = "okay";
|
||||
extcon = <&usb3_id>;
|
||||
|
||||
dwc3@6a00000 {
|
||||
extcon = <&usb3_id>;
|
||||
dr_mode = "otg";
|
||||
};
|
||||
};
|
||||
|
||||
&usb2 {
|
||||
status = "okay";
|
||||
extcon = <&usb2_id>;
|
||||
|
||||
dwc3@7600000 {
|
||||
extcon = <&usb2_id>;
|
||||
dr_mode = "otg";
|
||||
maximum-speed = "high-speed";
|
||||
};
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
status = "okay";
|
||||
perst-gpio = <&msmgpio 35 GPIO_ACTIVE_LOW>;
|
||||
vddpe-3v3-supply = <&wlan_en>;
|
||||
vdda-supply = <&pm8994_l28>;
|
||||
};
|
||||
|
||||
&pcie1 {
|
||||
status = "okay";
|
||||
perst-gpio = <&msmgpio 130 GPIO_ACTIVE_LOW>;
|
||||
vdda-supply = <&pm8994_l28>;
|
||||
};
|
||||
|
||||
&pcie2 {
|
||||
status = "okay";
|
||||
perst-gpio = <&msmgpio 114 GPIO_ACTIVE_LOW>;
|
||||
vdda-supply = <&pm8994_l28>;
|
||||
};
|
||||
|
||||
&wcd9335 {
|
||||
clock-names = "mclk", "slimbus";
|
||||
clocks = <&div1_mclk>,
|
||||
<&rpmcc RPM_SMD_BB_CLK1>;
|
||||
|
||||
vdd-buck-supply = <&pm8994_s4>;
|
||||
vdd-buck-sido-supply = <&pm8994_s4>;
|
||||
vdd-tx-supply = <&pm8994_s4>;
|
||||
vdd-rx-supply = <&pm8994_s4>;
|
||||
vdd-io-supply = <&pm8994_s4>;
|
||||
};
|
||||
|
||||
&mdss {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mdp {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi_phy {
|
||||
status = "okay";
|
||||
|
||||
vddio-supply = <&pm8994_l12>;
|
||||
vcca-supply = <&pm8994_l28>;
|
||||
#phy-cells = <0>;
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
status = "okay";
|
||||
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&hdmi_hpd_active &hdmi_ddc_active>;
|
||||
pinctrl-1 = <&hdmi_hpd_suspend &hdmi_ddc_suspend>;
|
||||
|
||||
core-vdda-supply = <&pm8994_l12>;
|
||||
core-vcc-supply = <&pm8994_s4>;
|
||||
};
|
||||
|
||||
/ {
|
||||
gpio_keys {
|
||||
compatible = "gpio-keys";
|
||||
#address-cells = <1>;
|
||||
|
|
@ -667,6 +669,35 @@
|
|||
};
|
||||
};
|
||||
};
|
||||
|
||||
usb2_id: usb2-id {
|
||||
compatible = "linux,extcon-usb-gpio";
|
||||
id-gpio = <&pmi8994_gpios 6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb2_vbus_det_gpio>;
|
||||
};
|
||||
|
||||
usb3_id: usb3-id {
|
||||
compatible = "linux,extcon-usb-gpio";
|
||||
id-gpio = <&pm8994_gpios 22 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb3_vbus_det_gpio>;
|
||||
};
|
||||
|
||||
wlan_en: wlan-en-1-8v {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&wlan_en_gpios>;
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "wlan-en-regulator";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
gpio = <&pm8994_gpios 8 0>;
|
||||
|
||||
/* WLAN card specific delay */
|
||||
startup-delay-us = <70000>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
||||
|
||||
&spmi_bus {
|
||||
|
|
|
|||
|
|
@ -1097,8 +1097,8 @@
|
|||
vddmx-supply = <&pm8916_l3>;
|
||||
vddpx-supply = <&pm8916_l7>;
|
||||
|
||||
qcom,state = <&wcnss_smp2p_out 0>;
|
||||
qcom,state-names = "stop";
|
||||
qcom,smem-states = <&wcnss_smp2p_out 0>;
|
||||
qcom,smem-state-names = "stop";
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&wcnss_pin_a>;
|
||||
|
|
|
|||
|
|
@ -433,6 +433,19 @@
|
|||
};
|
||||
};
|
||||
|
||||
etm {
|
||||
compatible = "qcom,coresight-remote-etm";
|
||||
|
||||
out-ports {
|
||||
port {
|
||||
modem_etm_out_funnel_in2: endpoint {
|
||||
remote-endpoint =
|
||||
<&funnel_in2_in_modem_etm>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
psci {
|
||||
compatible = "arm,psci-1.0";
|
||||
method = "smc";
|
||||
|
|
@ -571,7 +584,7 @@
|
|||
|
||||
rpm_msg_ram: memory@68000 {
|
||||
compatible = "qcom,rpm-msg-ram";
|
||||
reg = <0x68000 0x6000>;
|
||||
reg = <0x00068000 0x6000>;
|
||||
};
|
||||
|
||||
rng: rng@83000 {
|
||||
|
|
@ -583,28 +596,28 @@
|
|||
|
||||
tcsr_mutex_regs: syscon@740000 {
|
||||
compatible = "syscon";
|
||||
reg = <0x740000 0x20000>;
|
||||
reg = <0x00740000 0x20000>;
|
||||
};
|
||||
|
||||
tsens0: thermal-sensor@4a9000 {
|
||||
compatible = "qcom,msm8996-tsens";
|
||||
reg = <0x4a9000 0x1000>, /* TM */
|
||||
<0x4a8000 0x1000>; /* SROT */
|
||||
reg = <0x004a9000 0x1000>, /* TM */
|
||||
<0x004a8000 0x1000>; /* SROT */
|
||||
#qcom,sensors = <13>;
|
||||
#thermal-sensor-cells = <1>;
|
||||
};
|
||||
|
||||
tsens1: thermal-sensor@4ad000 {
|
||||
compatible = "qcom,msm8996-tsens";
|
||||
reg = <0x4ad000 0x1000>, /* TM */
|
||||
<0x4ac000 0x1000>; /* SROT */
|
||||
reg = <0x004ad000 0x1000>, /* TM */
|
||||
<0x004ac000 0x1000>; /* SROT */
|
||||
#qcom,sensors = <8>;
|
||||
#thermal-sensor-cells = <1>;
|
||||
};
|
||||
|
||||
tcsr: syscon@7a0000 {
|
||||
compatible = "qcom,tcsr-msm8996", "syscon";
|
||||
reg = <0x7a0000 0x18000>;
|
||||
reg = <0x007a0000 0x18000>;
|
||||
};
|
||||
|
||||
intc: interrupt-controller@9bc0000 {
|
||||
|
|
@ -620,7 +633,7 @@
|
|||
|
||||
apcs_glb: mailbox@9820000 {
|
||||
compatible = "qcom,msm8996-apcs-hmss-global";
|
||||
reg = <0x9820000 0x1000>;
|
||||
reg = <0x09820000 0x1000>;
|
||||
|
||||
#mbox-cells = <1>;
|
||||
};
|
||||
|
|
@ -630,7 +643,7 @@
|
|||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
reg = <0x300000 0x90000>;
|
||||
reg = <0x00300000 0x90000>;
|
||||
};
|
||||
|
||||
stm@3002000 {
|
||||
|
|
@ -736,6 +749,14 @@
|
|||
clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
|
||||
clock-names = "apb_pclk", "atclk";
|
||||
|
||||
in-ports {
|
||||
port {
|
||||
funnel_in2_in_modem_etm: endpoint {
|
||||
remote-endpoint =
|
||||
<&modem_etm_out_funnel_in2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
out-ports {
|
||||
port {
|
||||
|
|
@ -1103,7 +1124,7 @@
|
|||
|
||||
kryocc: clock-controller@6400000 {
|
||||
compatible = "qcom,apcc-msm8996";
|
||||
reg = <0x6400000 0x90000>;
|
||||
reg = <0x06400000 0x90000>;
|
||||
#clock-cells = <1>;
|
||||
};
|
||||
|
||||
|
|
@ -1149,7 +1170,7 @@
|
|||
|
||||
blsp2_uart1: serial@75b0000 {
|
||||
compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
|
||||
reg = <0x75b0000 0x1000>;
|
||||
reg = <0x075b0000 0x1000>;
|
||||
interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&gcc GCC_BLSP2_UART2_APPS_CLK>,
|
||||
<&gcc GCC_BLSP2_AHB_CLK>;
|
||||
|
|
@ -1215,7 +1236,7 @@
|
|||
sdhc2: sdhci@74a4900 {
|
||||
status = "disabled";
|
||||
compatible = "qcom,sdhci-msm-v4";
|
||||
reg = <0x74a4900 0x314>, <0x74a4000 0x800>;
|
||||
reg = <0x074a4900 0x314>, <0x074a4000 0x800>;
|
||||
reg-names = "hc_mem", "core_mem";
|
||||
|
||||
interrupts = <0 125 IRQ_TYPE_LEVEL_HIGH>,
|
||||
|
|
@ -1300,11 +1321,11 @@
|
|||
|
||||
spmi_bus: qcom,spmi@400f000 {
|
||||
compatible = "qcom,spmi-pmic-arb";
|
||||
reg = <0x400f000 0x1000>,
|
||||
<0x4400000 0x800000>,
|
||||
<0x4c00000 0x800000>,
|
||||
<0x5800000 0x200000>,
|
||||
<0x400a000 0x002100>;
|
||||
reg = <0x0400f000 0x1000>,
|
||||
<0x04400000 0x800000>,
|
||||
<0x04c00000 0x800000>,
|
||||
<0x05800000 0x200000>,
|
||||
<0x0400a000 0x002100>;
|
||||
reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
|
||||
interrupt-names = "periph_irq";
|
||||
interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
|
@ -1318,20 +1339,10 @@
|
|||
|
||||
ufsphy: phy@627000 {
|
||||
compatible = "qcom,msm8996-ufs-phy-qmp-14nm";
|
||||
reg = <0x627000 0xda8>;
|
||||
reg = <0x00627000 0xda8>;
|
||||
reg-names = "phy_mem";
|
||||
#phy-cells = <0>;
|
||||
|
||||
vdda-phy-supply = <&pm8994_l28>;
|
||||
vdda-pll-supply = <&pm8994_l12>;
|
||||
|
||||
vdda-phy-max-microamp = <18380>;
|
||||
vdda-pll-max-microamp = <9440>;
|
||||
|
||||
vddp-ref-clk-supply = <&pm8994_l25>;
|
||||
vddp-ref-clk-max-microamp = <100>;
|
||||
vddp-ref-clk-always-on;
|
||||
|
||||
clock-names = "ref_clk_src", "ref_clk";
|
||||
clocks = <&rpmcc RPM_SMD_LN_BB_CLK>,
|
||||
<&gcc GCC_UFS_CLKREF_CLK>;
|
||||
|
|
@ -1341,20 +1352,12 @@
|
|||
|
||||
ufshc: ufshc@624000 {
|
||||
compatible = "qcom,ufshc";
|
||||
reg = <0x624000 0x2500>;
|
||||
reg = <0x00624000 0x2500>;
|
||||
interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
phys = <&ufsphy>;
|
||||
phy-names = "ufsphy";
|
||||
|
||||
vcc-supply = <&pm8994_l20>;
|
||||
vccq-supply = <&pm8994_l25>;
|
||||
vccq2-supply = <&pm8994_s4>;
|
||||
|
||||
vcc-max-microamp = <600000>;
|
||||
vccq-max-microamp = <450000>;
|
||||
vccq2-max-microamp = <450000>;
|
||||
|
||||
power-domains = <&gcc UFS_GDSC>;
|
||||
|
||||
clock-names =
|
||||
|
|
@ -1408,7 +1411,7 @@
|
|||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
reg = <0x8c0000 0x40000>;
|
||||
reg = <0x008c0000 0x40000>;
|
||||
assigned-clocks = <&mmcc MMPLL9_PLL>,
|
||||
<&mmcc MMPLL1_PLL>,
|
||||
<&mmcc MMPLL3_PLL>,
|
||||
|
|
@ -1423,7 +1426,7 @@
|
|||
|
||||
qfprom@74000 {
|
||||
compatible = "qcom,qfprom";
|
||||
reg = <0x74000 0x8ff>;
|
||||
reg = <0x00074000 0x8ff>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
|
|
@ -1443,9 +1446,9 @@
|
|||
};
|
||||
};
|
||||
|
||||
phy@34000 {
|
||||
pcie_phy: phy@34000 {
|
||||
compatible = "qcom,msm8996-qmp-pcie-phy";
|
||||
reg = <0x34000 0x488>;
|
||||
reg = <0x00034000 0x488>;
|
||||
#clock-cells = <1>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
|
@ -1456,9 +1459,6 @@
|
|||
<&gcc GCC_PCIE_CLKREF_CLK>;
|
||||
clock-names = "aux", "cfg_ahb", "ref";
|
||||
|
||||
vdda-phy-supply = <&pm8994_l28>;
|
||||
vdda-pll-supply = <&pm8994_l12>;
|
||||
|
||||
resets = <&gcc GCC_PCIE_PHY_BCR>,
|
||||
<&gcc GCC_PCIE_PHY_COM_BCR>,
|
||||
<&gcc GCC_PCIE_PHY_COM_NOCSR_BCR>;
|
||||
|
|
@ -1466,9 +1466,9 @@
|
|||
status = "disabled";
|
||||
|
||||
pciephy_0: lane@35000 {
|
||||
reg = <0x035000 0x130>,
|
||||
<0x035200 0x200>,
|
||||
<0x035400 0x1dc>;
|
||||
reg = <0x00035000 0x130>,
|
||||
<0x00035200 0x200>,
|
||||
<0x00035400 0x1dc>;
|
||||
#phy-cells = <0>;
|
||||
|
||||
clock-output-names = "pcie_0_pipe_clk_src";
|
||||
|
|
@ -1479,9 +1479,9 @@
|
|||
};
|
||||
|
||||
pciephy_1: lane@36000 {
|
||||
reg = <0x036000 0x130>,
|
||||
<0x036200 0x200>,
|
||||
<0x036400 0x1dc>;
|
||||
reg = <0x00036000 0x130>,
|
||||
<0x00036200 0x200>,
|
||||
<0x00036400 0x1dc>;
|
||||
#phy-cells = <0>;
|
||||
|
||||
clock-output-names = "pcie_1_pipe_clk_src";
|
||||
|
|
@ -1492,9 +1492,9 @@
|
|||
};
|
||||
|
||||
pciephy_2: lane@37000 {
|
||||
reg = <0x037000 0x130>,
|
||||
<0x037200 0x200>,
|
||||
<0x037400 0x1dc>;
|
||||
reg = <0x00037000 0x130>,
|
||||
<0x00037200 0x200>,
|
||||
<0x00037400 0x1dc>;
|
||||
#phy-cells = <0>;
|
||||
|
||||
clock-output-names = "pcie_2_pipe_clk_src";
|
||||
|
|
@ -1505,9 +1505,9 @@
|
|||
};
|
||||
};
|
||||
|
||||
phy@7410000 {
|
||||
usb3phy: phy@7410000 {
|
||||
compatible = "qcom,msm8996-qmp-usb3-phy";
|
||||
reg = <0x7410000 0x1c4>;
|
||||
reg = <0x07410000 0x1c4>;
|
||||
#clock-cells = <1>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
|
@ -1518,18 +1518,15 @@
|
|||
<&gcc GCC_USB3_CLKREF_CLK>;
|
||||
clock-names = "aux", "cfg_ahb", "ref";
|
||||
|
||||
vdda-phy-supply = <&pm8994_l28>;
|
||||
vdda-pll-supply = <&pm8994_l12>;
|
||||
|
||||
resets = <&gcc GCC_USB3_PHY_BCR>,
|
||||
<&gcc GCC_USB3PHY_PHY_BCR>;
|
||||
reset-names = "phy", "common";
|
||||
status = "disabled";
|
||||
|
||||
ssusb_phy_0: lane@7410200 {
|
||||
reg = <0x7410200 0x200>,
|
||||
<0x7410400 0x130>,
|
||||
<0x7410600 0x1a8>;
|
||||
reg = <0x07410200 0x200>,
|
||||
<0x07410400 0x130>,
|
||||
<0x07410600 0x1a8>;
|
||||
#phy-cells = <0>;
|
||||
|
||||
clock-output-names = "usb3_phy_pipe_clk_src";
|
||||
|
|
@ -1540,16 +1537,13 @@
|
|||
|
||||
hsusb_phy1: phy@7411000 {
|
||||
compatible = "qcom,msm8996-qusb2-phy";
|
||||
reg = <0x7411000 0x180>;
|
||||
reg = <0x07411000 0x180>;
|
||||
#phy-cells = <0>;
|
||||
|
||||
clocks = <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
|
||||
<&gcc GCC_RX1_USB2_CLKREF_CLK>;
|
||||
clock-names = "cfg_ahb", "ref";
|
||||
|
||||
vdda-pll-supply = <&pm8994_l12>;
|
||||
vdda-phy-dpdm-supply = <&pm8994_l24>;
|
||||
|
||||
resets = <&gcc GCC_QUSB2PHY_PRIM_BCR>;
|
||||
nvmem-cells = <&qusb2p_hstx_trim>;
|
||||
status = "disabled";
|
||||
|
|
@ -1557,16 +1551,13 @@
|
|||
|
||||
hsusb_phy2: phy@7412000 {
|
||||
compatible = "qcom,msm8996-qusb2-phy";
|
||||
reg = <0x7412000 0x180>;
|
||||
reg = <0x07412000 0x180>;
|
||||
#phy-cells = <0>;
|
||||
|
||||
clocks = <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
|
||||
<&gcc GCC_RX2_USB2_CLKREF_CLK>;
|
||||
clock-names = "cfg_ahb", "ref";
|
||||
|
||||
vdda-pll-supply = <&pm8994_l12>;
|
||||
vdda-phy-dpdm-supply = <&pm8994_l24>;
|
||||
|
||||
resets = <&gcc GCC_QUSB2PHY_SEC_BCR>;
|
||||
nvmem-cells = <&qusb2s_hstx_trim>;
|
||||
status = "disabled";
|
||||
|
|
@ -1574,7 +1565,7 @@
|
|||
|
||||
usb2: usb@76f8800 {
|
||||
compatible = "qcom,msm8996-dwc3", "qcom,dwc3";
|
||||
reg = <0x76f8800 0x400>;
|
||||
reg = <0x076f8800 0x400>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
|
@ -1594,7 +1585,7 @@
|
|||
|
||||
dwc3@7600000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0x7600000 0xcc00>;
|
||||
reg = <0x07600000 0xcc00>;
|
||||
interrupts = <0 138 IRQ_TYPE_LEVEL_HIGH>;
|
||||
phys = <&hsusb_phy2>;
|
||||
phy-names = "usb2-phy";
|
||||
|
|
@ -1605,7 +1596,7 @@
|
|||
|
||||
usb3: usb@6af8800 {
|
||||
compatible = "qcom,msm8996-dwc3", "qcom,dwc3";
|
||||
reg = <0x6af8800 0x400>;
|
||||
reg = <0x06af8800 0x400>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
|
@ -1626,7 +1617,7 @@
|
|||
|
||||
dwc3@6a00000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0x6a00000 0xcc00>;
|
||||
reg = <0x06a00000 0xcc00>;
|
||||
interrupts = <0 131 IRQ_TYPE_LEVEL_HIGH>;
|
||||
phys = <&hsusb_phy1>, <&ssusb_phy_0>;
|
||||
phy-names = "usb2-phy", "usb3-phy";
|
||||
|
|
@ -1637,7 +1628,7 @@
|
|||
|
||||
vfe_smmu: iommu@da0000 {
|
||||
compatible = "qcom,msm8996-smmu-v2", "qcom,smmu-v2";
|
||||
reg = <0xda0000 0x10000>;
|
||||
reg = <0x00da0000 0x10000>;
|
||||
|
||||
#global-interrupts = <1>;
|
||||
interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
|
||||
|
|
@ -1653,20 +1644,20 @@
|
|||
|
||||
camss: camss@a00000 {
|
||||
compatible = "qcom,msm8996-camss";
|
||||
reg = <0xa34000 0x1000>,
|
||||
<0xa00030 0x4>,
|
||||
<0xa35000 0x1000>,
|
||||
<0xa00038 0x4>,
|
||||
<0xa36000 0x1000>,
|
||||
<0xa00040 0x4>,
|
||||
<0xa30000 0x100>,
|
||||
<0xa30400 0x100>,
|
||||
<0xa30800 0x100>,
|
||||
<0xa30c00 0x100>,
|
||||
<0xa31000 0x500>,
|
||||
<0xa00020 0x10>,
|
||||
<0xa10000 0x1000>,
|
||||
<0xa14000 0x1000>;
|
||||
reg = <0x00a34000 0x1000>,
|
||||
<0x00a00030 0x4>,
|
||||
<0x00a35000 0x1000>,
|
||||
<0x00a00038 0x4>,
|
||||
<0x00a36000 0x1000>,
|
||||
<0x00a00040 0x4>,
|
||||
<0x00a30000 0x100>,
|
||||
<0x00a30400 0x100>,
|
||||
<0x00a30800 0x100>,
|
||||
<0x00a30c00 0x100>,
|
||||
<0x00a31000 0x500>,
|
||||
<0x00a00020 0x10>,
|
||||
<0x00a10000 0x1000>,
|
||||
<0x00a14000 0x1000>;
|
||||
reg-names = "csiphy0",
|
||||
"csiphy0_clk_mux",
|
||||
"csiphy1",
|
||||
|
|
@ -1774,7 +1765,6 @@
|
|||
"vfe1_stream",
|
||||
"vfe_ahb",
|
||||
"vfe_axi";
|
||||
vdda-supply = <&pm8994_l2>;
|
||||
iommus = <&vfe_smmu 0>,
|
||||
<&vfe_smmu 1>,
|
||||
<&vfe_smmu 2>,
|
||||
|
|
@ -1788,7 +1778,7 @@
|
|||
|
||||
adreno_smmu: iommu@b40000 {
|
||||
compatible = "qcom,msm8996-smmu-v2", "qcom,smmu-v2";
|
||||
reg = <0xb40000 0x10000>;
|
||||
reg = <0x00b40000 0x10000>;
|
||||
|
||||
#global-interrupts = <1>;
|
||||
interrupts = <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>,
|
||||
|
|
@ -1805,7 +1795,7 @@
|
|||
|
||||
mdp_smmu: iommu@d00000 {
|
||||
compatible = "qcom,msm8996-smmu-v2", "qcom,smmu-v2";
|
||||
reg = <0xd00000 0x10000>;
|
||||
reg = <0x00d00000 0x10000>;
|
||||
|
||||
#global-interrupts = <1>;
|
||||
interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
|
||||
|
|
@ -1821,7 +1811,7 @@
|
|||
|
||||
lpass_q6_smmu: iommu@1600000 {
|
||||
compatible = "qcom,msm8996-smmu-v2", "qcom,smmu-v2";
|
||||
reg = <0x1600000 0x20000>;
|
||||
reg = <0x01600000 0x20000>;
|
||||
#iommu-cells = <1>;
|
||||
power-domains = <&gcc HLOS1_VOTE_LPASS_CORE_GDSC>;
|
||||
|
||||
|
|
@ -1886,9 +1876,6 @@
|
|||
pinctrl-0 = <&pcie0_clkreq_default &pcie0_perst_default &pcie0_wake_default>;
|
||||
pinctrl-1 = <&pcie0_clkreq_sleep &pcie0_perst_default &pcie0_wake_sleep>;
|
||||
|
||||
|
||||
vdda-supply = <&pm8994_l28>;
|
||||
|
||||
linux,pci-domain = <0>;
|
||||
|
||||
clocks = <&gcc GCC_PCIE_0_PIPE_CLK>,
|
||||
|
|
@ -1941,8 +1928,6 @@
|
|||
pinctrl-0 = <&pcie1_clkreq_default &pcie1_perst_default &pcie1_wake_default>;
|
||||
pinctrl-1 = <&pcie1_clkreq_sleep &pcie1_perst_default &pcie1_wake_sleep>;
|
||||
|
||||
|
||||
vdda-supply = <&pm8994_l28>;
|
||||
linux,pci-domain = <1>;
|
||||
|
||||
clocks = <&gcc GCC_PCIE_1_PIPE_CLK>,
|
||||
|
|
@ -1994,8 +1979,6 @@
|
|||
pinctrl-0 = <&pcie2_clkreq_default &pcie2_perst_default &pcie2_wake_default>;
|
||||
pinctrl-1 = <&pcie2_clkreq_sleep &pcie2_perst_default &pcie2_wake_sleep >;
|
||||
|
||||
vdda-supply = <&pm8994_l28>;
|
||||
|
||||
linux,pci-domain = <2>;
|
||||
clocks = <&gcc GCC_PCIE_2_PIPE_CLK>,
|
||||
<&gcc GCC_PCIE_2_AUX_CLK>,
|
||||
|
|
@ -2015,7 +1998,7 @@
|
|||
{
|
||||
compatible = "qcom,bam-v1.7.0";
|
||||
qcom,controlled-remotely;
|
||||
reg = <0x9184000 0x32000>;
|
||||
reg = <0x09184000 0x32000>;
|
||||
num-channels = <31>;
|
||||
interrupts = <0 164 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#dma-cells = <1>;
|
||||
|
|
@ -2025,7 +2008,7 @@
|
|||
|
||||
slim_msm: slim@91c0000 {
|
||||
compatible = "qcom,slim-ngd-v1.5.0";
|
||||
reg = <0x91c0000 0x2C000>;
|
||||
reg = <0x091c0000 0x2C000>;
|
||||
reg-names = "ctrl";
|
||||
interrupts = <0 163 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&slimbam 3>, <&slimbam 4>,
|
||||
|
|
@ -2060,12 +2043,6 @@
|
|||
|
||||
slim-ifc-dev = <&tasha_ifd>;
|
||||
|
||||
vdd-buck-supply = <&pm8994_s4>;
|
||||
vdd-buck-sido-supply = <&pm8994_s4>;
|
||||
vdd-tx-supply = <&pm8994_s4>;
|
||||
vdd-rx-supply = <&pm8994_s4>;
|
||||
vdd-io-supply = <&pm8994_s4>;
|
||||
|
||||
#sound-dai-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
|
@ -2075,7 +2052,7 @@
|
|||
compatible = "qcom,adreno-530.2", "qcom,adreno";
|
||||
#stream-id-cells = <16>;
|
||||
|
||||
reg = <0xb00000 0x3f000>;
|
||||
reg = <0x00b00000 0x3f000>;
|
||||
reg-names = "kgsl_3d0_reg_memory";
|
||||
|
||||
interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
|
@ -2146,9 +2123,9 @@
|
|||
mdss: mdss@900000 {
|
||||
compatible = "qcom,mdss";
|
||||
|
||||
reg = <0x900000 0x1000>,
|
||||
<0x9b0000 0x1040>,
|
||||
<0x9b8000 0x1040>;
|
||||
reg = <0x00900000 0x1000>,
|
||||
<0x009b0000 0x1040>,
|
||||
<0x009b8000 0x1040>;
|
||||
reg-names = "mdss_phys",
|
||||
"vbif_phys",
|
||||
"vbif_nrt_phys";
|
||||
|
|
@ -2168,7 +2145,7 @@
|
|||
|
||||
mdp: mdp@901000 {
|
||||
compatible = "qcom,mdp5";
|
||||
reg = <0x901000 0x90000>;
|
||||
reg = <0x00901000 0x90000>;
|
||||
reg-names = "mdp_phys";
|
||||
|
||||
interrupt-parent = <&mdss>;
|
||||
|
|
@ -2244,12 +2221,12 @@
|
|||
hdmi_phy: hdmi-phy@9a0600 {
|
||||
#phy-cells = <0>;
|
||||
compatible = "qcom,hdmi-phy-8996";
|
||||
reg = <0x9a0600 0x1c4>,
|
||||
<0x9a0a00 0x124>,
|
||||
<0x9a0c00 0x124>,
|
||||
<0x9a0e00 0x124>,
|
||||
<0x9a1000 0x124>,
|
||||
<0x9a1200 0x0c8>;
|
||||
reg = <0x009a0600 0x1c4>,
|
||||
<0x009a0a00 0x124>,
|
||||
<0x009a0c00 0x124>,
|
||||
<0x009a0e00 0x124>,
|
||||
<0x009a1000 0x124>,
|
||||
<0x009a1200 0x0c8>;
|
||||
reg-names = "hdmi_pll",
|
||||
"hdmi_tx_l0",
|
||||
"hdmi_tx_l1",
|
||||
|
|
|
|||
|
|
@ -1396,9 +1396,11 @@
|
|||
|
||||
cpu = <&CPU4>;
|
||||
|
||||
port{
|
||||
etm4_out: endpoint {
|
||||
remote-endpoint = <&apss_funnel_in4>;
|
||||
out-ports {
|
||||
port{
|
||||
etm4_out: endpoint {
|
||||
remote-endpoint = <&apss_funnel_in4>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -1413,9 +1415,11 @@
|
|||
|
||||
cpu = <&CPU5>;
|
||||
|
||||
port{
|
||||
etm5_out: endpoint {
|
||||
remote-endpoint = <&apss_funnel_in5>;
|
||||
out-ports {
|
||||
port{
|
||||
etm5_out: endpoint {
|
||||
remote-endpoint = <&apss_funnel_in5>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -1430,9 +1434,11 @@
|
|||
|
||||
cpu = <&CPU6>;
|
||||
|
||||
port{
|
||||
etm6_out: endpoint {
|
||||
remote-endpoint = <&apss_funnel_in6>;
|
||||
out-ports {
|
||||
port{
|
||||
etm6_out: endpoint {
|
||||
remote-endpoint = <&apss_funnel_in6>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -1447,9 +1453,11 @@
|
|||
|
||||
cpu = <&CPU7>;
|
||||
|
||||
port{
|
||||
etm7_out: endpoint {
|
||||
remote-endpoint = <&apss_funnel_in7>;
|
||||
out-ports {
|
||||
port{
|
||||
etm7_out: endpoint {
|
||||
remote-endpoint = <&apss_funnel_in7>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2716,10 +2716,10 @@
|
|||
<&gcc GCC_USB30_PRIM_MASTER_CLK>;
|
||||
assigned-clock-rates = <19200000>, <150000000>;
|
||||
|
||||
interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<&intc GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<&pdc_intc 8 IRQ_TYPE_EDGE_BOTH>,
|
||||
<&pdc_intc 9 IRQ_TYPE_EDGE_BOTH>;
|
||||
interrupt-names = "hs_phy_irq", "ss_phy_irq",
|
||||
"dm_hs_phy_irq", "dp_hs_phy_irq";
|
||||
|
||||
|
|
@ -2760,10 +2760,10 @@
|
|||
<&gcc GCC_USB30_SEC_MASTER_CLK>;
|
||||
assigned-clock-rates = <19200000>, <150000000>;
|
||||
|
||||
interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 487 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 490 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 491 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupts-extended = <&intc GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<&intc GIC_SPI 487 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<&pdc_intc 10 IRQ_TYPE_EDGE_BOTH>,
|
||||
<&pdc_intc 11 IRQ_TYPE_EDGE_BOTH>;
|
||||
interrupt-names = "hs_phy_irq", "ss_phy_irq",
|
||||
"dm_hs_phy_irq", "dp_hs_phy_irq";
|
||||
|
||||
|
|
@ -3158,6 +3158,15 @@
|
|||
#power-domain-cells = <1>;
|
||||
};
|
||||
|
||||
pdc_intc: interrupt-controller@b220000 {
|
||||
compatible = "qcom,sdm845-pdc", "qcom,pdc";
|
||||
reg = <0 0x0b220000 0 0x30000>;
|
||||
qcom,pdc-ranges = <0 480 94>, <94 609 15>, <115 630 7>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&intc>;
|
||||
interrupt-controller;
|
||||
};
|
||||
|
||||
pdc_reset: reset-controller@b2e0000 {
|
||||
compatible = "qcom,sdm845-pdc-global";
|
||||
reg = <0 0x0b2e0000 0 0x20000>;
|
||||
|
|
|
|||
|
|
@ -684,11 +684,20 @@
|
|||
status = "disabled";
|
||||
|
||||
ports {
|
||||
hdmi_in: port {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
hdmi_in: port@0 {
|
||||
reg = <0>;
|
||||
|
||||
hdmi_in_vop: endpoint {
|
||||
remote-endpoint = <&vop_out_hdmi>;
|
||||
};
|
||||
};
|
||||
|
||||
hdmi_out: port@1 {
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1743,6 +1743,7 @@
|
|||
hdmi: hdmi@ff940000 {
|
||||
compatible = "rockchip,rk3399-dw-hdmi";
|
||||
reg = <0x0 0xff940000 0x0 0x20000>;
|
||||
reg-io-width = <4>;
|
||||
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||
clocks = <&cru PCLK_HDMI_CTRL>,
|
||||
<&cru SCLK_HDMI_SFR>,
|
||||
|
|
@ -1751,13 +1752,16 @@
|
|||
<&cru PLL_VPLL>;
|
||||
clock-names = "iahb", "isfr", "cec", "grf", "vpll";
|
||||
power-domains = <&power RK3399_PD_HDCP>;
|
||||
reg-io-width = <4>;
|
||||
rockchip,grf = <&grf>;
|
||||
#sound-dai-cells = <0>;
|
||||
status = "disabled";
|
||||
|
||||
ports {
|
||||
hdmi_in: port {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
hdmi_in: port@0 {
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
|
|
@ -1770,6 +1774,10 @@
|
|||
remote-endpoint = <&vopl_out_hdmi>;
|
||||
};
|
||||
};
|
||||
|
||||
hdmi_out: port@1 {
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -3,9 +3,8 @@
|
|||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* This file contains NUMA specific variables and functions which can
|
||||
* be split away from DISCONTIGMEM and are used on NUMA machines with
|
||||
* contiguous memory.
|
||||
* This file contains NUMA specific variables and functions which are used on
|
||||
* NUMA machines with contiguous memory.
|
||||
* 2002/08/07 Erich Focht <efocht@ess.nec.de>
|
||||
* Populate cpu entries in sysfs for non-numa systems as well
|
||||
* Intel Corporation - Ashok Raj
|
||||
|
|
|
|||
|
|
@ -3,9 +3,8 @@
|
|||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* This file contains NUMA specific variables and functions which can
|
||||
* be split away from DISCONTIGMEM and are used on NUMA machines with
|
||||
* contiguous memory.
|
||||
* This file contains NUMA specific variables and functions which are used on
|
||||
* NUMA machines with contiguous memory.
|
||||
*
|
||||
* 2002/08/07 Erich Focht <efocht@ess.nec.de>
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -276,7 +276,8 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
|||
" .set pop"
|
||||
: "=&r" (sum), "=&r" (tmp)
|
||||
: "r" (saddr), "r" (daddr),
|
||||
"0" (htonl(len)), "r" (htonl(proto)), "r" (sum));
|
||||
"0" (htonl(len)), "r" (htonl(proto)), "r" (sum)
|
||||
: "memory");
|
||||
|
||||
return csum_fold(sum);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,10 +20,4 @@
|
|||
#define nid_to_addrbase(nid) 0
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DISCONTIGMEM
|
||||
|
||||
#define pfn_to_nid(pfn) pa_to_nid((pfn) << PAGE_SHIFT)
|
||||
|
||||
#endif /* CONFIG_DISCONTIGMEM */
|
||||
|
||||
#endif /* _ASM_MMZONE_H_ */
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ static inline void instruction_pointer_set(struct pt_regs *regs,
|
|||
unsigned long val)
|
||||
{
|
||||
regs->cp0_epc = val;
|
||||
regs->cp0_cause &= ~CAUSEF_BD;
|
||||
}
|
||||
|
||||
/* Query offset/name of register from its name/offset */
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include <asm/cpu-features.h>
|
||||
#include <asm/cpu-info.h>
|
||||
#include <asm/fpu.h>
|
||||
|
||||
#ifdef CONFIG_MIPS_FP_SUPPORT
|
||||
|
||||
|
|
@ -309,6 +310,11 @@ void mips_set_personality_nan(struct arch_elf_state *state)
|
|||
struct cpuinfo_mips *c = &boot_cpu_data;
|
||||
struct task_struct *t = current;
|
||||
|
||||
/* Do this early so t->thread.fpu.fcr31 won't be clobbered in case
|
||||
* we are preempted before the lose_fpu(0) in start_thread.
|
||||
*/
|
||||
lose_fpu(0);
|
||||
|
||||
t->thread.fpu.fcr31 = c->fpu_csr31;
|
||||
switch (state->nan_2008) {
|
||||
case 0:
|
||||
|
|
|
|||
|
|
@ -416,7 +416,12 @@ void __init paging_init(void)
|
|||
(highend_pfn - max_low_pfn) << (PAGE_SHIFT - 10));
|
||||
max_zone_pfns[ZONE_HIGHMEM] = max_low_pfn;
|
||||
}
|
||||
|
||||
max_mapnr = highend_pfn ? highend_pfn : max_low_pfn;
|
||||
#else
|
||||
max_mapnr = max_low_pfn;
|
||||
#endif
|
||||
high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT);
|
||||
|
||||
free_area_init_nodes(max_zone_pfns);
|
||||
}
|
||||
|
|
@ -452,16 +457,6 @@ void __init mem_init(void)
|
|||
*/
|
||||
BUILD_BUG_ON(IS_ENABLED(CONFIG_32BIT) && (_PFN_SHIFT > PAGE_SHIFT));
|
||||
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
#ifdef CONFIG_DISCONTIGMEM
|
||||
#error "CONFIG_HIGHMEM and CONFIG_DISCONTIGMEM dont work together yet"
|
||||
#endif
|
||||
max_mapnr = highend_pfn ? highend_pfn : max_low_pfn;
|
||||
#else
|
||||
max_mapnr = max_low_pfn;
|
||||
#endif
|
||||
high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT);
|
||||
|
||||
maar_init();
|
||||
memblock_free_all();
|
||||
setup_zero_pages(); /* Setup zeroed pages. */
|
||||
|
|
|
|||
|
|
@ -76,18 +76,12 @@
|
|||
* virt_to_page(k) convert a _valid_ virtual address to struct page *
|
||||
* virt_addr_valid(k) indicates whether a virtual address is valid
|
||||
*/
|
||||
#ifndef CONFIG_DISCONTIGMEM
|
||||
|
||||
#define ARCH_PFN_OFFSET PHYS_PFN_OFFSET
|
||||
#define pfn_valid(pfn) ((pfn) >= PHYS_PFN_OFFSET && (pfn) < (PHYS_PFN_OFFSET + max_mapnr))
|
||||
|
||||
#define virt_to_page(kaddr) (pfn_to_page(__pa(kaddr) >> PAGE_SHIFT))
|
||||
#define virt_addr_valid(kaddr) ((unsigned long)(kaddr) >= PAGE_OFFSET && (unsigned long)(kaddr) < (unsigned long)high_memory)
|
||||
|
||||
#else /* CONFIG_DISCONTIGMEM */
|
||||
#error CONFIG_DISCONTIGMEM is not supported yet.
|
||||
#endif /* !CONFIG_DISCONTIGMEM */
|
||||
|
||||
#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -42,31 +42,32 @@ extern __wsum csum_partial_copy_from_user(const void __user *src,
|
|||
static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl)
|
||||
{
|
||||
unsigned int sum;
|
||||
unsigned long t0, t1, t2;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
" ldws,ma 4(%1), %0\n"
|
||||
" addib,<= -4, %2, 2f\n"
|
||||
"\n"
|
||||
" ldws 4(%1), %%r20\n"
|
||||
" ldws 8(%1), %%r21\n"
|
||||
" add %0, %%r20, %0\n"
|
||||
" ldws,ma 12(%1), %%r19\n"
|
||||
" addc %0, %%r21, %0\n"
|
||||
" addc %0, %%r19, %0\n"
|
||||
"1: ldws,ma 4(%1), %%r19\n"
|
||||
" addib,< 0, %2, 1b\n"
|
||||
" addc %0, %%r19, %0\n"
|
||||
" ldws 4(%1), %4\n"
|
||||
" ldws 8(%1), %5\n"
|
||||
" add %0, %4, %0\n"
|
||||
" ldws,ma 12(%1), %3\n"
|
||||
" addc %0, %5, %0\n"
|
||||
" addc %0, %3, %0\n"
|
||||
"1: ldws,ma 4(%1), %3\n"
|
||||
" addib,> -1, %2, 1b\n"
|
||||
" addc %0, %3, %0\n"
|
||||
"\n"
|
||||
" extru %0, 31, 16, %%r20\n"
|
||||
" extru %0, 15, 16, %%r21\n"
|
||||
" addc %%r20, %%r21, %0\n"
|
||||
" extru %0, 15, 16, %%r21\n"
|
||||
" add %0, %%r21, %0\n"
|
||||
" extru %0, 31, 16, %4\n"
|
||||
" extru %0, 15, 16, %5\n"
|
||||
" addc %4, %5, %0\n"
|
||||
" extru %0, 15, 16, %5\n"
|
||||
" add %0, %5, %0\n"
|
||||
" subi -1, %0, %0\n"
|
||||
"2:\n"
|
||||
: "=r" (sum), "=r" (iph), "=r" (ihl)
|
||||
: "=r" (sum), "=r" (iph), "=r" (ihl), "=r" (t0), "=r" (t1), "=r" (t2)
|
||||
: "1" (iph), "2" (ihl)
|
||||
: "r19", "r20", "r21", "memory");
|
||||
: "memory");
|
||||
|
||||
return (__force __sum16)sum;
|
||||
}
|
||||
|
|
@ -126,6 +127,10 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
|||
__u32 len, __u8 proto,
|
||||
__wsum sum)
|
||||
{
|
||||
unsigned long t0, t1, t2, t3;
|
||||
|
||||
len += proto; /* add 16-bit proto + len */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
|
||||
#if BITS_PER_LONG > 32
|
||||
|
|
@ -136,20 +141,20 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
|||
** Try to keep 4 registers with "live" values ahead of the ALU.
|
||||
*/
|
||||
|
||||
" ldd,ma 8(%1), %%r19\n" /* get 1st saddr word */
|
||||
" ldd,ma 8(%2), %%r20\n" /* get 1st daddr word */
|
||||
" add %8, %3, %3\n"/* add 16-bit proto + len */
|
||||
" add %%r19, %0, %0\n"
|
||||
" ldd,ma 8(%1), %%r21\n" /* 2cd saddr */
|
||||
" ldd,ma 8(%2), %%r22\n" /* 2cd daddr */
|
||||
" add,dc %%r20, %0, %0\n"
|
||||
" add,dc %%r21, %0, %0\n"
|
||||
" add,dc %%r22, %0, %0\n"
|
||||
" depdi 0, 31, 32, %0\n"/* clear upper half of incoming checksum */
|
||||
" ldd,ma 8(%1), %4\n" /* get 1st saddr word */
|
||||
" ldd,ma 8(%2), %5\n" /* get 1st daddr word */
|
||||
" add %4, %0, %0\n"
|
||||
" ldd,ma 8(%1), %6\n" /* 2nd saddr */
|
||||
" ldd,ma 8(%2), %7\n" /* 2nd daddr */
|
||||
" add,dc %5, %0, %0\n"
|
||||
" add,dc %6, %0, %0\n"
|
||||
" add,dc %7, %0, %0\n"
|
||||
" add,dc %3, %0, %0\n" /* fold in proto+len | carry bit */
|
||||
" extrd,u %0, 31, 32, %%r19\n" /* copy upper half down */
|
||||
" depdi 0, 31, 32, %0\n" /* clear upper half */
|
||||
" add %%r19, %0, %0\n" /* fold into 32-bits */
|
||||
" addc 0, %0, %0\n" /* add carry */
|
||||
" extrd,u %0, 31, 32, %4\n"/* copy upper half down */
|
||||
" depdi 0, 31, 32, %0\n"/* clear upper half */
|
||||
" add,dc %4, %0, %0\n" /* fold into 32-bits, plus carry */
|
||||
" addc 0, %0, %0\n" /* add final carry */
|
||||
|
||||
#else
|
||||
|
||||
|
|
@ -158,30 +163,30 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
|||
** Insn stream is serialized on the carry bit here too.
|
||||
** result from the previous operation (eg r0 + x)
|
||||
*/
|
||||
|
||||
" ldw,ma 4(%1), %%r19\n" /* get 1st saddr word */
|
||||
" ldw,ma 4(%2), %%r20\n" /* get 1st daddr word */
|
||||
" add %8, %3, %3\n" /* add 16-bit proto + len */
|
||||
" add %%r19, %0, %0\n"
|
||||
" ldw,ma 4(%1), %%r21\n" /* 2cd saddr */
|
||||
" addc %%r20, %0, %0\n"
|
||||
" ldw,ma 4(%2), %%r22\n" /* 2cd daddr */
|
||||
" addc %%r21, %0, %0\n"
|
||||
" ldw,ma 4(%1), %%r19\n" /* 3rd saddr */
|
||||
" addc %%r22, %0, %0\n"
|
||||
" ldw,ma 4(%2), %%r20\n" /* 3rd daddr */
|
||||
" addc %%r19, %0, %0\n"
|
||||
" ldw,ma 4(%1), %%r21\n" /* 4th saddr */
|
||||
" addc %%r20, %0, %0\n"
|
||||
" ldw,ma 4(%2), %%r22\n" /* 4th daddr */
|
||||
" addc %%r21, %0, %0\n"
|
||||
" addc %%r22, %0, %0\n"
|
||||
" addc %3, %0, %0\n" /* fold in proto+len, catch carry */
|
||||
" ldw,ma 4(%1), %4\n" /* get 1st saddr word */
|
||||
" ldw,ma 4(%2), %5\n" /* get 1st daddr word */
|
||||
" add %4, %0, %0\n"
|
||||
" ldw,ma 4(%1), %6\n" /* 2nd saddr */
|
||||
" addc %5, %0, %0\n"
|
||||
" ldw,ma 4(%2), %7\n" /* 2nd daddr */
|
||||
" addc %6, %0, %0\n"
|
||||
" ldw,ma 4(%1), %4\n" /* 3rd saddr */
|
||||
" addc %7, %0, %0\n"
|
||||
" ldw,ma 4(%2), %5\n" /* 3rd daddr */
|
||||
" addc %4, %0, %0\n"
|
||||
" ldw,ma 4(%1), %6\n" /* 4th saddr */
|
||||
" addc %5, %0, %0\n"
|
||||
" ldw,ma 4(%2), %7\n" /* 4th daddr */
|
||||
" addc %6, %0, %0\n"
|
||||
" addc %7, %0, %0\n"
|
||||
" addc %3, %0, %0\n" /* fold in proto+len */
|
||||
" addc 0, %0, %0\n" /* add carry */
|
||||
|
||||
#endif
|
||||
: "=r" (sum), "=r" (saddr), "=r" (daddr), "=r" (len)
|
||||
: "0" (sum), "1" (saddr), "2" (daddr), "3" (len), "r" (proto)
|
||||
: "r19", "r20", "r21", "r22", "memory");
|
||||
: "=r" (sum), "=r" (saddr), "=r" (daddr), "=r" (len),
|
||||
"=r" (t0), "=r" (t1), "=r" (t2), "=r" (t3)
|
||||
: "0" (sum), "1" (saddr), "2" (daddr), "3" (len)
|
||||
: "memory");
|
||||
return csum_fold(sum);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -122,10 +122,10 @@ static unsigned long f_extend(unsigned long address)
|
|||
#ifdef CONFIG_64BIT
|
||||
if(unlikely(parisc_narrow_firmware)) {
|
||||
if((address & 0xff000000) == 0xf0000000)
|
||||
return 0xf0f0f0f000000000UL | (u32)address;
|
||||
return (0xfffffff0UL << 32) | (u32)address;
|
||||
|
||||
if((address & 0xf0000000) == 0xf0000000)
|
||||
return 0xffffffff00000000UL | (u32)address;
|
||||
return (0xffffffffUL << 32) | (u32)address;
|
||||
}
|
||||
#endif
|
||||
return address;
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ void notrace __hot ftrace_function_trampoline(unsigned long parent,
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||
#if defined(CONFIG_DYNAMIC_FTRACE) && defined(CONFIG_FUNCTION_GRAPH_TRACER)
|
||||
int ftrace_enable_ftrace_graph_caller(void)
|
||||
{
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -375,5 +375,9 @@ extern void *abatron_pteptrs[2];
|
|||
#include <asm/nohash/mmu.h>
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_FA_DUMP) || defined(CONFIG_PRESERVE_FA_DUMP)
|
||||
#define __HAVE_ARCH_RESERVED_KERNEL_PAGES
|
||||
#endif
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _ASM_POWERPC_MMU_H_ */
|
||||
|
|
|
|||
|
|
@ -42,9 +42,6 @@ u64 memory_hotplug_max(void);
|
|||
#else
|
||||
#define memory_hotplug_max() memblock_end_of_DRAM()
|
||||
#endif /* CONFIG_NEED_MULTIPLE_NODES */
|
||||
#ifdef CONFIG_FA_DUMP
|
||||
#define __HAVE_ARCH_RESERVED_KERNEL_PAGES
|
||||
#endif
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _ASM_MMZONE_H_ */
|
||||
|
|
|
|||
|
|
@ -12,9 +12,16 @@
|
|||
#ifndef __ASSEMBLY__
|
||||
/* Performance Monitor Registers */
|
||||
#define mfpmr(rn) ({unsigned int rval; \
|
||||
asm volatile("mfpmr %0," __stringify(rn) \
|
||||
asm volatile(".machine push; " \
|
||||
".machine e300; " \
|
||||
"mfpmr %0," __stringify(rn) ";" \
|
||||
".machine pop; " \
|
||||
: "=r" (rval)); rval;})
|
||||
#define mtpmr(rn, v) asm volatile("mtpmr " __stringify(rn) ",%0" : : "r" (v))
|
||||
#define mtpmr(rn, v) asm volatile(".machine push; " \
|
||||
".machine e300; " \
|
||||
"mtpmr " __stringify(rn) ",%0; " \
|
||||
".machine pop; " \
|
||||
: : "r" (v))
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
/* Freescale Book E Performance Monitor APU Registers */
|
||||
|
|
|
|||
|
|
@ -1424,10 +1424,12 @@ static int emulate_instruction(struct pt_regs *regs)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_GENERIC_BUG
|
||||
int is_valid_bugaddr(unsigned long addr)
|
||||
{
|
||||
return is_kernel_addr(addr);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MATH_EMULATION
|
||||
static int emulate_math(struct pt_regs *regs)
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@ obj-$(CONFIG_FUNCTION_ERROR_INJECTION) += error-inject.o
|
|||
# 64-bit linker creates .sfpr on demand for final link (vmlinux),
|
||||
# so it is only needed for modules, and only for older linkers which
|
||||
# do not support --save-restore-funcs
|
||||
ifeq ($(call ld-ifversion, -lt, 225000000, y),y)
|
||||
always-$(CONFIG_PPC64) += crtsavres.o
|
||||
ifeq ($(call ld-ifversion, -lt, 225000000, y)$(CONFIG_PPC64),yy)
|
||||
always += crtsavres.o
|
||||
endif
|
||||
|
||||
obj-$(CONFIG_PPC_BOOK3S_64) += copyuser_power7.o copypage_power7.o \
|
||||
|
|
@ -61,6 +61,6 @@ obj-$(CONFIG_PPC_LIB_RHEAP) += rheap.o
|
|||
obj-$(CONFIG_FTR_FIXUP_SELFTEST) += feature-fixups-test.o
|
||||
|
||||
obj-$(CONFIG_ALTIVEC) += xor_vmx.o xor_vmx_glue.o
|
||||
CFLAGS_xor_vmx.o += -maltivec $(call cc-option,-mabi=altivec)
|
||||
CFLAGS_xor_vmx.o += -mhard-float -maltivec $(call cc-option,-mabi=altivec)
|
||||
|
||||
obj-$(CONFIG_PPC64) += $(obj64-y)
|
||||
|
|
|
|||
|
|
@ -469,6 +469,8 @@ static int do_fp_load(struct instruction_op *op, unsigned long ea,
|
|||
} u;
|
||||
|
||||
nb = GETSIZE(op->type);
|
||||
if (nb > sizeof(u))
|
||||
return -EINVAL;
|
||||
if (!address_ok(regs, ea, nb))
|
||||
return -EFAULT;
|
||||
rn = op->reg;
|
||||
|
|
@ -519,6 +521,8 @@ static int do_fp_store(struct instruction_op *op, unsigned long ea,
|
|||
} u;
|
||||
|
||||
nb = GETSIZE(op->type);
|
||||
if (nb > sizeof(u))
|
||||
return -EINVAL;
|
||||
if (!address_ok(regs, ea, nb))
|
||||
return -EFAULT;
|
||||
rn = op->reg;
|
||||
|
|
@ -563,6 +567,9 @@ static nokprobe_inline int do_vec_load(int rn, unsigned long ea,
|
|||
u8 b[sizeof(__vector128)];
|
||||
} u = {};
|
||||
|
||||
if (size > sizeof(u))
|
||||
return -EINVAL;
|
||||
|
||||
if (!address_ok(regs, ea & ~0xfUL, 16))
|
||||
return -EFAULT;
|
||||
/* align to multiple of size */
|
||||
|
|
@ -590,6 +597,9 @@ static nokprobe_inline int do_vec_store(int rn, unsigned long ea,
|
|||
u8 b[sizeof(__vector128)];
|
||||
} u;
|
||||
|
||||
if (size > sizeof(u))
|
||||
return -EINVAL;
|
||||
|
||||
if (!address_ok(regs, ea & ~0xfUL, 16))
|
||||
return -EFAULT;
|
||||
/* align to multiple of size */
|
||||
|
|
|
|||
|
|
@ -442,6 +442,7 @@ void ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr,
|
|||
set_pte_at(vma->vm_mm, addr, ptep, pte);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
||||
/*
|
||||
* For hash translation mode, we use the deposited table to store hash slot
|
||||
* information and they are stored at PTRS_PER_PMD offset from related pmd
|
||||
|
|
@ -463,6 +464,7 @@ int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl,
|
|||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Does the CPU support tlbie?
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ void pgtable_cache_add(unsigned int shift)
|
|||
* as to leave enough 0 bits in the address to contain it. */
|
||||
unsigned long minalign = max(MAX_PGTABLE_INDEX_SIZE + 1,
|
||||
HUGEPD_SHIFT_MASK + 1);
|
||||
struct kmem_cache *new;
|
||||
struct kmem_cache *new = NULL;
|
||||
|
||||
/* It would be nice if this was a BUILD_BUG_ON(), but at the
|
||||
* moment, gcc doesn't seem to recognize is_power_of_2 as a
|
||||
|
|
@ -117,7 +117,8 @@ void pgtable_cache_add(unsigned int shift)
|
|||
|
||||
align = max_t(unsigned long, align, minalign);
|
||||
name = kasprintf(GFP_KERNEL, "pgtable-2^%d", shift);
|
||||
new = kmem_cache_create(name, table_size, align, 0, ctor(shift));
|
||||
if (name)
|
||||
new = kmem_cache_create(name, table_size, align, 0, ctor(shift));
|
||||
if (!new)
|
||||
panic("Could not allocate pgtable cache for order %d", shift);
|
||||
|
||||
|
|
|
|||
|
|
@ -153,6 +153,20 @@ static unsigned long single_gpci_request(u32 req, u32 starting_index,
|
|||
|
||||
ret = plpar_hcall_norets(H_GET_PERF_COUNTER_INFO,
|
||||
virt_to_phys(arg), HGPCI_REQ_BUFFER_SIZE);
|
||||
|
||||
/*
|
||||
* ret value as 'H_PARAMETER' with detail_rc as 'GEN_BUF_TOO_SMALL',
|
||||
* specifies that the current buffer size cannot accommodate
|
||||
* all the information and a partial buffer returned.
|
||||
* Since in this function we are only accessing data for a given starting index,
|
||||
* we don't need to accommodate whole data and can get required count by
|
||||
* accessing first entry data.
|
||||
* Hence hcall fails only incase the ret value is other than H_SUCCESS or
|
||||
* H_PARAMETER with detail_rc value as GEN_BUF_TOO_SMALL(0x1B).
|
||||
*/
|
||||
if (ret == H_PARAMETER && be32_to_cpu(arg->params.detail_rc) == 0x1B)
|
||||
ret = 0;
|
||||
|
||||
if (ret) {
|
||||
pr_devel("hcall failed: 0x%lx\n", ret);
|
||||
goto out;
|
||||
|
|
@ -217,6 +231,7 @@ static int h_gpci_event_init(struct perf_event *event)
|
|||
{
|
||||
u64 count;
|
||||
u8 length;
|
||||
unsigned long ret;
|
||||
|
||||
/* Not our event */
|
||||
if (event->attr.type != event->pmu->type)
|
||||
|
|
@ -247,13 +262,23 @@ static int h_gpci_event_init(struct perf_event *event)
|
|||
}
|
||||
|
||||
/* check if the request works... */
|
||||
if (single_gpci_request(event_get_request(event),
|
||||
ret = single_gpci_request(event_get_request(event),
|
||||
event_get_starting_index(event),
|
||||
event_get_secondary_index(event),
|
||||
event_get_counter_info_version(event),
|
||||
event_get_offset(event),
|
||||
length,
|
||||
&count)) {
|
||||
&count);
|
||||
|
||||
/*
|
||||
* ret value as H_AUTHORITY implies that partition is not permitted to retrieve
|
||||
* performance information, and required to set
|
||||
* "Enable Performance Information Collection" option.
|
||||
*/
|
||||
if (ret == H_AUTHORITY)
|
||||
return -EPERM;
|
||||
|
||||
if (ret) {
|
||||
pr_devel("gpci hcall failed\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,9 +97,6 @@ static void __init linkstation_init_IRQ(void)
|
|||
mpic_init(mpic);
|
||||
}
|
||||
|
||||
extern void avr_uart_configure(void);
|
||||
extern void avr_uart_send(const char);
|
||||
|
||||
static void __noreturn linkstation_restart(char *cmd)
|
||||
{
|
||||
local_irq_disable();
|
||||
|
|
|
|||
|
|
@ -156,4 +156,7 @@ int mpc10x_disable_store_gathering(struct pci_controller *hose);
|
|||
/* For MPC107 boards that use the built-in openpic */
|
||||
void mpc10x_set_openpic(void);
|
||||
|
||||
void avr_uart_configure(void);
|
||||
void avr_uart_send(const char c);
|
||||
|
||||
#endif /* __PPC_KERNEL_MPC10X_H */
|
||||
|
|
|
|||
|
|
@ -1542,6 +1542,7 @@ ENDPROC(cleanup_critical)
|
|||
.quad .Lsie_skip - .Lsie_entry
|
||||
#endif
|
||||
.section .rodata, "a"
|
||||
.balign 8
|
||||
#define SYSCALL(esame,emu) .quad __s390x_ ## esame
|
||||
.globl sys_call_table
|
||||
sys_call_table:
|
||||
|
|
|
|||
|
|
@ -413,6 +413,7 @@ static int __poke_user(struct task_struct *child, addr_t addr, addr_t data)
|
|||
/*
|
||||
* floating point control reg. is in the thread structure
|
||||
*/
|
||||
save_fpu_regs();
|
||||
if ((unsigned int) data != 0 ||
|
||||
test_fp_ctl(data >> (BITS_PER_LONG - 32)))
|
||||
return -EINVAL;
|
||||
|
|
@ -773,6 +774,7 @@ static int __poke_user_compat(struct task_struct *child,
|
|||
/*
|
||||
* floating point control reg. is in the thread structure
|
||||
*/
|
||||
save_fpu_regs();
|
||||
if (test_fp_ctl(tmp))
|
||||
return -EINVAL;
|
||||
child->thread.fpu.fpc = data;
|
||||
|
|
@ -1006,9 +1008,7 @@ static int s390_fpregs_set(struct task_struct *target,
|
|||
int rc = 0;
|
||||
freg_t fprs[__NUM_FPRS];
|
||||
|
||||
if (target == current)
|
||||
save_fpu_regs();
|
||||
|
||||
save_fpu_regs();
|
||||
if (MACHINE_HAS_VX)
|
||||
convert_vx_to_fp(fprs, target->thread.fpu.vxrs);
|
||||
else
|
||||
|
|
|
|||
|
|
@ -214,13 +214,13 @@ void vtime_flush(struct task_struct *tsk)
|
|||
virt_timer_expire();
|
||||
|
||||
steal = S390_lowcore.steal_timer;
|
||||
avg_steal = S390_lowcore.avg_steal_timer / 2;
|
||||
avg_steal = S390_lowcore.avg_steal_timer;
|
||||
if ((s64) steal > 0) {
|
||||
S390_lowcore.steal_timer = 0;
|
||||
account_steal_time(cputime_to_nsecs(steal));
|
||||
avg_steal += steal;
|
||||
}
|
||||
S390_lowcore.avg_steal_timer = avg_steal;
|
||||
S390_lowcore.avg_steal_timer = avg_steal / 2;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -3348,10 +3348,6 @@ int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
|
|||
|
||||
vcpu_load(vcpu);
|
||||
|
||||
if (test_fp_ctl(fpu->fpc)) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
vcpu->run->s.regs.fpc = fpu->fpc;
|
||||
if (MACHINE_HAS_VX)
|
||||
convert_fp_to_vx((__vector128 *) vcpu->run->s.regs.vrs,
|
||||
|
|
@ -3359,7 +3355,6 @@ int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
|
|||
else
|
||||
memcpy(vcpu->run->s.regs.fprs, &fpu->fprs, sizeof(fpu->fprs));
|
||||
|
||||
out:
|
||||
vcpu_put(vcpu);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ resource_size_t pcibios_align_resource(void *data, const struct resource *res,
|
|||
/* combine single writes by using store-block insn */
|
||||
void __iowrite64_copy(void __iomem *to, const void *from, size_t count)
|
||||
{
|
||||
zpci_memcpy_toio(to, from, count);
|
||||
zpci_memcpy_toio(to, from, count * 8);
|
||||
}
|
||||
|
||||
void __iomem *ioremap(unsigned long ioaddr, unsigned long size)
|
||||
|
|
|
|||
|
|
@ -696,7 +696,7 @@ err1:
|
|||
return err;
|
||||
}
|
||||
|
||||
static const struct of_device_id grpci1_of_match[] __initconst = {
|
||||
static const struct of_device_id grpci1_of_match[] = {
|
||||
{
|
||||
.name = "GAISLER_PCIFBRG",
|
||||
},
|
||||
|
|
|
|||
|
|
@ -887,7 +887,7 @@ err1:
|
|||
return err;
|
||||
}
|
||||
|
||||
static const struct of_device_id grpci2_of_match[] __initconst = {
|
||||
static const struct of_device_id grpci2_of_match[] = {
|
||||
{
|
||||
.name = "GAISLER_GRPCI2",
|
||||
},
|
||||
|
|
|
|||
|
|
@ -274,7 +274,7 @@ static int __init setup_nmi_watchdog(char *str)
|
|||
if (!strncmp(str, "panic", 5))
|
||||
panic_on_timeout = 1;
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("nmi_watchdog=", setup_nmi_watchdog);
|
||||
|
||||
|
|
|
|||
|
|
@ -449,9 +449,8 @@ static __init int vdso_setup(char *s)
|
|||
unsigned long val;
|
||||
|
||||
err = kstrtoul(s, 10, &val);
|
||||
if (err)
|
||||
return err;
|
||||
vdso_enabled = val;
|
||||
return 0;
|
||||
if (!err)
|
||||
vdso_enabled = val;
|
||||
return 1;
|
||||
}
|
||||
__setup("vdso=", vdso_setup);
|
||||
|
|
|
|||
|
|
@ -85,6 +85,19 @@ config LD_SCRIPT_DYN
|
|||
depends on !LD_SCRIPT_STATIC
|
||||
select MODULE_REL_CRCS if MODVERSIONS
|
||||
|
||||
config LD_SCRIPT_DYN_RPATH
|
||||
bool "set rpath in the binary" if EXPERT
|
||||
default y
|
||||
depends on LD_SCRIPT_DYN
|
||||
help
|
||||
Add /lib (and /lib64 for 64-bit) to the linux binary's rpath
|
||||
explicitly.
|
||||
|
||||
You may need to turn this off if compiling for nix systems
|
||||
that have their libraries in random /nix directories and
|
||||
might otherwise unexpected use libraries from /lib or /lib64
|
||||
instead of the desired ones.
|
||||
|
||||
config HOSTFS
|
||||
tristate "Host filesystem"
|
||||
help
|
||||
|
|
|
|||
|
|
@ -118,7 +118,8 @@ archprepare:
|
|||
$(Q)$(MAKE) $(build)=$(HOST_DIR)/um include/generated/user_constants.h
|
||||
|
||||
LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static
|
||||
LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib $(call cc-option, -no-pie)
|
||||
LINK-$(CONFIG_LD_SCRIPT_DYN) += $(call cc-option, -no-pie)
|
||||
LINK-$(CONFIG_LD_SCRIPT_DYN_RPATH) += -Wl,-rpath,/lib
|
||||
|
||||
CFLAGS_NO_HARDENING := $(call cc-option, -fno-PIC,) $(call cc-option, -fno-pic,) \
|
||||
$(call cc-option, -fno-stack-protector,) \
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ static int uml_net_close(struct net_device *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int uml_net_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
static netdev_tx_t uml_net_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
{
|
||||
struct uml_net_private *lp = netdev_priv(dev);
|
||||
unsigned long flags;
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ extern void do_uml_exitcalls(void);
|
|||
* Are we disallowed to sleep? Used to choose between GFP_KERNEL and
|
||||
* GFP_ATOMIC.
|
||||
*/
|
||||
extern int __cant_sleep(void);
|
||||
extern int __uml_cant_sleep(void);
|
||||
extern int get_current_pid(void);
|
||||
extern int copy_from_user_proc(void *to, void *from, int size);
|
||||
extern int cpu(void);
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ void arch_cpu_idle(void)
|
|||
local_irq_enable();
|
||||
}
|
||||
|
||||
int __cant_sleep(void) {
|
||||
int __uml_cant_sleep(void) {
|
||||
return in_atomic() || irqs_disabled() || in_interrupt();
|
||||
/* Is in_interrupt() really needed? */
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ int run_helper(void (*pre_exec)(void *), void *pre_data, char **argv)
|
|||
unsigned long stack, sp;
|
||||
int pid, fds[2], ret, n;
|
||||
|
||||
stack = alloc_stack(0, __cant_sleep());
|
||||
stack = alloc_stack(0, __uml_cant_sleep());
|
||||
if (stack == 0)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
@ -69,7 +69,7 @@ int run_helper(void (*pre_exec)(void *), void *pre_data, char **argv)
|
|||
data.pre_data = pre_data;
|
||||
data.argv = argv;
|
||||
data.fd = fds[1];
|
||||
data.buf = __cant_sleep() ? uml_kmalloc(PATH_MAX, UM_GFP_ATOMIC) :
|
||||
data.buf = __uml_cant_sleep() ? uml_kmalloc(PATH_MAX, UM_GFP_ATOMIC) :
|
||||
uml_kmalloc(PATH_MAX, UM_GFP_KERNEL);
|
||||
pid = clone(helper_child, (void *) sp, CLONE_VM, &data);
|
||||
if (pid < 0) {
|
||||
|
|
@ -116,7 +116,7 @@ int run_helper_thread(int (*proc)(void *), void *arg, unsigned int flags,
|
|||
unsigned long stack, sp;
|
||||
int pid, status, err;
|
||||
|
||||
stack = alloc_stack(0, __cant_sleep());
|
||||
stack = alloc_stack(0, __uml_cant_sleep());
|
||||
if (stack == 0)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
|
|||
|
|
@ -166,23 +166,38 @@ __uml_setup("quiet", quiet_cmd_param,
|
|||
"quiet\n"
|
||||
" Turns off information messages during boot.\n\n");
|
||||
|
||||
/*
|
||||
* The os_info/os_warn functions will be called by helper threads. These
|
||||
* have a very limited stack size and using the libc formatting functions
|
||||
* may overflow the stack.
|
||||
* So pull in the kernel vscnprintf and use that instead with a fixed
|
||||
* on-stack buffer.
|
||||
*/
|
||||
int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
|
||||
|
||||
void os_info(const char *fmt, ...)
|
||||
{
|
||||
char buf[256];
|
||||
va_list list;
|
||||
int len;
|
||||
|
||||
if (quiet_info)
|
||||
return;
|
||||
|
||||
va_start(list, fmt);
|
||||
vfprintf(stderr, fmt, list);
|
||||
len = vscnprintf(buf, sizeof(buf), fmt, list);
|
||||
fwrite(buf, len, 1, stderr);
|
||||
va_end(list);
|
||||
}
|
||||
|
||||
void os_warn(const char *fmt, ...)
|
||||
{
|
||||
char buf[256];
|
||||
va_list list;
|
||||
int len;
|
||||
|
||||
va_start(list, fmt);
|
||||
vfprintf(stderr, fmt, list);
|
||||
len = vscnprintf(buf, sizeof(buf), fmt, list);
|
||||
fwrite(buf, len, 1, stderr);
|
||||
va_end(list);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -372,7 +372,7 @@ config X86_CMOV
|
|||
config X86_MINIMUM_CPU_FAMILY
|
||||
int
|
||||
default "64" if X86_64
|
||||
default "6" if X86_32 && (MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MEFFICEON || MATOM || MCRUSOE || MCORE2 || MK7 || MK8)
|
||||
default "6" if X86_32 && (MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MEFFICEON || MATOM || MCORE2 || MK7 || MK8)
|
||||
default "5" if X86_32 && X86_CMPXCHG64
|
||||
default "4"
|
||||
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ ELF_FORMAT := elf64-x86-64
|
|||
|
||||
# Not on all 64-bit distros /lib is a symlink to /lib64. PLD is an example.
|
||||
|
||||
LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib64
|
||||
LINK-$(CONFIG_LD_SCRIPT_DYN_RPATH) += -Wl,-rpath,/lib64
|
||||
LINK-y += -m64
|
||||
|
||||
endif
|
||||
|
|
|
|||
|
|
@ -92,8 +92,9 @@ extern const char * const x86_bug_flags[NBUGINTS*32];
|
|||
CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 18, feature_bit) || \
|
||||
CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 19, feature_bit) || \
|
||||
CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 20, feature_bit) || \
|
||||
CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 21, feature_bit) || \
|
||||
REQUIRED_MASK_CHECK || \
|
||||
BUILD_BUG_ON_ZERO(NCAPINTS != 21))
|
||||
BUILD_BUG_ON_ZERO(NCAPINTS != 22))
|
||||
|
||||
#define DISABLED_MASK_BIT_SET(feature_bit) \
|
||||
( CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 0, feature_bit) || \
|
||||
|
|
@ -117,8 +118,9 @@ extern const char * const x86_bug_flags[NBUGINTS*32];
|
|||
CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 18, feature_bit) || \
|
||||
CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 19, feature_bit) || \
|
||||
CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 20, feature_bit) || \
|
||||
CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 21, feature_bit) || \
|
||||
DISABLED_MASK_CHECK || \
|
||||
BUILD_BUG_ON_ZERO(NCAPINTS != 21))
|
||||
BUILD_BUG_ON_ZERO(NCAPINTS != 22))
|
||||
|
||||
#define cpu_has(c, bit) \
|
||||
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
/*
|
||||
* Defines x86 CPU feature bits
|
||||
*/
|
||||
#define NCAPINTS 21 /* N 32-bit words worth of info */
|
||||
#define NCAPINTS 22 /* N 32-bit words worth of info */
|
||||
#define NBUGINTS 2 /* N 32-bit bug flags */
|
||||
|
||||
/*
|
||||
|
|
@ -382,6 +382,8 @@
|
|||
#define X86_FEATURE_SEV_ES (19*32+ 3) /* AMD Secure Encrypted Virtualization - Encrypted State */
|
||||
#define X86_FEATURE_SME_COHERENT (19*32+10) /* "" AMD hardware-enforced cache coherency */
|
||||
|
||||
#define X86_FEATURE_AUTOIBRS (20*32+ 8) /* "" Automatic IBRS */
|
||||
|
||||
/*
|
||||
* BUG word(s)
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@
|
|||
#define DISABLED_MASK18 0
|
||||
#define DISABLED_MASK19 0
|
||||
#define DISABLED_MASK20 0
|
||||
#define DISABLED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 21)
|
||||
#define DISABLED_MASK21 0
|
||||
#define DISABLED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 22)
|
||||
|
||||
#endif /* _ASM_X86_DISABLED_FEATURES_H */
|
||||
|
|
|
|||
|
|
@ -379,6 +379,15 @@ static inline temp_mm_state_t use_temporary_mm(struct mm_struct *mm)
|
|||
temp_mm_state_t temp_state;
|
||||
|
||||
lockdep_assert_irqs_disabled();
|
||||
|
||||
/*
|
||||
* Make sure not to be in TLB lazy mode, as otherwise we'll end up
|
||||
* with a stale address space WITHOUT being in lazy mode after
|
||||
* restoring the previous mm.
|
||||
*/
|
||||
if (this_cpu_read(cpu_tlbstate.is_lazy))
|
||||
leave_mm(smp_processor_id());
|
||||
|
||||
temp_state.mm = this_cpu_read(cpu_tlbstate.loaded_mm);
|
||||
switch_mm_irqs_off(NULL, mm, current);
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
#define _EFER_SVME 12 /* Enable virtualization */
|
||||
#define _EFER_LMSLE 13 /* Long Mode Segment Limit Enable */
|
||||
#define _EFER_FFXSR 14 /* Enable Fast FXSAVE/FXRSTOR */
|
||||
#define _EFER_AUTOIBRS 21 /* Enable Automatic IBRS */
|
||||
|
||||
#define EFER_SCE (1<<_EFER_SCE)
|
||||
#define EFER_LME (1<<_EFER_LME)
|
||||
|
|
@ -38,6 +39,7 @@
|
|||
#define EFER_SVME (1<<_EFER_SVME)
|
||||
#define EFER_LMSLE (1<<_EFER_LMSLE)
|
||||
#define EFER_FFXSR (1<<_EFER_FFXSR)
|
||||
#define EFER_AUTOIBRS (1<<_EFER_AUTOIBRS)
|
||||
|
||||
/* Intel MSRs. Some also available on other CPUs */
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@
|
|||
#include <asm/unwind_hints.h>
|
||||
#include <asm/percpu.h>
|
||||
|
||||
#include <linux/frame.h>
|
||||
#include <asm/unwind_hints.h>
|
||||
/*
|
||||
* This should be used immediately before a retpoline alternative. It tells
|
||||
* objtool where the retpolines are so that it can make sense of the control
|
||||
|
|
@ -51,14 +53,18 @@
|
|||
#define __FILL_RETURN_BUFFER(reg, nr, sp) \
|
||||
mov $(nr/2), reg; \
|
||||
771: \
|
||||
ANNOTATE_INTRA_FUNCTION_CALL; \
|
||||
call 772f; \
|
||||
773: /* speculation trap */ \
|
||||
UNWIND_HINT_EMPTY; \
|
||||
pause; \
|
||||
lfence; \
|
||||
jmp 773b; \
|
||||
772: \
|
||||
ANNOTATE_INTRA_FUNCTION_CALL; \
|
||||
call 774f; \
|
||||
775: /* speculation trap */ \
|
||||
UNWIND_HINT_EMPTY; \
|
||||
pause; \
|
||||
lfence; \
|
||||
jmp 775b; \
|
||||
|
|
@ -152,6 +158,7 @@
|
|||
.endm
|
||||
|
||||
.macro ISSUE_UNBALANCED_RET_GUARD
|
||||
ANNOTATE_INTRA_FUNCTION_CALL;
|
||||
call .Lunbalanced_ret_guard_\@
|
||||
int3
|
||||
.Lunbalanced_ret_guard_\@:
|
||||
|
|
|
|||
|
|
@ -103,6 +103,7 @@
|
|||
#define REQUIRED_MASK18 0
|
||||
#define REQUIRED_MASK19 0
|
||||
#define REQUIRED_MASK20 0
|
||||
#define REQUIRED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 21)
|
||||
#define REQUIRED_MASK21 0
|
||||
#define REQUIRED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 22)
|
||||
|
||||
#endif /* _ASM_X86_REQUIRED_FEATURES_H */
|
||||
|
|
|
|||
|
|
@ -14,12 +14,29 @@ struct pt_regs;
|
|||
,,regs->di,,regs->si,,regs->dx \
|
||||
,,regs->r10,,regs->r8,,regs->r9) \
|
||||
|
||||
|
||||
/* SYSCALL_PT_ARGS is Adapted from s390x */
|
||||
#define SYSCALL_PT_ARG6(m, t1, t2, t3, t4, t5, t6) \
|
||||
SYSCALL_PT_ARG5(m, t1, t2, t3, t4, t5), m(t6, (regs->bp))
|
||||
#define SYSCALL_PT_ARG5(m, t1, t2, t3, t4, t5) \
|
||||
SYSCALL_PT_ARG4(m, t1, t2, t3, t4), m(t5, (regs->di))
|
||||
#define SYSCALL_PT_ARG4(m, t1, t2, t3, t4) \
|
||||
SYSCALL_PT_ARG3(m, t1, t2, t3), m(t4, (regs->si))
|
||||
#define SYSCALL_PT_ARG3(m, t1, t2, t3) \
|
||||
SYSCALL_PT_ARG2(m, t1, t2), m(t3, (regs->dx))
|
||||
#define SYSCALL_PT_ARG2(m, t1, t2) \
|
||||
SYSCALL_PT_ARG1(m, t1), m(t2, (regs->cx))
|
||||
#define SYSCALL_PT_ARG1(m, t1) m(t1, (regs->bx))
|
||||
#define SYSCALL_PT_ARGS(x, ...) SYSCALL_PT_ARG##x(__VA_ARGS__)
|
||||
|
||||
#define __SC_COMPAT_CAST(t, a) \
|
||||
(__typeof(__builtin_choose_expr(__TYPE_IS_L(t), 0, 0U))) \
|
||||
(unsigned int)a
|
||||
|
||||
/* Mapping of registers to parameters for syscalls on i386 */
|
||||
#define SC_IA32_REGS_TO_ARGS(x, ...) \
|
||||
__MAP(x,__SC_ARGS \
|
||||
,,(unsigned int)regs->bx,,(unsigned int)regs->cx \
|
||||
,,(unsigned int)regs->dx,,(unsigned int)regs->si \
|
||||
,,(unsigned int)regs->di,,(unsigned int)regs->bp)
|
||||
SYSCALL_PT_ARGS(x, __SC_COMPAT_CAST, \
|
||||
__MAP(x, __SC_TYPE, __VA_ARGS__)) \
|
||||
|
||||
#ifdef CONFIG_IA32_EMULATION
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@
|
|||
".popsection\n\t"
|
||||
|
||||
#define UNWIND_HINT_SAVE UNWIND_HINT(0, 0, UNWIND_HINT_TYPE_SAVE, 0)
|
||||
|
||||
#define UNWIND_HINT_EMPTY
|
||||
#define UNWIND_HINT_RESTORE UNWIND_HINT(0, 0, UNWIND_HINT_TYPE_RESTORE, 0)
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
|
|
|||
|
|
@ -374,6 +374,17 @@ void __init_or_module noinline apply_alternatives(struct alt_instr *start,
|
|||
u8 insn_buff[MAX_PATCH_LEN];
|
||||
|
||||
DPRINTK("alt table %px, -> %px", start, end);
|
||||
|
||||
/*
|
||||
* In the case CONFIG_X86_5LEVEL=y, KASAN_SHADOW_START is defined using
|
||||
* cpu_feature_enabled(X86_FEATURE_LA57) and is therefore patched here.
|
||||
* During the process, KASAN becomes confused seeing partial LA57
|
||||
* conversion and triggers a false-positive out-of-bound report.
|
||||
*
|
||||
* Disable KASAN until the patching is complete.
|
||||
*/
|
||||
kasan_disable_current();
|
||||
|
||||
/*
|
||||
* The scan order should be from start to end. A later scanned
|
||||
* alternative code can overwrite previously scanned alternative code.
|
||||
|
|
@ -434,6 +445,8 @@ void __init_or_module noinline apply_alternatives(struct alt_instr *start,
|
|||
|
||||
text_poke_early(instr, insn_buff, insn_buff_sz);
|
||||
}
|
||||
|
||||
kasan_enable_current();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
|
|
|
|||
|
|
@ -277,15 +277,6 @@ static void init_amd_k6(struct cpuinfo_x86 *c)
|
|||
return;
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
* Work around Erratum 1386. The XSAVES instruction malfunctions in
|
||||
* certain circumstances on Zen1/2 uarch, and not all parts have had
|
||||
* updated microcode at the time of writing (March 2023).
|
||||
*
|
||||
* Affected parts all have no supervisor XSAVE states, meaning that
|
||||
* the XSAVEC instruction (which works fine) is equivalent.
|
||||
*/
|
||||
clear_cpu_cap(c, X86_FEATURE_XSAVES);
|
||||
}
|
||||
|
||||
static void init_amd_k7(struct cpuinfo_x86 *c)
|
||||
|
|
@ -989,6 +980,17 @@ static void init_amd_zn(struct cpuinfo_x86 *c)
|
|||
if (c->x86 == 0x19 && !cpu_has(c, X86_FEATURE_BTC_NO))
|
||||
set_cpu_cap(c, X86_FEATURE_BTC_NO);
|
||||
}
|
||||
|
||||
/*
|
||||
* Work around Erratum 1386. The XSAVES instruction malfunctions in
|
||||
* certain circumstances on Zen1/2 uarch, and not all parts have had
|
||||
* updated microcode at the time of writing (March 2023).
|
||||
*
|
||||
* Affected parts all have no supervisor XSAVE states, meaning that
|
||||
* the XSAVEC instruction (which works fine) is equivalent.
|
||||
*/
|
||||
if (c->x86 == 0x17)
|
||||
clear_cpu_cap(c, X86_FEATURE_XSAVES);
|
||||
}
|
||||
|
||||
static bool cpu_has_zenbleed_microcode(void)
|
||||
|
|
@ -996,11 +998,11 @@ static bool cpu_has_zenbleed_microcode(void)
|
|||
u32 good_rev = 0;
|
||||
|
||||
switch (boot_cpu_data.x86_model) {
|
||||
case 0x30 ... 0x3f: good_rev = 0x0830107a; break;
|
||||
case 0x60 ... 0x67: good_rev = 0x0860010b; break;
|
||||
case 0x68 ... 0x6f: good_rev = 0x08608105; break;
|
||||
case 0x70 ... 0x7f: good_rev = 0x08701032; break;
|
||||
case 0xa0 ... 0xaf: good_rev = 0x08a00008; break;
|
||||
case 0x30 ... 0x3f: good_rev = 0x0830107b; break;
|
||||
case 0x60 ... 0x67: good_rev = 0x0860010c; break;
|
||||
case 0x68 ... 0x6f: good_rev = 0x08608107; break;
|
||||
case 0x70 ... 0x7f: good_rev = 0x08701033; break;
|
||||
case 0xa0 ... 0xaf: good_rev = 0x08a00009; break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -1153,19 +1153,21 @@ spectre_v2_user_select_mitigation(void)
|
|||
}
|
||||
|
||||
/*
|
||||
* If no STIBP, enhanced IBRS is enabled, or SMT impossible, STIBP
|
||||
* If no STIBP, Intel enhanced IBRS is enabled, or SMT impossible, STIBP
|
||||
* is not required.
|
||||
*
|
||||
* Enhanced IBRS also protects against cross-thread branch target
|
||||
* Intel's Enhanced IBRS also protects against cross-thread branch target
|
||||
* injection in user-mode as the IBRS bit remains always set which
|
||||
* implicitly enables cross-thread protections. However, in legacy IBRS
|
||||
* mode, the IBRS bit is set only on kernel entry and cleared on return
|
||||
* to userspace. This disables the implicit cross-thread protection,
|
||||
* so allow for STIBP to be selected in that case.
|
||||
* to userspace. AMD Automatic IBRS also does not protect userspace.
|
||||
* These modes therefore disable the implicit cross-thread protection,
|
||||
* so allow for STIBP to be selected in those cases.
|
||||
*/
|
||||
if (!boot_cpu_has(X86_FEATURE_STIBP) ||
|
||||
!smt_possible ||
|
||||
spectre_v2_in_eibrs_mode(spectre_v2_enabled))
|
||||
(spectre_v2_in_eibrs_mode(spectre_v2_enabled) &&
|
||||
!boot_cpu_has(X86_FEATURE_AUTOIBRS)))
|
||||
return;
|
||||
|
||||
/*
|
||||
|
|
@ -1187,9 +1189,9 @@ static const char * const spectre_v2_strings[] = {
|
|||
[SPECTRE_V2_NONE] = "Vulnerable",
|
||||
[SPECTRE_V2_RETPOLINE] = "Mitigation: Retpolines",
|
||||
[SPECTRE_V2_LFENCE] = "Mitigation: LFENCE",
|
||||
[SPECTRE_V2_EIBRS] = "Mitigation: Enhanced IBRS",
|
||||
[SPECTRE_V2_EIBRS_LFENCE] = "Mitigation: Enhanced IBRS + LFENCE",
|
||||
[SPECTRE_V2_EIBRS_RETPOLINE] = "Mitigation: Enhanced IBRS + Retpolines",
|
||||
[SPECTRE_V2_EIBRS] = "Mitigation: Enhanced / Automatic IBRS",
|
||||
[SPECTRE_V2_EIBRS_LFENCE] = "Mitigation: Enhanced / Automatic IBRS + LFENCE",
|
||||
[SPECTRE_V2_EIBRS_RETPOLINE] = "Mitigation: Enhanced / Automatic IBRS + Retpolines",
|
||||
[SPECTRE_V2_IBRS] = "Mitigation: IBRS",
|
||||
};
|
||||
|
||||
|
|
@ -1258,7 +1260,7 @@ static enum spectre_v2_mitigation_cmd __init spectre_v2_parse_cmdline(void)
|
|||
cmd == SPECTRE_V2_CMD_EIBRS_LFENCE ||
|
||||
cmd == SPECTRE_V2_CMD_EIBRS_RETPOLINE) &&
|
||||
!boot_cpu_has(X86_FEATURE_IBRS_ENHANCED)) {
|
||||
pr_err("%s selected but CPU doesn't have eIBRS. Switching to AUTO select\n",
|
||||
pr_err("%s selected but CPU doesn't have Enhanced or Automatic IBRS. Switching to AUTO select\n",
|
||||
mitigation_options[i].option);
|
||||
return SPECTRE_V2_CMD_AUTO;
|
||||
}
|
||||
|
|
@ -1436,8 +1438,12 @@ static void __init spectre_v2_select_mitigation(void)
|
|||
pr_err(SPECTRE_V2_EIBRS_EBPF_MSG);
|
||||
|
||||
if (spectre_v2_in_ibrs_mode(mode)) {
|
||||
x86_spec_ctrl_base |= SPEC_CTRL_IBRS;
|
||||
update_spec_ctrl(x86_spec_ctrl_base);
|
||||
if (boot_cpu_has(X86_FEATURE_AUTOIBRS)) {
|
||||
msr_set_bit(MSR_EFER, _EFER_AUTOIBRS);
|
||||
} else {
|
||||
x86_spec_ctrl_base |= SPEC_CTRL_IBRS;
|
||||
update_spec_ctrl(x86_spec_ctrl_base);
|
||||
}
|
||||
}
|
||||
|
||||
switch (mode) {
|
||||
|
|
@ -1521,8 +1527,8 @@ static void __init spectre_v2_select_mitigation(void)
|
|||
/*
|
||||
* Retpoline protects the kernel, but doesn't protect firmware. IBRS
|
||||
* and Enhanced IBRS protect firmware too, so enable IBRS around
|
||||
* firmware calls only when IBRS / Enhanced IBRS aren't otherwise
|
||||
* enabled.
|
||||
* firmware calls only when IBRS / Enhanced / Automatic IBRS aren't
|
||||
* otherwise enabled.
|
||||
*
|
||||
* Use "mode" to check Enhanced IBRS instead of boot_cpu_has(), because
|
||||
* the user might select retpoline on the kernel command line and if
|
||||
|
|
@ -2144,69 +2150,69 @@ static const char * const l1tf_vmx_states[] = {
|
|||
static ssize_t l1tf_show_state(char *buf)
|
||||
{
|
||||
if (l1tf_vmx_mitigation == VMENTER_L1D_FLUSH_AUTO)
|
||||
return sprintf(buf, "%s\n", L1TF_DEFAULT_MSG);
|
||||
return sysfs_emit(buf, "%s\n", L1TF_DEFAULT_MSG);
|
||||
|
||||
if (l1tf_vmx_mitigation == VMENTER_L1D_FLUSH_EPT_DISABLED ||
|
||||
(l1tf_vmx_mitigation == VMENTER_L1D_FLUSH_NEVER &&
|
||||
sched_smt_active())) {
|
||||
return sprintf(buf, "%s; VMX: %s\n", L1TF_DEFAULT_MSG,
|
||||
l1tf_vmx_states[l1tf_vmx_mitigation]);
|
||||
return sysfs_emit(buf, "%s; VMX: %s\n", L1TF_DEFAULT_MSG,
|
||||
l1tf_vmx_states[l1tf_vmx_mitigation]);
|
||||
}
|
||||
|
||||
return sprintf(buf, "%s; VMX: %s, SMT %s\n", L1TF_DEFAULT_MSG,
|
||||
l1tf_vmx_states[l1tf_vmx_mitigation],
|
||||
sched_smt_active() ? "vulnerable" : "disabled");
|
||||
return sysfs_emit(buf, "%s; VMX: %s, SMT %s\n", L1TF_DEFAULT_MSG,
|
||||
l1tf_vmx_states[l1tf_vmx_mitigation],
|
||||
sched_smt_active() ? "vulnerable" : "disabled");
|
||||
}
|
||||
|
||||
static ssize_t itlb_multihit_show_state(char *buf)
|
||||
{
|
||||
if (itlb_multihit_kvm_mitigation)
|
||||
return sprintf(buf, "KVM: Mitigation: Split huge pages\n");
|
||||
return sysfs_emit(buf, "KVM: Mitigation: Split huge pages\n");
|
||||
else
|
||||
return sprintf(buf, "KVM: Vulnerable\n");
|
||||
return sysfs_emit(buf, "KVM: Vulnerable\n");
|
||||
}
|
||||
#else
|
||||
static ssize_t l1tf_show_state(char *buf)
|
||||
{
|
||||
return sprintf(buf, "%s\n", L1TF_DEFAULT_MSG);
|
||||
return sysfs_emit(buf, "%s\n", L1TF_DEFAULT_MSG);
|
||||
}
|
||||
|
||||
static ssize_t itlb_multihit_show_state(char *buf)
|
||||
{
|
||||
return sprintf(buf, "Processor vulnerable\n");
|
||||
return sysfs_emit(buf, "Processor vulnerable\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
static ssize_t mds_show_state(char *buf)
|
||||
{
|
||||
if (boot_cpu_has(X86_FEATURE_HYPERVISOR)) {
|
||||
return sprintf(buf, "%s; SMT Host state unknown\n",
|
||||
mds_strings[mds_mitigation]);
|
||||
return sysfs_emit(buf, "%s; SMT Host state unknown\n",
|
||||
mds_strings[mds_mitigation]);
|
||||
}
|
||||
|
||||
if (boot_cpu_has(X86_BUG_MSBDS_ONLY)) {
|
||||
return sprintf(buf, "%s; SMT %s\n", mds_strings[mds_mitigation],
|
||||
(mds_mitigation == MDS_MITIGATION_OFF ? "vulnerable" :
|
||||
sched_smt_active() ? "mitigated" : "disabled"));
|
||||
return sysfs_emit(buf, "%s; SMT %s\n", mds_strings[mds_mitigation],
|
||||
(mds_mitigation == MDS_MITIGATION_OFF ? "vulnerable" :
|
||||
sched_smt_active() ? "mitigated" : "disabled"));
|
||||
}
|
||||
|
||||
return sprintf(buf, "%s; SMT %s\n", mds_strings[mds_mitigation],
|
||||
sched_smt_active() ? "vulnerable" : "disabled");
|
||||
return sysfs_emit(buf, "%s; SMT %s\n", mds_strings[mds_mitigation],
|
||||
sched_smt_active() ? "vulnerable" : "disabled");
|
||||
}
|
||||
|
||||
static ssize_t tsx_async_abort_show_state(char *buf)
|
||||
{
|
||||
if ((taa_mitigation == TAA_MITIGATION_TSX_DISABLED) ||
|
||||
(taa_mitigation == TAA_MITIGATION_OFF))
|
||||
return sprintf(buf, "%s\n", taa_strings[taa_mitigation]);
|
||||
return sysfs_emit(buf, "%s\n", taa_strings[taa_mitigation]);
|
||||
|
||||
if (boot_cpu_has(X86_FEATURE_HYPERVISOR)) {
|
||||
return sprintf(buf, "%s; SMT Host state unknown\n",
|
||||
taa_strings[taa_mitigation]);
|
||||
return sysfs_emit(buf, "%s; SMT Host state unknown\n",
|
||||
taa_strings[taa_mitigation]);
|
||||
}
|
||||
|
||||
return sprintf(buf, "%s; SMT %s\n", taa_strings[taa_mitigation],
|
||||
sched_smt_active() ? "vulnerable" : "disabled");
|
||||
return sysfs_emit(buf, "%s; SMT %s\n", taa_strings[taa_mitigation],
|
||||
sched_smt_active() ? "vulnerable" : "disabled");
|
||||
}
|
||||
|
||||
static ssize_t mmio_stale_data_show_state(char *buf)
|
||||
|
|
@ -2228,7 +2234,8 @@ static ssize_t mmio_stale_data_show_state(char *buf)
|
|||
|
||||
static char *stibp_state(void)
|
||||
{
|
||||
if (spectre_v2_in_eibrs_mode(spectre_v2_enabled))
|
||||
if (spectre_v2_in_eibrs_mode(spectre_v2_enabled) &&
|
||||
!boot_cpu_has(X86_FEATURE_AUTOIBRS))
|
||||
return "";
|
||||
|
||||
switch (spectre_v2_user_stibp) {
|
||||
|
|
@ -2274,33 +2281,33 @@ static char *pbrsb_eibrs_state(void)
|
|||
static ssize_t spectre_v2_show_state(char *buf)
|
||||
{
|
||||
if (spectre_v2_enabled == SPECTRE_V2_LFENCE)
|
||||
return sprintf(buf, "Vulnerable: LFENCE\n");
|
||||
return sysfs_emit(buf, "Vulnerable: LFENCE\n");
|
||||
|
||||
if (spectre_v2_enabled == SPECTRE_V2_EIBRS && unprivileged_ebpf_enabled())
|
||||
return sprintf(buf, "Vulnerable: eIBRS with unprivileged eBPF\n");
|
||||
return sysfs_emit(buf, "Vulnerable: eIBRS with unprivileged eBPF\n");
|
||||
|
||||
if (sched_smt_active() && unprivileged_ebpf_enabled() &&
|
||||
spectre_v2_enabled == SPECTRE_V2_EIBRS_LFENCE)
|
||||
return sprintf(buf, "Vulnerable: eIBRS+LFENCE with unprivileged eBPF and SMT\n");
|
||||
return sysfs_emit(buf, "Vulnerable: eIBRS+LFENCE with unprivileged eBPF and SMT\n");
|
||||
|
||||
return sprintf(buf, "%s%s%s%s%s%s%s\n",
|
||||
spectre_v2_strings[spectre_v2_enabled],
|
||||
ibpb_state(),
|
||||
boot_cpu_has(X86_FEATURE_USE_IBRS_FW) ? ", IBRS_FW" : "",
|
||||
stibp_state(),
|
||||
boot_cpu_has(X86_FEATURE_RSB_CTXSW) ? ", RSB filling" : "",
|
||||
pbrsb_eibrs_state(),
|
||||
spectre_v2_module_string());
|
||||
return sysfs_emit(buf, "%s%s%s%s%s%s%s\n",
|
||||
spectre_v2_strings[spectre_v2_enabled],
|
||||
ibpb_state(),
|
||||
boot_cpu_has(X86_FEATURE_USE_IBRS_FW) ? ", IBRS_FW" : "",
|
||||
stibp_state(),
|
||||
boot_cpu_has(X86_FEATURE_RSB_CTXSW) ? ", RSB filling" : "",
|
||||
pbrsb_eibrs_state(),
|
||||
spectre_v2_module_string());
|
||||
}
|
||||
|
||||
static ssize_t srbds_show_state(char *buf)
|
||||
{
|
||||
return sprintf(buf, "%s\n", srbds_strings[srbds_mitigation]);
|
||||
return sysfs_emit(buf, "%s\n", srbds_strings[srbds_mitigation]);
|
||||
}
|
||||
|
||||
static ssize_t retbleed_show_state(char *buf)
|
||||
{
|
||||
return sprintf(buf, "%s\n", retbleed_strings[retbleed_mitigation]);
|
||||
return sysfs_emit(buf, "%s\n", retbleed_strings[retbleed_mitigation]);
|
||||
}
|
||||
|
||||
static ssize_t gds_show_state(char *buf)
|
||||
|
|
@ -2312,26 +2319,26 @@ static ssize_t cpu_show_common(struct device *dev, struct device_attribute *attr
|
|||
char *buf, unsigned int bug)
|
||||
{
|
||||
if (!boot_cpu_has_bug(bug))
|
||||
return sprintf(buf, "Not affected\n");
|
||||
return sysfs_emit(buf, "Not affected\n");
|
||||
|
||||
switch (bug) {
|
||||
case X86_BUG_CPU_MELTDOWN:
|
||||
if (boot_cpu_has(X86_FEATURE_PTI))
|
||||
return sprintf(buf, "Mitigation: PTI\n");
|
||||
return sysfs_emit(buf, "Mitigation: PTI\n");
|
||||
|
||||
if (hypervisor_is_type(X86_HYPER_XEN_PV))
|
||||
return sprintf(buf, "Unknown (XEN PV detected, hypervisor mitigation required)\n");
|
||||
return sysfs_emit(buf, "Unknown (XEN PV detected, hypervisor mitigation required)\n");
|
||||
|
||||
break;
|
||||
|
||||
case X86_BUG_SPECTRE_V1:
|
||||
return sprintf(buf, "%s\n", spectre_v1_strings[spectre_v1_mitigation]);
|
||||
return sysfs_emit(buf, "%s\n", spectre_v1_strings[spectre_v1_mitigation]);
|
||||
|
||||
case X86_BUG_SPECTRE_V2:
|
||||
return spectre_v2_show_state(buf);
|
||||
|
||||
case X86_BUG_SPEC_STORE_BYPASS:
|
||||
return sprintf(buf, "%s\n", ssb_strings[ssb_mode]);
|
||||
return sysfs_emit(buf, "%s\n", ssb_strings[ssb_mode]);
|
||||
|
||||
case X86_BUG_L1TF:
|
||||
if (boot_cpu_has(X86_FEATURE_L1TF_PTEINV))
|
||||
|
|
@ -2364,7 +2371,7 @@ static ssize_t cpu_show_common(struct device *dev, struct device_attribute *attr
|
|||
break;
|
||||
}
|
||||
|
||||
return sprintf(buf, "Vulnerable\n");
|
||||
return sysfs_emit(buf, "Vulnerable\n");
|
||||
}
|
||||
|
||||
ssize_t cpu_show_meltdown(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
|
|
|
|||
|
|
@ -1100,8 +1100,8 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = {
|
|||
VULNWL_AMD(0x12, NO_MELTDOWN | NO_SSB | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_MMIO),
|
||||
|
||||
/* FAMILY_ANY must be last, otherwise 0x0f - 0x12 matches won't work */
|
||||
VULNWL_AMD(X86_FAMILY_ANY, NO_MELTDOWN | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_MMIO),
|
||||
VULNWL_HYGON(X86_FAMILY_ANY, NO_MELTDOWN | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_MMIO),
|
||||
VULNWL_AMD(X86_FAMILY_ANY, NO_MELTDOWN | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_MMIO | NO_EIBRS_PBRSB),
|
||||
VULNWL_HYGON(X86_FAMILY_ANY, NO_MELTDOWN | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_MMIO | NO_EIBRS_PBRSB),
|
||||
|
||||
/* Zhaoxin Family 7 */
|
||||
VULNWL(CENTAUR, 7, X86_MODEL_ANY, NO_SPECTRE_V2 | NO_MMIO),
|
||||
|
|
@ -1220,8 +1220,16 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c)
|
|||
!cpu_has(c, X86_FEATURE_AMD_SSB_NO))
|
||||
setup_force_cpu_bug(X86_BUG_SPEC_STORE_BYPASS);
|
||||
|
||||
if (ia32_cap & ARCH_CAP_IBRS_ALL)
|
||||
/*
|
||||
* AMD's AutoIBRS is equivalent to Intel's eIBRS - use the Intel feature
|
||||
* flag and protect from vendor-specific bugs via the whitelist.
|
||||
*/
|
||||
if ((ia32_cap & ARCH_CAP_IBRS_ALL) || cpu_has(c, X86_FEATURE_AUTOIBRS)) {
|
||||
setup_force_cpu_cap(X86_FEATURE_IBRS_ENHANCED);
|
||||
if (!cpu_matches(cpu_vuln_whitelist, NO_EIBRS_PBRSB) &&
|
||||
!(ia32_cap & ARCH_CAP_PBRSB_NO))
|
||||
setup_force_cpu_bug(X86_BUG_EIBRS_PBRSB);
|
||||
}
|
||||
|
||||
if (!cpu_matches(cpu_vuln_whitelist, NO_MDS) &&
|
||||
!(ia32_cap & ARCH_CAP_MDS_NO)) {
|
||||
|
|
@ -1283,11 +1291,6 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c)
|
|||
setup_force_cpu_bug(X86_BUG_RETBLEED);
|
||||
}
|
||||
|
||||
if (cpu_has(c, X86_FEATURE_IBRS_ENHANCED) &&
|
||||
!cpu_matches(cpu_vuln_whitelist, NO_EIBRS_PBRSB) &&
|
||||
!(ia32_cap & ARCH_CAP_PBRSB_NO))
|
||||
setup_force_cpu_bug(X86_BUG_EIBRS_PBRSB);
|
||||
|
||||
/*
|
||||
* Check if CPU is vulnerable to GDS. If running in a virtual machine on
|
||||
* an affected processor, the VMM may have disabled the use of GATHER by
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue