mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 02:21:52 +09:00
Merge tag 'android14-6.1.112_r00' into android14-6.1
This merges up to the 6.1.112 LTS release into android14-6.1. Changes included here are: * 55185160e4e9 Merge tag 'android14-6.1.112_r00' into android14-6.1 *fcfc7a6d64Merge 6.1.112 into android14-6.1-lts |\ | *aa4cd140bbLinux 6.1.112 | *ba6269e187USB: usbtmc: prevent kernel-usb-infoleak | *c74796ff4fUSB: serial: pl2303: add device id for Macrosilicon MS3020 | *a20eea14a6x86/mm: Switch to new Intel CPU model defines | *ee8adcb4c0powercap: RAPL: fix invalid initialization for pl4_supported field | *563df8b411btrfs: calculate the right space for delayed refs when updating global reserve | *2626cbee1fselftests: mptcp: join: restrict fullmesh endp on 1st sf | *0ba8b599c3can: mcp251xfd: move mcp251xfd_timestamp_start()/stop() into mcp251xfd_chip_start/stop() | *88047c4b2dcan: mcp251xfd: properly indent labels | *672c19165fgpio: prevent potential speculation leaks in gpio_device_get_desc() | *5c3a421c1fgpiolib: cdev: Ignore reconfiguration without direction | *e388656a85Revert "wifi: cfg80211: check wiphy mutex is held for wdev mutex" | *ddeead4761netfilter: nf_tables: missing iterator type in lookup walk | *52735a010fnetfilter: nft_set_pipapo: walk over current view on netlink dump | *8a64f87e74netfilter: nft_socket: Fix a NULL vs IS_ERR() bug in nft_socket_cgroup_subtree_level() | *ace0db36b4netfilter: nft_socket: make cgroupsv2 matching work with namespaces | *5899daf1d8xfs: journal geometry is not properly bounds checked | *68e6efe0d4xfs: set bnobt/cntbt numrecs correctly when formatting new AGs | *af871df651xfs: fix reloading entire unlinked bucket lists | *62ca591045xfs: make inode unlinked bucket recovery work with quotacheck | *e9d1551f80xfs: reload entire unlinked bucket lists | *8ffd3ae7a0xfs: use i_prev_unlinked to distinguish inodes that are not on the unlinked list | *8e2147f37fxfs: correct calculation for agend and blockcount | *d931b6c6a9xfs: fix unlink vs cluster buffer instantiation race | *1486aeb788xfs: fix negative array access in xfs_getbmap | *4790c167ccxfs: load uncached unlinked inodes into memory on demand | *0cc1922687xfs: fix the calculation for "end" and "length" | *4427e3d362xfs: remove WARN when dquot cache insertion fails | *e8c6533404xfs: fix ag count overflow during growfs | *02f44e7ff6xfs: collect errors from inodegc for unlinked inode recovery | *65fc94fc87xfs: fix AGF vs inode cluster buffer deadlock | *b4aea9f9e0xfs: defered work could create precommits | *8127489103xfs: buffer pins need to hold a buffer reference | *cbf91ddb88xfs: fix BUG_ON in xfs_getbmap() | *fcd6ff906dxfs: quotacheck failure can race with background inode inactivation | *120108df92xfs: fix uninitialized variable access | *ce563912b0xfs: block reservation too large for minleft allocation | *0e3c9d6950xfs: prefer free inodes at ENOSPC over chunk allocation | *bb798c9128xfs: fix low space alloc deadlock | *cdbc02da9fxfs: don't use BMBT btree split workers for IO completion | *98b8fd60b3xfs: fix extent busy updating | *b36c2ae02axfs: Fix deadlock on xfs_inodegc_worker | *d2b4752119xfs: dquot shrinker doesn't check for XFS_DQFLAG_FREEING | *cfb926051focfs2: strict bound check before memcmp in ocfs2_xattr_find_entry() | *9b32539590ocfs2: add bounds checking to ocfs2_xattr_find_entry() | *8220c3e2abspi: spidev: Add missing spi_device_id for jg10309-01 | *892a5d4f1cblock: Fix where bio IO priority gets set | *ff913aff00tools: hv: rm .*.cmd when make clean | *0b78afa66dx86/hyperv: Set X86_FEATURE_TSC_KNOWN_FREQ when Hyper-V provides frequency | *123c2d18f8smb: client: fix hang in wait_for_response() for negproto | *a4a5a153dfspi: bcm63xx: Enable module autoloading | *74968adcecdrm: komeda: Fix an issue related to normalized zpos | *fbef47f590spi: spidev: Add an entry for elgin,jg10309-01 | *d404252ae7ASoC: tda7419: fix module autoloading | *b013a1e770ASoC: intel: fix module autoloading | *62386a1614ASoC: Intel: soc-acpi-cht: Make Lenovo Yoga Tab 3 X90F DMI match less strict | *f1e32334e9can: mcp251xfd: mcp251xfd_ring_init(): check TX-coalescing configuration | *fef6432edcwifi: iwlwifi: clear trans->state earlier upon error | *a8c48e7b83wifi: mac80211: free skb on error path in ieee80211_beacon_get_ap() | *1b0cd832c9wifi: iwlwifi: mvm: don't wait for tx queues if firmware is dead | *5948a19190wifi: iwlwifi: mvm: pause TCM when the firmware is stopped | *051e6cce7awifi: iwlwifi: mvm: fix iwl_mvm_scan_fits() calculation | *ba94a887d2wifi: iwlwifi: lower message level for FW buffer destination | *f0eb100965LoongArch: Define ARCH_IRQ_INIT_FLAGS as IRQ_NOPROBE | *bb06a6e78enet: ftgmac100: Ensure tx descriptor updates are visible | *2e76799725microblaze: don't treat zero reserved memory regions as error | *0bc618a68ehwmon: (asus-ec-sensors) remove VRM temp X570-E GAMING | *2fcf56f513pinctrl: at91: make it work with current gpiolib | *5e2a30d6e9scsi: lpfc: Fix overflow build issue | *fce0cddf7eALSA: hda/realtek - FIxed ALC285 headphone no sound | *85ba7682eeALSA: hda/realtek - Fixed ALC256 headphone no sound | *555e0d606aASoC: allow module autoloading for table board_ids | *9434465f3aASoC: allow module autoloading for table db1200_pids | *39d4d5a285ASoC: SOF: mediatek: Add missing board compatible * |8fe68de869Merge 6.1.111 into android14-6.1-lts |\| | *e526b12bf9Linux 6.1.111 | *e1a199ec31ASoC: meson: axg-card: fix 'use-after-free' | *3d792c6a85pinctrl: meteorlake: Add Arrow Lake-H/U ACPI ID | *57da7d15e5drm/i915/guc: prevent a possible int overflow in wq offsets | *29aa222920spi: geni-qcom: Fix incorrect free_irq() sequence | *d66fbca6c1spi: geni-qcom: Undo runtime PM changes at driver exit time | *433ece380bspi: geni-qcom: Convert to platform remove callback returning void | *bd1f7cc3bedrm/amdgpu/atomfirmware: Silence UBSAN warning | *84175dc5b2dma-buf: heaps: Fix off-by-one in CMA heap fault handler | *94c705fb4dsoundwire: stream: Revert "soundwire: stream: fix programming slave ports for non-continous port maps" | *09af8b0ba7spi: nxp-fspi: fix the KASAN report out-of-bounds bug | *f43190e332net: dpaa: Pad packets to ETH_ZLEN | *33c2258bf8netfilter: nft_socket: fix sk refcount leaks | *bb8cb61543net: ftgmac100: Enable TX interrupt to avoid TX timeout | *8b220251e1octeontx2-af: Modify SMQ flush sequence to drop packets | *22246e9757octeontx2-af: Set XOFF on other child transmit schedulers during SMQ flush | *5d537b8d90fou: fix initialization of grc | *52c4beb79enet/mlx5: Fix bridge mode operations when there are no VFs | *c06402e3e4net/mlx5: Verify support for scheduling element and TSAR type | *bfc611c8f3net/mlx5: Correct TASR typo into TSAR | *cb7cea22d2net/mlx5: Add missing masks and QoS bit masks for scheduling elements | *5b3cbf4fbfnet/mlx5: Explicitly set scheduling element and TSAR type | *f062f17f0bnet/mlx5e: Add missing link modes to ptys2ethtool_map | *7d32d2d350net/mlx5: Update the list of the PCI supported devices | *b01930b75figb: Always call igb_xdp_ring_update_tail() under Tx lock | *231442c47cice: fix accounting for filters shared by multiple VSIs | *b0df43e22dhwmon: (pmbus) Conditionally clear individual status bits for pmbus rev >= 1.2 | *a4a1de084dselftests/bpf: Support SOCK_STREAM in unix_inet_redir_to_connected() | *c6c16fd016cxl/core: Fix incorrect vendor debug UUID define | *4b3c279f30eeprom: digsy_mtc: Fix 93xx46 driver probe failure | *7029e9c7f5arm64: dts: rockchip: fix PMIC interrupt pin in pinctrl for ROCK Pi E | *742dcbc47afs/ntfs3: Use kvfree to free memory allocated by kvmalloc | *bc08f5ab11pmdomain: ti: Add a null pointer check to the omap_prm_domain_init | *530698ea6bnet: xilinx: axienet: Fix race in axienet_stop | *65d0db500dmm: avoid leaving partial pfn mappings around in error case | *d3fccbfacadm-integrity: fix a race condition when accessing recalc_sector | *34aaedb052net: tighten bad gso csum offset check in virtio_net_hdr | *12cfb869e1minmax: reduce min/max macro expansion in atomisp driver | *0194856287arm64: dts: rockchip: override BIOS_DISABLE signal via GPIO hog on RK3399 Puma | *b8afddb8b6arm64: dts: rockchip: fix eMMC/SPI corruption when audio has been used on RK3399 Puma | *67409b3585mptcp: pm: Fix uaf in __timer_delete_sync | *1e8c2fa6a8platform/x86: panasonic-laptop: Allocate 1 entry extra in the sinf array | *9291fadbd2platform/x86: panasonic-laptop: Fix SINF array out of bounds accesses | *996c148dcdNFS: Avoid unnecessary rescanning of the per-server delegation list | *ca52183ac4NFSv4: Fix clearing of layout segments in layoutreturn | *d2952183eesmb/server: fix return value of smb2_open() | *a6d2d2ad82Input: i8042 - add Fujitsu Lifebook E756 to i8042 quirk table | *7dc9997328drm/msm/adreno: Fix error return if missing firmware-name | *b6effaa7c5platform/surface: aggregator_registry: Add support for Surface Laptop Go 3 | *646f2fccedplatform/surface: aggregator_registry: Add Support for Surface Pro 10 | *3698570389scripts: kconfig: merge_config: config files: add a trailing newline | *45ec9f17ceHID: multitouch: Add support for GT7868Q | *415403a2a0Input: synaptics - enable SMBus for HP Elitebook 840 G2 | *2f4b531619Input: ads7846 - ratelimit the spi_sync error message | *5b7e3e9c2cbtrfs: update target inode's ctime on unlink | *deede79975powerpc/mm: Fix boot warning with hugepages and CONFIG_DEBUG_VIRTUAL | *179a4810fdnet: phy: vitesse: repair vsc73xx autonegotiation | *ac5021c257drm: panel-orientation-quirks: Add quirk for Ayn Loki Max | *192586247ddrm: panel-orientation-quirks: Add quirk for Ayn Loki Zero | *29a103bbd8net: ethernet: use ip_hdrlen() instead of bit shift | *1f0e1917c4usbnet: ipheth: fix carrier detection in modes 1 and 4 | *92b27473d2ksmbd: override fsids for smb2_query_info() | *d5e407468cksmbd: override fsids for share path check * |8b7627ad15Merge 6.1.110 into android14-6.1-lts |\| | *5f55cad62cLinux 6.1.110 | *2d3bc3d403fuse: add feature flag for expire-only | *81eb07e299regulator: of: fix a NULL vs IS_ERR() check in of_regulator_bulk_get_all() | *56fd70f4aamemcg: protect concurrent access to mem_cgroup_idr | *61f4bd46a0bpf: Silence a warning in btf_type_id_size() | *cd3087582ebtrfs: fix race between direct IO write and fsync when using same fd | *c5e3ce3e82x86/mm: Fix PTI for i386 some more | *ca24943589ublk_drv: fix NULL pointer dereference in ublk_ctrl_start_recovery() | *68b1b63bf7gpio: modepin: Enable module autoloading | *f62b9a5ed4gpio: rockchip: fix OF node leak in probe() | *1aea467837drm/i915/fence: Mark debug_fence_free() with __maybe_unused | *55fd565d3ddrm/i915/fence: Mark debug_fence_init_onstack() with __maybe_unused | *93db148317ASoC: sunxi: sun4i-i2s: fix LRCLK polarity in i2s mode | *760d252a99ASoc: SOF: topology: Clear SOF link platform name upon unload | *7957c731fcnvmet-tcp: fix kernel crash if commands allocation fails | *ba60170725ASoC: tegra: Fix CBB error during probe() | *e71647abcfpowerpc/64e: Define mmu_pte_psize static | *dd1759337epowerpc/64e: split out nohash Book3E 64-bit code | *e717908966powerpc/64e: remove unused IBM HTW code | *51d8e1976cdrm/amdgpu: handle gfx12 in amdgpu_display_verify_sizes | *46855dbb6bdrm/amd: Add gfx12 swizzle mode defs | *9933c2d216can: mcp251xfd: rx: add workaround for erratum DS80000789E 6 of mcp2518fd | *bb2d7e7124can: mcp251xfd: clarify the meaning of timestamp | *8fa0f38909can: mcp251xfd: rx: prepare to workaround broken RX FIFO head index erratum | *db9c3a3b88can: mcp251xfd: mcp251xfd_handle_rxif_ring_uinc(): factor out in separate function | *40cae0df42arm64: acpi: Harden get_cpu_for_acpi_id() against missing CPU entry | *b37f5f0f84arm64: acpi: Move get_cpu_for_acpi_id() to a header | *cb152b8463ACPI: processor: Fix memory leaks in error paths of processor_add() | *5f86b4c25eACPI: processor: Return an error if acpi_processor_get_info() fails in processor_add() | *a2abd35e7dworkqueue: Improve scalability of workqueue watchdog touch | *0b93c4f4caworkqueue: wq_watchdog_touch is always called with valid CPU | *9178eb8ebcnet: mana: Fix error handling in mana_create_txq/rxq's NAPI cleanup * |b3fe05ecd2Merge5e20208dfe("fuse: fix memory leak in fuse_create_open") into android14-6.1-lts |\| | *5e20208dfefuse: fix memory leak in fuse_create_open | *4250dddafdfuse: add request extension | *aa97ab6593fuse: allow non-extending parallel direct writes on the same file | *312e98342ffuse: add "expire only" mode to FUSE_NOTIFY_INVAL_ENTRY * |99de38240fRevert "perf/aux: Fix AUX buffer serialization" * |2fa599b850Revert "clocksource/drivers/timer-of: Remove percpu irq related code" * |ad793062e0Merge9dc7ad2b67("perf/aux: Fix AUX buffer serialization") into android14-6.1-lts |\| | *9dc7ad2b67perf/aux: Fix AUX buffer serialization | *6e66361324uprobes: Use kzalloc to allocate xol area | *b62c4a07a3clocksource/drivers/timer-of: Remove percpu irq related code | *b2d1522803clocksource/drivers/imx-tpm: Fix next event not taking effect sometime | *25aa6c0539clocksource/drivers/imx-tpm: Fix return -ETIME when delta exceeds INT_MAX | *b9efdf3331VMCI: Fix use-after-free when removing resource in vmci_resource_remove() | *337c9ce376Drivers: hv: vmbus: Fix rescind handling in uio_hv_generic | *2be373469buio_hv_generic: Fix kernel NULL pointer dereference in hv_uio_rescind | *6fee44446envmem: Fix return type of devm_nvmem_device_get() in kerneldoc | *4f79e0b80dbinder: fix UAF caused by offsets overwrite | *f519b04534usb: dwc3: core: update LC timer as per USB Spec V3.2 | *46df22d791iio: adc: ad7124: fix chip ID mismatch | *f8d4e637cciio: adc: ad7606: remove frstdata check for serial mode | *88886b3a28iio: adc: ad7124: fix config comparison | *6e55720029iio: fix scale application in iio_convert_raw_to_processed_unlocked | *08b072b8efiio: buffer-dmaengine: fix releasing dma channel on error | *3ba9abfcaastaging: iio: frequency: ad9834: Validate frequency parameter value | *a0376e5b09tcp: process the 3rd ACK with sk_socket for TFO/MPTCP | *bf2e9c819cio_uring/sqpoll: Do not set PF_NO_SETAFFINITY on sqpoll threads | *f4a75e3951io_uring/io-wq: stop setting PF_NO_SETAFFINITY on io-wq workers | *9bffd688bbselftests: mptcp: join: check re-re-adding ID 0 signal | *5dc9170eeeselftests: mptcp: join: validate event numbers | *441b39fb79selftests: mptcp: fix backport issues | *b88af1aeb9NFSv4: Add missing rescheduling points in nfs_client_return_marked_delegations | *075b44fc5aata: pata_macio: Use WARN instead of BUG | *b1d2051373MIPS: cevt-r4k: Don't call get_c0_compare_int if timer irq is installed | *ebeff03874lib/generic-radix-tree.c: Fix rare race in __genradix_ptr_alloc() | *8ff351ea12of/irq: Prevent device address out-of-bounds read in interrupt map walk | *fac5e82ab1Squashfs: sanity check symbolic link size | *76d9cd56a4usbnet: ipheth: race between ipheth_close and error handling | *61df76619eInput: uinput - reject requests with unreasonable number of slots | *775125c7feHID: amd_sfh: free driver_data after destroying hid device | *e4a602a45aHID: cougar: fix slab-out-of-bounds Read in cougar_report_fixup | *0ee8425d0cs390/vmlinux.lds.S: Move ro_after_init section behind rodata section | *995057208dbtrfs: initialize location to fix -Wmaybe-uninitialized in btrfs_lookup_dentry() | *e3930aac53kselftests: dmabuf-heaps: Ensure the driver name is null-terminated | *2666085335i3c: mipi-i3c-hci: Error out instead on BUG_ON() in IBI DMA setup | *6675f2fb39net: dpaa: avoid on-stack arrays of NR_CPUS elements | *01b7822700tcp: Don't drop SYN+ACK for simultaneous connect(). | *7253b4fed4PCI: Add missing bridge lock to pci_bus_lock() | *d69ffa44f3riscv: set trap vector earlier | *0fbac73a97btrfs: replace BUG_ON() with error handling at update_ref_for_cow() | *9cc887ac24btrfs: clean up our handling of refs == 0 in snapshot delete | *75a428e1fdbtrfs: replace BUG_ON with ASSERT in walk_down_proc() | *65c8761382fs/ntfs3: Check more cases when directory is corrupted | *2c804cda1asmp: Add missing destroy_work_on_stack() call in smp_call_on_cpu() | *1a05d8d02cwifi: mwifiex: Do not return unused priv in mwifiex_get_priv_by_id() | *d1d55b0ae4dma-mapping: benchmark: Don't starve others when doing the test | *7d12a44f25ext4: fix possible tid_t sequence overflows | *78f976b4a7drm/amdgpu: Set no_hw_access when VF request full GPU fails | *e072d3562clibbpf: Add NULL checks to bpf_object__{prev_map,next_map} | *d92f0baf99hwmon: (w83627ehf) Fix underflows seen when writing limit attributes | *0c23e18cefhwmon: (nct6775-core) Fix underflows seen when writing limit attributes | *da765bebd9hwmon: (lm95234) Fix underflows seen when writing limit attributes | *f7f5101af5hwmon: (adc128d818) Fix underflows seen when writing limit attributes | *40a93d1feecrypto: qat - fix unintentional re-enabling of error interrupts | *438d522227pci/hotplug/pnv_php: Fix hotplug driver crash on Powernv | *5258a1edd8devres: Initialize an uninitialized struct member | *289979d645um: line: always fill *error_out in setup_one_line() | *3cff144cb3cgroup: Protect css->cgroup write under css_set_lock | *70e66ea0beiommu/vt-d: Handle volatile descriptor status read | *23e48f5d26dm init: Handle minors larger than 255 | *94c6dfbf05ASoC: topology: Properly initialize soc_enum values | *ba34fcfe32phy: zynqmp: Take the phy mutex in xlate | *135e3ad353firmware: cs_dsp: Don't allow writes to read-only controls | *e7bd6988abnet: dsa: vsc73xx: fix possible subblocks range of CAPT block | *dc9dad0108net: bridge: br_fdb_external_learn_add(): always set EXT_LEARN | *d7567f098ffou: Fix null-ptr-deref in GRO. | *a97f32bc05bareudp: Fix device stats updates. | *ee3710c40busbnet: modern method to get random MAC | *e9b0dced0eice: do not bring the VSI up, if it was down before the XDP setup | *e1b204ec59ice: allow hot-swapping XDP programs | *3057646543ice: Use ice_max_xdp_frame_size() in ice_xdp_setup_prog() | *13a6e5d920igc: Unlock on error in igc_io_resume() | *06eab37e45regulator: core: Stub devm_regulator_bulk_get_const() if !CONFIG_REGULATOR | *fd5015686dregulator: Add of_regulator_bulk_get_all | *942baec8d1platform/x86: dell-smbios: Fix error path in dell_smbios_init() | *9e3ffb8392ice: Add netif_device_attach/detach into PF reset flow | *2dbb384169igb: Fix not clearing TimeSync interrupts for 82580 | *13af744642cifs: Fix FALLOC_FL_ZERO_RANGE to preflush buffered part of target region | *ca647e8779rust: kbuild: fix export of bss symbols | *7bb103055crust: Use awk instead of recent xargs | *4205e8bc45can: mcp251xfd: fix ring configuration when switching from CAN-CC to CAN-FD mode | *add5c9c820can: m_can: Release irq on error in m_can_open | *3b39dc2901can: bcm: Remove proc entry when dev is unregistered. | *c5624ce3bedrm/amdgpu: check for LINEAR_ALIGNED correctly in check_tiling_flags_gfx6 | *20e7164c52drm/amd/display: Check denominator pbn_div before used | *24d3e379dbpcmcia: Use resource_size function on resource object | *799b722cdamedia: qcom: camss: Add check for v4l2_fwnode_endpoint_parse | *27452796ccInput: ili210x - use kvmalloc() to allocate buffer for firmware update | *af218c803fPCI: keystone: Add workaround for Errata #i2037 (AM65x SR 1.0) | *4b91e418admedia: vivid: don't set HDMI TX controls if there are no HDMI outputs | *2c6599dd3bdrm/amdgpu: clear RB_OVERFLOW bit when enabling interrupts | *d40c2c3dd0drm/amdgpu: Fix smatch static checker warning | *5ca7e32f09drm/amd/display: Check HDCP returned status | *31bd4fab49usb: gadget: aspeed_udc: validate endpoint index for ast udc | *32afa1ad63usb: uas: set host status byte on data completion error | *f67db18effwifi: brcmsmac: advertise MFP_CAPABLE to enable WPA3 | *015c78c4c8leds: spi-byte: Call of_node_put() on error path | *4f0c7ab401media: vivid: fix wrong sizeimage value for mplane | *41e46e5950fs/ntfs3: One more reason to mark inode bad | *0173999123udf: Avoid excessive partition lengths | *d845231dc3netfilter: nf_conncount: fix wrong variable type | *86ab0b4762iommu: sun50i: clear bypass register | *dbb9f9e736x86/kmsan: Fix hook for unaligned accesses | *0594d41ea1af_unix: Remove put_pid()/put_cred() in copy_peercred(). | *3e5e4038bdirqchip/armada-370-xp: Do not allow mapping IRQ 0 and 1 | *1f81d51141ELF: fix kernel.randomize_va_space double read | *4effd08844smack: unix sockets: fix accept()ed socket label | *85713a752eALSA: hda: Add input value sanity checks to HDMI channel map controls | *c0939f9479ALSA: control: Apply sanity check of input values for user elements | *30562eff4anilfs2: fix state management in error path of log writing function | *19cfeba0e4nilfs2: protect references to superblock parameters exposed in sysfs | *ca92c4bff2nilfs2: fix missing cleanup on rollforward recovery error | *549e407569sched: sch_cake: fix bulk flow accounting logic for host fairness | *925c18a7cfila: call nf_unregister_net_hooks() sooner | *810a4e7d92tcp_bpf: fix return value of tcp_bpf_sendmsg() | *e446fd2df0Revert "drm/amdgpu: align pp_power_profile_mode with kernel docs" | *3d90605cd4x86/fpu: Avoid writing LBR bit to IA32_XSS unless supported | *0b86d2121fnet: mctp-serial: Fix missing escapes on transmit | *29d6f70176tracing: Avoid possible softlockup in tracing_iter_reset() | *14f970a8d0spi: rockchip: Resolve unbalanced runtime PM / system PM handling | *f7ab9e14b2can: mcp251x: fix deadlock if an interrupt occurs during mcp251x_open | *fbf8b038cbclk: qcom: clk-alpha-pll: Fix the trion pll postdiv set rate API | *68dc9cceb6clk: qcom: clk-alpha-pll: Fix the pll post div mask | *42cbbd9513fuse: use unsigned type for getxattr/listxattr size truncation | *b5123ba74afuse: update stats for pages in dropped aux writeback list * |a8d720c192Mergeae7b2bd3d4("mmc: cqhci: Fix checking of CQHCI_HALT state") into android14-6.1-lts |\| | *ae7b2bd3d4mmc: cqhci: Fix checking of CQHCI_HALT state | *3a5a2a08b8mmc: sdhci-of-aspeed: fix module autoloading | *373f8f5b08mmc: dw_mmc: Fix IDMAC operation with pages bigger than 4K | *8cb8f89fd5mmc: core: apply SD quirks earlier during probe | *6e7989e9a0Bluetooth: MGMT: Ignore keys being loaded with invalid type | *547017ba86Revert "Bluetooth: MGMT/SMP: Fix address type when using SMP over BREDR/LE" | *7e328cf972nvme-pci: Add sleep quirk for Samsung 990 Evo | *a92d81c9efrtmutex: Drop rt_mutex::wait_lock before scheduling | *8d3dc52ff3x86/kaslr: Expose and use the end of the physical memory address space | *edafbf36e2irqchip/gic-v2m: Fix refcount leak in gicv2m_of_init() | *15210b7c8cperf/x86/intel: Limit the period on Haswell | *26c6af49d2x86/tdx: Fix data leak in mmio_read() | *e1cbd23d5fata: libata: Fix memory leak for error path in ata_host_alloc() | *eaebe313e8ksmbd: Unlock on in ksmbd_tcp_set_interfaces() | *93d54a4b59ksmbd: unset the binding mark of a reused connection | *a7e2b07844ALSA: hda/realtek: Support mute LED on HP Laptop 14-dq2xxx | *ed2bb2583fALSA: hda/realtek: add patch for internal mic in Lenovo V145 | *702b2f1ac1ALSA: hda/conexant: Add pincfg quirk to enable top speakers on Sirius devices | *6c71e04390KVM: SVM: Don't advertise Bus Lock Detect to guest if SVM support is missing | *11800db8e3KVM: SVM: fix emulation of msr reads/writes of MSR_FS_BASE and MSR_GS_BASE | *fa297c33faKVM: x86: Acquire kvm->srcu when handling KVM_SET_VCPU_EVENTS | *fe5046ca91ASoC: dapm: Fix UAF for snd_soc_pcm_runtime object | *db2c235682sch/netem: fix use after free in netem_dequeue * |eccb72fb65Revert "hwspinlock: Introduce hwspin_lock_bust()" * |d0af2ae8d5Merge 6.1.109 into android14-6.1-lts |\| | *5ca5b389fdLinux 6.1.109 | *27b3111f45i2c: Use IS_REACHABLE() for substituting empty ACPI functions | *541de96789ext4: handle redirtying in ext4_bio_write_page() | *02bcb6d00aext4: reject casefold inode flag without casefold feature | *6ac60f68b2udf: Limit file size to 4TB | *63673a49d7ext4: fix inode tree inconsistency caused by ENOMEM | *4cfdb8c906Bluetooth: SCO: fix sco_conn related locking and validity issues | *70a13b1e25Bluetooth: SCO: Fix possible circular locking dependency on sco_connect_cfm | *6b5325f245virtio_net: Fix napi_skb_cache_put warning | *04d427e331media: uvcvideo: Enforce alignment of frame and interval | *1726914cb1drm/amd/display: Skip wbscl_set_scaler_filter if filter is null | *9f404b0bc2drm/amd/display: Correct the defined value for AMDGPU_DMUB_NOTIFICATION_MAX | *356fcce9cddrm/amd/display: added NULL check at start of dc_validate_stream | *5ea84b482cblock: remove the blk_flush_integrity call in blk_integrity_unregister | *0cc7e0ee31driver: iio: add missing checks on iio_info's callback access | *479f221154wifi: cfg80211: make hash table duplicates more survivable | *1bec77826fhwmon: (k10temp) Check return value of amd_smn_read() | *a3480e59fddmaengine: altera-msgdma: properly free descriptor in msgdma_free_descriptor | *47803e8775dmaengine: altera-msgdma: use irq variant of spin_lock/unlock while invoking callbacks | *e1b121f21bdrm/bridge: tc358767: Check if fully initialized before signalling HPD event via IRQ | *8795acb354drm/meson: plane: Add error handling | *03924d1176net/mlx5e: SHAMPO, Fix incorrect page release | *0776bcf9cbsmack: tcp: ipv4, fix incorrect labeling | *a1d594e6e7regmap: spi: Fix potential off-by-one when calculating reserved size | *d8c42405fcfsnotify: clear PARENT_WATCHED flags lazily | *b4243c05d7usb: typec: ucsi: Fix null pointer dereference in trace | *86d87f2e3dusbip: Don't submit special requests twice | *1e4cbc1149rcu/nocb: Remove buggy bypass lock contention mitigation | *08a3c584aapwm: xilinx: Fix u32 overflow issue in 32-bit width PWM mode. | *1d34bd5bfeionic: fix potential irq name truncation | *0f54b254f5RDMA/efa: Properly handle unexpected AQ completions | *1227a242ddhwspinlock: Introduce hwspin_lock_bust() | *ebcb06e004PCI: al: Check IORESOURCE_BUS existence during probe | *20585a2774cpufreq: scmi: Avoid overflow of target_freq in fast switch | *de9d821fb1wifi: iwlwifi: remove fw_running op | *369cfc6352drm/amdgpu: update type of buf size to u32 for eeprom functions | *1111076d91wifi: rtw89: ser: avoid multiple deinit on same CAM | *81a21315dbdrm/amd/pm: check negtive return for table entries | *70e8ec21fcdrm/amdgpu: the warning dereferencing obj for nbio_v7_4 | *462001ae13drm/amd/pm: check specific index for aldebaran | *01cd55b971drm/amdgpu: fix the waring dereferencing hive | *1b73ea3d97drm/amdgpu: fix dereference after null check | *100d3a3996drm/amdgpu/pm: Check input value for CUSTOM profile mode setting on legacy SOCs | *b8dfd4a3f9wifi: ath11k: initialize 'ret' in ath11k_qmi_load_file_target_mem() | *09b2d107feapparmor: fix possible NULL pointer dereference | *872814e91bdrm/amdkfd: Reconcile the definition and use of oem_id in struct kfd_topology_device | *b862a0bc53drm/amdgpu: fix mc_data out-of-bounds read warning | *8981927ebcdrm/amdgpu: fix ucode out-of-bounds read warning | *32915dc909drm/amdgpu: Fix out-of-bounds read of df_v1_7_channel_number | *cf2db220b3drm/amdgpu: Fix out-of-bounds write warning | *9dcbb3b3b0drm/amdgpu/pm: Fix uninitialized variable agc_btc_response | *81a1e5108adrm/amdgpu/pm: Fix uninitialized variable warning for smu10 | *341fa0fab3drm/amd/pm: fix uninitialized variable warnings for vangogh_ppt | *2be1eb6304drm/amd/amdgpu: Check tbo resource pointer | *3300a039cadrm/amd/display: Skip inactive planes within ModeSupportAndSystemConfiguration | *733ae18550drm/amd/display: Ensure index calculation will not overflow | *33e1ffc9d4drm/amd/display: Spinlock before reading event | *ca4e62eb01drm/amd/display: Fix Coverity INTEGER_OVERFLOW within dal_gpio_service_create | *0147505f08drm/amd/display: Check msg_id before processing transcation | *b36e9b3104drm/amd/display: Check num_valid_sets before accessing reader_wm_sets[] | *f338f99f6adrm/amd/display: Add array index check for hdcp ddc access | *28b515c458drm/amd/display: Stop amdgpu_dm initialize when stream nums greater than 6 | *276e3fd93edrm/amd/display: Check gpio_id before used as array index | *40b834caf3drm/amdgpu: avoid reading vf2pf info size from FB | *ef18f5c7cddrm/amd/pm: fix uninitialized variable warnings for vega10_hwmgr | *20c6373a6bdrm/amd/pm: fix the Out-of-bounds read warning | *60f4a4bc33drm/amd/pm: Fix negative array index read | *e95ee4990cdrm/amd/pm: fix warning using uninitialized value of max_vid_step | *0f97f31accdrm/amd/pm: fix uninitialized variable warning for smu8_hwmgr | *92cb4425f5drm/amd/pm: fix uninitialized variable warning | *ec0c1056f2drm/amdgpu/pm: Check the return value of smum_send_msg_to_smc | *cbf1a8ee11drm/amdgpu: fix overflowed array index read warning | *d219f902b1drm/amd/display: Assign linear_pitch_alignment even for VM | *4528d628fddrm/amdgpu: Fix uninitialized variable warning in amdgpu_afmt_acr | *300f076737selftests: mptcp: join: cannot rm sf if closed | *ec243defc5selftests: mptcp: join: check re-re-adding ID 0 endp | *753427d8e4selftests: mptcp: join: no extra msg if no counter | *141d0f094dselftests: mptcp: join: check removing ID 0 endpoint | *937b086cc4mptcp: avoid duplicated SUB_CLOSED events | *941b036b18mptcp: pr_debug: add missing \n at the end | *2ad4ad6936selftests: mptcp: join: check re-adding init endp with != id | *d6b06098dbselftests: mptcp: join: check re-using ID of unused ADD_ADDR | *7f72d7095bselftests: mptcp: join: test for flush/re-add endpoints | *66864ca5c7selftests: mptcp: add explicit test case for remove/readd | *f258df1b8eselftests: mptcp: join: check re-using ID of closed subflow | *c865bb5bd1selftests: mptcp: join: validate fullmesh endp on 1st sf | *c9c744666fmptcp: pm: fix ID 0 endp usage after multiple re-creations | *4188a94119mptcp: pm: reuse ID 0 after delete and re-add | *2b4f46f950mptcp: pm: avoid possible UaF when selecting endp | *733da3371amptcp: pm: fullmesh: select the right ID later | *5f04969136f2fs: fix to truncate preallocated blocks in f2fs_file_open() | *0ae40b2d0aPCI/MSI: Fix UAF in msi_capability_init | *5401bde337mptcp: pm: fix RM_ADDR ID for the initial subflow | *1817a1dfecmptcp: make pm_remove_addrs_and_subflows static | *e89266b843ASoC: amd: yc: Support mic on Lenovo Thinkpad E14 Gen 6 | *a03caacdd8net: usb: qmi_wwan: add MeiG Smart SRM825L | *0e14b91f84dma-debug: avoid deadlock between dma debug vs printk and netconsole | *689e48ab87i2c: Fix conditional for substituting empty ACPI functions | *9464461033ALSA: hda/conexant: Mute speakers at suspend / shutdown | *8e8bf09c44ALSA: hda/generic: Add a helper to mute speakers at suspend/shutdown | *32ed757885scsi: ufs: core: Bypass quick recovery if force reset is needed | *bc84eb3e17drm: panel-orientation-quirks: Add quirk for OrangePi Neo * |c59cc7f298Merge 6.1.108 into android14-6.1-lts |\| | *6995061734Linux 6.1.108 | *d3acaf2e0efbdev: offb: fix up missing cleanup.h | *d03099a2ccapparmor: fix policy_unpack_test on big endian systems | *60962c3d8escsi: aacraid: Fix double-free on probe failure | *9dd1abd3dfigc: Fix qbv tx latency by setting gtxoffset | *e257219edeigc: Fix reset adapter logics when tx mode change | *96013d2528phy: zynqmp: Enable reference clock correctly | *b4ecded146usb: cdnsp: fix for Link TRB with TC | *d0a0a4b407usb: cdnsp: fix incorrect index in cdnsp_get_hw_deq function | *38e7308532usb: core: sysfs: Unmerge @usb3_hardware_lpm_attr_group in remove_power_attributes() | *23074dbc71usb: dwc3: st: add missing depopulate in probe error path | *4c67352995usb: dwc3: st: fix probed platform device ref count on probe error path | *2189fd13c5usb: dwc3: core: Prevent USB core invalid event buffer address access | *391179f4e6usb: dwc3: omap: add missing depopulate in probe error path | *9fc715c1b2USB: serial: option: add MeiG Smart SRM825L | *c154395954cdc-acm: Add DISABLE_ECHO quirk for GE HealthCare UI Controller | *d9d48d70e9soc: qcom: cmd-db: Map shared memory as WC, not WB | *7ecd3dd4f8nfc: pn533: Add poll mod list filling check | *746ce47cfcnet: busy-poll: use ktime_get_ns() instead of local_clock() | *093ee72ed3drm/amd/display: avoid using null object of framebuffer | *d1e52a7e5bsctp: fix association labeling in the duplicate COOKIE-ECHO case | *e8b9930b0egtp: fix a potential NULL pointer dereference | *bfbf576f29bonding: implement xdo_dev_state_free and call it after deletion | *3308410c4eselftests: forwarding: local_termination: Down ports on cleanup | *5cdcf0d733selftests: forwarding: no_forwarding: Down ports on cleanup | *1e101c2b4enetfilter: nf_tables_ipv6: consider network offset in netdev/egress validation | *9bba5955eeethtool: check device is present when getting link settings | *1688b058a3wifi: iwlwifi: fw: fix wgds rev 3 exact size | *a369766dd3netfilter: nf_tables: restore IP sanity checks for netdev/egress | *3723a05fdbiommu: Do not return 0 from map_pages if it doesn't do anything | *9f3d456e5bBluetooth: hci_core: Fix not handling hibernation actions | *00041c90a8dmaengine: dw: Add memory bus width verification | *e7a804d15admaengine: dw: Add peripheral bus width verification | *62a5be6d3aphy: xilinx: phy-zynqmp: Fix SGMII linkup failure on resume | *55b250c234phy: xilinx: phy-zynqmp: dynamic clock support for power-save | *ef40ae518aphy: xilinx: add runtime PM support | *1e4782f826soundwire: stream: fix programming slave ports for non-continous port maps | *c1cc3326e2btrfs: fix extent map use-after-free when adding pages to compressed bio | *29b3695793mm: Fix missing folio invalidation calls during truncation | *82b0e1cf75pinctrl: mediatek: common-v2: Fix broken bias-disable for PULL_PU_PD_RSEL_TYPE | *c4e86c157fASoC: SOF: amd: Fix for acp init sequence | *a23387bc2dASoC: amd: acp: fix module autoloading | *0dff3dc75ethermal: of: Fix OF node leak in of_thermal_zone_find() error paths | *ad638686c5thermal: of: Fix OF node leak in thermal_of_trips_init() error path | *976db4583dof: Introduce for_each_*_child_of_node_scoped() to automate of_node_put() handling | *c1dce07187mptcp: pm: check add_addr_accept_max before accepting new ADD_ADDR | *7fdc870d08mptcp: pm: only mark 'subflow' endp as available | *fd8070ba2fmptcp: pm: remove mptcp_pm_remove_subflow() | *a1e8103f3emptcp: unify pm get_local_id interfaces | *5a88e29221mmc: mtk-sd: receive cmd8 data when hs400 tuning fail | *756b100543mmc: Avoid open coding by using mmc_op_tuning() | *4527a3228ausb: typec: fix up incorrectly backported "usb: typec: tcpm: unregister existing source caps before re-registration" | *0f0d37c154ata: libata-core: Fix null pointer dereference on error | *44e99078f6drm/amdgpu/swsmu: always force a state reprogram on init | *6f492daa7ddrm/amdgpu: align pp_power_profile_mode with kernel docs | *f9e166639dmptcp: pm: ADD_ADDR 0 is not a new address | *8bd19f60ecmptcp: pm: do not remove already closed subflows | *64fa1fed61mptcp: pm: send ACK on an active subflow | *c923fe32afmptcp: pm: reset MPC endp ID when re-added | *f6627c69a3mptcp: pm: skip connecting to already established sf | *df30dd2e83mptcp: sched: check both backup in retrans | *3b00de9f22mptcp: close subflow when receiving TCP+FIN | *a8e5e96bd3net: mana: Fix race of mana_hwc_post_rx_wqe and new hwc response | *f43ac082e2wifi: mwifiex: duplicate static structs used in driver instances | *2926be1d0fwifi: wfx: repair open network AP mode | *3a44d98af9of: Add cleanup.h based auto release via __free(device_node) markings | *8f0bd52692pinctrl: single: fix potential NULL dereference in pcs_get_function() | *eebdbb2608pinctrl: rockchip: correct RK3328 iomux width flag for GPIO2-B pins | *6df57c63c2smb/client: avoid dereferencing rdata=NULL in smb2_new_read_req() | *91ca04cc39btrfs: run delayed iputs when flushing delalloc | *b29bae47f2LoongArch: Remove the unused dma-direct.h | *9ee1534ecddrm/amdgpu: Using uninitialized value *size when calling amdgpu_vce_cs_reloc * |db06d215a8Revert "posix-timers: Ensure timer ID search-loop limit is valid" * |3e3e85a2c0Revert "pid: Replace struct pid 1-element array with flex-array" * |524ae3c9d3Merge 6.1.107 into android14-6.1-lts |\| | *311d8503efLinux 6.1.107 | *5fc3760002tools: move alignment-related macros to new <linux/align.h> | *94736334b8Input: MT - limit max slots | *8bea2845easelftests: net: more strict check in net_helper | *f394b18505net: change maximum number of UDP segments to 128 | *229f6dd373Revert "jfs: fix shift-out-of-bounds in dbJoin" | *a9ed3db251ice: fix W=1 headers mismatch | *0a157dbeffudp: fix receiving fraglist GSO packets | *e1646dd16cgfs2: Remove freeze_go_demote_ok | *dd5eab8d97gfs2: Remove LM_FLAG_PRIORITY flag | *9841f20dbdgfs2: don't withdraw if init_threads() got interrupted | *a17e5e26b6gfs2: Fix another freeze/thaw hang | *53352f8cb4wifi: cfg80211: fix receiving mesh packets without RFC1042 header | *8ac387eb54wifi: mac80211: fix potential null pointer dereference | *44fb2d4152wifi: mac80211: drop bogus static keywords in A-MSDU rx | *59f7af8247wifi: mac80211: fix receiving mesh packets in forwarding=0 networks | *b2b068cb05wifi: mac80211: fix flow dissection for forwarded packets | *84de40083dwifi: mac80211: fix mesh forwarding | *0cbe7032cewifi: mac80211: fix mesh path discovery based on unicast packets | *88d42b4f37wifi: mac80211: add documentation for amsdu_mesh_control | *f01c5e335fnet: drop bad gso csum_start and offset in virtio_net_hdr | *4316ad9136net: more strict VIRTIO_NET_HDR_GSO_UDP_L4 validation | *5e2df7e6c5gso: fix dodgy bit handling for GSO_UDP_L4 | *f308e79182udp: allow header check for dodgy GSO_UDP_L4 packets. | *fe22370706Revert "s390/dasd: Establish DMA alignment" | *77fa62cd9aKVM: x86: fire timer when it is migrated and expired, and in oneshot mode | *83065ded77drm/amdgpu/vcn: not pause dpg for unified queue | *745439da95drm/amdgpu/vcn: identify unified queue in sw init | *c06e7c45a7Bluetooth: hci_ldisc: check HCI_UART_PROTO_READY flag in HCIUARTGETPROTO | *37a87b0518nfsd: Fix a regression in nfsd_setattr() | *3977ac0c22nfsd: don't call locks_release_private() twice concurrently | *631e27be99nfsd: drop the nfsd_put helper | *eeae04bcecnfsd: call nfsd_last_thread() before final nfsd_put() | *27cb298d60NFSD: simplify error paths in nfsd_svc() | *b5167e0021nfsd: separate nfsd_last_thread() from nfsd_put() | *8862e33951nfsd: Simplify code around svc_exit_thread() call in nfsd() | *a3754e840emm/numa: no task_numa_fault() call if PTE is changed | *ef93a6ebbfmm/numa: no task_numa_fault() call if PMD is changed | *fd1ffbb50emm/vmalloc: fix page mapping if vm_area_alloc_pages() with high order fallback to order 0 | *c1a5268d4bALSA: timer: Relax start tick time check for slave timer elements | *9262af0111hwmon: (ltc2992) Fix memory leak in ltc2992_parse_dt() | *68238d640ctcp: do not export tcp_twsk_purge() | *00632faeefRevert "drm/amd/display: Validate hw_points_num before using it" | *8c09a1267dRevert "usb: gadget: uvc: cleanup request when not in correct state" | *85b866e4c4mptcp: pm: only decrement add_addr_accepted for MPJ req | *78d97ad256mptcp: pm: re-using ID of unused flushed subflows | *13c31029c3mptcp: pm: re-using ID of unused removed subflows | *027cca7029mptcp: pm: re-using ID of unused removed ADD_ADDR | *c07ad220eapmdomain: imx: wait SSAR when i.MX93 power domain on | *09365d2af5mmc: dw_mmc: allow biu and ciu clocks to defer | *94d4fbad01KVM: arm64: Make ICC_*SGI*_EL1 undef in the absence of a vGICv3 | *f31332e5b8cxgb4: add forgotten u64 ivlan cast before shift | *9bc8d103eaInput: i8042 - use new forcenorestore quirk to replace old buggy quirk combination | *034026d72eInput: i8042 - add forcenorestore quirk to leave controller untouched even on s3 | *d463accbb7HID: microsoft: Add rumble support to latest xbox controllers | *0abdec5894HID: wacom: Defer calculation of resolution until resolution_code is known | *147b549ca9MIPS: Loongson64: Set timer mode in cpu-probe | *5ab8793b9adrm/amdgpu: Validate TA binary size | *a9106b178aksmbd: the buffer of smb2 query dir response has at least 1 byte | *fe6e96eb62scsi: core: Fix the return value of scsi_logical_block_count() | *5da2884292Bluetooth: MGMT: Add error handling to pair_device() | *3b4e76ceaemmc: mmc_test: Fix NULL dereference on allocation failure | *7ecf855421drm/msm/dpu: cleanup FB if dpu_format_populate_layout fails | *0a20364829drm/msm/dp: reset the link phy params before link training | *db33bf43eedrm/msm/dp: fix the max supported bpp logic | *90992d102adrm/msm/dpu: don't play tricks with debug macros | *3b50da4a11net: xilinx: axienet: Fix dangling multicast addresses | *e716aa72d6net: xilinx: axienet: Always disable promiscuous mode | *0a897e1c62octeontx2-af: Fix CPT AF register offset calculation | *d9384ae7aenetfilter: flowtable: validate vlan header | *38a21c026eipv6: prevent possible UAF in ip6_xmit() | *3574d28cafipv6: fix possible UAF in ip6_finish_output2() | *9a3e55afa9ipv6: prevent UAF in ip6_send_skb() | *0486d31dd8netem: fix return value if duplicate enqueue fails | *18b2e833danet: dsa: mv88e6xxx: Fix out-of-bound access | *bcf19dfdaadpaa2-switch: Fix error checking in dpaa2_switch_seed_bp() | *fa8fdbe4b8ice: fix ICE_LAST_OFFSET formula | *b2b062df81ice: fix page reuse when PAGE_SIZE is over 8k | *46573864e8ice: Pull out next_to_clean bump out of ice_put_rx_buf() | *538d775a2eice: Store page count inside ice_rx_buf | *1dbbd8724aice: Add xdp_buff to ice_rx_ring struct | *b0126f9f21ice: Prepare legacy-rx for upcoming XDP multi-buffer support | *5390f05a66bonding: fix xfrm state handling when clearing active slave | *7fa9243391bonding: fix xfrm real_dev null pointer dereference | *32a0173600bonding: fix null pointer deref in bond_ipsec_offload_ok | *3fe0c20b13bonding: fix bond_ipsec_offload_ok return type | *48d61ac8e0ip6_tunnel: Fix broken GRO | *418e686a23netfilter: nft_counter: Synchronize nft_counter_reset() against reader. | *75eb4a8c11netfilter: nft_counter: Disable BH in nft_counter_offload_stats(). | *72da240aafkcm: Serialise kcm_sendmsg() for the same socket. | *7d09c00d45net: mctp: test: Use correct skb for route input check | *e3d9de3742tcp: prevent concurrent execution of tcp_sk_exit_batch | *592e77519ctcp/dccp: do not care about families in inet_twsk_purge() | *e33e75fe52tcp/dccp: bypass empty buckets in inet_twsk_purge() | *4df0fb0391selftests: udpgro: report error when receive failed | *c0e057794aselftests/net: synchronize udpgro tests' tx and rx connection | *019b529817tc-testing: don't access non-existent variable on exception | *960ec92774net: mscc: ocelot: serialize access to the injection/extraction groups | *06bcb9032enet: mscc: ocelot: fix QoS class for injected packets with "ocelot-8021q" | *9771613ed7net: mscc: ocelot: use ocelot_xmit_get_vlan_info() also for FDMA and register injection | *50394b8e8anet: dsa: tag_ocelot: call only the relevant portion of __skb_vlan_pop() on TX | *4aae448651net: dsa: tag_ocelot: do not rely on skb_mac_header() for VLAN xmit | *a23c49a5eaBluetooth: SMP: Fix assumption of Central always being Initiator | *1232921f2bBluetooth: hci_core: Fix LE quote calculation | *09b8a11cbedrm/amdkfd: reserve the BO before validating it | *36db2b7099platform/surface: aggregator: Fix warning when controller is destroyed in probe | *e7c7dfe022drm/amd/display: Adjust cursor position | *0660f6c69cbtrfs: send: allow cloning non-aligned extent if it ends at i_size | *95eda3e46cbtrfs: replace sb::s_blocksize by fs_info::sectorsize | *3a79961a16net: mana: Fix doorbell out of order violation and avoid unnecessary doorbell rings | *cdbf424d9bdm suspend: return -ERESTARTSYS instead of -EINTR | *a89aef1e6ci2c: tegra: Do not mark ACPI devices as irq safe | *e18d017a97i2c: tegra: allow VI support to be compiled out | *fa5697fbd5i2c: tegra: allow DVC support to be compiled out | *9f8401fdc2media: solo6x10: replace max(a, min(b, c)) by clamp(b, a, c) | *137d565ab8gtp: pull network headers in gtp_dev_xmit() | *12db3188cdhrtimer: Prevent queuing of hrtimer without a function callback | *2f44255b89drm/amdgpu: fix dereference null return value for the function amdgpu_vm_pt_parent | *b2ec6c4a46nvmet-rdma: fix possible bad dereference when freeing rsps | *07b373f1e1ext4: set the type of max_zeroout to unsigned int to avoid overflow | *5f7b9c3efcirqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc | *96ee5c5712fbdev: offb: replace of_node_put with __free(device_node) | *2aad4b8d89usb: dwc3: core: Skip setting event buffers for host only controllers | *e6a4fe97c5platform/x86: lg-laptop: fix %s null argument warning | *ec9adc7ef9clocksource: Make watchdog and suspend-timing multiplication overflow safe | *432aa24665irqchip/renesas-rzg2l: Do not set TIEN and TINT source at the same time | *79028991aes390/iucv: fix receive buffer virtual vs physical address confusion | *66efa11a43openrisc: Call setup_memory() earlier in the init sequence | *1e541f92e3NFS: avoid infinite loop in pnfs_update_layout. | *92c04b0955nvmet-tcp: do not continue for invalid icreq | *6b186d9b63net: hns3: add checking for vf id of mailbox | *02c54d72eertc: nct3018y: fix possible NULL dereference | *97e16428c2firmware: cirrus: cs_dsp: Initialize debugfs_root to invalid | *74ee5e6352Bluetooth: bnep: Fix out-of-bound access | *be16163a59nvme: clear caller pointer on identify failure | *ba0cd1938fusb: gadget: fsl: Increase size of name buffer for endpoints | *fbc877741af2fs: fix to do sanity check in update_sit_entry | *c2adaaad83btrfs: delete pointless BUG_ON check on quota root in btrfs_qgroup_account_extent() | *2df142f7b3btrfs: change BUG_ON to assertion in tree_move_down() | *c5384273cebtrfs: send: handle unexpected data in header buffer in begin_cmd() | *8695535e3ebtrfs: handle invalid root reference found in may_destroy_subvol() | *d483da03a6btrfs: tests: allocate dummy fs_info and root in test_find_delalloc() | *1f19860ad2btrfs: change BUG_ON to assertion when checking for delayed_node root | *7a856856ffbtrfs: delayed-inode: drop pointless BUG_ON in __btrfs_remove_delayed_item() | *27d38bfec9powerpc/boot: Only free if realloc() succeeds | *f9e777ee21powerpc/boot: Handle allocation failure in simple_realloc() | *fb6a58f9ebparisc: Use irq_enter_rcu() to fix warning at kernel/context_tracking.c:367 | *efa7991d3cmemory: stm32-fmc2-ebi: check regmap_read return value | *b0cde867b8x86: Increase brk randomness entropy for 64-bit systems | *86ea3c4e71md: clean up invalid BUG_ON in md_ioctl | *1f62c25f24netlink: hold nlk->cb_mutex longer in __netlink_dump_start() | *3e56edb0ebclocksource/drivers/arm_global_timer: Guard against division by zero | *e20977b108virtiofs: forbid newlines in tags | *748fb68e11hrtimer: Select housekeeping CPU during migration | *72ba377413drm/lima: set gp bus_stop bit before hard reset | *c21c44a353net/sun3_82586: Avoid reading past buffer in debug output | *537872d1e3media: drivers/media/dvb-core: copy user arrays safely | *18a2f8d7f4scsi: lpfc: Initialize status local variable in lpfc_sli4_repost_sgl_list() | *3fc688917efs: binfmt_elf_efpic: don't use missing interpreter's properties | *06ee04a907media: pci: cx23885: check cx23885_vdev_init() return | *679bce55abkernfs: fix false-positive WARN(nr_mmapped) in kernfs_drain_open_files | *cc7fc328c2quota: Remove BUG_ON from dqget() | *a8f650b93efuse: fix UAF in rcu pathwalks | *fb8b3b44e0afs: fix __afs_break_callback() / afs_drop_open_mmap() race | *d7b57fbfa1ext4: do not trim the group with corrupted block bitmap | *01136f8721nvmet-trace: avoid dereferencing pointer too early | *1ebc7386a0gfs2: Refcounting fix in gfs2_thaw_super | *3df1a4ea1cBluetooth: hci_conn: Check non NULL function before calling for HFP offload | *662e44b6c1drm/rockchip: vop2: clear afbc en and transform bit for cluster window at linear mode | *0ace3506dbhwmon: (pc87360) Bounds check data->innr usage | *d15ede75ddASoC: SOF: ipc4: check return value of snd_sof_ipc_msg_data | *2cb514b5aepowerpc/xics: Check return value of kasprintf in icp_native_map_one_cpu | *73535c8d81memory: tegra: Skip SID programming if SID registers aren't set | *7443e677ecdrm/msm: Reduce fallout of fence signaling vs reclaim hangs | *9b8ec0ea24block: Fix lockdep warning in blk_mq_mark_tag_wait | *eb44e1c52earm64: Fix KASAN random tag seed initialization | *83d0dcbb3drust: fix the default format for CONFIG_{RUSTC,BINDGEN}_VERSION_TEXT | *90d3c2c0f5rust: suppress error messages from CONFIG_{RUSTC,BINDGEN}_VERSION_TEXT | *d927288f00rust: work around `bindgen` 0.69.0 issue | *9ce3cd48a4kbuild: rust_is_available: handle failures calling `$RUSTC`/`$BINDGEN` | *c527858f18kbuild: rust_is_available: normalize version matching | *1ba15435a6hwmon: (ltc2992) Avoid division by zero | *8c00db8017IB/hfi1: Fix potential deadlock on &irq_src_lock and &dd->uctxt_lock | *6d659fdf18clk: visconti: Add bounds-checking coverage for struct visconti_pll_provider | *c0e412f80dwifi: iwlwifi: fw: Fix debugfs command sending | *ddb8a6d880wifi: iwlwifi: abort scan when rfkill on but device enabled | *0f98cd22fcgfs2: setattr_chown: Add missing initialization | *c70ab2af23scsi: spi: Fix sshdr use | *fed97f4050media: qcom: venus: fix incorrect return value | *26c8f24277drm/tegra: Zero-initialize iosys_map | *5347703297binfmt_misc: cleanup on filesystem umount | *9a3ff24192md/raid5-cache: use READ_ONCE/WRITE_ONCE for 'conf->log' | *659856418cmedia: s5p-mfc: Fix potential deadlock on condlock | *733634e573staging: ks7010: disable bh on tx_dev_lock | *72c9c01c57drm/amd/display: Validate hw_points_num before using it | *272cf55f2busb: gadget: uvc: cleanup request when not in correct state | *e687a19df4staging: iio: resolver: ad2s1210: fix use before initialization | *82a3c241ccmedia: radio-isa: use dev_name to fill in bus_info | *92664676f2drm/amdkfd: Move dma unmapping after TLB flush | *d90f3acc48i3c: mipi-i3c-hci: Do not unmap region not mapped for transfer | *bcaec2ae3di3c: mipi-i3c-hci: Remove BUG() when Ring Abort request times out | *c54b28b3c7drm/bridge: tc358768: Attempt to fix DSI horizontal timings | *e5d961bff4s390/smp,mcck: fix early IPI handling | *baaa008203RDMA/rtrs: Fix the problem of variable not initialized fully | *a569a0b59ei2c: riic: avoid potential division by zero | *7f3c6b5025cgroup: Avoid extra dereference in css_populate_dir() | *6e8c5fd9ffwifi: cw1200: Avoid processing an invalid TIM IE | *d684c4781frcu: Eliminate rcu_gp_slow_unregister() false positive | *742c246aa0rcu: Dump memory object info if callback function is invalid | *a34268fefbmm: Remove kmem_valid_obj() | *62b6ce5d87wifi: mac80211: fix BA session teardown race | *19d13ec00awifi: cfg80211: check wiphy mutex is held for wdev mutex | *17e61f866cssb: Fix division by zero issue in ssb_calc_clock_rate | *c51eadf270drm/amd/amdgpu/imu_v11_0: Increase buffer size to ensure all possible values can be stored | *be935d1b1cALSA: hda/realtek: Fix noise from speakers on Lenovo IdeaPad 3 15IAU7 | *6ae2b7d63cnet: hns3: fix a deadlock problem when config TC during resetting | *11410e0fcdnet: hns3: use the user's cfg after reset | *8895130358net: hns3: fix wrong use of semaphore up | *fb1adb05eanetfilter: nf_tables: Add locking for NFT_MSG_GETOBJ_RESET requests | *d5e7b2b4danetfilter: nf_tables: Introduce nf_tables_getobj_single | *d76c69c84enetfilter: nf_tables: Carry reset boolean in nft_obj_dump_ctx | *71b6d8d3a8netfilter: nf_tables: nft_obj_filter fits into cb->ctx | *7ee3484ad1netfilter: nf_tables: Carry s_idx in nft_obj_dump_ctx | *f71f265273netfilter: nf_tables: A better name for nft_obj_filter | *6ac72b0f8enetfilter: nf_tables: Unconditionally allocate nft_obj_filter | *9d536f9372netfilter: nf_tables: Drop pointless memset in nf_tables_dump_obj | *5293fbcef6netfilter: nf_tables: Audit log dump reset after the fact | *6dcc8ba8a6netfilter: nf_queue: drop packets with cloned unconfirmed conntracks | *7eafeec6benetfilter: flowtable: initialise extack before use | *c24eba5dcdnetfilter: allow ipv6 fragments to arrive on different devices | *5762793b8cmptcp: correct MPTCP_SUBFLOW_ATTR_SSN_OFFSET reserved size | *a051d405c3mlxbf_gige: disable RX filters until RX path initialized | *bda765cbe0mlxbf_gige: Remove two unused function declarations | *509a2c9a01net: dsa: vsc73xx: check busy flag in MDIO operations | *4bb83e73ddnet: dsa: vsc73xx: use read_poll_timeout instead delay loop | *77d6931186net: dsa: vsc73xx: pass value in phy_write operation | *26982fc3d5net: axienet: Fix register defines comment description | *379a6a3265atm: idt77252: prevent use after free in dequeue_rx() | *9367bad8dbnet/mlx5e: Correctly report errors for ethtool rx flows | *03d3734bd6net/mlx5e: Take state lock during tx timeout reporter | *f6943e19f7igc: Fix packet still tx after gate close by reducing i226 MAC retry buffer | *fb7d959bc0igc: Correct the launchtime offset | *cf8715aeccALSA: usb: Fix UBSAN warning in parse_audio_unit() | *6f1df96152fs/ntfs3: Do copy_to_user out of run_lock | *bd04a149e3jfs: Fix shift-out-of-bounds in dbDiscardAG | *53023ab118jfs: fix null ptr deref in dtInsertEntry | *5a2e37bc64fou: remove warn in gue_gro_receive on unsupported protocol | *ba31b38531bpf, net: Use DEV_STAT_INC() | *c996b57030udf: Fix bogus checksum computation in udf_rename() | *0752e7fb54ext4: do not create EA inode under buffer lock | *db015e961cext4: fold quota accounting into ext4_xattr_inode_lookup_create() | *d13e083800ext4: check the return value of ext4_xattr_inode_dec_ref() | *eea40d33bfBluetooth: RFCOMM: Fix not validating setsockopt user input | *0fc3287d49bpf: Avoid kfree_rcu() under lock in bpf_lpm_trie. | *d9a429fec7bpf: Replace bpf_lpm_trie_key 0-length array with flexible array | *774b664d06docs/bpf: Document BPF_MAP_TYPE_LPM_TRIE map | *9eb3bc0973wifi: cfg80211: check A-MSDU format more carefully | *966d5c2c22wifi: mac80211: add a workaround for receiving non-standard mesh A-MSDU | *7972074342wifi: mac80211: fix receiving A-MSDU frames on mesh interfaces | *8323a31e46wifi: mac80211: remove mesh forwarding congestion check | *5ad7b5e709wifi: cfg80211: factor out bridge tunnel / RFC1042 header check | *97458c6cf5wifi: cfg80211: move A-MSDU check in ieee80211_data_to_8023_exthdr | *d54c019bd9wifi: mac80211: fix and simplify unencrypted drop check for mesh | *327cd83cc5pppoe: Fix memory leak in pppoe_sendmsg() | *0b60c07253net: sctp: fix skb leak in sctp_inq_free() | *2c66293a45net:rds: Fix possible deadlock in rds_message_put | *863ca59e21quota: Detect loops in quota tree | *f2a3618e0ferofs: avoid debugging output for (de)compressed data | *73852fe765reiserfs: fix uninit-value in comp_keys | *27cd5ce076Squashfs: fix variable overflow triggered by sysbot | *1a426b3aa3squashfs: squashfs_read_data need to check if the length is 0 | *fbab814658jfs: fix shift-out-of-bounds in dbJoin | *46d03e1884net: don't dump stack on queue timeout | *465b5ae355net: sched: Print msecs when transmit queue time out | *31f7a8c4fbwifi: mac80211: fix change_address deadlock during unregister | *68ec5e368ewifi: mac80211: take wiphy lock for MAC addr change | *573b59528aBluetooth: Fix hci_link_tx_to RCU lock usage | *475c7e74b4gfs2: Stop using gfs2_make_fs_ro for withdraw | *aaa5ea0ec3gfs2: Rework freeze / thaw logic | *eb86395716gfs2: Rename SDF_{FS_FROZEN => FREEZE_INITIATOR} | *3720deabebgfs2: Rename gfs2_freeze_lock{ => _shared } | *3c7bac8c76gfs2: Rename the {freeze,thaw}_super callbacks | *b33e28b889gfs2: Rename remaining "transaction" glock references | *5ea9dcfcd9pid: Replace struct pid 1-element array with flex-array | *6a0ac84501posix-timers: Ensure timer ID search-loop limit is valid | *40c88c429abpf: drop unnecessary user-triggerable WARN_ONCE in verifierl log | *3551cd065abpf: Split off basic BPF verifier log into separate file | *2bcb4293abmm: khugepaged: fix kernel BUG in hpage_collapse_scan_file() | *32281b1579nilfs2: initialize "struct nilfs_binfo_dat"->bi_pad field | *973f158a5c9P FS: Fix wild-memory-access write in v9fs_get_acl | *0bed2db354ext4, jbd2: add an optimized bmap for the journal inode | *1f4c1de782nilfs2: prevent WARNING in nilfs_dat_commit_end() | *57aca19203bpf: Fix updating attached freplace prog in prog_array map | *20758427ecs390/uv: Panic for set and remove shared access UVC errors | *28c708c669drm/amdgpu/jpeg2: properly set atomics vmid field | *43768fa80fmemcg_write_event_control(): fix a user-triggerable oops | *922fab508edrm/amdgpu: Actually check flags for all context ops. | *106140dd44btrfs: tree-checker: add dev extent item checks | *a61ad8e074btrfs: zoned: properly take lock to read/update block group's zoned variables | *2058b4962fmm/memory-failure: use raw_spinlock_t in struct memory_failure_cpu | *d6d68531f8selinux: fix potential counting error in avc_add_xperms_decision() | *b8a50877f6fs/netfs/fscache_cookie: add missing "n_accesses" check | *fc575212c6rtla/osnoise: Prevent NULL dereference in error handling | *6c8aae7169i2c: qcom-geni: Add missing geni_icc_disable in geni_i2c_runtime_resume | *8cad3b2b3afix bitmap corruption on close_range() with CLOSE_RANGE_UNSHARE | *8cd74c5d5ebitmap: introduce generic optimized bitmap_size() | *bee3a23939btrfs: rename bitmap_set_bits() -> btrfs_bitmap_set_bits() | *9ef08da2a3s390/cio: rename bitmap_size() -> idset_bitmap_size() | *2db69eaa3dfs/ntfs3: add prefix to bitmap_size() and use BITS_TO_U64() | *437741eba6vfs: Don't evict inode under the inode lru traversing context | *4296218771dm persistent data: fix memory allocation failure | *134e8a34b4dm resume: don't return EINVAL when signalled | *29cc21e4cbarm64: ACPI: NUMA: initialize all values of acpi_early_node_map to NUMA_NO_NODE | *66cf236d3ariscv: change XIP's kernel_map.size to be size of the entire kernel | *0a228896a1s390/dasd: fix error recovery leading to data corruption on ESE devices | *80ac8d1948thunderbolt: Mark XDomain as unplugged when router is removed | *5ad898ae82xhci: Fix Panther point NULL pointer deref at full-speed re-enumeration | *1f7242682aALSA: usb-audio: Support Yamaha P-125 quirk entry | *a1de71b2efALSA: usb-audio: Add delay quirk for VIVO USB-C-XE710 HEADSET | *4267131278char: xillybus: Check USB endpoints when probing device | *c83d9f2d89char: xillybus: Refine workqueue handling | *5d3567caffchar: xillybus: Don't destroy workqueue from work item running on it | *8314335277fuse: Initialize beyond-EOF page contents before setting uptodate | *135136ba14tty: atmel_serial: use the correct RTS flag. * |8f2e4ac396Revert "cgroup: Make operations on the cgroup root_list RCU safe" * |b4c085bbdbRevert "cgroup: Move rcu_head up near the top of cgroup_root" * |4786dae0bbMerge 6.1.106 into android14-6.1-lts |\| | *ee5e09825bLinux 6.1.106 | *4539005b91Revert "ata: libata-scsi: Honor the D_SENSE bit for CK_COND=1 and no error" | *2730e1e15amedia: Revert "media: dvb-usb: Fix unexpected infinite loop in dvb_usb_read_remote_control()" | *298e875b36KVM: arm64: Don't pass a TLBI level hint when zapping table entries | *3fc06f6d14wifi: cfg80211: restrict NL80211_ATTR_TXQ_QUANTUM values | *0e76e9bb1dcgroup: Move rcu_head up near the top of cgroup_root | *af65d53838binfmt_flat: Fix corruption when not offsetting data start | *dc0cea6eafdrm/i915/gem: Adjust vma offset for framebuffer mmap offset | *b12866e177drm/i915: Fix a NULL vs IS_ERR() bug | *dc2ab133cfdrm/i915: Add a function to mmap framebuffer obj | *f5b7a97920cgroup: Make operations on the cgroup root_list RCU safe | *e8a68aa842drm/i915/gem: Fix Virtual Memory mapping boundaries calculation | *e212899b19mptcp: fully established after ADD_ADDR echo on MPJ | *c535c7e7eenvme/pci: Add APST quirk for Lenovo N60z laptop | *a2ba098587nfsd: make svc_stat per-network namespace instead of global | *9509b6bca9nfsd: remove nfsd_stats, make th_cnt a global counter | *099bf217b5nfsd: make all of the nfsd stats per-network namespace | *10ece754dfnfsd: expose /proc/net/sunrpc/nfsd in net namespaces | *546fbe74cenfsd: rename NFSD_NET_* to NFSD_STATS_* | *92638737c5sunrpc: use the struct net as the svc proc private | *22f5194e38sunrpc: remove ->pg_stats from svc_program | *94f2dc2667sunrpc: pass in the sv_stats struct through svc_create_pooled | *4240c2f543nfsd: stop setting ->pg_stats for unused stats | *55fa1818casunrpc: don't change ->sv_stats if it doesn't exist | *64528ab5f2NFSD: Fix frame size warning in svc_export_parse() | *0b4e84615bNFSD: Rewrite synopsis of nfsd_percpu_counters_init() | *c80c42b876NFSD: Refactor the duplicate reply cache shrinker | *3bee251d43NFSD: Replace nfsd_prune_bucket() | *e9a6b3a309NFSD: Rename nfsd_reply_cache_alloc() | *f51da03782NFSD: Refactor nfsd_reply_cache_free_locked() | *66a178177bnfsd: move init of percpu reply_cache_stats counters back to nfsd_init_net | *e7e571ed4enfsd: move reply cache initialization into nfsd startup | *68a35d0abfLoongArch: Define __ARCH_WANT_NEW_STAT in unistd.h | *f6cfc6bcfdexec: Fix ToCToU between perm check and set-uid/gid usage | *e86a5ce6c7ASoC: topology: Fix route memory corruption | *3521ac256cASoC: topology: Clean up route loading | *fc56b1946eselftests: mptcp: join: test both signal & subflow | *d93cf38fadmptcp: pm: do not ignore 'subflow' if 'signal' flag is also set | *600f1c928emptcp: pm: don't try to create sf if alloc failed | *dc5e0fe135mptcp: pm: reduce indentation blocks | *316543e872mptcp: pass addr to mptcp_pm_alloc_anno_list * |0450b5433dANDROID: fix up abi break in arm64 cpu_hwcaps * |d747db6875Merge 6.1.105 into android14-6.1-lts |\| | *117ac406baLinux 6.1.105 | *8bd4c92204btrfs: fix double inode unlock for direct IO sync writes | *f70b9b3af1i2c: qcom-geni: fix missing clk_disable_unprepare() and geni_se_resources_off() | *b6b6e43047netfilter: nf_tables: prefer nft_chain_validate | *e2642d1e42netfilter: nf_tables: allow clone callbacks to sleep | *6241e42ac8netfilter: nf_tables: bail out if stateful expression provides no .clone | *57835c0e71xfs: fix log recovery buffer allocation for the legacy h_size fixup | *d55450b96fblock/mq-deadline: Fix the tag reservation code | *9c18787ec3block: Call .limit_depth() after .hctx has been set | *43158f1463mm/hugetlb: fix potential race in __update_and_free_hugetlb_folio() | *82c11179d2tools headers arm64: Sync arm64's cputype.h with the kernel sources | *0e82587899ipv6: fix source address selection with route leak | *6cae8d04d8btrfs: fix corruption after buffer fault in during direct IO append write | *89f2914dd4mm: huge_memory: use !CONFIG_64BIT to relax huge page alignment on 32 bit machines | *ce5d090af6Revert "drm/amd/display: Add NULL check for 'afb' before dereferencing in amdgpu_dm_plane_handle_cursor_update" | *1278dd5f37block: use the right type for stub rq_integrity_vec() | *6380448a22mptcp: pm: deny endp with signal + subflow + port | *9a9f49ce59selftests: mptcp: join: check backup support in signal endp | *af9640c72aselftests: mptcp: join: validate backup in MPJ | *d7a6110365mptcp: pm: fix backup support in signal endpoints | *6d6c05b90fmptcp: export local_address | *4e58a65249mptcp: mib: count MPJ with backup flag | *55a6916db7drm/mgag200: Bind I2C lifetime to DRM device | *80e7abd592drm/mgag200: Set DDC timeout in milliseconds | *2de4f49e21drm/lima: Mark simple_ondemand governor as softdep | *7db2c4d145drm/dp_mst: Skip CSN if topology probing is not done yet | *0f598e8debdrm/bridge: analogix_dp: properly handle zero sized AUX transactions | *2cf7665efesched/smt: Fix unbalance sched_smt_present dec/inc | *27551edf05sched/smt: Introduce sched_smt_present_inc/dec() helper | *8aa79dfb21x86/mtrr: Check if fixed MTRRs exist before saving them | *5b3642d2a7btrfs: avoid using fixed char array size for tree names | *7804c186f7smb3: fix setting SecurityFlags when encryption is required | *a29cfcb848padata: Fix possible divide-by-0 panic in padata_mt_helper() | *788ea62499tracing: Fix overflow in get_free_elt() | *6e73f0dd34power: supply: axp288_charger: Round constant_charge_voltage writes down | *4d0359e2c7power: supply: axp288_charger: Fix constant_charge_voltage writes | *473d9e1d29genirq/irqdesc: Honor caller provided affinity in alloc_desc() | *ed590d0f75irqchip/xilinx: Fix shift out of bounds | *dd4b9babf1kcov: properly check for softirq context | *73e5796700ASoC: amd: yc: Add quirk entry for OMEN by HP Gaming Laptop 16-n0xxx | *e13ba3fe5eserial: core: check uartclk for zero to avoid divide by zero | *026e1f6903timekeeping: Fix bogus clock_was_set() invocation in do_adjtimex() | *e05c08391antp: Safeguard against time_constant overflow | *4a7c2a8387driver core: Fix uevent_show() vs driver detach race | *77c727774fclocksource: Fix brown-bag boolean thinko in cs_watchdog_read() | *ff2fb56266clocksource: Scale the watchdog read retries automatically | *6bbb0b235atorture: Enable clocksource watchdog with "tsc=watchdog" | *b47e2fc8e4ntp: Clamp maxerror and esterror to operating range | *b3762fb7b3vhost-vdpa: switch to use vmf_insert_pfn() in the fault handler | *7b3ec186batick/broadcast: Move per CPU pointer access into the atomic section | *adc54120bcscsi: ufs: core: Fix hba->last_dme_cmd_tstamp timestamp updating logic | *bd9c447cdascsi: mpi3mr: Avoid IOMMU page faults on REPORT ZONES | *4eee3d1593usb: gadget: u_audio: Check return codes from usb_ep_enable and config_ep_by_speed. | *bc4b0c6df1usb: gadget: u_serial: Set start_delayed during suspend | *a0362cd6e5usb: gadget: core: Check for unset descriptor | *376650dc1cUSB: serial: debug: do not echo input by default | *585e6bc7d0usb: vhci-hcd: Do not drop references before new references are gained | *cc95e1e7b1ALSA: hda/hdmi: Yet more pin fix for HP EliteDesk 800 G4 | *35348621efALSA: hda/realtek: Add Framework Laptop 13 (Intel Core Ultra) to quirks | *0281e567faALSA: hda: Add HP MP9 G4 Retail System AMS to force connect list | *c80f454a80ALSA: line6: Fix racy access to midibuf | *d64847c383drm/client: fix null pointer dereference in drm_client_modeset_probe | *282f0a482edrm/amd/display: Skip Recompute DSC Params if no Stream on Link | *30e2d7fc3bASoC: meson: axg-fifo: fix irq scheduling issue with PREEMPT_RT | *5a229ca50bALSA: usb-audio: Re-add ScratchAmp quirk entries | *449462ef95spi: spi-fsl-lpspi: Fix scldiv calculation | *ec3283d7dei2c: qcom-geni: Add missing geni_icc_disable in geni_i2c_runtime_resume | *04703c1640i2c: qcom-geni: Add missing clk_disable_unprepare in geni_i2c_runtime_resume | *4df770d5a9i2c: qcom-geni: add desc struct to prepare support for I2C Master Hub variant | *3cb624b698kprobes: Fix to check symbol prefixes correctly | *36635742cfbpf: kprobe: remove unused declaring of bpf_kprobe_override | *b2f59e48aci2c: smbus: Send alert notifications to all devices if source not found | *fdb1596800ASoC: SOF: Remove libraries from topology lookups | *8a8c71fb40spi: spidev: Add missing spi_device_id for bh2228fv | *c5b01bb164ASoC: codecs: wsa883x: Correct Soundwire ports mask | *5f70993801ASoC: codecs: wsa883x: parse port-mapping information | *cdf02448faASoC: codecs: wsa881x: Correct Soundwire ports mask | *c0318b7cbcASoC: codecs: wcd938x-sdw: Correct Soundwire ports mask | *cac430336fi2c: smbus: Improve handling of stuck alerts | *fce3458fdaarm64: errata: Expand speculative SSBS workaround (again) | *a1bc6a494farm64: cputype: Add Cortex-A725 definitions | *dd821a49c7arm64: cputype: Add Cortex-X1C definitions | *1f88d69ca1arm64: errata: Expand speculative SSBS workaround | *8ad62bfe80arm64: errata: Unify speculative SSBS errata logic | *0a1f775611arm64: cputype: Add Cortex-X925 definitions | *8643c59108arm64: cputype: Add Cortex-A720 definitions | *604d777acdarm64: cputype: Add Cortex-X3 definitions | *286c8ca924arm64: errata: Add workaround for Arm errata 3194386 and 3312417 | *2273fb4398arm64: cputype: Add Neoverse-V3 definitions | *6d95834c0carm64: cputype: Add Cortex-X4 definitions | *908f6b1a20arm64: barrier: Restore spec_bar() macro | *a587c46946arm64: Add Neoverse-V2 part | *67b9b96fc9ext4: fix wrong unit use in ext4_mb_find_by_goal | *0be74f06efsched/cputime: Fix mul_u64_u64_div_u64() precision for cputime | *90df0b72e1irqchip/loongarch-cpu: Fix return value of lpic_gsi_to_irq() | *14d759ac07irqchip/meson-gpio: Convert meson_gpio_irq_controller::lock to 'raw_spinlock_t' | *6391eb80b8scsi: mpt3sas: Avoid IOMMU page faults on REPORT ZONES | *3e005d93dbprofiling: remove profile=sleep support | *61e27564edRevert "bpftool: Mount bpffs when pinmaps path not under the bpffs" | *da578d3b2dbus: mhi: host: pci_generic: add support for Telit FE990 modem | *e9f076b9a1SUNRPC: Fix a race to wake a sync task | *46f67233b0s390/sclp: Prevent release of buffer in I/O | *bd9a712235jbd2: avoid memleak in jbd2_journal_write_metadata_buffer | *39e41515ffext4: fix uninitialized variable in ext4_inlinedir_to_tree | *ef517bdfc0media: xc2028: avoid use-after-free in load_firmware_cb() | *c6914a0502media: uvcvideo: Fix the bandwdith quirk on USB 3.x | *52e7cbc5cemedia: uvcvideo: Ignore empty TS packets | *83c7f509efdrm/amd/display: Add null checker before passing variables | *bf33a29f7adrm/amd/display: Add NULL check for 'afb' before dereferencing in amdgpu_dm_plane_handle_cursor_update | *d49ad9a988media: amphion: Remove lock in s_ctrl callback | *c2629daf21drm/amd/pm: Fix the null pointer dereference for vega10_hwmgr | *f39a3bc428drm/amdgpu: Add lock around VF RLCG interface | *e04d18c299drm/amdgpu/pm: Fix the null pointer dereference in apply_state_adjust_rules | *48cada0ac7drm/amdgpu: Fix the null pointer dereference to ras_manager | *1b8aa82b80drm/amdgpu/pm: Fix the null pointer dereference for smu7 | *eb06d0a53cdrm/amdgpu/pm: Fix the param type of set_power_profile_mode | *44bab9500abtrfs: fix bitmap leak when loading free space cache on duplicate entry | *9dcdf8fdcacan: mcp251xfd: tef: update workaround for erratum DS80000789E 6 of mcp2518fd | *ba9eb714cfcan: mcp251xfd: tef: prepare to workaround broken TEF FIFO tail index erratum | *673e713210wifi: nl80211: don't give key data to userspace | *7c4fa9ebfcudf: prevent integer overflow in udf_bitmap_free_blocks() | *ea6a5c668aPCI: Add Edimax Vendor ID to pci_ids.h | *bd0b5563ecaf_unix: Don't retry after unix_state_lock_nested() in unix_stream_connect(). | *ce7172b0d5selftests/bpf: Fix send_signal test with nested CONFIG_PARAVIRT | *7b379353e9net/mlx5e: SHAMPO, Fix invalid WQ linked list unlink | *3d42f2125fwifi: nl80211: disallow setting special AP channel widths | *118e1981f9ACPI: SBS: manage alarm sysfs attribute through psy core | *b33ff4e7adACPI: battery: create alarm sysfs attribute atomically | *a99d8d04ceclocksource/drivers/sh_cmt: Address race condition for clock events | *6b8ca75431rcu: Fix rcu_barrier() VS post CPUHP_TEARDOWN_CPU invocation | *fd2b627e3fblock: change rq_integrity_vec to respect the iterator | *3b33740c17md/raid5: avoid BUG_ON() while continue reshape after reassembling | *38ea2243a7md: do not delete safemode_timer in mddev_suspend | *aac3dd0539rcutorture: Fix rcu_torture_fwd_cb_cr() data race | *48e12f1e79net: fec: Stop PPS on driver remove | *3d35a09209l2tp: fix lockdep splat | *7feef10768net: dsa: bcm_sf2: Fix a possible memory leak in bcm_sf2_mdio_register() | *c95ac93c84Bluetooth: hci_sync: avoid dup filtering when passive scanning with adv monitor | *a0b49dca1fBluetooth: l2cap: always unlock channel in l2cap_conless_channel() | *02d5f1ba1fnet: linkwatch: use system_unbound_wq | *0d8b26e10enet: bridge: mcast: wait for previous gc cycles when removing port | *da518cc9b6net: usb: qmi_wwan: fix memory leak for not ip packets | *05e4a0fa24sctp: Fix null-ptr-deref in reuseport_add_sock(). | *787f44dc14x86/mm: Fix pti_clone_entry_text() for i386 | *5c580c1050x86/mm: Fix pti_clone_pgtable() alignment assumption | *a128cec339jump_label: Fix the fix, brown paper bags galore | *5a6a894b3aplatform/x86/intel/ifs: Initialize union ifs_status to zero | *84fec10ef5platform/x86/intel/ifs: Gen2 Scan test support | *a2484dc702irqchip/mbigen: Fix mbigen node address layout * |2caf29dc67Merge branch 'android14-6.1' into android14-6.1-lts * |20739a07f1Revert "leds: trigger: Remove unused function led_trigger_rename_static()" * |20c4ef91bdRevert "leds: trigger: Store brightness set by led_trigger_event()" * |35455634f9Revert "leds: trigger: Call synchronize_rcu() before calling trig->activate()" * |ba60d6bd37Revert "leds: triggers: Flush pending brightness before activating trigger" * |2d60d8fc30Revert "sysctl: treewide: drop unused argument ctl_table_root::set_ownership(table)" * |0733d0505bMerge 6.1.104 into android14-6.1-lts |\| | *36790ef5e0Linux 6.1.104 | *4440ef0f58netfilter: ipset: Add list flush to cancel_gc | *33e0f0e51eselftests: mptcp: always close input's FD if opened | *1e161339f5mptcp: fix duplicate data handling | *00f283a709mptcp: pm: only set request_bkup flag when sending MP_PRIO | *882bbd872fmptcp: fix bad RCVPRUNED mib accounting | *6d97193121mptcp: fix NL PM announced address accounting | *09176f8099mptcp: distinguish rcv vs sent backup flag in requests | *991b26e110mptcp: fix user-space PM announced address accounting | *f3d0261d91r8169: don't increment tx_dropped in case of NETDEV_TX_BUSY | *52977968f3net: usb: sr9700: fix uninitialized variable use in sr_mdio_read | *5670466033drm/i915: Fix possible int overflow in skl_ddi_calculate_wrpll() | *3b933b16c9drm/vmwgfx: Fix a deadlock in dma buf fence polling | *b239a37d68Revert "ALSA: firewire-lib: operate for period elapse event in process context" | *a7cdecede8Revert "ALSA: firewire-lib: obsolete workqueue for period update" | *fec031e89dALSA: hda/realtek: Add quirk for Acer Aspire E5-574G | *584e9aa47eALSA: usb-audio: Correct surround channels in UAC1 channel map | *47ab33e1d6mptcp: sched: check both directions for backup | *5db999fff5protect the fetch of ->fd[fd] in do_dup2() from mispredictions | *36dac67972btrfs: zoned: fix zone_unusable accounting on making block group read-write again | *8bb9cf2edfHID: wacom: Modify pen IDs | *1b3777d2f2platform/chrome: cros_ec_proto: Lock device when updating MKBP version | *ed15fdf307rust: SHADOW_CALL_STACK is incompatible with Rust | *56ddc3233carm64: jump_label: Ensure patched jump_labels are visible to all CPUs | *d7ccf2ca77riscv/mm: Add handling for VM_FAULT_SIGSEGV in mm_fault_error() | *aa0f864052ipv6: fix ndisc_is_useropt() handling for PIO | *18b26c7324net/mlx5e: Add a check for the return value from mlx5_port_set_eth_ptys | *5d07d1d40anet/mlx5: Fix missing lock on sync reset reload | *d4122d141fnet/mlx5: Lag, don't use the hardcoded value of the first port | *91b6df6611netfilter: iptables: Fix potential null-ptr-deref in ip6table_nat_table_init(). | *95590a4929netfilter: iptables: Fix null-ptr-deref in iptable_nat_table_init(). | *92afcc3100ALSA: hda: Conditionally use snooping for AMD HDMI | *9bd159d3e5net: mvpp2: Don't re-use loop iterator | *c786c37354drm/i915/hdcp: Fix HDCP2_STREAM_STATUS macro | *8b424c9e44net/iucv: fix use after free in iucv_sock_close() | *5a80b682e3ice: add missing WRITE_ONCE when clearing ice_rx_ring::xdp_prog | *8782f0fcb1ice: replace synchronize_rcu with synchronize_net | *15115033f0ice: don't busy wait for Rx queue disable in ice_qp_dis() | *3dbc58774eice: respect netif readiness in AF_XDP ZC related ndo's | *072e4646e6rtnetlink: Don't ignore IFLA_TARGET_NETNSID when ifname is specified in rtnl_dellink(). | *da391e9733net: axienet: start napi before enabling Rx/Tx | *e683b94a9cBluetooth: hci_sync: Fix suspending with wrong filter policy | *7e4a051ac2ALSA: hda: conexant: Fix headset auto detect fail in the polling mode | *d06daf0ad6sched: act_ct: take care of padding in struct zones_ht_key | *cb1b65d0e1drm/vmwgfx: Trigger a modeset when the screen moves | *e3ccbb76e1drm/vmwgfx: Fix overlay when using Screen Targets | *ebebba4d35drm/nouveau: prime: fix refcount underflow | *c14acf517cHID: amd_sfh: Move sensor discovery before HID device initialization | *aba922a30cHID: amd_sfh: Split sensor and HID initialization | *08a540fbfaHID: amd_sfh: Remove duplicate cleanup | *e531309fadMIPS: dts: loongson: Fix ls2k1000-rtc interrupt | *153e085c8dMIPS: dts: loongson: Fix liointc IRQ polarity | *dfb970b838MIPS: Loongson64: DTS: Fix PCIe port nodes for ls7a | *351f1a6ec1MIPS: Loongson64: DTS: Add RTC support to Loongson-2K1000 | *9d2567e998drm/i915/dp: Don't switch the LTTPR mode on an active link | *fa0f0f5ef4drm/udl: Remove DRM_CONNECTOR_POLL_HPD | *9750811a3edrm/udl: Move connector to modesetting code | *a864e01de5drm/udl: Various improvements to the connector | *cb53ed1326drm/udl: Use USB timeout constant when reading EDID | *5788374a7edrm/udl: Test pixel limit in mode-config's mode-valid function | *34d1582deedrm/udl: Rename struct udl_drm_connector to struct udl_connector | *7e372c7c43irqdomain: Fixed unbalanced fwnode get and put | *5fd057160af2fs: assign CURSEG_ALL_DATA_ATGC if blkaddr is valid | *216671e0c4f2fs: fix to avoid use SSR allocate when do defragment | *e7a2799dcbmm/page_alloc: fix pcp->count race between drain_pages_zone() vs __rmqueue_pcplist() | *0fd304a885mm: page_alloc: control latency caused by zone PCP draining | *5eb41c3bf1mm: restrict the pcp batch scale factor to avoid too long latency | *7118f97916leds: triggers: Flush pending brightness before activating trigger | *c3f8e2ec3cleds: trigger: Call synchronize_rcu() before calling trig->activate() | *2bc78ff25fleds: trigger: Store brightness set by led_trigger_event() | *b4e147d3f1leds: trigger: Remove unused function led_trigger_rename_static() | *7cde123b32cpufreq: qcom-nvmem: fix memory leaks in probe error paths | *f5bbfc12b0cpufreq: qcom-nvmem: Simplify driver data allocation | *53ce6578cdcpufreq: qcom-nvmem: Convert to platform remove callback returning void | *e99c372243ext4: check the extent status again before inserting delalloc block | *3f90e9c388ext4: factor out a common helper to query extent map | *00fb5e17b4ext4: convert to exclusive lock while inserting delalloc extents | *67e16594dcext4: refactor ext4_da_map_blocks() | *d5bebdaa0fext4: make ext4_es_insert_extent() return void | *1deae34db9sysctl: always initialize i_uid/i_gid | *cf3a73eeb5sysctl: treewide: drop unused argument ctl_table_root::set_ownership(table) | *c0d538bd5bsysctl: allow to change limits for posix messages queues | *dd2a996c7fsysctl: allow change system v ipc sysctls inside ipc namespace | *0607866537arm64: dts: qcom: ipq8074: Disable SS instance in Parkmode for USB | *a7bbf4367earm64: dts: qcom: msm8998: Disable SS instance in Parkmode for USB | *86225a6346arm64: dts: qcom: msm8998: switch USB QMP PHY to new style of bindings * |1353c19161Revert "spi: microchip-core: switch to use modern name" * |3dc93ab587Revert "spi: microchip-core: fix init function not setting the master and motorola modes" * |cb1459f2a5Revert "jump_label: Prevent key->enabled int overflow" * |7c3cc07862Revert "jump_label: Fix concurrency issues in static_key_slow_dec()" * |81c0bf47a8ANDROID: fix up crc issue for cpuset_cpus_allowed() * |00364d577dRevert "perf: Fix event leak upon exec and file release" * |e3e84f6205Revert "sbitmap: fix io hung due to race on sbitmap_word::cleared" * |38dfa1feedRevert "sched/fair: set_load_weight() must also call reweight_task() for SCHED_IDLE tasks" * |fd3054898dMerge 6.1.103 into android14-6.1-lts |\| | *48d525b0e4Linux 6.1.103 | *5906357807powerpc/pseries: Avoid hcall in plpks_is_available() on non-pseries | *dd2c5576c6fs: don't allow non-init s_user_ns for filesystems without FS_USERNS_MOUNT | *d135c3352fnvme-pci: add missing condition check for existence of mapped data | *6c6c4b305fio_uring: fix io_match_task must_hold | *dfe90030a0iommu: sprd: Avoid NULL deref in sprd_iommu_hw_en | *f82bc4a04as390/pci: Allow allocation of more than 1 MSI interrupt | *803037715cs390/pci: Refactor arch_setup_msi_irqs() | *7744dc0759ceph: fix incorrect kmalloc size of pagevec mempool | *77f1bf8629ASoC: Intel: use soc_intel_is_byt_cr() only when IOSF_MBI is reachable | *319d1ae574spi: spidev: add correct compatible for Rohm BH2228FV | *94ebcbc549spi: spidev: order compatibles alphabetically | *c6c419ed94spidev: Add Silicon Labs EM3581 device compatible | *ac06a78bbfnvme-pci: Fix the instructions for disabling power management | *99dab05987spi: microchip-core: fix init function not setting the master and motorola modes | *b39ec657acspi: microchip-core: switch to use modern name | *9ba7701852spi: microchip-core: only disable SPI controller when register value change requires it | *7a77e1da1bspi: microchip-core: fix the issues in the isr | *c47b1e141fASoC: SOF: imx8m: Fix DSP control regmap retrieval | *d887948a85auxdisplay: ht16k33: Drop reference after LED registration | *410dcfa504lirc: rc_dev_get_from_fd(): fix file leak | *802293e2c4powerpc: fix a file leak in kvm_vcpu_ioctl_enable_cap() | *ead2ad1d9fapparmor: Fix null pointer deref when receiving skb during sock creation | *4d8b642985mISDN: Fix a use after free in hfcmulti_tx() | *11ec79f5c7bpf: Fix a segment issue when downgrading gso_size | *1377de7196net: nexthop: Initialize all fields in dumped nexthops | *34e8acc926net: stmmac: Correct byte order of perfect_match | *7287343527tipc: Return non-zero value from tipc_udp_addr2str() on error | *2daf24ed3fnetfilter: nft_set_pipapo_avx2: disable softinterrupts | *b5fff8cdc5net: bonding: correctly annotate RCU in bond_should_notify_peers() | *4ecdd5436aipv4: Fix incorrect source address in Record Route option | *073f1334fdMIPS: SMP-CPS: Fix address for GCR_ACCESS register for CM3 and later | *60efff6ce2tools/resolve_btfids: Fix comparison of distinct pointer types warning in resolve_btfids | *8d17f72a6ebpf, events: Use prog to emit ksymbol event for main program | *f993a4baf6dma: fix call order in dmam_free_coherent | *ec7251fa8caf_unix: Disable MSG_OOB handling for sockets in sockmap/sockhash | *811dee26b4libbpf: Fix no-args func prototype BTF dumping syntax | *65c5545287kbuild: avoid build error when single DTB is turned into composite DTB | *b19f73b46bf2fs: fix to update user block counts in block_operations() | *1f1f444bfbwatchdog: rzg2l_wdt: Check return status of pm_runtime_put() | *6e6aa1b3f4watchdog: rzg2l_wdt: Use pm_runtime_resume_and_get() | *df1f8df3e8f2fs: fix start segno of large section | *d904d7064fum: time-travel: fix signal blocking race/hang | *60557ae832um: time-travel: fix time-travel-start option | *7f470524dcphy: cadence-torrent: Check return value on register read | *1e7fe21facdmaengine: ti: k3-udma: Fix BCHAN count with UHC and HC channels | *8d8f9a477djfs: Fix array-index-out-of-bounds in diFree | *325b68a05bkdb: Use the passed prompt in kdb_position_cursor() | *fa278a24cbkdb: address -Wformat-security warnings | *139faad888wifi: mac80211: check basic rates validity | *78d2ca10f1wifi: mac80211: track capability/opmode NSS separately | *697ff86f4dwifi: mac80211: Allow NSS change only up to capability | *8fad5b4d9eio_uring/io-wq: limit retrying worker initialisation | *f63df70b43PCI/DPC: Fix use-after-free on concurrent DPC and hot-removal | *02fb924d1aPCI: Introduce cleanup helpers for device reference counts and locks | *012be828a1nilfs2: handle inconsistent state in nilfs_btnode_create_block() | *73530ecf9dBluetooth: btusb: Add Realtek RTL8852BE support ID 0x13d3:0x3591 | *e3ddef880dBluetooth: btusb: Add RTL8852BE device 0489:e125 to device tables | *d0d2df38f5bpf: Synchronize dispatcher update with bpf_dispatcher_xdp_func | *3746b113e9rbd: don't assume RBD_LOCK_STATE_LOCKED for exclusive mappings | *992dfea71frbd: rename RBD_LOCK_STATE_RELEASING and releasing_wait | *01b724ab44drm/panfrost: Mark simple_ondemand governor as softdep | *2dd415c2e3drm/etnaviv: don't block scheduler when GPU is still active | *c69a4c0b07MIPS: Loongson64: Test register availability before use | *609b233625MIPS: Loongson64: reset: Prioritise firmware service | *8ea243adbeMIPS: Loongson64: Remove memory node for builtin-dtb | *5eeb6dabd7MIPS: Loongson64: env: Hook up Loongsson-2K | *3ae39f5de8MIPS: dts: loongson: Fix GMAC phy node | *4e196270b8MIPS: ip30: ip30-console: Add missing include | *9bf1819fa3MIPS: dts: loongson: Add ISA node | *412a562155remoteproc: imx_rproc: Fix refcount mistake in imx_rproc_addr_init | *9a17cf8b2cremoteproc: imx_rproc: Skip over memory region when node value is NULL | *f36eb8f4ebremoteproc: stm32_rproc: Fix mailbox interrupts queuing | *92e7c8dcfarbd: don't assume rbd_is_lock_owner() for exclusive mappings | *13f4efb2afdm-verity: fix dm_is_verity_target() when dm-verity is builtin | *0d8a5e11baselftests/sigaltstack: Fix ppc64 GCC build | *dc8074b890RDMA/iwcm: Fix a use-after-free related to destroying CM IDs | *592e292f86platform: mips: cpu_hwmon: Disable driver on unsupported hardware | *3e863259c4watchdog/perf: properly initialize the turbo mode timestamp and rearm counter | *37c1d74cf5rtc: isl1208: Fix return value of nvmem callbacks | *234ef86477drm/i915/dp: Reset intel_dp->link_trained before retraining the link | *0fd6f1443bdrm/dp_mst: Fix all mstb marked as not probed after suspend/resume | *b5b1a74754drm/amdgpu/sdma5.2: Update wptr registers as well as doorbell | *0b6e845abfdrm/i915/gt: Do not consider preemption during execlists_dequeue for gen8 | *7de23cf68aperf/x86/intel/pt: Fix a topa_entry base address calculation | *bfa9371966perf/x86/intel/pt: Fix topa_entry base length | *462abb0eb9perf/x86/intel/uncore: Fix the bits of the CHA extended umask for SPR | *ed2c202dacperf: Fix event leak upon exec and file release | *70882d7fa7perf: Fix event leak upon exit | *7cec2c3bfescsi: qla2xxx: validate nvme_local_port correctly | *814f4a53ccscsi: qla2xxx: Complete command early within lock | *758e5dd3fascsi: qla2xxx: Fix flash read failure | *833485f6a2scsi: qla2xxx: Use QP lock to search for bsg | *2a15b59a2cscsi: qla2xxx: Fix for possible memory corruption | *46c642bec8scsi: qla2xxx: Unable to act on RSCN for port online | *d28a2075bbscsi: qla2xxx: During vport delete send async logout explicitly | *71eb599d8ertc: cmos: Fix return value of nvmem callbacks | *0bbe7439d5mm/numa_balancing: teach mpol_to_str about the balancing mode | *58c56735fairqchip/imx-irqsteer: Handle runtime power management correctly | *3dcd0673e4devres: Fix memory leakage caused by driver API devm_free_percpu() | *4aac65f39cdevres: Fix devm_krealloc() wasting memory | *8e02cd98a6ice: Add a per-VF limit on number of FDIR filters | *0f75333ae8gve: Fix an edge case for TSO skb validity check | *68d63ace80kobject_uevent: Fix OOB access within zap_modalias_env() | *1271319286ASoC: amd: yc: Support mic on Lenovo Thinkpad E16 Gen 2 | *1e39a20f65kbuild: Fix '-S -c' in x86 stack protector scripts | *78648d68a5decompress_bunzip2: fix rare decompression failure | *adb7146d17ubi: eba: properly rollback inside self_check_eba | *fcc70ce1c7clk: davinci: da8xx-cfgchip: Initialize clk_init_data before use | *47a8ddcdcaf2fs: fix return value of f2fs_convert_inline_inode() | *9ce8135accf2fs: fix to don't dirty inode for readonly filesystem | *0ca211ac24f2fs: fix to force buffered IO on inline_data inode | *a3ae010666scsi: qla2xxx: Return ENOBUFS if sg_cnt is more than one for ELS cmds | *b90ceffdc9fs/ntfs3: Update log->page_{mask,bits} if log->page_size changed | *7f4da75909dev/parport: fix the array out-of-bounds risk | *f0c7625f74binder: fix hang of unregistered readers | *a05ef4ebcaPCI: loongson: Enable MSI in LS7A Root Complex | *70802cc059PCI: rockchip: Use GPIOD_OUT_LOW flag while requesting ep_gpio | *159c26eb65PCI: dw-rockchip: Fix initial PERST# GPIO value | *4cfc520eb6PCI: hv: Return zero, not garbage, when reading PCI_INTERRUPT_PIN | *05fe5682d5parisc: Fix warning at drivers/pci/msi/msi.h:121 | *651015ca9chwrng: amd - Convert PCIBIOS_* return codes to errnos | *6349978fb1tools/memory-model: Fix bug in lock.cat | *9a21a378c7ALSA: usb-audio: Add a quirk for Sonix HD USB Camera | *d78b3f5a9dALSA: usb-audio: Move HD Webcam quirk to the right place | *17d006a2aaALSA: usb-audio: Fix microphone sound on HD webcam. | *a7fd258115KVM: nVMX: Request immediate exit iff pending nested event needs injection | *e289c43c01KVM: VMX: Split out the non-virtualization part of vmx_interrupt_blocked() | *7435acf3e6media: uvcvideo: Fix integer overflow calculating timestamp | *500e3b963djbd2: make jbd2_journal_get_max_txn_bufs() internal | *1770f94fd9leds: mt6360: Fix memory leak in mt6360_init_isnk_properties() | *270c2c8e2aleds: ss4200: Convert PCIBIOS_* return codes to errnos | *8ec41ed2cbdrivers: soc: xilinx: check return status of get_api_version() | *6bba4c81c0wifi: mwifiex: Fix interface type change | *785ea76f76selftests/landlock: Add cred_transfer test | *d286c4cfa3trace/pid_list: Change gfp flags in pid_list_fill_irq() | *cf56dcd9e9io_uring: tighten task exit cancellations | *b609753cbbext4: make sure the first directory block is not a hole | *abb411ac99ext4: check dot and dotdot of dx_root before making dir indexed | *01c984a1e9m68k: amiga: Turn off Warp1260 interrupts during boot | *271cab2ca0udf: Avoid using corrupted block bitmap buffer | *8c95f5bde8task_work: Introduce task_work_cancel() again | *a5a1788a49task_work: s/task_work_cancel()/task_work_cancel_func()/ | *fd9a250c1bcifs: mount with "unix" mount option for SMB1 incorrectly handled | *85b18ac538cifs: fix reconnect with SMB1 UNIX Extensions | *6018971710cifs: fix potential null pointer use in destroy_workqueue in init_cifs error path | *74b91a689bapparmor: use kvfree_sensitive to free data->data | *37e9af4946sched/fair: Use all little CPUs for CPU-bound workloads | *f068494430drm/amd/display: Check for NULL pointer | *211aeab856scsi: qla2xxx: Fix optrom version displayed in FDMI | *f70ffeca54drm/gma500: fix null pointer dereference in psb_intel_lvds_get_modes | *e74eb5e808drm/gma500: fix null pointer dereference in cdv_intel_lvds_get_modes | *7afc061dc1ext2: Verify bitmap and itable block numbers before using them | *58d83fc160hfs: fix to initialize fields of hfs_inode_info after hfs_alloc_inode() | *646699498bata: libata-scsi: Honor the D_SENSE bit for CK_COND=1 and no error | *da55685247media: venus: fix use after free in vdec_close | *bde9ea30d2char: tpm: Fix possible memory leak in tpm_bios_measurements_open() | *0457e54a9efuse: verify {g,u}id mount options correctly | *e63c0422d2sched/fair: set_load_weight() must also call reweight_task() for SCHED_IDLE tasks | *48d063acfdipv6: take care of scope when choosing the src addr | *b29b32a95aipv4: fix source address selection with route leak | *df9760b7b8kernel: rerun task_work while freezing in get_signal() | *5839f59ff1af_packet: Handle outgoing VLAN packets without hardware offloading | *c0edfd8774net: netconsole: Disable target before netpoll cleanup | *408bfb6b0atick/broadcast: Make takeover of broadcast hrtimer reliable | *7934526ce8dt-bindings: thermal: correct thermal zone node name limit | *459b445120x86/efistub: Revert to heap allocated boot_params for PE entrypoint | *e9f6a232abx86/efistub: Avoid returning EFI_SUCCESS on error | *0f8d4d46ffmm: mmap_lock: replace get_memcg_path_buf() with on-stack buffer | *8de7bf77f2mm/mglru: fix div-by-zero in vmpressure_calc_level() | *c880cc4491mm/hugetlb: fix possible recursive locking detected warning | *0d74fd54dblandlock: Don't lose track of restrictions on cred_transfer | *681583ad67sbitmap: fix io hung due to race on sbitmap_word::cleared | *aba6f11e23sbitmap: use READ_ONCE to access map->word | *0de2fb1f78sbitmap: rewrite sbitmap_find_bit_in_index to reduce repeat code | *fda080767csbitmap: remove unnecessary calculation of alloc_hint in __sbitmap_get_shallow | *cc8b7284d5s390/dasd: fix error checks in dasd_copy_pair_store() | *95329281b2fs/ntfs3: Keep runs for $MFT::$ATTR_DATA and $MFT::$ATTR_BITMAP | *72c93b1e90fs/ntfs3: Missed error return | *d058e1b645rtc: interface: Add RTC offset to alarm after fix-up | *b155d80b46nilfs2: avoid undefined behavior in nilfs_cnt32_ge macro | *df246458b9fs/proc/task_mmu: indicate PM_FILE for PMD-mapped file THP | *ac4d5e64d0pinctrl: renesas: r8a779g0: Fix TPU suffixes | *27cb93f2fepinctrl: renesas: r8a779g0: Fix TCLK suffixes | *09ed841dcepinctrl: renesas: r8a779g0: FIX PWM suffixes | *bd0cf964b4pinctrl: renesas: r8a779g0: Fix IRQ suffixes | *c9a80089c6pinctrl: renesas: r8a779g0: Fix (H)SCIF3 suffixes | *4153dffff0pinctrl: renesas: r8a779g0: Fix (H)SCIF1 suffixes | *03e5487365pinctrl: renesas: r8a779g0: Fix FXR_TXEN[AB] suffixes | *bcc16f7a21pinctrl: renesas: r8a779g0: Fix CANFD5 suffix | *b6a632e901fs/ntfs3: Fix field-spanning write in INDEX_HDR | *7a498fc945fs/ntfs3: Replace inode_trylock with inode_lock | *be4d557cbfpinctrl: freescale: mxs: Fix refcount of child | *0d0ac3179bpinctrl: ti: ti-iodelay: fix possible memory leak when pinctrl_enable() fails | *7aac2a04b5pinctrl: ti: ti-iodelay: Drop if block with always false condition | *f5f9facbd2pinctrl: single: fix possible memory leak when pinctrl_enable() fails | *30057fb1e1pinctrl: core: fix possible memory leak when pinctrl_enable() fails | *dc9bb07e0cpinctrl: rockchip: update rk3308 iomux routes | *a0a2970ad7fs/ntfs3: Add missing .dirty_folio in address_space_operations | *2aa527c722fs/ntfs3: Fix getting file type | *861d23ecadfs/ntfs3: Missed NI_FLAG_UPDATE_PARENT setting | *2b0633368afs/ntfs3: Fix transform resident to nonresident for compressed files | *59ae9e524cfs/ntfs3: Merge synonym COMPRESSION_UNIT and NTFS_LZNT_CUNIT | *92f2043d9dfs/ntfs3: Use ALIGN kernel macro | *f6f18b9626net: dsa: b53: Limit chip-wide jumbo frame config to CPU ports | *97bf9ea93bnet: dsa: mv88e6xxx: Limit chip-wide frame size config to CPU ports | *7a850dd2deipv4: Fix incorrect TOS in fibmatch route get reply | *703acdfa96ipv4: Fix incorrect TOS in route get reply | *eb03d9826anet: flow_dissector: use DEBUG_NET_WARN_ON_ONCE | *9625c46ce6netfilter: nf_set_pipapo: fix initial map fill | *3a0a5c97bfnetfilter: nft_set_pipapo: constify lookup fn args where possible | *24f407042cnetfilter: ctnetlink: use helper function to calculate expect ID | *e6b8caf06bbnxt_re: Fix imm_data endianness | *5f778250fciommu/vt-d: Fix identity map bounds in si_domain_init() | *0aaef4e7b0iommu/vt-d: Fix to convert mm pfn to dma pfn | *4396c6ad49RDMA/hns: Fix insufficient extend DB for VFs. | *fa123d993fRDMA/hns: Fix undifined behavior caused by invalid max_sge | *d353fb4ac4RDMA/hns: Fix shift-out-bounds when max_inline_data is 0 | *5a13652ac3RDMA/hns: Fix missing pagesize and alignment check in FRMR | *757eaa1c44RDMA/hns: Fix unmatch exception handling when init eq table fails | *47b57fc3a3RDMA/hns: Check atomic wr length | *9561cb02e6macintosh/therm_windtunnel: fix module unload. | *0713298280powerpc/xmon: Fix disassembly CPU feature checks | *c8c3448b67PCI: dwc: Fix index 0 incorrectly being interpreted as a free ATU slot | *f51b50ff38PCI: qcom-ep: Disable resources unconditionally during PERST# assert | *e651b5e478MIPS: Octeron: remove source file executable bit | *9b8a40c227clk: en7523: fix rate divider for slic and spi clocks | *8b801639bcclk: qcom: Park shared RCGs upon registration | *d6997d4833crypto: qat - extend scope of lock in adf_cfg_add_key_value_param() | *5b1997487anet: missing check virtio | *3062cb1007vhost/vsock: always initialize seqpacket_allow | *b6b0fa9e32PCI: endpoint: Fix error handling in epf_ntb_epc_cleanup() | *7d368de78bPCI: endpoint: Clean up error handling in vpci_scan_bus() | *1ba9856cf7ASoC: amd: Adjust error handling in case of absent codec device | *668d393dd5Input: elan_i2c - do not leave interrupt disabled on suspend failure | *8cf301d530RDMA/device: Return error earlier if port in not valid | *df47b5d25bmtd: make mtd_test.c a separate module | *04ff04e615ASoC: max98088: Check for clk_prepare_enable() error | *77c182c6abpowerpc/prom: Add CPU info to hardware description string later | *76982461efASoC: qcom: Adjust issues in case of DT error in asoc_qcom_lpass_cpu_platform_probe() | *1f4a0c85a6RDMA/rxe: Don't set BTH_ACK_MASK for UC or UD QPs | *da62f5d0e6RDMA/mlx5: Use sq timestamp as QP timestamp when RoCE is disabled | *90acfc665aRDMA/mlx4: Fix truncated output warning in alias_GUID.c | *5565bdd47aRDMA/mlx4: Fix truncated output warning in mad.c | *d7c248ca93Input: qt1050 - handle CHIP_ID reading error | *a16c5bc314interconnect: qcom: qcm2290: Fix mas_snoc_bimc RPM master ID | *7722030d48clk: qcom: gpucc-sm8350: Park RCG's clk source at XO during disable | *69f59c7a12RDMA/cache: Release GID table even if leak is detected | *3c68354116powerpc/kexec_file: fix cpus node update to FDT | *81e0d2d1d0powerpc/kexec: make the update_cpus_node() function public | *d746b2f0c2powerpc/pseries: Add helper to get PLPKS password length | *ef27c8adcepowerpc/pseries: Expose PLPKS config values, support additional fields | *a674752842powerpc/pseries: Move plpks.h to include directory | *2d5993af03powerpc/pseries: Fix alignment of PLPKS structures and buffers | *9e05457915RDMA/mlx5: Set mkeys for dmabuf at PAGE_SIZE | *147db31ab7coresight: Fix ref leak when of_coresight_parse_endpoint() fails | *d2f2b6160aiio: frequency: adrf6780: rm clk provider include | *5fa4eee3faclk: qcom: camcc-sc7280: Add parent dependency to all camera GDSCs | *8beb5c4d3eclk: qcom: gcc-sc7280: Update force mem core bit for UFS ICE clock | *20b3ebecdaclk: qcom: branch: Add helper functions for setting retain bits | *2ae4769332PCI: rcar: Demote WARN() to dev_warn_ratelimited() in rcar_pcie_wakeup() | *bbba48ad67PCI: keystone: Fix NULL pointer dereference in case of DT error in ks_pcie_setup_rc_app_regs() | *8b5d448d0ePCI: keystone: Don't enable BAR 0 for AM654x | *cc6cc778c3PCI: keystone: Relocate ks_pcie_set/clear_dbi_mode() | *e33e9444ffPCI: Fix resource double counting on remove & rescan | *612c86e0bbSUNRPC: Fixup gss_status tracepoint error output | *b5f0a83ecdsparc64: Fix incorrect function signature and add prototype for prom_cif_init | *d678ff440dext4: avoid writing unitialized memory to disk in EA inodes | *a1832c0fcbext4: don't track ranges in fast_commit if inode has inlined data | *b3ee82c869NFSv4.1 another fix for EXCHGID4_FLAG_USE_PNFS_DS for DS server | *d88b14e03eSUNRPC: avoid soft lockup when transmitting UDP to reachable server. | *53cb899104xprtrdma: Fix rpcrdma_reqs_reset() | *6b4cf1c885mfd: omap-usb-tll: Use struct_size to allocate tll | *8915053529mfd: rsmu: Split core code into separate module | *1419163cfaperf intel-pt: Fix exclude_guest setting | *eddfb6b3f1perf intel-pt: Fix aux_watermark calculation for 64-bit size | *0f4c4acd4cmedia: venus: flush all buffers in output plane streamoff | *181e63cd59ext4: fix infinite loop when replaying fast_commit | *d0cf8ef054Revert "leds: led-core: Fix refcount leak in of_led_get()" | *f28b353c0cdrm/qxl: Add check for drm_cvt_mode | *bee0abd2a0drm/etnaviv: fix DMA direction handling for cached RW buffers | *ac01b0db28perf report: Fix condition in sort__sym_cmp() | *9bb83fd760perf test: Make test_arm_callgraph_fp.sh more robust | *a72c2f852fperf tests: Fix test_arm_callgraph_fp variable expansion | *3d4c951fd5perf tests arm_callgraph_fp: Address shellcheck warnings about signal names and adding double quotes for expression | *df912d63caperf test: Replace arm callgraph fp test workload with leafloop | *5ec575bc1cdrm/msm/dpu: drop validity checks for clear_pending_flush() ctl op | *8621fc9acedrm/msm/dsi: set VIDEO_COMPRESSION_MODE_CTRL_WC | *734ba6437eleds: trigger: Unregister sysfs attributes before calling deactivate() | *38a00b3ab6drm/mediatek: Add OVL compatible name for MT8195 | *ac763d5993drm/mediatek: Add missing plane settings when async update | *060b12d05dmedia: renesas: vsp1: Store RPF partition configuration per RPF instance | *78f2447f6dmedia: renesas: vsp1: Fix _irqsave and _irq mix | *89654d7ac7media: rcar-csi2: Cleanup subdevice in remove() | *b079a05da0media: rcar-csi2: Disable runtime_pm in probe error | *2469692791media: rcar-vin: Fix YUYV8_1X16 handling for CSI-2 | *d8c3118c24media: uvcvideo: Override default flags | *32c58ce4e8saa7134: Unchecked i2c_transfer function result fixed | *1a1eb2f3fcs390/uv: Don't call folio_wait_writeback() without a folio reference | *cd5df00391s390/mm: Convert gmap_make_secure to use a folio | *c6099d3468s390/mm: Convert make_page_secure to use a folio | *fe0f92fd53media: v4l: async: Fix NULL pointer dereference in adding ancillary links | *b3b9de49e1media: i2c: Fix imx412 exposure control | *2e13203b8dmedia: imon: Fix race getting ictx->lock | *8576a730a4media: dvb-usb: Fix unexpected infinite loop in dvb_usb_read_remote_control() | *24062aa740media: pci: ivtv: Add check for DMA map result | *861b333629drm/panel: boe-tv101wum-nl6: Check for errors on the NOP in prepare() | *cf56e8baf4drm/panel: boe-tv101wum-nl6: If prepare fails, disable GPIO before regulators | *8913266cfbdrm/amdgpu: Remove GC HW IP 9.3.0 from noretry=1 | *fe5b939281drm/amdgpu: Check if NBIO funcs are NULL in amdgpu_device_baco_exit | *65a3073482drm/amd/pm: Fix aldebaran pcie speed reporting | *dd74b78919drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_dcs_write_seq() | *b449e1ede2drm/mipi-dsi: Fix mipi_dsi_dcs_write_seq() macro definition format | *4413e3dc48drm/rockchip: vop2: Fix the port mux of VP2 | *0077b003e4net: bridge: mst: Check vlan state for egress decision | *3fc1be360bxdp: fix invalid wait context of page_pool_destroy() | *050d0b7bebselftests: forwarding: devlink_lib: Wait for udev events after reloading | *fcac5feb06bpf: Fix null pointer dereference in resolve_prog_type() for BPF_PROG_TYPE_EXT | *70f9365a8fbpf: Eliminate remaining "make W=1" warnings in kernel/bpf/btf.o | *ab748dd10dbna: adjust 'name' buf size of bna_tcb and bna_ccb structures | *9dfbfd4f31bpf: annotate BTF show functions with __printf | *56c10ff384selftests/bpf: Close obj in error path in xdp_adjust_tail | *ff10dffbdaselftests/bpf: Close fd in error path in drop_on_reuseport | *7848a56480locking/rwsem: Add __always_inline annotation to __down_write_common() and inlined callers | *4ca29ddeb9wifi: virt_wifi: don't use strlen() in const context | *17f40e25f8gss_krb5: Fix the error handling path for crypto_sync_skcipher_setkey | *d3cc85a10awifi: virt_wifi: avoid reporting connection success with wrong SSID | *a2a095c08bwifi: rtw89: Fix array index mistake in rtw89_sta_info_get_iter() | *cd34f515c4perf/x86/intel/cstate: Fix Alderlake/Raptorlake/Meteorlake | *140911b967perf: Fix default aux_watermark calculation | *d666e3c9afperf: Prevent passing zero nr_pages to rb_alloc_aux() | *ff9a973152perf: Fix perf_aux_size() for greater-than 32-bit size | *3bf9bdb3e5perf/x86/intel/pt: Fix pt_topa_entry_for_page() address calculation | *65dd9cbafebpftool: Mount bpffs when pinmaps path not under the bpffs | *9115207357netfilter: nf_tables: rise cap on SELinux secmark context | *62b8b67ceeipvs: Avoid unnecessary calls to skb_is_gso_sctp | *4deec9f004libbpf: Checking the btf_type kind when fixing variable offsets | *316e00ea4enet: fec: Fix FEC_ECR_EN1588 being cleared on link-down | *28be8da881net: fec: Refactor: #define magic constants | *16ad67e733wifi: cfg80211: handle 2x996 RU allocation in cfg80211_calculate_bitrate_he() | *387bf7a477wifi: cfg80211: fix typo in cfg80211_calculate_bitrate_he() | *628ddc6ff1wifi: ath11k: fix wrong handling of CCMP256 and GCMP ciphers | *6b8ccab544jump_label: Fix concurrency issues in static_key_slow_dec() | *550cb99691jump_label: Prevent key->enabled int overflow | *ebcb324a70jump_label: Use atomic_try_cmpxchg() in static_key_slow_inc_cpuslocked() | *5fd6580714perf/x86: Serialize set_attr_rdpmc() | *728c396dd0mlxsw: spectrum_acl: Fix ACL scale regression and firmware errors | *25c6fd9648mlxsw: spectrum_acl_erp: Fix object nesting warning | *5adc61d29blib: objagg: Fix general protection fault | *0340b8f1a1selftests/bpf: Check length of recv in test_sockmap | *801a590befnet/smc: set rmb's SG_MAX_SINGLE_ALLOC limitation only when CONFIG_ARCH_NO_SG_CHAIN is defined | *cd5f615b05tcp: fix races in tcp_v[46]_err() | *4967fcd890tcp: fix race in tcp_write_err() | *11ba88ab2btcp: add tcp_done_with_error() helper | *a4391e546btcp: annotate lockless access to sk->sk_err | *5921e23466tcp: annotate lockless accesses to sk->sk_err_soft | *28f9004290net: esp: cleanup esp_output_tail_tcp() in case of unsupported ESPINTCP | *9de00d5c3dselftests/bpf: Fix prog numbers in test_sockmap | *23b40a297ebpftool: Un-const bpf_func_info to fix it for llvm 17 and newer | *0216644f28wifi: brcmsmac: LCN PHY code is used for BCM4313 2G-only device | *50b568af74firmware: turris-mox-rwtm: Initialize completion before mailbox | *1030d10980firmware: turris-mox-rwtm: Fix checking return value of wait_for_completion_timeout() | *44c3f8656afirmware: turris-mox-rwtm: Do not complete if there are no waiters | *eb6c296ac0vmlinux.lds.h: catch .bss..L* sections into BSS") | *73ccc49a99ARM: spitz: fix GPIO assignment for backlight | *6062929ce5m68k: cmpxchg: Fix return value for default case in __arch_xchg() | *3f5c2b3091arm64: dts: qcom: sm6350: Add missing qcom,non-secure-domain property | *1c68c6e583arm64: dts: rockchip: Add missing power-domains for rk356x vop_mmu | *4fea889d5dx86/xen: Convert comma to semicolon | *4334c498e6m68k: atari: Fix TT bootup freeze / unexpected (SCU) interrupt messages | *76ee39a287arm64: dts: renesas: r9a07g054: Add missing hypervisor virtual timer IRQ | *52b4ab0b47arm64: dts: renesas: r9a07g044: Add missing hypervisor virtual timer IRQ | *64ba8e929barm64: dts: renesas: r9a07g043u: Add missing hypervisor virtual timer IRQ | *6f3d025137arm64: dts: renesas: r8a779g0: Add missing hypervisor virtual timer IRQ | *450bf332c1arm64: dts: renesas: r8a779f0: Add missing hypervisor virtual timer IRQ | *c958cc8ba8arm64: dts: renesas: r8a779a0: Add missing hypervisor virtual timer IRQ | *2e74978052arm64: dts: renesas: Drop specifying the GIC_CPU_MASK_SIMPLE() for GICv3 systems | *16d163f672arm64: dts: renesas: r8a779g0: Add secondary CA76 CPU cores | *89089daa0aarm64: dts: renesas: r8a779g0: Add L3 cache controller | *c33ceabc98arm64: dts: rockchip: Fix mic-in-differential usage on rk3568-evb1-v10 | *f4041265c3arm64: dts: rockchip: Drop invalid mic-in-differential on rk3568-rock-3a | *870799de07arm64: dts: amlogic: gx: correct hdmi clocks | *09fd5840a6arm64: dts: mediatek: mt8183-kukui-jacuzzi: Add ports node for anx7625 | *5a28eace29arm64: dts: mediatek: mt7622: fix "emmc" pinctrl mux | *b2de818496arm64: dts: mediatek: mt8183-kukui: Drop bogus output-enable property | *54a5134a63ARM: dts: imx6qdl-kontron-samx6i: fix PCIe reset polarity | *b091d82c82ARM: dts: imx6qdl-kontron-samx6i: fix SPI0 chip selects | *9c7d35fda4ARM: dts: imx6qdl-kontron-samx6i: fix board reset | *2ebc593c9cARM: dts: imx6qdl-kontron-samx6i: fix PHY reset | *aedaf5e02aARM: dts: imx6qdl-kontron-samx6i: fix phy-mode | *9e656225d0arm64: dts: amlogic: sm1: fix spdif compatibles | *1ba4d34bdcarm64: dts: rockchip: Increase VOP clk rate on RK3328 | *c84bef2ce2soc: qcom: pdr: fix parsing of domains lists | *475a77fb3fsoc: qcom: pdr: protect locator_addr with the main mutex | *f36a298e1ememory: fsl_ifc: Make FSL_IFC config visible and selectable | *caba0bec56OPP: ti: Fix ti_opp_supply_probe wrong return values | *7c61fd9eabcpufreq: ti-cpufreq: Handle deferred probe with dev_err_probe() | *a5e507fadasoc: xilinx: rename cpu_number1 to dummy_cpu_number | *ed2b94f8e5arm64: dts: qcom: msm8996: specify UFS core_clk frequencies | *9e12fffb69arm64: dts: rockchip: Update WIFi/BT related nodes on rk3308-rock-pi-s | *e3d7674575arm64: dts: rockchip: Add mdio and ethernet-phy nodes to rk3308-rock-pi-s | *b2928a7a27arm64: dts: rockchip: Add pinctrl for UART0 to rk3308-rock-pi-s | *c6ea16e444arm64: dts: rockchip: Add sdmmc related properties on rk3308-rock-pi-s | *a70d528217soc: qcom: rpmh-rsc: Ensure irqs aren't disabled by rpmh_rsc_send_data() callers | *4cb4359e22arm64: dts: qcom: msm8998: enable adreno_smmu by default | *e10da80893arm64: dts: qcom: msm8996-xiaomi-common: drop excton from the USB PHY | *f131b5a623arm64: dts: qcom: sm8450: add power-domain to UFS PHY | *5005496c38arm64: dts: qcom: sm8250: add power-domain to UFS PHY | *cf9c7b34b9arm64: dts: qcom: sm8250: switch UFS QMP PHY to new style of bindings | *4b5b8c6f00arm64: dts: qcom: sm6350: add power-domain to UFS PHY | *4d9827777carm64: dts: qcom: sdm845: add power-domain to UFS PHY | *b9fb463440hwmon: (max6697) Fix swapped temp{1,8} critical alarms | *2c15d26759hwmon: (max6697) Fix underflow when writing limit attributes | *6afaf55a14pwm: atmel-tcb: Fix race condition and convert to guards | *cffe0ecfb3pwm: atmel-tcb: Don't track polarity in driver data | *cd2c4acaabpwm: atmel-tcb: Unroll atmel_tcb_pwm_set_polarity() into only caller | *49ed37d65epwm: atmel-tcb: Put per-channel data into driver data | *235af017a7drm/meson: fix canvas release in bind function | *e6fc7bff22nvmet-auth: fix nvmet_auth hash error handling | *1d78d96252pwm: stm32: Always do lazy disabling | *08085940c4hwmon: (adt7475) Fix default duty on fan is disabled | *29a8d4e02fcgroup/cpuset: Prevent UAF in proc_cpuset_show() | *fa203531aakernfs: Convert kernfs_path_from_node_locked() from strlcpy() to strscpy() | *2b052bf46ekernfs: fix all kernel-doc warnings and multiple typos | *1e8703443ex86/platform/iosf_mbi: Convert PCIBIOS_* return codes to errnos | *2a0183098ex86/pci/xen: Fix PCIBIOS_* return code handling | *dd117cc24ax86/pci/intel_mid_pci: Fix PCIBIOS_* return code handling | *12ae2c54ddx86/of: Return consistent error type from x86_of_pci_irq_enable() | *c11c3a4524hfsplus: fix to avoid false alarm of circular locking | *d418313bd8block: initialize integrity buffer to zero before writing it to media | *a9a99a1ca1block: cleanup bio_integrity_prep | *5e0cde523fblock: refactor to use helper | *ec85cb2895ubd: untagle discard vs write zeroes not support handling | *ca4b92eec0ubd: refactor the interrupt handler | *3aae731f2eplatform/chrome: cros_ec_debugfs: fix wrong EC message version | *3222607081md: fix deadlock between mddev_suspend and flush bio | *84abbd946ercu/tasks: Fix stale task snaphot for Tasks Trace | *6d0d9f0fd1EDAC, i10nm: make skx_common.o a separate module | *06069d931cspi: atmel-quadspi: Add missing check for clk_prepare | *c775eec144spi: spi-microchip-core: Fix the number of chip selects supported | *4a0a49a898powerpc/configs: Update defconfig with now user-visible CONFIG_FSL_IFC * |4267216b80Merge 6.1.102 into android14-6.1-lts |\| | *c1cec4dad9Linux 6.1.102 | *ee93e6da30tap: add missing verification for short frame | *ad6b3f622ctun: add missing verification for short frame | *588df4829dbtrfs: do not BUG_ON on failure to get dir index for new snapshot | *f4d0775c6efilelock: Fix fcntl/close race recovery compat path | *704393c1edALSA: pcm_dmaengine: Don't synchronize DMA channel when DMA is paused | *ef88c1824aarm64: dts: qcom: sdm630: Disable SS instance in Parkmode for USB | *0e6ad028ccarm64: dts: qcom: ipq6018: Disable SS instance in Parkmode for USB | *e1c4b2b904arm64: dts: qcom: msm8996: Disable SS instance in Parkmode for USB | *b62c13c1ddALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book Pro 360 | *dbf5536b0cALSA: hda/realtek: Enable headset mic on Positivo SU C1400 | *818a257428fs/ntfs3: Validate ff offset | *4e034f7e56jfs: don't walk off the end of ealist | *fd65685594ocfs2: add bounds checking to ocfs2_check_dir_entry() | *f2ba11ba93f2fs: avoid dead loop in f2fs_issue_checkpoint() | *e8dfbf83a8drm/amdgpu: Fix signedness bug in sdma_v4_0_process_trap_irq() * |5e0a4639afMerge 6.1.101 into android14-6.1-lts |\| | *c18e82d3eeLinux 6.1.101 | *8de2531771cachefiles: fix slab-use-after-free in cachefiles_withdraw_cookie() | *90f17e47f1cachefiles: fix slab-use-after-free in fscache_withdraw_volume() | *a6fce9b4fenetfs, fscache: export fscache_put_volume() and add fscache_try_get_volume() | *1d9bbbe6f2wifi: mac80211: disable softirqs for queued frame handling | *95ad70db21wifi: cfg80211: wext: set ssids=NULL for passive scans | *fd2f50397cof/irq: Disable "interrupt-map" parsing for PASEMI Nemo | *0013017242Bluetooth: L2CAP: Fix deadlock | *b13982c233ARM: 9324/1: fix get_user() broken with veneer | *a74fec878ccifs: fix noisy message on copy_file_range | *3e64d60a39spi: mux: set ctlr->bits_per_word_mask | *22999936b9hfsplus: fix uninit-value in copy_name | *54ceb7b349selftests/vDSO: fix clang build errors and warnings | *15dfbf769aksmbd: return FILE_DEVICE_DISK instead of super magic | *37d6bfe93dspi: imx: Don't expect DMA for i.MX{25,35,50,51,53} cspi devices | *e9ce9e0077riscv: stacktrace: fix usage of ftrace_graph_ret_addr() | *be3ba37143drivers/perf: riscv: Reset the counter to hpmevent mapping while starting cpus | *2c9127b4cdwifi: iwlwifi: properly set WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK | *9dc97807d2fs: better handle deep ancestor chains in is_subdir() | *a9100f1742drm/radeon: check bo_va->bo is non-NULL before using it | *bcb6497188drm/amd/display: Account for cursor prefetch BW in DML1 mode support | *e424638474erofs: ensure m_llen is reset to 0 if metadata is invalid | *605572e64cbluetooth/l2cap: sync sock recv cb and release | *96600c2e5eBluetooth: hci_core: cancel all works upon hci_unregister_dev() | *3d7fabcbe6tee: optee: ffa: Fix missing-field-initializers warning | *ce21b28020scsi: libsas: Fix exp-attached device scan after probe failure scanned in again after probe failed | *4bc246d2d6powerpc/eeh: avoid possible crash when edev->pdev changes | *1ee68686d1powerpc/pseries: Whitelist dtl slub object for copying to userspace | *0e91aefe13net: mac802154: Fix racy device stats updates by DEV_STATS_INC() and DEV_STATS_ADD() | *6440b4788bnet: usb: qmi_wwan: add Telit FN912 compositions | *bd1da3b2c0ASoC: amd: yc: Fix non-functional mic on ASUS M5602RA | *67949d6a2aALSA: dmaengine_pcm: terminate dmaengine before synchronize | *d5848033b2ALSA: hda/relatek: Enable Mute LED on HP Laptop 15-gw0xxx | *7f76855a1eALSA: PCM: Allow resume only for suspended streams | *16ad1557caibmvnic: Add tx check to prevent skb leak | *5ef3961682btrfs: qgroup: fix quota root leak after quota disable failure | *32b7341757platform/x86: lg-laptop: Use ACPI device handle when evaluating WMAB/WMBB | *fd50e8d0daplatform/x86: lg-laptop: Change ACPI device id | *a2f62f8e45platform/x86: lg-laptop: Remove LGEX0815 hotkey handling | *aa04b00287platform/x86: wireless-hotkey: Add support for LG Airplane Button | *d065f198bfplatform/mellanox: nvsw-sn2201: Add check for platform_device_add_resources | *79b4be70d5s390/sclp: Fix sclp_init() cleanup on failure | *58a5c93bd1gpio: pca953x: fix pca953x_irq_bus_sync_unlock race | *4bd1f81a2ecan: kvaser_usb: fix return value for hif_usb_send_regout | *a45309a37aASoC: SOF: sof-audio: Skip unprepare for in-use widgets on error rollback | *5bd418c968ASoC: ti: omap-hdmi: Fix too long driver name | *5a3bfa6b0bASoC: ti: davinci-mcasp: Set min period size using FIFO config | *3e25eb518fALSA: dmaengine: Synchronize dma channel after drop() | *9b6164e34abytcr_rt5640 : inverse jack detect for Archos 101 cesium | *73f5b83d73ASoC: topology: Do not assign fields that are already set | *b188d7f3dfASoC: topology: Fix references to freed memory | *5043276f96Input: i8042 - add Ayaneo Kun to i8042 quirk table | *1dc7fd3840Input: elantech - fix touchpad state on resume for Lenovo N24 | *2463c87121mips: fix compat_sys_lseek syscall | *dd13371a4dALSA: hda/realtek: Add more codec ID to no shutup pins list | *d1e2defa07drm/vmwgfx: Fix missing HYPERVISOR_GUEST dependency | *5f85602397KVM: PPC: Book3S HV: Prevent UAF in kvm_spapr_tce_attach_iommu_group() | *001120ff0cwifi: cfg80211: wext: add extra SIOCSIWSCAN data check | *30d35b24b7nvmet: always initialize cqe.result | *f3ab45aacdnvme: avoid double free special payload | *39c5044821drm: panel-orientation-quirks: Add quirk for Aya Neo KUN | *3a16dc3ea8iomap: Fix iomap_adjust_read_range for plen calculation | *27c118fa71mei: demote client disconnect warning on suspend to debug | *33bad0b98dfs/file: fix the check in find_next_fd() | *ad61791466cachefiles: make on-demand read killable | *703bea37d1cachefiles: Set object to close if ondemand_id < 0 in copen | *3b744884c0cachefiles: add consistency check for copen/cread | *7211829263nfs: don't invalidate dentries on transient errors | *f1e52990b0nfs: propagate readlink errors in nfs_symlink_filler | *899604a7c9NFSv4: Fix memory leak in nfs4_set_security_label | *49b04414c0HID: Ignore battery for ELAN touchscreens 2F2C and 4116 | *5e6d87eabfkconfig: remove wrong expr_trans_bool() | *6754f1863fkconfig: gconf: give a proper initial state to the Save button | *2772ed2fc0null_blk: fix validation of block size | *b4eb25a3d7ila: block BH in ila_output() | *5f7ca37869net: ipv6: rpl_iptunnel: block BH in rpl_output() and rpl_input() | *949a179da4Input: silead - Always support 10 fingers | *2c7946a666of/irq: Factor out parsing of interrupt-map parent phandle+args from of_irq_parse_raw() | *4c7bf7c1c9selftests/futex: pass _GNU_SOURCE without a value to the compiler | *2485e3e264selftests/openat2: Fix build warnings on ppc64 | *ab7c4bd1d8wifi: mac80211: fix UBSAN noise in ieee80211_prep_hw_scan() | *4c2b341608wifi: iwlwifi: mvm: Fix scan abort handling with HW rfkill | *b90a7d1883wifi: iwlwifi: mvm: properly set 6 GHz channel direct probe option | *7bae7e1b8ewifi: iwlwifi: mvm: Handle BIGTK cipher in kek_kck cmd | *ce1f81e166wifi: iwlwifi: mvm: d3: fix WoWLAN command version lookup | *a7b93e1ef2wifi: cfg80211: fix 6 GHz scan request building | *32d975583cwifi: mac80211: handle tasklet frames before stopping | *8c3d88c37ewifi: mac80211: apply mcast rate only if interface is up | *ddf4a028c5wifi: mac80211: mesh: init nonpeer_pm to active by default in mesh sdata | *c20706ae52tools/power/cpupower: Fix Pstate frequency reporting on AMD Family 1Ah CPUs | *884c3aa3b1ACPI: EC: Avoid returning AE_OK on errors in address space handler | *9ca4a12e90ACPI: EC: Abort address space access upon error | *ef4708ad00efi/libstub: zboot.lds: Discard .discard sections | *8539be97b8scsi: qedf: Set qed_slowpath_params to zero before use | *f68513d2bascsi: qedf: Wait for stag work during unload | *bd09ebf8f0scsi: qedf: Don't process stag work during unload and recovery | *0b6d662ed5scsi: core: alua: I/O errors for ALUA state transitions | *ef8fc41cd6filelock: Remove locks reliably when fcntl/close race is detected | *aa2a5eeb76gcc-plugins: Rename last_stmt() for GCC 14+ | *d7eda72e59mm/damon/core: merge regions aggressively when max_nr_regions is unmet | *74b16401c5minmax: relax check to allow comparison between unsigned arguments and signed constants | *29d94b56b5minmax: allow comparisons of 'int' against 'unsigned char/short' | *aaca318a3aminmax: allow min()/max()/clamp() if the arguments have the same signedness. | *615e5e50dbminmax: fix header inclusions | *b12e725e3bminmax: clamp more efficiently by avoiding extra comparison | *92f4db47ffminmax: sanity check constant bounds when clamping * |d62f061809Revert "sched: Move psi_account_irqtime() out of update_rq_clock_task() hotpath" * |879c789a5fMerge 6.1.100 into android14-6.1-lts |/ *9b3f9a5b12Linux 6.1.100 *f4ab7cb381i2c: rcar: fix error code in probe() *cc4061f5cekbuild: Make ld-version.sh more robust against version string changes *a765679defx86/bhi: Avoid warning in #DB handler due to BHI mitigation *e9a0643694x86/entry/64: Remove obsolete comment on tracing vs. SYSRET *6a4279b545i2c: rcar: clear NO_RXDMA flag after resetting *72a317f252i2c: testunit: avoid re-issued work after read message *af000c129fi2c: rcar: ensure Gen3+ reset does not disturb local targets *7a9dd12742i2c: rcar: introduce Gen4 devices *86670d7732i2c: rcar: reset controller is mandatory for Gen3+ *b30679daf9i2c: mark HostNotify target address as used *4306fec13di2c: rcar: bring hardware to known state when probing *bfaf0990f1sched: Move psi_account_irqtime() out of update_rq_clock_task() hotpath *1a8879c077nilfs2: fix kernel bug on rename operation of broken directory *bbac91d57abpf: Allow reads from uninit stack *260fde4c34x86/retpoline: Move a NOENDBR annotation to the SRSO dummy return thunk *c6e06ce343misc: fastrpc: Copy the complete capability structure to user *f6cdce36eemisc: fastrpc: Avoid updating PD type for capability request *943f153d1fmisc: fastrpc: Fix DSP capabilities request *a8ba8f3468wireguard: send: annotate intentional data race in checking empty queue *504bae06bcwireguard: queueing: annotate intentional data race in cpu round robin *217978a29cwireguard: allowedips: avoid unaligned 64-bit memory accesses *f7c5999b00wireguard: selftests: use acpi=off instead of -no-acpi for recent QEMU *ba29d022adACPI: processor_idle: Fix invalid comparison with insertion sort for latency *2d33654d40libceph: fix race between delayed_work() and ceph_monc_stop() *14875fd5f9Fix userfaultfd_api to return EINVAL as expected *dd9817d8a6ALSA: hda/realtek: Limit mic boost on VAIO PRO PX *e0bbfdbf46ALSA: hda/realtek: Enable Mute LED on HP 250 G7 *eda2f2dce2ALSA: hda/realtek: add quirk for Clevo V5[46]0TU *e030aa6c97platform/x86: toshiba_acpi: Fix array out-of-bounds access *513789f255nvmem: core: only change name to fram for current attribute *dfa728e059nvmem: meson-efuse: Fix return value of nvmem callbacks *df3c22ee6fnvmem: rmem: Fix return value of rmem_read() *66cf853e1cksmbd: discard write access to the directory open *85ec2ee3bcxhci: always resume roothubs if xHC was reset during resume *b193014373hpet: Support 32-bit userspace *9edcf31762USB: core: Fix duplicate endpoint bug by clearing reserved bits in the descriptor *2d16f63d80usb: gadget: configfs: Prevent OOB read/write in usb_string_copy() *eb41091e24USB: Add USB_QUIRK_NO_SET_INTF quirk for START BP-850k *1094ed5009USB: serial: mos7840: fix crash on resume *366340a2c8USB: serial: option: add Rolling RW350-GL variants *4209a49f1dUSB: serial: option: add Netprisma LCUK54 series modules *f3afeaf65fUSB: serial: option: add support for Foxconn T99W651 *5ec5c27e1eUSB: serial: option: add Fibocom FM350-GL *9c0be3c797USB: serial: option: add Telit FN912 rmnet compositions *1064b4f4d5USB: serial: option: add Telit generic core-dump composition *5be604944cnet: ks8851: Fix potential TX stall after interface reopen *a0c69c492fnet: ks8851: Fix deadlock with the SPI chip variant *e113cddefatcp: avoid too many retransmit packets *6665b3d7abtcp: use signed arithmetic in tcp_rtx_probe0_timed_out() *d467194018Revert "sched/fair: Make sure to try to detach at least one movable task" *931fa0799ccifs: fix setting SecurityFlags to true *121fce5cb1octeontx2-af: fix issue with IPv4 match for RSS *67c8c20feaocteontx2-af: fix issue with IPv6 ext match for RSS *7730af2913octeontx2-af: extend RSS supported offload types *a69534fff5octeontx2-af: fix detection of IP layer *329346eb5eocteontx2-af: fix a issue with cpt_lf_alloc mailbox *1ee5d75aceocteontx2-af: update cpt lf alloc mailbox *b2ef3c4d3docteontx2-af: replace cpt slot with lf id on reg write *b8dbddb47aARM: davinci: Convert comma to semicolon *16d76857d6firmware: cs_dsp: Use strnlen() on name fields in V1 wmfw files *6619aa48a0firmware: cs_dsp: Prevent buffer overrun when processing V2 alg headers *259955eca9firmware: cs_dsp: Validate payload length before processing block *b8be70566bfirmware: cs_dsp: Return error if block header overflows file *fd035f0810firmware: cs_dsp: Fix overflow checking of wmfw header *a305c7ecbds390: Mark psw in __load_psw_mask() as __unitialized *f2431e7db0net, sunrpc: Remap EPERM in case of connection failure in xs_tcp_setup_socket *4e71b10a10net/sched: Fix UAF when resolving a clash *a6db0d3ea6udp: Set SOCK_RCU_FREE earlier in udp_lib_get_port(). *284f2f288fethtool: netlink: do not return SQI value if link is down *3134bdf735ppp: reject claimed-as-LCP but actually malformed packets *d64ce5bd71net: ethernet: mtk-star-emac: set mac_managed_pm when probing *6c4fca7864bpf: fix order of args in call to bpf_map_kvcalloc *d71bed34bcbpf: Remove __bpf_local_storage_map_alloc *902219ed3fbpf: use bpf_map_kvcalloc in bpf_local_storage *56161b324bbpf: Reduce smap->elem_size *3dbcc6f053bpf: Refactor some inode/task/sk storage functions for reuse *c2b66e2b39net: ethernet: lantiq_etop: fix double free in detach *4bc336b234i40e: Fix XDP program unloading while removing the driver *7382fc5dd1net: fix rc7's __skb_datagram_iter() *61b2cda8aaocteontx2-af: Fix incorrect value output on error path in rvu_check_rsrc_availability() *fb61d7b9fbskmsg: Skip zero length skb in sk_msg_recvmsg *de29f17b2anet: phy: microchip: lan87xx: reinit PHY after cable test *72d39b8879tcp: fix incorrect undo caused by DSACK of TLP retransmit *f6f6fdcc31vfs: don't mod negative dentry count when on shrinker list *4e910c6620fs/dcache: Re-use value stored to dentry->d_flags instead of re-reading *5cb36e35bcfilelock: fix potential use-after-free in posix_lock_inode *97cfd5e20dcachefiles: add missing lock protection when polling *35710c6c4acachefiles: cyclic allocation of msg_id to avoid reuse *ec92893692cachefiles: wait for ondemand_object_worker to finish when dropping object *4131c5958fcachefiles: cancel all requests for the object that is being dropped *16d47ba6cacachefiles: stop sending new request when dropping object *0e19a18f99cachefiles: narrow the scope of triggering EPOLLIN events in ondemand mode *2a54bd7b90cachefiles: propagate errors from vfs_getxattr() to avoid infinite loop *941e816185mm: prevent derefencing NULL ptr in pfn_section_valid() *6ac66ef653Compiler Attributes: Add __uninitialized macro Signed-off-by: Lee Jones <joneslee@google.com> Change-Id: I525fb3ade8ce86e368f0a757d903b0f6165616e5
This commit is contained in:
@@ -722,40 +722,26 @@ Configuration pseudo-files:
|
||||
======================= =======================================================
|
||||
SecurityFlags Flags which control security negotiation and
|
||||
also packet signing. Authentication (may/must)
|
||||
flags (e.g. for NTLM and/or NTLMv2) may be combined with
|
||||
flags (e.g. for NTLMv2) may be combined with
|
||||
the signing flags. Specifying two different password
|
||||
hashing mechanisms (as "must use") on the other hand
|
||||
does not make much sense. Default flags are::
|
||||
|
||||
0x07007
|
||||
0x00C5
|
||||
|
||||
(NTLM, NTLMv2 and packet signing allowed). The maximum
|
||||
allowable flags if you want to allow mounts to servers
|
||||
using weaker password hashes is 0x37037 (lanman,
|
||||
plaintext, ntlm, ntlmv2, signing allowed). Some
|
||||
SecurityFlags require the corresponding menuconfig
|
||||
options to be enabled. Enabling plaintext
|
||||
authentication currently requires also enabling
|
||||
lanman authentication in the security flags
|
||||
because the cifs module only supports sending
|
||||
laintext passwords using the older lanman dialect
|
||||
form of the session setup SMB. (e.g. for authentication
|
||||
using plain text passwords, set the SecurityFlags
|
||||
to 0x30030)::
|
||||
(NTLMv2 and packet signing allowed). Some SecurityFlags
|
||||
may require enabling a corresponding menuconfig option.
|
||||
|
||||
may use packet signing 0x00001
|
||||
must use packet signing 0x01001
|
||||
may use NTLM (most common password hash) 0x00002
|
||||
must use NTLM 0x02002
|
||||
may use NTLMv2 0x00004
|
||||
must use NTLMv2 0x04004
|
||||
may use Kerberos security 0x00008
|
||||
must use Kerberos 0x08008
|
||||
may use lanman (weak) password hash 0x00010
|
||||
must use lanman password hash 0x10010
|
||||
may use plaintext passwords 0x00020
|
||||
must use plaintext passwords 0x20020
|
||||
(reserved for future packet encryption) 0x00040
|
||||
may use Kerberos security (krb5) 0x00008
|
||||
must use Kerberos 0x08008
|
||||
may use NTLMSSP 0x00080
|
||||
must use NTLMSSP 0x80080
|
||||
seal (packet encryption) 0x00040
|
||||
must seal 0x40040
|
||||
|
||||
cifsFYI If set to non-zero value, additional debug information
|
||||
will be logged to the system error log. This field
|
||||
|
||||
@@ -637,12 +637,6 @@
|
||||
loops can be debugged more effectively on production
|
||||
systems.
|
||||
|
||||
clocksource.max_cswd_read_retries= [KNL]
|
||||
Number of clocksource_watchdog() retries due to
|
||||
external delays before the clock will be marked
|
||||
unstable. Defaults to two retries, that is,
|
||||
three attempts to read the clock under test.
|
||||
|
||||
clocksource.verify_n_cpus= [KNL]
|
||||
Limit the number of CPUs checked for clocksources
|
||||
marked with CLOCK_SOURCE_VERIFY_PERCPU that
|
||||
@@ -4604,11 +4598,9 @@
|
||||
|
||||
profile= [KNL] Enable kernel profiling via /proc/profile
|
||||
Format: [<profiletype>,]<number>
|
||||
Param: <profiletype>: "schedule", "sleep", or "kvm"
|
||||
Param: <profiletype>: "schedule" or "kvm"
|
||||
[defaults to kernel profiling]
|
||||
Param: "schedule" - profile schedule points.
|
||||
Param: "sleep" - profile D-state sleeping (millisecs).
|
||||
Requires CONFIG_SCHEDSTATS
|
||||
Param: "kvm" - profile VM exits.
|
||||
Param: <number> - step/bucket size as a power of 2 for
|
||||
statistical time based profiling.
|
||||
|
||||
@@ -104,8 +104,16 @@ stable kernels.
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A76 | #1463225 | ARM64_ERRATUM_1463225 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A76 | #3324349 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A77 | #1508412 | ARM64_ERRATUM_1508412 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A77 | #3324348 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A78 | #3324344 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A78C | #3324346,3324347| ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A510 | #2051678 | ARM64_ERRATUM_2051678 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A510 | #2077057 | ARM64_ERRATUM_2077057 |
|
||||
@@ -120,22 +128,50 @@ stable kernels.
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A710 | #2224489 | ARM64_ERRATUM_2224489 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A710 | #3324338 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A720 | #3456091 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A725 | #3456106 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-X1 | #3324344 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-X1C | #3324346 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-X2 | #2119858 | ARM64_ERRATUM_2119858 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-X2 | #2224489 | ARM64_ERRATUM_2224489 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-X2 | #3324338 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-X3 | #3324335 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-X4 | #3194386 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-X925 | #3324334 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Neoverse-N1 | #1188873,1418040| ARM64_ERRATUM_1418040 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Neoverse-N1 | #1349291 | N/A |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Neoverse-N1 | #1542419 | ARM64_ERRATUM_1542419 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Neoverse-N1 | #3324349 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Neoverse-N2 | #2139208 | ARM64_ERRATUM_2139208 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Neoverse-N2 | #2067961 | ARM64_ERRATUM_2067961 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Neoverse-N2 | #2253138 | ARM64_ERRATUM_2253138 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Neoverse-N2 | #3324339 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Neoverse-V1 | #3324341 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Neoverse-V2 | #3324336 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Neoverse-V3 | #3312417 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | MMU-500 | #841119,826419 | N/A |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | MMU-600 | #1076982,1209401| N/A |
|
||||
|
||||
181
Documentation/bpf/map_lpm_trie.rst
Normal file
181
Documentation/bpf/map_lpm_trie.rst
Normal file
@@ -0,0 +1,181 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0-only
|
||||
.. Copyright (C) 2022 Red Hat, Inc.
|
||||
|
||||
=====================
|
||||
BPF_MAP_TYPE_LPM_TRIE
|
||||
=====================
|
||||
|
||||
.. note::
|
||||
- ``BPF_MAP_TYPE_LPM_TRIE`` was introduced in kernel version 4.11
|
||||
|
||||
``BPF_MAP_TYPE_LPM_TRIE`` provides a longest prefix match algorithm that
|
||||
can be used to match IP addresses to a stored set of prefixes.
|
||||
Internally, data is stored in an unbalanced trie of nodes that uses
|
||||
``prefixlen,data`` pairs as its keys. The ``data`` is interpreted in
|
||||
network byte order, i.e. big endian, so ``data[0]`` stores the most
|
||||
significant byte.
|
||||
|
||||
LPM tries may be created with a maximum prefix length that is a multiple
|
||||
of 8, in the range from 8 to 2048. The key used for lookup and update
|
||||
operations is a ``struct bpf_lpm_trie_key_u8``, extended by
|
||||
``max_prefixlen/8`` bytes.
|
||||
|
||||
- For IPv4 addresses the data length is 4 bytes
|
||||
- For IPv6 addresses the data length is 16 bytes
|
||||
|
||||
The value type stored in the LPM trie can be any user defined type.
|
||||
|
||||
.. note::
|
||||
When creating a map of type ``BPF_MAP_TYPE_LPM_TRIE`` you must set the
|
||||
``BPF_F_NO_PREALLOC`` flag.
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
Kernel BPF
|
||||
----------
|
||||
|
||||
.. c:function::
|
||||
void *bpf_map_lookup_elem(struct bpf_map *map, const void *key)
|
||||
|
||||
The longest prefix entry for a given data value can be found using the
|
||||
``bpf_map_lookup_elem()`` helper. This helper returns a pointer to the
|
||||
value associated with the longest matching ``key``, or ``NULL`` if no
|
||||
entry was found.
|
||||
|
||||
The ``key`` should have ``prefixlen`` set to ``max_prefixlen`` when
|
||||
performing longest prefix lookups. For example, when searching for the
|
||||
longest prefix match for an IPv4 address, ``prefixlen`` should be set to
|
||||
``32``.
|
||||
|
||||
.. c:function::
|
||||
long bpf_map_update_elem(struct bpf_map *map, const void *key, const void *value, u64 flags)
|
||||
|
||||
Prefix entries can be added or updated using the ``bpf_map_update_elem()``
|
||||
helper. This helper replaces existing elements atomically.
|
||||
|
||||
``bpf_map_update_elem()`` returns ``0`` on success, or negative error in
|
||||
case of failure.
|
||||
|
||||
.. note::
|
||||
The flags parameter must be one of BPF_ANY, BPF_NOEXIST or BPF_EXIST,
|
||||
but the value is ignored, giving BPF_ANY semantics.
|
||||
|
||||
.. c:function::
|
||||
long bpf_map_delete_elem(struct bpf_map *map, const void *key)
|
||||
|
||||
Prefix entries can be deleted using the ``bpf_map_delete_elem()``
|
||||
helper. This helper will return 0 on success, or negative error in case
|
||||
of failure.
|
||||
|
||||
Userspace
|
||||
---------
|
||||
|
||||
Access from userspace uses libbpf APIs with the same names as above, with
|
||||
the map identified by ``fd``.
|
||||
|
||||
.. c:function::
|
||||
int bpf_map_get_next_key (int fd, const void *cur_key, void *next_key)
|
||||
|
||||
A userspace program can iterate through the entries in an LPM trie using
|
||||
libbpf's ``bpf_map_get_next_key()`` function. The first key can be
|
||||
fetched by calling ``bpf_map_get_next_key()`` with ``cur_key`` set to
|
||||
``NULL``. Subsequent calls will fetch the next key that follows the
|
||||
current key. ``bpf_map_get_next_key()`` returns ``0`` on success,
|
||||
``-ENOENT`` if ``cur_key`` is the last key in the trie, or negative
|
||||
error in case of failure.
|
||||
|
||||
``bpf_map_get_next_key()`` will iterate through the LPM trie elements
|
||||
from leftmost leaf first. This means that iteration will return more
|
||||
specific keys before less specific ones.
|
||||
|
||||
Examples
|
||||
========
|
||||
|
||||
Please see ``tools/testing/selftests/bpf/test_lpm_map.c`` for examples
|
||||
of LPM trie usage from userspace. The code snippets below demonstrate
|
||||
API usage.
|
||||
|
||||
Kernel BPF
|
||||
----------
|
||||
|
||||
The following BPF code snippet shows how to declare a new LPM trie for IPv4
|
||||
address prefixes:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
#include <linux/bpf.h>
|
||||
#include <bpf/bpf_helpers.h>
|
||||
|
||||
struct ipv4_lpm_key {
|
||||
__u32 prefixlen;
|
||||
__u32 data;
|
||||
};
|
||||
|
||||
struct {
|
||||
__uint(type, BPF_MAP_TYPE_LPM_TRIE);
|
||||
__type(key, struct ipv4_lpm_key);
|
||||
__type(value, __u32);
|
||||
__uint(map_flags, BPF_F_NO_PREALLOC);
|
||||
__uint(max_entries, 255);
|
||||
} ipv4_lpm_map SEC(".maps");
|
||||
|
||||
The following BPF code snippet shows how to lookup by IPv4 address:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
void *lookup(__u32 ipaddr)
|
||||
{
|
||||
struct ipv4_lpm_key key = {
|
||||
.prefixlen = 32,
|
||||
.data = ipaddr
|
||||
};
|
||||
|
||||
return bpf_map_lookup_elem(&ipv4_lpm_map, &key);
|
||||
}
|
||||
|
||||
Userspace
|
||||
---------
|
||||
|
||||
The following snippet shows how to insert an IPv4 prefix entry into an
|
||||
LPM trie:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
int add_prefix_entry(int lpm_fd, __u32 addr, __u32 prefixlen, struct value *value)
|
||||
{
|
||||
struct ipv4_lpm_key ipv4_key = {
|
||||
.prefixlen = prefixlen,
|
||||
.data = addr
|
||||
};
|
||||
return bpf_map_update_elem(lpm_fd, &ipv4_key, value, BPF_ANY);
|
||||
}
|
||||
|
||||
The following snippet shows a userspace program walking through the entries
|
||||
of an LPM trie:
|
||||
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
#include <bpf/libbpf.h>
|
||||
#include <bpf/bpf.h>
|
||||
|
||||
void iterate_lpm_trie(int map_fd)
|
||||
{
|
||||
struct ipv4_lpm_key *cur_key = NULL;
|
||||
struct ipv4_lpm_key next_key;
|
||||
struct value value;
|
||||
int err;
|
||||
|
||||
for (;;) {
|
||||
err = bpf_map_get_next_key(map_fd, cur_key, &next_key);
|
||||
if (err)
|
||||
break;
|
||||
|
||||
bpf_map_lookup_elem(map_fd, &next_key, &value);
|
||||
|
||||
/* Use key and value here */
|
||||
|
||||
cur_key = &next_key;
|
||||
}
|
||||
}
|
||||
@@ -49,7 +49,10 @@ properties:
|
||||
to take when the temperature crosses those thresholds.
|
||||
|
||||
patternProperties:
|
||||
"^[a-zA-Z][a-zA-Z0-9\\-]{1,12}-thermal$":
|
||||
# Node name is limited in size due to Linux kernel requirements - 19
|
||||
# characters in total (see THERMAL_NAME_LENGTH, including terminating NUL
|
||||
# byte):
|
||||
"^[a-zA-Z][a-zA-Z0-9\\-]{1,10}-thermal$":
|
||||
type: object
|
||||
description:
|
||||
Each thermal zone node contains information about how frequently it
|
||||
|
||||
@@ -20,8 +20,7 @@ The gl_holders list contains all the queued lock requests (not
|
||||
just the holders) associated with the glock. If there are any
|
||||
held locks, then they will be contiguous entries at the head
|
||||
of the list. Locks are granted in strictly the order that they
|
||||
are queued, except for those marked LM_FLAG_PRIORITY which are
|
||||
used only during recovery, and even then only for journal locks.
|
||||
are queued.
|
||||
|
||||
There are three lock states that users of the glock layer can request,
|
||||
namely shared (SH), deferred (DF) and exclusive (EX). Those translate
|
||||
|
||||
2
Makefile
2
Makefile
@@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 6
|
||||
PATCHLEVEL = 1
|
||||
SUBLEVEL = 99
|
||||
SUBLEVEL = 112
|
||||
EXTRAVERSION =
|
||||
NAME = Curry Ramen
|
||||
|
||||
|
||||
@@ -5,31 +5,8 @@
|
||||
|
||||
#include "imx6q.dtsi"
|
||||
#include "imx6qdl-kontron-samx6i.dtsi"
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/ {
|
||||
model = "Kontron SMARC sAMX6i Quad/Dual";
|
||||
compatible = "kontron,imx6q-samx6i", "fsl,imx6q";
|
||||
};
|
||||
|
||||
/* Quad/Dual SoMs have 3 chip-select signals */
|
||||
&ecspi4 {
|
||||
cs-gpios = <&gpio3 24 GPIO_ACTIVE_LOW>,
|
||||
<&gpio3 29 GPIO_ACTIVE_LOW>,
|
||||
<&gpio3 25 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&pinctrl_ecspi4 {
|
||||
fsl,pins = <
|
||||
MX6QDL_PAD_EIM_D21__ECSPI4_SCLK 0x100b1
|
||||
MX6QDL_PAD_EIM_D28__ECSPI4_MOSI 0x100b1
|
||||
MX6QDL_PAD_EIM_D22__ECSPI4_MISO 0x100b1
|
||||
|
||||
/* SPI4_IMX_CS2# - connected to internal flash */
|
||||
MX6QDL_PAD_EIM_D24__GPIO3_IO24 0x1b0b0
|
||||
/* SPI4_IMX_CS0# - connected to SMARC SPI0_CS0# */
|
||||
MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1b0b0
|
||||
/* SPI4_CS3# - connected to SMARC SPI0_CS1# */
|
||||
MX6QDL_PAD_EIM_D25__GPIO3_IO25 0x1b0b0
|
||||
>;
|
||||
};
|
||||
|
||||
@@ -244,7 +244,8 @@
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_ecspi4>;
|
||||
cs-gpios = <&gpio3 24 GPIO_ACTIVE_LOW>,
|
||||
<&gpio3 29 GPIO_ACTIVE_LOW>;
|
||||
<&gpio3 29 GPIO_ACTIVE_LOW>,
|
||||
<&gpio3 25 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
|
||||
/* default boot source: workaround #1 for errata ERR006282 */
|
||||
@@ -259,7 +260,7 @@
|
||||
&fec {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_enet>;
|
||||
phy-mode = "rgmii";
|
||||
phy-connection-type = "rgmii-id";
|
||||
phy-handle = <ðphy>;
|
||||
|
||||
mdio {
|
||||
@@ -269,7 +270,7 @@
|
||||
ethphy: ethernet-phy@1 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <1>;
|
||||
reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
|
||||
reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
|
||||
reset-assert-us = <1000>;
|
||||
};
|
||||
};
|
||||
@@ -464,6 +465,8 @@
|
||||
MX6QDL_PAD_EIM_D24__GPIO3_IO24 0x1b0b0
|
||||
/* SPI_IMX_CS0# - connected to SMARC SPI0_CS0# */
|
||||
MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1b0b0
|
||||
/* SPI4_CS3# - connected to SMARC SPI0_CS1# */
|
||||
MX6QDL_PAD_EIM_D25__GPIO3_IO25 0x1b0b0
|
||||
>;
|
||||
};
|
||||
|
||||
@@ -516,7 +519,7 @@
|
||||
MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0
|
||||
MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0
|
||||
MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0
|
||||
MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25 0x1b0b0 /* RST_GBE0_PHY# */
|
||||
MX6QDL_PAD_NANDF_D1__GPIO2_IO01 0x1b0b0 /* RST_GBE0_PHY# */
|
||||
>;
|
||||
};
|
||||
|
||||
@@ -729,7 +732,7 @@
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_pcie>;
|
||||
wake-up-gpio = <&gpio6 18 GPIO_ACTIVE_HIGH>;
|
||||
reset-gpio = <&gpio3 13 GPIO_ACTIVE_HIGH>;
|
||||
reset-gpio = <&gpio3 13 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
/* LCD_BKLT_PWM */
|
||||
@@ -817,5 +820,6 @@
|
||||
/* CPLD is feeded by watchdog (hardwired) */
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_wdog1>;
|
||||
fsl,ext-reset-output;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@@ -109,16 +109,6 @@ extern int __get_user_64t_1(void *);
|
||||
extern int __get_user_64t_2(void *);
|
||||
extern int __get_user_64t_4(void *);
|
||||
|
||||
#define __GUP_CLOBBER_1 "lr", "cc"
|
||||
#ifdef CONFIG_CPU_USE_DOMAINS
|
||||
#define __GUP_CLOBBER_2 "ip", "lr", "cc"
|
||||
#else
|
||||
#define __GUP_CLOBBER_2 "lr", "cc"
|
||||
#endif
|
||||
#define __GUP_CLOBBER_4 "lr", "cc"
|
||||
#define __GUP_CLOBBER_32t_8 "lr", "cc"
|
||||
#define __GUP_CLOBBER_8 "lr", "cc"
|
||||
|
||||
#define __get_user_x(__r2, __p, __e, __l, __s) \
|
||||
__asm__ __volatile__ ( \
|
||||
__asmeq("%0", "r0") __asmeq("%1", "r2") \
|
||||
@@ -126,7 +116,7 @@ extern int __get_user_64t_4(void *);
|
||||
"bl __get_user_" #__s \
|
||||
: "=&r" (__e), "=r" (__r2) \
|
||||
: "0" (__p), "r" (__l) \
|
||||
: __GUP_CLOBBER_##__s)
|
||||
: "ip", "lr", "cc")
|
||||
|
||||
/* narrowing a double-word get into a single 32bit word register: */
|
||||
#ifdef __ARMEB__
|
||||
@@ -148,7 +138,7 @@ extern int __get_user_64t_4(void *);
|
||||
"bl __get_user_64t_" #__s \
|
||||
: "=&r" (__e), "=r" (__r2) \
|
||||
: "0" (__p), "r" (__l) \
|
||||
: __GUP_CLOBBER_##__s)
|
||||
: "ip", "lr", "cc")
|
||||
#else
|
||||
#define __get_user_x_64t __get_user_x
|
||||
#endif
|
||||
|
||||
@@ -61,7 +61,7 @@ static void davinci_pm_suspend(void)
|
||||
|
||||
/* Configure sleep count in deep sleep register */
|
||||
val = __raw_readl(pm_config.deepsleep_reg);
|
||||
val &= ~DEEPSLEEP_SLEEPCOUNT_MASK,
|
||||
val &= ~DEEPSLEEP_SLEEPCOUNT_MASK;
|
||||
val |= pm_config.sleepcount;
|
||||
__raw_writel(val, pm_config.deepsleep_reg);
|
||||
|
||||
|
||||
@@ -512,10 +512,8 @@ static struct ads7846_platform_data spitz_ads7846_info = {
|
||||
static struct gpiod_lookup_table spitz_lcdcon_gpio_table = {
|
||||
.dev_id = "spi2.1",
|
||||
.table = {
|
||||
GPIO_LOOKUP("gpio-pxa", SPITZ_GPIO_BACKLIGHT_CONT,
|
||||
"BL_CONT", GPIO_ACTIVE_LOW),
|
||||
GPIO_LOOKUP("gpio-pxa", SPITZ_GPIO_BACKLIGHT_ON,
|
||||
"BL_ON", GPIO_ACTIVE_HIGH),
|
||||
GPIO_LOOKUP("sharp-scoop.1", 6, "BL_CONT", GPIO_ACTIVE_LOW),
|
||||
GPIO_LOOKUP("sharp-scoop.1", 7, "BL_ON", GPIO_ACTIVE_HIGH),
|
||||
{ },
|
||||
},
|
||||
};
|
||||
@@ -523,10 +521,8 @@ static struct gpiod_lookup_table spitz_lcdcon_gpio_table = {
|
||||
static struct gpiod_lookup_table akita_lcdcon_gpio_table = {
|
||||
.dev_id = "spi2.1",
|
||||
.table = {
|
||||
GPIO_LOOKUP("gpio-pxa", AKITA_GPIO_BACKLIGHT_CONT,
|
||||
"BL_CONT", GPIO_ACTIVE_LOW),
|
||||
GPIO_LOOKUP("gpio-pxa", AKITA_GPIO_BACKLIGHT_ON,
|
||||
"BL_ON", GPIO_ACTIVE_HIGH),
|
||||
GPIO_LOOKUP("i2c-max7310", 3, "BL_ON", GPIO_ACTIVE_HIGH),
|
||||
GPIO_LOOKUP("i2c-max7310", 4, "BL_CONT", GPIO_ACTIVE_LOW),
|
||||
{ },
|
||||
},
|
||||
};
|
||||
@@ -953,12 +949,9 @@ static inline void spitz_i2c_init(void) {}
|
||||
static struct gpiod_lookup_table spitz_audio_gpio_table = {
|
||||
.dev_id = "spitz-audio",
|
||||
.table = {
|
||||
GPIO_LOOKUP("sharp-scoop.0", SPITZ_GPIO_MUTE_L - SPITZ_SCP_GPIO_BASE,
|
||||
"mute-l", GPIO_ACTIVE_HIGH),
|
||||
GPIO_LOOKUP("sharp-scoop.0", SPITZ_GPIO_MUTE_R - SPITZ_SCP_GPIO_BASE,
|
||||
"mute-r", GPIO_ACTIVE_HIGH),
|
||||
GPIO_LOOKUP("sharp-scoop.1", SPITZ_GPIO_MIC_BIAS - SPITZ_SCP2_GPIO_BASE,
|
||||
"mic", GPIO_ACTIVE_HIGH),
|
||||
GPIO_LOOKUP("sharp-scoop.0", 3, "mute-l", GPIO_ACTIVE_HIGH),
|
||||
GPIO_LOOKUP("sharp-scoop.0", 4, "mute-r", GPIO_ACTIVE_HIGH),
|
||||
GPIO_LOOKUP("sharp-scoop.1", 8, "mic", GPIO_ACTIVE_HIGH),
|
||||
{ },
|
||||
},
|
||||
};
|
||||
@@ -966,12 +959,9 @@ static struct gpiod_lookup_table spitz_audio_gpio_table = {
|
||||
static struct gpiod_lookup_table akita_audio_gpio_table = {
|
||||
.dev_id = "spitz-audio",
|
||||
.table = {
|
||||
GPIO_LOOKUP("sharp-scoop.0", SPITZ_GPIO_MUTE_L - SPITZ_SCP_GPIO_BASE,
|
||||
"mute-l", GPIO_ACTIVE_HIGH),
|
||||
GPIO_LOOKUP("sharp-scoop.0", SPITZ_GPIO_MUTE_R - SPITZ_SCP_GPIO_BASE,
|
||||
"mute-r", GPIO_ACTIVE_HIGH),
|
||||
GPIO_LOOKUP("i2c-max7310", AKITA_GPIO_MIC_BIAS - AKITA_IOEXP_GPIO_BASE,
|
||||
"mic", GPIO_ACTIVE_HIGH),
|
||||
GPIO_LOOKUP("sharp-scoop.0", 3, "mute-l", GPIO_ACTIVE_HIGH),
|
||||
GPIO_LOOKUP("sharp-scoop.0", 4, "mute-r", GPIO_ACTIVE_HIGH),
|
||||
GPIO_LOOKUP("i2c-max7310", 2, "mic", GPIO_ACTIVE_HIGH),
|
||||
{ },
|
||||
},
|
||||
};
|
||||
|
||||
@@ -987,6 +987,44 @@ config ARM64_ERRATUM_2966298
|
||||
|
||||
If unsure, say Y.
|
||||
|
||||
config ARM64_ERRATUM_3194386
|
||||
bool "Cortex-*/Neoverse-*: workaround for MSR SSBS not self-synchronizing"
|
||||
default y
|
||||
help
|
||||
This option adds the workaround for the following errata:
|
||||
|
||||
* ARM Cortex-A76 erratum 3324349
|
||||
* ARM Cortex-A77 erratum 3324348
|
||||
* ARM Cortex-A78 erratum 3324344
|
||||
* ARM Cortex-A78C erratum 3324346
|
||||
* ARM Cortex-A78C erratum 3324347
|
||||
* ARM Cortex-A710 erratam 3324338
|
||||
* ARM Cortex-A720 erratum 3456091
|
||||
* ARM Cortex-A725 erratum 3456106
|
||||
* ARM Cortex-X1 erratum 3324344
|
||||
* ARM Cortex-X1C erratum 3324346
|
||||
* ARM Cortex-X2 erratum 3324338
|
||||
* ARM Cortex-X3 erratum 3324335
|
||||
* ARM Cortex-X4 erratum 3194386
|
||||
* ARM Cortex-X925 erratum 3324334
|
||||
* ARM Neoverse-N1 erratum 3324349
|
||||
* ARM Neoverse N2 erratum 3324339
|
||||
* ARM Neoverse-V1 erratum 3324341
|
||||
* ARM Neoverse V2 erratum 3324336
|
||||
* ARM Neoverse-V3 erratum 3312417
|
||||
|
||||
On affected cores "MSR SSBS, #0" instructions may not affect
|
||||
subsequent speculative instructions, which may permit unexepected
|
||||
speculative store bypassing.
|
||||
|
||||
Work around this problem by placing a Speculation Barrier (SB) or
|
||||
Instruction Synchronization Barrier (ISB) after kernel changes to
|
||||
SSBS. The presence of the SSBS special-purpose register is hidden
|
||||
from hwcaps and EL0 reads of ID_AA64PFR1_EL1, such that userspace
|
||||
will use the PR_SPEC_STORE_BYPASS prctl to change SSBS.
|
||||
|
||||
If unsure, say Y.
|
||||
|
||||
config CAVIUM_ERRATUM_22375
|
||||
bool "Cavium erratum 22375, 24313"
|
||||
default y
|
||||
|
||||
@@ -311,8 +311,8 @@
|
||||
<&reset RESET_HDMI_SYSTEM_RESET>,
|
||||
<&reset RESET_HDMI_TX>;
|
||||
reset-names = "hdmitx_apb", "hdmitx", "hdmitx_phy";
|
||||
clocks = <&clkc CLKID_HDMI_PCLK>,
|
||||
<&clkc CLKID_CLK81>,
|
||||
clocks = <&clkc CLKID_HDMI>,
|
||||
<&clkc CLKID_HDMI_PCLK>,
|
||||
<&clkc CLKID_GCLK_VENCI_INT0>;
|
||||
clock-names = "isfr", "iahb", "venci";
|
||||
};
|
||||
|
||||
@@ -323,8 +323,8 @@
|
||||
<&reset RESET_HDMI_SYSTEM_RESET>,
|
||||
<&reset RESET_HDMI_TX>;
|
||||
reset-names = "hdmitx_apb", "hdmitx", "hdmitx_phy";
|
||||
clocks = <&clkc CLKID_HDMI_PCLK>,
|
||||
<&clkc CLKID_CLK81>,
|
||||
clocks = <&clkc CLKID_HDMI>,
|
||||
<&clkc CLKID_HDMI_PCLK>,
|
||||
<&clkc CLKID_GCLK_VENCI_INT0>;
|
||||
clock-names = "isfr", "iahb", "venci";
|
||||
};
|
||||
|
||||
@@ -337,7 +337,7 @@
|
||||
};
|
||||
|
||||
spdifin: audio-controller@400 {
|
||||
compatible = "amlogic,g12a-spdifin",
|
||||
compatible = "amlogic,sm1-spdifin",
|
||||
"amlogic,axg-spdifin";
|
||||
reg = <0x0 0x400 0x0 0x30>;
|
||||
#sound-dai-cells = <0>;
|
||||
@@ -351,7 +351,7 @@
|
||||
};
|
||||
|
||||
spdifout_a: audio-controller@480 {
|
||||
compatible = "amlogic,g12a-spdifout",
|
||||
compatible = "amlogic,sm1-spdifout",
|
||||
"amlogic,axg-spdifout";
|
||||
reg = <0x0 0x480 0x0 0x50>;
|
||||
#sound-dai-cells = <0>;
|
||||
|
||||
@@ -286,8 +286,8 @@
|
||||
/* eMMC is shared pin with parallel NAND */
|
||||
emmc_pins_default: emmc-pins-default {
|
||||
mux {
|
||||
function = "emmc", "emmc_rst";
|
||||
groups = "emmc";
|
||||
function = "emmc";
|
||||
groups = "emmc", "emmc_rst";
|
||||
};
|
||||
|
||||
/* "NDL0","NDL1","NDL2","NDL3","NDL4","NDL5","NDL6","NDL7",
|
||||
|
||||
@@ -244,8 +244,8 @@
|
||||
/* eMMC is shared pin with parallel NAND */
|
||||
emmc_pins_default: emmc-pins-default {
|
||||
mux {
|
||||
function = "emmc", "emmc_rst";
|
||||
groups = "emmc";
|
||||
function = "emmc";
|
||||
groups = "emmc", "emmc_rst";
|
||||
};
|
||||
|
||||
/* "NDL0","NDL1","NDL2","NDL3","NDL4","NDL5","NDL6","NDL7",
|
||||
|
||||
@@ -168,21 +168,24 @@
|
||||
vdd18-supply = <&pp1800_mipibrdg>;
|
||||
vdd33-supply = <&vddio_mipibrdg>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
anx7625_in: endpoint {
|
||||
remote-endpoint = <&dsi_out>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
|
||||
anx7625_in: endpoint {
|
||||
remote-endpoint = <&dsi_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
|
||||
anx7625_out: endpoint {
|
||||
remote-endpoint = <&panel_in>;
|
||||
anx7625_out: endpoint {
|
||||
remote-endpoint = <&panel_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -767,7 +767,6 @@
|
||||
};
|
||||
pins-rts {
|
||||
pinmux = <PINMUX_GPIO47__FUNC_URTS1>;
|
||||
output-enable;
|
||||
};
|
||||
pins-cts {
|
||||
pinmux = <PINMUX_GPIO46__FUNC_UCTS1>;
|
||||
@@ -786,7 +785,6 @@
|
||||
};
|
||||
pins-rts {
|
||||
pinmux = <PINMUX_GPIO47__FUNC_URTS1>;
|
||||
output-enable;
|
||||
};
|
||||
pins-cts {
|
||||
pinmux = <PINMUX_GPIO46__FUNC_UCTS1>;
|
||||
|
||||
@@ -760,6 +760,7 @@
|
||||
clocks = <&xo>;
|
||||
clock-names = "ref";
|
||||
tx-fifo-resize;
|
||||
snps,parkmode-disable-ss-quirk;
|
||||
snps,is-utmi-l1-suspend;
|
||||
snps,hird-threshold = /bits/ 8 <0x0>;
|
||||
snps,dis_u2_susphy_quirk;
|
||||
|
||||
@@ -593,6 +593,7 @@
|
||||
interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
|
||||
phys = <&qusb_phy_0>, <&usb0_ssphy>;
|
||||
phy-names = "usb2-phy", "usb3-phy";
|
||||
snps,parkmode-disable-ss-quirk;
|
||||
snps,is-utmi-l1-suspend;
|
||||
snps,hird-threshold = /bits/ 8 <0x0>;
|
||||
snps,dis_u2_susphy_quirk;
|
||||
@@ -635,6 +636,7 @@
|
||||
interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
|
||||
phys = <&qusb_phy_1>, <&usb1_ssphy>;
|
||||
phy-names = "usb2-phy", "usb3-phy";
|
||||
snps,parkmode-disable-ss-quirk;
|
||||
snps,is-utmi-l1-suspend;
|
||||
snps,hird-threshold = /bits/ 8 <0x0>;
|
||||
snps,dis_u2_susphy_quirk;
|
||||
|
||||
@@ -368,7 +368,6 @@
|
||||
|
||||
&hsusb_phy1 {
|
||||
status = "okay";
|
||||
extcon = <&typec>;
|
||||
|
||||
vdda-pll-supply = <&vreg_l12a_1p8>;
|
||||
vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
|
||||
|
||||
@@ -2016,7 +2016,7 @@
|
||||
<&gcc GCC_UFS_RX_SYMBOL_0_CLK>;
|
||||
freq-table-hz =
|
||||
<100000000 200000000>,
|
||||
<0 0>,
|
||||
<100000000 200000000>,
|
||||
<0 0>,
|
||||
<0 0>,
|
||||
<0 0>,
|
||||
@@ -3004,6 +3004,7 @@
|
||||
snps,dis_u2_susphy_quirk;
|
||||
snps,dis_enblslpm_quirk;
|
||||
snps,is-utmi-l1-suspend;
|
||||
snps,parkmode-disable-ss-quirk;
|
||||
tx-fifo-resize;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1457,7 +1457,6 @@
|
||||
* SoC VDDMX RPM Power Domain in the Adreno driver.
|
||||
*/
|
||||
power-domains = <&gpucc GPU_GX_GDSC>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpucc: clock-controller@5065000 {
|
||||
@@ -2030,7 +2029,8 @@
|
||||
interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
|
||||
snps,dis_u2_susphy_quirk;
|
||||
snps,dis_enblslpm_quirk;
|
||||
phys = <&qusb2phy>, <&usb1_ssphy>;
|
||||
snps,parkmode-disable-ss-quirk;
|
||||
phys = <&qusb2phy>, <&usb3phy>;
|
||||
phy-names = "usb2-phy", "usb3-phy";
|
||||
snps,has-lpm-erratum;
|
||||
snps,hird-threshold = /bits/ 8 <0x10>;
|
||||
@@ -2039,33 +2039,26 @@
|
||||
|
||||
usb3phy: phy@c010000 {
|
||||
compatible = "qcom,msm8998-qmp-usb3-phy";
|
||||
reg = <0x0c010000 0x18c>;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
reg = <0x0c010000 0x1000>;
|
||||
|
||||
clocks = <&gcc GCC_USB3_PHY_AUX_CLK>,
|
||||
<&gcc GCC_USB3_CLKREF_CLK>,
|
||||
<&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
|
||||
<&gcc GCC_USB3_CLKREF_CLK>;
|
||||
clock-names = "aux", "cfg_ahb", "ref";
|
||||
<&gcc GCC_USB3_PHY_PIPE_CLK>;
|
||||
clock-names = "aux",
|
||||
"ref",
|
||||
"cfg_ahb",
|
||||
"pipe";
|
||||
clock-output-names = "usb3_phy_pipe_clk_src";
|
||||
#clock-cells = <0>;
|
||||
#phy-cells = <0>;
|
||||
|
||||
resets = <&gcc GCC_USB3_PHY_BCR>,
|
||||
<&gcc GCC_USB3PHY_PHY_BCR>;
|
||||
reset-names = "phy", "common";
|
||||
reset-names = "phy",
|
||||
"phy_phy";
|
||||
|
||||
usb1_ssphy: phy@c010200 {
|
||||
reg = <0xc010200 0x128>,
|
||||
<0xc010400 0x200>,
|
||||
<0xc010c00 0x20c>,
|
||||
<0xc010600 0x128>,
|
||||
<0xc010800 0x200>;
|
||||
#phy-cells = <0>;
|
||||
#clock-cells = <0>;
|
||||
clocks = <&gcc GCC_USB3_PHY_PIPE_CLK>;
|
||||
clock-names = "pipe0";
|
||||
clock-output-names = "usb3_phy_pipe_clk_src";
|
||||
};
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
qusb2phy: phy@c012000 {
|
||||
|
||||
@@ -1243,6 +1243,7 @@
|
||||
interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
|
||||
snps,dis_u2_susphy_quirk;
|
||||
snps,dis_enblslpm_quirk;
|
||||
snps,parkmode-disable-ss-quirk;
|
||||
|
||||
/*
|
||||
* SDM630 technically supports USB3 but I
|
||||
|
||||
@@ -2537,6 +2537,8 @@
|
||||
clocks = <&gcc GCC_UFS_MEM_CLKREF_CLK>,
|
||||
<&gcc GCC_UFS_PHY_PHY_AUX_CLK>;
|
||||
|
||||
power-domains = <&gcc UFS_PHY_GDSC>;
|
||||
|
||||
resets = <&ufs_mem_hc 0>;
|
||||
reset-names = "ufsphy";
|
||||
status = "disabled";
|
||||
|
||||
@@ -830,6 +830,8 @@
|
||||
clocks = <&gcc GCC_UFS_MEM_CLKREF_CLK>,
|
||||
<&gcc GCC_UFS_PHY_PHY_AUX_CLK>;
|
||||
|
||||
power-domains = <&gcc UFS_PHY_GDSC>;
|
||||
|
||||
resets = <&ufs_mem_hc 0>;
|
||||
reset-names = "ufsphy";
|
||||
|
||||
@@ -893,6 +895,7 @@
|
||||
compatible = "qcom,fastrpc";
|
||||
qcom,glink-channels = "fastrpcglink-apps-dsp";
|
||||
label = "adsp";
|
||||
qcom,non-secure-domain;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
@@ -1000,6 +1003,7 @@
|
||||
compatible = "qcom,fastrpc";
|
||||
qcom,glink-channels = "fastrpcglink-apps-dsp";
|
||||
label = "cdsp";
|
||||
qcom,non-secure-domain;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
|
||||
@@ -2125,7 +2125,7 @@
|
||||
"jedec,ufs-2.0";
|
||||
reg = <0 0x01d84000 0 0x3000>;
|
||||
interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
|
||||
phys = <&ufs_mem_phy_lanes>;
|
||||
phys = <&ufs_mem_phy>;
|
||||
phy-names = "ufsphy";
|
||||
lanes-per-direction = <2>;
|
||||
#reset-cells = <1>;
|
||||
@@ -2169,10 +2169,8 @@
|
||||
|
||||
ufs_mem_phy: phy@1d87000 {
|
||||
compatible = "qcom,sm8250-qmp-ufs-phy";
|
||||
reg = <0 0x01d87000 0 0x1c0>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
reg = <0 0x01d87000 0 0x1000>;
|
||||
|
||||
clock-names = "ref",
|
||||
"ref_aux";
|
||||
clocks = <&rpmhcc RPMH_CXO_CLK>,
|
||||
@@ -2180,16 +2178,12 @@
|
||||
|
||||
resets = <&ufs_mem_hc 0>;
|
||||
reset-names = "ufsphy";
|
||||
status = "disabled";
|
||||
|
||||
ufs_mem_phy_lanes: phy@1d87400 {
|
||||
reg = <0 0x01d87400 0 0x16c>,
|
||||
<0 0x01d87600 0 0x200>,
|
||||
<0 0x01d87c00 0 0x200>,
|
||||
<0 0x01d87800 0 0x16c>,
|
||||
<0 0x01d87a00 0 0x200>;
|
||||
#phy-cells = <0>;
|
||||
};
|
||||
power-domains = <&gcc UFS_PHY_GDSC>;
|
||||
|
||||
#phy-cells = <0>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
ipa_virt: interconnect@1e00000 {
|
||||
|
||||
@@ -3153,6 +3153,8 @@
|
||||
<&gcc GCC_UFS_PHY_PHY_AUX_CLK>,
|
||||
<&gcc GCC_UFS_0_CLKREF_EN>;
|
||||
|
||||
power-domains = <&gcc UFS_PHY_GDSC>;
|
||||
|
||||
resets = <&ufs_mem_hc 0>;
|
||||
reset-names = "ufsphy";
|
||||
status = "disabled";
|
||||
|
||||
@@ -2209,8 +2209,7 @@
|
||||
interrupt-controller;
|
||||
reg = <0x0 0xf1000000 0 0x20000>,
|
||||
<0x0 0xf1060000 0 0x110000>;
|
||||
interrupts = <GIC_PPI 9
|
||||
(GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
fcpvd0: fcp@fea10000 {
|
||||
@@ -2857,9 +2856,12 @@
|
||||
|
||||
timer {
|
||||
compatible = "arm,armv8-timer";
|
||||
interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
interrupts-extended = <&gic GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 12 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "sec-phys", "phys", "virt", "hyp-phys",
|
||||
"hyp-virt";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -935,8 +935,7 @@
|
||||
interrupt-controller;
|
||||
reg = <0x0 0xf1000000 0 0x20000>,
|
||||
<0x0 0xf1060000 0 0x110000>;
|
||||
interrupts = <GIC_PPI 9
|
||||
(GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
prr: chipid@fff00044 {
|
||||
@@ -991,10 +990,13 @@
|
||||
|
||||
timer {
|
||||
compatible = "arm,armv8-timer";
|
||||
interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
interrupts-extended = <&gic GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 12 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "sec-phys", "phys", "virt", "hyp-phys",
|
||||
"hyp-virt";
|
||||
};
|
||||
|
||||
ufs30_clk: ufs30-clk {
|
||||
|
||||
@@ -18,12 +18,80 @@
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu-map {
|
||||
cluster0 {
|
||||
core0 {
|
||||
cpu = <&a76_0>;
|
||||
};
|
||||
core1 {
|
||||
cpu = <&a76_1>;
|
||||
};
|
||||
};
|
||||
|
||||
cluster1 {
|
||||
core0 {
|
||||
cpu = <&a76_2>;
|
||||
};
|
||||
core1 {
|
||||
cpu = <&a76_3>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
a76_0: cpu@0 {
|
||||
compatible = "arm,cortex-a76";
|
||||
reg = <0>;
|
||||
device_type = "cpu";
|
||||
power-domains = <&sysc R8A779G0_PD_A1E0D0C0>;
|
||||
next-level-cache = <&L3_CA76_0>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
|
||||
a76_1: cpu@100 {
|
||||
compatible = "arm,cortex-a76";
|
||||
reg = <0x100>;
|
||||
device_type = "cpu";
|
||||
power-domains = <&sysc R8A779G0_PD_A1E0D0C1>;
|
||||
next-level-cache = <&L3_CA76_0>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
|
||||
a76_2: cpu@10000 {
|
||||
compatible = "arm,cortex-a76";
|
||||
reg = <0x10000>;
|
||||
device_type = "cpu";
|
||||
power-domains = <&sysc R8A779G0_PD_A1E0D1C0>;
|
||||
next-level-cache = <&L3_CA76_1>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
|
||||
a76_3: cpu@10100 {
|
||||
compatible = "arm,cortex-a76";
|
||||
reg = <0x10100>;
|
||||
device_type = "cpu";
|
||||
power-domains = <&sysc R8A779G0_PD_A1E0D1C1>;
|
||||
next-level-cache = <&L3_CA76_1>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
|
||||
L3_CA76_0: cache-controller-0 {
|
||||
compatible = "cache";
|
||||
power-domains = <&sysc R8A779G0_PD_A2E0D0>;
|
||||
cache-unified;
|
||||
cache-level = <3>;
|
||||
};
|
||||
|
||||
L3_CA76_1: cache-controller-1 {
|
||||
compatible = "cache";
|
||||
power-domains = <&sysc R8A779G0_PD_A2E0D1>;
|
||||
cache-unified;
|
||||
cache-level = <3>;
|
||||
};
|
||||
};
|
||||
|
||||
psci {
|
||||
compatible = "arm,psci-1.0", "arm,psci-0.2";
|
||||
method = "smc";
|
||||
};
|
||||
|
||||
extal_clk: extal {
|
||||
@@ -482,8 +550,7 @@
|
||||
interrupt-controller;
|
||||
reg = <0x0 0xf1000000 0 0x20000>,
|
||||
<0x0 0xf1060000 0 0x110000>;
|
||||
interrupts = <GIC_PPI 9
|
||||
(GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
prr: chipid@fff00044 {
|
||||
@@ -494,9 +561,12 @@
|
||||
|
||||
timer {
|
||||
compatible = "arm,armv8-timer";
|
||||
interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
interrupts-extended = <&gic GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 12 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "sec-phys", "phys", "virt", "hyp-phys",
|
||||
"hyp-virt";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -41,10 +41,13 @@
|
||||
|
||||
timer {
|
||||
compatible = "arm,armv8-timer";
|
||||
interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
interrupts-extended = <&gic GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 12 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "sec-phys", "phys", "virt", "hyp-phys",
|
||||
"hyp-virt";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -1091,9 +1091,12 @@
|
||||
|
||||
timer {
|
||||
compatible = "arm,armv8-timer";
|
||||
interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
interrupts-extended = <&gic GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 12 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "sec-phys", "phys", "virt", "hyp-phys",
|
||||
"hyp-virt";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -15,13 +15,6 @@
|
||||
/delete-node/ cpu-map;
|
||||
/delete-node/ cpu@100;
|
||||
};
|
||||
|
||||
timer {
|
||||
interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
};
|
||||
};
|
||||
|
||||
&soc {
|
||||
|
||||
@@ -15,11 +15,4 @@
|
||||
/delete-node/ cpu-map;
|
||||
/delete-node/ cpu@100;
|
||||
};
|
||||
|
||||
timer {
|
||||
interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1097,9 +1097,12 @@
|
||||
|
||||
timer {
|
||||
compatible = "arm,armv8-timer";
|
||||
interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
interrupts-extended = <&gic GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>,
|
||||
<&gic GIC_PPI 12 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "sec-phys", "phys", "virt", "hyp-phys",
|
||||
"hyp-virt";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -15,11 +15,4 @@
|
||||
/delete-node/ cpu-map;
|
||||
/delete-node/ cpu@100;
|
||||
};
|
||||
|
||||
timer {
|
||||
interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
ethernet0 = &gmac;
|
||||
mmc0 = &emmc;
|
||||
mmc1 = &sdmmc;
|
||||
mmc2 = &sdio;
|
||||
};
|
||||
|
||||
chosen {
|
||||
@@ -145,11 +146,25 @@
|
||||
|
||||
&gmac {
|
||||
clock_in_out = "output";
|
||||
phy-handle = <&rtl8201f>;
|
||||
phy-supply = <&vcc_io>;
|
||||
snps,reset-gpio = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
|
||||
snps,reset-active-low;
|
||||
snps,reset-delays-us = <0 50000 50000>;
|
||||
status = "okay";
|
||||
|
||||
mdio {
|
||||
compatible = "snps,dwmac-mdio";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
rtl8201f: ethernet-phy@1 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mac_rst>;
|
||||
reset-assert-us = <20000>;
|
||||
reset-deassert-us = <50000>;
|
||||
reset-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
@@ -160,6 +175,26 @@
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&rtc_32k>;
|
||||
|
||||
bluetooth {
|
||||
bt_reg_on: bt-reg-on {
|
||||
rockchip,pins = <4 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
bt_wake_host: bt-wake-host {
|
||||
rockchip,pins = <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
};
|
||||
|
||||
host_wake_bt: host-wake-bt {
|
||||
rockchip,pins = <4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
gmac {
|
||||
mac_rst: mac-rst {
|
||||
rockchip,pins = <0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
green_led: green-led {
|
||||
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
@@ -203,15 +238,31 @@
|
||||
cap-sd-highspeed;
|
||||
cap-sdio-irq;
|
||||
keep-power-in-suspend;
|
||||
max-frequency = <1000000>;
|
||||
max-frequency = <100000000>;
|
||||
mmc-pwrseq = <&sdio_pwrseq>;
|
||||
no-mmc;
|
||||
no-sd;
|
||||
non-removable;
|
||||
sd-uhs-sdr104;
|
||||
sd-uhs-sdr50;
|
||||
vmmc-supply = <&vcc_io>;
|
||||
vqmmc-supply = <&vcc_1v8>;
|
||||
status = "okay";
|
||||
|
||||
rtl8723ds: wifi@1 {
|
||||
reg = <1>;
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <RK_PA0 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "host-wake";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&wifi_host_wake>;
|
||||
};
|
||||
};
|
||||
|
||||
&sdmmc {
|
||||
cap-mmc-highspeed;
|
||||
cap-sd-highspeed;
|
||||
disable-wp;
|
||||
vmmc-supply = <&vcc_io>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@@ -230,16 +281,22 @@
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_xfer>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart4 {
|
||||
uart-has-rtscts;
|
||||
status = "okay";
|
||||
|
||||
bluetooth {
|
||||
compatible = "realtek,rtl8723bs-bt";
|
||||
device-wake-gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_HIGH>;
|
||||
compatible = "realtek,rtl8723ds-bt";
|
||||
device-wake-gpios = <&gpio4 RK_PB2 GPIO_ACTIVE_HIGH>;
|
||||
enable-gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_HIGH>;
|
||||
host-wake-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&bt_reg_on &bt_wake_host &host_wake_bt>;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -332,7 +332,7 @@
|
||||
|
||||
pmic {
|
||||
pmic_int_l: pmic-int-l {
|
||||
rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -820,8 +820,8 @@
|
||||
<0>, <24000000>,
|
||||
<24000000>, <24000000>,
|
||||
<15000000>, <15000000>,
|
||||
<100000000>, <100000000>,
|
||||
<100000000>, <100000000>,
|
||||
<300000000>, <100000000>,
|
||||
<400000000>, <100000000>,
|
||||
<50000000>, <100000000>,
|
||||
<100000000>, <100000000>,
|
||||
<50000000>, <50000000>,
|
||||
|
||||
@@ -119,6 +119,22 @@
|
||||
drive-impedance-ohm = <33>;
|
||||
};
|
||||
|
||||
&gpio3 {
|
||||
/*
|
||||
* The Qseven BIOS_DISABLE signal on the RK3399-Q7 keeps the on-module
|
||||
* eMMC and SPI flash powered-down initially (in fact it keeps the
|
||||
* reset signal asserted). BIOS_DISABLE_OVERRIDE pin allows to override
|
||||
* that signal so that eMMC and SPI can be used regardless of the state
|
||||
* of the signal.
|
||||
*/
|
||||
bios-disable-override-hog {
|
||||
gpios = <RK_PD5 GPIO_ACTIVE_LOW>;
|
||||
gpio-hog;
|
||||
line-name = "bios_disable_override";
|
||||
output-high;
|
||||
};
|
||||
};
|
||||
|
||||
&gmac {
|
||||
assigned-clocks = <&cru SCLK_RMII_SRC>;
|
||||
assigned-clock-parents = <&clkin_gmac>;
|
||||
@@ -374,6 +390,7 @@
|
||||
|
||||
&i2s0 {
|
||||
pinctrl-0 = <&i2s0_2ch_bus>;
|
||||
pinctrl-1 = <&i2s0_2ch_bus_bclk_off>;
|
||||
rockchip,playback-channels = <2>;
|
||||
rockchip,capture-channels = <2>;
|
||||
status = "okay";
|
||||
@@ -382,8 +399,8 @@
|
||||
/*
|
||||
* As Q7 does not specify neither a global nor a RX clock for I2S these
|
||||
* signals are not used. Furthermore I2S0_LRCK_RX is used as GPIO.
|
||||
* Therefore we have to redefine the i2s0_2ch_bus definition to prevent
|
||||
* conflicts.
|
||||
* Therefore we have to redefine the i2s0_2ch_bus and i2s0_2ch_bus_bclk_off
|
||||
* definitions to prevent conflicts.
|
||||
*/
|
||||
&i2s0_2ch_bus {
|
||||
rockchip,pins =
|
||||
@@ -393,6 +410,14 @@
|
||||
<3 RK_PD7 1 &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
&i2s0_2ch_bus_bclk_off {
|
||||
rockchip,pins =
|
||||
<3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>,
|
||||
<3 RK_PD2 1 &pcfg_pull_none>,
|
||||
<3 RK_PD3 1 &pcfg_pull_none>,
|
||||
<3 RK_PD7 1 &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
&io_domains {
|
||||
status = "okay";
|
||||
bt656-supply = <&vcc_1v8>;
|
||||
@@ -408,9 +433,14 @@
|
||||
|
||||
&pinctrl {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&q7_thermal_pin>;
|
||||
pinctrl-0 = <&q7_thermal_pin &bios_disable_override_hog_pin>;
|
||||
|
||||
gpios {
|
||||
bios_disable_override_hog_pin: bios-disable-override-hog-pin {
|
||||
rockchip,pins =
|
||||
<3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
};
|
||||
|
||||
q7_thermal_pin: q7-thermal-pin {
|
||||
rockchip,pins =
|
||||
<0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
|
||||
@@ -478,7 +478,7 @@
|
||||
};
|
||||
|
||||
codec {
|
||||
mic-in-differential;
|
||||
rockchip,mic-in-differential;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -481,10 +481,6 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
codec {
|
||||
mic-in-differential;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -737,6 +737,7 @@
|
||||
clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>;
|
||||
clock-names = "aclk", "iface";
|
||||
#iommu-cells = <0>;
|
||||
power-domains = <&power RK3568_PD_VO>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
||||
@@ -97,6 +97,18 @@ static inline u32 get_acpi_id_for_cpu(unsigned int cpu)
|
||||
return acpi_cpu_get_madt_gicc(cpu)->uid;
|
||||
}
|
||||
|
||||
static inline int get_cpu_for_acpi_id(u32 uid)
|
||||
{
|
||||
int cpu;
|
||||
|
||||
for (cpu = 0; cpu < nr_cpu_ids; cpu++)
|
||||
if (acpi_cpu_get_madt_gicc(cpu) &&
|
||||
uid == get_acpi_id_for_cpu(cpu))
|
||||
return cpu;
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline void arch_fix_phys_package_id(int num, u32 slot) { }
|
||||
void __init acpi_init_cpus(void);
|
||||
int apei_claim_sea(struct pt_regs *regs);
|
||||
|
||||
@@ -85,9 +85,14 @@
|
||||
#define ARM_CPU_PART_CORTEX_X2 0xD48
|
||||
#define ARM_CPU_PART_NEOVERSE_N2 0xD49
|
||||
#define ARM_CPU_PART_CORTEX_A78C 0xD4B
|
||||
#define ARM_CPU_PART_CORTEX_X1C 0xD4C
|
||||
#define ARM_CPU_PART_CORTEX_X3 0xD4E
|
||||
#define ARM_CPU_PART_NEOVERSE_V2 0xD4F
|
||||
#define ARM_CPU_PART_CORTEX_A720 0xD81
|
||||
#define ARM_CPU_PART_CORTEX_X4 0xD82
|
||||
#define ARM_CPU_PART_NEOVERSE_V3 0xD84
|
||||
#define ARM_CPU_PART_CORTEX_X925 0xD85
|
||||
#define ARM_CPU_PART_CORTEX_A725 0xD87
|
||||
|
||||
#define APM_CPU_PART_XGENE 0x000
|
||||
#define APM_CPU_VAR_POTENZA 0x00
|
||||
@@ -154,9 +159,14 @@
|
||||
#define MIDR_CORTEX_X2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X2)
|
||||
#define MIDR_NEOVERSE_N2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_N2)
|
||||
#define MIDR_CORTEX_A78C MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78C)
|
||||
#define MIDR_CORTEX_X1C MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X1C)
|
||||
#define MIDR_CORTEX_X3 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X3)
|
||||
#define MIDR_NEOVERSE_V2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V2)
|
||||
#define MIDR_CORTEX_A720 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A720)
|
||||
#define MIDR_CORTEX_X4 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X4)
|
||||
#define MIDR_NEOVERSE_V3 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V3)
|
||||
#define MIDR_CORTEX_X925 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X925)
|
||||
#define MIDR_CORTEX_A725 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A725)
|
||||
#define MIDR_THUNDERX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX)
|
||||
#define MIDR_THUNDERX_81XX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX_81XX)
|
||||
#define MIDR_THUNDERX_83XX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX_83XX)
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <linux/types.h>
|
||||
#include <asm/insn.h>
|
||||
|
||||
#define HAVE_JUMP_LABEL_BATCH
|
||||
#define JUMP_LABEL_NOP_SIZE AARCH64_INSN_SIZE
|
||||
|
||||
static __always_inline bool arch_static_branch(struct static_key *key,
|
||||
|
||||
@@ -27,24 +27,13 @@
|
||||
|
||||
#include <asm/numa.h>
|
||||
|
||||
static int acpi_early_node_map[NR_CPUS] __initdata = { NUMA_NO_NODE };
|
||||
static int acpi_early_node_map[NR_CPUS] __initdata = { [0 ... NR_CPUS - 1] = NUMA_NO_NODE };
|
||||
|
||||
int __init acpi_numa_get_nid(unsigned int cpu)
|
||||
{
|
||||
return acpi_early_node_map[cpu];
|
||||
}
|
||||
|
||||
static inline int get_cpu_for_acpi_id(u32 uid)
|
||||
{
|
||||
int cpu;
|
||||
|
||||
for (cpu = 0; cpu < nr_cpu_ids; cpu++)
|
||||
if (uid == get_acpi_id_for_cpu(cpu))
|
||||
return cpu;
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int __init acpi_parse_gicc_pxm(union acpi_subtable_headers *header,
|
||||
const unsigned long end)
|
||||
{
|
||||
|
||||
@@ -435,6 +435,30 @@ static struct midr_range broken_aarch32_aes[] = {
|
||||
};
|
||||
#endif /* CONFIG_ARM64_WORKAROUND_TRBE_WRITE_OUT_OF_RANGE */
|
||||
|
||||
#ifdef CONFIG_ARM64_ERRATUM_3194386
|
||||
static const struct midr_range erratum_spec_ssbs_list[] = {
|
||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_A76),
|
||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_A77),
|
||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_A78),
|
||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_A78C),
|
||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_A710),
|
||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_A720),
|
||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_A725),
|
||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_X1),
|
||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_X1C),
|
||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_X2),
|
||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_X3),
|
||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_X4),
|
||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_X925),
|
||||
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N1),
|
||||
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N2),
|
||||
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V1),
|
||||
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V2),
|
||||
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V3),
|
||||
{}
|
||||
};
|
||||
#endif
|
||||
|
||||
const struct arm64_cpu_capabilities arm64_errata[] = {
|
||||
#ifdef CONFIG_ARM64_WORKAROUND_CLEAN_CACHE
|
||||
{
|
||||
@@ -726,6 +750,13 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
|
||||
.cpu_enable = cpu_clear_bf16_from_user_emulation,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_ARM64_ERRATUM_3194386
|
||||
{
|
||||
.desc = "SSBS not fully self-synchronizing",
|
||||
.capability = ARM64_WORKAROUND_SPECULATIVE_SSBS,
|
||||
ERRATA_MIDR_RANGE_LIST(erratum_spec_ssbs_list),
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_ARM64_WORKAROUND_SPECULATIVE_UNPRIV_LOAD
|
||||
{
|
||||
.desc = "ARM erratum 2966298",
|
||||
|
||||
@@ -2085,6 +2085,17 @@ static void cpu_enable_mte(struct arm64_cpu_capabilities const *cap)
|
||||
}
|
||||
#endif /* CONFIG_ARM64_MTE */
|
||||
|
||||
static void user_feature_fixup(void)
|
||||
{
|
||||
if (cpus_have_cap(ARM64_WORKAROUND_SPECULATIVE_SSBS)) {
|
||||
struct arm64_ftr_reg *regp;
|
||||
|
||||
regp = get_arm64_ftr_reg(SYS_ID_AA64PFR1_EL1);
|
||||
if (regp)
|
||||
regp->user_mask &= ~ID_AA64PFR1_EL1_SSBS_MASK;
|
||||
}
|
||||
}
|
||||
|
||||
static void elf_hwcap_fixup(void)
|
||||
{
|
||||
#ifdef CONFIG_ARM64_ERRATUM_1742098
|
||||
@@ -3285,6 +3296,7 @@ void __init setup_cpu_features(void)
|
||||
u32 cwg;
|
||||
|
||||
setup_system_capabilities();
|
||||
user_feature_fixup();
|
||||
setup_elf_hwcaps(arm64_elf_hwcaps);
|
||||
|
||||
if (system_supports_32bit_el0()) {
|
||||
|
||||
@@ -7,11 +7,12 @@
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/jump_label.h>
|
||||
#include <linux/smp.h>
|
||||
#include <asm/insn.h>
|
||||
#include <asm/patching.h>
|
||||
|
||||
void arch_jump_label_transform(struct jump_entry *entry,
|
||||
enum jump_label_type type)
|
||||
bool arch_jump_label_transform_queue(struct jump_entry *entry,
|
||||
enum jump_label_type type)
|
||||
{
|
||||
void *addr = (void *)jump_entry_code(entry);
|
||||
u32 insn;
|
||||
@@ -25,4 +26,10 @@ void arch_jump_label_transform(struct jump_entry *entry,
|
||||
}
|
||||
|
||||
aarch64_insn_patch_text_nosync(addr, insn);
|
||||
return true;
|
||||
}
|
||||
|
||||
void arch_jump_label_transform_apply(void)
|
||||
{
|
||||
kick_all_cpus_sync();
|
||||
}
|
||||
|
||||
@@ -570,6 +570,18 @@ static enum mitigation_state spectre_v4_enable_hw_mitigation(void)
|
||||
|
||||
/* SCTLR_EL1.DSSBS was initialised to 0 during boot */
|
||||
set_pstate_ssbs(0);
|
||||
|
||||
/*
|
||||
* SSBS is self-synchronizing and is intended to affect subsequent
|
||||
* speculative instructions, but some CPUs can speculate with a stale
|
||||
* value of SSBS.
|
||||
*
|
||||
* Mitigate this with an unconditional speculation barrier, as CPUs
|
||||
* could mis-speculate branches and bypass a conditional barrier.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_ARM64_ERRATUM_3194386))
|
||||
spec_bar();
|
||||
|
||||
return SPECTRE_MITIGATED;
|
||||
}
|
||||
|
||||
|
||||
@@ -367,9 +367,6 @@ void __init __no_sanitize_address setup_arch(char **cmdline_p)
|
||||
smp_init_cpus();
|
||||
smp_build_mpidr_hash();
|
||||
|
||||
/* Init percpu seeds for random tags after cpus are set up. */
|
||||
kasan_init_sw_tags();
|
||||
|
||||
#ifdef CONFIG_ARM64_SW_TTBR0_PAN
|
||||
/*
|
||||
* Make sure init_thread_info.ttbr0 always generates translation
|
||||
|
||||
@@ -469,6 +469,8 @@ void __init smp_prepare_boot_cpu(void)
|
||||
init_gic_priority_masking();
|
||||
|
||||
kasan_init_hw_tags();
|
||||
/* Init percpu seeds for random tags after cpus are set up. */
|
||||
kasan_init_sw_tags();
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include <trace/events/kvm.h>
|
||||
|
||||
#include "sys_regs.h"
|
||||
#include "vgic/vgic.h"
|
||||
|
||||
#include "trace.h"
|
||||
|
||||
@@ -180,6 +181,11 @@ static bool access_gic_sgi(struct kvm_vcpu *vcpu,
|
||||
{
|
||||
bool g1;
|
||||
|
||||
if (!kvm_has_gicv3(vcpu->kvm)) {
|
||||
kvm_inject_undefined(vcpu);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!p->is_write)
|
||||
return read_from_write_only(vcpu, p, r);
|
||||
|
||||
|
||||
@@ -343,4 +343,11 @@ void vgic_v4_configure_vsgis(struct kvm *kvm);
|
||||
void vgic_v4_get_vlpi_state(struct vgic_irq *irq, bool *val);
|
||||
int vgic_v4_request_vpe_irq(struct kvm_vcpu *vcpu, int irq);
|
||||
|
||||
static inline bool kvm_has_gicv3(struct kvm *kvm)
|
||||
{
|
||||
return (static_branch_unlikely(&kvm_vgic_global_state.gicv3_cpuif) &&
|
||||
irqchip_in_kernel(kvm) &&
|
||||
kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -87,7 +87,7 @@ WORKAROUND_QCOM_FALKOR_E1003
|
||||
WORKAROUND_REPEAT_TLBI
|
||||
WORKAROUND_SPECULATIVE_AT
|
||||
WORKAROUND_SPECULATIVE_UNPRIV_LOAD
|
||||
ANDROID_KABI_RESERVE_02
|
||||
WORKAROUND_SPECULATIVE_SSBS
|
||||
ANDROID_KABI_RESERVE_03
|
||||
ANDROID_KABI_RESERVE_04
|
||||
ANDROID_KABI_RESERVE_05
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (C) 2020-2022 Loongson Technology Corporation Limited
|
||||
*/
|
||||
#ifndef _LOONGARCH_DMA_DIRECT_H
|
||||
#define _LOONGARCH_DMA_DIRECT_H
|
||||
|
||||
dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr);
|
||||
phys_addr_t dma_to_phys(struct device *dev, dma_addr_t daddr);
|
||||
|
||||
#endif /* _LOONGARCH_DMA_DIRECT_H */
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
extern atomic_t irq_err_count;
|
||||
|
||||
#define ARCH_IRQ_INIT_FLAGS IRQ_NOPROBE
|
||||
|
||||
/*
|
||||
* interrupt-retrigger: NOP for now. This may not be appropriate for all
|
||||
* machines, we'll see ...
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#define __ARCH_WANT_NEW_STAT
|
||||
#define __ARCH_WANT_SYS_CLONE
|
||||
#define __ARCH_WANT_SYS_CLONE3
|
||||
|
||||
|
||||
@@ -122,9 +122,6 @@ void __init init_IRQ(void)
|
||||
panic("IPI IRQ request failed\n");
|
||||
#endif
|
||||
|
||||
for (i = 0; i < NR_IRQS; i++)
|
||||
irq_set_noprobe(i);
|
||||
|
||||
for_each_possible_cpu(i) {
|
||||
page = alloc_pages_node(cpu_to_node(i), GFP_KERNEL, order);
|
||||
|
||||
|
||||
@@ -180,6 +180,15 @@ int __init amiga_parse_bootinfo(const struct bi_record *record)
|
||||
dev->slotsize = be16_to_cpu(cd->cd_SlotSize);
|
||||
dev->boardaddr = be32_to_cpu(cd->cd_BoardAddr);
|
||||
dev->boardsize = be32_to_cpu(cd->cd_BoardSize);
|
||||
|
||||
/* CS-LAB Warp 1260 workaround */
|
||||
if (be16_to_cpu(dev->rom.er_Manufacturer) == ZORRO_MANUF(ZORRO_PROD_CSLAB_WARP_1260) &&
|
||||
dev->rom.er_Product == ZORRO_PROD(ZORRO_PROD_CSLAB_WARP_1260)) {
|
||||
|
||||
/* turn off all interrupts */
|
||||
pr_info("Warp 1260 card detected: applying interrupt storm workaround\n");
|
||||
*(uint32_t *)(dev->boardaddr + 0x1000) = 0xfff;
|
||||
}
|
||||
} else
|
||||
pr_warn("amiga_parse_bootinfo: too many AutoConfig devices\n");
|
||||
#endif /* CONFIG_ZORRO */
|
||||
|
||||
@@ -302,11 +302,7 @@ void __init atari_init_IRQ(void)
|
||||
|
||||
if (ATARIHW_PRESENT(SCU)) {
|
||||
/* init the SCU if present */
|
||||
tt_scu.sys_mask = 0x10; /* enable VBL (for the cursor) and
|
||||
* disable HSYNC interrupts (who
|
||||
* needs them?) MFP and SCC are
|
||||
* enabled in VME mask
|
||||
*/
|
||||
tt_scu.sys_mask = 0x0; /* disable all interrupts */
|
||||
tt_scu.vme_mask = 0x60; /* enable MFP and SCC ints */
|
||||
} else {
|
||||
/* If no SCU and no Hades, the HSYNC interrupt needs to be
|
||||
|
||||
@@ -32,7 +32,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz
|
||||
x = tmp;
|
||||
break;
|
||||
default:
|
||||
tmp = __invalid_xchg_size(x, ptr, size);
|
||||
x = __invalid_xchg_size(x, ptr, size);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -193,11 +193,6 @@ asmlinkage void __init mmu_init(void)
|
||||
{
|
||||
unsigned int kstart, ksize;
|
||||
|
||||
if (!memblock.reserved.cnt) {
|
||||
pr_emerg("Error memory count\n");
|
||||
machine_restart(NULL);
|
||||
}
|
||||
|
||||
if ((u32) memblock.memory.regions[0].size < 0x400000) {
|
||||
pr_emerg("Memory must be greater than 4MB\n");
|
||||
machine_restart(NULL);
|
||||
|
||||
@@ -23,14 +23,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
memory@200000 {
|
||||
compatible = "memory";
|
||||
device_type = "memory";
|
||||
reg = <0x00000000 0x00200000 0x00000000 0x0ee00000>, /* 238 MB at 2 MB */
|
||||
<0x00000000 0x20000000 0x00000000 0x1f000000>, /* 496 MB at 512 MB */
|
||||
<0x00000001 0x10000000 0x00000001 0xb0000000>; /* 6912 MB at 4352MB */
|
||||
};
|
||||
|
||||
cpu_clk: cpu_clk {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
@@ -52,6 +44,13 @@
|
||||
0 0x40000000 0 0x40000000 0 0x40000000
|
||||
0xfe 0x00000000 0xfe 0x00000000 0 0x40000000>;
|
||||
|
||||
isa@18000000 {
|
||||
compatible = "isa";
|
||||
#size-cells = <1>;
|
||||
#address-cells = <2>;
|
||||
ranges = <1 0x0 0x0 0x18000000 0x4000>;
|
||||
};
|
||||
|
||||
pm: reset-controller@1fe07000 {
|
||||
compatible = "loongson,ls2k-pm";
|
||||
reg = <0 0x1fe07000 0 0x422>;
|
||||
@@ -97,12 +96,19 @@
|
||||
<0x00000000>; /* int3 */
|
||||
};
|
||||
|
||||
rtc0: rtc@1fe07800 {
|
||||
compatible = "loongson,ls2k1000-rtc";
|
||||
reg = <0 0x1fe07800 0 0x78>;
|
||||
interrupt-parent = <&liointc1>;
|
||||
interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
uart0: serial@1fe00000 {
|
||||
compatible = "ns16550a";
|
||||
reg = <0 0x1fe00000 0 0x8>;
|
||||
clock-frequency = <125000000>;
|
||||
interrupt-parent = <&liointc0>;
|
||||
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
|
||||
no-loopback-test;
|
||||
};
|
||||
|
||||
@@ -111,7 +117,6 @@
|
||||
device_type = "pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
reg = <0 0x1a000000 0 0x02000000>,
|
||||
<0xfe 0x00000000 0 0x20000000>;
|
||||
@@ -126,11 +131,12 @@
|
||||
"pciclass0c03";
|
||||
|
||||
reg = <0x1800 0x0 0x0 0x0 0x0>;
|
||||
interrupts = <12 IRQ_TYPE_LEVEL_LOW>,
|
||||
<13 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupts = <12 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<13 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "macirq", "eth_lpi";
|
||||
interrupt-parent = <&liointc0>;
|
||||
phy-mode = "rgmii";
|
||||
phy-mode = "rgmii-id";
|
||||
phy-handle = <&phy1>;
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
@@ -149,11 +155,12 @@
|
||||
"loongson, pci-gmac";
|
||||
|
||||
reg = <0x1900 0x0 0x0 0x0 0x0>;
|
||||
interrupts = <14 IRQ_TYPE_LEVEL_LOW>,
|
||||
<15 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<15 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "macirq", "eth_lpi";
|
||||
interrupt-parent = <&liointc0>;
|
||||
phy-mode = "rgmii";
|
||||
phy-mode = "rgmii-id";
|
||||
phy-handle = <&phy1>;
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
@@ -171,7 +178,7 @@
|
||||
"pciclass0c03";
|
||||
|
||||
reg = <0x2100 0x0 0x0 0x0 0x0>;
|
||||
interrupts = <18 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupts = <18 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&liointc1>;
|
||||
};
|
||||
|
||||
@@ -182,7 +189,7 @@
|
||||
"pciclass0c03";
|
||||
|
||||
reg = <0x2200 0x0 0x0 0x0 0x0>;
|
||||
interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&liointc1>;
|
||||
};
|
||||
|
||||
@@ -193,97 +200,121 @@
|
||||
"pciclass0106";
|
||||
|
||||
reg = <0x4000 0x0 0x0 0x0 0x0>;
|
||||
interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&liointc0>;
|
||||
};
|
||||
|
||||
pci_bridge@9,0 {
|
||||
pcie@9,0 {
|
||||
compatible = "pci0014,7a19.0",
|
||||
"pci0014,7a19",
|
||||
"pciclass060400",
|
||||
"pciclass0604";
|
||||
|
||||
reg = <0x4800 0x0 0x0 0x0 0x0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&liointc1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &liointc1 0 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-map = <0 0 0 0 &liointc1 0 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
external-facing;
|
||||
};
|
||||
|
||||
pci_bridge@a,0 {
|
||||
pcie@a,0 {
|
||||
compatible = "pci0014,7a09.0",
|
||||
"pci0014,7a09",
|
||||
"pciclass060400",
|
||||
"pciclass0604";
|
||||
|
||||
reg = <0x5000 0x0 0x0 0x0 0x0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&liointc1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &liointc1 1 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-map = <0 0 0 0 &liointc1 1 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
external-facing;
|
||||
};
|
||||
|
||||
pci_bridge@b,0 {
|
||||
pcie@b,0 {
|
||||
compatible = "pci0014,7a09.0",
|
||||
"pci0014,7a09",
|
||||
"pciclass060400",
|
||||
"pciclass0604";
|
||||
|
||||
reg = <0x5800 0x0 0x0 0x0 0x0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&liointc1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &liointc1 2 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-map = <0 0 0 0 &liointc1 2 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
external-facing;
|
||||
};
|
||||
|
||||
pci_bridge@c,0 {
|
||||
pcie@c,0 {
|
||||
compatible = "pci0014,7a09.0",
|
||||
"pci0014,7a09",
|
||||
"pciclass060400",
|
||||
"pciclass0604";
|
||||
|
||||
reg = <0x6000 0x0 0x0 0x0 0x0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&liointc1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &liointc1 3 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-map = <0 0 0 0 &liointc1 3 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
external-facing;
|
||||
};
|
||||
|
||||
pci_bridge@d,0 {
|
||||
pcie@d,0 {
|
||||
compatible = "pci0014,7a19.0",
|
||||
"pci0014,7a19",
|
||||
"pciclass060400",
|
||||
"pciclass0604";
|
||||
|
||||
reg = <0x6800 0x0 0x0 0x0 0x0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&liointc1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &liointc1 4 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-map = <0 0 0 0 &liointc1 4 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
external-facing;
|
||||
};
|
||||
|
||||
pci_bridge@e,0 {
|
||||
pcie@e,0 {
|
||||
compatible = "pci0014,7a09.0",
|
||||
"pci0014,7a09",
|
||||
"pciclass060400",
|
||||
"pciclass0604";
|
||||
|
||||
reg = <0x7000 0x0 0x0 0x0 0x0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&liointc1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &liointc1 5 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-map = <0 0 0 0 &liointc1 5 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ranges;
|
||||
external-facing;
|
||||
};
|
||||
|
||||
|
||||
@@ -42,12 +42,14 @@ enum loongson_cpu_type {
|
||||
Legacy_1B = 0x5,
|
||||
Legacy_2G = 0x6,
|
||||
Legacy_2H = 0x7,
|
||||
Legacy_2K = 0x8,
|
||||
Loongson_1A = 0x100,
|
||||
Loongson_1B = 0x101,
|
||||
Loongson_2E = 0x200,
|
||||
Loongson_2F = 0x201,
|
||||
Loongson_2G = 0x202,
|
||||
Loongson_2H = 0x203,
|
||||
Loongson_2K = 0x204,
|
||||
Loongson_3A = 0x300,
|
||||
Loongson_3B = 0x301
|
||||
};
|
||||
|
||||
@@ -228,6 +228,10 @@ GCR_ACCESSOR_RO(32, 0x0d0, gic_status)
|
||||
GCR_ACCESSOR_RO(32, 0x0f0, cpc_status)
|
||||
#define CM_GCR_CPC_STATUS_EX BIT(0)
|
||||
|
||||
/* GCR_ACCESS - Controls core/IOCU access to GCRs */
|
||||
GCR_ACCESSOR_RW(32, 0x120, access_cm3)
|
||||
#define CM_GCR_ACCESS_ACCESSEN GENMASK(7, 0)
|
||||
|
||||
/* GCR_L2_CONFIG - Indicates L2 cache configuration when Config5.L2C=1 */
|
||||
GCR_ACCESSOR_RW(32, 0x130, l2_config)
|
||||
#define CM_GCR_L2_CONFIG_BYPASS BIT(20)
|
||||
|
||||
@@ -303,13 +303,6 @@ int r4k_clockevent_init(void)
|
||||
if (!c0_compare_int_usable())
|
||||
return -ENXIO;
|
||||
|
||||
/*
|
||||
* With vectored interrupts things are getting platform specific.
|
||||
* get_c0_compare_int is a hook to allow a platform to return the
|
||||
* interrupt number of its liking.
|
||||
*/
|
||||
irq = get_c0_compare_int();
|
||||
|
||||
cd = &per_cpu(mips_clockevent_device, cpu);
|
||||
|
||||
cd->name = "MIPS";
|
||||
@@ -320,7 +313,6 @@ int r4k_clockevent_init(void)
|
||||
min_delta = calculate_min_delta();
|
||||
|
||||
cd->rating = 300;
|
||||
cd->irq = irq;
|
||||
cd->cpumask = cpumask_of(cpu);
|
||||
cd->set_next_event = mips_next_event;
|
||||
cd->event_handler = mips_event_handler;
|
||||
@@ -332,6 +324,13 @@ int r4k_clockevent_init(void)
|
||||
|
||||
cp0_timer_irq_installed = 1;
|
||||
|
||||
/*
|
||||
* With vectored interrupts things are getting platform specific.
|
||||
* get_c0_compare_int is a hook to allow a platform to return the
|
||||
* interrupt number of its liking.
|
||||
*/
|
||||
irq = get_c0_compare_int();
|
||||
|
||||
if (request_irq(irq, c0_compare_interrupt, flags, "timer",
|
||||
c0_compare_interrupt))
|
||||
pr_err("Failed to request irq %d (timer)\n", irq);
|
||||
|
||||
@@ -1723,12 +1723,16 @@ static inline void cpu_probe_loongson(struct cpuinfo_mips *c, unsigned int cpu)
|
||||
c->ases |= (MIPS_ASE_LOONGSON_MMI | MIPS_ASE_LOONGSON_CAM |
|
||||
MIPS_ASE_LOONGSON_EXT | MIPS_ASE_LOONGSON_EXT2);
|
||||
c->ases &= ~MIPS_ASE_VZ; /* VZ of Loongson-3A2000/3000 is incomplete */
|
||||
change_c0_config6(LOONGSON_CONF6_EXTIMER | LOONGSON_CONF6_INTIMER,
|
||||
LOONGSON_CONF6_INTIMER);
|
||||
break;
|
||||
case PRID_IMP_LOONGSON_64G:
|
||||
__cpu_name[cpu] = "ICT Loongson-3";
|
||||
set_elf_platform(cpu, "loongson3a");
|
||||
set_isa(c, MIPS_CPU_ISA_M64R2);
|
||||
decode_cpucfg(c);
|
||||
change_c0_config6(LOONGSON_CONF6_EXTIMER | LOONGSON_CONF6_INTIMER,
|
||||
LOONGSON_CONF6_INTIMER);
|
||||
break;
|
||||
default:
|
||||
panic("Unknown Loongson Processor ID!");
|
||||
|
||||
@@ -230,7 +230,10 @@ static void boot_core(unsigned int core, unsigned int vpe_id)
|
||||
write_gcr_co_reset_ext_base(CM_GCR_Cx_RESET_EXT_BASE_UEB);
|
||||
|
||||
/* Ensure the core can access the GCRs */
|
||||
set_gcr_access(1 << core);
|
||||
if (mips_cm_revision() < CM_REV_CM3)
|
||||
set_gcr_access(1 << core);
|
||||
else
|
||||
set_gcr_access_cm3(1 << core);
|
||||
|
||||
if (mips_cpc_present()) {
|
||||
/* Reset the core */
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
17 o32 break sys_ni_syscall
|
||||
# 18 was sys_stat
|
||||
18 o32 unused18 sys_ni_syscall
|
||||
19 o32 lseek sys_lseek
|
||||
19 o32 lseek sys_lseek compat_sys_lseek
|
||||
20 o32 getpid sys_getpid
|
||||
21 o32 mount sys_mount
|
||||
22 o32 umount sys_oldumount
|
||||
|
||||
@@ -88,6 +88,12 @@ void __init prom_lefi_init_env(void)
|
||||
cpu_clock_freq = ecpu->cpu_clock_freq;
|
||||
loongson_sysconf.cputype = ecpu->cputype;
|
||||
switch (ecpu->cputype) {
|
||||
case Legacy_2K:
|
||||
case Loongson_2K:
|
||||
smp_group[0] = 0x900000001fe11000;
|
||||
loongson_sysconf.cores_per_node = 2;
|
||||
loongson_sysconf.cores_per_package = 2;
|
||||
break;
|
||||
case Legacy_3A:
|
||||
case Loongson_3A:
|
||||
loongson_sysconf.cores_per_node = 4;
|
||||
@@ -221,6 +227,8 @@ void __init prom_lefi_init_env(void)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if ((read_c0_prid() & PRID_IMP_MASK) == PRID_IMP_LOONGSON_64R) {
|
||||
loongson_fdt_blob = __dtb_loongson64_2core_2k1000_begin;
|
||||
} else if ((read_c0_prid() & PRID_IMP_MASK) == PRID_IMP_LOONGSON_64G) {
|
||||
if (loongson_sysconf.bridgetype == LS7A)
|
||||
loongson_fdt_blob = __dtb_loongson64g_4core_ls7a_begin;
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/kexec.h>
|
||||
#include <linux/pm.h>
|
||||
#include <linux/reboot.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#include <asm/bootinfo.h>
|
||||
@@ -21,36 +22,21 @@
|
||||
#include <loongson.h>
|
||||
#include <boot_param.h>
|
||||
|
||||
static void loongson_restart(char *command)
|
||||
static int firmware_restart(struct sys_off_data *unusedd)
|
||||
{
|
||||
|
||||
void (*fw_restart)(void) = (void *)loongson_sysconf.restart_addr;
|
||||
|
||||
fw_restart();
|
||||
while (1) {
|
||||
if (cpu_wait)
|
||||
cpu_wait();
|
||||
}
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
static void loongson_poweroff(void)
|
||||
static int firmware_poweroff(struct sys_off_data *unused)
|
||||
{
|
||||
void (*fw_poweroff)(void) = (void *)loongson_sysconf.poweroff_addr;
|
||||
|
||||
fw_poweroff();
|
||||
while (1) {
|
||||
if (cpu_wait)
|
||||
cpu_wait();
|
||||
}
|
||||
}
|
||||
|
||||
static void loongson_halt(void)
|
||||
{
|
||||
pr_notice("\n\n** You can safely turn off the power now **\n\n");
|
||||
while (1) {
|
||||
if (cpu_wait)
|
||||
cpu_wait();
|
||||
}
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_KEXEC
|
||||
@@ -154,9 +140,17 @@ static void loongson_crash_shutdown(struct pt_regs *regs)
|
||||
|
||||
static int __init mips_reboot_setup(void)
|
||||
{
|
||||
_machine_restart = loongson_restart;
|
||||
_machine_halt = loongson_halt;
|
||||
pm_power_off = loongson_poweroff;
|
||||
if (loongson_sysconf.restart_addr) {
|
||||
register_sys_off_handler(SYS_OFF_MODE_RESTART,
|
||||
SYS_OFF_PRIO_FIRMWARE,
|
||||
firmware_restart, NULL);
|
||||
}
|
||||
|
||||
if (loongson_sysconf.poweroff_addr) {
|
||||
register_sys_off_handler(SYS_OFF_MODE_POWER_OFF,
|
||||
SYS_OFF_PRIO_FIRMWARE,
|
||||
firmware_poweroff, NULL);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_KEXEC
|
||||
kexec_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL);
|
||||
|
||||
@@ -479,12 +479,25 @@ static void loongson3_smp_finish(void)
|
||||
static void __init loongson3_smp_setup(void)
|
||||
{
|
||||
int i = 0, num = 0; /* i: physical id, num: logical id */
|
||||
int max_cpus = 0;
|
||||
|
||||
init_cpu_possible(cpu_none_mask);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(smp_group); i++) {
|
||||
if (!smp_group[i])
|
||||
break;
|
||||
max_cpus += loongson_sysconf.cores_per_node;
|
||||
}
|
||||
|
||||
if (max_cpus < loongson_sysconf.nr_cpus) {
|
||||
pr_err("SMP Groups are less than the number of CPUs\n");
|
||||
loongson_sysconf.nr_cpus = max_cpus ? max_cpus : 1;
|
||||
}
|
||||
|
||||
/* For unified kernel, NR_CPUS is the maximum possible value,
|
||||
* loongson_sysconf.nr_cpus is the really present value
|
||||
*/
|
||||
i = 0;
|
||||
while (i < loongson_sysconf.nr_cpus) {
|
||||
if (loongson_sysconf.reserved_cpus_mask & (1<<i)) {
|
||||
/* Reserved physical CPU cores */
|
||||
@@ -505,14 +518,14 @@ static void __init loongson3_smp_setup(void)
|
||||
__cpu_logical_map[num] = -1;
|
||||
num++;
|
||||
}
|
||||
|
||||
csr_ipi_probe();
|
||||
ipi_set0_regs_init();
|
||||
ipi_clear0_regs_init();
|
||||
ipi_status0_regs_init();
|
||||
ipi_en0_regs_init();
|
||||
ipi_mailbox_buf_init();
|
||||
ipi_write_enable(0);
|
||||
if (smp_group[0])
|
||||
ipi_write_enable(0);
|
||||
|
||||
cpu_set_core(&cpu_data[0],
|
||||
cpu_logical_map(0) % loongson_sysconf.cores_per_package);
|
||||
@@ -829,6 +842,9 @@ static int loongson3_disable_clock(unsigned int cpu)
|
||||
uint64_t core_id = cpu_core(&cpu_data[cpu]);
|
||||
uint64_t package_id = cpu_data[cpu].package;
|
||||
|
||||
if (!loongson_chipcfg[package_id] || !loongson_freqctrl[package_id])
|
||||
return 0;
|
||||
|
||||
if ((read_c0_prid() & PRID_REV_MASK) == PRID_REV_LOONGSON3A_R1) {
|
||||
LOONGSON_CHIPCFG(package_id) &= ~(1 << (12 + core_id));
|
||||
} else {
|
||||
@@ -843,6 +859,9 @@ static int loongson3_enable_clock(unsigned int cpu)
|
||||
uint64_t core_id = cpu_core(&cpu_data[cpu]);
|
||||
uint64_t package_id = cpu_data[cpu].package;
|
||||
|
||||
if (!loongson_chipcfg[package_id] || !loongson_freqctrl[package_id])
|
||||
return 0;
|
||||
|
||||
if ((read_c0_prid() & PRID_REV_MASK) == PRID_REV_LOONGSON3A_R1) {
|
||||
LOONGSON_CHIPCFG(package_id) |= 1 << (12 + core_id);
|
||||
} else {
|
||||
|
||||
0
arch/mips/pci/pcie-octeon.c
Executable file → Normal file
0
arch/mips/pci/pcie-octeon.c
Executable file → Normal file
@@ -1,6 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
#include <linux/io.h>
|
||||
#include <linux/processor.h>
|
||||
|
||||
#include <asm/sn/ioc3.h>
|
||||
|
||||
|
||||
@@ -270,6 +270,9 @@ void calibrate_delay(void)
|
||||
|
||||
void __init setup_arch(char **cmdline_p)
|
||||
{
|
||||
/* setup memblock allocator */
|
||||
setup_memory();
|
||||
|
||||
unflatten_and_copy_device_tree();
|
||||
|
||||
setup_cpuinfo();
|
||||
@@ -293,9 +296,6 @@ void __init setup_arch(char **cmdline_p)
|
||||
}
|
||||
#endif
|
||||
|
||||
/* setup memblock allocator */
|
||||
setup_memory();
|
||||
|
||||
/* paging_init() sets up the MMU and marks all pages as reserved */
|
||||
paging_init();
|
||||
|
||||
|
||||
@@ -75,6 +75,7 @@ config PARISC
|
||||
select HAVE_SOFTIRQ_ON_OWN_STACK if IRQSTACKS
|
||||
select TRACE_IRQFLAGS_SUPPORT
|
||||
select HAVE_FUNCTION_DESCRIPTORS if 64BIT
|
||||
select PCI_MSI_ARCH_FALLBACKS if PCI_MSI
|
||||
|
||||
help
|
||||
The PA-RISC microprocessor is designed by Hewlett-Packard and used
|
||||
|
||||
@@ -501,7 +501,7 @@ void do_cpu_irq_mask(struct pt_regs *regs)
|
||||
|
||||
old_regs = set_irq_regs(regs);
|
||||
local_irq_disable();
|
||||
irq_enter();
|
||||
irq_enter_rcu();
|
||||
|
||||
eirr_val = mfctl(23) & cpu_eiem & per_cpu(local_ack_eiem, cpu);
|
||||
if (!eirr_val)
|
||||
@@ -536,7 +536,7 @@ void do_cpu_irq_mask(struct pt_regs *regs)
|
||||
#endif /* CONFIG_IRQSTACKS */
|
||||
|
||||
out:
|
||||
irq_exit();
|
||||
irq_exit_rcu();
|
||||
set_irq_regs(old_regs);
|
||||
return;
|
||||
|
||||
|
||||
@@ -112,8 +112,11 @@ static void *simple_realloc(void *ptr, unsigned long size)
|
||||
return ptr;
|
||||
|
||||
new = simple_malloc(size);
|
||||
memcpy(new, ptr, p->size);
|
||||
simple_free(ptr);
|
||||
if (new) {
|
||||
memcpy(new, ptr, p->size);
|
||||
simple_free(ptr);
|
||||
}
|
||||
|
||||
return new;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ CONFIG_FS_ENET=y
|
||||
CONFIG_FSL_CORENET_CF=y
|
||||
CONFIG_FSL_DMA=y
|
||||
CONFIG_FSL_HV_MANAGER=y
|
||||
CONFIG_FSL_IFC=y
|
||||
CONFIG_FSL_PQ_MDIO=y
|
||||
CONFIG_FSL_RIO=y
|
||||
CONFIG_FSL_XGMAC_MDIO=y
|
||||
@@ -58,6 +59,7 @@ CONFIG_INPUT_FF_MEMLESS=m
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_MDIO_BUS_MUX_GPIO=y
|
||||
CONFIG_MDIO_BUS_MUX_MMIOREG=y
|
||||
CONFIG_MEMORY=y
|
||||
CONFIG_MMC_SDHCI_OF_ESDHC=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
|
||||
@@ -181,6 +181,10 @@ static inline void crash_send_ipi(void (*crash_ipi_callback)(struct pt_regs *))
|
||||
|
||||
#endif /* CONFIG_KEXEC_CORE */
|
||||
|
||||
#if defined(CONFIG_KEXEC_FILE) || defined(CONFIG_CRASH_DUMP)
|
||||
int update_cpus_node(void *fdt);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S_64
|
||||
#include <asm/book3s/64/kexec.h>
|
||||
#endif
|
||||
|
||||
@@ -303,8 +303,7 @@ extern unsigned long linear_map_top;
|
||||
extern int book3e_htw_mode;
|
||||
|
||||
#define PPC_HTW_NONE 0
|
||||
#define PPC_HTW_IBM 1
|
||||
#define PPC_HTW_E6500 2
|
||||
#define PPC_HTW_E6500 1
|
||||
|
||||
/*
|
||||
* 64-bit booke platforms don't load the tlb in the tlb miss handler code.
|
||||
|
||||
@@ -6,8 +6,10 @@
|
||||
* Platform keystore for pseries LPAR(PLPKS).
|
||||
*/
|
||||
|
||||
#ifndef _PSERIES_PLPKS_H
|
||||
#define _PSERIES_PLPKS_H
|
||||
#ifndef _ASM_POWERPC_PLPKS_H
|
||||
#define _ASM_POWERPC_PLPKS_H
|
||||
|
||||
#ifdef CONFIG_PSERIES_PLPKS
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/list.h>
|
||||
@@ -93,4 +95,69 @@ int plpks_read_fw_var(struct plpks_var *var);
|
||||
*/
|
||||
int plpks_read_bootloader_var(struct plpks_var *var);
|
||||
|
||||
#endif
|
||||
/**
|
||||
* Returns if PKS is available on this LPAR.
|
||||
*/
|
||||
bool plpks_is_available(void);
|
||||
|
||||
/**
|
||||
* Returns version of the Platform KeyStore.
|
||||
*/
|
||||
u8 plpks_get_version(void);
|
||||
|
||||
/**
|
||||
* Returns hypervisor storage overhead per object, not including the size of
|
||||
* the object or label. Only valid for config version >= 2
|
||||
*/
|
||||
u16 plpks_get_objoverhead(void);
|
||||
|
||||
/**
|
||||
* Returns maximum password size. Must be >= 32 bytes
|
||||
*/
|
||||
u16 plpks_get_maxpwsize(void);
|
||||
|
||||
/**
|
||||
* Returns maximum object size supported by Platform KeyStore.
|
||||
*/
|
||||
u16 plpks_get_maxobjectsize(void);
|
||||
|
||||
/**
|
||||
* Returns maximum object label size supported by Platform KeyStore.
|
||||
*/
|
||||
u16 plpks_get_maxobjectlabelsize(void);
|
||||
|
||||
/**
|
||||
* Returns total size of the configured Platform KeyStore.
|
||||
*/
|
||||
u32 plpks_get_totalsize(void);
|
||||
|
||||
/**
|
||||
* Returns used space from the total size of the Platform KeyStore.
|
||||
*/
|
||||
u32 plpks_get_usedspace(void);
|
||||
|
||||
/**
|
||||
* Returns bitmask of policies supported by the hypervisor.
|
||||
*/
|
||||
u32 plpks_get_supportedpolicies(void);
|
||||
|
||||
/**
|
||||
* Returns maximum byte size of a single object supported by the hypervisor.
|
||||
* Only valid for config version >= 3
|
||||
*/
|
||||
u32 plpks_get_maxlargeobjectsize(void);
|
||||
|
||||
/**
|
||||
* Returns bitmask of signature algorithms supported for signed updates.
|
||||
* Only valid for config version >= 3
|
||||
*/
|
||||
u64 plpks_get_signedupdatealgorithms(void);
|
||||
|
||||
/**
|
||||
* Returns the length of the PLPKS password in bytes.
|
||||
*/
|
||||
u16 plpks_get_passwordlen(void);
|
||||
|
||||
#endif // CONFIG_PSERIES_PLPKS
|
||||
|
||||
#endif // _ASM_POWERPC_PLPKS_H
|
||||
@@ -850,6 +850,7 @@ struct pci_bus *eeh_pe_bus_get(struct eeh_pe *pe)
|
||||
{
|
||||
struct eeh_dev *edev;
|
||||
struct pci_dev *pdev;
|
||||
struct pci_bus *bus = NULL;
|
||||
|
||||
if (pe->type & EEH_PE_PHB)
|
||||
return pe->phb->bus;
|
||||
@@ -860,9 +861,11 @@ struct pci_bus *eeh_pe_bus_get(struct eeh_pe *pe)
|
||||
|
||||
/* Retrieve the parent PCI bus of first (top) PCI device */
|
||||
edev = list_first_entry_or_null(&pe->edevs, struct eeh_dev, entry);
|
||||
pci_lock_rescan_remove();
|
||||
pdev = eeh_dev_to_pci_dev(edev);
|
||||
if (pdev)
|
||||
return pdev->bus;
|
||||
bus = pdev->bus;
|
||||
pci_unlock_rescan_remove();
|
||||
|
||||
return NULL;
|
||||
return bus;
|
||||
}
|
||||
|
||||
@@ -324,6 +324,7 @@ static int __init early_init_dt_scan_cpus(unsigned long node,
|
||||
void *data)
|
||||
{
|
||||
const char *type = of_get_flat_dt_prop(node, "device_type", NULL);
|
||||
const __be32 *cpu_version = NULL;
|
||||
const __be32 *prop;
|
||||
const __be32 *intserv;
|
||||
int i, nthreads;
|
||||
@@ -404,7 +405,7 @@ static int __init early_init_dt_scan_cpus(unsigned long node,
|
||||
prop = of_get_flat_dt_prop(node, "cpu-version", NULL);
|
||||
if (prop && (be32_to_cpup(prop) & 0xff000000) == 0x0f000000) {
|
||||
identify_cpu(0, be32_to_cpup(prop));
|
||||
seq_buf_printf(&ppc_hw_desc, "0x%04x ", be32_to_cpup(prop));
|
||||
cpu_version = prop;
|
||||
}
|
||||
|
||||
check_cpu_feature_properties(node);
|
||||
@@ -415,6 +416,12 @@ static int __init early_init_dt_scan_cpus(unsigned long node,
|
||||
}
|
||||
|
||||
identical_pvr_fixup(node);
|
||||
|
||||
// We can now add the CPU name & PVR to the hardware description
|
||||
seq_buf_printf(&ppc_hw_desc, "%s 0x%04lx ", cur_cpu_spec->cpu_name, mfspr(SPRN_PVR));
|
||||
if (cpu_version)
|
||||
seq_buf_printf(&ppc_hw_desc, "0x%04x ", be32_to_cpup(cpu_version));
|
||||
|
||||
init_mmu_slb_size(node);
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
@@ -852,9 +859,6 @@ void __init early_init_devtree(void *params)
|
||||
|
||||
dt_cpu_ftrs_scan();
|
||||
|
||||
// We can now add the CPU name & PVR to the hardware description
|
||||
seq_buf_printf(&ppc_hw_desc, "%s 0x%04lx ", cur_cpu_spec->cpu_name, mfspr(SPRN_PVR));
|
||||
|
||||
/* Retrieve CPU related informations from the flat tree
|
||||
* (altivec support, boot CPU ID, ...)
|
||||
*/
|
||||
|
||||
@@ -948,6 +948,7 @@ void __init setup_arch(char **cmdline_p)
|
||||
mem_topology_setup();
|
||||
/* Set max_mapnr before paging_init() */
|
||||
set_max_mapnr(max_pfn);
|
||||
high_memory = (void *)__va(max_low_pfn * PAGE_SIZE);
|
||||
|
||||
/*
|
||||
* Release secondary cpus out of their spinloops at 0x60 now that
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/hardirq.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/libfdt.h>
|
||||
|
||||
#include <asm/page.h>
|
||||
#include <asm/current.h>
|
||||
@@ -31,6 +32,7 @@
|
||||
#include <asm/hw_breakpoint.h>
|
||||
#include <asm/svm.h>
|
||||
#include <asm/ultravisor.h>
|
||||
#include <asm/crashdump-ppc64.h>
|
||||
|
||||
int machine_kexec_prepare(struct kimage *image)
|
||||
{
|
||||
@@ -431,3 +433,113 @@ static int __init export_htab_values(void)
|
||||
}
|
||||
late_initcall(export_htab_values);
|
||||
#endif /* CONFIG_PPC_64S_HASH_MMU */
|
||||
|
||||
#if defined(CONFIG_KEXEC_FILE) || defined(CONFIG_CRASH_DUMP)
|
||||
/**
|
||||
* add_node_props - Reads node properties from device node structure and add
|
||||
* them to fdt.
|
||||
* @fdt: Flattened device tree of the kernel
|
||||
* @node_offset: offset of the node to add a property at
|
||||
* @dn: device node pointer
|
||||
*
|
||||
* Returns 0 on success, negative errno on error.
|
||||
*/
|
||||
static int add_node_props(void *fdt, int node_offset, const struct device_node *dn)
|
||||
{
|
||||
int ret = 0;
|
||||
struct property *pp;
|
||||
|
||||
if (!dn)
|
||||
return -EINVAL;
|
||||
|
||||
for_each_property_of_node(dn, pp) {
|
||||
ret = fdt_setprop(fdt, node_offset, pp->name, pp->value, pp->length);
|
||||
if (ret < 0) {
|
||||
pr_err("Unable to add %s property: %s\n", pp->name, fdt_strerror(ret));
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* update_cpus_node - Update cpus node of flattened device tree using of_root
|
||||
* device node.
|
||||
* @fdt: Flattened device tree of the kernel.
|
||||
*
|
||||
* Returns 0 on success, negative errno on error.
|
||||
*
|
||||
* Note: expecting no subnodes under /cpus/<node> with device_type == "cpu".
|
||||
* If this changes, update this function to include them.
|
||||
*/
|
||||
int update_cpus_node(void *fdt)
|
||||
{
|
||||
int prev_node_offset;
|
||||
const char *device_type;
|
||||
const struct fdt_property *prop;
|
||||
struct device_node *cpus_node, *dn;
|
||||
int cpus_offset, cpus_subnode_offset, ret = 0;
|
||||
|
||||
cpus_offset = fdt_path_offset(fdt, "/cpus");
|
||||
if (cpus_offset < 0 && cpus_offset != -FDT_ERR_NOTFOUND) {
|
||||
pr_err("Malformed device tree: error reading /cpus node: %s\n",
|
||||
fdt_strerror(cpus_offset));
|
||||
return cpus_offset;
|
||||
}
|
||||
|
||||
prev_node_offset = cpus_offset;
|
||||
/* Delete sub-nodes of /cpus node with device_type == "cpu" */
|
||||
for (cpus_subnode_offset = fdt_first_subnode(fdt, cpus_offset); cpus_subnode_offset >= 0;) {
|
||||
/* Ignore nodes that do not have a device_type property or device_type != "cpu" */
|
||||
prop = fdt_get_property(fdt, cpus_subnode_offset, "device_type", NULL);
|
||||
if (!prop || strcmp(prop->data, "cpu")) {
|
||||
prev_node_offset = cpus_subnode_offset;
|
||||
goto next_node;
|
||||
}
|
||||
|
||||
ret = fdt_del_node(fdt, cpus_subnode_offset);
|
||||
if (ret < 0) {
|
||||
pr_err("Failed to delete a cpus sub-node: %s\n", fdt_strerror(ret));
|
||||
return ret;
|
||||
}
|
||||
next_node:
|
||||
if (prev_node_offset == cpus_offset)
|
||||
cpus_subnode_offset = fdt_first_subnode(fdt, cpus_offset);
|
||||
else
|
||||
cpus_subnode_offset = fdt_next_subnode(fdt, prev_node_offset);
|
||||
}
|
||||
|
||||
cpus_node = of_find_node_by_path("/cpus");
|
||||
/* Fail here to avoid kexec/kdump kernel boot hung */
|
||||
if (!cpus_node) {
|
||||
pr_err("No /cpus node found\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Add all /cpus sub-nodes of device_type == "cpu" to FDT */
|
||||
for_each_child_of_node(cpus_node, dn) {
|
||||
/* Ignore device nodes that do not have a device_type property
|
||||
* or device_type != "cpu".
|
||||
*/
|
||||
device_type = of_get_property(dn, "device_type", NULL);
|
||||
if (!device_type || strcmp(device_type, "cpu"))
|
||||
continue;
|
||||
|
||||
cpus_subnode_offset = fdt_add_subnode(fdt, cpus_offset, dn->full_name);
|
||||
if (cpus_subnode_offset < 0) {
|
||||
pr_err("Unable to add %s subnode: %s\n", dn->full_name,
|
||||
fdt_strerror(cpus_subnode_offset));
|
||||
ret = cpus_subnode_offset;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = add_node_props(fdt, cpus_subnode_offset, dn);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
}
|
||||
out:
|
||||
of_node_put(cpus_node);
|
||||
of_node_put(dn);
|
||||
return ret;
|
||||
}
|
||||
#endif /* CONFIG_KEXEC_FILE || CONFIG_CRASH_DUMP */
|
||||
|
||||
@@ -952,93 +952,6 @@ unsigned int kexec_extra_fdt_size_ppc64(struct kimage *image)
|
||||
return (unsigned int)(usm_entries * sizeof(u64));
|
||||
}
|
||||
|
||||
/**
|
||||
* add_node_props - Reads node properties from device node structure and add
|
||||
* them to fdt.
|
||||
* @fdt: Flattened device tree of the kernel
|
||||
* @node_offset: offset of the node to add a property at
|
||||
* @dn: device node pointer
|
||||
*
|
||||
* Returns 0 on success, negative errno on error.
|
||||
*/
|
||||
static int add_node_props(void *fdt, int node_offset, const struct device_node *dn)
|
||||
{
|
||||
int ret = 0;
|
||||
struct property *pp;
|
||||
|
||||
if (!dn)
|
||||
return -EINVAL;
|
||||
|
||||
for_each_property_of_node(dn, pp) {
|
||||
ret = fdt_setprop(fdt, node_offset, pp->name, pp->value, pp->length);
|
||||
if (ret < 0) {
|
||||
pr_err("Unable to add %s property: %s\n", pp->name, fdt_strerror(ret));
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* update_cpus_node - Update cpus node of flattened device tree using of_root
|
||||
* device node.
|
||||
* @fdt: Flattened device tree of the kernel.
|
||||
*
|
||||
* Returns 0 on success, negative errno on error.
|
||||
*/
|
||||
static int update_cpus_node(void *fdt)
|
||||
{
|
||||
struct device_node *cpus_node, *dn;
|
||||
int cpus_offset, cpus_subnode_offset, ret = 0;
|
||||
|
||||
cpus_offset = fdt_path_offset(fdt, "/cpus");
|
||||
if (cpus_offset < 0 && cpus_offset != -FDT_ERR_NOTFOUND) {
|
||||
pr_err("Malformed device tree: error reading /cpus node: %s\n",
|
||||
fdt_strerror(cpus_offset));
|
||||
return cpus_offset;
|
||||
}
|
||||
|
||||
if (cpus_offset > 0) {
|
||||
ret = fdt_del_node(fdt, cpus_offset);
|
||||
if (ret < 0) {
|
||||
pr_err("Error deleting /cpus node: %s\n", fdt_strerror(ret));
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Add cpus node to fdt */
|
||||
cpus_offset = fdt_add_subnode(fdt, fdt_path_offset(fdt, "/"), "cpus");
|
||||
if (cpus_offset < 0) {
|
||||
pr_err("Error creating /cpus node: %s\n", fdt_strerror(cpus_offset));
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Add cpus node properties */
|
||||
cpus_node = of_find_node_by_path("/cpus");
|
||||
ret = add_node_props(fdt, cpus_offset, cpus_node);
|
||||
of_node_put(cpus_node);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Loop through all subnodes of cpus and add them to fdt */
|
||||
for_each_node_by_type(dn, "cpu") {
|
||||
cpus_subnode_offset = fdt_add_subnode(fdt, cpus_offset, dn->full_name);
|
||||
if (cpus_subnode_offset < 0) {
|
||||
pr_err("Unable to add %s subnode: %s\n", dn->full_name,
|
||||
fdt_strerror(cpus_subnode_offset));
|
||||
ret = cpus_subnode_offset;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = add_node_props(fdt, cpus_subnode_offset, dn);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
}
|
||||
out:
|
||||
of_node_put(dn);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int copy_property(void *fdt, int node_offset, const struct device_node *dn,
|
||||
const char *propname)
|
||||
{
|
||||
|
||||
@@ -129,14 +129,16 @@ extern long kvm_spapr_tce_attach_iommu_group(struct kvm *kvm, int tablefd,
|
||||
}
|
||||
rcu_read_unlock();
|
||||
|
||||
fdput(f);
|
||||
|
||||
if (!found)
|
||||
if (!found) {
|
||||
fdput(f);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
table_group = iommu_group_get_iommudata(grp);
|
||||
if (WARN_ON(!table_group))
|
||||
if (WARN_ON(!table_group)) {
|
||||
fdput(f);
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
for (i = 0; i < IOMMU_TABLE_GROUP_MAX_TABLES; ++i) {
|
||||
struct iommu_table *tbltmp = table_group->tables[i];
|
||||
@@ -157,8 +159,10 @@ extern long kvm_spapr_tce_attach_iommu_group(struct kvm *kvm, int tablefd,
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!tbl)
|
||||
if (!tbl) {
|
||||
fdput(f);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
rcu_read_lock();
|
||||
list_for_each_entry_rcu(stit, &stt->iommu_tables, next) {
|
||||
@@ -169,6 +173,7 @@ extern long kvm_spapr_tce_attach_iommu_group(struct kvm *kvm, int tablefd,
|
||||
/* stit is being destroyed */
|
||||
iommu_tce_table_put(tbl);
|
||||
rcu_read_unlock();
|
||||
fdput(f);
|
||||
return -ENOTTY;
|
||||
}
|
||||
/*
|
||||
@@ -176,6 +181,7 @@ extern long kvm_spapr_tce_attach_iommu_group(struct kvm *kvm, int tablefd,
|
||||
* its KVM reference counter and can return.
|
||||
*/
|
||||
rcu_read_unlock();
|
||||
fdput(f);
|
||||
return 0;
|
||||
}
|
||||
rcu_read_unlock();
|
||||
@@ -183,6 +189,7 @@ extern long kvm_spapr_tce_attach_iommu_group(struct kvm *kvm, int tablefd,
|
||||
stit = kzalloc(sizeof(*stit), GFP_KERNEL);
|
||||
if (!stit) {
|
||||
iommu_tce_table_put(tbl);
|
||||
fdput(f);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@@ -191,6 +198,7 @@ extern long kvm_spapr_tce_attach_iommu_group(struct kvm *kvm, int tablefd,
|
||||
|
||||
list_add_rcu(&stit->next, &stt->iommu_tables);
|
||||
|
||||
fdput(f);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1998,8 +1998,10 @@ static int kvm_vcpu_ioctl_enable_cap(struct kvm_vcpu *vcpu,
|
||||
break;
|
||||
|
||||
r = -ENXIO;
|
||||
if (!xive_enabled())
|
||||
if (!xive_enabled()) {
|
||||
fdput(f);
|
||||
break;
|
||||
}
|
||||
|
||||
r = -EPERM;
|
||||
dev = kvm_device_from_filp(f.file);
|
||||
|
||||
@@ -287,8 +287,6 @@ void __init mem_init(void)
|
||||
swiotlb_init(ppc_swiotlb_enable, ppc_swiotlb_flags);
|
||||
#endif
|
||||
|
||||
high_memory = (void *) __va(max_low_pfn * PAGE_SIZE);
|
||||
|
||||
kasan_late_init();
|
||||
|
||||
memblock_free_all();
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
ccflags-$(CONFIG_PPC64) := $(NO_MINIMAL_TOC)
|
||||
|
||||
obj-y += mmu_context.o tlb.o tlb_low.o kup.o
|
||||
obj-$(CONFIG_PPC_BOOK3E_64) += tlb_low_64e.o book3e_pgtable.o
|
||||
obj-$(CONFIG_PPC_BOOK3E_64) += tlb_64e.o tlb_low_64e.o book3e_pgtable.o
|
||||
obj-$(CONFIG_40x) += 40x.o
|
||||
obj-$(CONFIG_44x) += 44x.o
|
||||
obj-$(CONFIG_PPC_8xx) += 8xx.o
|
||||
|
||||
@@ -110,28 +110,6 @@ struct mmu_psize_def mmu_psize_defs[MMU_PAGE_COUNT] = {
|
||||
};
|
||||
#endif
|
||||
|
||||
/* The variables below are currently only used on 64-bit Book3E
|
||||
* though this will probably be made common with other nohash
|
||||
* implementations at some point
|
||||
*/
|
||||
#ifdef CONFIG_PPC64
|
||||
|
||||
int mmu_pte_psize; /* Page size used for PTE pages */
|
||||
int mmu_vmemmap_psize; /* Page size used for the virtual mem map */
|
||||
int book3e_htw_mode; /* HW tablewalk? Value is PPC_HTW_* */
|
||||
unsigned long linear_map_top; /* Top of linear mapping */
|
||||
|
||||
|
||||
/*
|
||||
* Number of bytes to add to SPRN_SPRG_TLB_EXFRAME on crit/mcheck/debug
|
||||
* exceptions. This is used for bolted and e6500 TLB miss handlers which
|
||||
* do not modify this SPRG in the TLB miss code; for other TLB miss handlers,
|
||||
* this is set to zero.
|
||||
*/
|
||||
int extlb_level_exc;
|
||||
|
||||
#endif /* CONFIG_PPC64 */
|
||||
|
||||
#ifdef CONFIG_PPC_E500
|
||||
/* next_tlbcam_idx is used to round-robin tlbcam entry assignment */
|
||||
DEFINE_PER_CPU(int, next_tlbcam_idx);
|
||||
@@ -361,381 +339,7 @@ void tlb_flush(struct mmu_gather *tlb)
|
||||
flush_tlb_mm(tlb->mm);
|
||||
}
|
||||
|
||||
/*
|
||||
* Below are functions specific to the 64-bit variant of Book3E though that
|
||||
* may change in the future
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
|
||||
/*
|
||||
* Handling of virtual linear page tables or indirect TLB entries
|
||||
* flushing when PTE pages are freed
|
||||
*/
|
||||
void tlb_flush_pgtable(struct mmu_gather *tlb, unsigned long address)
|
||||
{
|
||||
int tsize = mmu_psize_defs[mmu_pte_psize].enc;
|
||||
|
||||
if (book3e_htw_mode != PPC_HTW_NONE) {
|
||||
unsigned long start = address & PMD_MASK;
|
||||
unsigned long end = address + PMD_SIZE;
|
||||
unsigned long size = 1UL << mmu_psize_defs[mmu_pte_psize].shift;
|
||||
|
||||
/* This isn't the most optimal, ideally we would factor out the
|
||||
* while preempt & CPU mask mucking around, or even the IPI but
|
||||
* it will do for now
|
||||
*/
|
||||
while (start < end) {
|
||||
__flush_tlb_page(tlb->mm, start, tsize, 1);
|
||||
start += size;
|
||||
}
|
||||
} else {
|
||||
unsigned long rmask = 0xf000000000000000ul;
|
||||
unsigned long rid = (address & rmask) | 0x1000000000000000ul;
|
||||
unsigned long vpte = address & ~rmask;
|
||||
|
||||
vpte = (vpte >> (PAGE_SHIFT - 3)) & ~0xffful;
|
||||
vpte |= rid;
|
||||
__flush_tlb_page(tlb->mm, vpte, tsize, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void __init setup_page_sizes(void)
|
||||
{
|
||||
unsigned int tlb0cfg;
|
||||
unsigned int tlb0ps;
|
||||
unsigned int eptcfg;
|
||||
int i, psize;
|
||||
|
||||
#ifdef CONFIG_PPC_E500
|
||||
unsigned int mmucfg = mfspr(SPRN_MMUCFG);
|
||||
int fsl_mmu = mmu_has_feature(MMU_FTR_TYPE_FSL_E);
|
||||
|
||||
if (fsl_mmu && (mmucfg & MMUCFG_MAVN) == MMUCFG_MAVN_V1) {
|
||||
unsigned int tlb1cfg = mfspr(SPRN_TLB1CFG);
|
||||
unsigned int min_pg, max_pg;
|
||||
|
||||
min_pg = (tlb1cfg & TLBnCFG_MINSIZE) >> TLBnCFG_MINSIZE_SHIFT;
|
||||
max_pg = (tlb1cfg & TLBnCFG_MAXSIZE) >> TLBnCFG_MAXSIZE_SHIFT;
|
||||
|
||||
for (psize = 0; psize < MMU_PAGE_COUNT; ++psize) {
|
||||
struct mmu_psize_def *def;
|
||||
unsigned int shift;
|
||||
|
||||
def = &mmu_psize_defs[psize];
|
||||
shift = def->shift;
|
||||
|
||||
if (shift == 0 || shift & 1)
|
||||
continue;
|
||||
|
||||
/* adjust to be in terms of 4^shift Kb */
|
||||
shift = (shift - 10) >> 1;
|
||||
|
||||
if ((shift >= min_pg) && (shift <= max_pg))
|
||||
def->flags |= MMU_PAGE_SIZE_DIRECT;
|
||||
}
|
||||
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (fsl_mmu && (mmucfg & MMUCFG_MAVN) == MMUCFG_MAVN_V2) {
|
||||
u32 tlb1cfg, tlb1ps;
|
||||
|
||||
tlb0cfg = mfspr(SPRN_TLB0CFG);
|
||||
tlb1cfg = mfspr(SPRN_TLB1CFG);
|
||||
tlb1ps = mfspr(SPRN_TLB1PS);
|
||||
eptcfg = mfspr(SPRN_EPTCFG);
|
||||
|
||||
if ((tlb1cfg & TLBnCFG_IND) && (tlb0cfg & TLBnCFG_PT))
|
||||
book3e_htw_mode = PPC_HTW_E6500;
|
||||
|
||||
/*
|
||||
* We expect 4K subpage size and unrestricted indirect size.
|
||||
* The lack of a restriction on indirect size is a Freescale
|
||||
* extension, indicated by PSn = 0 but SPSn != 0.
|
||||
*/
|
||||
if (eptcfg != 2)
|
||||
book3e_htw_mode = PPC_HTW_NONE;
|
||||
|
||||
for (psize = 0; psize < MMU_PAGE_COUNT; ++psize) {
|
||||
struct mmu_psize_def *def = &mmu_psize_defs[psize];
|
||||
|
||||
if (!def->shift)
|
||||
continue;
|
||||
|
||||
if (tlb1ps & (1U << (def->shift - 10))) {
|
||||
def->flags |= MMU_PAGE_SIZE_DIRECT;
|
||||
|
||||
if (book3e_htw_mode && psize == MMU_PAGE_2M)
|
||||
def->flags |= MMU_PAGE_SIZE_INDIRECT;
|
||||
}
|
||||
}
|
||||
|
||||
goto out;
|
||||
}
|
||||
#endif
|
||||
|
||||
tlb0cfg = mfspr(SPRN_TLB0CFG);
|
||||
tlb0ps = mfspr(SPRN_TLB0PS);
|
||||
eptcfg = mfspr(SPRN_EPTCFG);
|
||||
|
||||
/* Look for supported direct sizes */
|
||||
for (psize = 0; psize < MMU_PAGE_COUNT; ++psize) {
|
||||
struct mmu_psize_def *def = &mmu_psize_defs[psize];
|
||||
|
||||
if (tlb0ps & (1U << (def->shift - 10)))
|
||||
def->flags |= MMU_PAGE_SIZE_DIRECT;
|
||||
}
|
||||
|
||||
/* Indirect page sizes supported ? */
|
||||
if ((tlb0cfg & TLBnCFG_IND) == 0 ||
|
||||
(tlb0cfg & TLBnCFG_PT) == 0)
|
||||
goto out;
|
||||
|
||||
book3e_htw_mode = PPC_HTW_IBM;
|
||||
|
||||
/* Now, we only deal with one IND page size for each
|
||||
* direct size. Hopefully all implementations today are
|
||||
* unambiguous, but we might want to be careful in the
|
||||
* future.
|
||||
*/
|
||||
for (i = 0; i < 3; i++) {
|
||||
unsigned int ps, sps;
|
||||
|
||||
sps = eptcfg & 0x1f;
|
||||
eptcfg >>= 5;
|
||||
ps = eptcfg & 0x1f;
|
||||
eptcfg >>= 5;
|
||||
if (!ps || !sps)
|
||||
continue;
|
||||
for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
|
||||
struct mmu_psize_def *def = &mmu_psize_defs[psize];
|
||||
|
||||
if (ps == (def->shift - 10))
|
||||
def->flags |= MMU_PAGE_SIZE_INDIRECT;
|
||||
if (sps == (def->shift - 10))
|
||||
def->ind = ps + 10;
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
/* Cleanup array and print summary */
|
||||
pr_info("MMU: Supported page sizes\n");
|
||||
for (psize = 0; psize < MMU_PAGE_COUNT; ++psize) {
|
||||
struct mmu_psize_def *def = &mmu_psize_defs[psize];
|
||||
const char *__page_type_names[] = {
|
||||
"unsupported",
|
||||
"direct",
|
||||
"indirect",
|
||||
"direct & indirect"
|
||||
};
|
||||
if (def->flags == 0) {
|
||||
def->shift = 0;
|
||||
continue;
|
||||
}
|
||||
pr_info(" %8ld KB as %s\n", 1ul << (def->shift - 10),
|
||||
__page_type_names[def->flags & 0x3]);
|
||||
}
|
||||
}
|
||||
|
||||
static void __init setup_mmu_htw(void)
|
||||
{
|
||||
/*
|
||||
* If we want to use HW tablewalk, enable it by patching the TLB miss
|
||||
* handlers to branch to the one dedicated to it.
|
||||
*/
|
||||
|
||||
switch (book3e_htw_mode) {
|
||||
case PPC_HTW_IBM:
|
||||
patch_exception(0x1c0, exc_data_tlb_miss_htw_book3e);
|
||||
patch_exception(0x1e0, exc_instruction_tlb_miss_htw_book3e);
|
||||
break;
|
||||
#ifdef CONFIG_PPC_E500
|
||||
case PPC_HTW_E6500:
|
||||
extlb_level_exc = EX_TLB_SIZE;
|
||||
patch_exception(0x1c0, exc_data_tlb_miss_e6500_book3e);
|
||||
patch_exception(0x1e0, exc_instruction_tlb_miss_e6500_book3e);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
pr_info("MMU: Book3E HW tablewalk %s\n",
|
||||
book3e_htw_mode != PPC_HTW_NONE ? "enabled" : "not supported");
|
||||
}
|
||||
|
||||
/*
|
||||
* Early initialization of the MMU TLB code
|
||||
*/
|
||||
static void early_init_this_mmu(void)
|
||||
{
|
||||
unsigned int mas4;
|
||||
|
||||
/* Set MAS4 based on page table setting */
|
||||
|
||||
mas4 = 0x4 << MAS4_WIMGED_SHIFT;
|
||||
switch (book3e_htw_mode) {
|
||||
case PPC_HTW_E6500:
|
||||
mas4 |= MAS4_INDD;
|
||||
mas4 |= BOOK3E_PAGESZ_2M << MAS4_TSIZED_SHIFT;
|
||||
mas4 |= MAS4_TLBSELD(1);
|
||||
mmu_pte_psize = MMU_PAGE_2M;
|
||||
break;
|
||||
|
||||
case PPC_HTW_IBM:
|
||||
mas4 |= MAS4_INDD;
|
||||
mas4 |= BOOK3E_PAGESZ_1M << MAS4_TSIZED_SHIFT;
|
||||
mmu_pte_psize = MMU_PAGE_1M;
|
||||
break;
|
||||
|
||||
case PPC_HTW_NONE:
|
||||
mas4 |= BOOK3E_PAGESZ_4K << MAS4_TSIZED_SHIFT;
|
||||
mmu_pte_psize = mmu_virtual_psize;
|
||||
break;
|
||||
}
|
||||
mtspr(SPRN_MAS4, mas4);
|
||||
|
||||
#ifdef CONFIG_PPC_E500
|
||||
if (mmu_has_feature(MMU_FTR_TYPE_FSL_E)) {
|
||||
unsigned int num_cams;
|
||||
bool map = true;
|
||||
|
||||
/* use a quarter of the TLBCAM for bolted linear map */
|
||||
num_cams = (mfspr(SPRN_TLB1CFG) & TLBnCFG_N_ENTRY) / 4;
|
||||
|
||||
/*
|
||||
* Only do the mapping once per core, or else the
|
||||
* transient mapping would cause problems.
|
||||
*/
|
||||
#ifdef CONFIG_SMP
|
||||
if (hweight32(get_tensr()) > 1)
|
||||
map = false;
|
||||
#endif
|
||||
|
||||
if (map)
|
||||
linear_map_top = map_mem_in_cams(linear_map_top,
|
||||
num_cams, false, true);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* A sync won't hurt us after mucking around with
|
||||
* the MMU configuration
|
||||
*/
|
||||
mb();
|
||||
}
|
||||
|
||||
static void __init early_init_mmu_global(void)
|
||||
{
|
||||
/* XXX This should be decided at runtime based on supported
|
||||
* page sizes in the TLB, but for now let's assume 16M is
|
||||
* always there and a good fit (which it probably is)
|
||||
*
|
||||
* Freescale booke only supports 4K pages in TLB0, so use that.
|
||||
*/
|
||||
if (mmu_has_feature(MMU_FTR_TYPE_FSL_E))
|
||||
mmu_vmemmap_psize = MMU_PAGE_4K;
|
||||
else
|
||||
mmu_vmemmap_psize = MMU_PAGE_16M;
|
||||
|
||||
/* XXX This code only checks for TLB 0 capabilities and doesn't
|
||||
* check what page size combos are supported by the HW. It
|
||||
* also doesn't handle the case where a separate array holds
|
||||
* the IND entries from the array loaded by the PT.
|
||||
*/
|
||||
/* Look for supported page sizes */
|
||||
setup_page_sizes();
|
||||
|
||||
/* Look for HW tablewalk support */
|
||||
setup_mmu_htw();
|
||||
|
||||
#ifdef CONFIG_PPC_E500
|
||||
if (mmu_has_feature(MMU_FTR_TYPE_FSL_E)) {
|
||||
if (book3e_htw_mode == PPC_HTW_NONE) {
|
||||
extlb_level_exc = EX_TLB_SIZE;
|
||||
patch_exception(0x1c0, exc_data_tlb_miss_bolted_book3e);
|
||||
patch_exception(0x1e0,
|
||||
exc_instruction_tlb_miss_bolted_book3e);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Set the global containing the top of the linear mapping
|
||||
* for use by the TLB miss code
|
||||
*/
|
||||
linear_map_top = memblock_end_of_DRAM();
|
||||
|
||||
ioremap_bot = IOREMAP_BASE;
|
||||
}
|
||||
|
||||
static void __init early_mmu_set_memory_limit(void)
|
||||
{
|
||||
#ifdef CONFIG_PPC_E500
|
||||
if (mmu_has_feature(MMU_FTR_TYPE_FSL_E)) {
|
||||
/*
|
||||
* Limit memory so we dont have linear faults.
|
||||
* Unlike memblock_set_current_limit, which limits
|
||||
* memory available during early boot, this permanently
|
||||
* reduces the memory available to Linux. We need to
|
||||
* do this because highmem is not supported on 64-bit.
|
||||
*/
|
||||
memblock_enforce_memory_limit(linear_map_top);
|
||||
}
|
||||
#endif
|
||||
|
||||
memblock_set_current_limit(linear_map_top);
|
||||
}
|
||||
|
||||
/* boot cpu only */
|
||||
void __init early_init_mmu(void)
|
||||
{
|
||||
early_init_mmu_global();
|
||||
early_init_this_mmu();
|
||||
early_mmu_set_memory_limit();
|
||||
}
|
||||
|
||||
void early_init_mmu_secondary(void)
|
||||
{
|
||||
early_init_this_mmu();
|
||||
}
|
||||
|
||||
void setup_initial_memory_limit(phys_addr_t first_memblock_base,
|
||||
phys_addr_t first_memblock_size)
|
||||
{
|
||||
/* On non-FSL Embedded 64-bit, we adjust the RMA size to match
|
||||
* the bolted TLB entry. We know for now that only 1G
|
||||
* entries are supported though that may eventually
|
||||
* change.
|
||||
*
|
||||
* on FSL Embedded 64-bit, usually all RAM is bolted, but with
|
||||
* unusual memory sizes it's possible for some RAM to not be mapped
|
||||
* (such RAM is not used at all by Linux, since we don't support
|
||||
* highmem on 64-bit). We limit ppc64_rma_size to what would be
|
||||
* mappable if this memblock is the only one. Additional memblocks
|
||||
* can only increase, not decrease, the amount that ends up getting
|
||||
* mapped. We still limit max to 1G even if we'll eventually map
|
||||
* more. This is due to what the early init code is set up to do.
|
||||
*
|
||||
* We crop it to the size of the first MEMBLOCK to
|
||||
* avoid going over total available memory just in case...
|
||||
*/
|
||||
#ifdef CONFIG_PPC_E500
|
||||
if (early_mmu_has_feature(MMU_FTR_TYPE_FSL_E)) {
|
||||
unsigned long linear_sz;
|
||||
unsigned int num_cams;
|
||||
|
||||
/* use a quarter of the TLBCAM for bolted linear map */
|
||||
num_cams = (mfspr(SPRN_TLB1CFG) & TLBnCFG_N_ENTRY) / 4;
|
||||
|
||||
linear_sz = map_mem_in_cams(first_memblock_size, num_cams,
|
||||
true, true);
|
||||
|
||||
ppc64_rma_size = min_t(u64, linear_sz, 0x40000000);
|
||||
} else
|
||||
#endif
|
||||
ppc64_rma_size = min_t(u64, first_memblock_size, 0x40000000);
|
||||
|
||||
/* Finally limit subsequent allocations */
|
||||
memblock_set_current_limit(first_memblock_base + ppc64_rma_size);
|
||||
}
|
||||
#else /* ! CONFIG_PPC64 */
|
||||
#ifndef CONFIG_PPC64
|
||||
void __init early_init_mmu(void)
|
||||
{
|
||||
#ifdef CONFIG_PPC_47x
|
||||
|
||||
361
arch/powerpc/mm/nohash/tlb_64e.c
Normal file
361
arch/powerpc/mm/nohash/tlb_64e.c
Normal file
@@ -0,0 +1,361 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Copyright 2008,2009 Ben Herrenschmidt <benh@kernel.crashing.org>
|
||||
* IBM Corp.
|
||||
*
|
||||
* Derived from arch/ppc/mm/init.c:
|
||||
* Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
|
||||
*
|
||||
* Modifications by Paul Mackerras (PowerMac) (paulus@cs.anu.edu.au)
|
||||
* and Cort Dougan (PReP) (cort@cs.nmt.edu)
|
||||
* Copyright (C) 1996 Paul Mackerras
|
||||
*
|
||||
* Derived from "arch/i386/mm/init.c"
|
||||
* Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/pagemap.h>
|
||||
#include <linux/memblock.h>
|
||||
|
||||
#include <asm/pgalloc.h>
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/tlb.h>
|
||||
#include <asm/code-patching.h>
|
||||
#include <asm/cputhreads.h>
|
||||
|
||||
#include <mm/mmu_decl.h>
|
||||
|
||||
/* The variables below are currently only used on 64-bit Book3E
|
||||
* though this will probably be made common with other nohash
|
||||
* implementations at some point
|
||||
*/
|
||||
static int mmu_pte_psize; /* Page size used for PTE pages */
|
||||
int mmu_vmemmap_psize; /* Page size used for the virtual mem map */
|
||||
int book3e_htw_mode; /* HW tablewalk? Value is PPC_HTW_* */
|
||||
unsigned long linear_map_top; /* Top of linear mapping */
|
||||
|
||||
|
||||
/*
|
||||
* Number of bytes to add to SPRN_SPRG_TLB_EXFRAME on crit/mcheck/debug
|
||||
* exceptions. This is used for bolted and e6500 TLB miss handlers which
|
||||
* do not modify this SPRG in the TLB miss code; for other TLB miss handlers,
|
||||
* this is set to zero.
|
||||
*/
|
||||
int extlb_level_exc;
|
||||
|
||||
/*
|
||||
* Handling of virtual linear page tables or indirect TLB entries
|
||||
* flushing when PTE pages are freed
|
||||
*/
|
||||
void tlb_flush_pgtable(struct mmu_gather *tlb, unsigned long address)
|
||||
{
|
||||
int tsize = mmu_psize_defs[mmu_pte_psize].enc;
|
||||
|
||||
if (book3e_htw_mode != PPC_HTW_NONE) {
|
||||
unsigned long start = address & PMD_MASK;
|
||||
unsigned long end = address + PMD_SIZE;
|
||||
unsigned long size = 1UL << mmu_psize_defs[mmu_pte_psize].shift;
|
||||
|
||||
/* This isn't the most optimal, ideally we would factor out the
|
||||
* while preempt & CPU mask mucking around, or even the IPI but
|
||||
* it will do for now
|
||||
*/
|
||||
while (start < end) {
|
||||
__flush_tlb_page(tlb->mm, start, tsize, 1);
|
||||
start += size;
|
||||
}
|
||||
} else {
|
||||
unsigned long rmask = 0xf000000000000000ul;
|
||||
unsigned long rid = (address & rmask) | 0x1000000000000000ul;
|
||||
unsigned long vpte = address & ~rmask;
|
||||
|
||||
vpte = (vpte >> (PAGE_SHIFT - 3)) & ~0xffful;
|
||||
vpte |= rid;
|
||||
__flush_tlb_page(tlb->mm, vpte, tsize, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void __init setup_page_sizes(void)
|
||||
{
|
||||
unsigned int tlb0cfg;
|
||||
unsigned int eptcfg;
|
||||
int psize;
|
||||
|
||||
#ifdef CONFIG_PPC_E500
|
||||
unsigned int mmucfg = mfspr(SPRN_MMUCFG);
|
||||
int fsl_mmu = mmu_has_feature(MMU_FTR_TYPE_FSL_E);
|
||||
|
||||
if (fsl_mmu && (mmucfg & MMUCFG_MAVN) == MMUCFG_MAVN_V1) {
|
||||
unsigned int tlb1cfg = mfspr(SPRN_TLB1CFG);
|
||||
unsigned int min_pg, max_pg;
|
||||
|
||||
min_pg = (tlb1cfg & TLBnCFG_MINSIZE) >> TLBnCFG_MINSIZE_SHIFT;
|
||||
max_pg = (tlb1cfg & TLBnCFG_MAXSIZE) >> TLBnCFG_MAXSIZE_SHIFT;
|
||||
|
||||
for (psize = 0; psize < MMU_PAGE_COUNT; ++psize) {
|
||||
struct mmu_psize_def *def;
|
||||
unsigned int shift;
|
||||
|
||||
def = &mmu_psize_defs[psize];
|
||||
shift = def->shift;
|
||||
|
||||
if (shift == 0 || shift & 1)
|
||||
continue;
|
||||
|
||||
/* adjust to be in terms of 4^shift Kb */
|
||||
shift = (shift - 10) >> 1;
|
||||
|
||||
if ((shift >= min_pg) && (shift <= max_pg))
|
||||
def->flags |= MMU_PAGE_SIZE_DIRECT;
|
||||
}
|
||||
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (fsl_mmu && (mmucfg & MMUCFG_MAVN) == MMUCFG_MAVN_V2) {
|
||||
u32 tlb1cfg, tlb1ps;
|
||||
|
||||
tlb0cfg = mfspr(SPRN_TLB0CFG);
|
||||
tlb1cfg = mfspr(SPRN_TLB1CFG);
|
||||
tlb1ps = mfspr(SPRN_TLB1PS);
|
||||
eptcfg = mfspr(SPRN_EPTCFG);
|
||||
|
||||
if ((tlb1cfg & TLBnCFG_IND) && (tlb0cfg & TLBnCFG_PT))
|
||||
book3e_htw_mode = PPC_HTW_E6500;
|
||||
|
||||
/*
|
||||
* We expect 4K subpage size and unrestricted indirect size.
|
||||
* The lack of a restriction on indirect size is a Freescale
|
||||
* extension, indicated by PSn = 0 but SPSn != 0.
|
||||
*/
|
||||
if (eptcfg != 2)
|
||||
book3e_htw_mode = PPC_HTW_NONE;
|
||||
|
||||
for (psize = 0; psize < MMU_PAGE_COUNT; ++psize) {
|
||||
struct mmu_psize_def *def = &mmu_psize_defs[psize];
|
||||
|
||||
if (!def->shift)
|
||||
continue;
|
||||
|
||||
if (tlb1ps & (1U << (def->shift - 10))) {
|
||||
def->flags |= MMU_PAGE_SIZE_DIRECT;
|
||||
|
||||
if (book3e_htw_mode && psize == MMU_PAGE_2M)
|
||||
def->flags |= MMU_PAGE_SIZE_INDIRECT;
|
||||
}
|
||||
}
|
||||
|
||||
goto out;
|
||||
}
|
||||
#endif
|
||||
out:
|
||||
/* Cleanup array and print summary */
|
||||
pr_info("MMU: Supported page sizes\n");
|
||||
for (psize = 0; psize < MMU_PAGE_COUNT; ++psize) {
|
||||
struct mmu_psize_def *def = &mmu_psize_defs[psize];
|
||||
const char *__page_type_names[] = {
|
||||
"unsupported",
|
||||
"direct",
|
||||
"indirect",
|
||||
"direct & indirect"
|
||||
};
|
||||
if (def->flags == 0) {
|
||||
def->shift = 0;
|
||||
continue;
|
||||
}
|
||||
pr_info(" %8ld KB as %s\n", 1ul << (def->shift - 10),
|
||||
__page_type_names[def->flags & 0x3]);
|
||||
}
|
||||
}
|
||||
|
||||
static void __init setup_mmu_htw(void)
|
||||
{
|
||||
/*
|
||||
* If we want to use HW tablewalk, enable it by patching the TLB miss
|
||||
* handlers to branch to the one dedicated to it.
|
||||
*/
|
||||
|
||||
switch (book3e_htw_mode) {
|
||||
#ifdef CONFIG_PPC_E500
|
||||
case PPC_HTW_E6500:
|
||||
extlb_level_exc = EX_TLB_SIZE;
|
||||
patch_exception(0x1c0, exc_data_tlb_miss_e6500_book3e);
|
||||
patch_exception(0x1e0, exc_instruction_tlb_miss_e6500_book3e);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
pr_info("MMU: Book3E HW tablewalk %s\n",
|
||||
book3e_htw_mode != PPC_HTW_NONE ? "enabled" : "not supported");
|
||||
}
|
||||
|
||||
/*
|
||||
* Early initialization of the MMU TLB code
|
||||
*/
|
||||
static void early_init_this_mmu(void)
|
||||
{
|
||||
unsigned int mas4;
|
||||
|
||||
/* Set MAS4 based on page table setting */
|
||||
|
||||
mas4 = 0x4 << MAS4_WIMGED_SHIFT;
|
||||
switch (book3e_htw_mode) {
|
||||
case PPC_HTW_E6500:
|
||||
mas4 |= MAS4_INDD;
|
||||
mas4 |= BOOK3E_PAGESZ_2M << MAS4_TSIZED_SHIFT;
|
||||
mas4 |= MAS4_TLBSELD(1);
|
||||
mmu_pte_psize = MMU_PAGE_2M;
|
||||
break;
|
||||
|
||||
case PPC_HTW_NONE:
|
||||
mas4 |= BOOK3E_PAGESZ_4K << MAS4_TSIZED_SHIFT;
|
||||
mmu_pte_psize = mmu_virtual_psize;
|
||||
break;
|
||||
}
|
||||
mtspr(SPRN_MAS4, mas4);
|
||||
|
||||
#ifdef CONFIG_PPC_E500
|
||||
if (mmu_has_feature(MMU_FTR_TYPE_FSL_E)) {
|
||||
unsigned int num_cams;
|
||||
bool map = true;
|
||||
|
||||
/* use a quarter of the TLBCAM for bolted linear map */
|
||||
num_cams = (mfspr(SPRN_TLB1CFG) & TLBnCFG_N_ENTRY) / 4;
|
||||
|
||||
/*
|
||||
* Only do the mapping once per core, or else the
|
||||
* transient mapping would cause problems.
|
||||
*/
|
||||
#ifdef CONFIG_SMP
|
||||
if (hweight32(get_tensr()) > 1)
|
||||
map = false;
|
||||
#endif
|
||||
|
||||
if (map)
|
||||
linear_map_top = map_mem_in_cams(linear_map_top,
|
||||
num_cams, false, true);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* A sync won't hurt us after mucking around with
|
||||
* the MMU configuration
|
||||
*/
|
||||
mb();
|
||||
}
|
||||
|
||||
static void __init early_init_mmu_global(void)
|
||||
{
|
||||
/* XXX This should be decided at runtime based on supported
|
||||
* page sizes in the TLB, but for now let's assume 16M is
|
||||
* always there and a good fit (which it probably is)
|
||||
*
|
||||
* Freescale booke only supports 4K pages in TLB0, so use that.
|
||||
*/
|
||||
if (mmu_has_feature(MMU_FTR_TYPE_FSL_E))
|
||||
mmu_vmemmap_psize = MMU_PAGE_4K;
|
||||
else
|
||||
mmu_vmemmap_psize = MMU_PAGE_16M;
|
||||
|
||||
/* XXX This code only checks for TLB 0 capabilities and doesn't
|
||||
* check what page size combos are supported by the HW. It
|
||||
* also doesn't handle the case where a separate array holds
|
||||
* the IND entries from the array loaded by the PT.
|
||||
*/
|
||||
/* Look for supported page sizes */
|
||||
setup_page_sizes();
|
||||
|
||||
/* Look for HW tablewalk support */
|
||||
setup_mmu_htw();
|
||||
|
||||
#ifdef CONFIG_PPC_E500
|
||||
if (mmu_has_feature(MMU_FTR_TYPE_FSL_E)) {
|
||||
if (book3e_htw_mode == PPC_HTW_NONE) {
|
||||
extlb_level_exc = EX_TLB_SIZE;
|
||||
patch_exception(0x1c0, exc_data_tlb_miss_bolted_book3e);
|
||||
patch_exception(0x1e0,
|
||||
exc_instruction_tlb_miss_bolted_book3e);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Set the global containing the top of the linear mapping
|
||||
* for use by the TLB miss code
|
||||
*/
|
||||
linear_map_top = memblock_end_of_DRAM();
|
||||
|
||||
ioremap_bot = IOREMAP_BASE;
|
||||
}
|
||||
|
||||
static void __init early_mmu_set_memory_limit(void)
|
||||
{
|
||||
#ifdef CONFIG_PPC_E500
|
||||
if (mmu_has_feature(MMU_FTR_TYPE_FSL_E)) {
|
||||
/*
|
||||
* Limit memory so we dont have linear faults.
|
||||
* Unlike memblock_set_current_limit, which limits
|
||||
* memory available during early boot, this permanently
|
||||
* reduces the memory available to Linux. We need to
|
||||
* do this because highmem is not supported on 64-bit.
|
||||
*/
|
||||
memblock_enforce_memory_limit(linear_map_top);
|
||||
}
|
||||
#endif
|
||||
|
||||
memblock_set_current_limit(linear_map_top);
|
||||
}
|
||||
|
||||
/* boot cpu only */
|
||||
void __init early_init_mmu(void)
|
||||
{
|
||||
early_init_mmu_global();
|
||||
early_init_this_mmu();
|
||||
early_mmu_set_memory_limit();
|
||||
}
|
||||
|
||||
void early_init_mmu_secondary(void)
|
||||
{
|
||||
early_init_this_mmu();
|
||||
}
|
||||
|
||||
void setup_initial_memory_limit(phys_addr_t first_memblock_base,
|
||||
phys_addr_t first_memblock_size)
|
||||
{
|
||||
/* On non-FSL Embedded 64-bit, we adjust the RMA size to match
|
||||
* the bolted TLB entry. We know for now that only 1G
|
||||
* entries are supported though that may eventually
|
||||
* change.
|
||||
*
|
||||
* on FSL Embedded 64-bit, usually all RAM is bolted, but with
|
||||
* unusual memory sizes it's possible for some RAM to not be mapped
|
||||
* (such RAM is not used at all by Linux, since we don't support
|
||||
* highmem on 64-bit). We limit ppc64_rma_size to what would be
|
||||
* mappable if this memblock is the only one. Additional memblocks
|
||||
* can only increase, not decrease, the amount that ends up getting
|
||||
* mapped. We still limit max to 1G even if we'll eventually map
|
||||
* more. This is due to what the early init code is set up to do.
|
||||
*
|
||||
* We crop it to the size of the first MEMBLOCK to
|
||||
* avoid going over total available memory just in case...
|
||||
*/
|
||||
#ifdef CONFIG_PPC_E500
|
||||
if (early_mmu_has_feature(MMU_FTR_TYPE_FSL_E)) {
|
||||
unsigned long linear_sz;
|
||||
unsigned int num_cams;
|
||||
|
||||
/* use a quarter of the TLBCAM for bolted linear map */
|
||||
num_cams = (mfspr(SPRN_TLB1CFG) & TLBnCFG_N_ENTRY) / 4;
|
||||
|
||||
linear_sz = map_mem_in_cams(first_memblock_size, num_cams,
|
||||
true, true);
|
||||
|
||||
ppc64_rma_size = min_t(u64, linear_sz, 0x40000000);
|
||||
} else
|
||||
#endif
|
||||
ppc64_rma_size = min_t(u64, first_memblock_size, 0x40000000);
|
||||
|
||||
/* Finally limit subsequent allocations */
|
||||
memblock_set_current_limit(first_memblock_base + ppc64_rma_size);
|
||||
}
|
||||
@@ -893,201 +893,6 @@ virt_page_table_tlb_miss_whacko_fault:
|
||||
TLB_MISS_EPILOG_ERROR
|
||||
b exc_data_storage_book3e
|
||||
|
||||
|
||||
/**************************************************************
|
||||
* *
|
||||
* TLB miss handling for Book3E with hw page table support *
|
||||
* *
|
||||
**************************************************************/
|
||||
|
||||
|
||||
/* Data TLB miss */
|
||||
START_EXCEPTION(data_tlb_miss_htw)
|
||||
TLB_MISS_PROLOG
|
||||
|
||||
/* Now we handle the fault proper. We only save DEAR in normal
|
||||
* fault case since that's the only interesting values here.
|
||||
* We could probably also optimize by not saving SRR0/1 in the
|
||||
* linear mapping case but I'll leave that for later
|
||||
*/
|
||||
mfspr r14,SPRN_ESR
|
||||
mfspr r16,SPRN_DEAR /* get faulting address */
|
||||
srdi r11,r16,44 /* get region */
|
||||
xoris r11,r11,0xc
|
||||
cmpldi cr0,r11,0 /* linear mapping ? */
|
||||
beq tlb_load_linear /* yes -> go to linear map load */
|
||||
cmpldi cr1,r11,1 /* vmalloc mapping ? */
|
||||
|
||||
/* We do the user/kernel test for the PID here along with the RW test
|
||||
*/
|
||||
srdi. r11,r16,60 /* Check for user region */
|
||||
ld r15,PACAPGD(r13) /* Load user pgdir */
|
||||
beq htw_tlb_miss
|
||||
|
||||
/* XXX replace the RMW cycles with immediate loads + writes */
|
||||
1: mfspr r10,SPRN_MAS1
|
||||
rlwinm r10,r10,0,16,1 /* Clear TID */
|
||||
mtspr SPRN_MAS1,r10
|
||||
ld r15,PACA_KERNELPGD(r13) /* Load kernel pgdir */
|
||||
beq+ cr1,htw_tlb_miss
|
||||
|
||||
/* We got a crappy address, just fault with whatever DEAR and ESR
|
||||
* are here
|
||||
*/
|
||||
TLB_MISS_EPILOG_ERROR
|
||||
b exc_data_storage_book3e
|
||||
|
||||
/* Instruction TLB miss */
|
||||
START_EXCEPTION(instruction_tlb_miss_htw)
|
||||
TLB_MISS_PROLOG
|
||||
|
||||
/* If we take a recursive fault, the second level handler may need
|
||||
* to know whether we are handling a data or instruction fault in
|
||||
* order to get to the right store fault handler. We provide that
|
||||
* info by keeping a crazy value for ESR in r14
|
||||
*/
|
||||
li r14,-1 /* store to exception frame is done later */
|
||||
|
||||
/* Now we handle the fault proper. We only save DEAR in the non
|
||||
* linear mapping case since we know the linear mapping case will
|
||||
* not re-enter. We could indeed optimize and also not save SRR0/1
|
||||
* in the linear mapping case but I'll leave that for later
|
||||
*
|
||||
* Faulting address is SRR0 which is already in r16
|
||||
*/
|
||||
srdi r11,r16,44 /* get region */
|
||||
xoris r11,r11,0xc
|
||||
cmpldi cr0,r11,0 /* linear mapping ? */
|
||||
beq tlb_load_linear /* yes -> go to linear map load */
|
||||
cmpldi cr1,r11,1 /* vmalloc mapping ? */
|
||||
|
||||
/* We do the user/kernel test for the PID here along with the RW test
|
||||
*/
|
||||
srdi. r11,r16,60 /* Check for user region */
|
||||
ld r15,PACAPGD(r13) /* Load user pgdir */
|
||||
beq htw_tlb_miss
|
||||
|
||||
/* XXX replace the RMW cycles with immediate loads + writes */
|
||||
1: mfspr r10,SPRN_MAS1
|
||||
rlwinm r10,r10,0,16,1 /* Clear TID */
|
||||
mtspr SPRN_MAS1,r10
|
||||
ld r15,PACA_KERNELPGD(r13) /* Load kernel pgdir */
|
||||
beq+ htw_tlb_miss
|
||||
|
||||
/* We got a crappy address, just fault */
|
||||
TLB_MISS_EPILOG_ERROR
|
||||
b exc_instruction_storage_book3e
|
||||
|
||||
|
||||
/*
|
||||
* This is the guts of the second-level TLB miss handler for direct
|
||||
* misses. We are entered with:
|
||||
*
|
||||
* r16 = virtual page table faulting address
|
||||
* r15 = PGD pointer
|
||||
* r14 = ESR
|
||||
* r13 = PACA
|
||||
* r12 = TLB exception frame in PACA
|
||||
* r11 = crap (free to use)
|
||||
* r10 = crap (free to use)
|
||||
*
|
||||
* It can be re-entered by the linear mapping miss handler. However, to
|
||||
* avoid too much complication, it will save/restore things for us
|
||||
*/
|
||||
htw_tlb_miss:
|
||||
#ifdef CONFIG_PPC_KUAP
|
||||
mfspr r10,SPRN_MAS1
|
||||
rlwinm. r10,r10,0,0x3fff0000
|
||||
beq- htw_tlb_miss_fault /* KUAP fault */
|
||||
#endif
|
||||
/* Search if we already have a TLB entry for that virtual address, and
|
||||
* if we do, bail out.
|
||||
*
|
||||
* MAS1:IND should be already set based on MAS4
|
||||
*/
|
||||
PPC_TLBSRX_DOT(0,R16)
|
||||
beq htw_tlb_miss_done
|
||||
|
||||
/* Now, we need to walk the page tables. First check if we are in
|
||||
* range.
|
||||
*/
|
||||
rldicl. r10,r16,64-PGTABLE_EADDR_SIZE,PGTABLE_EADDR_SIZE+4
|
||||
bne- htw_tlb_miss_fault
|
||||
|
||||
/* Get the PGD pointer */
|
||||
cmpldi cr0,r15,0
|
||||
beq- htw_tlb_miss_fault
|
||||
|
||||
/* Get to PGD entry */
|
||||
rldicl r11,r16,64-(PGDIR_SHIFT-3),64-PGD_INDEX_SIZE-3
|
||||
clrrdi r10,r11,3
|
||||
ldx r15,r10,r15
|
||||
cmpdi cr0,r15,0
|
||||
bge htw_tlb_miss_fault
|
||||
|
||||
/* Get to PUD entry */
|
||||
rldicl r11,r16,64-(PUD_SHIFT-3),64-PUD_INDEX_SIZE-3
|
||||
clrrdi r10,r11,3
|
||||
ldx r15,r10,r15
|
||||
cmpdi cr0,r15,0
|
||||
bge htw_tlb_miss_fault
|
||||
|
||||
/* Get to PMD entry */
|
||||
rldicl r11,r16,64-(PMD_SHIFT-3),64-PMD_INDEX_SIZE-3
|
||||
clrrdi r10,r11,3
|
||||
ldx r15,r10,r15
|
||||
cmpdi cr0,r15,0
|
||||
bge htw_tlb_miss_fault
|
||||
|
||||
/* Ok, we're all right, we can now create an indirect entry for
|
||||
* a 1M or 256M page.
|
||||
*
|
||||
* The last trick is now that because we use "half" pages for
|
||||
* the HTW (1M IND is 2K and 256M IND is 32K) we need to account
|
||||
* for an added LSB bit to the RPN. For 64K pages, there is no
|
||||
* problem as we already use 32K arrays (half PTE pages), but for
|
||||
* 4K page we need to extract a bit from the virtual address and
|
||||
* insert it into the "PA52" bit of the RPN.
|
||||
*/
|
||||
rlwimi r15,r16,32-9,20,20
|
||||
/* Now we build the MAS:
|
||||
*
|
||||
* MAS 0 : Fully setup with defaults in MAS4 and TLBnCFG
|
||||
* MAS 1 : Almost fully setup
|
||||
* - PID already updated by caller if necessary
|
||||
* - TSIZE for now is base ind page size always
|
||||
* MAS 2 : Use defaults
|
||||
* MAS 3+7 : Needs to be done
|
||||
*/
|
||||
ori r10,r15,(BOOK3E_PAGESZ_4K << MAS3_SPSIZE_SHIFT)
|
||||
|
||||
srdi r16,r10,32
|
||||
mtspr SPRN_MAS3,r10
|
||||
mtspr SPRN_MAS7,r16
|
||||
|
||||
tlbwe
|
||||
|
||||
htw_tlb_miss_done:
|
||||
/* We don't bother with restoring DEAR or ESR since we know we are
|
||||
* level 0 and just going back to userland. They are only needed
|
||||
* if you are going to take an access fault
|
||||
*/
|
||||
TLB_MISS_EPILOG_SUCCESS
|
||||
rfi
|
||||
|
||||
htw_tlb_miss_fault:
|
||||
/* We need to check if it was an instruction miss. We know this
|
||||
* though because r14 would contain -1
|
||||
*/
|
||||
cmpdi cr0,r14,-1
|
||||
beq 1f
|
||||
mtspr SPRN_DEAR,r16
|
||||
mtspr SPRN_ESR,r14
|
||||
TLB_MISS_EPILOG_ERROR
|
||||
b exc_data_storage_book3e
|
||||
1: TLB_MISS_EPILOG_ERROR
|
||||
b exc_instruction_storage_book3e
|
||||
|
||||
/*
|
||||
* This is the guts of "any" level TLB miss handler for kernel linear
|
||||
* mapping misses. We are entered with:
|
||||
|
||||
@@ -18,15 +18,23 @@
|
||||
#include <linux/types.h>
|
||||
#include <asm/hvcall.h>
|
||||
#include <asm/machdep.h>
|
||||
|
||||
#include "plpks.h"
|
||||
#include <asm/plpks.h>
|
||||
#include <asm/firmware.h>
|
||||
|
||||
static u8 *ospassword;
|
||||
static u16 ospasswordlength;
|
||||
|
||||
// Retrieved with H_PKS_GET_CONFIG
|
||||
static u8 version;
|
||||
static u16 objoverhead;
|
||||
static u16 maxpwsize;
|
||||
static u16 maxobjsize;
|
||||
static s16 maxobjlabelsize;
|
||||
static u32 totalsize;
|
||||
static u32 usedspace;
|
||||
static u32 supportedpolicies;
|
||||
static u32 maxlargeobjectsize;
|
||||
static u64 signedupdatealgorithms;
|
||||
|
||||
struct plpks_auth {
|
||||
u8 version;
|
||||
@@ -113,7 +121,8 @@ static int plpks_gen_password(void)
|
||||
u8 *password, consumer = PLPKS_OS_OWNER;
|
||||
int rc;
|
||||
|
||||
password = kzalloc(maxpwsize, GFP_KERNEL);
|
||||
// The password must not cross a page boundary, so we align to the next power of 2
|
||||
password = kzalloc(roundup_pow_of_two(maxpwsize), GFP_KERNEL);
|
||||
if (!password)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -149,7 +158,9 @@ static struct plpks_auth *construct_auth(u8 consumer)
|
||||
if (consumer > PLPKS_OS_OWNER)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
auth = kzalloc(struct_size(auth, password, maxpwsize), GFP_KERNEL);
|
||||
// The auth structure must not cross a page boundary and must be
|
||||
// 16 byte aligned. We align to the next largest power of 2
|
||||
auth = kzalloc(roundup_pow_of_two(struct_size(auth, password, maxpwsize)), GFP_KERNEL);
|
||||
if (!auth)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
@@ -183,7 +194,8 @@ static struct label *construct_label(char *component, u8 varos, u8 *name,
|
||||
if (component && slen > sizeof(label->attr.prefix))
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
label = kzalloc(sizeof(*label), GFP_KERNEL);
|
||||
// The label structure must not cross a page boundary, so we align to the next power of 2
|
||||
label = kzalloc(roundup_pow_of_two(sizeof(*label)), GFP_KERNEL);
|
||||
if (!label)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
@@ -203,32 +215,157 @@ static struct label *construct_label(char *component, u8 varos, u8 *name,
|
||||
static int _plpks_get_config(void)
|
||||
{
|
||||
unsigned long retbuf[PLPAR_HCALL_BUFSIZE] = { 0 };
|
||||
struct {
|
||||
struct config {
|
||||
u8 version;
|
||||
u8 flags;
|
||||
__be32 rsvd0;
|
||||
__be16 rsvd0;
|
||||
__be16 objoverhead;
|
||||
__be16 maxpwsize;
|
||||
__be16 maxobjlabelsize;
|
||||
__be16 maxobjsize;
|
||||
__be32 totalsize;
|
||||
__be32 usedspace;
|
||||
__be32 supportedpolicies;
|
||||
__be64 rsvd1;
|
||||
} __packed config;
|
||||
__be32 maxlargeobjectsize;
|
||||
__be64 signedupdatealgorithms;
|
||||
u8 rsvd1[476];
|
||||
} __packed * config;
|
||||
size_t size;
|
||||
int rc = 0;
|
||||
|
||||
size = sizeof(*config);
|
||||
|
||||
// Config struct must not cross a page boundary. So long as the struct
|
||||
// size is a power of 2, this should be fine as alignment is guaranteed
|
||||
config = kzalloc(size, GFP_KERNEL);
|
||||
if (!config) {
|
||||
rc = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
|
||||
rc = plpar_hcall(H_PKS_GET_CONFIG, retbuf, virt_to_phys(config), size);
|
||||
|
||||
if (rc != H_SUCCESS) {
|
||||
rc = pseries_status_to_err(rc);
|
||||
goto err;
|
||||
}
|
||||
|
||||
version = config->version;
|
||||
objoverhead = be16_to_cpu(config->objoverhead);
|
||||
maxpwsize = be16_to_cpu(config->maxpwsize);
|
||||
maxobjsize = be16_to_cpu(config->maxobjsize);
|
||||
maxobjlabelsize = be16_to_cpu(config->maxobjlabelsize);
|
||||
totalsize = be32_to_cpu(config->totalsize);
|
||||
usedspace = be32_to_cpu(config->usedspace);
|
||||
supportedpolicies = be32_to_cpu(config->supportedpolicies);
|
||||
maxlargeobjectsize = be32_to_cpu(config->maxlargeobjectsize);
|
||||
signedupdatealgorithms = be64_to_cpu(config->signedupdatealgorithms);
|
||||
|
||||
// Validate that the numbers we get back match the requirements of the spec
|
||||
if (maxpwsize < 32) {
|
||||
pr_err("Invalid Max Password Size received from hypervisor (%d < 32)\n", maxpwsize);
|
||||
rc = -EIO;
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (maxobjlabelsize < 255) {
|
||||
pr_err("Invalid Max Object Label Size received from hypervisor (%d < 255)\n",
|
||||
maxobjlabelsize);
|
||||
rc = -EIO;
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (totalsize < 4096) {
|
||||
pr_err("Invalid Total Size received from hypervisor (%d < 4096)\n", totalsize);
|
||||
rc = -EIO;
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (version >= 3 && maxlargeobjectsize >= 65536 && maxobjsize != 0xFFFF) {
|
||||
pr_err("Invalid Max Object Size (0x%x != 0xFFFF)\n", maxobjsize);
|
||||
rc = -EIO;
|
||||
goto err;
|
||||
}
|
||||
|
||||
err:
|
||||
kfree(config);
|
||||
return rc;
|
||||
}
|
||||
|
||||
u8 plpks_get_version(void)
|
||||
{
|
||||
return version;
|
||||
}
|
||||
|
||||
u16 plpks_get_objoverhead(void)
|
||||
{
|
||||
return objoverhead;
|
||||
}
|
||||
|
||||
u16 plpks_get_maxpwsize(void)
|
||||
{
|
||||
return maxpwsize;
|
||||
}
|
||||
|
||||
u16 plpks_get_maxobjectsize(void)
|
||||
{
|
||||
return maxobjsize;
|
||||
}
|
||||
|
||||
u16 plpks_get_maxobjectlabelsize(void)
|
||||
{
|
||||
return maxobjlabelsize;
|
||||
}
|
||||
|
||||
u32 plpks_get_totalsize(void)
|
||||
{
|
||||
return totalsize;
|
||||
}
|
||||
|
||||
u32 plpks_get_usedspace(void)
|
||||
{
|
||||
// Unlike other config values, usedspace regularly changes as objects
|
||||
// are updated, so we need to refresh.
|
||||
int rc = _plpks_get_config();
|
||||
if (rc) {
|
||||
pr_err("Couldn't get config, rc: %d\n", rc);
|
||||
return 0;
|
||||
}
|
||||
return usedspace;
|
||||
}
|
||||
|
||||
u32 plpks_get_supportedpolicies(void)
|
||||
{
|
||||
return supportedpolicies;
|
||||
}
|
||||
|
||||
u32 plpks_get_maxlargeobjectsize(void)
|
||||
{
|
||||
return maxlargeobjectsize;
|
||||
}
|
||||
|
||||
u64 plpks_get_signedupdatealgorithms(void)
|
||||
{
|
||||
return signedupdatealgorithms;
|
||||
}
|
||||
|
||||
u16 plpks_get_passwordlen(void)
|
||||
{
|
||||
return ospasswordlength;
|
||||
}
|
||||
|
||||
bool plpks_is_available(void)
|
||||
{
|
||||
int rc;
|
||||
|
||||
size = sizeof(config);
|
||||
if (!firmware_has_feature(FW_FEATURE_LPAR))
|
||||
return false;
|
||||
|
||||
rc = plpar_hcall(H_PKS_GET_CONFIG, retbuf, virt_to_phys(&config), size);
|
||||
rc = _plpks_get_config();
|
||||
if (rc)
|
||||
return false;
|
||||
|
||||
if (rc != H_SUCCESS)
|
||||
return pseries_status_to_err(rc);
|
||||
|
||||
maxpwsize = be16_to_cpu(config.maxpwsize);
|
||||
maxobjsize = be16_to_cpu(config.maxobjsize);
|
||||
|
||||
return 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
static int plpks_confirm_object_flushed(struct label *label,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user