mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
Merge tag 'android14-6.1.99_r00' into android14-6.1
This merges up to the 6.1.99 LTS release into android14-6.1. This includes the following commits: *12f9bcc034Merge 6.1.99 into android14-6.1-lts |\ | *cac15753b8Linux 6.1.99 | *1f4a10cb82Revert "usb: xhci: prevent potential failure in handle_tx_event() for Transfer events without TRB" * |e6e7b1084cMerge 6.1.98 into android14-6.1-lts |\| | *266ee8e06dLinux 6.1.98 | *86e3ffeab5nilfs2: fix incorrect inode allocation from reserved inodes | *a077a6cdb3null_blk: Do not allow runt zone with zone capacity smaller then zone size | *2fed4a94bcspi: cadence: Ensure data lines set to low during dummy-cycle period | *41f5e2840cnfc/nci: Add the inconsistency check between the input data length and count | *833112b7f1kbuild: fix short log for AS in link-vmlinux.sh | *940a71f08envmet: fix a possible leak when destroy a ctrl during qp establishment | *273a824a9cplatform/x86: touchscreen_dmi: Add info for the EZpad 6s Pro | *363585e3fcplatform/x86: touchscreen_dmi: Add info for GlobalSpace SolT IVW 11.6" tablet | *85646d7796regmap-i2c: Subtract reg size from max_write | *62fc41a69cnvme: adjust multiples of NVME_CTRL_PAGE_SIZE in offset | *ce39d85705dma-mapping: benchmark: avoid needless copy_to_user if benchmark fails | *d62da841bfnvme-multipath: find NUMA path only for online numa-node | *154f4ca807ALSA: hda/realtek: Enable headset mic of JP-IK LEAP W502 with ALC897 | *850ef5d239fs/ntfs3: Mark volume as dirty if xattr is broken | *3d32327f5ci2c: pnx: Fix potential deadlock warning from del_timer_sync() call in isr | *7069aa6d41clk: mediatek: mt8183: Only enable runtime PM on mt8183-mfgcfg | *e3e33879d6clk: mediatek: clk-mtk: Register MFG notifier in mtk_clk_simple_probe() | *661baa1711clk: qcom: gcc-sm6350: Fix gpll6* & gpll7 parents | *e5411f2653media: dw2102: fix a potential buffer overflow | *9c3906c373ima: Avoid blocking in RCU read-side critical section | *ee42c15083arm64: dts: rockchip: Fix the DCDC_REG2 minimum voltage on Quartz64 Model B | *9504a15506bnx2x: Fix multiple UBSAN array-index-out-of-bounds | *1c67f79350mtd: rawnand: rockchip: ensure NVDDR timings are rejected | *670f841c07mtd: rawnand: Bypass a couple of sanity checks during NAND identification | *ca0f2e7244mtd: rawnand: Ensure ECC configuration is propagated to upper layers | *c550679d60powerpc/pseries: Fix scv instruction crash with kexec | *dd4674d016drm: panel-orientation-quirks: Add quirk for Valve Galileo | *742cac675fdrm/amdgpu/atomfirmware: silence UBSAN warning | *1f32535238drm/nouveau: fix null pointer dereference in nouveau_connector_get_modes | *cbbe17a324Revert "mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again" | *4e0716110afsnotify: Do not generate events for O_PATH file descriptors | *44aa3e76f4can: kvaser_usb: Explicitly initialize family in leafimx driver_info struct | *e6e200b264Bluetooth: qca: Fix BT enable failure again for QCA6390 after warm reboot | *c126aff74ascsi: mpi3mr: Use proper format specifier in mpi3mr_sas_port_add() | *525ad8dd9af2fs: Add inline to f2fs_build_fault_attr() stub | *aa1d8cc0ccbtrfs: fix adding block group to a reclaim list and the unused list during reclaim | *c83ed422c2mm: avoid overflows in dirty throttling logic | *d259d0c375mm: optimize the redundant loop of mm_update_owner_next() | *1b7d549ed2nilfs2: add missing check for inode numbers on directory entries | *fae1959d6anilfs2: fix inode number range checks | *98c8958980Revert "igc: fix a log entry using uninitialized netdev" | *89a5f0625fplatform/x86: toshiba_acpi: Fix quickstart quirk handling | *ab557f5cd9mlxsw: core_linecards: Fix double memory deallocation in case of invalid INI file | *d6f487e070inet_diag: Initialize pad field in struct inet_diag_req_v2 | *8d9fa5e82eselftests: make order checking verbose in msg_zerocopy selftest | *fb8fc89b5cselftests: fix OOM in msg_zerocopy selftest | *c8eb8ab9a4bonding: Fix out-of-bounds read in bond_option_arp_ip_targets_set() | *4c06c13317netfilter: nf_tables: unconditionally flush pending work before notifier | *653deee48ariscv: kexec: Avoid deadlock in kexec crash path | *b610a87538wifi: wilc1000: fix ies_len type in connect path | *4b3b6c7efenet: ntb_netdev: Move ntb_netdev_rx_handler() to call netif_rx() from __netif_rx() | *12f6119d86net: allow skb_datagram_iter to be called from any context | *b368762d1ee1000e: Fix S0ix residency on corporate systems | *c159afd3b5KVM: s390: fix LPSWEY handling | *31f03bb041tcp_metrics: validate source addr length | *f8b7bd500dnet/mlx5e: Add mqprio_rl cleanup and free in mlx5e_priv_cleanup() | *bc3ff8d3c0net/mlx5: E-switch, Create ingress ACL when needed | *965fbc6d9aUPSTREAM: tcp: fix DSACK undo in fast recovery to call tcp_try_to_open() | *a0d1afe8a9mac802154: fix time calculation in ieee802154_configure_durations() | *325d8659b8tools/power turbostat: Remember global max_die_id | *0c97527e91cdrom: rearrange last_media_change check to avoid unintentional overflow | *c0d7a3b290btrfs: scrub: initialize ret in scrub_simple_mirror() to fix compilation warning | *c51795885cs390/pkey: Wipe sensitive data on failure | *751987a5d8jffs2: Fix potential illegal address access in jffs2_free_inode | *e1683ff4ebserial: imx: Raise TX trigger level to 8 | *b869ec89d2scsi: mpi3mr: Sanitise num_phys | *bc84dd2c33f2fs: check validation of fault attrs in f2fs_build_fault_attr() | *a21d76bd0bbpf: Avoid uninitialized value in BPF_CORE_READ_BITFIELD | *2e9d8aa52bigc: fix a log entry using uninitialized netdev | *ce8d496786powerpc/xmon: Check cpu id in commands "c#", "dp#" and "dx#" | *ae9edc2b17kunit: Fix timeout message | *74159d409dorangefs: fix out-of-bounds fsid access | *9c06fe8cfbpowerpc/64: Set _IO_BASE to POISON_POINTER_DELTA not 0 for CONFIG_PCI=n | *d4889c95bci2c: i801: Annotate apanel_addr as __ro_after_init | *1663e2474emedia: dvb-frontends: tda10048: Fix integer overflow | *1aa04c84a3media: s2255: Use refcount_t instead of atomic_t for num_channels | *fa547cdd7bmedia: dvb-frontends: tda18271c2dd: Remove casting during div | *aa03f591efnet: dsa: mv88e6xxx: Correct check for empty list | *22ea2a7f0bwifi: mt76: replace skb_put with skb_put_zero | *948554f1bbusb: xhci: prevent potential failure in handle_tx_event() for Transfer events without TRB | *46c82c5e4cInput: ff-core - prefer struct_size over open coded arithmetic | *d792fc8f7afirmware: dmi: Stop decoding on broken entry | *f2c9c42f6bsctp: prefer struct_size over open coded arithmetic | *a010daa33emedia: dw2102: Don't translate i2c read into write | *ee18ed34a2drm/amdgpu: fix uninitialized scalar variable warning | *874261358ddrm/amd/display: Skip finding free audio for unknown engine_id | *d2c3645a4adrm/amd/display: Check pipe offset before setting vblank | *ae91ffbc8bdrm/amd/display: Check index msg_id before read or write | *bf312c0529drm/amdgpu: Initialize timestamp for some legacy SOCs | *7eb74d14c7drm/amdgpu: Fix uninitialized variable warnings | *28c8d27484crypto: aead,cipher - zeroize key buffer after use | *fa49c65a1cscsi: qedf: Make qedf_execute_tmf() non-preemptible | *63d202d948IB/core: Implement a limit on UMAD receive List | *95e9377c7cmedia: dvb-usb: dib0700_devices: Add missing release_firmware() | *c72990a6a7media: dvb: as102-fe: Fix as10x_register_addr packing | *8d3f83dfb2powerpc: Avoid nmi_enter/nmi_exit in real mode interrupt. | *0a487e977cdrm/lima: fix shared irq handling on driver remove | *eda60520cfcrypto: hisilicon/debugfs - Fix debugfs uninit process issue | *42d64dbe4blocking/mutex: Introduce devm_mutex_init() * |e44db5756eANDROID: db845c symbol list additions * |ab63f81b3aRevert "mm/page_alloc: Separate THP PCP into movable and non-movable categories" * |9a2454ec58Merge 6.1.97 into android14-6.1-lts |\| | *7753af06eeLinux 6.1.97 | *f19cca5d16tracing/net_sched: NULL pointer dereference in perf_trace_qdisc_reset() | *fbfd2c876cserial: 8250_omap: Fix Errata i2310 with RX FIFO level check | *1dc9d05040serial: imx: only set receiver level if it is zero | *16d92a6dfaarm64: dts: rockchip: Add sound-dai-cells for RK3368 | *4e66009d35arm64: dts: rockchip: fix PMIC interrupt pin on ROCK Pi E | *2581e814d7ARM: dts: rockchip: rk3066a: add #sound-dai-cells to hdmi node | *bccc0c847farm64: dts: rockchip: Rename LED related pinctrl nodes on rk3308-rock-pi-s | *b619f741b6arm64: dts: rockchip: Fix SD NAND and eMMC init on rk3308-rock-pi-s | *fcafdf32acefi/x86: Free EFI memory map only when installing a new one. | *01b3cddfa6efi: xen: Set EFI_PARAVIRT for Xen dom0 boot on all architectures | *0d01140e92efi: memmap: Move manipulation routines into x86 arch tree | *7ad4e0a4f6gfs2: Fix slab-use-after-free in gfs2_qd_dealloc | *447434eaafmm/page_alloc: Separate THP PCP into movable and non-movable categories | *978e27ff31Revert "cpufreq: amd-pstate: Fix the inconsistency in max frequency units" | *d2b5636883pwm: stm32: Refuse too small period requests | *f910aee90bsyscalls: fix sys_fanotify_mark prototype | *e1b88ac1fesyscalls: fix compat_sys_io_pgetevents_time64 usage | *5ae6af6841ftruncate: pass a signed offset | *702c1edbafata: libata-core: Fix double free on error | *5f0d0bf9f5ata: ahci: Clean up sysfs file on error | *f926c022ebcan: mcp251xfd: fix infinite loop when xmit fails | *778a8e67c7batman-adv: Don't accept TT entries for out-of-spec VIDs | *c92a15b3b2drm/amdgpu/atomfirmware: fix parsing of vram_info | *30cbf6ffafdrm/nouveau/dispnv04: fix null pointer dereference in nv17_tv_get_hd_modes | *ca0fabd365drm/i915/gt: Fix potential UAF by revoke of fence registers | *6ce0544cabdrm/amdgpu: avoid using null object of framebuffer | *f95ed0f54bdrm/nouveau/dispnv04: fix null pointer dereference in nv17_tv_get_ld_modes | *948dc69f4bhexagon: fix fadvise64_64 calling conventions | *0f92275527csky, hexagon: fix broken sys_sync_file_range | *87936f517bbtrfs: zoned: fix initial free space detection | *41dd6b0ec7sh: rework sync_file_range ABI | *bf3c44f67ckbuild: Install dtb files as 0644 in Makefile.dtbinst | *84394f35b6irqchip/loongson-liointc: Set different ISRs for different cores | *71af0f2f22cpu/hotplug: Fix dynstate assignment in __cpuhp_setup_state_cpuslocked() | *e0560219dbcpufreq: intel_pstate: Use HWP to initialize ITMT if CPPC is missing | *26b18dd30enet: can: j1939: enhanced error handling for tightly received RTS messages in xtp_rx_rts_session_new | *4ff6978921net: can: j1939: recover socket queue on CAN bus error during BAM transmission | *f97cbce633net: can: j1939: Initialize unused data in j1939_send_one() | *a44aedd512tty: mcf: MCF54418 has 10 UARTS | *94307bc31bALSA: hda/realtek: fix mute/micmute LEDs don't work for EliteBook 645/665 G11. | *e97ef9a3a3serial: imx: set receiver level before starting uart | *98840e410dserial: 8250_omap: Implementation of Errata i2310 | *a47407ae12usb: ucsi: stm32: fix command completion handling | *a11b71624busb: gadget: aspeed_udc: fix device address configuration | *d77e2b5104usb: dwc3: core: remove lock of otg mode during gadget suspend/resume to avoid deadlock | *5584c776a1usb: atm: cxacru: fix endpoint checking in cxacru_bind() | *7afa50ce46usb: musb: da8xx: fix a resource leak in probe() | *e9835f39a8usb: gadget: printer: fix races against disable | *e48b92ed16usb: gadget: printer: SS+ support | *a59d84377dnet: usb: ax88179_178a: improve link status logs | *d441ad2aa9iio: chemical: bme680: Fix sensor data read operation | *ba1bb3e2a3iio: chemical: bme680: Fix overflows in compensate() functions | *94f303ed7biio: chemical: bme680: Fix calibration data variable | *4decfc47a1iio: chemical: bme680: Fix pressure value output | *90d4d02b37iio: accel: fxls8962af: select IIO_BUFFER & IIO_KFIFO_BUF | *df188072b5iio: adc: ad7266: Fix variable checking bug | *274239d9f8i2c: testunit: discard write requests while old command is running | *86826b1ffdi2c: testunit: don't erase registers after STOP | *8cfb468a67counter: ti-eqep: enable clock at probe | *70516c5ff3iio: xilinx-ams: Don't include ams_ctrl_channels in scan_mask | *f8ec1677cemmc: sdhci: Do not lock spinlock around mmc_gpio_get_ro() | *2f3555c20ammc: sdhci: Do not invert write-protect twice | *dca15c1861mmc: sdhci-pci: Convert PCIBIOS_* return codes to errnos | *81027f81c4mmc: sdhci-brcmstb: check R1_STATUS for erase/trim/discard | *ea6beb811bnfs: drop the incorrect assertion in nfs_swap_rw() | *9ea2d1c678ocfs2: fix DIO failure due to insufficient transaction credits | *a4f9251e4bpinctrl: qcom: spmi-gpio: drop broken pm8008 support | *ceabd79fd4Revert "MIPS: pci: lantiq: restore reset gpio polarity" | *3ae15c0238parisc: use generic sys_fanotify_mark implementation | *161cef8185x86: stop playing stack games in profile_pc() | *7fb374981eima: Fix use-after-free on a dentry's dname.name | *b793177141randomize_kstack: Remove non-functional per-arch entropy filtering | *31594c5a42gpiolib: cdev: Disallow reconfiguration without direction (uAPI v1) | *c3b425744driscv: stacktrace: convert arch_stack_walk() to noinstr | *09f64e7ad7drm/amdgpu: Fix pci state save during mode-1 reset | *87a2448efcdrm/amd/amdgpu: Fix style errors in amdgpu_drv.c & amdgpu_device.c | *89d7008af4gpio: davinci: Validate the obtained number of IRQs | *c717cef1ffdrm/panel: simple: Add missing display timing flags for KOE TX26D202VM0BWA | *d8e2766655nvme: fixup comment for nvme RDMA Provider Type | *b719f2bc76drm/radeon/radeon_display: Decrease the size of allocated memory | *9e424deb9asoc: ti: wkup_m3_ipc: Send NULL dummy message instead of pointer message | *06c5331047media: dvbdev: Initialize sbuf | *d0ff2443fcALSA: emux: improve patch ioctl data validation | *fd7ef32591crypto: ecdh - explicitly zeroize private_key | *48147337d7net/dpaa2: Avoid explicit cpumask var allocation on stack | *d85ca8179anet/iucv: Avoid explicit cpumask var allocation on stack | *782bdaf9d0RDMA/restrack: Fix potential invalid address access | *b30f3197a6bpf: Mark bpf prog stack with kmsan_unposion_memory in interpreter mode | *5bcb9cf62fbpf: Add a check for struct bpf_fib_lookup size | *cc33a7a2f1wifi: ieee80211: check for NULL in ieee80211_mle_size_ok() | *081938266amtd: partitions: redboot: Added conversion of operands to a larger type | *ed1fa6d6afx86/fpu: Fix AMD X86_BUG_FXSAVE_LEAK fixup | *7d18ab6e4fvduse: Temporarily fail if control queue feature requested | *d99a4e147bvduse: validate block features only with block devices | *5f41401219drm/panel: ilitek-ili9881c: Fix warning with GPIO controllers that sleep | *e4f602e3ffbpf: Take return from set_memory_ro() into account with bpf_prog_lock_ro() | *efb27ad059netfilter: nf_tables: fully validate NFT_DATA_VALUE on store to data registers | *736c74dc60tcp: fix tcp_rcv_fastopen_synack() to enter TCP_CA_Loss for failed TFO | *853c0387acpowerpc: restore some missing spu syscalls | *2eb9a4bc63parisc: use correct compat recv/recvfrom syscalls | *ef03810c9asparc: fix compat recv/recvfrom syscalls | *04c1271243sparc: fix old compat_sys_select() | *f75c21bf73net: dsa: microchip: fix wrong register write when masking interrupt | *c14f3c3793Fix race for duplicate reqsk on identical SYN | *4e0c539ee2xdp: Remove WARN() from __xdp_reg_mem_model() | *75fabdc911net: dsa: microchip: use collision based back pressure mode | *aecaaf8abdnet: phy: micrel: add Microchip KSZ 9477 to the device table | *5516c9ee2aibmvnic: Free any outstanding tx skbs during scrq reset | *d1b9df0435bpf: Fix overrunning reservations in ringbuf | *bfa86a9691mlxsw: spectrum_buffers: Fix memory corruptions on Spectrum-4 systems | *2dfaf2c4b3net: dsa: microchip: fix initial port flush problem | *8faf91e584ASoC: fsl-asoc-card: set priv->pdev before using it | *20f19c91daASoC: amd: acp: remove i2s configuration check in acp_i2s_probe() | *d9912994a0s390/pci: Add missing virt_to_phys() for directed DIBV | *87358401edASoC: rockchip: i2s-tdm: Fix trcm mode by setting clock on right mclk | *b45176b869netfilter: nf_tables: use timestamp to check for set element timeout | *7491c3c55cdt-bindings: i2c: atmel,at91sam: correct path to i2c-controller schema | *58d65ce94bdt-bindings: i2c: Drop unneeded quotes | *777f3c9954MIPS: pci: lantiq: restore reset gpio polarity | *ae7b2aa805pinctrl: rockchip: fix pinmux reset in rockchip_pmx_set | *8a5859bb14pinctrl: rockchip: use dedicated pinctrl type for RK3328 | *6bed115e5epinctrl: rockchip: fix pinmux bits for RK3328 GPIO3-B pins | *940ce6f283pinctrl: rockchip: fix pinmux bits for RK3328 GPIO2-B pins | *b36efd2e3epinctrl: fix deadlock in create_pinctrl() when handling -EPROBE_DEFER | *4312eace43Input: ili210x - fix ili251x_read_touch_data() return value | *b2f1ce6cc9ACPI: x86: Force StorageD3Enable on more products | *c538c8861cACPI: x86: utils: Add Picasso to the list for forcing StorageD3Enable | *411e6aa90ausb: typec: ucsi: Ack also failed Get Error commands | *8cace39c77usb: typec: ucsi: Never send a lone connector change ack * |47b24bf8eaRevert "net/sched: fix false lockdep warning on qdisc root lock" * |0a6ad70f07Revert "net/sched: unregister lockdep keys in qdisc_create/qdisc_alloc error path" * |325f5b8ed9Revert "tty: add the option to have a tty reject a new ldisc" * |7455bf543fMerge 6.1.96 into android14-6.1-lts |\| | *99e6a620deLinux 6.1.96 | *19526f54ecRevert "mm: mmap: allow for the maximum number of bits for randomizing mmap_base by default" | *8a630e8acdhid: asus: asus_report_fixup: fix potential read out of bounds | *48d3f91d83net/sched: unregister lockdep keys in qdisc_create/qdisc_alloc error path | *d04943bb69drm/amd/display: revert Exit idle optimizations before HDCP execution | *5efe0b5debkheaders: explicitly define file modes for archived headers | *f0b5d1d9feRevert "kheaders: substituting --sort in archive creation" | *8ab1361b2ex86/cpu: Fix x86_match_cpu() to match just X86_VENDOR_INTEL | *b0727ed7bax86/cpu/vfm: Add new macros to work with (vendor/family/model) values | *6efd1d4b1ftracing: Add MODULE_DESCRIPTION() to preemptirq_delay_test | *8d5d123f62pmdomain: ti-sci: Fix duplicate PD referrals | *95881ebdb4ARM: dts: samsung: smdk4412: fix keypad no-autorepeat | *7c1448ea11ARM: dts: samsung: exynos4412-origen: fix keypad no-autorepeat | *2df48353faARM: dts: samsung: smdkv310: fix keypad no-autorepeat | *8154edd62aperf script: Show also errors for --insn-trace option | *4bd6f883bdperf: script: add raw|disasm arguments to --insn-trace option | *520f28926aspi: stm32: qspi: Clamp stm32_qspi_get_mode() output to CCR_BUSWIDTH_4 | *56de6648a4arm64: dts: imx8qm-mek: fix gpio number for reg_usdhc2_vmmc | *065494adabspi: stm32: qspi: Fix dual flash mode sanity test in stm32_qspi_setup() | *fd6cfb11d7dt-bindings: i2c: google,cros-ec-i2c-tunnel: correct path to i2c-controller schema | *92278b2dd1i2c: ocores: set IACK bit after core is enabled | *51897f9935mm/page_table_check: fix crash on ZONE_DEVICE | *6f7c39a675tcp: clear tp->retrans_stamp in tcp_rcv_fastopen_synack() | *665e932600mm: mmap: allow for the maximum number of bits for randomizing mmap_base by default | *4cb3b5bc4ckcov: don't lose track of remote references during softirqs | *9ad023010egcov: add support for GCC 14 | *fc5cb952e6drm/amdgpu: fix UBSAN warning in kv_dpm.c | *f803532bc3drm/radeon: fix UBSAN warning in kv_dpm.c | *013e8f2371drm/i915/mso: using joiner is not possible with eDP MSO | *661882cfe5ALSA: hda/realtek: Limit mic boost on N14AP7 | *72eed766d9ALSA: hda/realtek: fix mute/micmute LEDs don't work for ProBook 445/465 G11. | *9e6e37d9d6KVM: x86: Always sync PIR to IRR prior to scanning I/O APIC routes | *68df4fc449KVM: arm64: Disassociate vcpus from redistributor region on teardown | *92c77807d9KVM: Fix a data race on last_boosted_vcpu in kvm_vcpu_on_spin() | *b95fce863bcifs: fix typo in module parameter enable_gcm_256 | *15cb476cebbtrfs: retry block group reclaim without infinite loop | *893eeba94cnet: do not leave a dangling sk pointer, when socket creation fails | *44f521431fnet: usb: ax88179_178a: improve reset check | *dda369a760net: stmmac: Assign configured channel value to EXTTS event | *d8abba1e3cMIPS: dts: bcm63268: Add missing properties to the TWD node | *2703312590kbuild: Remove support for Clang's ThinLTO caching | *9995864186RDMA/mlx5: Add check for srq max_sge attribute | *a331f275cbfirmware: psci: Fix return value from psci_system_suspend() | *ddc1f5f124ACPICA: Revert "ACPICA: avoid Info: mapping multiple BARs. Your kernel is fine." | *87d2639f8aarm64: dts: freescale: imx8mm-verdin: enable hysteresis on slow input pin | *97af5de2cbarm64: dts: imx93-11x11-evk: Remove the 'no-sdio' property | *474a1661f4regulator: bd71815: fix ramp values | *6136f19e52dmaengine: ioatdma: Fix missing kmem_cache_destroy() | *6a104377d4dmaengine: ioatdma: Fix kmemleak in ioat_pci_probe() | *98b35b2b7edmaengine: ioatdma: Fix error path in ioat3_dma_probe() | *d7f4e58f1bdmaengine: ioat: use PCI core macros for PCIe Capability | *98d79caf37dmaengine: ioatdma: Fix leaking on version mismatch | *95dc59ba94dmaengine: ioat: Drop redundant pci_enable_pcie_error_reporting() | *83163667d8dmaengine: idxd: Fix possible Use-After-Free in irq_process_work_list | *1bd1857fedregulator: core: Fix modpost error "regulator_get_regmap" undefined | *1803875fefnet: usb: rtl8150 fix unintiatilzed variables in rtl8150_get_link_ksettings | *e214f102e0bnxt_en: Restore PTP tx_avail count in case of skb_pad() error | *dd37b86999ice: Fix VSI list rule with ICE_SW_LKUP_LAST type | *ec4d970b59seg6: fix parameter passing when calling NF_HOOK() in End.DX4 and End.DX6 behaviors | *788d585e62netfilter: ipset: Fix suspicious rcu_dereference_protected() | *49780570bfocteontx2-pf: Add error handling to VLAN unoffload handling | *04619db397virtio_net: checksum offloading handling fix | *521d42a1c2net: stmmac: No need to calculate speed divider when offload is disabled | *d50d62d5e6ptp: fix integer overflow in max_vclocks_store | *2f82f75f84sched: act_ct: add netns into the key of tcf_ct_flow_table | *623c90d86atipc: force a dst refcount before doing decryption | *6fc78d67f5net/sched: act_api: fix possible infinite loop in tcf_idr_check_alloc() | *668be2b635net/sched: act_api: rely on rcu in tcf_idr_check_alloc | *5bd1b7ab6anet: phy: mxl-gpy: Remove interrupt mask clearing from config_init | *70993aca4fnet: phy: mxl-gpy: enhance delay time required by loopback disable function | *7d0606bdd7net: lan743x: Support WOL at both the PHY and MAC appropriately | *2af9aa9ac6net: lan743x: disable WOL upon resume to restore full data path operation | *e2ec071727qca_spi: Make interrupt remembering atomic | *1b631bffcbnetns: Make get_net_ns() handle zero refcount net | *83c02fb2ccxfrm6: check ip6_dst_idev() return value in xfrm6_get_saddr() | *51ee2f7c30ipv6: prevent possible NULL dereference in rt6_probe() | *88b9a55e2eipv6: prevent possible NULL deref in fib6_nh_init() | *a02fd5d775netrom: Fix a memory leak in nr_heartbeat_expiry() | *eb1bde62d6ALSA: hda/realtek: Enable headset mic on IdeaPad 330-17IKB 81DM | *dacc15e9cbbpf: Avoid splat in pskb_pull_reason | *7dabc4b45bcipso: fix total option length computation | *224b69e875ice: avoid IRQ collision to fix init failure on ACPI S3 resume | *531d85b4fbice: move RDMA init to ice_idc.c | *7de448db67ALSA/hda: intel-dsp-config: Document AVS as dsp_driver option | *71b027d3c0ALSA: hda/realtek: Remove Framework Laptop 16 from quirks | *32ef4dc2b1tracing: Build event generation tests only as modules | *6c0f6ccd93mips: bmips: BCM6358: make sure CBR is correctly set | *a6061f60e1MIPS: Routerboard 532: Fix vendor retry check code | *3c6332f3bbtty: add the option to have a tty reject a new ldisc | *6466b91968usb: gadget: function: Remove usage of the deprecated ida_simple_xx() API | *3b3655a1d3serial: exar: adding missing CTI and Exar PCI ids | *7f9e70c68bserial: imx: Introduce timeout when waiting on transmitter empty | *d996deb803MIPS: Octeon: Add PCIe link status check | *70196feadbPCI/PM: Avoid D3cold for HP Pavilion 17 PC/1972 PCIe Ports | *29dfe9e844udf: udftime: prevent overflow in udf_disk_stamp_to_time() | *69170a888eusb: dwc3: pci: Don't set "linux,phy_charger_detect" property on Lenovo Yoga Tab2 1380 | *dd42570018Avoid hw_desc array overrun in dw-axi-dmac | *8fc246a8a4usb: misc: uss720: check for incompatible versions of the Belkin F5U002 | *a9cea0489cf2fs: remove clear SB_INLINECRYPT flag in default_options | *8092775cb6iommu/arm-smmu-v3: Free MSIs in case of ENOMEM | *10c19cf7a1power: supply: cros_usbpd: provide ID table for avoiding fallback match | *5cb3339b6dplatform/x86: p2sb: Don't init until unassigned resources have been assigned | *7bbcd3b1c2powerpc/io: Avoid clang null pointer arithmetic warnings | *8aa11aa001powerpc/pseries: Enforce hcall result buffer validity and size | *cf56640e9aALSA: hda/realtek: Add quirks for Lenovo 13X | *9fd8ddd237drm/lima: mask irqs in timeout path before hard reset | *394d660678drm/lima: add mask irq callback to gp and pp | *4cd1360c63ASoC: Intel: sof_sdw: add JD2 quirk for HP Omen 14 | *6239d65b91platform/x86: toshiba_acpi: Add quirk for buttons on Z830 | *fc1f030978drm/amd/display: Exit idle optimizations before HDCP execution | *be4a1fc857Bluetooth: ath3k: Fix multiple issues reported by checkpatch.pl | *aa2fb9c54cHID: asus: fix more n-key report descriptors if n-key quirked | *5368c463bcHID: Add quirk for Logitech Casa touchpad | *0b81faa05bwifi: mt76: mt7921s: fix potential hung tasks during chip recovery | *96826b16efnetpoll: Fix race condition in netpoll_owner_active | *e8fc7647a8net: dsa: realtek: keep default LED state in rtl8366rb | *d927fae287kselftest: arm64: Add a null pointer check | *048b33817anet/sched: fix false lockdep warning on qdisc root lock | *eaddb86637scsi: qedi: Fix crash while reading debugfs attribute | *f251ccef1ddrop_monitor: replace spin_lock by raw_spin_lock | *63310043acaf_packet: avoid a false positive warning in packet_setsockopt() | *2e48d73577wifi: ath9k: work around memset overflow warning | *fed7914858batman-adv: bypass empty buckets in batadv_purge_orig_ref() | *63f2d5373dselftests/bpf: Fix flaky test btf_map_in_map/lookup_update | *fb9088a7a7selftests/bpf: Prevent client connect before server bind in test_tc_tunnel.sh | *61ec76ec93block/ioctl: prefer different overflow check | *cf9b1652b4rcutorture: Fix invalid context warning when enable srcu barrier testing | *dbd4175e5ercutorture: Make stall-tasks directly exit when rcutorture tests end | *9bc282fb8arcutorture: Fix rcu_torture_one_read() pipe_count overflow comment | *55c22375cbio_uring/sqpoll: work around a potential audit memory leak | *7c42ce556fcrypto: hisilicon/sec - Fix memory leak for sec resource release | *4925da0896padata: Disable BH when taking works lock on MT path * |cb7d32c26dMerge aosp/android14-6.1 to aosp/android14-6.1-lts * |6f4a686ac9Revert "i2c: add fwnode APIs" * |efbc7c7549Revert "i2c: acpi: Unbind mux adapters before delete" * |ced5058778Merge 6.1.95 into android14-6.1-lts |\| | *a6398e3730Linux 6.1.95 | *edd2754a62zap_pid_ns_processes: clear TIF_NOTIFY_SIGNAL along with TIF_SIGPENDING | *e44999ec0bi2c: designware: Fix the functionality flags of the slave-only interface | *1a0bbb90f3i2c: at91: Fix the functionality flags of the slave-only interface | *ea25a4c0demisc: microchip: pci1xxxx: Fix a memory leak in the error handling of gp_aux_bus_probe() | *e0e2eec769usb-storage: alauda: Check whether the media is initialized | *ae917519baserial: core: Add UPIO_UNKNOWN constant for unknown port type | *29d35f0b53serial: 8250_dw: fall back to poll if there's no interrupt | *9a733d69a4greybus: Fix use-after-free bug in gb_interface_release due to race condition. | *12a4a28eaeBluetooth: qca: generalise device address check | *47988653a4Bluetooth: qca: fix wcn3991 device address check | *9afc658ce7cachefiles, erofs: Fix NULL deref in when cachefiles is not doing ondemand-mode | *4733dea73cremoteproc: k3-r5: Jump to error handling labels in start/stop errors | *04b0c41912Revert "fork: defer linking file vma until vma is fully initialized" | *35e395373emptcp: pm: update add_addr counters after connect | *51861fc086serial: 8250_pxa: Configure tx_loadsz to match FIFO IRQ level | *00b0752c7fmm/memory-failure: fix handling of dissolved but not taken off from buddy pages | *b2494506f3mm/huge_memory: don't unpoison huge_zero_folio | *2641261b93tick/nohz_full: Don't abuse smp_call_function_single() in tick_setup_device() | *271dcd977cnilfs2: fix potential kernel bug due to lack of writeback flag waiting | *1776596470btrfs: zoned: fix use-after-free due to race with dev replace | *babfd2d0d5btrfs: zoned: factor out DUP bg handling from btrfs_load_block_group_zone_info | *43a89d48bdbtrfs: zoned: factor out single bg handling from btrfs_load_block_group_zone_info | *7fd274c062btrfs: zoned: factor out per-zone logic from btrfs_load_block_group_zone_info | *c60f0a442dbtrfs: zoned: introduce a zone_info struct in btrfs_load_block_group_zone_info | *d2fa51eb9cintel_th: pci: Add Lunar Lake support | *5b64a368e3intel_th: pci: Add Meteor Lake-S support | *a1fb1bd6c0intel_th: pci: Add Sapphire Rapids SOC support | *b7b6bc60edintel_th: pci: Add Granite Rapids SOC support | *bb8b9d91f7intel_th: pci: Add Granite Rapids support | *3272801490drm/i915/dpt: Make DPT object unshrinkable | *d205e30216drm/i915/gt: Disarm breadcrumbs if engines are already idle | *919f862609riscv: rewrite __kernel_map_pages() to fix sleeping in invalid context | *dd5042eed5remoteproc: k3-r5: Do not allow core1 to power up before core0 via sysfs | *2a1ec20b17remoteproc: k3-r5: Wait for core0 power-up before powering up core1 | *f6a426a0c4dmaengine: axi-dmac: fix possible race in remove() | *eab9d5a846PCI: rockchip-ep: Remove wrong mask on subsys_vendor_id | *ea042dc2beocfs2: fix races between hole punching and AIO+DIO | *a2e8105eb2ocfs2: use coarse time for new created files | *a373ad833afs/proc: fix softlockup in __read_vmcore | *06bea44b93knfsd: LOOKUP can return an illegal error value | *bbce9fb50cspmi: hisi-spmi-controller: Do not override device identifier | *95bac1c8bevmci: prevent speculation leaks by sanitizing event in event_deliver() | *5eabdf17fesock_map: avoid race between sock_map_close and sk_psock_put | *ae080302bfnull_blk: Print correct max open zones limit in null_init_zoned_dev() | *e2585bc1d8tracing/selftests: Fix kprobe event name test for .isra. functions | *6625417dferiscv: fix overlap of allocated page and PTR_ERR | *c81705d66fperf/core: Fix missing wakeup when waiting for context reference | *355784a5c0x86/amd_nb: Check for invalid SMN reads | *2458f2362firqchip/gic-v3-its: Fix potential race condition in its_vlpi_prop_update() | *9dc3200a5cmptcp: pm: inc RmAddr MIB counter once per RM_ADDR ID | *f03c46eabbmptcp: ensure snd_una is properly initialized on connect | *c3ca24dfe9drm/exynos: hdmi: report safe 640x480 mode as a fallback when no EDID found | *dcba6bedb4drm/exynos/vidi: fix memory leak in .get_modes() | *08891eeaa9drivers: core: synchronize really_probe() and dev_uevent() | *cc09e1d351iio: imu: inv_icm42600: delete unneeded update watermark call | *1b82cc8664iio: dac: ad5592r: fix temperature channel scaling value | *f35eb2c486iio: adc: ad9467: fix scan type sign | *b9da7e9653x86/boot: Don't add the EFI stub to targets, again | *34ae447b13misc: microchip: pci1xxxx: fix double free in the error handling of gp_aux_bus_probe() | *cde177fa23bnxt_en: Adjust logging of firmware messages in case of released token in __hwrm_send() | *e9c6513cffaf_unix: Read with MSG_PEEK loops if the first unread byte is OOB | *60cd714871ionic: fix use after netif_napi_del() | *caaa212978net: bridge: mst: fix suspicious rcu usage in br_mst_set_state | *09f4337c27net: bridge: mst: pass vlan group directly to br_mst_vlan_set_state | *cd68f84910net/ipv6: Fix the RT cache flush via sysctl using a previous delay | *5872043bcfnvmet-passthru: propagate status from id override functions | *a6ea39fd2dnet: stmmac: replace priv->speed with the portTransmitRate from the tc-cbs parameters | *c495ebe90bgve: ignore nonrelevant GSO type bits when processing TSO headers | *950217d97cnet: pse-pd: Use EOPNOTSUPP error code instead of ENOTSUPP | *390b353d1anetfilter: ipset: Fix race between namespace cleanup and gc in the list:set type | *4431d37498Bluetooth: L2CAP: Fix rejecting L2CAP_CONN_PARAM_UPDATE_REQ | *0f99dc35cbnet/mlx5e: Fix features validation check for tunneled UDP (non-VXLAN) packets | *11f1f0c4f7geneve: Fix incorrect inner network header offset when innerprotoinherit is set | *0b160b127ctcp: fix race in tcp_v6_syn_recv_sock() | *c8879a39c7drm/bridge/panel: Fix runtime warning on panel bridge release | *3b1cf943b0drm/komeda: check for error-valued pointer | *f1ab15a094liquidio: Adjust a NULL pointer handling path in lio_vf_rep_copy_packet | *f2583f8172net: hns3: add cond_resched() to hns3 ring buffer init process | *6d0007f7b6net: hns3: fix kernel crash problem in concurrent scenario | *84a0d86853net: sfp: Always call `sfp_sm_mod_remove()` on remove | *2b7be0eb79drm/vmwgfx: Remove STDU logic from generic mode_valid function | *b1aae9c5d7drm/vmwgfx: 3D disabled should not effect STDU memory limits | *b7479b39b7drm/vmwgfx: Filter modes which exceed graphics memory | *862bd36dafdrm/vmwgfx: Refactor drm connector probing for display modes | *67adcfae2edrm/vmwgfx: Port the framebuffer code to drm fb helpers | *789c99a1d7HID: logitech-dj: Fix memory leak in logi_dj_recv_switch_to_dj_mode() | *f2af9dbad8iommu/amd: Fix sysfs leak in iommu init | *bfd546fc7fHID: core: remove unnecessary WARN_ON() in implement() | *2df8c16ea4gpio: tqmx86: fix broken IRQ_TYPE_EDGE_BOTH interrupt type | *4ada932c43gpio: tqmx86: store IRQ trigger type and unmask status separately | *0f6b55f9f7gpio: tqmx86: Convert to immutable irq_chip | *8c2e28a209gpio: tqmx86: introduce shadow register for GPIO output value | *a09c3dbe59gpio: tqmx86: remove unneeded call to platform_set_drvdata() | *8200440578gpio: tqmx86: fix typo in Kconfig label | *3150d4e4b9platform/x86: dell-smbios: Fix wrong token data in sysfs | *0abb51acfbNFS: add barriers when testing for NFS_FSDATA_BLOCKED | *3cde566d9fSUNRPC: return proper error from gss_wrap_req_priv | *e6ddef11c0NFSv4.1 enforce rootpath check in fs_location query | *81fce119dfclk: sifive: Do not register clkdevs for PRCI clocks | *fcb4ce61a5selftests/ftrace: Fix to check required event file | *320ba9cbcacachefiles: flush all requests after setting CACHEFILES_DEAD | *eac51d9daacachefiles: defer exposing anon_fd until after copy_to_user() succeeds | *1fd5f317b5cachefiles: never get a new anonymous fd if ondemand_id is valid | *bb00aef6d9cachefiles: remove err_put_fd label in cachefiles_ondemand_daemon_read() | *cb55625f8ecachefiles: fix slab-use-after-free in cachefiles_ondemand_daemon_read() | *99e9c5bd27cachefiles: fix slab-use-after-free in cachefiles_ondemand_get_fd() | *a0cc87f866cachefiles: add restore command to recover inflight ondemand read requests | *5344f2ab31cachefiles: add spin_lock for cachefiles_ondemand_info | *f17443d52dcachefiles: resend an open request if the read request's object is closed | *bb512c8587cachefiles: extract ondemand info field from cachefiles_object | *e43fb9a20dcachefiles: introduce object ondemand state | *9f13aacdd4cachefiles: remove requests from xarray during flushing requests | *dad925266acachefiles: add output string to cachefiles_obj_[get|put]_ondemand_fd | *bee55952ffcxl/test: Add missing vmalloc.h for tools/testing/cxl/test/mem.c | *6dfa1d80eaInput: try trimming too long modalias strings | *ce1afd733bpowerpc/uaccess: Fix build errors seen with GCC 13/14 | *d221284991gve: Clear napi->skb before dev_kfree_skb_any() | *d19254d891scsi: sd: Use READ(16) when reading block zero on large capacity disks | *46bab2bcd7scsi: mpt3sas: Avoid test/set_bit() operating in non-allocated memory | *a9624afc91scsi: mpi3mr: Fix ATA NCQ priority support | *a136698d1ethunderbolt: debugfs: Fix margin debugfs node creation condition | *0daacb57b9xhci: Apply broken streams quirk to Etron EJ188 xHCI host | *633f72cb61xhci: Handle TD clearing for multiple streams case | *0a1c2a581dxhci: Apply reset resume quirk to Etron EJ188 xHCI host | *f6559d28c0xhci: Set correct transferred length for cancelled bulk transfers | *33aecc5799jfs: xattr: fix buffer overflow for invalid xattr | *b6e5e69643landlock: Fix d_parent walk | *03f916e56atty: n_tty: Fix buffer offsets when lookahead is used | *185a1b1fccmei: me: release irq in mei_me_pci_resume error path | *2ad7e02c2eusb: typec: tcpm: Ignore received Hard Reset in TOGGLING state | *4053696594usb: typec: tcpm: fix use-after-free case in tcpm_register_source_caps | *fb9f366ae6USB: xen-hcd: Traverse host/ when CONFIG_USB_XEN_HCD is selected | *02a4c0499fUSB: class: cdc-wdm: Fix CPU lockup caused by excessive log messages | *c2844d5e58io_uring: check for non-NULL file pointer in io_file_can_poll() | *129dcd3e7dnilfs2: fix nilfs_empty_dir() misjudgment and long loop on I/O errors | *ea2ac9238dnilfs2: return the mapped address from nilfs_get_page() | *8b0d6d1879btrfs: fix leak of qgroup extent records after transaction abort | *b1a5d3f79bbtrfs: make btrfs_destroy_delayed_refs() return void | *95e69b16d0btrfs: remove unnecessary prototype declarations at disk-io.c | *be70a6c516wifi: ath10k: fix QCOM_RPROC_COMMON dependency | *46a072e050selftests/mm: compaction_test: fix bogus test success on Aarch64 | *264b8a7e15selftests/mm: log a consistent test name for check_compaction | *5ba39134b6selftests/mm: conform test to TAP format output | *499fd1db08selftests/mm: compaction_test: fix incorrect write of zero to nr_hugepages | *198a80833emm/vmalloc: fix vmalloc which may return null if called with __GFP_NOFAIL | *fe5c2bdcb1mm, vmalloc: fix high order __GFP_NOFAIL allocations | *b1574c8c0ai2c: acpi: Unbind mux adapters before delete | *ef1e9b624di2c: add fwnode APIs | *c0cd2d8800HID: i2c-hid: elan: fix reset suspend current leakage | *274ecd4001HID: i2c-hid: elan: Add ili9882t timing | *0fce1c959afirmware: qcom_scm: disable clocks if qcom_scm_bw_enable() fails | *5ee241f72emmc: davinci: Don't strip remove function when driver is builtin | *c3d39fdc33serial: sc16is7xx: fix bug in sc16is7xx_set_baud() when using prescaler | *aeb2b22e4fserial: sc16is7xx: replace hardcoded divisor value with BIT() macro | *c0b8f49183misc/pvpanic-pci: register attributes via pci_driver | *96826e74d7misc/pvpanic: deduplicate common code | *1529c86da6arm64: dts: qcom: sa8155p-adp: fix SDHC2 CD pin configuration | *eedbb969a4arm64: dts: qcom: sm8150: align TLMM pin configuration with DT schema | *a869a9b604drm/amd/display: Fix incorrect DSC instance for MST | *ed82dc58c7drm/amd/display: drop unnecessary NULL checks in debugfs | *b6621895b4xtensa: fix MAKE_PC_FROM_RA second argument | *eccf114abdxtensa: stacktrace: include <asm/ftrace.h> for prototype | *5253a35ea5iio: accel: mxc4005: Reset chip on probe() and resume() | *02db59533biio: accel: mxc4005: allow module autoloading via OF compatible | *a0fdccb1c9usb: gadget: f_fs: Fix race between aio_cancel() and AIO request complete | *b55bc52521usb: gadget: f_fs: use io_data->status consistently | *e8b8582355btrfs: fix wrong block_start calculation for btrfs_drop_extent_map_range() | *b45cfd9bdeBluetooth: qca: fix invalid device address check | *2498960dacipv6: fix possible race in __fib6_drop_pcpu_from() | *6b9ff1620daf_unix: Annotate data-race of sk->sk_shutdown in sk_diag_fill(). | *4a967bac16af_unix: Use skb_queue_len_lockless() in sk_diag_show_rqlen(). | *e3f2599e9aaf_unix: Use skb_queue_empty_lockless() in unix_release_sock(). | *4c64c3e2f5af_unix: annotate lockless accesses to sk->sk_err | *f5c4276607af_unix: Use unix_recvq_full_lockless() in unix_stream_connect(). | *8b29fcd7f3af_unix: Annotate data-race of net->unx.sysctl_max_dgram_qlen. | *19425cfe59af_unix: Annotate data-races around sk->sk_state in UNIX_DIAG. | *fda68a7da8af_unix: Annotate data-race of sk->sk_state in unix_stream_read_skb(). | *f53cf0449eaf_unix: Annotate data-races around sk->sk_state in sendmsg() and recvmsg(). | *018fc5d9dbaf_unix: Annotate data-race of sk->sk_state in unix_stream_connect(). | *35bdc364e1af_unix: Annotate data-races around sk->sk_state in unix_write_space() and poll(). | *a8814322e5af_unix: Annotate data-race of sk->sk_state in unix_inq_len(). | *a59dc9cb03af_unix: Annodate data-races around sk->sk_state for writers. | *ca32605565af_unix: Set sk->sk_state under unix_state_lock() for truly disconencted peer. | *fe394d59cdnet: wwan: iosm: Fix tainted pointer delete is case of region creation fail | *a62c50545bice: remove af_xdp_zc_qps bitmap | *447a5433bdice: remove null checks before devm_kfree() calls | *a388961be5ice: Introduce new parameters in ice_sched_node | *17ccdebe5aice: fix iteration of TLVs in Preserved Fields Area | *952557eb6eptp: Fix error message on failed pin verification | *0bf6cc9661net/sched: taprio: always validate TCA_TAPRIO_ATTR_PRIOMAP | *531eab2da2net/mlx5: Fix tainted pointer delete is case of flow rules creation fail | *e7d4485d47net/mlx5: Always stop health timer during driver removal | *0819acb87bnet/mlx5: Split function_setup() to enable and open functions | *0c42eef3f0net/mlx5: Stop waiting for PCI if pci channel is offline | *e4df7b53a4net/mlx5: Stop waiting for PCI up if teardown was triggered | *a2ab7dae67tcp: count CLOSE-WAIT sockets for TCP_MIB_CURRESTAB | *a31d0e5debvxlan: Fix regression when dropping packets due to invalid src addresses | *0f208fad86net: sched: sch_multiq: fix possible OOB write in multiq_tune() | *1a0c20c056net/smc: avoid overwriting when adjusting sock bufsizes | *87ef68f3afocteontx2-af: Always allocate PF entries from low prioriy zone | *3708b6c254bpf: Set run context for rawtp test_run callback | *a170d5a40fipv6: sr: block BH in seg6_output_core() and seg6_input_core() | *9b3d1ba4a4ipv6: ioam: block BH from ioam6_output() | *9bcdfdc6a6net/ncsi: Fix the multi thread manner of NCSI driver | *f2cd7e1b48net/ncsi: Simplify Kconfig/dts control flow | *e6ad2311e0ax25: Replace kfree() in ax25_dev_free() with ax25_dev_put() | *f4df9d6c8dax25: Fix refcount imbalance on inbound connections | *bd403f3989wifi: mac80211: correctly parse Spatial Reuse Parameter Set element | *a8bc8276afwifi: iwlwifi: mvm: don't read past the mfuart notifcation | *9e719ae3abwifi: iwlwifi: mvm: check n_ssids before accessing the ssids | *ca4c230788wifi: iwlwifi: dbg_ini: move iwl_dbg_tlv_free outside of debugfs ifdef | *8014a7dbbfwifi: iwlwifi: mvm: revert gen2 TX A-MPDU size to 64 | *a5c20830fbwifi: cfg80211: pmsr: use correct nla_get_uX functions | *6d540b0317wifi: cfg80211: Lock wiphy in cfg80211_get_station | *96c950d6b0wifi: cfg80211: fully move wiphy work to unbound workqueue | *9c49b58b9awifi: mac80211: Fix deadlock in ieee80211_sta_ps_deliver_wakeup() | *617dadbfb2wifi: mac80211: mesh: Fix leak of mesh_preq_queue objects * |c6bbb760e9ANDROID: ABI fixup for abi break in struct dst_ops * |079775fd35Merge 6.1.94 into android14-6.1-lts |/ *eb44d83053Linux 6.1.94 *6d6fe13ccasmp: Provide 'setup_max_cpus' definition on UP too *b09b556e48smb: client: fix deadlock in smb2_find_smb_tcon() *3174d8b7c9powerpc/bpf: enforce full ordering for ATOMIC operations with BPF_FETCH *1ff2bd566fbtrfs: fix crash on racing fsync and size-extending write into prealloc *e601937b5bNFS: Fix READ_PLUS when server doesn't support OP_READ_PLUS *a54419e60enfs: fix undefined behavior in nfs_block_bits() *728b663f5eEDAC/igen6: Convert PCIBIOS_* return codes to errnos *4e060b308di3c: master: svc: fix invalidate IBI type and miss call client IBI handler *07c8050f8cs390/cpacf: Make use of invalid opcode produce a link error *1d39dcff47s390/cpacf: Split and rework cpacf query functions *8c5f5911c1s390/ap: Fix crash in AP internal function modify_bitmap() *ff19ea00a5parisc: Define sigset_t in parisc uapi header *bca17801fbparisc: Define HAVE_ARCH_HUGETLB_UNMAPPED_AREA *e941b712e7ext4: fix mb_cache_entry's e_refcnt leak in ext4_xattr_block_cache_find() *16a392f66aext4: set type of ac_groups_linear_remaining to __u32 to avoid overflow *d47445b041sparc: move struct termio to asm/termios.h *81dd3c82a4net: fix __dst_negative_advice() race *10938be35ekdb: Use format-specifiers rather than memset() for padding in kdb_read() *60e2a14a81kdb: Merge identical case statements in kdb_read() *0ec478e7a1kdb: Fix console handling when editing and tab-completing commands *b4e6a259f8kdb: Use format-strings rather than '\0' injection in kdb_read() *33d9c81465kdb: Fix buffer overflow during tab-complete *6da1ffc4bcwatchdog: rti_wdt: Set min_hw_heartbeat_ms to accommodate a safety margin *c7071d3052mm/hugetlb: pass correct order_per_bit to cma_declare_contiguous_nid *04b4278245mm/cma: drop incorrect alignment check in cma_init_reserved_mem *14a339e7d7sparc64: Fix number of online CPUs *3ec82c9a15intel_th: pci: Add Meteor Lake-S CPU support *82590ce3a0cpufreq: amd-pstate: Fix the inconsistency in max frequency units *9ff078f5bakmsan: do not wipe out origin when doing partial unpoisoning *ca71f20471net/9p: fix uninit-value in p9_client_rpc() *6684086359net/ipv6: Fix route deleting failure when metric equals 0 *65bb86fbc8scsi: core: Handle devices which return an unusually large VPD page count *7a2bc8b34emm: fix race between __split_huge_pmd_locked() and GUP-fast *e7428e7e3fcrypto: qat - Fix ADF_DEV_RESET_SYNC memory leak *dd999fdeeecrypto: ecrdsa - Fix module auto-load on add_key *458458c130crypto: ecdsa - Fix module auto-load on add-key *e0032f5c08KVM: arm64: AArch32: Fix spurious trapping of conditional instructions *5b12ce0b6fKVM: arm64: Allow AArch32 PSTATE.M to be restored as System mode *4f902f03efKVM: arm64: Fix AArch32 register narrowing on userspace write *7da44257e6drm/amd: Fix shutdown (again) on some SMU v13.0.4/11 platforms *cb299cdba09p: add missing locking around taking dentry fid list *97820893f2drm/amdgpu/atomfirmware: add intergrated info v2.3 table *edaa57480bfbdev: savage: Handle err return when savagefb_check_var failed *1a156761fcmmc: sdhci-acpi: Add quirk to enable pull-up on the card-detect GPIO on Asus T100TA *4ac34dc6b4mmc: sdhci-acpi: Disable write protect detection on Toshiba WT10-A *21109f137ammc: sdhci-acpi: Fix Lenovo Yoga Tablet 2 Pro 1380 sdcard slot not working *c2107d3024mmc: sdhci-acpi: Sort DMI quirks alphabetically *32b76505bammc: sdhci: Add support for "Tuning Error" interrupts *36a28616d4mmc: core: Add mmc_gpiod_set_cd_config() function *7170d0c0damedia: v4l2-core: hold videodev_lock until dev reg, finishes *5d931a2694media: mxl5xx: Move xpt structures off stack *9ef7ee4cb6media: mc: mark the media devnode as registered from the, start *788fd0f11emedia: mc: Fix graph walk in media_pipeline_start *9d180538dearm64: dts: hi3798cv200: fix the size of GICR *46fe2af45cwifi: rtlwifi: rtl8192de: Fix endianness issue in RX path *6973383af5wifi: rtlwifi: rtl8192de: Fix low speed with WPA3-SAE *83daddb601wifi: rtlwifi: rtl8192de: Fix 5 GHz TX power *2c13c9f6cawifi: rtl8xxxu: Fix the TX power of RTL8192CU, RTL8723AU *c365394a41wifi: rtw89: pci: correct TX resource checking for PCI DMA channel of firmware command *3f8d5e802dmd/raid5: fix deadlock that raid5d() wait for itself to clear MD_SB_CHANGE_PENDING *3f09972198arm64: dts: qcom: qcs404: fix bluetooth device address *2eea8b448earm64: tegra: Correct Tegra132 I2C alias *ef2f4d60c3ACPI: resource: Do IRQ override on TongFang GXxHRXx and GMxHGxx *3988a2850bsoc: qcom: rpmh-rsc: Enhance check for VRM in-flight request *560d69c975thermal/drivers/qcom/lmh: Check for SCM availability at probe *5e0d41aa53ata: pata_legacy: make legacy_exit() work again *336b8b2e90wifi: rtw89: correct aSIFSTime for 6GHz band *934e1e4331bcache: fix variable length array abuse in btree_iter *011552f29fdrm/amdgpu: add error handle to avoid out-of-bounds *d082757b83media: lgdt3306a: Add a check against null-pointer-def *8c8aa473fef2fs: fix to do sanity check on i_xattr_nid in sanity_check_inode() *376fad5e52scripts/gdb: fix SB_* constants parsing *6bbd9c021cvxlan: Fix regression when dropping packets due to invalid src addresses *7a898d5ed4mptcp: fix full TCP keep-alive support *dc62d53f01mptcp: cleanup SOL_TCP handling *e7d48faa15mptcp: avoid some duplicate code in socket option handling *164320fc22drm/i915/audio: Fix audio time stamp programming for DP *86a30d6302nilfs2: fix use-after-free of timer for log writer thread *79fc40a29driscv: signal: handle syscall restart before get_signal *bc20a0a290afs: Don't cross .backup mountpoint from backup volume *265426254dmmc: core: Do not force a retune before RPMB switch *883e5d542bmaple_tree: fix mas_empty_area_rev() null pointer dereference *34f3005303maple_tree: fix allocation in mas_sparse_area() *cf0df43520Bluetooth: btrtl: Add missing MODULE_FIRMWARE declarations *a17e06d709drm: Check polling initialized before enabling in drm_helper_probe_single_connector_modes *4ad8d57d90drm: Check output polling initialized before disabling Change-Id: I849966e53c4a46d2ee81b3b6078f953a08502872 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
# Copyright 2019 BayLibre, SAS
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: "http://devicetree.org/schemas/i2c/amlogic,meson6-i2c.yaml#"
|
||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||
$id: http://devicetree.org/schemas/i2c/amlogic,meson6-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Amlogic Meson I2C Controller
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: "http://devicetree.org/schemas/i2c/apple,i2c.yaml#"
|
||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||
$id: http://devicetree.org/schemas/i2c/apple,i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Apple/PASemi I2C controller
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ required:
|
||||
- clocks
|
||||
|
||||
allOf:
|
||||
- $ref: "i2c-controller.yaml"
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: "http://devicetree.org/schemas/i2c/cdns,i2c-r1p10.yaml#"
|
||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||
$id: http://devicetree.org/schemas/i2c/cdns,i2c-r1p10.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Cadence I2C controller
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ description: |
|
||||
google,cros-ec-spi or google,cros-ec-i2c.
|
||||
|
||||
allOf:
|
||||
- $ref: i2c-controller.yaml#
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
|
||||
@@ -45,7 +45,7 @@ properties:
|
||||
|
||||
i2c-parent:
|
||||
description: phandle of the I2C bus that this multiplexer's master-side port is connected to
|
||||
$ref: "/schemas/types.yaml#/definitions/phandle"
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
|
||||
mux-gpios:
|
||||
description: list of GPIOs used to control the muxer
|
||||
@@ -55,7 +55,7 @@ properties:
|
||||
idle-state:
|
||||
description: Value to set the muxer to when idle. When no value is given, it defaults to the
|
||||
last value used.
|
||||
$ref: "/schemas/types.yaml#/definitions/uint32"
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
allOf:
|
||||
- $ref: i2c-mux.yaml
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: "http://devicetree.org/schemas/i2c/qcom,i2c-geni-qcom.yaml#"
|
||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||
$id: http://devicetree.org/schemas/i2c/qcom,i2c-geni-qcom.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Geni based QUP I2C Controller
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ properties:
|
||||
st,syscfg-fmp:
|
||||
description: Use to set Fast Mode Plus bit within SYSCFG when Fast Mode
|
||||
Plus speed is selected by slave.
|
||||
$ref: "/schemas/types.yaml#/definitions/phandle-array"
|
||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||
items:
|
||||
- items:
|
||||
- description: phandle to syscfg
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: "http://devicetree.org/schemas/i2c/xlnx,xps-iic-2.00.a.yaml#"
|
||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||
$id: http://devicetree.org/schemas/i2c/xlnx,xps-iic-2.00.a.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Xilinx IIC controller
|
||||
|
||||
|
||||
@@ -136,7 +136,8 @@ PMD Page Table Helpers
|
||||
+---------------------------+--------------------------------------------------+
|
||||
| pmd_swp_clear_soft_dirty | Clears a soft dirty swapped PMD |
|
||||
+---------------------------+--------------------------------------------------+
|
||||
| pmd_mkinvalid | Invalidates a mapped PMD [1] |
|
||||
| pmd_mkinvalid | Invalidates a present PMD; do not call for |
|
||||
| | non-present PMD [1] |
|
||||
+---------------------------+--------------------------------------------------+
|
||||
| pmd_set_huge | Creates a PMD huge mapping |
|
||||
+---------------------------+--------------------------------------------------+
|
||||
@@ -192,7 +193,8 @@ PUD Page Table Helpers
|
||||
+---------------------------+--------------------------------------------------+
|
||||
| pud_mkdevmap | Creates a ZONE_DEVICE mapped PUD |
|
||||
+---------------------------+--------------------------------------------------+
|
||||
| pud_mkinvalid | Invalidates a mapped PUD [1] |
|
||||
| pud_mkinvalid | Invalidates a present PUD; do not call for |
|
||||
| | non-present PUD [1] |
|
||||
+---------------------------+--------------------------------------------------+
|
||||
| pud_set_huge | Creates a PUD huge mapping |
|
||||
+---------------------------+--------------------------------------------------+
|
||||
|
||||
7
Makefile
7
Makefile
@@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 6
|
||||
PATCHLEVEL = 1
|
||||
SUBLEVEL = 93
|
||||
SUBLEVEL = 99
|
||||
EXTRAVERSION =
|
||||
NAME = Curry Ramen
|
||||
|
||||
@@ -1002,7 +1002,6 @@ endif
|
||||
ifdef CONFIG_LTO_CLANG
|
||||
ifdef CONFIG_LTO_CLANG_THIN
|
||||
CC_FLAGS_LTO := -flto=thin -fsplit-lto-unit
|
||||
KBUILD_LDFLAGS += --thinlto-cache-dir=$(extmod_prefix).thinlto-cache
|
||||
else
|
||||
CC_FLAGS_LTO := -flto
|
||||
endif
|
||||
@@ -1629,7 +1628,7 @@ endif # CONFIG_MODULES
|
||||
# Directories & files removed with 'make clean'
|
||||
CLEAN_FILES += include/ksym vmlinux.symvers modules-only.symvers \
|
||||
modules.builtin modules.builtin.modinfo modules.nsdeps \
|
||||
compile_commands.json .thinlto-cache rust/test rust/doc \
|
||||
compile_commands.json rust/test rust/doc \
|
||||
.vmlinux.objs .vmlinux.export.c
|
||||
|
||||
# Directories & files removed with 'make mrproper'
|
||||
@@ -1925,7 +1924,7 @@ PHONY += compile_commands.json
|
||||
|
||||
clean-dirs := $(KBUILD_EXTMOD)
|
||||
clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers $(KBUILD_EXTMOD)/modules.nsdeps \
|
||||
$(KBUILD_EXTMOD)/compile_commands.json $(KBUILD_EXTMOD)/.thinlto-cache
|
||||
$(KBUILD_EXTMOD)/compile_commands.json
|
||||
|
||||
PHONY += prepare
|
||||
# now expand this into a simple variable to reduce the cost of shell evaluations
|
||||
|
||||
@@ -1262,6 +1262,7 @@
|
||||
can_ethtool_op_get_ts_info_hwts
|
||||
can_fd_dlc2len
|
||||
can_fd_len2dlc
|
||||
can_free_echo_skb
|
||||
can_put_echo_skb
|
||||
can_rx_offload_add_manual
|
||||
can_rx_offload_del
|
||||
@@ -1294,6 +1295,7 @@
|
||||
timecounter_read
|
||||
unregister_candev
|
||||
__vmalloc
|
||||
work_busy
|
||||
|
||||
# required by mhi.ko
|
||||
get_random_u32
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
&keypad {
|
||||
samsung,keypad-num-rows = <2>;
|
||||
samsung,keypad-num-columns = <8>;
|
||||
linux,keypad-no-autorepeat;
|
||||
linux,input-no-autorepeat;
|
||||
wakeup-source;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&keypad_rows &keypad_cols>;
|
||||
|
||||
@@ -448,7 +448,7 @@
|
||||
&keypad {
|
||||
samsung,keypad-num-rows = <3>;
|
||||
samsung,keypad-num-columns = <2>;
|
||||
linux,keypad-no-autorepeat;
|
||||
linux,input-no-autorepeat;
|
||||
wakeup-source;
|
||||
pinctrl-0 = <&keypad_rows &keypad_cols>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
&keypad {
|
||||
samsung,keypad-num-rows = <3>;
|
||||
samsung,keypad-num-columns = <8>;
|
||||
linux,keypad-no-autorepeat;
|
||||
linux,input-no-autorepeat;
|
||||
wakeup-source;
|
||||
pinctrl-0 = <&keypad_rows &keypad_cols>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
@@ -123,6 +123,7 @@
|
||||
pinctrl-0 = <&hdmii2c_xfer>, <&hdmi_hpd>;
|
||||
power-domains = <&power RK3066_PD_VIO>;
|
||||
rockchip,grf = <&grf>;
|
||||
#sound-dai-cells = <0>;
|
||||
status = "disabled";
|
||||
|
||||
ports {
|
||||
|
||||
@@ -930,7 +930,7 @@
|
||||
/* Verdin GPIO_9_DSI (pulled-up as active-low) */
|
||||
pinctrl_gpio_9_dsi: gpio9dsigrp {
|
||||
fsl,pins =
|
||||
<MX8MM_IOMUXC_NAND_RE_B_GPIO3_IO15 0x146>; /* SODIMM 17 */
|
||||
<MX8MM_IOMUXC_NAND_RE_B_GPIO3_IO15 0x1c6>; /* SODIMM 17 */
|
||||
};
|
||||
|
||||
/* Verdin GPIO_10_DSI (pulled-up as active-low) */
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
regulator-name = "SD1_SPWR";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
gpio = <&lsio_gpio4 19 GPIO_ACTIVE_HIGH>;
|
||||
gpio = <&lsio_gpio4 7 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -60,7 +60,6 @@
|
||||
vmmc-supply = <®_usdhc2_vmmc>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
no-sdio;
|
||||
no-mmc;
|
||||
};
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
gic: interrupt-controller@f1001000 {
|
||||
compatible = "arm,gic-400";
|
||||
reg = <0x0 0xf1001000 0x0 0x1000>, /* GICD */
|
||||
<0x0 0xf1002000 0x0 0x100>; /* GICC */
|
||||
<0x0 0xf1002000 0x0 0x2000>; /* GICC */
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <3>;
|
||||
interrupt-controller;
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
compatible = "nvidia,norrin", "nvidia,tegra132", "nvidia,tegra124";
|
||||
|
||||
aliases {
|
||||
rtc0 = "/i2c@7000d000/as3722@40";
|
||||
rtc1 = "/rtc@7000e000";
|
||||
rtc0 = &as3722;
|
||||
rtc1 = &tegra_rtc;
|
||||
serial0 = &uarta;
|
||||
};
|
||||
|
||||
|
||||
@@ -579,7 +579,7 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
rtc@7000e000 {
|
||||
tegra_rtc: rtc@7000e000 {
|
||||
compatible = "nvidia,tegra124-rtc", "nvidia,tegra20-rtc";
|
||||
reg = <0x0 0x7000e000 0x0 0x100>;
|
||||
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
vddrf-supply = <&vreg_l1_1p3>;
|
||||
vddch0-supply = <&vdd_ch0_3p3>;
|
||||
|
||||
local-bd-address = [ 02 00 00 00 5a ad ];
|
||||
local-bd-address = [ 00 00 00 00 00 00 ];
|
||||
|
||||
max-speed = <3200000>;
|
||||
};
|
||||
|
||||
@@ -372,6 +372,16 @@
|
||||
};
|
||||
};
|
||||
|
||||
&pmm8155au_1_gpios {
|
||||
pmm8155au_1_sdc2_cd: sdc2-cd-default-state {
|
||||
pins = "gpio4";
|
||||
function = "normal";
|
||||
input-enable;
|
||||
bias-pull-up;
|
||||
power-source = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&qupv3_id_1 {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -389,10 +399,10 @@
|
||||
&sdhc_2 {
|
||||
status = "okay";
|
||||
|
||||
cd-gpios = <&tlmm 4 GPIO_ACTIVE_LOW>;
|
||||
cd-gpios = <&pmm8155au_1_gpios 4 GPIO_ACTIVE_LOW>;
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&sdc2_on>;
|
||||
pinctrl-1 = <&sdc2_off>;
|
||||
pinctrl-0 = <&sdc2_on &pmm8155au_1_sdc2_cd>;
|
||||
pinctrl-1 = <&sdc2_off &pmm8155au_1_sdc2_cd>;
|
||||
vqmmc-supply = <&vreg_l13c_2p96>; /* IO line power */
|
||||
vmmc-supply = <&vreg_l17a_2p96>; /* Card power line */
|
||||
bus-width = <4>;
|
||||
@@ -488,120 +498,102 @@
|
||||
&tlmm {
|
||||
gpio-reserved-ranges = <0 4>;
|
||||
|
||||
sdc2_on: sdc2_on {
|
||||
clk {
|
||||
sdc2_on: sdc2-on-state {
|
||||
clk-pins {
|
||||
pins = "sdc2_clk";
|
||||
bias-disable; /* No pull */
|
||||
drive-strength = <16>; /* 16 MA */
|
||||
};
|
||||
|
||||
cmd {
|
||||
cmd-pins {
|
||||
pins = "sdc2_cmd";
|
||||
bias-pull-up; /* pull up */
|
||||
drive-strength = <16>; /* 16 MA */
|
||||
};
|
||||
|
||||
data {
|
||||
data-pins {
|
||||
pins = "sdc2_data";
|
||||
bias-pull-up; /* pull up */
|
||||
drive-strength = <16>; /* 16 MA */
|
||||
};
|
||||
|
||||
sd-cd {
|
||||
pins = "gpio96";
|
||||
function = "gpio";
|
||||
bias-pull-up; /* pull up */
|
||||
drive-strength = <2>; /* 2 MA */
|
||||
};
|
||||
};
|
||||
|
||||
sdc2_off: sdc2_off {
|
||||
clk {
|
||||
sdc2_off: sdc2-off-state {
|
||||
clk-pins {
|
||||
pins = "sdc2_clk";
|
||||
bias-disable; /* No pull */
|
||||
drive-strength = <2>; /* 2 MA */
|
||||
};
|
||||
|
||||
cmd {
|
||||
cmd-pins {
|
||||
pins = "sdc2_cmd";
|
||||
bias-pull-up; /* pull up */
|
||||
drive-strength = <2>; /* 2 MA */
|
||||
};
|
||||
|
||||
data {
|
||||
data-pins {
|
||||
pins = "sdc2_data";
|
||||
bias-pull-up; /* pull up */
|
||||
drive-strength = <2>; /* 2 MA */
|
||||
};
|
||||
|
||||
sd-cd {
|
||||
pins = "gpio96";
|
||||
function = "gpio";
|
||||
bias-pull-up; /* pull up */
|
||||
drive-strength = <2>; /* 2 MA */
|
||||
};
|
||||
};
|
||||
|
||||
usb2phy_ac_en1_default: usb2phy_ac_en1_default {
|
||||
mux {
|
||||
pins = "gpio113";
|
||||
function = "usb2phy_ac";
|
||||
bias-disable;
|
||||
drive-strength = <2>;
|
||||
};
|
||||
usb2phy_ac_en1_default: usb2phy-ac-en1-default-state {
|
||||
pins = "gpio113";
|
||||
function = "usb2phy_ac";
|
||||
bias-disable;
|
||||
drive-strength = <2>;
|
||||
};
|
||||
|
||||
usb2phy_ac_en2_default: usb2phy_ac_en2_default {
|
||||
mux {
|
||||
pins = "gpio123";
|
||||
function = "usb2phy_ac";
|
||||
bias-disable;
|
||||
drive-strength = <2>;
|
||||
};
|
||||
usb2phy_ac_en2_default: usb2phy-ac-en2-default-state {
|
||||
pins = "gpio123";
|
||||
function = "usb2phy_ac";
|
||||
bias-disable;
|
||||
drive-strength = <2>;
|
||||
};
|
||||
|
||||
ethernet_defaults: ethernet-defaults {
|
||||
mdc {
|
||||
ethernet_defaults: ethernet-defaults-state {
|
||||
mdc-pins {
|
||||
pins = "gpio7";
|
||||
function = "rgmii";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
mdio {
|
||||
mdio-pins {
|
||||
pins = "gpio59";
|
||||
function = "rgmii";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
rgmii-rx {
|
||||
rgmii-rx-pins {
|
||||
pins = "gpio117", "gpio118", "gpio119", "gpio120", "gpio115", "gpio116";
|
||||
function = "rgmii";
|
||||
bias-disable;
|
||||
drive-strength = <2>;
|
||||
};
|
||||
|
||||
rgmii-tx {
|
||||
rgmii-tx-pins {
|
||||
pins = "gpio122", "gpio4", "gpio5", "gpio6", "gpio114", "gpio121";
|
||||
function = "rgmii";
|
||||
bias-pull-up;
|
||||
drive-strength = <16>;
|
||||
};
|
||||
|
||||
phy-intr {
|
||||
phy-intr-pins {
|
||||
pins = "gpio124";
|
||||
function = "emac_phy";
|
||||
bias-disable;
|
||||
drive-strength = <8>;
|
||||
};
|
||||
|
||||
pps {
|
||||
pps-pins {
|
||||
pins = "gpio81";
|
||||
function = "emac_pps";
|
||||
bias-disable;
|
||||
drive-strength = <8>;
|
||||
};
|
||||
|
||||
phy-reset {
|
||||
phy-reset-pins {
|
||||
pins = "gpio79";
|
||||
function = "gpio";
|
||||
bias-pull-up;
|
||||
|
||||
@@ -475,7 +475,7 @@
|
||||
&tlmm {
|
||||
gpio-reserved-ranges = <126 4>;
|
||||
|
||||
da7280_intr_default: da7280-intr-default {
|
||||
da7280_intr_default: da7280-intr-default-state {
|
||||
pins = "gpio42";
|
||||
function = "gpio";
|
||||
bias-pull-up;
|
||||
|
||||
@@ -2284,422 +2284,302 @@
|
||||
#interrupt-cells = <2>;
|
||||
wakeup-parent = <&pdc>;
|
||||
|
||||
qup_i2c0_default: qup-i2c0-default {
|
||||
mux {
|
||||
pins = "gpio0", "gpio1";
|
||||
function = "qup0";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio0", "gpio1";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c0_default: qup-i2c0-default-state {
|
||||
pins = "gpio0", "gpio1";
|
||||
function = "qup0";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi0_default: qup-spi0-default {
|
||||
qup_spi0_default: qup-spi0-default-state {
|
||||
pins = "gpio0", "gpio1", "gpio2", "gpio3";
|
||||
function = "qup0";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c1_default: qup-i2c1-default {
|
||||
mux {
|
||||
pins = "gpio114", "gpio115";
|
||||
function = "qup1";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio114", "gpio115";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c1_default: qup-i2c1-default-state {
|
||||
pins = "gpio114", "gpio115";
|
||||
function = "qup1";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi1_default: qup-spi1-default {
|
||||
qup_spi1_default: qup-spi1-default-state {
|
||||
pins = "gpio114", "gpio115", "gpio116", "gpio117";
|
||||
function = "qup1";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c2_default: qup-i2c2-default {
|
||||
mux {
|
||||
pins = "gpio126", "gpio127";
|
||||
function = "qup2";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio126", "gpio127";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c2_default: qup-i2c2-default-state {
|
||||
pins = "gpio126", "gpio127";
|
||||
function = "qup2";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi2_default: qup-spi2-default {
|
||||
qup_spi2_default: qup-spi2-default-state {
|
||||
pins = "gpio126", "gpio127", "gpio128", "gpio129";
|
||||
function = "qup2";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c3_default: qup-i2c3-default {
|
||||
mux {
|
||||
pins = "gpio144", "gpio145";
|
||||
function = "qup3";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio144", "gpio145";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c3_default: qup-i2c3-default-state {
|
||||
pins = "gpio144", "gpio145";
|
||||
function = "qup3";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi3_default: qup-spi3-default {
|
||||
qup_spi3_default: qup-spi3-default-state {
|
||||
pins = "gpio144", "gpio145", "gpio146", "gpio147";
|
||||
function = "qup3";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c4_default: qup-i2c4-default {
|
||||
mux {
|
||||
pins = "gpio51", "gpio52";
|
||||
function = "qup4";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio51", "gpio52";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c4_default: qup-i2c4-default-state {
|
||||
pins = "gpio51", "gpio52";
|
||||
function = "qup4";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi4_default: qup-spi4-default {
|
||||
qup_spi4_default: qup-spi4-default-state {
|
||||
pins = "gpio51", "gpio52", "gpio53", "gpio54";
|
||||
function = "qup4";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c5_default: qup-i2c5-default {
|
||||
mux {
|
||||
pins = "gpio121", "gpio122";
|
||||
function = "qup5";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio121", "gpio122";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c5_default: qup-i2c5-default-state {
|
||||
pins = "gpio121", "gpio122";
|
||||
function = "qup5";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi5_default: qup-spi5-default {
|
||||
qup_spi5_default: qup-spi5-default-state {
|
||||
pins = "gpio119", "gpio120", "gpio121", "gpio122";
|
||||
function = "qup5";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c6_default: qup-i2c6-default {
|
||||
mux {
|
||||
pins = "gpio6", "gpio7";
|
||||
function = "qup6";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio6", "gpio7";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c6_default: qup-i2c6-default-state {
|
||||
pins = "gpio6", "gpio7";
|
||||
function = "qup6";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi6_default: qup-spi6_default {
|
||||
qup_spi6_default: qup-spi6_default-state {
|
||||
pins = "gpio4", "gpio5", "gpio6", "gpio7";
|
||||
function = "qup6";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c7_default: qup-i2c7-default {
|
||||
mux {
|
||||
pins = "gpio98", "gpio99";
|
||||
function = "qup7";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio98", "gpio99";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c7_default: qup-i2c7-default-state {
|
||||
pins = "gpio98", "gpio99";
|
||||
function = "qup7";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi7_default: qup-spi7_default {
|
||||
qup_spi7_default: qup-spi7_default-state {
|
||||
pins = "gpio98", "gpio99", "gpio100", "gpio101";
|
||||
function = "qup7";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c8_default: qup-i2c8-default {
|
||||
mux {
|
||||
pins = "gpio88", "gpio89";
|
||||
function = "qup8";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio88", "gpio89";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c8_default: qup-i2c8-default-state {
|
||||
pins = "gpio88", "gpio89";
|
||||
function = "qup8";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi8_default: qup-spi8-default {
|
||||
qup_spi8_default: qup-spi8-default-state {
|
||||
pins = "gpio88", "gpio89", "gpio90", "gpio91";
|
||||
function = "qup8";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c9_default: qup-i2c9-default {
|
||||
mux {
|
||||
pins = "gpio39", "gpio40";
|
||||
function = "qup9";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio39", "gpio40";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c9_default: qup-i2c9-default-state {
|
||||
pins = "gpio39", "gpio40";
|
||||
function = "qup9";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi9_default: qup-spi9-default {
|
||||
qup_spi9_default: qup-spi9-default-state {
|
||||
pins = "gpio39", "gpio40", "gpio41", "gpio42";
|
||||
function = "qup9";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c10_default: qup-i2c10-default {
|
||||
mux {
|
||||
pins = "gpio9", "gpio10";
|
||||
function = "qup10";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio9", "gpio10";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c10_default: qup-i2c10-default-state {
|
||||
pins = "gpio9", "gpio10";
|
||||
function = "qup10";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi10_default: qup-spi10-default {
|
||||
qup_spi10_default: qup-spi10-default-state {
|
||||
pins = "gpio9", "gpio10", "gpio11", "gpio12";
|
||||
function = "qup10";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c11_default: qup-i2c11-default {
|
||||
mux {
|
||||
pins = "gpio94", "gpio95";
|
||||
function = "qup11";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio94", "gpio95";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c11_default: qup-i2c11-default-state {
|
||||
pins = "gpio94", "gpio95";
|
||||
function = "qup11";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi11_default: qup-spi11-default {
|
||||
qup_spi11_default: qup-spi11-default-state {
|
||||
pins = "gpio92", "gpio93", "gpio94", "gpio95";
|
||||
function = "qup11";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c12_default: qup-i2c12-default {
|
||||
mux {
|
||||
pins = "gpio83", "gpio84";
|
||||
function = "qup12";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio83", "gpio84";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c12_default: qup-i2c12-default-state {
|
||||
pins = "gpio83", "gpio84";
|
||||
function = "qup12";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi12_default: qup-spi12-default {
|
||||
qup_spi12_default: qup-spi12-default-state {
|
||||
pins = "gpio83", "gpio84", "gpio85", "gpio86";
|
||||
function = "qup12";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c13_default: qup-i2c13-default {
|
||||
mux {
|
||||
pins = "gpio43", "gpio44";
|
||||
function = "qup13";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio43", "gpio44";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c13_default: qup-i2c13-default-state {
|
||||
pins = "gpio43", "gpio44";
|
||||
function = "qup13";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi13_default: qup-spi13-default {
|
||||
qup_spi13_default: qup-spi13-default-state {
|
||||
pins = "gpio43", "gpio44", "gpio45", "gpio46";
|
||||
function = "qup13";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c14_default: qup-i2c14-default {
|
||||
mux {
|
||||
pins = "gpio47", "gpio48";
|
||||
function = "qup14";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio47", "gpio48";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c14_default: qup-i2c14-default-state {
|
||||
pins = "gpio47", "gpio48";
|
||||
function = "qup14";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi14_default: qup-spi14-default {
|
||||
qup_spi14_default: qup-spi14-default-state {
|
||||
pins = "gpio47", "gpio48", "gpio49", "gpio50";
|
||||
function = "qup14";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c15_default: qup-i2c15-default {
|
||||
mux {
|
||||
pins = "gpio27", "gpio28";
|
||||
function = "qup15";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio27", "gpio28";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c15_default: qup-i2c15-default-state {
|
||||
pins = "gpio27", "gpio28";
|
||||
function = "qup15";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi15_default: qup-spi15-default {
|
||||
qup_spi15_default: qup-spi15-default-state {
|
||||
pins = "gpio27", "gpio28", "gpio29", "gpio30";
|
||||
function = "qup15";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c16_default: qup-i2c16-default {
|
||||
mux {
|
||||
pins = "gpio86", "gpio85";
|
||||
function = "qup16";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio86", "gpio85";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c16_default: qup-i2c16-default-state {
|
||||
pins = "gpio86", "gpio85";
|
||||
function = "qup16";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi16_default: qup-spi16-default {
|
||||
qup_spi16_default: qup-spi16-default-state {
|
||||
pins = "gpio83", "gpio84", "gpio85", "gpio86";
|
||||
function = "qup16";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c17_default: qup-i2c17-default {
|
||||
mux {
|
||||
pins = "gpio55", "gpio56";
|
||||
function = "qup17";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio55", "gpio56";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c17_default: qup-i2c17-default-state {
|
||||
pins = "gpio55", "gpio56";
|
||||
function = "qup17";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi17_default: qup-spi17-default {
|
||||
qup_spi17_default: qup-spi17-default-state {
|
||||
pins = "gpio55", "gpio56", "gpio57", "gpio58";
|
||||
function = "qup17";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c18_default: qup-i2c18-default {
|
||||
mux {
|
||||
pins = "gpio23", "gpio24";
|
||||
function = "qup18";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio23", "gpio24";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c18_default: qup-i2c18-default-state {
|
||||
pins = "gpio23", "gpio24";
|
||||
function = "qup18";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi18_default: qup-spi18-default {
|
||||
qup_spi18_default: qup-spi18-default-state {
|
||||
pins = "gpio23", "gpio24", "gpio25", "gpio26";
|
||||
function = "qup18";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_i2c19_default: qup-i2c19-default {
|
||||
mux {
|
||||
pins = "gpio57", "gpio58";
|
||||
function = "qup19";
|
||||
};
|
||||
|
||||
config {
|
||||
pins = "gpio57", "gpio58";
|
||||
drive-strength = <0x02>;
|
||||
bias-disable;
|
||||
};
|
||||
qup_i2c19_default: qup-i2c19-default-state {
|
||||
pins = "gpio57", "gpio58";
|
||||
function = "qup19";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
qup_spi19_default: qup-spi19-default {
|
||||
qup_spi19_default: qup-spi19-default-state {
|
||||
pins = "gpio55", "gpio56", "gpio57", "gpio58";
|
||||
function = "qup19";
|
||||
drive-strength = <6>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pcie0_default_state: pcie0-default {
|
||||
perst {
|
||||
pcie0_default_state: pcie0-default-state {
|
||||
perst-pins {
|
||||
pins = "gpio35";
|
||||
function = "gpio";
|
||||
drive-strength = <2>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
clkreq {
|
||||
clkreq-pins {
|
||||
pins = "gpio36";
|
||||
function = "pci_e0";
|
||||
drive-strength = <2>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
wake {
|
||||
wake-pins {
|
||||
pins = "gpio37";
|
||||
function = "gpio";
|
||||
drive-strength = <2>;
|
||||
@@ -2707,22 +2587,22 @@
|
||||
};
|
||||
};
|
||||
|
||||
pcie1_default_state: pcie1-default {
|
||||
perst {
|
||||
pcie1_default_state: pcie1-default-state {
|
||||
perst-pins {
|
||||
pins = "gpio102";
|
||||
function = "gpio";
|
||||
drive-strength = <2>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
clkreq {
|
||||
clkreq-pins {
|
||||
pins = "gpio103";
|
||||
function = "pci_e1";
|
||||
drive-strength = <2>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
wake {
|
||||
wake-pins {
|
||||
pins = "gpio104";
|
||||
function = "gpio";
|
||||
drive-strength = <2>;
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include "rk3308.dtsi"
|
||||
|
||||
/ {
|
||||
@@ -24,17 +26,21 @@
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&green_led_gio>, <&heartbeat_led_gpio>;
|
||||
pinctrl-0 = <&green_led>, <&heartbeat_led>;
|
||||
|
||||
green-led {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
default-state = "on";
|
||||
function = LED_FUNCTION_POWER;
|
||||
gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
|
||||
label = "rockpis:green:power";
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
|
||||
blue-led {
|
||||
color = <LED_COLOR_ID_BLUE>;
|
||||
default-state = "on";
|
||||
function = LED_FUNCTION_HEARTBEAT;
|
||||
gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
|
||||
label = "rockpis:blue:user";
|
||||
linux,default-trigger = "heartbeat";
|
||||
@@ -127,10 +133,12 @@
|
||||
};
|
||||
|
||||
&emmc {
|
||||
bus-width = <4>;
|
||||
cap-mmc-highspeed;
|
||||
mmc-hs200-1_8v;
|
||||
cap-sd-highspeed;
|
||||
no-sdio;
|
||||
non-removable;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>;
|
||||
vmmc-supply = <&vcc_io>;
|
||||
status = "okay";
|
||||
};
|
||||
@@ -153,11 +161,11 @@
|
||||
pinctrl-0 = <&rtc_32k>;
|
||||
|
||||
leds {
|
||||
green_led_gio: green-led-gpio {
|
||||
green_led: green-led {
|
||||
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
heartbeat_led_gpio: heartbeat-led-gpio {
|
||||
heartbeat_led: heartbeat-led {
|
||||
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -186,8 +186,8 @@
|
||||
rk805: pmic@18 {
|
||||
compatible = "rockchip,rk805";
|
||||
reg = <0x18>;
|
||||
interrupt-parent = <&gpio2>;
|
||||
interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
|
||||
#clock-cells = <1>;
|
||||
clock-output-names = "xin32k", "rk805-clkout2";
|
||||
gpio-controller;
|
||||
|
||||
@@ -790,6 +790,7 @@
|
||||
dma-names = "tx";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spdif_tx>;
|
||||
#sound-dai-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -801,6 +802,7 @@
|
||||
clocks = <&cru SCLK_I2S_2CH>, <&cru HCLK_I2S_2CH>;
|
||||
dmas = <&dmac_bus 6>, <&dmac_bus 7>;
|
||||
dma-names = "tx", "rx";
|
||||
#sound-dai-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -814,6 +816,7 @@
|
||||
dma-names = "tx", "rx";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_8ch_bus>;
|
||||
#sound-dai-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
||||
@@ -290,7 +290,7 @@
|
||||
regulator-name = "vdd_gpu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-ramp-delay = <6001>;
|
||||
|
||||
@@ -840,7 +840,7 @@ __SYSCALL(__NR_pselect6_time64, compat_sys_pselect6_time64)
|
||||
#define __NR_ppoll_time64 414
|
||||
__SYSCALL(__NR_ppoll_time64, compat_sys_ppoll_time64)
|
||||
#define __NR_io_pgetevents_time64 416
|
||||
__SYSCALL(__NR_io_pgetevents_time64, sys_io_pgetevents)
|
||||
__SYSCALL(__NR_io_pgetevents_time64, compat_sys_io_pgetevents_time64)
|
||||
#define __NR_recvmmsg_time64 417
|
||||
__SYSCALL(__NR_recvmmsg_time64, compat_sys_recvmmsg_time64)
|
||||
#define __NR_mq_timedsend_time64 418
|
||||
|
||||
@@ -57,17 +57,15 @@ static void invoke_syscall(struct pt_regs *regs, unsigned int scno,
|
||||
syscall_set_return_value(current, regs, 0, ret);
|
||||
|
||||
/*
|
||||
* Ultimately, this value will get limited by KSTACK_OFFSET_MAX(),
|
||||
* but not enough for arm64 stack utilization comfort. To keep
|
||||
* reasonable stack head room, reduce the maximum offset to 9 bits.
|
||||
* This value will get limited by KSTACK_OFFSET_MAX(), which is 10
|
||||
* bits. The actual entropy will be further reduced by the compiler
|
||||
* when applying stack alignment constraints: the AAPCS mandates a
|
||||
* 16-byte aligned SP at function boundaries, which will remove the
|
||||
* 4 low bits from any entropy chosen here.
|
||||
*
|
||||
* The actual entropy will be further reduced by the compiler when
|
||||
* applying stack alignment constraints: the AAPCS mandates a
|
||||
* 16-byte (i.e. 4-bit) aligned SP at function boundaries.
|
||||
*
|
||||
* The resulting 5 bits of entropy is seen in SP[8:4].
|
||||
* The resulting 6 bits of entropy is seen in SP[9:4].
|
||||
*/
|
||||
choose_random_kstack_offset(get_random_u16() & 0x1FF);
|
||||
choose_random_kstack_offset(get_random_u16());
|
||||
}
|
||||
|
||||
static inline bool has_syscall_work(unsigned long flags)
|
||||
|
||||
@@ -252,6 +252,7 @@ static int set_core_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
|
||||
case PSR_AA32_MODE_SVC:
|
||||
case PSR_AA32_MODE_ABT:
|
||||
case PSR_AA32_MODE_UND:
|
||||
case PSR_AA32_MODE_SYS:
|
||||
if (!vcpu_el1_is_32bit(vcpu))
|
||||
return -EINVAL;
|
||||
break;
|
||||
@@ -272,7 +273,7 @@ static int set_core_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
|
||||
if (*vcpu_cpsr(vcpu) & PSR_MODE32_BIT) {
|
||||
int i, nr_reg;
|
||||
|
||||
switch (*vcpu_cpsr(vcpu)) {
|
||||
switch (*vcpu_cpsr(vcpu) & PSR_AA32_MODE_MASK) {
|
||||
/*
|
||||
* Either we are dealing with user mode, and only the
|
||||
* first 15 registers (+ PC) must be narrowed to 32bit.
|
||||
|
||||
@@ -50,9 +50,23 @@ bool kvm_condition_valid32(const struct kvm_vcpu *vcpu)
|
||||
u32 cpsr_cond;
|
||||
int cond;
|
||||
|
||||
/* Top two bits non-zero? Unconditional. */
|
||||
if (kvm_vcpu_get_esr(vcpu) >> 30)
|
||||
/*
|
||||
* These are the exception classes that could fire with a
|
||||
* conditional instruction.
|
||||
*/
|
||||
switch (kvm_vcpu_trap_get_class(vcpu)) {
|
||||
case ESR_ELx_EC_CP15_32:
|
||||
case ESR_ELx_EC_CP15_64:
|
||||
case ESR_ELx_EC_CP14_MR:
|
||||
case ESR_ELx_EC_CP14_LS:
|
||||
case ESR_ELx_EC_FP_ASIMD:
|
||||
case ESR_ELx_EC_CP10_ID:
|
||||
case ESR_ELx_EC_CP14_64:
|
||||
case ESR_ELx_EC_SVC32:
|
||||
break;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Is condition field valid? */
|
||||
cond = kvm_vcpu_get_condition(vcpu);
|
||||
|
||||
@@ -355,7 +355,7 @@ static void kvm_vgic_dist_destroy(struct kvm *kvm)
|
||||
|
||||
if (dist->vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3) {
|
||||
list_for_each_entry_safe(rdreg, next, &dist->rd_regions, list)
|
||||
vgic_v3_free_redist_region(rdreg);
|
||||
vgic_v3_free_redist_region(kvm, rdreg);
|
||||
INIT_LIST_HEAD(&dist->rd_regions);
|
||||
} else {
|
||||
dist->vgic_cpu_base = VGIC_ADDR_UNDEF;
|
||||
|
||||
@@ -942,8 +942,19 @@ free:
|
||||
return ret;
|
||||
}
|
||||
|
||||
void vgic_v3_free_redist_region(struct vgic_redist_region *rdreg)
|
||||
void vgic_v3_free_redist_region(struct kvm *kvm, struct vgic_redist_region *rdreg)
|
||||
{
|
||||
struct kvm_vcpu *vcpu;
|
||||
unsigned long c;
|
||||
|
||||
lockdep_assert_held(&kvm->arch.config_lock);
|
||||
|
||||
/* Garbage collect the region */
|
||||
kvm_for_each_vcpu(c, vcpu, kvm) {
|
||||
if (vcpu->arch.vgic_cpu.rdreg == rdreg)
|
||||
vcpu->arch.vgic_cpu.rdreg = NULL;
|
||||
}
|
||||
|
||||
list_del(&rdreg->list);
|
||||
kfree(rdreg);
|
||||
}
|
||||
@@ -968,7 +979,7 @@ int vgic_v3_set_redist_base(struct kvm *kvm, u32 index, u64 addr, u32 count)
|
||||
|
||||
mutex_lock(&kvm->arch.config_lock);
|
||||
rdreg = vgic_v3_rdist_region_from_index(kvm, index);
|
||||
vgic_v3_free_redist_region(rdreg);
|
||||
vgic_v3_free_redist_region(kvm, rdreg);
|
||||
mutex_unlock(&kvm->arch.config_lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -310,7 +310,7 @@ vgic_v3_rd_region_size(struct kvm *kvm, struct vgic_redist_region *rdreg)
|
||||
|
||||
struct vgic_redist_region *vgic_v3_rdist_region_from_index(struct kvm *kvm,
|
||||
u32 index);
|
||||
void vgic_v3_free_redist_region(struct vgic_redist_region *rdreg);
|
||||
void vgic_v3_free_redist_region(struct kvm *kvm, struct vgic_redist_region *rdreg);
|
||||
|
||||
bool vgic_v3_rdist_overlap(struct kvm *kvm, gpa_t base, size_t size);
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#define __ARCH_WANT_SYS_CLONE3
|
||||
#define __ARCH_WANT_SET_GET_RLIMIT
|
||||
#define __ARCH_WANT_TIME32_SYSCALLS
|
||||
#define __ARCH_WANT_SYNC_FILE_RANGE2
|
||||
#include <asm-generic/unistd.h>
|
||||
|
||||
#define __NR_set_thread_area (__NR_arch_specific_syscall + 0)
|
||||
|
||||
6
arch/hexagon/include/asm/syscalls.h
Normal file
6
arch/hexagon/include/asm/syscalls.h
Normal file
@@ -0,0 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
|
||||
#include <asm-generic/syscalls.h>
|
||||
|
||||
asmlinkage long sys_hexagon_fadvise64_64(int fd, int advice,
|
||||
u32 a2, u32 a3, u32 a4, u32 a5);
|
||||
@@ -36,5 +36,6 @@
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
#define __ARCH_WANT_SYS_FORK
|
||||
#define __ARCH_WANT_TIME32_SYSCALLS
|
||||
#define __ARCH_WANT_SYNC_FILE_RANGE2
|
||||
|
||||
#include <asm-generic/unistd.h>
|
||||
|
||||
@@ -14,6 +14,13 @@
|
||||
#undef __SYSCALL
|
||||
#define __SYSCALL(nr, call) [nr] = (call),
|
||||
|
||||
SYSCALL_DEFINE6(hexagon_fadvise64_64, int, fd, int, advice,
|
||||
SC_ARG64(offset), SC_ARG64(len))
|
||||
{
|
||||
return ksys_fadvise64_64(fd, SC_VAL64(loff_t, offset), SC_VAL64(loff_t, len), advice);
|
||||
}
|
||||
#define sys_fadvise64_64 sys_hexagon_fadvise64_64
|
||||
|
||||
void *sys_call_table[__NR_syscalls] = {
|
||||
#include <asm/unistd.h>
|
||||
};
|
||||
|
||||
@@ -111,7 +111,8 @@ static void bcm6358_quirks(void)
|
||||
* RAC flush causes kernel panics on BCM6358 when booting from TP1
|
||||
* because the bootloader is not initializing it properly.
|
||||
*/
|
||||
bmips_rac_flush_disable = !!(read_c0_brcm_cmt_local() & (1 << 31));
|
||||
bmips_rac_flush_disable = !!(read_c0_brcm_cmt_local() & (1 << 31)) ||
|
||||
!!BMIPS_GET_CBR();
|
||||
}
|
||||
|
||||
static void bcm6368_quirks(void)
|
||||
|
||||
@@ -109,6 +109,8 @@
|
||||
compatible = "brcm,bcm7038-twd", "simple-mfd", "syscon";
|
||||
reg = <0x10000080 0x30>;
|
||||
ranges = <0x0 0x10000080 0x30>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
wdt: watchdog@1c {
|
||||
compatible = "brcm,bcm7038-wdt";
|
||||
|
||||
@@ -354,7 +354,7 @@
|
||||
412 n32 utimensat_time64 sys_utimensat
|
||||
413 n32 pselect6_time64 compat_sys_pselect6_time64
|
||||
414 n32 ppoll_time64 compat_sys_ppoll_time64
|
||||
416 n32 io_pgetevents_time64 sys_io_pgetevents
|
||||
416 n32 io_pgetevents_time64 compat_sys_io_pgetevents_time64
|
||||
417 n32 recvmmsg_time64 compat_sys_recvmmsg_time64
|
||||
418 n32 mq_timedsend_time64 sys_mq_timedsend
|
||||
419 n32 mq_timedreceive_time64 sys_mq_timedreceive
|
||||
|
||||
@@ -403,7 +403,7 @@
|
||||
412 o32 utimensat_time64 sys_utimensat sys_utimensat
|
||||
413 o32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64
|
||||
414 o32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64
|
||||
416 o32 io_pgetevents_time64 sys_io_pgetevents sys_io_pgetevents
|
||||
416 o32 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64
|
||||
417 o32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64
|
||||
418 o32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend
|
||||
419 o32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
|
||||
|
||||
@@ -112,8 +112,8 @@ retry:
|
||||
* gives them time to settle
|
||||
*/
|
||||
if (where == PCI_VENDOR_ID) {
|
||||
if (ret == 0xffffffff || ret == 0x00000000 ||
|
||||
ret == 0x0000ffff || ret == 0xffff0000) {
|
||||
if (*val == 0xffffffff || *val == 0x00000000 ||
|
||||
*val == 0x0000ffff || *val == 0xffff0000) {
|
||||
if (delay > 4)
|
||||
return 0;
|
||||
delay *= 2;
|
||||
|
||||
6
arch/mips/pci/pcie-octeon.c
Normal file → Executable file
6
arch/mips/pci/pcie-octeon.c
Normal file → Executable file
@@ -230,12 +230,18 @@ static inline uint64_t __cvmx_pcie_build_config_addr(int pcie_port, int bus,
|
||||
{
|
||||
union cvmx_pcie_address pcie_addr;
|
||||
union cvmx_pciercx_cfg006 pciercx_cfg006;
|
||||
union cvmx_pciercx_cfg032 pciercx_cfg032;
|
||||
|
||||
pciercx_cfg006.u32 =
|
||||
cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG006(pcie_port));
|
||||
if ((bus <= pciercx_cfg006.s.pbnum) && (dev != 0))
|
||||
return 0;
|
||||
|
||||
pciercx_cfg032.u32 =
|
||||
cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG032(pcie_port));
|
||||
if ((pciercx_cfg032.s.dlla == 0) || (pciercx_cfg032.s.lt == 1))
|
||||
return 0;
|
||||
|
||||
pcie_addr.u64 = 0;
|
||||
pcie_addr.config.upper = 2;
|
||||
pcie_addr.config.io = 1;
|
||||
|
||||
@@ -14,6 +14,7 @@ config PARISC
|
||||
select ARCH_HAS_UBSAN_SANITIZE_ALL
|
||||
select ARCH_HAS_PTE_SPECIAL
|
||||
select ARCH_NO_SG_CHAIN
|
||||
select ARCH_SPLIT_ARG64 if !64BIT
|
||||
select ARCH_SUPPORTS_HUGETLBFS if PA20
|
||||
select ARCH_SUPPORTS_MEMORY_FAILURE
|
||||
select ARCH_STACKWALK
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT)
|
||||
#define PAGE_MASK (~(PAGE_SIZE-1))
|
||||
|
||||
#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
|
||||
@@ -4,23 +4,11 @@
|
||||
|
||||
#include <uapi/asm/signal.h>
|
||||
|
||||
#define _NSIG 64
|
||||
/* bits-per-word, where word apparently means 'long' not 'int' */
|
||||
#define _NSIG_BPW BITS_PER_LONG
|
||||
#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
|
||||
|
||||
# ifndef __ASSEMBLY__
|
||||
|
||||
/* Most things should be clean enough to redefine this at will, if care
|
||||
is taken to make libc match. */
|
||||
|
||||
typedef unsigned long old_sigset_t; /* at least 32 bits */
|
||||
|
||||
typedef struct {
|
||||
/* next_signal() assumes this is a long - no choice */
|
||||
unsigned long sig[_NSIG_WORDS];
|
||||
} sigset_t;
|
||||
|
||||
#include <asm/sigcontext.h>
|
||||
|
||||
#endif /* !__ASSEMBLY */
|
||||
|
||||
@@ -57,10 +57,20 @@
|
||||
|
||||
#include <asm-generic/signal-defs.h>
|
||||
|
||||
#define _NSIG 64
|
||||
#define _NSIG_BPW (sizeof(unsigned long) * 8)
|
||||
#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
|
||||
|
||||
# ifndef __ASSEMBLY__
|
||||
|
||||
# include <linux/types.h>
|
||||
|
||||
typedef unsigned long old_sigset_t; /* at least 32 bits */
|
||||
|
||||
typedef struct {
|
||||
unsigned long sig[_NSIG_WORDS];
|
||||
} sigset_t;
|
||||
|
||||
/* Avoid too many header ordering problems. */
|
||||
struct siginfo;
|
||||
|
||||
|
||||
@@ -23,12 +23,3 @@ asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23,
|
||||
current->comm, current->pid, r20);
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
asmlinkage long sys32_fanotify_mark(compat_int_t fanotify_fd, compat_uint_t flags,
|
||||
compat_uint_t mask0, compat_uint_t mask1, compat_int_t dfd,
|
||||
const char __user * pathname)
|
||||
{
|
||||
return sys_fanotify_mark(fanotify_fd, flags,
|
||||
((__u64)mask1 << 32) | mask0,
|
||||
dfd, pathname);
|
||||
}
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
95 common fchown sys_fchown
|
||||
96 common getpriority sys_getpriority
|
||||
97 common setpriority sys_setpriority
|
||||
98 common recv sys_recv
|
||||
98 common recv sys_recv compat_sys_recv
|
||||
99 common statfs sys_statfs compat_sys_statfs
|
||||
100 common fstatfs sys_fstatfs compat_sys_fstatfs
|
||||
101 common stat64 sys_stat64
|
||||
@@ -135,7 +135,7 @@
|
||||
120 common clone sys_clone_wrapper
|
||||
121 common setdomainname sys_setdomainname
|
||||
122 common sendfile sys_sendfile compat_sys_sendfile
|
||||
123 common recvfrom sys_recvfrom
|
||||
123 common recvfrom sys_recvfrom compat_sys_recvfrom
|
||||
124 32 adjtimex sys_adjtimex_time32
|
||||
124 64 adjtimex sys_adjtimex
|
||||
125 common mprotect sys_mprotect
|
||||
@@ -364,7 +364,7 @@
|
||||
320 common accept4 sys_accept4
|
||||
321 common prlimit64 sys_prlimit64
|
||||
322 common fanotify_init sys_fanotify_init
|
||||
323 common fanotify_mark sys_fanotify_mark sys32_fanotify_mark
|
||||
323 common fanotify_mark sys_fanotify_mark compat_sys_fanotify_mark
|
||||
324 32 clock_adjtime sys_clock_adjtime32
|
||||
324 64 clock_adjtime sys_clock_adjtime
|
||||
325 common name_to_handle_at sys_name_to_handle_at
|
||||
|
||||
@@ -493,7 +493,7 @@ long plpar_hcall_norets_notrace(unsigned long opcode, ...);
|
||||
* Used for all but the craziest of phyp interfaces (see plpar_hcall9)
|
||||
*/
|
||||
#define PLPAR_HCALL_BUFSIZE 4
|
||||
long plpar_hcall(unsigned long opcode, unsigned long *retbuf, ...);
|
||||
long plpar_hcall(unsigned long opcode, unsigned long retbuf[static PLPAR_HCALL_BUFSIZE], ...);
|
||||
|
||||
/**
|
||||
* plpar_hcall_raw: - Make a hypervisor call without calculating hcall stats
|
||||
@@ -507,7 +507,7 @@ long plpar_hcall(unsigned long opcode, unsigned long *retbuf, ...);
|
||||
* plpar_hcall, but plpar_hcall_raw works in real mode and does not
|
||||
* calculate hypervisor call statistics.
|
||||
*/
|
||||
long plpar_hcall_raw(unsigned long opcode, unsigned long *retbuf, ...);
|
||||
long plpar_hcall_raw(unsigned long opcode, unsigned long retbuf[static PLPAR_HCALL_BUFSIZE], ...);
|
||||
|
||||
/**
|
||||
* plpar_hcall9: - Make a pseries hypervisor call with up to 9 return arguments
|
||||
@@ -518,8 +518,8 @@ long plpar_hcall_raw(unsigned long opcode, unsigned long *retbuf, ...);
|
||||
* PLPAR_HCALL9_BUFSIZE to size the return argument buffer.
|
||||
*/
|
||||
#define PLPAR_HCALL9_BUFSIZE 9
|
||||
long plpar_hcall9(unsigned long opcode, unsigned long *retbuf, ...);
|
||||
long plpar_hcall9_raw(unsigned long opcode, unsigned long *retbuf, ...);
|
||||
long plpar_hcall9(unsigned long opcode, unsigned long retbuf[static PLPAR_HCALL9_BUFSIZE], ...);
|
||||
long plpar_hcall9_raw(unsigned long opcode, unsigned long retbuf[static PLPAR_HCALL9_BUFSIZE], ...);
|
||||
|
||||
/* pseries hcall tracing */
|
||||
extern struct static_key hcall_tracepoint_key;
|
||||
|
||||
@@ -355,6 +355,14 @@ static inline void interrupt_nmi_enter_prepare(struct pt_regs *regs, struct inte
|
||||
if (IS_ENABLED(CONFIG_KASAN))
|
||||
return;
|
||||
|
||||
/*
|
||||
* Likewise, do not use it in real mode if percpu first chunk is not
|
||||
* embedded. With CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK enabled there
|
||||
* are chances where percpu allocation can come from vmalloc area.
|
||||
*/
|
||||
if (percpu_first_chunk_is_paged)
|
||||
return;
|
||||
|
||||
/* Otherwise, it should be safe to call it */
|
||||
nmi_enter();
|
||||
}
|
||||
@@ -370,6 +378,8 @@ static inline void interrupt_nmi_exit_prepare(struct pt_regs *regs, struct inter
|
||||
// no nmi_exit for a pseries hash guest taking a real mode exception
|
||||
} else if (IS_ENABLED(CONFIG_KASAN)) {
|
||||
// no nmi_exit for KASAN in real mode
|
||||
} else if (percpu_first_chunk_is_paged) {
|
||||
// no nmi_exit if percpu first chunk is not embedded
|
||||
} else {
|
||||
nmi_exit();
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ extern struct pci_dev *isa_bridge_pcidev;
|
||||
* define properly based on the platform
|
||||
*/
|
||||
#ifndef CONFIG_PCI
|
||||
#define _IO_BASE 0
|
||||
#define _IO_BASE POISON_POINTER_DELTA
|
||||
#define _ISA_MEM_BASE 0
|
||||
#define PCI_DRAM_OFFSET 0
|
||||
#elif defined(CONFIG_PPC32)
|
||||
@@ -553,12 +553,12 @@ __do_out_asm(_rec_outl, "stwbrx")
|
||||
#define __do_inw(port) _rec_inw(port)
|
||||
#define __do_inl(port) _rec_inl(port)
|
||||
#else /* CONFIG_PPC32 */
|
||||
#define __do_outb(val, port) writeb(val,(PCI_IO_ADDR)_IO_BASE+port);
|
||||
#define __do_outw(val, port) writew(val,(PCI_IO_ADDR)_IO_BASE+port);
|
||||
#define __do_outl(val, port) writel(val,(PCI_IO_ADDR)_IO_BASE+port);
|
||||
#define __do_inb(port) readb((PCI_IO_ADDR)_IO_BASE + port);
|
||||
#define __do_inw(port) readw((PCI_IO_ADDR)_IO_BASE + port);
|
||||
#define __do_inl(port) readl((PCI_IO_ADDR)_IO_BASE + port);
|
||||
#define __do_outb(val, port) writeb(val,(PCI_IO_ADDR)(_IO_BASE+port));
|
||||
#define __do_outw(val, port) writew(val,(PCI_IO_ADDR)(_IO_BASE+port));
|
||||
#define __do_outl(val, port) writel(val,(PCI_IO_ADDR)(_IO_BASE+port));
|
||||
#define __do_inb(port) readb((PCI_IO_ADDR)(_IO_BASE + port));
|
||||
#define __do_inw(port) readw((PCI_IO_ADDR)(_IO_BASE + port));
|
||||
#define __do_inl(port) readl((PCI_IO_ADDR)(_IO_BASE + port));
|
||||
#endif /* !CONFIG_PPC32 */
|
||||
|
||||
#ifdef CONFIG_EEH
|
||||
@@ -574,12 +574,12 @@ __do_out_asm(_rec_outl, "stwbrx")
|
||||
#define __do_writesw(a, b, n) _outsw(PCI_FIX_ADDR(a),(b),(n))
|
||||
#define __do_writesl(a, b, n) _outsl(PCI_FIX_ADDR(a),(b),(n))
|
||||
|
||||
#define __do_insb(p, b, n) readsb((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
|
||||
#define __do_insw(p, b, n) readsw((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
|
||||
#define __do_insl(p, b, n) readsl((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
|
||||
#define __do_outsb(p, b, n) writesb((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
|
||||
#define __do_outsw(p, b, n) writesw((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
|
||||
#define __do_outsl(p, b, n) writesl((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
|
||||
#define __do_insb(p, b, n) readsb((PCI_IO_ADDR)(_IO_BASE+(p)), (b), (n))
|
||||
#define __do_insw(p, b, n) readsw((PCI_IO_ADDR)(_IO_BASE+(p)), (b), (n))
|
||||
#define __do_insl(p, b, n) readsl((PCI_IO_ADDR)(_IO_BASE+(p)), (b), (n))
|
||||
#define __do_outsb(p, b, n) writesb((PCI_IO_ADDR)(_IO_BASE+(p)),(b),(n))
|
||||
#define __do_outsw(p, b, n) writesw((PCI_IO_ADDR)(_IO_BASE+(p)),(b),(n))
|
||||
#define __do_outsl(p, b, n) writesl((PCI_IO_ADDR)(_IO_BASE+(p)),(b),(n))
|
||||
|
||||
#define __do_memset_io(addr, c, n) \
|
||||
_memset_io(PCI_FIX_ADDR(addr), c, n)
|
||||
|
||||
@@ -15,6 +15,16 @@
|
||||
#endif /* CONFIG_SMP */
|
||||
#endif /* __powerpc64__ */
|
||||
|
||||
#if defined(CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK) && defined(CONFIG_SMP)
|
||||
#include <linux/jump_label.h>
|
||||
DECLARE_STATIC_KEY_FALSE(__percpu_first_chunk_is_paged);
|
||||
|
||||
#define percpu_first_chunk_is_paged \
|
||||
(static_key_enabled(&__percpu_first_chunk_is_paged.key))
|
||||
#else
|
||||
#define percpu_first_chunk_is_paged false
|
||||
#endif /* CONFIG_PPC64 && CONFIG_SMP */
|
||||
|
||||
#include <asm-generic/percpu.h>
|
||||
|
||||
#include <asm/paca.h>
|
||||
|
||||
@@ -80,9 +80,20 @@ __pu_failed: \
|
||||
: \
|
||||
: label)
|
||||
|
||||
#ifdef CONFIG_CC_IS_CLANG
|
||||
#define DS_FORM_CONSTRAINT "Z<>"
|
||||
#else
|
||||
#define DS_FORM_CONSTRAINT "YZ<>"
|
||||
#endif
|
||||
|
||||
#ifdef __powerpc64__
|
||||
#define __put_user_asm2_goto(x, ptr, label) \
|
||||
__put_user_asm_goto(x, ptr, label, "std")
|
||||
#define __put_user_asm2_goto(x, addr, label) \
|
||||
asm goto ("1: std%U1%X1 %0,%1 # put_user\n" \
|
||||
EX_TABLE(1b, %l2) \
|
||||
: \
|
||||
: "r" (x), DS_FORM_CONSTRAINT (*addr) \
|
||||
: \
|
||||
: label)
|
||||
#else /* __powerpc64__ */
|
||||
#define __put_user_asm2_goto(x, addr, label) \
|
||||
asm goto( \
|
||||
|
||||
@@ -834,6 +834,7 @@ static __init int pcpu_cpu_to_node(int cpu)
|
||||
|
||||
unsigned long __per_cpu_offset[NR_CPUS] __read_mostly;
|
||||
EXPORT_SYMBOL(__per_cpu_offset);
|
||||
DEFINE_STATIC_KEY_FALSE(__percpu_first_chunk_is_paged);
|
||||
|
||||
void __init setup_per_cpu_areas(void)
|
||||
{
|
||||
@@ -876,6 +877,7 @@ void __init setup_per_cpu_areas(void)
|
||||
if (rc < 0)
|
||||
panic("cannot initialize percpu area (err=%d)", rc);
|
||||
|
||||
static_key_enable(&__percpu_first_chunk_is_paged.key);
|
||||
delta = (unsigned long)pcpu_base_addr - (unsigned long)__per_cpu_start;
|
||||
for_each_possible_cpu(cpu) {
|
||||
__per_cpu_offset[cpu] = delta + pcpu_unit_offsets[cpu];
|
||||
|
||||
@@ -230,8 +230,10 @@
|
||||
178 nospu rt_sigsuspend sys_rt_sigsuspend compat_sys_rt_sigsuspend
|
||||
179 32 pread64 sys_ppc_pread64 compat_sys_ppc_pread64
|
||||
179 64 pread64 sys_pread64
|
||||
179 spu pread64 sys_pread64
|
||||
180 32 pwrite64 sys_ppc_pwrite64 compat_sys_ppc_pwrite64
|
||||
180 64 pwrite64 sys_pwrite64
|
||||
180 spu pwrite64 sys_pwrite64
|
||||
181 common chown sys_chown
|
||||
182 common getcwd sys_getcwd
|
||||
183 common capget sys_capget
|
||||
@@ -246,6 +248,7 @@
|
||||
190 common ugetrlimit sys_getrlimit compat_sys_getrlimit
|
||||
191 32 readahead sys_ppc_readahead compat_sys_ppc_readahead
|
||||
191 64 readahead sys_readahead
|
||||
191 spu readahead sys_readahead
|
||||
192 32 mmap2 sys_mmap2 compat_sys_mmap2
|
||||
193 32 truncate64 sys_ppc_truncate64 compat_sys_ppc_truncate64
|
||||
194 32 ftruncate64 sys_ppc_ftruncate64 compat_sys_ppc_ftruncate64
|
||||
@@ -293,6 +296,7 @@
|
||||
232 nospu set_tid_address sys_set_tid_address
|
||||
233 32 fadvise64 sys_ppc32_fadvise64 compat_sys_ppc32_fadvise64
|
||||
233 64 fadvise64 sys_fadvise64
|
||||
233 spu fadvise64 sys_fadvise64
|
||||
234 nospu exit_group sys_exit_group
|
||||
235 nospu lookup_dcookie sys_lookup_dcookie compat_sys_lookup_dcookie
|
||||
236 common epoll_create sys_epoll_create
|
||||
@@ -502,7 +506,7 @@
|
||||
412 32 utimensat_time64 sys_utimensat sys_utimensat
|
||||
413 32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64
|
||||
414 32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64
|
||||
416 32 io_pgetevents_time64 sys_io_pgetevents sys_io_pgetevents
|
||||
416 32 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64
|
||||
417 32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64
|
||||
418 32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend
|
||||
419 32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <asm/paca.h>
|
||||
#include <asm/mmu.h>
|
||||
#include <asm/sections.h> /* _end */
|
||||
#include <asm/setup.h>
|
||||
#include <asm/smp.h>
|
||||
#include <asm/hw_breakpoint.h>
|
||||
#include <asm/svm.h>
|
||||
@@ -316,6 +317,16 @@ void default_machine_kexec(struct kimage *image)
|
||||
if (!kdump_in_progress())
|
||||
kexec_prepare_cpus();
|
||||
|
||||
#ifdef CONFIG_PPC_PSERIES
|
||||
/*
|
||||
* This must be done after other CPUs have shut down, otherwise they
|
||||
* could execute the 'scv' instruction, which is not supported with
|
||||
* reloc disabled (see configure_exceptions()).
|
||||
*/
|
||||
if (firmware_has_feature(FW_FEATURE_SET_MODE))
|
||||
pseries_disable_reloc_on_exc();
|
||||
#endif
|
||||
|
||||
printk("kexec: Starting switchover sequence.\n");
|
||||
|
||||
/* switch to a staticly allocated stack. Based on irq stack code.
|
||||
|
||||
@@ -124,6 +124,7 @@ pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
|
||||
{
|
||||
unsigned long old_pmd;
|
||||
|
||||
VM_WARN_ON_ONCE(!pmd_present(*pmdp));
|
||||
old_pmd = pmd_hugepage_update(vma->vm_mm, address, pmdp, _PAGE_PRESENT, _PAGE_INVALID);
|
||||
flush_pmd_tlb_range(vma, address, address + HPAGE_PMD_SIZE);
|
||||
return __pmd(old_pmd);
|
||||
|
||||
@@ -814,6 +814,15 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, struct codegen_context *
|
||||
|
||||
/* Get offset into TMP_REG */
|
||||
EMIT(PPC_RAW_LI(tmp_reg, off));
|
||||
/*
|
||||
* Enforce full ordering for operations with BPF_FETCH by emitting a 'sync'
|
||||
* before and after the operation.
|
||||
*
|
||||
* This is a requirement in the Linux Kernel Memory Model.
|
||||
* See __cmpxchg_u32() in asm/cmpxchg.h as an example.
|
||||
*/
|
||||
if ((imm & BPF_FETCH) && IS_ENABLED(CONFIG_SMP))
|
||||
EMIT(PPC_RAW_SYNC());
|
||||
tmp_idx = ctx->idx * 4;
|
||||
/* load value from memory into r0 */
|
||||
EMIT(PPC_RAW_LWARX(_R0, tmp_reg, dst_reg, 0));
|
||||
@@ -867,6 +876,9 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, struct codegen_context *
|
||||
|
||||
/* For the BPF_FETCH variant, get old data into src_reg */
|
||||
if (imm & BPF_FETCH) {
|
||||
/* Emit 'sync' to enforce full ordering */
|
||||
if (IS_ENABLED(CONFIG_SMP))
|
||||
EMIT(PPC_RAW_SYNC());
|
||||
EMIT(PPC_RAW_MR(ret_reg, ax_reg));
|
||||
if (!fp->aux->verifier_zext)
|
||||
EMIT(PPC_RAW_LI(ret_reg - 1, 0)); /* higher 32-bit */
|
||||
|
||||
@@ -784,6 +784,15 @@ emit_clear:
|
||||
|
||||
/* Get offset into TMP_REG_1 */
|
||||
EMIT(PPC_RAW_LI(tmp1_reg, off));
|
||||
/*
|
||||
* Enforce full ordering for operations with BPF_FETCH by emitting a 'sync'
|
||||
* before and after the operation.
|
||||
*
|
||||
* This is a requirement in the Linux Kernel Memory Model.
|
||||
* See __cmpxchg_u64() in asm/cmpxchg.h as an example.
|
||||
*/
|
||||
if ((imm & BPF_FETCH) && IS_ENABLED(CONFIG_SMP))
|
||||
EMIT(PPC_RAW_SYNC());
|
||||
tmp_idx = ctx->idx * 4;
|
||||
/* load value from memory into TMP_REG_2 */
|
||||
if (size == BPF_DW)
|
||||
@@ -846,6 +855,9 @@ emit_clear:
|
||||
PPC_BCC_SHORT(COND_NE, tmp_idx);
|
||||
|
||||
if (imm & BPF_FETCH) {
|
||||
/* Emit 'sync' to enforce full ordering */
|
||||
if (IS_ENABLED(CONFIG_SMP))
|
||||
EMIT(PPC_RAW_SYNC());
|
||||
EMIT(PPC_RAW_MR(ret_reg, _R0));
|
||||
/*
|
||||
* Skip unnecessary zero-extension for 32-bit cmpxchg.
|
||||
|
||||
@@ -61,11 +61,3 @@ void pseries_kexec_cpu_down(int crash_shutdown, int secondary)
|
||||
} else
|
||||
xics_kexec_teardown_cpu(secondary);
|
||||
}
|
||||
|
||||
void pseries_machine_kexec(struct kimage *image)
|
||||
{
|
||||
if (firmware_has_feature(FW_FEATURE_SET_MODE))
|
||||
pseries_disable_reloc_on_exc();
|
||||
|
||||
default_machine_kexec(image);
|
||||
}
|
||||
|
||||
@@ -38,7 +38,6 @@ static inline void smp_init_pseries(void) { }
|
||||
#endif
|
||||
|
||||
extern void pseries_kexec_cpu_down(int crash_shutdown, int secondary);
|
||||
void pseries_machine_kexec(struct kimage *image);
|
||||
|
||||
extern void pSeries_final_fixup(void);
|
||||
|
||||
|
||||
@@ -1149,7 +1149,6 @@ define_machine(pseries) {
|
||||
.machine_check_exception = pSeries_machine_check_exception,
|
||||
.machine_check_log_err = pSeries_machine_check_log_err,
|
||||
#ifdef CONFIG_KEXEC_CORE
|
||||
.machine_kexec = pseries_machine_kexec,
|
||||
.kexec_cpu_down = pseries_kexec_cpu_down,
|
||||
#endif
|
||||
#ifdef CONFIG_MEMORY_HOTPLUG
|
||||
|
||||
@@ -1354,7 +1354,7 @@ static int cpu_cmd(void)
|
||||
}
|
||||
termch = cpu;
|
||||
|
||||
if (!scanhex(&cpu)) {
|
||||
if (!scanhex(&cpu) || cpu >= num_possible_cpus()) {
|
||||
/* print cpus waiting or in xmon */
|
||||
printf("cpus stopped:");
|
||||
last_cpu = first_cpu = NR_CPUS;
|
||||
@@ -2776,7 +2776,7 @@ static void dump_pacas(void)
|
||||
|
||||
termch = c; /* Put c back, it wasn't 'a' */
|
||||
|
||||
if (scanhex(&num))
|
||||
if (scanhex(&num) && num < num_possible_cpus())
|
||||
dump_one_paca(num);
|
||||
else
|
||||
dump_one_paca(xmon_owner);
|
||||
@@ -2849,7 +2849,7 @@ static void dump_xives(void)
|
||||
|
||||
termch = c; /* Put c back, it wasn't 'a' */
|
||||
|
||||
if (scanhex(&num))
|
||||
if (scanhex(&num) && num < num_possible_cpus())
|
||||
dump_one_xive(num);
|
||||
else
|
||||
dump_one_xive(xmon_owner);
|
||||
|
||||
@@ -147,20 +147,12 @@ static void machine_kexec_mask_interrupts(void)
|
||||
|
||||
for_each_irq_desc(i, desc) {
|
||||
struct irq_chip *chip;
|
||||
int ret;
|
||||
|
||||
chip = irq_desc_get_chip(desc);
|
||||
if (!chip)
|
||||
continue;
|
||||
|
||||
/*
|
||||
* First try to remove the active state. If this
|
||||
* fails, try to EOI the interrupt.
|
||||
*/
|
||||
ret = irq_set_irqchip_state(i, IRQCHIP_STATE_ACTIVE, false);
|
||||
|
||||
if (ret && irqd_irq_inprogress(&desc->irq_data) &&
|
||||
chip->irq_eoi)
|
||||
if (chip->irq_eoi && irqd_irq_inprogress(&desc->irq_data))
|
||||
chip->irq_eoi(&desc->irq_data);
|
||||
|
||||
if (chip->irq_mask)
|
||||
|
||||
@@ -246,30 +246,6 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs)
|
||||
sigset_t *oldset = sigmask_to_save();
|
||||
int ret;
|
||||
|
||||
/* Are we from a system call? */
|
||||
if (regs->cause == EXC_SYSCALL) {
|
||||
/* Avoid additional syscall restarting via ret_from_exception */
|
||||
regs->cause = -1UL;
|
||||
/* If so, check system call restarting.. */
|
||||
switch (regs->a0) {
|
||||
case -ERESTART_RESTARTBLOCK:
|
||||
case -ERESTARTNOHAND:
|
||||
regs->a0 = -EINTR;
|
||||
break;
|
||||
|
||||
case -ERESTARTSYS:
|
||||
if (!(ksig->ka.sa.sa_flags & SA_RESTART)) {
|
||||
regs->a0 = -EINTR;
|
||||
break;
|
||||
}
|
||||
fallthrough;
|
||||
case -ERESTARTNOINTR:
|
||||
regs->a0 = regs->orig_a0;
|
||||
regs->epc -= 0x4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
rseq_signal_deliver(ksig, regs);
|
||||
|
||||
/* Set up the stack frame */
|
||||
@@ -283,34 +259,65 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs)
|
||||
|
||||
static void do_signal(struct pt_regs *regs)
|
||||
{
|
||||
unsigned long continue_addr = 0, restart_addr = 0;
|
||||
int retval = 0;
|
||||
struct ksignal ksig;
|
||||
bool syscall = (regs->cause == EXC_SYSCALL);
|
||||
|
||||
/* If we were from a system call, check for system call restarting */
|
||||
if (syscall) {
|
||||
continue_addr = regs->epc;
|
||||
restart_addr = continue_addr - 4;
|
||||
retval = regs->a0;
|
||||
|
||||
/* Avoid additional syscall restarting via ret_from_exception */
|
||||
regs->cause = -1UL;
|
||||
|
||||
/*
|
||||
* Prepare for system call restart. We do this here so that a
|
||||
* debugger will see the already changed PC.
|
||||
*/
|
||||
switch (retval) {
|
||||
case -ERESTARTNOHAND:
|
||||
case -ERESTARTSYS:
|
||||
case -ERESTARTNOINTR:
|
||||
case -ERESTART_RESTARTBLOCK:
|
||||
regs->a0 = regs->orig_a0;
|
||||
regs->epc = restart_addr;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the signal to deliver. When running under ptrace, at this point
|
||||
* the debugger may change all of our registers.
|
||||
*/
|
||||
if (get_signal(&ksig)) {
|
||||
/*
|
||||
* Depending on the signal settings, we may need to revert the
|
||||
* decision to restart the system call, but skip this if a
|
||||
* debugger has chosen to restart at a different PC.
|
||||
*/
|
||||
if (regs->epc == restart_addr &&
|
||||
(retval == -ERESTARTNOHAND ||
|
||||
retval == -ERESTART_RESTARTBLOCK ||
|
||||
(retval == -ERESTARTSYS &&
|
||||
!(ksig.ka.sa.sa_flags & SA_RESTART)))) {
|
||||
regs->a0 = -EINTR;
|
||||
regs->epc = continue_addr;
|
||||
}
|
||||
|
||||
/* Actually deliver the signal */
|
||||
handle_signal(&ksig, regs);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Did we come from a system call? */
|
||||
if (regs->cause == EXC_SYSCALL) {
|
||||
/* Avoid additional syscall restarting via ret_from_exception */
|
||||
regs->cause = -1UL;
|
||||
|
||||
/* Restart the system call - no handlers present */
|
||||
switch (regs->a0) {
|
||||
case -ERESTARTNOHAND:
|
||||
case -ERESTARTSYS:
|
||||
case -ERESTARTNOINTR:
|
||||
regs->a0 = regs->orig_a0;
|
||||
regs->epc -= 0x4;
|
||||
break;
|
||||
case -ERESTART_RESTARTBLOCK:
|
||||
regs->a0 = regs->orig_a0;
|
||||
regs->a7 = __NR_restart_syscall;
|
||||
regs->epc -= 0x4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Handle restarting a different system call. As above, if a debugger
|
||||
* has chosen to restart at a different PC, ignore the restart.
|
||||
*/
|
||||
if (syscall && regs->epc == restart_addr && retval == -ERESTART_RESTARTBLOCK)
|
||||
regs->a7 = __NR_restart_syscall;
|
||||
|
||||
/*
|
||||
* If there is no signal to deliver, we just put the saved
|
||||
|
||||
@@ -156,7 +156,7 @@ unsigned long __get_wchan(struct task_struct *task)
|
||||
return pc;
|
||||
}
|
||||
|
||||
noinline void arch_stack_walk(stack_trace_consume_fn consume_entry, void *cookie,
|
||||
noinline noinstr void arch_stack_walk(stack_trace_consume_fn consume_entry, void *cookie,
|
||||
struct task_struct *task, struct pt_regs *regs)
|
||||
{
|
||||
walk_stackframe(task, regs, consume_entry, cookie);
|
||||
|
||||
@@ -213,18 +213,19 @@ static void __init setup_bootmem(void)
|
||||
if (!IS_ENABLED(CONFIG_XIP_KERNEL))
|
||||
phys_ram_base = memblock_start_of_DRAM();
|
||||
/*
|
||||
* memblock allocator is not aware of the fact that last 4K bytes of
|
||||
* the addressable memory can not be mapped because of IS_ERR_VALUE
|
||||
* macro. Make sure that last 4k bytes are not usable by memblock
|
||||
* if end of dram is equal to maximum addressable memory. For 64-bit
|
||||
* kernel, this problem can't happen here as the end of the virtual
|
||||
* address space is occupied by the kernel mapping then this check must
|
||||
* be done as soon as the kernel mapping base address is determined.
|
||||
* Reserve physical address space that would be mapped to virtual
|
||||
* addresses greater than (void *)(-PAGE_SIZE) because:
|
||||
* - This memory would overlap with ERR_PTR
|
||||
* - This memory belongs to high memory, which is not supported
|
||||
*
|
||||
* This is not applicable to 64-bit kernel, because virtual addresses
|
||||
* after (void *)(-PAGE_SIZE) are not linearly mapped: they are
|
||||
* occupied by kernel mapping. Also it is unrealistic for high memory
|
||||
* to exist on 64-bit platforms.
|
||||
*/
|
||||
if (!IS_ENABLED(CONFIG_64BIT)) {
|
||||
max_mapped_addr = __pa(~(ulong)0);
|
||||
if (max_mapped_addr == (phys_ram_end - 1))
|
||||
memblock_set_current_limit(max_mapped_addr - 4096);
|
||||
max_mapped_addr = __va_to_pa_nodebug(-PAGE_SIZE);
|
||||
memblock_reserve(max_mapped_addr, (phys_addr_t)-max_mapped_addr);
|
||||
}
|
||||
|
||||
min_low_pfn = PFN_UP(phys_ram_base);
|
||||
|
||||
@@ -387,17 +387,33 @@ int set_direct_map_default_noflush(struct page *page)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DEBUG_PAGEALLOC
|
||||
static int debug_pagealloc_set_page(pte_t *pte, unsigned long addr, void *data)
|
||||
{
|
||||
int enable = *(int *)data;
|
||||
|
||||
unsigned long val = pte_val(ptep_get(pte));
|
||||
|
||||
if (enable)
|
||||
val |= _PAGE_PRESENT;
|
||||
else
|
||||
val &= ~_PAGE_PRESENT;
|
||||
|
||||
set_pte(pte, __pte(val));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __kernel_map_pages(struct page *page, int numpages, int enable)
|
||||
{
|
||||
if (!debug_pagealloc_enabled())
|
||||
return;
|
||||
|
||||
if (enable)
|
||||
__set_memory((unsigned long)page_address(page), numpages,
|
||||
__pgprot(_PAGE_PRESENT), __pgprot(0));
|
||||
else
|
||||
__set_memory((unsigned long)page_address(page), numpages,
|
||||
__pgprot(0), __pgprot(_PAGE_PRESENT));
|
||||
unsigned long start = (unsigned long)page_address(page);
|
||||
unsigned long size = PAGE_SIZE * numpages;
|
||||
|
||||
apply_to_existing_page_range(&init_mm, start, size, debug_pagealloc_set_page, &enable);
|
||||
|
||||
flush_tlb_kernel_range(start, start + size);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -161,28 +161,86 @@
|
||||
|
||||
typedef struct { unsigned char bytes[16]; } cpacf_mask_t;
|
||||
|
||||
/**
|
||||
* cpacf_query() - check if a specific CPACF function is available
|
||||
* @opcode: the opcode of the crypto instruction
|
||||
* @func: the function code to test for
|
||||
*
|
||||
* Executes the query function for the given crypto instruction @opcode
|
||||
* and checks if @func is available
|
||||
*
|
||||
* Returns 1 if @func is available for @opcode, 0 otherwise
|
||||
/*
|
||||
* Prototype for a not existing function to produce a link
|
||||
* error if __cpacf_query() or __cpacf_check_opcode() is used
|
||||
* with an invalid compile time const opcode.
|
||||
*/
|
||||
static __always_inline void __cpacf_query(unsigned int opcode, cpacf_mask_t *mask)
|
||||
void __cpacf_bad_opcode(void);
|
||||
|
||||
static __always_inline void __cpacf_query_rre(u32 opc, u8 r1, u8 r2,
|
||||
cpacf_mask_t *mask)
|
||||
{
|
||||
asm volatile(
|
||||
" lghi 0,0\n" /* query function */
|
||||
" lgr 1,%[mask]\n"
|
||||
" spm 0\n" /* pckmo doesn't change the cc */
|
||||
/* Parameter regs are ignored, but must be nonzero and unique */
|
||||
"0: .insn rrf,%[opc] << 16,2,4,6,0\n"
|
||||
" brc 1,0b\n" /* handle partial completion */
|
||||
: "=m" (*mask)
|
||||
: [mask] "d" ((unsigned long)mask), [opc] "i" (opcode)
|
||||
: "cc", "0", "1");
|
||||
" la %%r1,%[mask]\n"
|
||||
" xgr %%r0,%%r0\n"
|
||||
" .insn rre,%[opc] << 16,%[r1],%[r2]\n"
|
||||
: [mask] "=R" (*mask)
|
||||
: [opc] "i" (opc),
|
||||
[r1] "i" (r1), [r2] "i" (r2)
|
||||
: "cc", "r0", "r1");
|
||||
}
|
||||
|
||||
static __always_inline void __cpacf_query_rrf(u32 opc,
|
||||
u8 r1, u8 r2, u8 r3, u8 m4,
|
||||
cpacf_mask_t *mask)
|
||||
{
|
||||
asm volatile(
|
||||
" la %%r1,%[mask]\n"
|
||||
" xgr %%r0,%%r0\n"
|
||||
" .insn rrf,%[opc] << 16,%[r1],%[r2],%[r3],%[m4]\n"
|
||||
: [mask] "=R" (*mask)
|
||||
: [opc] "i" (opc), [r1] "i" (r1), [r2] "i" (r2),
|
||||
[r3] "i" (r3), [m4] "i" (m4)
|
||||
: "cc", "r0", "r1");
|
||||
}
|
||||
|
||||
static __always_inline void __cpacf_query(unsigned int opcode,
|
||||
cpacf_mask_t *mask)
|
||||
{
|
||||
switch (opcode) {
|
||||
case CPACF_KDSA:
|
||||
__cpacf_query_rre(CPACF_KDSA, 0, 2, mask);
|
||||
break;
|
||||
case CPACF_KIMD:
|
||||
__cpacf_query_rre(CPACF_KIMD, 0, 2, mask);
|
||||
break;
|
||||
case CPACF_KLMD:
|
||||
__cpacf_query_rre(CPACF_KLMD, 0, 2, mask);
|
||||
break;
|
||||
case CPACF_KM:
|
||||
__cpacf_query_rre(CPACF_KM, 2, 4, mask);
|
||||
break;
|
||||
case CPACF_KMA:
|
||||
__cpacf_query_rrf(CPACF_KMA, 2, 4, 6, 0, mask);
|
||||
break;
|
||||
case CPACF_KMAC:
|
||||
__cpacf_query_rre(CPACF_KMAC, 0, 2, mask);
|
||||
break;
|
||||
case CPACF_KMC:
|
||||
__cpacf_query_rre(CPACF_KMC, 2, 4, mask);
|
||||
break;
|
||||
case CPACF_KMCTR:
|
||||
__cpacf_query_rrf(CPACF_KMCTR, 2, 4, 6, 0, mask);
|
||||
break;
|
||||
case CPACF_KMF:
|
||||
__cpacf_query_rre(CPACF_KMF, 2, 4, mask);
|
||||
break;
|
||||
case CPACF_KMO:
|
||||
__cpacf_query_rre(CPACF_KMO, 2, 4, mask);
|
||||
break;
|
||||
case CPACF_PCC:
|
||||
__cpacf_query_rre(CPACF_PCC, 0, 0, mask);
|
||||
break;
|
||||
case CPACF_PCKMO:
|
||||
__cpacf_query_rre(CPACF_PCKMO, 0, 0, mask);
|
||||
break;
|
||||
case CPACF_PRNO:
|
||||
__cpacf_query_rre(CPACF_PRNO, 2, 4, mask);
|
||||
break;
|
||||
default:
|
||||
__cpacf_bad_opcode();
|
||||
}
|
||||
}
|
||||
|
||||
static __always_inline int __cpacf_check_opcode(unsigned int opcode)
|
||||
@@ -206,10 +264,21 @@ static __always_inline int __cpacf_check_opcode(unsigned int opcode)
|
||||
case CPACF_KMA:
|
||||
return test_facility(146); /* check for MSA8 */
|
||||
default:
|
||||
BUG();
|
||||
__cpacf_bad_opcode();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* cpacf_query() - check if a specific CPACF function is available
|
||||
* @opcode: the opcode of the crypto instruction
|
||||
* @func: the function code to test for
|
||||
*
|
||||
* Executes the query function for the given crypto instruction @opcode
|
||||
* and checks if @func is available
|
||||
*
|
||||
* Returns 1 if @func is available for @opcode, 0 otherwise
|
||||
*/
|
||||
static __always_inline int cpacf_query(unsigned int opcode, cpacf_mask_t *mask)
|
||||
{
|
||||
if (__cpacf_check_opcode(opcode)) {
|
||||
|
||||
@@ -55,7 +55,7 @@ static __always_inline void arch_exit_to_user_mode(void)
|
||||
static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs,
|
||||
unsigned long ti_work)
|
||||
{
|
||||
choose_random_kstack_offset(get_tod_clock_fast() & 0xff);
|
||||
choose_random_kstack_offset(get_tod_clock_fast());
|
||||
}
|
||||
|
||||
#define arch_exit_to_user_mode_prepare arch_exit_to_user_mode_prepare
|
||||
|
||||
@@ -427,6 +427,7 @@ struct kvm_vcpu_stat {
|
||||
u64 instruction_io_other;
|
||||
u64 instruction_lpsw;
|
||||
u64 instruction_lpswe;
|
||||
u64 instruction_lpswey;
|
||||
u64 instruction_pfmf;
|
||||
u64 instruction_ptff;
|
||||
u64 instruction_sck;
|
||||
|
||||
@@ -1686,8 +1686,10 @@ static inline pmd_t pmdp_huge_clear_flush(struct vm_area_struct *vma,
|
||||
static inline pmd_t pmdp_invalidate(struct vm_area_struct *vma,
|
||||
unsigned long addr, pmd_t *pmdp)
|
||||
{
|
||||
pmd_t pmd = __pmd(pmd_val(*pmdp) | _SEGMENT_ENTRY_INVALID);
|
||||
pmd_t pmd;
|
||||
|
||||
VM_WARN_ON_ONCE(!pmd_present(*pmdp));
|
||||
pmd = __pmd(pmd_val(*pmdp) | _SEGMENT_ENTRY_INVALID);
|
||||
return pmdp_xchg_direct(vma->vm_mm, addr, pmdp, pmd);
|
||||
}
|
||||
|
||||
|
||||
@@ -418,7 +418,7 @@
|
||||
412 32 utimensat_time64 - sys_utimensat
|
||||
413 32 pselect6_time64 - compat_sys_pselect6_time64
|
||||
414 32 ppoll_time64 - compat_sys_ppoll_time64
|
||||
416 32 io_pgetevents_time64 - sys_io_pgetevents
|
||||
416 32 io_pgetevents_time64 - compat_sys_io_pgetevents_time64
|
||||
417 32 recvmmsg_time64 - compat_sys_recvmmsg_time64
|
||||
418 32 mq_timedsend_time64 - sys_mq_timedsend
|
||||
419 32 mq_timedreceive_time64 - sys_mq_timedreceive
|
||||
|
||||
@@ -132,6 +132,7 @@ const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = {
|
||||
STATS_DESC_COUNTER(VCPU, instruction_io_other),
|
||||
STATS_DESC_COUNTER(VCPU, instruction_lpsw),
|
||||
STATS_DESC_COUNTER(VCPU, instruction_lpswe),
|
||||
STATS_DESC_COUNTER(VCPU, instruction_lpswey),
|
||||
STATS_DESC_COUNTER(VCPU, instruction_pfmf),
|
||||
STATS_DESC_COUNTER(VCPU, instruction_ptff),
|
||||
STATS_DESC_COUNTER(VCPU, instruction_sck),
|
||||
|
||||
@@ -119,6 +119,21 @@ static inline u64 kvm_s390_get_base_disp_s(struct kvm_vcpu *vcpu, u8 *ar)
|
||||
return (base2 ? vcpu->run->s.regs.gprs[base2] : 0) + disp2;
|
||||
}
|
||||
|
||||
static inline u64 kvm_s390_get_base_disp_siy(struct kvm_vcpu *vcpu, u8 *ar)
|
||||
{
|
||||
u32 base1 = vcpu->arch.sie_block->ipb >> 28;
|
||||
s64 disp1;
|
||||
|
||||
/* The displacement is a 20bit _SIGNED_ value */
|
||||
disp1 = sign_extend64(((vcpu->arch.sie_block->ipb & 0x0fff0000) >> 16) +
|
||||
((vcpu->arch.sie_block->ipb & 0xff00) << 4), 19);
|
||||
|
||||
if (ar)
|
||||
*ar = base1;
|
||||
|
||||
return (base1 ? vcpu->run->s.regs.gprs[base1] : 0) + disp1;
|
||||
}
|
||||
|
||||
static inline void kvm_s390_get_base_disp_sse(struct kvm_vcpu *vcpu,
|
||||
u64 *address1, u64 *address2,
|
||||
u8 *ar_b1, u8 *ar_b2)
|
||||
|
||||
@@ -794,6 +794,36 @@ static int handle_lpswe(struct kvm_vcpu *vcpu)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int handle_lpswey(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
psw_t new_psw;
|
||||
u64 addr;
|
||||
int rc;
|
||||
u8 ar;
|
||||
|
||||
vcpu->stat.instruction_lpswey++;
|
||||
|
||||
if (!test_kvm_facility(vcpu->kvm, 193))
|
||||
return kvm_s390_inject_program_int(vcpu, PGM_OPERATION);
|
||||
|
||||
if (vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE)
|
||||
return kvm_s390_inject_program_int(vcpu, PGM_PRIVILEGED_OP);
|
||||
|
||||
addr = kvm_s390_get_base_disp_siy(vcpu, &ar);
|
||||
if (addr & 7)
|
||||
return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);
|
||||
|
||||
rc = read_guest(vcpu, addr, ar, &new_psw, sizeof(new_psw));
|
||||
if (rc)
|
||||
return kvm_s390_inject_prog_cond(vcpu, rc);
|
||||
|
||||
vcpu->arch.sie_block->gpsw = new_psw;
|
||||
if (!is_valid_psw(&vcpu->arch.sie_block->gpsw))
|
||||
return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int handle_stidp(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
u64 stidp_data = vcpu->kvm->arch.model.cpuid;
|
||||
@@ -1460,6 +1490,8 @@ int kvm_s390_handle_eb(struct kvm_vcpu *vcpu)
|
||||
case 0x61:
|
||||
case 0x62:
|
||||
return handle_ri(vcpu);
|
||||
case 0x71:
|
||||
return handle_lpswey(vcpu);
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
@@ -410,7 +410,7 @@ static void __init cpu_enable_directed_irq(void *unused)
|
||||
union zpci_sic_iib iib = {{0}};
|
||||
union zpci_sic_iib ziib = {{0}};
|
||||
|
||||
iib.cdiib.dibv_addr = (u64) zpci_ibv[smp_processor_id()]->vector;
|
||||
iib.cdiib.dibv_addr = virt_to_phys(zpci_ibv[smp_processor_id()]->vector);
|
||||
|
||||
zpci_set_irq_ctrl(SIC_IRQ_MODE_SET_CPU, 0, &iib);
|
||||
zpci_set_irq_ctrl(SIC_IRQ_MODE_D_SINGLE, PCI_ISC, &ziib);
|
||||
|
||||
@@ -59,3 +59,14 @@ asmlinkage int sys_fadvise64_64_wrapper(int fd, u32 offset0, u32 offset1,
|
||||
(u64)len0 << 32 | len1, advice);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* swap the arguments the way that libc wants them instead of
|
||||
* moving flags ahead of the 64-bit nbytes argument
|
||||
*/
|
||||
SYSCALL_DEFINE6(sh_sync_file_range6, int, fd, SC_ARG64(offset),
|
||||
SC_ARG64(nbytes), unsigned int, flags)
|
||||
{
|
||||
return ksys_sync_file_range(fd, SC_VAL64(loff_t, offset),
|
||||
SC_VAL64(loff_t, nbytes), flags);
|
||||
}
|
||||
|
||||
@@ -321,7 +321,7 @@
|
||||
311 common set_robust_list sys_set_robust_list
|
||||
312 common get_robust_list sys_get_robust_list
|
||||
313 common splice sys_splice
|
||||
314 common sync_file_range sys_sync_file_range
|
||||
314 common sync_file_range sys_sh_sync_file_range6
|
||||
315 common tee sys_tee
|
||||
316 common vmsplice sys_vmsplice
|
||||
317 common move_pages sys_move_pages
|
||||
@@ -395,6 +395,7 @@
|
||||
385 common pkey_alloc sys_pkey_alloc
|
||||
386 common pkey_free sys_pkey_free
|
||||
387 common rseq sys_rseq
|
||||
388 common sync_file_range2 sys_sync_file_range2
|
||||
# room for arch specific syscalls
|
||||
393 common semget sys_semget
|
||||
394 common semctl sys_semctl
|
||||
|
||||
@@ -47,7 +47,6 @@ void arch_send_call_function_ipi_mask(const struct cpumask *mask);
|
||||
int hard_smp_processor_id(void);
|
||||
#define raw_smp_processor_id() (current_thread_info()->cpu)
|
||||
|
||||
void smp_fill_in_cpu_possible_map(void);
|
||||
void smp_fill_in_sib_core_maps(void);
|
||||
void cpu_play_dead(void);
|
||||
|
||||
@@ -77,7 +76,6 @@ void __cpu_die(unsigned int cpu);
|
||||
#define smp_fill_in_sib_core_maps() do { } while (0)
|
||||
#define smp_fetch_global_regs() do { } while (0)
|
||||
#define smp_fetch_global_pmu() do { } while (0)
|
||||
#define smp_fill_in_cpu_possible_map() do { } while (0)
|
||||
#define smp_init_cpu_poke() do { } while (0)
|
||||
#define scheduler_poke() do { } while (0)
|
||||
|
||||
|
||||
@@ -10,16 +10,6 @@ typedef unsigned int tcflag_t;
|
||||
typedef unsigned long tcflag_t;
|
||||
#endif
|
||||
|
||||
#define NCC 8
|
||||
struct termio {
|
||||
unsigned short c_iflag; /* input mode flags */
|
||||
unsigned short c_oflag; /* output mode flags */
|
||||
unsigned short c_cflag; /* control mode flags */
|
||||
unsigned short c_lflag; /* local mode flags */
|
||||
unsigned char c_line; /* line discipline */
|
||||
unsigned char c_cc[NCC]; /* control characters */
|
||||
};
|
||||
|
||||
#define NCCS 17
|
||||
struct termios {
|
||||
tcflag_t c_iflag; /* input mode flags */
|
||||
|
||||
@@ -40,5 +40,14 @@ struct winsize {
|
||||
unsigned short ws_ypixel;
|
||||
};
|
||||
|
||||
#define NCC 8
|
||||
struct termio {
|
||||
unsigned short c_iflag; /* input mode flags */
|
||||
unsigned short c_oflag; /* output mode flags */
|
||||
unsigned short c_cflag; /* control mode flags */
|
||||
unsigned short c_lflag; /* local mode flags */
|
||||
unsigned char c_line; /* line discipline */
|
||||
unsigned char c_cc[NCC]; /* control characters */
|
||||
};
|
||||
|
||||
#endif /* _UAPI_SPARC_TERMIOS_H */
|
||||
|
||||
@@ -483,7 +483,9 @@ static void *record_one_cpu(struct device_node *dp, int cpuid, int arg)
|
||||
ncpus_probed++;
|
||||
#ifdef CONFIG_SMP
|
||||
set_cpu_present(cpuid, true);
|
||||
set_cpu_possible(cpuid, true);
|
||||
|
||||
if (num_possible_cpus() < nr_cpu_ids)
|
||||
set_cpu_possible(cpuid, true);
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -684,7 +684,6 @@ void __init setup_arch(char **cmdline_p)
|
||||
|
||||
paging_init();
|
||||
init_sparc64_elf_hwcap();
|
||||
smp_fill_in_cpu_possible_map();
|
||||
/*
|
||||
* Once the OF device tree and MDESC have been setup and nr_cpus has
|
||||
* been parsed, we know the list of possible cpus. Therefore we can
|
||||
|
||||
@@ -1204,20 +1204,6 @@ void __init smp_setup_processor_id(void)
|
||||
xcall_deliver_impl = hypervisor_xcall_deliver;
|
||||
}
|
||||
|
||||
void __init smp_fill_in_cpu_possible_map(void)
|
||||
{
|
||||
int possible_cpus = num_possible_cpus();
|
||||
int i;
|
||||
|
||||
if (possible_cpus > nr_cpu_ids)
|
||||
possible_cpus = nr_cpu_ids;
|
||||
|
||||
for (i = 0; i < possible_cpus; i++)
|
||||
set_cpu_possible(i, true);
|
||||
for (; i < NR_CPUS; i++)
|
||||
set_cpu_possible(i, false);
|
||||
}
|
||||
|
||||
void smp_fill_in_sib_core_maps(void)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
@@ -18,224 +18,3 @@ sys32_mmap2:
|
||||
sethi %hi(sys_mmap), %g1
|
||||
jmpl %g1 + %lo(sys_mmap), %g0
|
||||
sllx %o5, 12, %o5
|
||||
|
||||
.align 32
|
||||
.globl sys32_socketcall
|
||||
sys32_socketcall: /* %o0=call, %o1=args */
|
||||
cmp %o0, 1
|
||||
bl,pn %xcc, do_einval
|
||||
cmp %o0, 18
|
||||
bg,pn %xcc, do_einval
|
||||
sub %o0, 1, %o0
|
||||
sllx %o0, 5, %o0
|
||||
sethi %hi(__socketcall_table_begin), %g2
|
||||
or %g2, %lo(__socketcall_table_begin), %g2
|
||||
jmpl %g2 + %o0, %g0
|
||||
nop
|
||||
do_einval:
|
||||
retl
|
||||
mov -EINVAL, %o0
|
||||
|
||||
.align 32
|
||||
__socketcall_table_begin:
|
||||
|
||||
/* Each entry is exactly 32 bytes. */
|
||||
do_sys_socket: /* sys_socket(int, int, int) */
|
||||
1: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_socket), %g1
|
||||
2: ldswa [%o1 + 0x8] %asi, %o2
|
||||
jmpl %g1 + %lo(sys_socket), %g0
|
||||
3: ldswa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
do_sys_bind: /* sys_bind(int fd, struct sockaddr *, int) */
|
||||
4: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_bind), %g1
|
||||
5: ldswa [%o1 + 0x8] %asi, %o2
|
||||
jmpl %g1 + %lo(sys_bind), %g0
|
||||
6: lduwa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
do_sys_connect: /* sys_connect(int, struct sockaddr *, int) */
|
||||
7: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_connect), %g1
|
||||
8: ldswa [%o1 + 0x8] %asi, %o2
|
||||
jmpl %g1 + %lo(sys_connect), %g0
|
||||
9: lduwa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
do_sys_listen: /* sys_listen(int, int) */
|
||||
10: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_listen), %g1
|
||||
jmpl %g1 + %lo(sys_listen), %g0
|
||||
11: ldswa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
do_sys_accept: /* sys_accept(int, struct sockaddr *, int *) */
|
||||
12: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_accept), %g1
|
||||
13: lduwa [%o1 + 0x8] %asi, %o2
|
||||
jmpl %g1 + %lo(sys_accept), %g0
|
||||
14: lduwa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
do_sys_getsockname: /* sys_getsockname(int, struct sockaddr *, int *) */
|
||||
15: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_getsockname), %g1
|
||||
16: lduwa [%o1 + 0x8] %asi, %o2
|
||||
jmpl %g1 + %lo(sys_getsockname), %g0
|
||||
17: lduwa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
do_sys_getpeername: /* sys_getpeername(int, struct sockaddr *, int *) */
|
||||
18: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_getpeername), %g1
|
||||
19: lduwa [%o1 + 0x8] %asi, %o2
|
||||
jmpl %g1 + %lo(sys_getpeername), %g0
|
||||
20: lduwa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
do_sys_socketpair: /* sys_socketpair(int, int, int, int *) */
|
||||
21: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_socketpair), %g1
|
||||
22: ldswa [%o1 + 0x8] %asi, %o2
|
||||
23: lduwa [%o1 + 0xc] %asi, %o3
|
||||
jmpl %g1 + %lo(sys_socketpair), %g0
|
||||
24: ldswa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
nop
|
||||
do_sys_send: /* sys_send(int, void *, size_t, unsigned int) */
|
||||
25: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_send), %g1
|
||||
26: lduwa [%o1 + 0x8] %asi, %o2
|
||||
27: lduwa [%o1 + 0xc] %asi, %o3
|
||||
jmpl %g1 + %lo(sys_send), %g0
|
||||
28: lduwa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
nop
|
||||
do_sys_recv: /* sys_recv(int, void *, size_t, unsigned int) */
|
||||
29: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_recv), %g1
|
||||
30: lduwa [%o1 + 0x8] %asi, %o2
|
||||
31: lduwa [%o1 + 0xc] %asi, %o3
|
||||
jmpl %g1 + %lo(sys_recv), %g0
|
||||
32: lduwa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
nop
|
||||
do_sys_sendto: /* sys_sendto(int, u32, compat_size_t, unsigned int, u32, int) */
|
||||
33: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_sendto), %g1
|
||||
34: lduwa [%o1 + 0x8] %asi, %o2
|
||||
35: lduwa [%o1 + 0xc] %asi, %o3
|
||||
36: lduwa [%o1 + 0x10] %asi, %o4
|
||||
37: ldswa [%o1 + 0x14] %asi, %o5
|
||||
jmpl %g1 + %lo(sys_sendto), %g0
|
||||
38: lduwa [%o1 + 0x4] %asi, %o1
|
||||
do_sys_recvfrom: /* sys_recvfrom(int, u32, compat_size_t, unsigned int, u32, u32) */
|
||||
39: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_recvfrom), %g1
|
||||
40: lduwa [%o1 + 0x8] %asi, %o2
|
||||
41: lduwa [%o1 + 0xc] %asi, %o3
|
||||
42: lduwa [%o1 + 0x10] %asi, %o4
|
||||
43: lduwa [%o1 + 0x14] %asi, %o5
|
||||
jmpl %g1 + %lo(sys_recvfrom), %g0
|
||||
44: lduwa [%o1 + 0x4] %asi, %o1
|
||||
do_sys_shutdown: /* sys_shutdown(int, int) */
|
||||
45: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_shutdown), %g1
|
||||
jmpl %g1 + %lo(sys_shutdown), %g0
|
||||
46: ldswa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
do_sys_setsockopt: /* sys_setsockopt(int, int, int, char *, int) */
|
||||
47: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_setsockopt), %g1
|
||||
48: ldswa [%o1 + 0x8] %asi, %o2
|
||||
49: lduwa [%o1 + 0xc] %asi, %o3
|
||||
50: ldswa [%o1 + 0x10] %asi, %o4
|
||||
jmpl %g1 + %lo(sys_setsockopt), %g0
|
||||
51: ldswa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
do_sys_getsockopt: /* sys_getsockopt(int, int, int, u32, u32) */
|
||||
52: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_getsockopt), %g1
|
||||
53: ldswa [%o1 + 0x8] %asi, %o2
|
||||
54: lduwa [%o1 + 0xc] %asi, %o3
|
||||
55: lduwa [%o1 + 0x10] %asi, %o4
|
||||
jmpl %g1 + %lo(sys_getsockopt), %g0
|
||||
56: ldswa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
do_sys_sendmsg: /* compat_sys_sendmsg(int, struct compat_msghdr *, unsigned int) */
|
||||
57: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(compat_sys_sendmsg), %g1
|
||||
58: lduwa [%o1 + 0x8] %asi, %o2
|
||||
jmpl %g1 + %lo(compat_sys_sendmsg), %g0
|
||||
59: lduwa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
do_sys_recvmsg: /* compat_sys_recvmsg(int, struct compat_msghdr *, unsigned int) */
|
||||
60: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(compat_sys_recvmsg), %g1
|
||||
61: lduwa [%o1 + 0x8] %asi, %o2
|
||||
jmpl %g1 + %lo(compat_sys_recvmsg), %g0
|
||||
62: lduwa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
do_sys_accept4: /* sys_accept4(int, struct sockaddr *, int *, int) */
|
||||
63: ldswa [%o1 + 0x0] %asi, %o0
|
||||
sethi %hi(sys_accept4), %g1
|
||||
64: lduwa [%o1 + 0x8] %asi, %o2
|
||||
65: ldswa [%o1 + 0xc] %asi, %o3
|
||||
jmpl %g1 + %lo(sys_accept4), %g0
|
||||
66: lduwa [%o1 + 0x4] %asi, %o1
|
||||
nop
|
||||
nop
|
||||
|
||||
.section __ex_table,"a"
|
||||
.align 4
|
||||
.word 1b, __retl_efault, 2b, __retl_efault
|
||||
.word 3b, __retl_efault, 4b, __retl_efault
|
||||
.word 5b, __retl_efault, 6b, __retl_efault
|
||||
.word 7b, __retl_efault, 8b, __retl_efault
|
||||
.word 9b, __retl_efault, 10b, __retl_efault
|
||||
.word 11b, __retl_efault, 12b, __retl_efault
|
||||
.word 13b, __retl_efault, 14b, __retl_efault
|
||||
.word 15b, __retl_efault, 16b, __retl_efault
|
||||
.word 17b, __retl_efault, 18b, __retl_efault
|
||||
.word 19b, __retl_efault, 20b, __retl_efault
|
||||
.word 21b, __retl_efault, 22b, __retl_efault
|
||||
.word 23b, __retl_efault, 24b, __retl_efault
|
||||
.word 25b, __retl_efault, 26b, __retl_efault
|
||||
.word 27b, __retl_efault, 28b, __retl_efault
|
||||
.word 29b, __retl_efault, 30b, __retl_efault
|
||||
.word 31b, __retl_efault, 32b, __retl_efault
|
||||
.word 33b, __retl_efault, 34b, __retl_efault
|
||||
.word 35b, __retl_efault, 36b, __retl_efault
|
||||
.word 37b, __retl_efault, 38b, __retl_efault
|
||||
.word 39b, __retl_efault, 40b, __retl_efault
|
||||
.word 41b, __retl_efault, 42b, __retl_efault
|
||||
.word 43b, __retl_efault, 44b, __retl_efault
|
||||
.word 45b, __retl_efault, 46b, __retl_efault
|
||||
.word 47b, __retl_efault, 48b, __retl_efault
|
||||
.word 49b, __retl_efault, 50b, __retl_efault
|
||||
.word 51b, __retl_efault, 52b, __retl_efault
|
||||
.word 53b, __retl_efault, 54b, __retl_efault
|
||||
.word 55b, __retl_efault, 56b, __retl_efault
|
||||
.word 57b, __retl_efault, 58b, __retl_efault
|
||||
.word 59b, __retl_efault, 60b, __retl_efault
|
||||
.word 61b, __retl_efault, 62b, __retl_efault
|
||||
.word 63b, __retl_efault, 64b, __retl_efault
|
||||
.word 65b, __retl_efault, 66b, __retl_efault
|
||||
.previous
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
90 common dup2 sys_dup2
|
||||
91 32 setfsuid32 sys_setfsuid
|
||||
92 common fcntl sys_fcntl compat_sys_fcntl
|
||||
93 common select sys_select
|
||||
93 common select sys_select compat_sys_select
|
||||
94 32 setfsgid32 sys_setfsgid
|
||||
95 common fsync sys_fsync
|
||||
96 common setpriority sys_setpriority
|
||||
@@ -155,7 +155,7 @@
|
||||
123 32 fchown sys_fchown16
|
||||
123 64 fchown sys_fchown
|
||||
124 common fchmod sys_fchmod
|
||||
125 common recvfrom sys_recvfrom
|
||||
125 common recvfrom sys_recvfrom compat_sys_recvfrom
|
||||
126 32 setreuid sys_setreuid16
|
||||
126 64 setreuid sys_setreuid
|
||||
127 32 setregid sys_setregid16
|
||||
@@ -247,7 +247,7 @@
|
||||
204 32 readdir sys_old_readdir compat_sys_old_readdir
|
||||
204 64 readdir sys_nis_syscall
|
||||
205 common readahead sys_readahead compat_sys_readahead
|
||||
206 common socketcall sys_socketcall sys32_socketcall
|
||||
206 common socketcall sys_socketcall compat_sys_socketcall
|
||||
207 common syslog sys_syslog
|
||||
208 common lookup_dcookie sys_lookup_dcookie compat_sys_lookup_dcookie
|
||||
209 common fadvise64 sys_fadvise64 compat_sys_fadvise64
|
||||
@@ -461,7 +461,7 @@
|
||||
412 32 utimensat_time64 sys_utimensat sys_utimensat
|
||||
413 32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64
|
||||
414 32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64
|
||||
416 32 io_pgetevents_time64 sys_io_pgetevents sys_io_pgetevents
|
||||
416 32 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64
|
||||
417 32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64
|
||||
418 32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend
|
||||
419 32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
|
||||
|
||||
@@ -245,6 +245,7 @@ pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
|
||||
{
|
||||
pmd_t old, entry;
|
||||
|
||||
VM_WARN_ON_ONCE(!pmd_present(*pmdp));
|
||||
entry = __pmd(pmd_val(*pmdp) & ~_PAGE_VALID);
|
||||
old = pmdp_establish(vma, address, pmdp, entry);
|
||||
flush_tlb_range(vma, address, address + HPAGE_PMD_SIZE);
|
||||
|
||||
@@ -115,9 +115,9 @@ vmlinux-objs-$(CONFIG_INTEL_TDX_GUEST) += $(obj)/tdx.o $(obj)/tdcall.o
|
||||
|
||||
vmlinux-objs-$(CONFIG_EFI) += $(obj)/efi.o
|
||||
vmlinux-objs-$(CONFIG_EFI_MIXED) += $(obj)/efi_mixed.o
|
||||
vmlinux-objs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
|
||||
vmlinux-libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
|
||||
|
||||
$(obj)/vmlinux: $(vmlinux-objs-y) FORCE
|
||||
$(obj)/vmlinux: $(vmlinux-objs-y) $(vmlinux-libs-y) FORCE
|
||||
$(call if_changed,ld)
|
||||
|
||||
OBJCOPYFLAGS_vmlinux.bin := -R .comment -S
|
||||
|
||||
@@ -420,7 +420,7 @@
|
||||
412 i386 utimensat_time64 sys_utimensat
|
||||
413 i386 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64
|
||||
414 i386 ppoll_time64 sys_ppoll compat_sys_ppoll_time64
|
||||
416 i386 io_pgetevents_time64 sys_io_pgetevents
|
||||
416 i386 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64
|
||||
417 i386 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64
|
||||
418 i386 mq_timedsend_time64 sys_mq_timedsend
|
||||
419 i386 mq_timedreceive_time64 sys_mq_timedreceive
|
||||
|
||||
@@ -2,6 +2,39 @@
|
||||
#ifndef _ASM_X86_CPU_DEVICE_ID
|
||||
#define _ASM_X86_CPU_DEVICE_ID
|
||||
|
||||
/*
|
||||
* Can't use <linux/bitfield.h> because it generates expressions that
|
||||
* cannot be used in structure initializers. Bitfield construction
|
||||
* here must match the union in struct cpuinfo_86:
|
||||
* union {
|
||||
* struct {
|
||||
* __u8 x86_model;
|
||||
* __u8 x86;
|
||||
* __u8 x86_vendor;
|
||||
* __u8 x86_reserved;
|
||||
* };
|
||||
* __u32 x86_vfm;
|
||||
* };
|
||||
*/
|
||||
#define VFM_MODEL_BIT 0
|
||||
#define VFM_FAMILY_BIT 8
|
||||
#define VFM_VENDOR_BIT 16
|
||||
#define VFM_RSVD_BIT 24
|
||||
|
||||
#define VFM_MODEL_MASK GENMASK(VFM_FAMILY_BIT - 1, VFM_MODEL_BIT)
|
||||
#define VFM_FAMILY_MASK GENMASK(VFM_VENDOR_BIT - 1, VFM_FAMILY_BIT)
|
||||
#define VFM_VENDOR_MASK GENMASK(VFM_RSVD_BIT - 1, VFM_VENDOR_BIT)
|
||||
|
||||
#define VFM_MODEL(vfm) (((vfm) & VFM_MODEL_MASK) >> VFM_MODEL_BIT)
|
||||
#define VFM_FAMILY(vfm) (((vfm) & VFM_FAMILY_MASK) >> VFM_FAMILY_BIT)
|
||||
#define VFM_VENDOR(vfm) (((vfm) & VFM_VENDOR_MASK) >> VFM_VENDOR_BIT)
|
||||
|
||||
#define VFM_MAKE(_vendor, _family, _model) ( \
|
||||
((_model) << VFM_MODEL_BIT) | \
|
||||
((_family) << VFM_FAMILY_BIT) | \
|
||||
((_vendor) << VFM_VENDOR_BIT) \
|
||||
)
|
||||
|
||||
/*
|
||||
* Declare drivers belonging to specific x86 CPUs
|
||||
* Similar in spirit to pci_device_id and related PCI functions
|
||||
@@ -20,6 +53,9 @@
|
||||
#define X86_CENTAUR_FAM6_C7_D 0xd
|
||||
#define X86_CENTAUR_FAM6_NANO 0xf
|
||||
|
||||
/* x86_cpu_id::flags */
|
||||
#define X86_CPU_ID_FLAG_ENTRY_VALID BIT(0)
|
||||
|
||||
#define X86_STEPPINGS(mins, maxs) GENMASK(maxs, mins)
|
||||
/**
|
||||
* X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE - Base macro for CPU matching
|
||||
@@ -46,6 +82,18 @@
|
||||
.model = _model, \
|
||||
.steppings = _steppings, \
|
||||
.feature = _feature, \
|
||||
.flags = X86_CPU_ID_FLAG_ENTRY_VALID, \
|
||||
.driver_data = (unsigned long) _data \
|
||||
}
|
||||
|
||||
#define X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE(_vendor, _family, _model, \
|
||||
_steppings, _feature, _data) { \
|
||||
.vendor = _vendor, \
|
||||
.family = _family, \
|
||||
.model = _model, \
|
||||
.steppings = _steppings, \
|
||||
.feature = _feature, \
|
||||
.flags = X86_CPU_ID_FLAG_ENTRY_VALID, \
|
||||
.driver_data = (unsigned long) _data \
|
||||
}
|
||||
|
||||
@@ -164,6 +212,56 @@
|
||||
X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(INTEL, 6, INTEL_FAM6_##model, \
|
||||
steppings, X86_FEATURE_ANY, data)
|
||||
|
||||
/**
|
||||
* X86_MATCH_VFM - Match encoded vendor/family/model
|
||||
* @vfm: Encoded 8-bits each for vendor, family, model
|
||||
* @data: Driver specific data or NULL. The internal storage
|
||||
* format is unsigned long. The supplied value, pointer
|
||||
* etc. is cast to unsigned long internally.
|
||||
*
|
||||
* Stepping and feature are set to wildcards
|
||||
*/
|
||||
#define X86_MATCH_VFM(vfm, data) \
|
||||
X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE( \
|
||||
VFM_VENDOR(vfm), \
|
||||
VFM_FAMILY(vfm), \
|
||||
VFM_MODEL(vfm), \
|
||||
X86_STEPPING_ANY, X86_FEATURE_ANY, data)
|
||||
|
||||
/**
|
||||
* X86_MATCH_VFM_STEPPINGS - Match encoded vendor/family/model/stepping
|
||||
* @vfm: Encoded 8-bits each for vendor, family, model
|
||||
* @steppings: Bitmask of steppings to match
|
||||
* @data: Driver specific data or NULL. The internal storage
|
||||
* format is unsigned long. The supplied value, pointer
|
||||
* etc. is cast to unsigned long internally.
|
||||
*
|
||||
* feature is set to wildcard
|
||||
*/
|
||||
#define X86_MATCH_VFM_STEPPINGS(vfm, steppings, data) \
|
||||
X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE( \
|
||||
VFM_VENDOR(vfm), \
|
||||
VFM_FAMILY(vfm), \
|
||||
VFM_MODEL(vfm), \
|
||||
steppings, X86_FEATURE_ANY, data)
|
||||
|
||||
/**
|
||||
* X86_MATCH_VFM_FEATURE - Match encoded vendor/family/model/feature
|
||||
* @vfm: Encoded 8-bits each for vendor, family, model
|
||||
* @feature: A X86_FEATURE bit
|
||||
* @data: Driver specific data or NULL. The internal storage
|
||||
* format is unsigned long. The supplied value, pointer
|
||||
* etc. is cast to unsigned long internally.
|
||||
*
|
||||
* Steppings is set to wildcard
|
||||
*/
|
||||
#define X86_MATCH_VFM_FEATURE(vfm, feature, data) \
|
||||
X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE( \
|
||||
VFM_VENDOR(vfm), \
|
||||
VFM_FAMILY(vfm), \
|
||||
VFM_MODEL(vfm), \
|
||||
X86_STEPPING_ANY, feature, data)
|
||||
|
||||
/*
|
||||
* Match specific microcode revisions.
|
||||
*
|
||||
|
||||
@@ -416,6 +416,17 @@ static inline void efi_fake_memmap_early(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
extern int __init efi_memmap_alloc(unsigned int num_entries,
|
||||
struct efi_memory_map_data *data);
|
||||
extern void __efi_memmap_free(u64 phys, unsigned long size,
|
||||
unsigned long flags);
|
||||
|
||||
extern int __init efi_memmap_install(struct efi_memory_map_data *data);
|
||||
extern int __init efi_memmap_split_count(efi_memory_desc_t *md,
|
||||
struct range *range);
|
||||
extern void __init efi_memmap_insert(struct efi_memory_map *old_memmap,
|
||||
void *buf, struct efi_mem_range *mem);
|
||||
|
||||
#define arch_ima_efi_boot_mode \
|
||||
({ extern struct boot_params boot_params; boot_params.secure_boot; })
|
||||
|
||||
|
||||
@@ -73,19 +73,16 @@ static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs,
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Ultimately, this value will get limited by KSTACK_OFFSET_MAX(),
|
||||
* but not enough for x86 stack utilization comfort. To keep
|
||||
* reasonable stack head room, reduce the maximum offset to 8 bits.
|
||||
*
|
||||
* The actual entropy will be further reduced by the compiler when
|
||||
* applying stack alignment constraints (see cc_stack_align4/8 in
|
||||
* This value will get limited by KSTACK_OFFSET_MAX(), which is 10
|
||||
* bits. The actual entropy will be further reduced by the compiler
|
||||
* when applying stack alignment constraints (see cc_stack_align4/8 in
|
||||
* arch/x86/Makefile), which will remove the 3 (x86_64) or 2 (ia32)
|
||||
* low bits from any entropy chosen here.
|
||||
*
|
||||
* Therefore, final stack offset entropy will be 5 (x86_64) or
|
||||
* 6 (ia32) bits.
|
||||
* Therefore, final stack offset entropy will be 7 (x86_64) or
|
||||
* 8 (ia32) bits.
|
||||
*/
|
||||
choose_random_kstack_offset(rdtsc() & 0xFF);
|
||||
choose_random_kstack_offset(rdtsc());
|
||||
}
|
||||
#define arch_exit_to_user_mode_prepare arch_exit_to_user_mode_prepare
|
||||
|
||||
|
||||
@@ -195,7 +195,14 @@ out:
|
||||
|
||||
int amd_smn_read(u16 node, u32 address, u32 *value)
|
||||
{
|
||||
return __amd_smn_rw(node, address, value, false);
|
||||
int err = __amd_smn_rw(node, address, value, false);
|
||||
|
||||
if (PCI_POSSIBLE_ERROR(*value)) {
|
||||
err = -ENODEV;
|
||||
*value = 0;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(amd_smn_read);
|
||||
|
||||
|
||||
@@ -39,9 +39,7 @@ const struct x86_cpu_id *x86_match_cpu(const struct x86_cpu_id *match)
|
||||
const struct x86_cpu_id *m;
|
||||
struct cpuinfo_x86 *c = &boot_cpu_data;
|
||||
|
||||
for (m = match;
|
||||
m->vendor | m->family | m->model | m->steppings | m->feature;
|
||||
m++) {
|
||||
for (m = match; m->flags & X86_CPU_ID_FLAG_ENTRY_VALID; m++) {
|
||||
if (m->vendor != X86_VENDOR_ANY && c->x86_vendor != m->vendor)
|
||||
continue;
|
||||
if (m->family != X86_FAMILY_ANY && c->x86 != m->family)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user