Merge tag 'android11-5.4.274_r00' into branch 'android11-5.4'
This is the merge of the upstream 5.4.274 relelease into the android11-5.4 branch. Included in here are the following commits: *181edea14aRevert "timers: Rename del_timer_sync() to timer_delete_sync()" *46cf330263Merge 5.4.274 into android11-5.4-lts |\ | *0dbd436fb9Linux 5.4.274 | *fba9c24c19firmware: meson_sm: fix to avoid potential NULL pointer dereference | *35a5acfa7aip_gre: do not report erspan version on GRE interface | *61206032d6erspan: Check IFLA_GRE_ERSPAN_VER is set. | *7f12ecf453VMCI: Fix possible memcpy() run-time warning in vmci_datagram_invoke_guest_handler() | *d006b709dbBluetooth: btintel: Fixe build regression | *0bf9fd89bax86/alternative: Don't call text_poke() in lazy TLB mode | *67944e6db6drm/i915/gt: Reset queue_priority_hint on parking | *09e6bb5321x86/mm/pat: fix VM_PAT handling in COW mappings | *6e5da7d65bvirtio: reenable config if freezing device failed | *e7bda8f58bdrm/vkms: call drm_atomic_helper_shutdown before drm_dev_put() | *7a529c9023tty: n_gsm: require CAP_NET_ADMIN to attach N_GSM0710 ldisc | *9a3b90904dnetfilter: nf_tables: discard table flag update with pending basechain deletion | *61ac728434netfilter: nf_tables: release mutex after nft_gc_seq_end from abort path | *0a14e16239netfilter: nf_tables: release batch on table validation from abort path | *41bad13c0enetfilter: nf_tables: reject new basechain after table flag update | *72d091b751fbmon: prevent division by zero in fb_videomode_from_videomode() | *77f34b9af3fbdev: viafb: fix typo in hw_bitblt_1 and hw_bitblt_2 | *0eab73ffb6usb: sl811-hcd: only defined function checkdone if QUIRK2 is defined | *261a831427usb: typec: tcpci: add generic tcpci fallback compatible | *fcc68c952ctools: iio: replace seekdir() in iio_generic_buffer | *97832659b1ktest: force $buildonly = 1 for 'make_warnings_file' test type | *71de605098Input: allocate keycode for Display refresh rate toggle | *edd073c78dblock: prevent division by zero in blk_rq_stat_sum() | *73daab5b8cRevert "ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default" | *4256e1460eSUNRPC: increase size of rpc_wait_queue.qlen from unsigned short to unsigned int | *08a07d5a20drm/amd/display: Fix nanosec stat overflow | *4a35b778d0media: sta2x11: fix irq handler cast | *2c1f840469isofs: handle CDs with bad root inode but good Joliet root directory | *e2cd32435bscsi: lpfc: Fix possible memory leak in lpfc_rcv_padisc() | *1b4fe801b5sysv: don't call sb_bread() with pointers_lock held | *e04cae532aInput: synaptics-rmi4 - fail probing if memory allocation for "phys" fails | *68a69bb2ecBluetooth: btintel: Fix null ptr deref in btintel_read_version | *024529c27cbtrfs: send: handle path ref underflow in header iterate_inode_ref() | *a9252c8cfabtrfs: export: handle invalid inode or root reference in btrfs_get_parent() | *576164bd01btrfs: handle chunk tree lookup error in btrfs_relocate_sys_chunks() | *41aff62bf1tools/power x86_energy_perf_policy: Fix file leak in get_pkg_num() | *97ad3fc426ionic: set adminq irq affinity | *67611c11d7arm64: dts: rockchip: fix rk3399 hdmi ports node | *223145f838arm64: dts: rockchip: fix rk3328 hdmi ports node | *60d417f3e4panic: Flush kernel log buffer at the end | *f15eca9513VMCI: Fix memcpy() run-time warning in dg_dispatch_as_host() | *dec0f1b008wifi: ath9k: fix LNA selection in ath_ant_try_scan() | *485b5d1d6as390/entry: align system call table on 8 bytes | *976b1b2680x86/mce: Make sure to grab mce_sysfs_mutex in set_bank() | *039458c058ALSA: hda/realtek: Update Panasonic CF-SZ6 quirk to support headset with microphone | *fc4387dce4ata: sata_mv: Fix PCI device ID table declaration compilation warning | *0e9207b054scsi: mylex: Fix sysfs buffer lengths | *d887674f09ata: sata_sx4: fix pdc20621_get_from_dimm() on 64-bit | *517884404eASoC: ops: Fix wraparound for mask in snd_soc_get_volsw | *9c11271714net: ravb: Always process TX descriptor ring | *e54a0c79cderspan: make sure erspan_base_hdr is present in skb->head | *959fe471f1erspan: Add type I version 0 support. | *19d7e7c1eeinit: open /initrd.image with O_LARGEFILE | *32e34d96b3initramfs: switch initramfs unpacking to struct file based APIs | *13b2d81505fs: add a vfs_fchmod helper | *8eba8d1145fs: add a vfs_fchown helper | *9550632ba9staging: vc04_services: fix information leak in create_component() | *bbd974d444staging: vc04_services: changen strncpy() to strscpy_pad() | *d07aab3ca7staging: mmal-vchiq: Fix client_component for 64 bit kernel | *50bc5a96f8staging: mmal-vchiq: Allocate and free components as required | *9dcf0fcb80i40e: fix vf may be used uninitialized in this function warning | *9c52581961ipv6: Fix infinite recursion in fib6_dump_done(). | *73fac254ecselftests: reuseaddr_conflict: add missing new line at the end of the output | *2882bb3b91net: stmmac: fix rx queue priority assignment | *f356eb2fb5net/sched: act_skbmod: prevent kernel-infoleak | *f7990498b0bpf, sockmap: Prevent lock inversion deadlock in map delete elem | *a347bc8e62netfilter: nf_tables: Fix potential data-race in __nft_flowtable_type_get() | *f4e14695fenetfilter: nf_tables: flush pending destroy work before exit_net release | *ab81b3d2f3mm, vmscan: prevent infinite loop for costly GFP_NOIO | __GFP_RETRY_MAYFAIL allocations | *144c56d5ddRevert "x86/mm/ident_map: Use gbpages only where full GB page should be mapped." | *07afdfd8a6vfio/platform: Create persistent IRQ handlers | *b18fa894d6vfio/pci: Create persistent INTx handler | *3777fa4c8fvfio: Introduce interface to flush virqfd inject workqueue | *1e71b6449dvfio/pci: Lock external INTx masking ops | *26389925d6vfio/pci: Disable auto-enable of exclusive INTx IRQ | *bcd46782e2net/rds: fix possible cp null dereference | *49ce99ae43netfilter: nf_tables: disallow timeout for anonymous sets | *f5450973ebBluetooth: Fix TOCTOU in HCI debugfs implementation | *5c8b927293Bluetooth: hci_event: set the conn encrypted before conn establishes | *9d161e8af4x86/cpufeatures: Add new word for scattered features | *ff7a4adbd7r8169: fix issue caused by buggy BIOS on certain boards with RTL8168d | *e78f604693dm integrity: fix out-of-range warning | *44e62f5d35tcp: properly terminate timers for kernel sockets | *a4bb81d890ixgbe: avoid sleeping allocation in ixgbe_ipsec_vf_add_sa() | *03fe259649nfc: nci: Fix uninit-value in nci_dev_up and nci_ntf_packet | *12d6a5681aUSB: core: Fix deadlock in usb_deauthorize_interface() | *ea9a4fce2escsi: lpfc: Correct size for wqe for memset() | *fa24c1a49dx86/cpu: Enable STIBP on AMD if Automatic IBRS is enabled | *d7a68eee87scsi: qla2xxx: Fix command flush on cable pull | *68d951880dusb: udc: remove warning when queue disabled ep | *a79ac9f3dausb: dwc2: gadget: LPM flow fix | *693bbbccd9usb: dwc2: host: Fix ISOC flow in DDMA mode | *eb97df08c3usb: dwc2: host: Fix hibernation flow | *4cf44c9fa0usb: dwc2: host: Fix remote wakeup from hibernation | *0053f15d50scsi: core: Fix unremoved procfs host directory regression | *4206ad65a0ALSA: sh: aica: reorder cleanup operations to avoid UAF bugs | *3afdcc4e1ausb: cdc-wdm: close race between read and workqueue | *b9a7339ae4mmc: core: Avoid negative index with array access | *fd20d84baemmc: core: Initialize mmc_blk_ioc_data | *c7a9b1b777exec: Fix NOMMU linux_binprm::exec in transfer_args_to_stack() | *be1dd9254fwifi: mac80211: check/clear fast rx for non-4addr sta VLAN changes | *747d4ee747mm/migrate: set swap entry values of THP tail pages properly. | *7f75e937ecmm/memory-failure: fix an incorrect use of tail pages | *815be99d93vt: fix memory overlapping when deleting chars in the buffer | *d6077e0d38bounds: support non-power-of-two CONFIG_NR_CPUS | *282e4deafepowerpc: xor_vmx: Add '-mhard-float' to CFLAGS | *34b5d2ff9eefivarfs: Request at most 512 bytes for variable names | *37a65df6a9perf/core: Fix reentry problem in perf_output_read_group() | *861021710bloop: loop_set_status_from_info() check before assignment | *b40877b856loop: Check for overflow while configuring loop | *f4476da8ealoop: Factor out configuring loop from status | *7423a124faloop: Refactor loop_set_status() size calculation | *3c9e7e8cb6loop: Factor out setting loop device size | *e08b2e4176loop: Remove sector_t truncation checks | *ea3bec644aloop: Call loop_config_discard() only after new config is applied | *2ea7077748Revert "loop: Check for overflow while configuring loop" | *735e525d8cbtrfs: allocate btrfs_ioctl_defrag_range_args on stack | *501561d808printk: Update @console_may_schedule in console_trylock_spinning() | *9470f5b250xen/events: close evtchn after mapping cleanup | *03b19c7fa1x86/speculation: Support intra-function call validation | *f8f25fde0cobjtool: Add support for intra-function calls | *eafb29361aobjtool: is_fentry_call() crashes if call has no destination | *396dbbc189fs/aio: Check IOCB_AIO_RW before the struct aio_kiocb conversion | *ff7342090cvt: fix unicode buffer corruption when deleting characters | *741dee500ftty: serial: fsl_lpuart: avoid idle preamble pending if CTS is enabled | *d79cd5c29ausb: port: Don't try to peer unused USB ports based on location | *a766761d20usb: gadget: ncm: Fix handling of zero block length packets | *eb7b01ca77USB: usb-storage: Prevent divide-by-0 error in isd200_ata_command | *9e93b41109ALSA: hda/realtek - Fix headset Mic no show at resume back for Lenovo ALC897 platform | *57ae281a67xfrm: Avoid clang fortify warning in copy_to_user_tmpl() | *0920c618d2netfilter: nf_tables: reject constant set with timeout | *e9a0d3f376netfilter: nf_tables: disallow anonymous set with timeout flag | *edcf1a3f18netfilter: nf_tables: mark set as dead when unbinding anonymous set with timeout | *1ba8fdef88comedi: comedi_test: Prevent timers rescheduling during deletion | *e7d4cff57cdm snapshot: fix lockup in dm_exception_table_exit | *35ff8175d9ahci: asm1064: asm1166: don't limit reported ports | *86e248c2d6ahci: asm1064: correct count of reported ports | *89c4357725x86/CPU/AMD: Update the Zenbleed microcode revisions | *32eaee72e9nilfs2: prevent kernel bug at submit_bh_wbc() | *6503d76d91nilfs2: use a more common logging style | *9cbe1ad5f4nilfs2: fix failure to detect DAT corruption in btree and direct mappings | *f2cee08a69memtest: use {READ,WRITE}_ONCE in memory scanning | *673fb93c92drm/vc4: hdmi: do not return negative values from .get_modes() | *7ecbec89e4drm/imx/ipuv3: do not return negative values from .get_modes() | *348aa3d47edrm/exynos: do not return negative values from .get_modes() | *9daddee03ds390/zcrypt: fix reference counting on zcrypt card objects | *ff50716b7dsoc: fsl: qbman: Use raw spinlock for cgr_lock | *f248ecc186soc: fsl: qbman: Add CGR update function | *6e9629518csoc: fsl: qbman: Add helper for sanity checking cgr ops | *62c3ecd283soc: fsl: qbman: Always disable interrupts when taking cgr_lock | *3f91ba9653ring-buffer: Fix full_waiters_pending in poll | *f7578a3b7cring-buffer: Fix resetting of shortest_full | *b0beb669a8vfio/platform: Disable virqfds on cleanup | *b046ab1642kbuild: Move -Wenum-{compare-conditional,enum-conversion} into W=1 | *31722ed2c3speakup: Fix 8bit characters from direct synth | *b2b93a38d6slimbus: core: Remove usage of the deprecated ida_simple_xx() API | *aec74a14d1nvmem: meson-efuse: fix function pointer type mismatch | *525ae72d9ffirmware: meson_sm: Rework driver as a proper platform driver | *ee4e9c1976ext4: fix corruption during on-line resize | *1a560f1969hwmon: (amc6821) add of_match table | *d7bc1877c1mmc: core: Fix switch on gp3 partition | *24019e5ac6dm-raid: fix lockdep waring in "pers->hot_add_disk" | *0b949dc225Revert "Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d"" | *47d8aafcfePCI/PM: Drain runtime-idle callbacks before driver removal | *ec6f7c0807PCI: Drop pci_device_remove() test of pci_dev->driver | *287a9a9b6ebtrfs: fix off-by-one chunk length calculation at contains_pending_extent() | *ab95a42020fuse: don't unhash root | *c180d65df8mmc: tmio: avoid concurrent runs of mmc_request_done() | *2e94147e20PM: sleep: wakeirq: fix wake irq warning in system suspend | *bd140aef69USB: serial: cp210x: add pid/vid for TDK NC0110013M and MM0110113M | *b11cd74c31USB: serial: option: add MeiG Smart SLM320 product | *f5167c50afUSB: serial: cp210x: add ID for MGP Instruments PDS100 | *4fda3ad19dUSB: serial: add device ID for VeriFone adapter | *3f01bf964eUSB: serial: ftdi_sio: add support for GMC Z216C Adapter IR-USB | *4fc30a31e1powerpc/fsl: Fix mfpmr build errors with newer binutils | *86bf75d915clk: qcom: mmcc-msm8974: fix terminating of frequency table arrays | *b2dfb216f3clk: qcom: mmcc-apq8084: fix terminating of frequency table arrays | *83fe1bbd9eclk: qcom: gcc-ipq8074: fix terminating of frequency table arrays | *ddcd5ea7b2PM: suspend: Set mem_sleep_current during kernel command line setup | *42dcb0a374parisc: Strip upper 32 bit of sum in csum_ipv6_magic for 64-bit builds | *10e031fbe5parisc: Fix csum_ipv6_magic on 64-bit systems | *4dc4793c9dparisc: Fix csum_ipv6_magic on 32-bit systems | *89cb6c7169parisc: Fix ip_fast_csum | *331b43d79aparisc: Do not hardcode registers in checksum functions | *64a1ccfa9amtd: rawnand: meson: fix scrambling mode value in command macro | *a1d549aec8ubi: correct the calculation of fastmap size | *4e09d5210bubi: Check for too small LEB size in VTBL code | *778c6ad402ubifs: Set page uptodate in the correct place | *f52d7663a1fat: fix uninitialized field in nostale filehandles | *b224a3b8d3ext4: correct best extent lstart adjustment logic | *e8b25c7baeselftests/mqueue: Set timeout to 180 seconds | *8e81cd58aecrypto: qat - resolve race condition during AER recovery | *5a9f7e9123crypto: qat - fix double free during reset | *fca0c42c34sparc: vDSO: fix return value of __setup handler | *75159bcec2sparc64: NMI watchdog: fix return value of __setup handler | *82e25cc1c2KVM: Always flush async #PF workqueue when vCPU is being destroyed | *ce6e52cademedia: xc4000: Fix atomicity violation in xc4000_get_frequency | *7d271b798aserial: max310x: fix NULL pointer dereference in I2C instantiation | *d453dd485earm: dts: marvell: Fix maxium->maxim typo in brownstone dts | *36f6b76341ARM: dts: mmp2-brownstone: Don't redeclare phandle references | *60f9cecf6asmack: Handle SMACK64TRANSMUTE in smack_inode_setsecurity() | *cec55e30e3smack: Set SMACK64TRANSMUTE only for dirs in smack_inode_setxattr() | *9a353d80baclk: qcom: gcc-sdm845: Add soft dependency on rpmhpd | *a7923ececemedia: staging: ipu3-imgu: Set fields before media_entity_pads_init() | *8e3f03f4efwifi: brcmfmac: Fix use-after-free bug in brcmf_cfg80211_detach | *df4209170btimers: Rename del_timer_sync() to timer_delete_sync() | *ef5f71db1etimers: Use del_timer_sync() even on UP | *9ec9c420dbtimers: Update kernel-doc for various functions | *c513b79129x86/bugs: Use sysfs_emit() | *922bc61d8cx86/cpu: Support AMD Automatic IBRS | *d9caea5f1bDocumentation/hw-vuln: Update spectre doc | *8b05647042amdkfd: use calloc instead of kzalloc to avoid integer overflow * |ff7463a1e9Reapply "media: ttpci: fix two memleaks in budget_av_attach" * |7cc7098648Revert "media: rename VFL_TYPE_GRABBER to _VIDEO" * |b8c488bb24Revert "media: media/pci: rename VFL_TYPE_GRABBER to _VIDEO" * |be024bb2cdRevert "media: ttpci: fix two memleaks in budget_av_attach" * |d873f54a70Revert "net: ip_tunnel: make sure to pull inner header in ip_tunnel_rcv()" * |960240ce53Merge 5.4.273 into android11-5.4-lts |\| | *24489321d0Linux 5.4.273 | *b37f030486regmap: Add missing map->bus check | *55f8ea6731spi: spi-mt65xx: Fix NULL pointer access in interrupt handler | *59426454b8bpf: report RCU QS in cpumap kthread | *3ffe591b27rcu: add a helper to report consolidated flavor QS | *2531f907d3netfilter: nf_tables: do not compare internal table flags on updates | *71002d9eb1ARM: dts: sun8i-h2-plus-bananapi-m2-zero: add regulator nodes vcc-dram and vcc1v2 | *94cb17e5cfocteontx2-af: Use separate handlers for interrupts | *4f37d3a7e0net/bnx2x: Prevent access to a freed page in page_pool | *69f9f55891hsr: Handle failures in module init | *f781fb5177rds: introduce acquire/release ordering in acquire/release_in_xmit() | *84c510411epacket: annotate data-races around ignore_outgoing | *889ed056eahsr: Fix uninit-value access in hsr_get_node() | *48cef94b69s390/vtime: fix average steal time calculation | *305c31b970octeontx2-af: Use matching wake_up API variant in CGX command interface | *b63362b317usb: gadget: net2272: Use irqflags in the call to net2272_probe_fin | *254b27c4aestaging: greybus: fix get_channel_from_mode() failure path | *f6bf49e76fserial: 8250_exar: Don't remove GPIO device on suspend | *8dd52ab78frtc: mt6397: select IRQ_DOMAIN instead of depending on it | *ca6279d1a1kconfig: fix infinite loop when expanding a macro at the end of file | *a8cc354a81tty: serial: samsung: fix tx_empty() to return TIOCSER_TEMT | *f1c9a0c338serial: max310x: fix syntax error in IRQ error message | *bd2f4df259tty: vt: fix 20 vs 0x20 typo in EScsiignore | *854ebf45a4afs: Revert "afs: Hide silly-rename files from userspace" | *afcbba70bfNFS: Fix an off by one in root_nfs_cat() | *bcc3ec2bdbwatchdog: stm32_iwdg: initialize default timeout | *e95eeb7f7dnet: sunrpc: Fix an off by one in rpc_sockaddr2uaddr() | *3b8415daaascsi: bfa: Fix function pointer type mismatch for hcb_qe->cbfn | *2b38dbd7faRDMA/device: Fix a race between mad_client and cm_client init | *39b1af7bc9scsi: csiostor: Avoid function pointer casts | *6d5dc96b15ALSA: usb-audio: Stop parsing channels bits when all channels are found. | *d7ae7d1265clk: Fix clk_core_get NULL dereference | *a1129b0922sparc32: Fix section mismatch in leon_pci_grpci | *c8c038beb4backlight: lp8788: Fully initialize backlight_properties during probe | *8c351a9ef5backlight: lm3639: Fully initialize backlight_properties during probe | *12a0153f78backlight: da9052: Fully initialize backlight_properties during probe | *1c8d8c6b4ebacklight: lm3630a: Don't set bl->props.brightness in get_brightness | *40a89f1bc4backlight: lm3630a: Initialize backlight_properties on init | *bb9981f915powerpc/embedded6xx: Fix no previous prototype for avr_uart_send() etc. | *a6e96cc265drm/msm/dpu: add division of drm_display_mode's hskew parameter | *41eec45c71powerpc/hv-gpci: Fix the H_GET_PERF_COUNTER_INFO hcall return value checks | *dfde84cc6cdrm/mediatek: Fix a null pointer crash in mtk_drm_crtc_finish_page_flip | *af37aed049media: ttpci: fix two memleaks in budget_av_attach | *353f980a5dmedia: media/pci: rename VFL_TYPE_GRABBER to _VIDEO | *fa83fca55cmedia: rename VFL_TYPE_GRABBER to _VIDEO | *25f5765521media: v4l2-core: correctly validate video and metadata ioctls | *291cda0b80media: go7007: fix a memleak in go7007_load_encoder | *fa8b472952media: dvb-frontends: avoid stack overflow warnings with clang | *d29ed08964media: pvrusb2: fix uaf in pvr2_context_set_notify | *86c10c56f2drm/amdgpu: Fix missing break in ATOM_ARG_IMM Case of atom_get_src_int() | *23d57b99caASoC: meson: axg-tdm-interface: fix mclk setup without mclk-fs | *8df143c608mtd: rawnand: lpc32xx_mlc: fix irq handler prototype | *d9d4d1363bmtd: maps: physmap-core: fix flash size larger than 32-bit | *a8c73f0439crypto: arm/sha - fix function cast warnings | *4b6569e142mfd: altera-sysmgr: Call of_node_put() only when of_parse_phandle() takes a ref | *ac1170674dmfd: syscon: Call of_node_put() only when of_parse_phandle() takes a ref | *3472fa83d9drm/tegra: put drm_gem_object ref on error in tegra_fb_create | *f27aaaecf7clk: hisilicon: hi3519: Release the correct number of gates in hi3519_clk_unregister() | *44163c73b0PCI: Mark 3ware-9650SE Root Port Extended Tags as broken | *9b074f2ed1drm/mediatek: dsi: Fix DSI RGB666 formats and definitions | *2e1120e480clk: qcom: dispcc-sdm845: Adjust internal GDSC wait times | *d2f3c762bamedia: pvrusb2: fix pvr2_stream_callback casts | *e9d391cc70media: pvrusb2: remove redundant NULL check | *013fb50518media: go7007: add check of return value of go7007_read_addr() | *8c2e4efe12media: imx: csc/scaler: fix v4l2_ctrl_handler memory leak | *cf95808632perf stat: Avoid metric-only segv | *9e411c40bdALSA: seq: fix function cast warnings | *a0ae3335b3drm/radeon/ni: Fix wrong firmware size logging in ni_init_microcode() | *9df9108a91perf thread_map: Free strlist on normal path in thread_map__new_by_tid_str() | *79ab819393PCI: switchtec: Fix an error handling path in switchtec_pci_probe() | *00b07b4962quota: Fix rcu annotations of inode dquot pointers | *49669f8e7equota: Fix potential NULL pointer dereference | *ff29b5f9f0quota: simplify drop_dquot_ref() | *68435ffc1cclk: qcom: reset: Ensure write completion on reset de/assertion | *026d3984a1clk: qcom: reset: Commonize the de/assert functions | *48846ddc71clk: qcom: reset: support resetting multiple bits | *7f82802d47clk: qcom: reset: Allow specifying custom reset delay | *f20c3270f3media: edia: dvbdev: fix a use-after-free | *0175f2d34cmedia: v4l2-mem2mem: fix a memleak in v4l2_m2m_register_entity | *8269ab1641media: v4l2-tpg: fix some memleaks in tpg_alloc | *2e6892b2bemedia: em28xx: annotate unchecked call to media_device_register() | *639155da9bperf evsel: Fix duplicate initialization of data->id in evsel__parse_sample() | *e019d87e02drm/amd/display: Fix potential NULL pointer dereferences in 'dcn10_set_output_transfer_func()' | *1d4d674173perf record: Fix possible incorrect free in record__switch_output() | *adc8a91676PCI/DPC: Print all TLP Prefixes, not just the first | *daf21394f9media: tc358743: register v4l2 async device only after successful setup | *ba34d8a5aadmaengine: tegra210-adma: Update dependency to ARCH_TEGRA | *cc31a90eb7drm/rockchip: lvds: do not overwrite error code | *f1dfd026cddrm: Don't treat 0 as -1 in drm_fixp2int_ceil | *b061b28b66drm/rockchip: inno_hdmi: Fix video timing | *91dc47cd72drm/tegra: output: Fix missing i2c_put_adapter() in the error handling paths of tegra_output_probe() | *030d46f859drm/tegra: dsi: Fix missing pm_runtime_disable() in the error handling path of tegra_dsi_probe() | *b4cb57ec2cdrm/tegra: dsi: Fix some error handling paths in tegra_dsi_probe() | *e04e773fb8drm/tegra: dsi: Make use of the helper function dev_err_probe() | *85f28e98c5gpu: host1x: mipi: Update tegra_mipi_request() to be node based | *f05631a852drm/tegra: dsi: Add missing check for of_find_device_by_node | *da7ece2197dm: call the resume method on internal suspend | *6070692ea3dm raid: fix false positive for requeue needed during reshape | *3b1e8a617enfp: flower: handle acti_netdevs allocation failure | *e06f0d3f66net/x25: fix incorrect parameter validation in the x25_getsockopt() function | *26843eefcfnet: kcm: fix incorrect parameter validation in the kcm_getsockopt) function | *b9979cae62udp: fix incorrect parameter validation in the udp_lib_getsockopt() function | *1bd08e5314l2tp: fix incorrect parameter validation in the pppol2tp_getsockopt() function | *2e7f3cabc6tcp: fix incorrect parameter validation in the do_tcp_getsockopt() function | *fb6639c748net: hns3: fix port duplex configure error in IMP reset | *ec6bb01e02net: ip_tunnel: make sure to pull inner header in ip_tunnel_rcv() | *a9f5faf28eipv6: fib6_rules: flush route cache when rule is changed | *21e5fa4688bpf: Fix stackmap overflow check on 32-bit arches | *92c81fbb3ebpf: Fix hashtab overflow check on 32-bit arches | *8a8b6a2468sr9800: Add check for usbnet_get_endpoints | *54a03e4ac1Bluetooth: hci_core: Fix possible buffer overflow | *f6177a1723Bluetooth: Remove superfluous call to hci_conn_check_pending() | *03df15b579igb: Fix missing time sync events | *141897c5b0igb: move PEROUT and EXTTS isr logic to separate functions | *8081d80a92mmc: wmt-sdmmc: remove an incorrect release_mem_region() call in the .remove function | *bfa9d86d39SUNRPC: fix some memleaks in gssx_dec_option_array | *52018aa146x86, relocs: Ignore relocations in .notes section | *450ac90ed4ACPI: scan: Fix device check notification handling | *33b498a123ARM: dts: imx6dl-yapp4: Move the internal switch PHYs under the switch node | *0655698da8ARM: dts: imx6dl-yapp4: Fix typo in the QCA switch register address | *8deafa61fbARM: dts: imx6dl-yapp4: Move phy reset into switch node | *174e3c8ee7ARM: dts: arm: realview: Fix development chip ROM compatible value | *de8abc894bnet: ena: Remove ena_select_queue | *f434eacad6net: ena: cosmetic: fix line break issues | *a4fc14a662wifi: brcmsmac: avoid function pointer casts | *6234e09e69iommu/amd: Mark interrupt as managed | *073b5bbb13bus: tegra-aconnect: Update dependency to ARCH_TEGRA | *ea96bf3f80ACPI: processor_idle: Fix memory leak in acpi_processor_power_exit() | *2eb2a5d6f5arm64: dts: qcom: msm8996: Pad addresses | *a8f3650656arm64: dts: qcom: msm8996: Move regulator consumers to db820c | *1f685fa06carm64: dts: qcom: msm8996: Use node references in db820c | *adcf4eeb34arm64: dts: qcom: db820c: Move non-soc entries out of /soc | *6bbbd2fd08bpf: Mark bpf_spin_{lock,unlock}() helpers with notrace correctly | *6f51d61a43bpf: Factor out bpf_spin_lock into helpers. | *cf0d888ea7bpf: Add typecast to bpf helpers to help BTF generation | *e1f7fef6e2arm64: dts: mediatek: mt7622: add missing "device_type" to memory nodes | *bea9573c79wifi: libertas: fix some memleaks in lbs_allocate_cmd_buffer() | *6fd9061497net: blackhole_dev: fix build warning for ethh set but not used | *ef036a0598af_unix: Annotate data-race of gc_in_progress in wait_for_unix_gc(). | *4bdfc38a98sock_diag: annotate data-races around sock_diag_handlers[family] | *76ac9c141ewifi: mwifiex: debugfs: Drop unnecessary error check for debugfs_create_dir() | *e556006de4wifi: wilc1000: fix RCU usage in connect path | *1bda3ff1fdwifi: wilc1000: fix declarations ordering | *8c6210d175wifi: b43: Disable QoS for bcm4331 | *12062b149fwifi: b43: Stop correct queue in DMA worker when QoS is disabled | *c668f0f825b43: main: Fix use true/false for bool type | *47ec637b11wifi: b43: Stop/wake correct queue in PIO Tx path when QoS is disabled | *31aaf17200wifi: b43: Stop/wake correct queue in DMA Tx path when QoS is disabled | *801be44049b43: dma: Fix use true/false for bool type variable | *88a9dffaecwifi: ath10k: fix NULL pointer dereference in ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev() | *be26970980timekeeping: Fix cross-timestamp interpolation for non-x86 | *fee4e84c4etimekeeping: Fix cross-timestamp interpolation corner case decision | *7cec7d8388timekeeping: Fix cross-timestamp interpolation on counter wrap | *1a54aa506baoe: fix the potential use-after-free problem in aoecmd_cfg_pkts | *72dacc72b2fs/select: rework stack allocation hack for clang | *44214d744bnbd: null check for nla_nest_start | *772a7def98do_sys_name_to_handle(): use kzalloc() to fix kernel-infoleak | *3f6186cc65ASoC: wm8962: Fix up incorrect error message in wm8962_set_fll | *9f27f4d5d1ASoC: wm8962: Enable both SPKOUTR_ENA and SPKOUTL_ENA in mono mode | *f1d3be9eb9ASoC: wm8962: Enable oscillator if selecting WM8962_FLL_OSC | *5f3c13930bInput: gpio_keys_polled - suppress deferred probe error for gpio | *fa14a15373ASoC: Intel: bytcr_rt5640: Add an extra entry for the Chuwi Vi8 tablet | *da17f556adfirewire: core: use long bus reset on gap count error | *5f369efd9dBluetooth: rfcomm: Fix null-ptr-deref in rfcomm_check_security | *6e9c113992scsi: mpt3sas: Prevent sending diag_reset when the controller is ready | *2daa2a8e89btrfs: fix data race at btrfs_use_block_rsv() when accessing block reserve | *890a1b31fadm-verity, dm-crypt: align "struct bvec_iter" correctly | *5d8afc25c7block: sed-opal: handle empty atoms when parsing response | *745718d00fparisc/ftrace: add missing CONFIG_DYNAMIC_FTRACE check | *b43b1a7062net/iucv: fix the allocation size of iucv_path_table array | *c411a3c828RDMA/mlx5: Relax DEVX access upon modify commands | *69dd0a99daHID: multitouch: Add required quirk for Synaptics 0xcddc device | *7d7fa0bea3MIPS: Clear Cause.BD in instruction_pointer_set | *025a8a96c7x86/xen: Add some null pointer checking to smp.c | *4c00abb52aASoC: rt5645: Make LattePanda board DMI match more precise | *ef5de5d505selftests: tls: use exact comparison in recv_partial | *cfb24022bbio_uring: drop any code related to SCM_RIGHTS | *2692b8a016io_uring/unix: drop usage of io_uring socket * |f509fa9b09Revert "regmap: allow to define reg_update_bits for no bus configuration" * |012b5eceedRevert "regmap: Add bulk read/write callbacks into regmap_config" * |0efa1aa851Revert "serial: max310x: fix IO data corruption in batched operations" * |43bbe91c9fRevert "geneve: make sure to pull inner header in geneve_rx()" * |ee2f1c68f1Merge 5.4.272 into android11-5.4-lts |\| | *8407582630Linux 5.4.272 | *345ced4052arm64: dts: qcom: sdm845: fix USB DP/DM HS PHY interrupts | *1b3d8cbd1carm64: dts: qcom: add PDC interrupt controller for SDM845 | *59b3583da1serial: max310x: fix IO data corruption in batched operations | *f5c252aaa1serial: max310x: implement I2C support | *112094efd6serial: max310x: make accessing revision id interface-agnostic | *b96b017919regmap: Add bulk read/write callbacks into regmap_config | *758c6799daregmap: allow to define reg_update_bits for no bus configuration | *9a7bbea266serial: max310x: Unprepare and disable clock in error path | *664a6a904agetrusage: use sig->stats_lock rather than lock_task_sighand() | *2b34f60383getrusage: use __for_each_thread() | *c50a059431getrusage: move thread_group_cputime_adjusted() outside of lock_task_sighand() | *ef8a8b36a1getrusage: add the "signal_struct *sig" local variable | *f184f21978y2038: rusage: use __kernel_old_timeval | *c7441c77c9hv_netvsc: Register VF in netvsc_probe if NET_DEVICE_REGISTER missed | *f2ab3eaa64hv_netvsc: use netif_is_bond_master() instead of open code | *9b5ef7a528hv_netvsc: Make netvsc/VF binding check both MAC and serial number | *5402ec577fInput: i8042 - fix strange behavior of touchpad on Clevo NS70PU | *bf6bb3612eserial: max310x: prevent infinite while() loop in port startup | *7e30e5c143serial: max310x: use a separate regmap for each port | *3fb7c9bcd0serial: max310x: use regmap methods for SPI batch operations | *2c9c830d74serial: max310x: Make use of device properties | *b765176ae1serial: max310x: fail probe if clock crystal is unstable | *816700131eserial: max310x: Try to get crystal clock rate from property | *c76dcad53bserial: max310x: Use devm_clk_get_optional() to get the input clock | *b569d91e51um: allow not setting extra rpaths in the linux binary | *47c68edeccselftests: mm: fix map_hugetlb failure on 64K page size systems | *f9055fa2b2netrom: Fix data-races around sysctl_net_busy_read | *07bbccd1adnetrom: Fix a data-race around sysctl_netrom_link_fails_count | *c4309e5f8enetrom: Fix a data-race around sysctl_netrom_routing_control | *cbba77abb4netrom: Fix a data-race around sysctl_netrom_transport_no_activity_timeout | *89aa78a343netrom: Fix a data-race around sysctl_netrom_transport_requested_window_size | *1f60795dcanetrom: Fix a data-race around sysctl_netrom_transport_busy_delay | *80578681eanetrom: Fix a data-race around sysctl_netrom_transport_acknowledge_delay | *f716a68234netrom: Fix a data-race around sysctl_netrom_transport_maximum_tries | *eadec8da44netrom: Fix a data-race around sysctl_netrom_transport_timeout | *eda02a0bednetrom: Fix data-races around sysctl_netrom_network_ttl_initialiser | *1e84b108f2netrom: Fix a data-race around sysctl_netrom_obsolescence_count_initialiser | *7f61523255netrom: Fix a data-race around sysctl_netrom_default_path_quality | *4bafcc43banetfilter: nf_conntrack_h323: Add protection for bmp length out of range | *6ec3032022netfilter: nft_ct: fix l3num expectations with inet pseudo family | *997efea2bfnet/rds: fix WARNING in rds_conn_connect_if_down | *664f9c6472net/ipv6: avoid possible UAF in ip6_route_mpath_notify() | *d9fefc5113net: ice: Fix potential NULL pointer dereference in ice_bridge_setlink() | *59d2a40769geneve: make sure to pull inner header in geneve_rx() | *a248b1f58aixgbe: {dis, en}able irqs in ixgbe_txrx_ring_{dis, en}able | *7f08778469net: lan78xx: fix runtime PM count underflow on link stop | *81934a2ab5lan78xx: Fix race conditions in suspend/resume handling | *57b9c48cd5lan78xx: Fix partial packet errors on suspend/resume | *e68b46e9aalan78xx: Add missing return code checks | *b1cc23ffe1lan78xx: Fix white space and style issues * |79ed7de671Merge branch 'android11-5.4' into branch 'android11-5.4-lts' * |26385fa150UPSTREAM: arm64: dts: qcom: sdm845: fix USB DP/DM HS PHY interrupts * |e1dfe2d3deUPSTREAM: arm64: dts: qcom: add PDC interrupt controller for SDM845 * |40df6b551dMerge 5.4.271 into android11-5.4-lts |\| | *3fec063b05Linux 5.4.271 | *9162730a83gpio: 74x164: Enable output pins after registers are reset | *1dde8ef4b7fs,hugetlb: fix NULL pointer dereference in hugetlbs_fill_super | *037d5a949bcachefiles: fix memory leak in cachefiles_add_cache() | *ace0fdf796x86/cpu/intel: Detect TME keyid bits before setting MTRR mask registers | *9d660e5adfmmc: core: Fix eMMC initialization with 1-bit bus connection | *3cc5fb824cdmaengine: fsl-qdma: init irq after reg initialization | *518d78b4fadmaengine: fsl-qdma: fix SoC may hang on 16 byte unaligned read | *c6652e20d7btrfs: dev-replace: properly validate device names | *0cfbb26ee5wifi: nl80211: reject iftype change with mesh ID change | *ec92aa2cabgtp: fix use-after-free and null-ptr-deref in gtp_newlink() | *5c78be006eafs: Fix endless loop in directory parsing | *26dda65b09ALSA: Drop leftover snd-rtctimer stuff from Makefile | *7394abc892power: supply: bq27xxx-i2c: Do not free non existing IRQ | *950d4d74d3efi/capsule-loader: fix incorrect allocation size | *b9fbc44159rtnetlink: fix error logic of IFLA_BRIDGE_FLAGS writing back | *260410c589netfilter: nf_tables: allow NFPROTO_INET in nft_(match/target)_validate() | *20f6f150e1Bluetooth: Enforce validation on max value of connection interval | *79820a7e1eBluetooth: hci_event: Fix handling of HCI_EV_IO_CAPA_REQUEST | *98fb98fd37Bluetooth: Avoid potential use-after-free in hci_error_reset | *6e0000a432net: usb: dm9601: fix wrong return value in dm9601_mdio_read | *69624e28d6lan78xx: enable auto speed configuration for LAN7850 if no EEPROM is detected | *9d4ffb5b9dipv6: fix potential "struct net" leak in inet6_rtm_getaddr() | *f5f11f7e28tun: Fix xdp_rxq_info's queue_index when detaching | *f81e94d2dcnet: ip_tunnel: prevent perpetual headroom growth | *9ae51361danetlink: Fix kernel-infoleak-after-free in __skb_datagram_iter * |7dde2bcd3fANDROID: GKI: update .xml file due to USB changes in 5.4.270 * |1ac7c39f24Merge 5.4.270 into android11-5.4-lts |\| | *e133c1ee6dLinux 5.4.270 | *7a54338219scripts/bpf: Fix xdp_md forward declaration typo | *b4eea7a05efs/aio: Restrict kiocb_set_cancel_fn() to I/O submitted via libaio | *c28fc1aa6fdrm/syncobj: call drm_syncobj_fence_add_wait when WAIT_AVAILABLE flag is set | *29db9725f2drm/syncobj: make lockdep complain on WAIT_FOR_SUBMIT v3 | *ae4360cbd3netfilter: nf_tables: set dormant flag on hook register failure | *f310143961tls: stop recv() if initial process_rx_list gave us non-DATA | *a26742ada7tls: rx: drop pointless else after goto | *c1287c1d6btls: rx: jump to a more appropriate label | *06de230254s390: use the correct count for __iowrite64_copy() | *7eee00feb6packet: move from strlcpy with unused retval to strscpy | *82831e3ff7ipv6: sr: fix possible use-after-free and null-ptr-deref | *5c27d85a69afs: Increase buffer size in afs_update_volume_status() | *799a4afaa5ipv6: properly combine dev_base_seq and ipv6.dev_addr_genid | *5888f34249ipv4: properly combine dev_base_seq and ipv4.dev_addr_genid | *a50cb1d6f3nouveau: fix function cast warnings | *fe031dfceascsi: jazz_esp: Only build if SCSI core is builtin | *dd90af71fabpf, scripts: Correct GPL license name | *1f18b5bb45scripts/bpf: teach bpf_helpers_doc.py to dump BPF helper definitions | *48ebca0a11RDMA/srpt: fix function pointer cast warnings | *3107633774RDMA/srpt: Make debug output more detailed | *6e461952dfRDMA/bnxt_re: Return error for SRQ resize | *cecfb90cf7IB/hfi1: Fix a memleak in init_credit_return | *bbcf72333busb: roles: don't get/set_role() when usb_role_switch is unregistered | *a31cf46d10usb: gadget: ncm: Avoid dropping datagrams of properly parsed NTBs | *aad6132ae6usb: cdns3: fix memory double free when handle zero packet | *cfa9abb557usb: cdns3: fixed memory use after free at cdns3_gadget_ep_disable() | *999a8bb70dARM: ep93xx: Add terminator to gpiod_lookup_table | *c1d3a84a67l2tp: pass correct message length to ip6_append_data | *caf4a67c01PCI/MSI: Prevent MSI hardware interrupt number truncation | *f8cbd17919gtp: fix use-after-free and null-ptr-deref in gtp_genl_dump_pdp() | *0dccbb9353dm-crypt: don't modify the data when using authenticated encryption | *5833024a98IB/hfi1: Fix sdma.h tx->num_descs off-by-one error | *6ede985c6bPCI: tegra: Fix OF node reference leak | *e04a2afd08PCI: tegra: Fix reporting GPIO error value | *e3fc080911arm64: dts: qcom: msm8916: Fix typo in pronto remoteproc node | *efd63c23a4drm/amdgpu: Fix type of second parameter in trans_msg() callback | *f691ab24cfiomap: Set all uptodate bits for an Uptodate page | *45227ae32fdm-integrity: don't modify bio's immutable bio_vec in integrity_metadata() | *3770c38cd6x86/alternatives: Disable KASAN in apply_alternatives() | *f45dc10a3cdrm/amdgpu: Check for valid number of registers to read | *90aa9135a4Revert "drm/sun4i: dsi: Change the start delay calculation" | *7000efb6d8ALSA: hda/realtek - Enable micmute LED on and HP system | *82c53047feselftests/bpf: Avoid running unprivileged tests with alignment requirements | *81e03f638dnet: bridge: clear bridge's private skb space on xmit | *82174d6bd7spi: mt7621: Fix an error message in mt7621_spi_probe() | *954a7a0011pinctrl: rockchip: Fix refcount leak in rockchip_pinctrl_parse_groups | *759756e2cfpinctrl: pinctrl-rockchip: Fix a bunch of kerneldoc misdemeanours | *99dc568545tcp: add annotations around sk->sk_shutdown accesses | *41ca938616tcp: return EPOLLOUT from tcp_poll only when notsent_bytes is half the limit | *5a9dc14df2tcp: factor out __tcp_close() helper | *d428676420pmdomain: renesas: r8a77980-sysc: CR7 must be always on | *3bc35da667s390/qeth: Fix potential loss of L3-IP@ in case of network issues | *b7bfaea8f5virtio-blk: Ensure no requests in virtqueues before deleting vqs. | *d124ab01fcfirewire: core: send bus reset promptly on gap count error | *b5854f923dscsi: lpfc: Use unsigned type for num_sge | *60635f8a05hwmon: (coretemp) Enlarge per package core count limit | *6d338fb1a1nvmet-fc: abort command when there is no binding | *ac524b7b3fnetfilter: conntrack: check SCTP_CID_SHUTDOWN_ACK for vtag setting in sctp_new | *6f5015ce25ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616 | *c3a25d4fddnvmet-tcp: fix nvme tcp ida memory leak | *5068cb91edregulator: pwm-regulator: Add validity checks in continuous .get_voltage | *6b92b1bc16ext4: avoid allocating blocks from corrupted group in ext4_mb_find_by_goal() | *260fc96283ext4: avoid allocating blocks from corrupted group in ext4_mb_try_best_found() | *bccb418ebaahci: add 43-bit DMA address quirk for ASMedia ASM1061 controllers | *e896bf4878ahci: asm1166: correct count of reported ports | *6db07619d1fbdev: sis: Error out if pixclock equals zero | *84dce0f6a4fbdev: savage: Error out if pixclock equals zero | *85720b69aewifi: mac80211: fix race condition on enabling fast-xmit | *d3032de2c8wifi: cfg80211: fix missing interfaces when dumping | *bb3813a6a7dmaengine: fsl-qdma: increase size of 'irq_name' | *a7229c75c3dmaengine: shdma: increase size of 'dev_id' | *11f3fe5001scsi: target: core: Add TMF to tmr_list handling | *d2fc4134aasched/rt: Disallow writing invalid values to sched_rt_period_us | *b69677bfd7sched/rt: Fix sysctl_sched_rr_timeslice intial value | *429aaf144buserfaultfd: fix mmap_changing checking in mfill_atomic_hugetlb | *b0911b8d37nilfs2: replace WARN_ONs for invalid DAT metadata block requests | *febd743200memcg: add refcnt for pcpu stock to avoid UAF problem in drain_all_stock() | *d7b5bdb52dsched/rt: sysctl_sched_rr_timeslice show default timeslice after reset | *010dc505eanet/sched: Retire dsmark qdisc | *40e8abb86dnet/sched: Retire ATM qdisc | *493685f3ddnet/sched: Retire CBQ qdisc | *9d17e73504KVM: arm64: vgic-its: Test for valid IRQ in MOVALL handler | *68799371c9KVM: arm64: vgic-its: Test for valid IRQ in its_sync_lpi_pending_table() * |3298a76a41Revert "bpf: Add map and need_defer parameters to .map_fd_put_ptr()" * |241e0d860fRevert "hrtimer: Report offline hrtimer enqueue" * |ce97b1b6bcRevert "drm/mipi-dsi: Fix detach call without attach" * |806fb883eaMerge 5.4.269 into android11-5.4-lts |/ *6e1f54a498Linux 5.4.269 *e9aa8e5a72of: gpio unittest kfree() wrong object *6ac8965955of: unittest: fix EXPECT text for gpio hog errors *7dd275ce3bnet: bcmgenet: Fix EEE implementation *10c586da9fRevert "Revert "mtd: rawnand: gpmi: Fix setting busy timeout setting"" *25b42be4e0netfilter: nf_tables: fix pointer math issue in nft_byteorder_eval() *3dd76bebcdlsm: new security_file_ioctl_compat() hook *efdf644062drm/msm/dsi: Enable runtime PM *fef59ee6c0PM: runtime: Have devm_pm_runtime_enable() handle pm_runtime_dont_use_autosuspend() *835ed5effbPM: runtime: add devm_pm_runtime_enable helper *d31c8721e8nilfs2: fix potential bug in end_buffer_async_write *2441a64070sched/membarrier: reduce the ability to hammer on sys_membarrier *cd1022eaf8net: prevent mss overflow in skb_segment() *6587af96efnetfilter: ipset: Missing gc cancellations fixed *c7f2733e50netfilter: ipset: fix performance regression in swap operation *d04acadb64KVM: arm64: vgic-its: Avoid potential UAF in LPI translation cache *4705a9fc50mips: Fix max_mapnr being uninitialized on early stages *5e0854b60aarch, mm: remove stale mentions of DISCONIGMEM *c324e2716dbus: moxtet: Add spi device table *7f71d9817cRevert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d" *60e092289ctracing: Inform kmemleak of saved_cmdlines allocation *fbe86124b7pmdomain: core: Move the unused cleanup to a _sync initcall *08de58abedcan: j1939: Fix UAF in j1939_sk_match_filter during setsockopt(SO_J1939_FILTER) *a257ffde37irqchip/irq-brcmstb-l2: Add write memory barrier before exit *91a7c00235nfp: flower: prevent re-adding mac index for bonded port *b22c9a37c7nfp: use correct macro for LengthSelect in BAR config *862ee4422cnilfs2: fix hang in nilfs_lookup_dirty_data_buffers() *a6efe6dbaanilfs2: fix data corruption in dsync block recovery for small block sizes *6ce7d5e6d2ALSA: hda/conexant: Add quirk for SWS JS201D *6b8bdc509emmc: slot-gpio: Allow non-sleeping GPIO ro *4f2fde5051x86/mm/ident_map: Use gbpages only where full GB page should be mapped. *4c7b1d08adx86/Kconfig: Transmeta Crusoe is CPU family 5, not 6 *ed14ab2611serial: max310x: improve crystal stable clock detection *5814a9045cserial: max310x: set default value when reading clock ready bit *ef60665ea9ring-buffer: Clean ring_buffer_poll_wait() error return *7200170e88iio: magnetometer: rm3100: add boundary check for the value read from RM3100_REG_TMRC *720d0112b3staging: iio: ad5933: fix type mismatch regression *77e7a316cdtracing: Fix wasted memory in saved_cmdlines logic *afbcad9ae7ext4: fix double-free of blocks due to wrong extents moved_len *15238f4b21misc: fastrpc: Mark all sessions as invalid in cb_remove *42beab162dbinder: signal epoll threads of self-work *93a52449feALSA: hda/realtek: Enable headset mic on Vaio VJFE-ADL *9086b27eacxen-netback: properly sync TX responses *71349abe3anfc: nci: free rx_data_reassembly skb on NCI device cleanup *4ae191effbkbuild: Fix changing ELF file type for output of gen_btf for big endian *750a4e5999firewire: core: correct documentation of fw_csr_string() kernel API *2209fc6e3dscsi: Revert "scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock" *d074d5ff5ai2c: i801: Fix block process call transactions *4de1489d80i2c: i801: Remove i801_set_block_buffer_mode *df112ccb9busb: f_mass_storage: forbid async queue when shutdown happen *addaa8627fUSB: hub: check for alternate port before enabling A_ALT_HNP_SUPPORT *dbaca8fa9eHID: wacom: Do not register input devices until after hid_hw_start *e13bed5cfeHID: wacom: generic: Avoid reporting a serial of '0' to userspace *1f12e4b328mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again *8ffd5590f4tracing/trigger: Fix to return error if failed to alloc snapshot *a67f1f83f3i40e: Fix waiting for queues of all VSIs to be disabled *9a3a82affaMIPS: Add 'memory' clobber to csum_ipv6_magic() inline assembler *422d5243b9ASoC: rt5645: Fix deadlock in rt5645_jack_detect_work() *91b48c6339spi: ppc4xx: Drop write-only variable *61da1f41d0of: unittest: Fix compile in the non-dynamic case *f6997a2416of: unittest: add overlay gpio test to catch gpio hog problem *89485251f6btrfs: send: return EOPNOTSUPP on unknown flags *863837df8abtrfs: forbid deleting live subvol qgroup *d25031ba2abtrfs: forbid creating subvol qgroups *10e9cb3931netfilter: nft_set_rbtree: skip end interval element from gc *7fde2acc6dnet: stmmac: xgmac: fix a typo of register name in DPP safety handling *b9ff931f00net: stmmac: xgmac: use #define for string constants *88c7e1e7a6vhost: use kzalloc() instead of kmalloc() followed by memset() *09e77c7d67Input: atkbd - skip ATKBD_CMD_SETLEDS when skipping ATKBD_CMD_GETID *a012efe0dfhrtimer: Report offline hrtimer enqueue *4a589de93cUSB: serial: cp210x: add ID for IMST iM871A-USB *cd0ab7f2a8USB: serial: option: add Fibocom FM101-GL variant *896695af51USB: serial: qcserial: add new usb-id for Dell Wireless DW5826e *11ca9624ccnet/af_iucv: clean up a try_then_request_module() *1c7488156enetfilter: nft_ct: reject direction for ct id *8e2a84c6danetfilter: nft_compat: restrict match/target protocol to u16 *f139a4c6d2netfilter: nft_compat: reject unused compat flag *56fae81633ppp_async: limit MRU to 64K *6f70f0b412tipc: Check the bearer type before calling tipc_udp_nl_bearer_add() *ef1f56f2cdrxrpc: Fix response to PING RESPONSE ACKs to a dead call *5993f121fbinet: read sk->sk_family once in inet_recv_error() *7c96975c24hwmon: (coretemp) Fix bogus core_id to attr name mapping *1eb74c00c9hwmon: (coretemp) Fix out-of-bounds memory access *51d76b7230hwmon: (aspeed-pwm-tacho) mutex for tach reading *df0965935aatm: idt77252: fix a memleak in open_card_ubr0 *a0ac20fd53selftests: net: avoid just another constant wait *e9837c83benet: stmmac: xgmac: fix handling of DPP safety error for DMA channels *8398d8d735phy: ti: phy-omap-usb2: Fix NULL pointer dereference for SRP *0cb90f27a3dmaengine: fix is_slave_direction() return false when DMA_DEV_TO_DEV *6ff4827315phy: renesas: rcar-gen3-usb2: Fix returning wrong error code *1c75fe450bdmaengine: fsl-qdma: Fix a memory leak related to the queue command DMA *c263609416dmaengine: fsl-qdma: Fix a memory leak related to the status queue DMA *817bedcd7fbonding: remove print in bond_verify_device_path *e95120698bHID: apple: Add 2021 magic keyboard FN key mapping *5991ab8940HID: apple: Swap the Fn and Left Control keys on Apple keyboards *6d4771ab2dHID: apple: Add support for the 2021 Magic Keyboard *67f56ef9e1net: sysfs: Fix /sys/class/net/<iface> path *b169ffde73af_unix: fix lockdep positive in sk_diag_dump_icons() *b3dace37f1net: ipv4: fix a memleak in ip_setup_cork *f549f340c9netfilter: nft_ct: sanitize layer 3 and 4 protocol number in custom expectations *06608603fanetfilter: nf_log: replace BUG_ON by WARN_ON_ONCE when putting logger *64babb17e8llc: call sock_orphan() at release time *2a09d1784cipv6: Ensure natural alignment of const ipv6 loopback and router addresses *7f1a24914bixgbe: Fix an error handling path in ixgbe_read_iosf_sb_reg_x550() *a10e95d6cfixgbe: Refactor overtemp event handling *2d533ddca2ixgbe: Refactor returning internal error codes *980c806f67ixgbe: Remove non-inclusive language *7c03b74865net: remove unneeded break *b81f679ac5scsi: isci: Fix an error code problem in isci_io_request_build() *12f58dce48wifi: cfg80211: fix RCU dereference in __cfg80211_bss_update *ad2bd6cd17perf: Fix the nr_addr_filters fix *34da3b9fa5drm/amdgpu: Release 'adev->pm.fw' before return in 'amdgpu_device_need_post()' *6ab4fd508fceph: fix deadlock or deadcode of misusing dget() *ecd7744a14blk-mq: fix IO hang from sbitmap wakeup race *977105472fvirtio_net: Fix "‘%d’ directive writing between 1 and 11 bytes into a region of size 10" warnings *884b746209libsubcmd: Fix memory leak in uniq() *3e06e9b906PCI/AER: Decode Requester ID when no error info found *133bf750d7fs/kernfs/dir: obey S_ISGID *17c252f192usb: hub: Replace hardcoded quirk value with BIT() macro *d8c2935499PCI: switchtec: Fix stdev_release() crash after surprise hot remove *a32a24da0ePCI: Only override AMD USB controller if required *e2048eb3cbmfd: ti_am335x_tscadc: Fix TI SoC dependencies *838cbe01dbi3c: master: cdns: Update maximum prescaler value for i2c clock *a6946682ddum: net: Fix return type of uml_net_start_xmit() *c8115f2bd8um: Don't use vfprintf() for os_info() *735a29ce08um: Fix naming clash between UML and scheduler *ddd1f258f0leds: trigger: panic: Don't register panic notifier if creating the trigger failed *9052b3e0e7drm/amdgpu: Drop 'fence' check in 'to_amdgpu_amdkfd_fence()' *548f9a37d7drm/amdgpu: Let KFD sync with VM fences *15d674571aclk: mmp: pxa168: Fix memory leak in pxa168_clk_init() *105444e207clk: hi3620: Fix memory leak in hi3620_mmc_clk_init() *8a96f1caf1drm/msm/dpu: Ratelimit framedone timeout msgs *4d181fe966media: ddbridge: fix an error code problem in ddb_probe *615e3adc20IB/ipoib: Fix mcast list locking *fb703d31fddrm/exynos: Call drm_atomic_helper_shutdown() at shutdown/unbind time *c1b2e5e837ALSA: hda: Intel: add HDA_ARL PCI ID support *c91bda92fbPCI: add INTEL_HDA_ARL to pci_ids.h *fbbee078cfmedia: rockchip: rga: fix swizzling for RGB formats *acb1bffe5fmedia: stk1160: Fixed high volume of stk1160_dbg messages *67997250d3drm/mipi-dsi: Fix detach call without attach *d778e10ddedrm/framebuffer: Fix use of uninitialized variable *da980f8db0drm/drm_file: fix use of uninitialized variable *00a5feb060RDMA/IPoIB: Fix error code return in ipoib_mcast_join *b0f907a4effast_dput(): handle underflows gracefully *12ba5b9cf8ASoC: doc: Fix undefined SND_SOC_DAPM_NOPM argument *9fceaf8182f2fs: fix to check return value of f2fs_reserve_new_block() *52240224e7wifi: cfg80211: free beacon_ies when overridden from hidden BSS *18c2989c30wifi: rtlwifi: rtl8723{be,ae}: using calculate_bit_shift() *8ec36f2d0cwifi: rtl8xxxu: Add additional USB IDs for RTL8192EU devices *f3b7a31bf1arm64: dts: qcom: msm8998: Fix 'out-ports' is a required property *c3f22192a2arm64: dts: qcom: msm8996: Fix 'in-ports' is a required property *351b37b88emd: Whenassemble the array, consult the superblock of the freshest device *6f2cd02ff5block: prevent an integer overflow in bvec_try_merge_hw_page *fb9c25ea0aARM: dts: imx23/28: Fix the DMA controller node name *c48e75a7eeARM: dts: imx23-sansa: Use preferred i2c-gpios properties *83b1cceca9ARM: dts: imx27-apf27dev: Fix LED name *06c3f5920fARM: dts: imx25/27: Pass timing0 *826e8fa48eARM: dts: imx1: Fix sram node *05f309a3faARM: dts: imx27: Fix sram node *1e35a4cf5aARM: dts: imx: Use flash@0,0 pattern *30cfab1c8cARM: dts: imx25/27-eukrea: Fix RTC node name *ca14da9a1eARM: dts: rockchip: fix rk3036 hdmi ports node *e9ac3e3398scsi: libfc: Fix up timeout error in fc_fcp_rec_error() *f5a875051escsi: libfc: Don't schedule abort twice *eb6f68ec92bpf: Add map and need_defer parameters to .map_fd_put_ptr() *f11f0fd1adwifi: ath9k: Fix potential array-index-out-of-bounds read in ath9k_htc_txstatus() *53dd674b32ARM: dts: imx7s: Fix nand-controller #size-cells *a86ce3671dARM: dts: imx7s: Fix lcdif compatible *183edc0ad2ARM: dts: imx7d: Fix coresight funnel ports *6c50e561cebonding: return -ENOMEM instead of BUG in alb_upper_dev_walk *4d981d9224PCI: Add no PM reset quirk for NVIDIA Spectrum devices *0e8c8aa8e3scsi: lpfc: Fix possible file string name overflow when updating firmware *cbd0b6268aselftests/bpf: Fix pyperf180 compilation failure with clang18 *982bdaa0fcselftests/bpf: satisfy compiler by having explicit return in btf test *e1f113b57dwifi: rt2x00: restart beacon queue when hardware reset *b183fe8702ext4: avoid online resizing failures due to oversized flex bg *92c3c5cfedext4: remove unnecessary check from alloc_flex_gd() *7cb19e1336ext4: unify the type of flexbg_size to unsigned int *360c28a2fdext4: fix inconsistent between segment fstrim and full fstrim *ec10755496ecryptfs: Reject casefold directory inodes *7a96d85bf1SUNRPC: Fix a suspicious RCU usage warning *5e63c9ae80KVM: s390: fix setting of fpc register *6d0822f2ccs390/ptrace: handle setting of fpc register correctly *de6a91aed1jfs: fix array-index-out-of-bounds in diNewExt *592d29eb6brxrpc_find_service_conn_rcu: fix the usage of read_seqbegin_or_lock() *f4a0b57632afs: fix the usage of read_seqbegin_or_lock() in afs_find_server*() *3f4cba4cf8crypto: stm32/crc32 - fix parsing list of devices *e9f6ac5089pstore/ram: Fix crash when setting number of cpus to an odd number *93df0a2a0bjfs: fix uaf in jfs_evict_inode *3f8217c323jfs: fix array-index-out-of-bounds in dbAdjTree *1b9d682858jfs: fix slab-out-of-bounds Read in dtSearch *fd3486a893UBSAN: array-index-out-of-bounds in dtSplitRoot *98f9537fe6FS:JFS:UBSAN:array-index-out-of-bounds in dbAdjTree *d2049af7ddACPI: extlog: fix NULL pointer dereference check *0d2adafba9PNP: ACPI: fix fortify warning *b0b96859abACPI: video: Add quirk for the Colorful X15 AT 23 Laptop *20277842d9audit: Send netlink ACK before setting connection in auditd_set *27756ae366regulator: core: Only increment use_count when enable_count changes *aed181fbc2perf/core: Fix narrow startup race when creating the perf nr_addr_filters sysfs file *980d5fe989x86/mce: Mark fatal MCE's page as poison to avoid panic in the kdump kernel *0580f4403apowerpc/lib: Validate size for vector operations *7cd81d2358powerpc: pmd_move_must_withdraw() is only needed for CONFIG_TRANSPARENT_HUGEPAGE *9bf6c6f097powerpc/mm: Fix build failures due to arch_reserved_kernel_pages() *171468044bpowerpc: Fix build error due to is_valid_bugaddr() *f6781add1cpowerpc/mm: Fix null-pointer dereference in pgtable_cache_add *3cdbfac106x86/entry/ia32: Ensure s32 is sign extended to s64 *aa8bd0d9b2tick/sched: Preserve number of idle sleeps across CPU hotplug events *200d17b226mips: Call lose_fpu(0) before initializing fcr31 in mips_set_personality_nan *b2b0d40775spi: bcm-qspi: fix SFDP BFPT read by usig mspi read *344e8f3392gpio: eic-sprd: Clear interrupt after set the interrupt type *f81d67832cdrm/exynos: gsc: minor fix for loop iteration in gsc_runtime_resume *83d86b4a77drm/exynos: fix accidental on-stack copy of exynos_drm_plane *3e835d6e65drm/bridge: nxp-ptn3460: simplify some error checking *021e214947drm/bridge: nxp-ptn3460: fix i2c_master_send() error checking *9dd334a824drm: Don't unref the same fb many times by mistake due to deadlock handling *5624d628a1gpiolib: acpi: Ignore touchpad wakeup on GPD G1619-04 *4e66422f1bnetfilter: nf_tables: reject QUEUE/DROP verdict parameters *bd517df3bdrbd: don't move requests to the running list on errors *69a0876252btrfs: defrag: reject unknown flags of btrfs_ioctl_defrag_range_args *d0bf04c965btrfs: don't warn if discard range is not aligned to sector *927d1a3d32btrfs: tree-checker: fix inline ref size in error messages *5c9e576bfdbtrfs: ref-verify: free ref cache before clearing mount opt *d3d6162eb1net: fec: fix the unhandled context fault from smmu *3422bfda92fjes: fix memleaks in fjes_hw_setup *07bcc3cd3dnetfilter: nf_tables: validate NFPROTO_* family *b55e492f06netfilter: nf_tables: restrict anonymous set and map names to 16 bytes *2501afe6c4net/mlx5e: fix a double-free in arfs_create_groups *bca555e8a2net/mlx5: Use kfree(ft->g) in arfs_create_groups() *0917d771f6net/mlx5: DR, Use the right GVMI number for drop action *4f4dc7098bnetlink: fix potential sleeping issue in mqueue_flush_file *da70948068tcp: Add memory barrier to tcp_push() *01d15b68f0afs: Hide silly-rename files from userspace *dad9b28f67tracing: Ensure visibility when inserting an element into tracing_map *a37ae111dbnet/rds: Fix UBSAN: array-index-out-of-bounds in rds_cmsg_recv *b8e8838f82llc: Drop support for ETH_P_TR_802_2. *b643d0defcllc: make llc_ui_sendmsg() more robust against bonding changes *06f30fdbc4vlan: skip nested type that is not IFLA_VLAN_QOS_MAPPING *1fea9969b8net/smc: fix illegal rmb_desc access in SMC-D connection dump *5c6183f3c7x86/CPU/AMD: Fix disabling XSAVES on AMD family 0x17 due to erratum *7e180b702apowerpc: Use always instead of always-y in for crtsavres.o *457ef4fe54fs: move S_ISGID stripping into the vfs_*() helpers *0cb0093fd6fs: add mode_strip_sgid() helper *635a0039e8mtd: spinand: macronix: Fix MX35LFxGE4AD page size *3f4e660144block: Remove special-casing of compound pages *0785e29899rename(): fix the locking of subdirectories *f0824ca283ubifs: ubifs_symlink: Fix memleak of inode->i_link in error path *a1e80a33bfnouveau/vmm: don't set addr on the fail path to avoid warning *f49f9e8027mmc: core: Use mrq.sbc in close-ended ffu *e15b1553d0arm64: dts: qcom: sdm845: fix USB wakeup interrupt types *830c99794bparisc/firmware: Fix F-extend for PDC addresses *dd50fe18c2rpmsg: virtio: Free driver_override when rpmsg_remove() *5030d4c798hwrng: core - Fix page fault dead lock on mmap-ed hwrng *5bc17b4fc2PM: hibernate: Enforce ordering during image compression/decompression *cf6889bb8bcrypto: api - Disallow identical driver names *a7edaf40fcext4: allow for the last group to be marked as trimmed *e2ecfd5565serial: sc16is7xx: add check for unsupported SPI modes during probe *120b65f80bspi: introduce SPI_MODE_X_MASK macro *2b708e6b28serial: sc16is7xx: set safe default SPI clock frequency *e53321b341units: add the HZ macros *34d74cf3c7units: change from 'L' to 'UL' *7478445a45units: Add Watt units *b617974548include/linux/units.h: add helpers for kelvin to/from Celsius conversion *2ed05a8cc9PCI: mediatek: Clear interrupt status before dispatching handler Change-Id: I1ddbcc9d61402546e16694894da56199a22ec74d Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -4606,9 +4606,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
Reference in New Issue
Block a user