mirror of
https://github.com/torvalds/linux.git
synced 2026-07-31 03:27:03 +02:00
Merge keystone/android-mainline-keystone-qcom-release.5.16.0 (0570482) into msm-pineapple
* refs/heads/tmp-0570482:
ANDROID: qki: Cleanup the consolidate fragment
ANDROID: GKI: Enable CONFIG_SERIAL_8250_RUNTIME_UARTS=0
ANDROID: clang: update to 14.0.2
Revert "ANDROID: GKI: defconfig: enable BTF debug info"
Revert "clk: Emit a stern warning with writable debugfs enabled"
UPSTREAM: lib/crypto: blake2s: avoid indirect calls to compression function for Clang CFI
ANDROID: kleaf: build/kleaf -> build/kernel/kleaf
ANDROID: Revert "perf/core: Use static_call to optimize perf_guest_info_callbacks"
ANDROID: build/build-tools -> build/kernel/build-tools.
Revert "ANDROID: GKI: enable test_stackinit kernel module"
ANDROID: incremental-fs: populate userns before calling vfs_rename
ANDROID: incremental-fs: remove index and incomplete dir on umount
Revert "ANDROID: Support CONFIG_CMDLINE_EXTEND"
ANDROID: fs/fuse: Use extended init flags for FUSE_PASSTHROUGH
FROMLIST: kbuild: install the modules.order for external modules
Revert "FROMLIST: kbuild: install the modules.order for external modules"
ANDROID: Re-apply vendor hooks for rt_mutex information of blocked tasks
ANDROID: Re-apply vendor hooks for information of blocked tasks
mm/memremap: add ZONE_DEVICE support for compound pages
mm/page_alloc: refactor memmap_init_zone_device() page init
mm/page_alloc: split prep_compound_page into head and tail subparts
mm: defer kmemleak object creation of module_alloc()
mm: kmemleak: alloc gray object for reserved region with direct map
kmemleak: fix kmemleak false positive report with HW tag-based kasan enable
mm: slab: make slab iterator functions static
mm/slab_common: use WARN() if cache still has objects on destroy
fs/ioctl: remove unnecessary __user annotation
ocfs2: remove redundant assignment to variable free_space
ocfs2: use BUG_ON instead of if condition followed by BUG.
squashfs: provide backing_dev_info in order to disable read-ahead
fs/ntfs/attrib.c: fix one kernel-doc comment
scripts/spelling.txt: add "oveflow"
ocfs2: cluster: use default_groups in kobj_type
ia64: topology: use default_groups in kobj_type
ocfs2: remove redundant assignment to pointer root_bh
ia64: fix typo in a comment
ocfs2: use default_groups in kobj_type
arch/ia64/kernel/setup.c: use swap() to make code cleaner
ocfs2: clearly handle ocfs2_grab_pages_for_write() return value
ia64: module: use swap() to make code cleaner
trace/hwlat: make use of the helper function kthread_run_on_cpu()
trace/osnoise: make use of the helper function kthread_run_on_cpu()
rcutorture: make use of the helper function kthread_run_on_cpu()
ring-buffer: make use of the helper function kthread_run_on_cpu()
RDMA/siw: make use of the helper function kthread_run_on_cpu()
kthread: add the helper function kthread_run_on_cpu()
ALSA: hda: intel-dsp-config: reorder the config table
ALSA: hda: intel-dsp-config: add JasperLake support
leds: lp55xx: initialise output direction from dts
ARM: dts: omap3-n900: Fix lp5523 for multi color
leds: ktd2692: Drop calling dev_of_node() in ktd2692_parse_dt
leds: lgm-sso: Get rid of duplicate of_node assignment
leds: tca6507: Get rid of duplicate of_node assignment
leds: leds-fsg: Drop FSG3 LED driver
leds: lp50xx: remove unused variable
dt-bindings: leds: Replace moonlight with indicator in mt6360 example
leds: led-core: Update fwnode with device_set_node
leds: tca6507: use swap() to make code cleaner
leds: Add mt6360 driver
xfs: fix online fsck handling of v5 feature bits on secondary supers
dt-bindings: net: mdio: Drop resets/reset-names child properties
x86/entry_32: Fix segment exceptions
dt-bindings: mailbox: Add more protocol and client ID
mailbox: qcom-ipcc: Support interrupt wake up from suspend
mailbox: qcom-ipcc: Support more IPCC instance
mailbox: qcom-ipcc: Dynamic alloc for channel arrangement
mailbox: change mailbox-mpfs compatible string
mailbox: pcc: Handle all PCC subtypes correctly in pcc_mbox_irq
mailbox: pcc: Avoid using the uninitialized variable 'dev'
mailbox: mtk: add missing of_node_put before return
mailbox: zynq: add missing of_node_put before return
mailbox: imx: Fix an IS_ERR() vs NULL bug
mailbox: hi3660: convert struct comments to kernel-doc notation
mailbox: add control_by_sw for mt8195
mailbox: mtk-cmdq: Silent EPROBE_DEFER errors for clks
mailbox: fix gce_num of mt8192 driver data
mailbox: apple: Bind to generic compatibles
dt-bindings: mailbox: apple,mailbox: Add generic and t6000 compatibles
xfs: take the ILOCK when readdir inspects directory mapping data
9p, afs, ceph, nfs: Use current_is_kswapd() rather than gfpflags_allow_blocking()
fscache: Add a tracepoint for cookie use/unuse
fscache: Rewrite documentation
ceph: add fscache writeback support
ceph: conversion to new fscache API
openrisc: init: Add support for common clk
i2c: sh_mobile: remove unneeded semicolon
dt-bindings: clock: samsung: convert S5Pv210 to dtschema
dt-bindings: clock: samsung: convert Exynos5410 to dtschema
dt-bindings: clock: samsung: convert Exynos5260 to dtschema
dt-bindings: clock: samsung: extend Exynos7 bindings with UFS
dt-bindings: clock: samsung: convert Exynos7 to dtschema
dt-bindings: clock: samsung: convert Exynos5433 to dtschema
dt-bindings: i2c: maxim,max96712: Add bindings for Maxim Integrated MAX96712
dt-bindings: iio: adi,ltc2983: Fix 64-bit property sizes
dt-bindings: power: maxim,max17040: Fix incorrect type for 'maxim,rcomp'
dt-bindings: interrupt-controller: arm,gic-v3: Fix 'interrupts' cell size in example
dt-bindings: iio/magnetometer: yamaha,yas530: Fix invalid 'interrupts' in example
dt-bindings: clock: imx5: Drop clock consumer node from example
dt-bindings: Drop required 'interrupt-parent'
dt-bindings: net: ti,dp83869: Drop value on boolean 'ti,max-output-impedance'
dt-bindings: net: wireless: mt76: Fix 8-bit property sizes
dt-bindings: PCI: snps,dw-pcie-ep: Drop conflicting 'max-functions' schema
dt-bindings: i2c: st,stm32-i2c: Make each example a separate entry
dt-bindings: net: stm32-dwmac: Make each example a separate entry
dt-bindings: net: Cleanup MDIO node schemas
ALSA: hda: cs35l41: fix double free on error in probe()
MIPS: ath79: drop _machine_restart again
PCI: brcmstb: Augment driver for MIPs SOCs
MIPS: bmips: Remove obsolete DMA mapping support
MIPS: bmips: Add support PCIe controller device nodes
dt-bindings: PCI: Add compatible string for Brcmstb 74[23]5 MIPs SOCs
genirq/msi: Populate sysfs entry only once
RDMA/irdma: Remove the redundant return
nfs: Implement cache I/O by accessing the cache directly
nfs: Convert to new fscache volume/cookie API
9p: Copy local writes to the cache when writing to the server
9p: Use fscache indexing rewrite and reenable caching
dt-bindings: net: Add missing properties used in examples
dt-bindings: net: snps,dwmac: Enable burst length properties for more compatibles
dt-bindings: net: mdio: Allow any child node name
dt-bindings: vendor-prefixes: Add Sunplus
MIPS: compressed: Fix build with ZSTD compression
MIPS: BCM47XX: Add support for Netgear WN2500RP v1 & v2
MIPS: BCM47XX: Add support for Netgear R6300 v1
MIPS: BCM47XX: Add LEDs and buttons for Asus RTN-10U
MIPS: BCM47XX: Add board entry for Linksys WRT320N v1
MIPS: BCM47XX: Define Linksys WRT310N V2 buttons
MIPS: Remove duplicated include in local.h
ALSA: hda: Fix dependencies of CS35L41 on SPI/I2C buses
of/fdt: Don't worry about non-memory region overlap for no-map
of: unittest: remove unneeded semicolon
of: base: Improve argument length mismatch error
of: base: Fix phandle argument length mismatch error message
ALSA: hda: Fix dependency on ASoC cs35l41 codec
clk: visconti: Remove pointless NULL check in visconti_pll_add_lookup()
RDMA/rxe: Use the standard method to produce udp source port
RDMA/irdma: Make the source udp port vary
RDMA/hns: Replace get_udp_sport with rdma_get_udp_sport
RDMA/core: Calculate UDP source port based on flow label or lqpn/rqpn
ASoC: cs35l41: Add support for hibernate memory retention mode
ASoC: cs35l41: Update handling of test key registers
IB/qib: Fix typos
RDMA/rtrs-clt: Rename rtrs_clt to rtrs_clt_sess
RDMA/rtrs-srv: Rename rtrs_srv to rtrs_srv_sess
RDMA/rtrs-clt: Rename rtrs_clt_sess to rtrs_clt_path
RDMA/rtrs-srv: Rename rtrs_srv_sess to rtrs_srv_path
RDMA/rtrs: Rename rtrs_sess to rtrs_path
RDMA/hns: Modify the hop num of HIP09 EQ to 1
afs: Skip truncation on the server of data we haven't written yet
afs: Copy local writes to the cache when writing to the server
afs: Convert afs to use the new fscache API
fscache, cachefiles: Display stat of culling events
fscache, cachefiles: Display stats of no-space events
cachefiles: Allow cachefiles to actually function
fscache, cachefiles: Store the volume coherency data
cachefiles: Implement the I/O routines
cachefiles: Implement cookie resize for truncate
cachefiles: Implement begin and end I/O operation
cachefiles: Implement backing file wrangling
cachefiles: Implement culling daemon commands
cachefiles: Mark a backing file in use with an inode flag
cachefiles: Implement metadata/coherency data storage in xattrs
cachefiles: Implement key to filename encoding
cachefiles: Implement object lifecycle funcs
cachefiles: Add tracepoints for calls to the VFS
cachefiles: Implement volume support
cachefiles: Implement cache registration and withdrawal
cachefiles: Implement a function to get/create a directory in the cache
vfs, cachefiles: Mark a backing file in use with an inode flag
cachefiles: Provide a function to check how much space there is
cachefiles: Register a miscdev and parse commands over it
cachefiles: Add security derivation
cachefiles: Add cache error reporting macro
cachefiles: Add a couple of tracepoints for logging errors
cachefiles: Add some error injection support
cachefiles: Define structs
cachefiles: Introduce rewritten driver
fscache: Provide a function to resize a cookie
fscache: Provide a function to note the release of a page
vfs, fscache: Implement pinning of cache usage for writeback
fscache: Implement higher-level write I/O interface
fscache: Implement raw I/O interface
netfs: Pass more information on how to deal with a hole in the cache
fscache: Provide a function to let the netfs update its coherency data
fscache: Provide read/write stat counters for the cache
fscache: Count data storage objects in a cache
fscache: Provide a means to begin an operation
fscache: Implement cookie invalidation
fscache: Implement cookie user counting and resource pinning
fscache: Implement simple cookie state machine
fscache: Add a function for a cache backend to note an I/O error
fscache: Provide and use cache methods to lookup/create/free a volume
fscache: Implement functions add/remove a cache
fscache: Implement cookie-level access helpers
fscache: Implement volume-level access helpers
fscache: Implement cache-level access helpers
fscache: Implement cookie registration
fscache: Implement volume registration
fscache: Implement cache registration
fscache: Implement a hash function
fscache: Introduce new driver
netfs: Pass a flag to ->prepare_write() to say if there's no alloc'd space
netfs: Display the netfs inode number in the netfs_read tracepoint
fscache: Remove the contents of the fscache driver, pending rewrite
cachefiles: Delete the cachefiles driver pending rewrite
fscache, cachefiles: Disable configuration
ALSA: intel_hdmi: Check for error num after setting mask
clk: mediatek: add mt7986 clock support
clk: mediatek: add mt7986 clock IDs
dt-bindings: clock: mediatek: document clk bindings for mediatek mt7986 SoC
clk: mediatek: clk-gate: Use regmap_{set/clear}_bits helpers
clk: mediatek: clk-gate: Shrink by adding clockgating bit check helper
clk: x86: Fix clk_gate_flags for RV_CLK_GATE
clk: x86: Use dynamic con_id string during clk registration
ACPI: APD: Add a fmw property clk-name
drivers: acpi: acpi_apd: Remove unused device property "is-rv"
x86: clk: clk-fch: Add support for newer family of AMD's SOC
clk: ingenic: Add MDMA and BDMA clocks
dt-bindings: clk/ingenic: Add MDMA and BDMA clocks
clk: bm1880: remove kfrees on static allocations
IB/iser: Align coding style across driver
ASoC: wcd9335: Keep a RX port value for each SLIM RX mux
ASoC: amd: acp: acp-mach: Change default RT1019 amp dev id
ALSA: virmidi: Remove duplicated code
ALSA: seq: virmidi: Add a drain operation
counter: 104-quad-8: Fix use-after-free by quad8_irq_handler
ASoC: topology: Fix typo
ASoC: fsl_asrc: refine the check of available clock divider
ASoC: Intel: bytcr_rt5640: Add support for external GPIO jack-detect
ASoC: Intel: bytcr_rt5640: Support retrieving the codec IRQ from the AMCR0F28 ACPI dev
ASoC: rt5640: Add support for boards with an external jack-detect GPIO
ASoC: rt5640: Allow snd_soc_component_set_jack() to override the codec IRQ
ASoC: rt5640: Change jack_work to a delayed_work
ASoC: rt5640: Fix possible NULL pointer deref on resume
ASoC: imx-card: improve the sound quality for low rate
ASoC: imx-card: Fix mclk calculation issue for akcodec
ASoC: imx-card: Need special setting for ak4497 on i.MX8MQ
powerpc/xmon: Dump XIVE information for online-only processors.
dt-bindings: xen: Clarify "reg" purpose
arm/xen: Read extended regions from DT and init Xen resource
xen/unpopulated-alloc: Add mechanism to use Xen resource
xen/balloon: Bring alloc(free)_xenballooned_pages helpers back
arm/xen: Switch to use gnttab_setup_auto_xlat_frames() for DT
xen/unpopulated-alloc: Drop check for virt_addr_valid() in fill_list()
xen/x86: obtain upper 32 bits of video frame buffer address for Dom0
xen/gntdev: fix unmap notification order
clk: Drop unused COMMON_CLK_STM32MP157_SCMI config
clk: st: clkgen-mux: search reg within node or parent
clk: st: clkgen-fsyn: search reg within node or parent
clk: Enable/Disable runtime PM for clk_summary
MAINTAINERS: Add entries for Toshiba Visconti PLL and clock controller
clk: visconti: Add support common clock driver and reset driver
dt-bindings: clock: Add DT bindings for SMU of Toshiba Visconti TMPV770x SoC
dt-bindings: clock: Add DT bindings for PLL of Toshiba Visconti TMPV770x SoC
clk: socfpga: s10: Make use of the helper function devm_platform_ioremap_resource()
clk: socfpga: agilex: Make use of the helper function devm_platform_ioremap_resource()
clk: socfpga: remove redundant assignment after a mask operation
clk: socfpga: remove redundant assignment on division
clk: qcom: gcc-sc7280: Mark gcc_cfg_noc_lpass_clk always enabled
clk: qcom: clk-alpha-pll: Increase PLL lock detect poll time
IB/iser: Remove un-needed casting to/from void pointer
IB/iser: Don't suppress send completions
IB/iser: Rename ib_ret local variable
IB/iser: Fix RNR errors
IB/iser: Remove deprecated pi_guard module param
IB/mlx5: Expose NDR speed through MAD
RDMA/cxgb4: Set queue pair state when being queried
RDMA/hns: Remove support for HIP06
RDMA/rxe: Delete deprecated module parameters interface
RDMA/mad: Delete duplicated init_query_mad functions
RDMA/rxe: Fix indentations and operators sytle
RDMA: Use default_groups in kobj_type
RDMA/mlx5: Print wc status on CQE error and dump needed
RDMA/rxe: Fix a typo in opcode name
RDMA/rxe: Remove the unused xmit_errors member
RDMA/rxe: Remove redundant err variable
RDMA/ocrdma: Remove unneeded variable
dt-bindings: display: novatek,nt36672a: Fix unevaluated properties warning
ALSA: hda: ALC287: Add Lenovo IdeaPad Slim 9i 14ITL5 speaker quirk
ASoC: ak4375: Fix unused function error
ALSA: hda/realtek: Add CS35L41 support for Thinkpad laptops
ALSA: hda/realtek: Add support for Legion 7 16ACHg6 laptop
ALSA: hda: cs35l41: Add support for CS35L41 in HDA systems
ALSA: hda/realtek: Re-order quirk entries for Lenovo
ALSA: hda/realtek: Add quirk for Legion Y9000X 2020
ASoC: cs4265: Add a remove() function
ASoC: wm_adsp: Add support for "toggle" preloaders
firmware: cs_dsp: Clear core reset for cache
ASoC: cs35l41: Correct handling of some registers in the cache
ASoC: cs35l41: Correct DSP power down
ASoC: cs35l41: Remove incorrect comment
ASoC: cs35l41: Add cs35l51/53 IDs
dt-bindings: rng: timeriomem_rng: convert TimerIO RNG to dtschema
dt-bindings: rng: st,rng: convert ST RNG to dtschema
dt-bindings: rng: ti,omap-rom-rng: convert OMAP ROM RNG to dtschema
dt-bindings: rng: nuvoton,npcm-rng: convert Nuvoton NPCM RNG to dtschema
dt-bindings: rng: ti,keystone-rng: convert TI Keystone RNG to dtschema
dt-bindings: rng: atmel,at91-trng: document sama7g5 TRNG
dt-bindings: rng: atmel,at91-trng: convert Atmel TRNG to dtschema
dt-bindings: rng: apm,x-gene-rng: convert APM RNG to dtschema
MIPS: retire "asm/llsc.h"
MIPS: rework local_t operation on MIPS64
MIPS: fix local_{add,sub}_return on MIPS64
mips/pci: remove redundant ret variable
MIPS: Loongson64: Add missing of_node_put() in ls2k_reset_init()
cxl/core: Remove cxld_const_init in cxl_decoder_alloc()
of: unittest: re-implement overlay tracking
of: unittest: change references to obsolete overlay id
dt-bindings: display: enable port jdi,lt070me05000
dt-bindings: vendor-prefixes: add OnePlus
dt-bindings: display: st,stm32-dsi: Fix panel node name in example
dt-bindings: memory: Document Tegra210 EMC table
powerpc/opal: use default_groups in kobj_type
powerpc/cacheinfo: use default_groups in kobj_type
ALSA: hda/cs8409: Fix Jack detection after resume
ALSA: hda/cs8409: Increase delay during jack detection
ASoC: fsl_mqs: fix MODULE_ALIAS
powerpc/sched: Remove unused TASK_SIZE_OF
powerpc/xive: Add missing null check after calling kmalloc
powerpc/floppy: Remove usage of the deprecated "pci-dma-compat.h" API
ALSA: hda/realtek - Fix silent output on Gigabyte X570 Aorus Master after reboot from Windows
dt-bindings: mux: Document mux-states property
dt-bindings: ti-serdes-mux: Add defines for J721S2 SoC
i2c: riic: Use platform_get_irq() to get the interrupt
i2c: sh_mobile: Use platform_get_irq_optional() to get the interrupt
i2c: bcm2835: Use platform_get_irq() to get the interrupt
MIPS: new Kconfig option ZBOOT_LOAD_ADDRESS
MIPS: enable both vmlinux.gz.itb and vmlinuz for generic
MIPS: signal: Return immediately if call fails
MIPS: signal: Protect against sigaltstack wraparound
mips: bcm63xx: add support for clk_set_parent()
mips: lantiq: add support for clk_set_parent()
dt-bindings: mips: Add Loongson-2K1000 reset support
MIPS: Loongson64: DTS: Add pm block node for Loongson-2K1000
MIPS: Loongson64: Add Loongson-2K1000 reset platform driver
MIPS: TXX9: Remove TX4939 SoC support
MIPS: TXX9: Remove rbtx4939 board support
arm64: tegra: Remove non existent Tegra194 reset
dt-bindings: sound: tegra: Add minItems for resets
ALSA: hda/tegra: Fix Tegra194 HDA reset failure
ASoC: cs35l41: Create shared function for boost configuration
ASoC: cs35l41: Create shared function for setting channels
ASoC: cs35l41: Create shared function for errata patches
ASoC: cs35l41: Move power initializations to reg_sequence
ASoC: cs35l41: Move cs35l41_otp_unpack to shared code
ASoC: cs35l41: Convert tables to shared source code
ASoC: mediatek: mt8195: add playback support to PCM1_BE dai_link
ASoC: mediatek: mt8195: correct pcmif BE dai control flow
counter: remove old and now unused registration API
counter: ti-eqep: Convert to new counter registration
counter: stm32-lptimer-cnt: Convert to new counter registration
counter: stm32-timer-cnt: Convert to new counter registration
counter: microchip-tcb-capture: Convert to new counter registration
counter: ftm-quaddec: Convert to new counter registration
counter: intel-qep: Convert to new counter registration
counter: interrupt-cnt: Convert to new counter registration
counter: 104-quad-8: Convert to new counter registration
counter: Update documentation for new counter registration functions
counter: Provide alternative counter registration functions
counter: stm32-timer-cnt: Convert to counter_priv() wrapper
counter: stm32-lptimer-cnt: Convert to counter_priv() wrapper
counter: ti-eqep: Convert to counter_priv() wrapper
counter: ftm-quaddec: Convert to counter_priv() wrapper
counter: intel-qep: Convert to counter_priv() wrapper
counter: microchip-tcb-capture: Convert to counter_priv() wrapper
counter: interrupt-cnt: Convert to counter_priv() wrapper
counter: 104-quad-8: Convert to counter_priv() wrapper
counter: Provide a wrapper to access device private data
counter: microchip-tcb-capture: Drop unused platform_set_drvdata()
counter: ftm-quaddec: Drop unused platform_set_drvdata()
counter: Use container_of instead of drvdata to track counter_device
mei: hbm: fix client dma reply status
misc: lattice-ecp3-config: Fix task hung when firmware load failed
ASoC: rt5682: Register wclk with its parent_hws instead of parent_data
ASoC: mediatek: mt8195: update control for RT5682 series
ASoC: samsung: idma: Check of ioremap return value
ASoC: mediatek: use of_device_get_match_data()
ASoC: cs4265: Fix part number ID error message
cxl: use default_groups in kobj_type
UIO: use default_groups in kobj_type
iio: chemical: sunrise_co2: set val parameter only on success
phy: cadence: Sierra: Add support for derived reference clock output
dt-bindings: phy: cadence-sierra: Add clock ID for derived reference clock
phy: cadence: Sierra: Add PCIe + QSGMII PHY multilink configuration
phy: cadence: Sierra: Add support for PHY multilink configurations
phy: cadence: Sierra: Fix to get correct parent for mux clocks
phy: cadence: Sierra: Update single link PCIe register configuration
phy: cadence: Sierra: Check PIPE mode PHY status to be ready for operation
phy: cadence: Sierra: Check cmn_ready assertion during PHY power on
phy: cadence: Sierra: Add PHY PCS common register configurations
phy: cadence: Sierra: Rename some regmap variables to be in sync with Sierra documentation
phy: cadence: Sierra: Add support to get SSC type from device tree
dt-bindings: phy: cadence-sierra: Add binding to specify SSC mode
dt-bindings: phy: cadence-torrent: Rename SSC macros to use generic names
phy: cadence: Sierra: Prepare driver to add support for multilink configurations
phy: cadence: Sierra: Use of_device_get_match_data() to get driver data
phy: mediatek: Fix missing check in mtk_mipi_tx_probe
mei: cleanup status before client dma setup call
mei: add POWERING_DOWN into device state print
habanalabs: support hard-reset scheduling during soft-reset
habanalabs: add a lock to protect multiple reset variables
habanalabs: refactor reset information variables
habanalabs: handle skip multi-CS if handling not done
habanalabs: add CPU-CP packet for engine core ASID cfg
habanalabs: replace some -ENOTTY with -EINVAL
habanalabs: fix comments according to kernel-doc
habanalabs: fix endianness when reading cpld version
habanalabs: change wait_for_interrupt implementation
habanalabs: prevent wait if CS in multi-CS list completed
habanalabs: modify cpu boot status error print
habanalabs: clean MMU headers definitions
habanalabs: expose soft reset sysfs nodes for inference ASIC
habanalabs: sysfs support for two infineon versions
habanalabs: keep control device alive during hard reset
habanalabs: fix hwmon handling for legacy f/w
habanalabs: add current PI value to cpu packets
habanalabs: remove in_debug check in device open
habanalabs: return correct clock throttling period
habanalabs: wait again for multi-CS if no CS completed
habanalabs: remove compute context pointer
habanalabs: add helper to get compute context
habanalabs: fix etr asid configuration
habanalabs: save ctx inside encaps signal
habanalabs: remove redundant check on ctx_fini
habanalabs: free signal handle on failure
habanalabs: add missing kernel-doc comments for hl_device fields
habanalabs: pass reset flags to reset thread
habanalabs: enable access to info ioctl during hard reset
habanalabs: add SOB information to signal submission uAPI
habanalabs: skip read fw errors if dynamic descriptor invalid
habanalabs: handle events during soft-reset
habanalabs: change misleading IRQ warning during reset
habanalabs: add power information type to POWER_GET packet
habanalabs: add more info ioctls support during reset
habanalabs: fix race condition in multi CS completion
habanalabs: move device boot warnings to the correct location
habanalabs/gaudi: return EPERM on non hard-reset
habanalabs: rename late init after reset function
habanalabs: fix soft reset accounting
habanalabs: Move frequency change thread to goya_late_init
habanalabs: abort reset on invalid request
habanalabs: fix possible deadlock in cache invl failure
habanalabs: skip PLL freq fetch
habanalabs: align debugfs documentation to alphabetical order
habanalabs: prevent false heartbeat message
habanalabs: add support for fetching historic errors
habanalabs: handle device TPM boot error as warning
habanalabs: debugfs support for larger I2C transactions
habanalabs: make hdev creation code more readable
habanalabs: add new opcodes for INFO IOCTL
habanalabs: refactor wait-for-user-interrupt function
habanalabs/gaudi: Fix collective wait bug
habanalabs: expand clock throttling information uAPI
habanalabs: change wait for interrupt timeout to 64 bit
habanalabs: rename reset flags
habanalabs: add dedicated message towards f/w to set power
habanalabs: handle abort scenario for user interrupt
habanalabs: don't clear previous f/w indications
habanalabs: use variable poll interval for fw loading
habanalabs: adding indication of boot fit loaded
habanalabs: partly skip cache flush when in PMMU map flow
habanalabs: add enum mmu_op_flags
habanalabs: make last_mask an MMU property
habanalabs: wrong VA size calculation
habanalabs/gaudi: fix debugfs dma channel selection
habanalabs: revise and document use of boot status flags
habanalabs: print va_range in vm node debugfs
habanalabs/gaudi: recover from CPU WD event
habanalabs: modify wait for boot fit in dynamic FW load
ALSA: hda/realtek: Use ALC285_FIXUP_HP_GPIO_LED on another HP laptop
ALSA: hda/realtek: Add speaker fixup for some Yoga 15ITL5 devices
ALSA: hda: Add new AlderLake-P variant PCI ID
ALSA: hda: Add AlderLake-N PCI ID
ALSA: hda/hdmi: Disable silent stream on GLK
ALSA: hda: use swap() to make code cleaner
kselftest: alsa: Validate values read from enumerations
kselftest: alsa: Factor out check that values meet constraints
ALSA: HDA: hdac_ext_stream: use consistent prefixes for variables
ALSA/ASoC: hda: move/rename snd_hdac_ext_stop_streams to hdac_stream.c
selftests/powerpc: Add a test of sigreturning to an unaligned address
powerpc/64s: Use EMIT_WARN_ENTRY for SRR debug warnings
powerpc/64s: Mask NIP before checking against SRR0
ASoC: amd: acp: Power on/off the speaker enable gpio pin based on DAPM callback.
ASoC: remove unneeded variable
ASoC: mediatek: Check for error clk pointer
ASoC: mediatek: mt8195: release device_node after snd_soc_register_card
ASoC: mediatek: mt8173: reduce log verbosity in probe()
ASoC: mediatek: mt8183: fix device_node leak
ASoC: mediatek: mt8173: fix device_node leak
soundwire: intel: remove PDM support
soundwire: intel: remove unnecessary init
ASoC: Intel/SOF: use set_stream() instead of set_tdm_slots() for HDAudio
ASoC/SoundWire: dai: expand 'stream' concept beyond SoundWire
soundwire: intel: improve suspend flows
ASoC/soundwire: intel: simplify callbacks for params/hw_free
ASOC: SOF: Intel: use snd_soc_dai_get_widget()
extcon: Deduplicate code in extcon_set_state_sync()
extcon: usb-gpio: fix a non-kernel-doc comment
phy: uniphier-usb3ss: fix unintended writing zeros to PHY register
phy: phy-mtk-tphy: use new io helpers to access register
phy: phy-mtk-xsphy: use new io helpers to access register
phy: mediatek: add helpers to update bits of registers
phy: phy-mtk-tphy: add support efuse setting
dt-bindings: phy: mediatek: tphy: support software efuse load
phy: qcom-qmp: Add SM8450 PCIe1 PHY support
dt-bindings: phy: qcom,qmp: Add SM8450 PCIe PHY bindings
iomap: Fix error handling in iomap_zero_iter()
ASoC: msm8916-wcd-analog: Use separate outputs for HPH_L/HPH_R
ASoC: qcom: common: Parse "pin-switches" and "widgets" from DT
ASoC: dt-bindings: qcom: sm8250: Document "pin-switches" and "widgets"
ASoC: core: Add snd_soc_of_parse_pin_switches() from simple-card-utils
ASoC: mediatek: mt8192-mt6359: fix device_node leak
dt-bindings: crypto: convert Qualcomm PRNG to yaml
dt-bindings: msm: disp: remove bus from dpu bindings
dt-binding: soc: qcom: convert Qualcomm Command DB documentation to yaml
dt-binding: soc: qcom: convert rmtfs documentation to yaml
ASoC: codec: tlv320adc3xxx: Fix missing clk_disable_unprepare() on error in adc3xxx_i2c_probe()
ASoC: dt-bindings: aiu: spdif-dit: add missing sound-name-prefix property
ASoC: dt-bindings: spdif-dit: add missing sound-name-prefix property
ASoC: SOF: Intel: hda: Use DEBUG log level for optional prints
ASoC: SOF: debug: Use DEBUG log level for optional prints
ASoC: SOF: Add clarifying comments for sof_core_debug and DSP dump flags
ASoC: SOF: Rename snd_sof_get_status() and add kernel log level parameter
ASoC: SOF: dsp_arch_ops: add kernel log level parameter for oops and stack
ASoC: SOF: ops: Always print DSP Panic message but use different message
ASoc: SOF: core: Update the FW boot state transition diagram
ASoC: SOF: pm: Force DSP off on suspend in BOOT_FAILED state also
ASoC: SOF: Set SOF_FW_BOOT_FAILED in case we have failure during boot
ASoC: SOF: ipc: Only allow sending of an IPC in SOF_FW_BOOT_COMPLETE state
ASoC: SOF: Rename 'enum snd_sof_fw_state' to 'enum sof_fw_state'
ASoC: SOF: Move the definition of enum snd_sof_fw_state to global header
ASoC: SOF: Introduce new firmware state: SOF_FW_BOOT_READY_OK
ASoC: SOF: Introduce new firmware state: SOF_FW_CRASHED
ASoC: SOF: Add a 'message' parameter to snd_sof_dsp_dbg_dump()
ASoC: SOF: Add 'non_recoverable' parameter to snd_sof_dsp_panic()
ASoC: SOF: Use sof_debug_check_flag() instead of sof_core_debug directly
ASoC: SOF: core: Add simple wrapper to check flags in sof_core_debug
ASoC: SOF: Intel: hda-loader: Avoid re-defining the HDA_FW_BOOT_ATTEMPTS
ASoC: SOF: ops: Use dev_warn() if the panic offsets differ
dt-bindings:iio:adc: update the maintainer of vf610-adc
MAINTAINERS: add imx7d/imx6sx/imx6ul/imx8qxp and vf610 adc maintainer
Documentation:ABI:testing:admv1013: add ABI docs
dt-bindings: iio: frequency: add admv1013 doc
iio: frequency: admv1013: add support for ADMV1013
powerpc/perf: Fix spelling of "its"
powerpc/32: Fix boot failure with GCC latent entropy plugin
powerpc/code-patching: Replace patch_instruction() by ppc_inst_write() in selftests
powerpc/code-patching: Move code patching selftests in its own file
powerpc/code-patching: Move instr_is_branch_{i/b}form() in code-patching.h
powerpc/code-patching: Move patch_exception() outside code-patching.c
powerpc/code-patching: Use test_trampoline for prefixed patch test
powerpc/code-patching: Fix patch_branch() return on out-of-range failure
powerpc/code-patching: Reorganise do_patch_instruction() to ease error handling
powerpc/code-patching: Fix unmap_patch_area() error handling
powerpc/code-patching: Fix error handling in do_patch_instruction()
powerpc/code-patching: Remove init_mem_is_free
powerpc/code-patching: Remove pr_debug()/pr_devel() messages and fix check()
powerpc/mm/book3s64/hash: Switch pre 2.06 tlbiel to .long
powerpc/mm: Switch obsolete dssall to .long
powerpc/64/asm: Do not reassign labels
powerpc/64/asm: Inline BRANCH_TO_C000
powerpc: check for support for -Wa,-m{power4,any}
powerpc/toc: Future proof kernel toc
cuda/pmu: Make find_via_cuda/pmu init functions
powerpc/512x: Add __init attribute to eligible functions
powerpc/85xx: Add __init attribute to eligible functions
powerpc/83xx: Add __init attribute to eligible functions
powerpc/embedded6xx: Add __init attribute to eligible functions
powerpc/44x: Add __init attribute to eligible functions
powerpc/4xx: Add __init attribute to eligible functions
powerpc/ps3: Add __init attribute to eligible functions
powerpc/pseries: Add __init attribute to eligible functions
powerpc/powernv: Add __init attribute to eligible functions
powerpc/powermac: Add __init attribute to eligible functions
powerpc/pasemi: Add __init attribute to eligible functions
powerpc/chrp: Add __init attribute to eligible functions
powerpc/cell: Add __init attribute to eligible functions
powerpc/xmon: Add __init attribute to eligible functions
powerpc/sysdev: Add __init attribute to eligible functions
powerpc/perf: Add __init attribute to eligible functions
powerpc/mm: Add __init attribute to eligible functions
powerpc/lib: Add __init attribute to eligible functions
powerpc/kernel: Add __init attribute to eligible functions
phy: phy-rockchip-inno-usb2: add rk3568 support
phy: phy-rockchip-inno-usb2: support muxed interrupts
phy: phy-rockchip-inno-usb2: support standalone phy nodes
phy: phy-rockchip-inno-usb2: support #address_cells = 2
dt-bindings: phy: phy-rockchip-inno-usb2: add rk3568 documentation
scsi: mpi3mr: Bump driver version to 8.0.0.61.0
scsi: mpi3mr: Fixes around reply request queues
scsi: mpi3mr: Enhanced Task Management Support Reply handling
scsi: mpi3mr: Use TM response codes from MPI3 headers
scsi: mpi3mr: Add io_uring interface support in I/O-polled mode
scsi: mpi3mr: Print cable mngnt and temp threshold events
scsi: mpi3mr: Support Prepare for Reset event
scsi: mpi3mr: Add Event acknowledgment logic
scsi: mpi3mr: Gracefully handle online FW update operation
scsi: mpi3mr: Detect async reset that occurred in firmware
scsi: mpi3mr: Add IOC reinit function
scsi: mpi3mr: Handle offline FW activation in graceful manner
scsi: mpi3mr: Code refactor of IOC init - part2
scsi: mpi3mr: Code refactor of IOC init - part1
scsi: mpi3mr: Fault IOC when internal command gets timeout
scsi: mpi3mr: Display IOC firmware package version
scsi: mpi3mr: Handle unaligned PLL in unmap cmnds
scsi: mpi3mr: Increase internal cmnds timeout to 60s
scsi: mpi3mr: Do access status validation before adding devices
scsi: mpi3mr: Add support for PCIe Managed Switch SES device
scsi: mpi3mr: Update MPI3 headers - part2
scsi: mpi3mr: Update MPI3 headers - part1
scsi: mpi3mr: Don't reset IOC if cmnds flush with reset status
scsi: mpi3mr: Replace spin_lock() with spin_lock_irqsave()
scsi: mpi3mr: Add debug APIs based on logging_level bits
scsi: pmcraid: Don't use GFP_DMA in pmcraid_alloc_sglist()
scsi: snic: Don't use GFP_DMA in snic_queue_report_tgt_req()
scsi: myrs: Don't use GFP_DMA
scsi: myrb: Don't use GFP_DMA in myrb_pdev_slave_alloc()
scsi: initio: Don't use GFP_DMA in initio_probe_one()
scsi: sr: Don't use GFP_DMA
scsi: ch: Don't use GFP_DMA
scsi: hisi_sas: Use autosuspend for the host controller
scsi: libsas: Keep host active while processing events
scsi: hisi_sas: Keep controller active between ISR of phyup and the event being processed
scsi: libsas: Defer works of new phys during suspend
scsi: libsas: Refactor sas_queue_deferred_work()
scsi: libsas: Add flag SAS_HA_RESUMING
scsi: libsas: Resume host while sending SMP I/Os
scsi: hisi_sas: Add more logs for runtime suspend/resume
scsi: libsas: Insert PORTE_BROADCAST_RCVD event for resuming host
scsi: mvsas: Add spin_lock/unlock() to protect asd_sas_port->phy_list
scsi: hisi_sas: Fix some issues related to asd_sas_port->phy_list
scsi: libsas: Add spin_lock/unlock() to protect asd_sas_port->phy_list
scsi: block: pm: Always set request queue runtime active in blk_post_runtime_resume()
scsi: Revert "scsi: hisi_sas: Filter out new PHY up events during suspend"
scsi: libsas: Don't always drain event workqueue for HA resume
ASoC: codecs: ak4375: Change invert controls to a stereo switch
gnss: usb: add support for Sierra Wireless XM1210
gnss: add USB support
efi: apply memblock cap after memblock_add()
of: fdt: Aggregate the processing of "linux,usable-memory-range"
ASoC: meson: g12a: add missing sound-name-prefix property
ASoC: meson: t9015: add missing sound-name-prefix property
ASoC: dt-bindings: Use name-prefix schema
dt-bindings: arm,cci-400: Drop the PL330 from example
dt-bindings: arm: ux500: Document missing compatibles
dt-bindings: power: reset: gpio-restart: Convert to json-schema
ASoC: Add AK4375 support
ASoC: dt-bindings: codecs: Add bindings for ak4375
ASoC: bcm: Use platform_get_irq() to get the interrupt
ASoC: xlnx: Use platform_get_irq() to get the interrupt
ASoC: amd: acp: Remove duplicate dependency in Kconfig
ASoC: qdsp6: fix a use after free bug in open()
ASoC: SOF: AMD: simplify return status handling
ASoC: tegra-audio-rt5677: Correct example
ASoC: amd: acp-config: Update sof_tplg_filename for SOF machines
ASoC: amd: acp-config: Enable SOF audio for Google chrome boards.
iio: adc: ti-adc081c: Partial revert of removal of ACPI IDs
iio:addac:ad74413r: Fix uninitialized ret in a path that won't be hit.
MAINTAINERS: Add maintainer for xilinx-ams
dt-bindings: iio: adc: Add Xilinx AMS binding documentation
iio: adc: Add Xilinx AMS driver
device property: Add fwnode_iomap()
iio:accel:kxcjk-1013: Mark struct __maybe_unused to avoid warning.
iio:accel:bmc150: Mark structure __maybe_unused as only needed with for pm ops.
iio:dummy: Drop set but unused variable len.
iio:magn:ak8975: Suppress clang W=1 warning about pointer to enum conversion.
iio:imu:inv_mpu6050: Suppress clang W=1 warning about pointer to enum conversion.
iio:imu:inv_icm42600: Suppress clang W=1 warning about pointer to enum conversion.
iio:dac:mcp4725: Suppress clang W=1 warning about pointer to enum conversion.
iio:amplifiers:hmc425a: Suppress clang W=1 warning about pointer to enum conversion.
iio:adc:ti-ads1015: Suppress clang W=1 warning about pointer to enum conversion.
iio:adc:rcar: Suppress clang W=1 warning about pointer to enum conversion.
iio:adc:ina2xx-adc: Suppress clang W=1 warning about pointer to enum conversion.
MIPS: generic: enable SMP on SMVP systems
MIPS: only register MT SMP ops if MT is supported
MIPS: Octeon: Fix build errors using clang
w1: w1_therm: use swap() to make code cleaner
counter: 104-quad-8: Fix persistent enabled events bug
counter: ti-eqep: Use container_of instead of struct counter_device::priv
counter: Add the necessary colons and indents to the comments of counter_compi
dt-bindings: nvmem: Add missing 'reg' property
nvmem: mtk-efuse: support minimum one byte access stride and granularity
dt-bindings: nvmem: mediatek: add support for mt8195
dt-bindings: nvmem: mediatek: add support bits property
drivers/misc/ocxl: remove redundant rc variable
misc: vmw_vmci: Switch to kvfree_rcu() API
paride: fix up build warning on mips platforms
rapidio: remove not used code about RIO_VID_TUNDRA
rapidio: remove not used macro definition in rio_ids.h
selftests/powerpc: Add a test of sigreturning to the kernel
powerpc/dts: Remove "spidev" nodes
firmware: qemu_fw_cfg: remove sysfs entries explicitly
firmware: qemu_fw_cfg: fix sysfs information leak
firmware: qemu_fw_cfg: fix kobject leak in probe error path
firmware: qemu_fw_cfg: fix NULL-pointer deref on duplicate entries
applicom: unneed to initialise statics to 0
uacce: use sysfs_emit instead of sprintf
greybus: es2: fix typo in a comment
firmware: Update Kconfig help text for Google firmware
binder: use proper cacheflush header file
clk: qcom: turingcc-qcs404: explicitly include clk-provider.h
clk: qcom: q6sstop-qcs404: explicitly include clk-provider.h
clk: qcom: mmcc-apq8084: explicitly include clk-provider.h
clk: qcom: lpasscc-sdm845: explicitly include clk-provider.h
clk: qcom: lpasscc-sc7280: explicitly include clk-provider.h
clk: qcom: gcc-sm6350: explicitly include clk-provider.h
clk: qcom: gcc-msm8994: explicitly include clk-provider.h
clk: qcom: gcc-sm8350: explicitly include clk-provider.h
ASoC: mediatek: mt8195-mt6359: reduce log verbosity in probe()
iommu/iova: Temporarily include dma-mapping.h from iova.h
ASoC: codec: tlv320adc3xxx: New codec driver
ASoC: tlv320adc3xxx: New codec bindings
ASoC: sunxi: Use dev_err_probe() helper
ASoC: stm: Use dev_err_probe() helper
ASoC: samsung: Use dev_err_probe() helper
ASoC: rockchip: Use dev_err_probe() helper
ASoC: qcom: Use dev_err_probe() helper
ASoC: mxs: Use dev_err_probe() helper
ASoC: meson: Use dev_err_probe() helper
ASoC: img: Use dev_err_probe() helper
ASoC: generic: Use dev_err_probe() helper
ASoC: fsl: Use dev_err_probe() helper
ASoC: ti: Use dev_err_probe() helper
ASoC: ateml: Use dev_err_probe() helper
ASoC: codecs: tlv320aic31xx: Use dev_err_probe() helper
ASoC: codecs: ssm2305: Use dev_err_probe() helper
ASoC: codecs: simple-mux: Use dev_err_probe() helper
ASoC: codecs: simple-amplifier: Use dev_err_probe() helper
ASoC: codecs: sgtl5000: Use dev_err_probe() helper
ASoC: codecs: pcm3168a: Use dev_err_probe() helper
ASoC: codecs: max9860: Use dev_err_probe() helper
ASoC: codecs: max9759: Use dev_err_probe() helper
ASoC: codecs: es7241: Use dev_err_probe() helper
ASoC: codecs: ak4118: Use dev_err_probe() helper
ASoC: mediatek: mt8195: correct default value
dt-bindings: timer: Add Mstar MSC313e timer devicetree bindings documentation
clocksource/drivers/msc313e: Add support for ssd20xd-based platforms
clocksource/drivers: Add MStar MSC313e timer support
irqchip/renesas-intc-irqpin: Use platform_get_irq_optional() to get the interrupt
irqchip/renesas-irqc: Use platform_get_irq_optional() to get the interrupt
iommu: Move flush queue data into iommu_dma_cookie
iommu/iova: Move flush queue code to iommu-dma
iommu/iova: Consolidate flush queue code
iommu/vt-d: Use put_pages_list
iommu/amd: Use put_pages_list
iommu/amd: Simplify pagetable freeing
iommu/iova: Squash flush_cb abstraction
iommu/iova: Squash entry_dtor abstraction
iommu/iova: Fix race between FQ timeout and teardown
iommu/amd: Fix typo in *glues … together* in comment
ocxl: remove redundant rc variable
powerpc/64s/radix: Fix huge vmap false positive
powerpc: use swap() to make code cleaner
powerpc/mpic: Use bitmap_zalloc() when applicable
clk: samsung: Add initial Exynos7885 clock driver
clk: samsung: clk-pll: Add support for pll1417x
clk: samsung: Make exynos850_register_cmu shared
dt-bindings: clock: Document Exynos7885 CMU bindings
dt-bindings: clock: Add bindings definitions for Exynos7885 CMU
clk: samsung: exynos850: Add missing sysreg clocks
dt-bindings: clock: Add bindings for Exynos850 sysreg clocks
PCI/MSI: Unbreak pci_irq_get_affinity()
ACPI: NFIT: Import GUID before use
dax: remove the copy_from_iter and copy_to_iter methods
dax: remove the DAXDEV_F_SYNC flag
dax: simplify dax_synchronous and set_dax_synchronous
uio: remove copy_from_iter_flushcache() and copy_mc_to_iter()
phy: qcom-qmp: Add SM8450 PCIe0 PHY support
dt-bindings: phy: qcom,qmp: Add SM8450 PCIe PHY bindings
dt-bindings: i2c: i2c-mux-gpio: Convert to json-schema
dt-bindings: i2c: i2c-mux-pinctrl: Convert to json-schema
dt-bindings: i2c: tegra: Convert to json-schema
dt-bindings: interrupt-controller: Merge BCM3380 with BCM7120
dt-bindings: interrupt-controller: Convert BCM7120 L2 to YAML
ASoC: sh: rz-ssi: Check return value of pm_runtime_resume_and_get()
ASoC: Intel: catpt: Streamline locals declaration for PCM-functions
ASoC: Intel: catpt: Reduce size of catpt_component_open()
ASoC: Intel: catpt: Test dmaengine_submit() result before moving on
spmi: spmi-pmic-arb: fix irq_set_type race condition
spmi: mediatek: Add support for MT8195
spmi: mediatek: Add support for MT6873/8192
dt-bindings: spmi: document binding for the Mediatek SPMI controller
dt-bindings: spmi: remove the constraint of reg property
spmi: pmic-arb: Add sid and address to error messages
bus: mhi: pci_generic: Introduce Sierra EM919X support
bus: mhi: core: Use correctly sized arguments for bit field
bus: mhi: core: Add an API for auto queueing buffers for DL channel
bus: mhi: core: Fix race while handling SYS_ERR at power up
bus: mhi: core: Fix reading wake_capable channel configuration
bus: mhi: pci_generic: Simplify code and axe the use of a deprecated API
bus: mhi: core: Minor style and comment fixes
bus: mhi: core: Use macros for execution environment features
bus: mhi: pci_generic: Graceful shutdown on freeze
bus: mhi: pci_generic: Add new device ID support for T99W175
dt-bindings: usb: Convert BDC to YAML
dt-bindings: bus: Convert GISB arbiter to YAML
dt-bindings: ata: Convert Broadcom SATA to YAML
ASoC: tegra20: i2s: Filter out unsupported rates
ASoC: tegra20: spdif: Filter out unsupported rates
ASoC: tegra20: spdif: Support system suspend
ASoC: tegra20: spdif: Reset hardware
ASoC: tegra20: spdif: Use more resource-managed helpers
ASoC: tegra20: spdif: Improve driver's code
ASoC: tegra20: spdif: Support device-tree
ASoC: tegra20: spdif: Set FIFO trigger level
ASoC: dt-bindings: tegra20-i2s: Document new nvidia,fixed-parent-rate property
ASoC: dt-bindings: tegra20-i2s: Convert to schema
ASoC: dt-bindings: Add binding for Tegra20 S/PDIF
ASoC: SOF: Kconfig: Make the SOF_DEVELOPER_SUPPORT depend on SND_SOC_SOF
ASoC: dt-bindings: audio-graph-port: enable both flag/phandle for bitclock/frame-master
ipc: debug: Add shared memory heap to memory scan
ASoC: SOF: ipc: Add null pointer check for substream->runtime
ASoC: SOF: avoid casting "const" attribute away
ASoC: SOF: Intel: hda: remove support for RESUME in platform trigger
ASoC: SOF: Intel: hda: remove support for RESUME trigger
ASoC: SOF: pcm: remove support for RESUME trigger
iommu/vt-d: Remove unused dma_to_mm_pfn function
iommu/vt-d: Drop duplicate check in dma_pte_free_pagetable()
iommu/vt-d: Use bitmap_zalloc() when applicable
iommu/amd: Remove useless irq affinity notifier
iommu/amd: X2apic mode: mask/unmask interrupts on suspend/resume
iommu/amd: X2apic mode: setup the INTX registers on mask/unmask
iommu/amd: X2apic mode: re-enable after resume
iommu/amd: Restore GA log/tail pointer on host resume
iommu/iova: Move fast alloc size roundup into alloc_iova_fast()
iommu/virtio: Fix typo in a comment
iommu/vt-d: Remove unused macros
iommu/vt-d: Use correctly sized arguments for bit field
dmaengine: remove slave_id config field
dmaengine: xilinx_dpdma: stop using slave_id field
dmaengine: qcom-adm: stop abusing slave_id config
dmaengine: sprd: stop referencing config->slave_id
dmaengine: pxa/mmp: stop referencing config->slave_id
dmaengine: shdma: remove legacy slave_id parsing
mmc: bcm2835: stop setting chan_config->slave_id
spi: pic32: stop setting dma_config->slave_id
ASoC: dai_dma: remove slave_id field
dmaengine: tegra20-apb: stop checking config->slave_id
ASoC: tegra20-spdif: stop setting slave_id
scsi: libsas: Decode SAM status and host byte codes
scsi: hisi_sas: Fix phyup timeout on FPGA
scsi: hisi_sas: Prevent parallel FLR and controller reset
scsi: hisi_sas: Prevent parallel controller reset and control phy command
scsi: hisi_sas: Factor out task prep and delivery code
scsi: hisi_sas: Pass abort structure for internal abort
scsi: hisi_sas: Make internal abort have no task proto
scsi: hisi_sas: Start delivery hisi_sas_task_exec() directly
scsi: efct: Don't pass GFP_DMA to dma_alloc_coherent()
scsi: ufs: core: Fix deadlock issue in ufshcd_wait_for_doorbell_clr()
scsi: qla2xxx: Synchronize rport dev_loss_tmo setting
selftest/lkdtm: Skip stack-entropy test if lkdtm is not available
lkdtm: Fix content of section containing lkdtm_rodata_do_nothing()
lkdtm: avoid printk() in recursive_loop()
lkdtm: Note that lkdtm_kernel_info should be removed in the future
of/fdt: Rework early_init_dt_scan_memory() to call directly
of/fdt: Rework early_init_dt_scan_root() to call directly
of/fdt: Rework early_init_dt_scan_chosen() to call directly
i2c: aspeed: Remove unused includes
dt-bindings: i2c: aspeed: Drop stray '#interrupt-cells'
i2c: sh_mobile: update to new DMAENGINE API when terminating
i2c: rcar: update to new DMAENGINE API when terminating
genirq/msi: Convert storage to xarray
genirq/msi: Simplify sysfs handling
genirq/msi: Add abuse prevention comment to msi header
genirq/msi: Mop up old interfaces
genirq/msi: Convert to new functions
genirq/msi: Make interrupt allocation less convoluted
platform-msi: Simplify platform device MSI code
platform-msi: Let core code handle MSI descriptors
bus: fsl-mc-msi: Simplify MSI descriptor handling
soc: ti: ti_sci_inta_msi: Remove ti_sci_inta_msi_domain_free_irqs()
soc: ti: ti_sci_inta_msi: Rework MSI descriptor allocation
NTB/msi: Convert to msi_on_each_desc()
PCI: hv: Rework MSI handling
powerpc/mpic_u3msi: Use msi_for_each-desc()
powerpc/fsl_msi: Use msi_for_each_desc()
powerpc/pasemi/msi: Convert to msi_on_each_dec()
powerpc/cell/axon_msi: Convert to msi_on_each_desc()
powerpc/4xx/hsta: Rework MSI handling
s390/pci: Rework MSI descriptor walk
xen/pcifront: Rework MSI handling
x86/pci/xen: Use msi_for_each_desc()
PCI/MSI: Use msi_on_each_desc()
PCI/MSI: Let core code free MSI descriptors
PCI/MSI: Use msi_add_msi_desc()
PCI/MSI: Protect MSI operations
genirq/msi: Provide domain flags to allocate/free MSI descriptors automatically
genirq/msi: Provide msi_alloc_msi_desc() and a simple allocator
genirq/msi: Provide a set of advanced MSI accessors and iterators
genirq/msi: Provide msi_domain_alloc/free_irqs_descs_locked()
genirq/msi: Add mutex for MSI list protection
genirq/msi: Move descriptor list to struct msi_device_data
i2c: exynos5: Fix getting the optional clock
i2c: designware-pci: Convert to use dev_err_probe()
i2c: designware-pci: use __maybe_unused for PM functions
i2c: designware-pci: Group MODULE_*() macros
dmaengine: qcom_hidma: Cleanup MSI handling
soc: ti: ti_sci_inta_msi: Get rid of ti_sci_inta_msi_get_virq()
bus: fsl-mc: fsl-mc-allocator: Rework MSI handling
mailbox: bcm-flexrm-mailbox: Rework MSI interrupt handling
iommu/arm-smmu-v3: Use msi_get_virq()
perf/smmuv3: Use msi_get_virq()
dmaengine: mv_xor_v2: Get rid of msi_desc abuse
PCI/MSI: Simplify pci_irq_get_affinity()
PCI/MSI: Use msi_get_virq() in pci_get_vector()
genirq/msi: Provide interface to retrieve Linux interrupt number
powerpc/pseries/msi: Let core code check for contiguous entries
PCI/MSI: Provide MSI_FLAG_MSIX_CONTIGUOUS
PCI/MSI: Use msi_desc::msi_index
soc: ti: ti_sci_inta_msi: Use msi_desc::msi_index
bus: fsl-mc-msi: Use msi_desc::msi_index
platform-msi: Use msi_desc::msi_index
genirq/msi: Consolidate MSI descriptor data
platform-msi: Store platform private data pointer in msi_device_data
platform-msi: Rename functions and clarify comments
genirq/msi: Remove the original sysfs interfaces
platform-msi: Let the core code handle sysfs groups
PCI/MSI: Let the irq code handle sysfs groups
genirq/msi: Provide msi_device_populate/destroy_sysfs()
soc: ti: ti_sci_inta_msi: Allocate MSI device data on first use
bus: fsl-mc-msi: Allocate MSI device data on first use
platform-msi: Allocate MSI device data on first use
PCI/MSI: Allocate MSI device data on first use
PCI/MSI: Decouple MSI[-X] disable from pcim_release()
device: Add device:: Msi_data pointer and struct msi_device_data
device: Move MSI related data into a struct
powerpc/pseries/msi: Use PCI device properties
powerpc/cell/axon_msi: Use PCI device property
genirq/msi: Use PCI device property
x86/apic/msi: Use PCI device MSI property
x86/pci/XEN: Use PCI device property
PCI/MSI: Set pci_dev::msi[x]_enabled early
i2c: designware-pci: Add a note about struct dw_scl_sda_cfg usage
i2c: designware-pci: Fix to change data types of hcnt and lcnt parameters
i2c: designware: Do not complete i2c read without RX_FULL interrupt
clk: qcom: Add MSM8976/56 Global Clock Controller (GCC) driver
dt-bindings: clk: qcom: Document MSM8976 Global Clock Controller
clk: qcom: Add clock driver for SM8450
clk: qcom: Add SDX65 GCC support
clk: qcom: Add LUCID_EVO PLL type for SDX65
iio:accel:bma180: Suppress clang W=1 warning about pointer to enum conversion.
drivers:iio:dac: Add AD3552R driver support
dt-bindings: iio: dac: Add adi,ad3552r.yaml
iio:filter:admv8818: Add sysfs ABI documentation
dt-bindings:iio:filter: add admv8818 doc
iio:filter:admv8818: add support for ADMV8818
iio: add filter subfolder
iio: vz89x: Remove unnecessary cast
iio: in2xx-adc: Remove unnecessary cast
iio: as3935: Remove unnecessary cast
irqchip/gic-v4: Disable redistributors' view of the VPE table at boot time
irqchip/ingenic-tcu: Use correctly sized arguments for bit field
irqchip/gic-v2m: Add const to of_device_id
irqchip/imx-gpcv2: Mark imx_gpcv2_instance with __ro_after_init
MIPS: OCTEON: add put_device() after of_find_device_by_node()
MIPS: BCM47XX: Replace strlcpy with strscpy
mips: fix Kconfig reference to PHYS_ADDR_T_64BIT
mips: txx9: remove left-over for removed TXX9_ACLC configs
mips: alchemy: remove historic comment on gpio build constraints
mips: remove obsolete selection of CPU_HAS_LOAD_STORE_LR
mips: kgdb: adjust the comment to the actual ifdef condition
mips: dec: provide the correctly capitalized config CPU_R4X00 in init error message
mips: drop selecting non-existing config NR_CPUS_DEFAULT_2
mips: add SYS_HAS_CPU_MIPS64_R5 config for MIPS Release 5 support
MIPS: drop selected EARLY_PRINTK configs for MACH_REALTEK_RTL
irqchip/spear-shirq: Add support for IRQ 0..6
irqchip/gic-v3-its: Limit memreserve cpuhp state lifetime
irqchip/gic-v3-its: Postpone LPI pending table freeing and memreserve
irqchip/gic-v3-its: Give the percpu rdist struct its own flags field
iio: stmpe-adc: Use correctly sized arguments for bit field
iio:adc:ti-ads8688:: remove redundant ret variable
iio: addac: ad74413r: fix off by one in ad74413r_parse_channel_config()
iio: adc: ad7606: Fix syntax errors in comments
iio: event_monitor: Flush output on event
iio: iio_device_alloc(): Remove unnecessary self drvdata
selftests/powerpc: skip tests for unavailable mitigations.
powerpc/pseries: use slab context cpumask allocation in CPU hotplug init
powerpc/64s/interrupt: avoid saving CFAR in some asynchronous interrupts
powerpc/64/interrupt: reduce expensive debug tests
powerpc/64s/interrupt: Don't enable MSR[EE] in irq handlers unless perf is in use
powerpc/64s/perf: add power_pmu_wants_prompt_pmi to say whether perf wants PMIs to be soft-NMI
powerpc/64s/interrupt: handle MSR EE and RI in interrupt entry wrapper
powerpc/64/interrupt: make normal synchronous interrupts enable MSR[EE] if possible
powerpc/pseries/vas: Don't print an error when VAS is unavailable
powerpc/perf: Add data source encodings for power10 platform
powerpc/perf: Add encodings to represent data based on newer composite PERF_MEM_LVLNUM* fields
perf: Add new macros for mem_hops field
clk: stm32mp1: remove redundant assignment to pointer data
clk: stm32: Fix ltdc's clock turn off by clk_disable_unused() after system enter shell
phy: qcom-qmp: Add SM8450 USB QMP PHYs
dt-bindings: phy: qcom,qmp: Add SM8450 USB3 PHY
dt-bindings: phy: qcom,usb-snps-femto-v2: Add bindings for SM8450
clk: Introduce clk-tps68470 driver
of: unittest: 64 bit dma address test requires arch support
of: unittest: fix warning on PowerPC frame size warning
dt-bindings: input: pwm-vibrator: Convert txt bindings to yaml
ASoC: AMD: fix depend/select mistake on SND_AMD_ACP_CONFIG
ASoC: nvidia,tegra-audio: Convert multiple txt bindings to yaml
ASoC: SOF: topology: read back control data from DSP
ASoC: SOF: Drop ctrl_type parameter for snd_sof_ipc_set_get_comp_data()
ASoC: SOF: control: Do not handle control notification with component type
ASoC: SOF: sof-audio: Drop the `cmd` member from struct snd_sof_control
ASoC: SOF: Drop ctrl_cmd parameter for snd_sof_ipc_set_get_comp_data()
ASoC: SOF: topology: Set control_data->cmd alongside scontrol->cmd
ASoC: SOF: Drop ipc_cmd parameter for snd_sof_ipc_set_get_comp_data()
ASoC: SOF: ipc: Rename send parameter in snd_sof_ipc_set_get_comp_data()
clk: tegra: Support runtime PM and power domain
clk: tegra: Make vde a child of pll_p on tegra114
phy: freescale: pcie: explicitly add bitfield.h
x86/xen: Use correct #ifdef guard for xen_initdom_restore_msi()
ASoC: rt5663: Handle device_property_read_u32_array error codes
ASoC: SOF: OF: Avoid reverse module dependency
Revert "iommu/arm-smmu-v3: Decrease the queue size of evtq and priq"
interconnect: qcom: Add QCM2290 driver support
dt-bindings: interconnect: Add Qualcomm QCM2290 NoC support
interconnect: icc-rpm: Support child NoC device probe
interconnect: icc-rpm: Add QNOC type QoS support
interconnect: icc-rpm: Define ICC device type
IB/mthca: Use memset_startat() for clearing mpt_entry
iw_cxgb4: Use memset_startat() for cpl_t5_pass_accept_rpl
RDMA/mlx5: Use memset_after() to zero struct mlx5_ib_mr
RDMA/cma: Let cma_resolve_ib_dev() continue search even after empty entry
RDMA/core: Let ib_find_gid() continue search even after empty entry
RDMA/core: Modify rdma_query_gid() to return accurate error codes
RDMA/hns: Support direct wqe of userspace
dt-bindings: PCI: designware: Fix 'unevaluatedProperties' warnings
dt-bindings: PCI: cdns-ep: Fix 'unevaluatedProperties' warnings
dt-bindings: PCI: Fix 'unevaluatedProperties' warnings
dt-bindings: memory-controllers: ti,gpmc: Drop incorrect unevaluatedProperties
dt-bindings: usb: Add missing properties used in examples
dt-bindings: watchdog: atmel: Add missing 'interrupts' property
dt-bindings: watchdog: ti,rti-wdt: Fix assigned-clock-parents
dt-bindings: i2c: aspeed: Drop stray '#interrupt-cells'
interconnect: qcom: Add SM8450 interconnect provider driver
dt-bindings: interconnect: Add Qualcomm SM8450 DT bindings
dt-bindings: perf: Add compatible for Arm DSU-110
dt-bindings: perf: Convert Arm DSU to schema
dt-bindings: gpu: mali-bifrost: Document RZ/G2L support
dt-bindings: thermal: Convert Broadcom TMON to YAML
dt-bindings: rng: Convert iProc RNG200 to YAML
dt-bindings: interrupt-controller: Convert Broadcom STB L2 to YAML
dt-binding: interrupt-controller: Convert BCM7038 L1 intc to YAML
dt-bindings: gpio: Convert Broadcom STB GPIO to YAML
dt-bindings: rtc: Convert Broadcom STB waketimer to YAML
dt-bindings: pwm: Convert BCM7038 PWM binding to YAML
dt-bindings: reset: Convert Broadcom STB reset to YAML
dt-bindings: pci: Convert iProc PCIe to YAML
dt-bindings: phy: Convert Cygnus PCIe PHY to YAML
ASoC: qdsp6: Fix an IS_ERR() vs NULL bug
ASoC: qcom: Distinguish headset codec by codec_dai->name
ASoC: soc-pcm: fix BE handling of PAUSE_RELEASE
ASoC: soc-pcm: test refcount before triggering
ASoC: soc-pcm: serialize BE triggers
ASoC: soc-pcm: Fix and cleanup DPCM locking
ASoC: soc-pcm: align BE 'atomicity' with that of the FE
ASoC: soc-pcm: use GFP_ATOMIC for dpcm structure
iommu/io-pgtable-arm-v7s: Add error handle for page table allocation failure
iommu/arm-smmu-v3: Constify arm_smmu_mmu_notifier_ops
iommu: arm-smmu-impl: Add SM8450 qcom iommu implementation
dt-bindings: arm-smmu: Add compatible for SM8450 SoC
iommu/arm-smmu-qcom: Fix TTBR0 read
dt-bindings: arm-smmu: Add compatible for the SDX55 SoC
phy: freescale: pcie: Initialize the imx8 pcie standalone phy driver
dt-bindings: phy: Add imx8 pcie phy driver support
dt-bindings: phy: phy-imx8-pcie: Add binding for the pad modes of imx8 pcie phy
ASoC: mediatek: assign correct type to argument
ASoC: SOF: sof-probes: Constify sof_probe_compr_ops
ASoC: SOF: Remove pm_runtime_put_autosuspend() for SOF OF device
KVM: PPC: Book3S HV P9: Use kvm_arch_vcpu_get_wait() to get rcuwait object
Documentation/filesystem/dax: DAX on virtiofs
fuse: mark inode DONT_CACHE when per inode DAX hint changes
fuse: negotiate per inode DAX in FUSE_INIT
fuse: enable per inode DAX
fuse: support per inode DAX in fuse protocol
fuse: make DAX mount option a tri-state
fuse: add fuse_should_enable_dax() helper
clocksource/drivers/pistachio: Fix -Wunused-but-set-variable warning
clocksource/drivers/timer-imx-sysctr: Set cpumask to cpu_possible_mask
phy: rockchip-inno-usb2: remove redundant assignment to variable delay
mips: ralink: add missing of_node_put() call in ill_acc_of_setup()
MIPS: fix typo in a comment
MIPS: lantiq: Fix typo in a comment
MIPS: Fix typo in a comment
MIPS: Makefile: Remove "ifdef need-compiler" for Kbuild.platforms
MIPS: SGI-IP22: Remove unnecessary check of GCC option
phy: lan966x: Remove set_speed function
phy: ti: Use IS_ERR_OR_NULL() to clean code
dt-bindings: phy: qcom,qusb2: Add SM6350 compatible
phy: tegra: xusb: Fix return value of tegra_xusb_find_port_node function
scsi: hpsa: Remove an unused variable in hpsa_update_scsi_devices()
scsi: lpfc: Use struct_group to isolate cast to larger object
scsi: lpfc: Use struct_group() to initialize struct lpfc_cgn_info
ASoC: qcom: apq8016_sbc: Allow routing audio through QDSP6
ASoC: dt-bindings: qcom: Document qcom,msm8916-qdsp6-sndcard compatible
ASoC: dt-bindings: qcom: apq8016-sbc: Move to qcom,sm8250 DT schema
ASoC: dt-bindings: qcom: sm8250: Document "aux-devs"
ASoC: dt-bindings: qcom: sm8250: Drop redundant MultiMedia routes
ASoC: SOF: Intel: add comment on JasperLake support
ASoC: SOF: Intel: hda-dai: remove unused fields
ASoC: SOF: Intel: hda: add quirks for HDAudio DMA position information
ASoC: SOF: hda-stream: only enable DPIB if needed
ASoC: SOF: Intel: hda-ctrl: apply symmetry for DPIB
ASoC: SOF: Intel: hda-stream: limit PROCEN workaround
ASoC: SOF: Intel: ICL: move ICL-specific ops to icl.c
coresight: core: Fix typo in a comment
ALSA: gus: Fix memory leaks at memory allocator error paths
ALSA: gus: Fix erroneous memory allocation
eeprom: at24: Add support for 24c1025 EEPROM
dt-bindings: at24: add at24c1025
ALSA: sound/isa/gus: check the return value of kstrdup()
ALSA: uapi: use C90 comment style instead of C99 style
ALSA: pcm: comment about relation between msbits hw parameter and [S|U]32 formats
dt-bindings: iio: dac: adi,ad5755: drop unrelated included.
iio:adc/dac:Kconfig: Update to drop OF dependencies.
iio:adc:ti-ads124s08: Drop dependency on OF.
iio:adc:envelope-detector: Switch from of headers to mod_devicetable.h
iio:adc:ti-adc12138: Switch to generic firmware properties and drop of_match_ptr
iio:adc:mcp3911: Switch to generic firmware properties.
iio:adc:max9611: Switch to generic firmware properties.
iio:light:cm3605: Switch to generic firmware properties.
iio:pot:mcp41010: Switch to generic firmware properties.
iio:dac:lpc18xx_dac: Swap from of* to mod_devicetable.h
iio:dac:dpot-dac: Swap of.h for mod_devicetable.h
iio:dac:ad5758: Drop unused of specific headers.
iio:dac:ad5755: Switch to generic firmware properties and drop pdata
iio: trigger: Fix a scheduling whilst atomic issue seen on tsc2046
iio: addac: add AD74413R driver
dt-bindings: iio: add AD74413R
iio: add addac subdirectory
MAINTAINERS: Update i.MX 8QXP ADC info
dt-bindings:iio:dac: add ad7293 doc
kselftest: alsa: Use private alsa-lib configuration in mixer test
kselftest: alsa: optimization for SNDRV_CTL_ELEM_ACCESS_VOLATILE
kselftest: alsa: Add simplistic test for ALSA mixer controls kselftest
ALSA: sparc: no need to initialise statics to 0
objtool: Remove .fixup handling
x86: Remove .fixup section
x86/word-at-a-time: Remove .fixup usage
x86/usercopy: Remove .fixup usage
x86/usercopy_32: Simplify __copy_user_intel_nocache()
x86/sgx: Remove .fixup usage
x86/checksum_32: Remove .fixup usage
x86/vmx: Remove .fixup usage
x86/kvm: Remove .fixup usage
x86/segment: Remove .fixup usage
x86/fpu: Remove .fixup usage
x86/xen: Remove .fixup usage
x86/uaccess: Remove .fixup usage
x86/futex: Remove .fixup usage
x86/msr: Remove .fixup usage
x86/extable: Extend extable functionality
x86/entry_32: Remove .fixup usage
x86/entry_64: Remove .fixup usage
x86/copy_mc_64: Remove .fixup usage
x86/copy_user_64: Remove .fixup usage
x86/mmx_32: Remove X86_USE_3DNOW
bitfield.h: Fix "type of reg too small for mask" test
clk: Emit a stern warning with writable debugfs enabled
i2c: tegra: use i2c_timings for bus clock freq
net/mlx4: Use irq_update_affinity_hint()
net/mlx5: Use irq_set_affinity_and_hint()
hinic: Use irq_set_affinity_and_hint()
scsi: lpfc: Use irq_set_affinity()
mailbox: Use irq_update_affinity_hint()
ixgbe: Use irq_update_affinity_hint()
be2net: Use irq_update_affinity_hint()
enic: Use irq_update_affinity_hint()
RDMA/irdma: Use irq_update_affinity_hint()
scsi: mpt3sas: Use irq_set_affinity_and_hint()
scsi: megaraid_sas: Use irq_set_affinity_and_hint()
i40e: Use irq_update_affinity_hint()
iavf: Use irq_update_affinity_hint()
genirq: Provide new interfaces for affinity hints
dt-bindings: at24: Rework special case compatible handling
fpga: region: fix kernel-doc
clk: Add write operation for clk_parent debugfs node
clk: __clk_core_init() never takes NULL
clk: clk_core_get() can also return NULL
clk/ti/adpll: Make const pointer error a static const array
MIPS: DTS: Ingenic: adjust register size to available registers
MIPS: defconfig: CI20: configure for DRM_DW_HDMI_JZ4780
MIPS: DTS: CI20: Add DT nodes for HDMI setup
MIPS: DTS: jz4780: Account for Synopsys HDMI driver and LCD controllers
i2c: i801: Don't clear status flags twice in interrupt mode
i2c: i801: Don't read back cleared status in i801_check_pre()
i2c: exynos5: Mention Exynos850 and ExynosAutoV9 in Kconfig
i2c: exynos5: Add bus clock support
clocksource/drivers/imx-sysctr: Mark two variable with __ro_after_init
clocksource/drivers/renesas,ostm: Make RENESAS_OSTM symbol visible
clocksource/drivers/renesas-ostm: Add RZ/G2L OSTM support
dt-bindings: timer: renesas: ostm: Document Renesas RZ/G2L OSTM
x86: Add straight-line-speculation mitigation
ASoC: test-component: fix null pointer dereference.
ASoC: dt-bindings: tegra: Document interconnects property
phy: qcom: use struct_size instead of sizeof
powerpc/powermac: Add additional missing lockdep_register_key()
powerpc/fadump: Fix inaccurate CPU state info in vmcore generated with panic
powerpc: handle kdump appropriately with crash_kexec_post_notifiers option
selftests/powerpc/spectre_v2: Return skip code when miss_percent is high
powerpc/cell: Fix clang -Wimplicit-fallthrough warning
macintosh: Add const to of_device_id
powerpc/inst: Optimise copy_inst_from_kernel_nofault()
powerpc/inst: Move ppc_inst_t definition in asm/reg.h
powerpc/inst: Define ppc_inst_t as u32 on PPC32
powerpc/inst: Define ppc_inst_t
powerpc/inst: Refactor ___get_user_instr()
powerpc/32s: Allocate one 256k IBAT instead of two consecutives 128k IBATs
powerpc: Remove CONFIG_PPC_HAVE_KUAP and CONFIG_PPC_HAVE_KUEP
powerpc/kuap: Wire-up KUAP on book3e/64
powerpc/kuap: Wire-up KUAP on 85xx in 32 bits mode.
powerpc/kuap: Wire-up KUAP on 40x
powerpc/kuap: Wire-up KUAP on 44x
powerpc: Add KUAP support for BOOKE and 40x
powerpc/kuap: Make PPC_KUAP_DEBUG depend on PPC_KUAP only
powerpc/kuap: Prepare for supporting KUAP on BOOK3E/64
powerpc/config: Add CONFIG_BOOKE_OR_40x
powerpc/nohash: Move setup_kuap out of 8xx.c
powerpc/kuap: Add kuap_lock()
powerpc/kuap: Remove __kuap_assert_locked()
powerpc/kuap: Check KUAP activation in generic functions
powerpc/kuap: Add a generic intermediate layer
powerpc/kuep: Remove 'nosmep' boot time parameter except for book3s/64
powerpc/32s: Save content of sr0 to avoid 'mfsr'
powerpc/32s: Do kuep_lock() and kuep_unlock() in assembly
powerpc/32s: Remove capability to disable KUEP at boottime
powerpc/book3e: Activate KUEP at all time
powerpc/44x: Activate KUEP at all time
powerpc/8xx: Activate KUEP at all time
Revert "powerpc: Inline setup_kup()"
powerpc/40x: Map 32Mbytes of memory at startup
powerpc/microwatt: add POWER9_CPU, clear PPC_64S_HASH_MMU
powerpc/64s: Move hash MMU support code under CONFIG_PPC_64S_HASH_MMU
powerpc/64s: Make hash MMU support configurable
powerpc/64s: Always define arch unmapped area calls
powerpc/64s: Fix radix MMU when MMU_FTR_HPTE_TABLE is clear
powerpc/64e: remove mmu_linear_psize
clocksource/drivers/exynos_mct: Fix silly typo resulting in checkpatch warning
PCI/MSI: Move descriptor counting on allocation fail to the legacy code
genirq/msi: Handle PCI/MSI allocation fail in core code
PCI/MSI: Make pci_msi_domain_check_cap() static
PCI/MSI: Move msi_lock to struct pci_dev
PCI/MSI: Sanitize MSI-X table map handling
PCI/MSI: Split out irqdomain code
PCI/MSI: Split out !IRQDOMAIN code
PCI/MSI: Split out CONFIG_PCI_MSI independent part
PCI/MSI: Move code into a separate directory
PCI/MSI: Make msix_update_entries() smarter
PCI/MSI: Cleanup include zoo
PCI/MSI: Make arch_restore_msi_irqs() less horrible.
x86/hyperv: Refactor hv_msi_domain_free_irqs()
genirq/msi, treewide: Use a named struct for PCI/MSI attributes
MIPS: Octeon: Use arch_setup_msi_irq()
PCI/sysfs: Use pci_irq_vector()
PCI/MSI: Remove msi_desc_to_pci_sysdata()
PCI/MSI: Make pci_msi_domain_write_msg() static
genirq/msi: Fixup includes
genirq/msi: Remove unused domain callbacks
genirq/msi: Guard sysfs code
PCI/MSI: Fix pci_irq_vector()/pci_irq_get_affinity()
powerpc/4xx: Complete removal of MSI support
powerpc/4xx: Remove MSI support which never worked
x86/alternative: Relax text_poke_bp() constraint
MIPS: TXX9: Remove rbtx4938 board support
MIPS: Loongson64: Use three arguments for slti
MIPS: Loongson2ef: Remove unnecessary {as,cc}-option calls
i2c: exynos5: Add support for ExynosAutoV9 SoC
dt-bindings: i2c: exynos5: Add bus clock
dt-bindings: i2c: exynos5: Add exynosautov9-hsi2c compatible
dt-bindings: i2c: exynos5: Convert to dtschema
dt-bindings: i2c: brcm,bcm2835-i2c: convert to YAML schema
dt-bindings: i2c: tegra-bpmp: Convert to json-schema
dt-bindings: arm: pmu: Document Denver and Carmel PMUs
dt-bindings: arm: Catch up with Cortex/Neoverse CPUs again
dt-bindings: net: Convert SYSTEMPORT to YAML
dt-bindings: net: Convert AMAC to YAML
dt-bindings: net: Convert iProc MDIO mux to YAML
dt-bindings: phy: Convert Northstar 2 PCIe PHY to YAML
dt-bindings: net: Convert GENET binding to YAML
dt-bindings: net: Document moca PHY interface
dt-bindings: net: brcm,unimac-mdio: Update maintainers for binding
dt-bindings: net: brcm,unimac-mdio: reg-names is optional
dt-bindings: PCI: brcmstb: compatible is required
objtool: Add straight-line-speculation validation
x86: Prepare inline-asm for straight-line-speculation
ASoC: amd: Convert to new style DAI format definitions
binder: fix pointer cast warning
ASoC: mediatek: mt8195: silence uninitialized variable warning
iomap: turn the byte variable in iomap_zero_iter into a ssize_t
misc: sram: Add compatible string for Tegra234 SYSRAM
ASoC: AMD: acp-config: fix missing dependency on SND_SOC_ACPI
ASoC: dt-bindings: rt5682s: add AMIC delay time property
ASoC: Intel: sof_rt5682: Move rt1015 speaker amp to common file
ASoC: rt5682s: add delay time to fix pop sound issue
ASoC: Intel: boards: add 'static' qualifiers for max98390 routes
x86: Prepare asm files for straight-line-speculation
x86/lib/atomic64_386_32: Rename things
x86: Use -mindirect-branch-cs-prefix for RETPOLINE builds
x86: Move RETPOLINE*_CFLAGS to arch Makefile
x86/csum: Rewrite/optimize csum_partial()
clk: lan966x: Extend lan966x clock driver for clock gating support
dt-bindings: clock: lan966x: Extend includes with clock gates
dt-bindings: clock: lan966x: Extend for clock gate support
clk: gate: Add devm_clk_hw_register_gate()
clk: lan966x: Add lan966x SoC clock driver
dt-bindings: clock: lan966x: Add LAN966X Clock Controller
dt-bindings: clock: lan966x: Add binding includes for lan966x SoC clock IDs
clk: renesas: r9a07g044: Add GPU clock and reset entries
clk: renesas: r9a07g044: Add mux and divider for G clock
clk: renesas: r9a07g044: Rename CLK_PLL3_DIV4 macro
clk: renesas: cpg-mssr: Add support for R-Car S4-8
clk: renesas: rcar-gen4: Introduce R-Car Gen4 CPG driver
RDMA/qedr: Fix reporting max_{send/recv}_wr attrs
RDMA/rxe: Remove the unnecessary variable
ALSA: seq: Set upper limit of processed events
ALSA: mixart: Add sanity check for timer notify streams
ALSA: ppc: beep: fix clang -Wimplicit-fallthrough
fuse: Pass correct lend value to filemap_write_and_wait_range()
phy: qcom-qmp: Add SM8450 UFS QMP Phy
dt-bindings: phy: qcom,qmp: Add SM8450 UFS phy compatible
scsi: ufs: dt-bindings: Add SM8450 compatible strings
ALSA: mixart: Reduce size of mixart_timer_notify
scsi: lpfc: Update lpfc version to 14.0.0.4
scsi: lpfc: Add additional debugfs support for CMF
scsi: lpfc: Cap CMF read bytes to MBPI
scsi: lpfc: Adjust CMF total bytes and rxmonitor
scsi: lpfc: Trigger SLI4 firmware dump before doing driver cleanup
scsi: lpfc: Fix NPIV port deletion crash
scsi: lpfc: Fix lpfc_force_rscn ndlp kref imbalance
scsi: lpfc: Change return code on I/Os received during link bounce
scsi: lpfc: Fix leaked lpfc_dmabuf mbox allocations with NPIV
scsi: ufs: Implement polling support
scsi: ufs: Optimize the command queueing code
scsi: ufs: Stop using the clock scaling lock in the error handler
scsi: ufs: Fix a kernel crash during shutdown
scsi: ufs: Improve SCSI abort handling further
scsi: ufs: Introduce ufshcd_release_scsi_cmd()
scsi: ufs: Remove the 'update_scaling' local variable
scsi: ufs: Remove hba->cmd_queue
scsi: ufs: Fix a deadlock in the error handler
scsi: ufs: Rework ufshcd_change_queue_depth()
scsi: ufs: Remove ufshcd_any_tag_in_use()
scsi: ufs: Fix race conditions related to driver data
scsi: ufs: Remove dead code
scsi: ufs: Remove the sdev_rpmb member
scsi: ufs: Remove is_rpmb_wlun()
scsi: ufs: Rename a function argument
scsi: core: Fix scsi_device_max_queue_depth()
scsi: mptfusion: Remove redundant variable r
scsi: be2iscsi: Remove maintainers
scsi: qla4xxx: Format SYSFS_FLAG_FW_SEL_BOOT as byte
scsi: qedi: Fix SYSFS_FLAG_FW_SEL_BOOT formatting
scsi: hisi_sas: Use non-atomic bitmap functions when possible
scsi: hisi_sas: Remove some useless code in hisi_sas_alloc()
scsi: hisi_sas: Use devm_bitmap_zalloc() when applicable
RDMA/bnxt_re: Fix endianness warning for req.pkey
RDMA/irdma: Fix the type used to declare a bitmap
IB/core: Remove redundant pointer mm
RDMA/uverbs: Remove the unnecessary assignment
RDMA/hns: Modify the mapping attribute of doorbell to device
RDMA/siw: Use max() instead of doing it manually
dt-bindings: Use correct vendor prefix for Asahi Kasei Corp.
dt-bindings: Only show unique unit address warning for enabled nodes
interconnect: qcom: rpm: Prevent integer overflow in rate
interconnect: icc-rpm: Use NOC_QOS_MODE_INVALID for qos_mode check
clk: qcom: rpmh: add support for SM8450 rpmh clocks
dt-bindings: clock: Add RPMHCC bindings for SM8450
clk: qcom: smd-rpm: Drop binary value handling for buffered clock
clk: qcom: smd-rpm: Drop the use of struct rpm_cc
clk: qcom: smd-rpm: Drop MFD qcom-rpm reference
iommu/virtio: Support identity-mapped domains
iommu/virtio: Pass end address to viommu_add_mapping()
iommu/virtio: Sort reserved regions
iommu/virtio: Support bypass domains
iommu/virtio: Add definitions for VIRTIO_IOMMU_F_BYPASS_CONFIG
ASoC: mediatek: mt8195: add memory-region property
ASoC: mediatek: mt8195: add adsp and dai-link property
ASoC: mediatek: mt8195: add sof support on mt8195-mt6359-rt1019-rt5682
ASoC: mediatek: mt8195: add model property
ASoC: amd: acp6x-pdm-dma: Constify static snd_soc_dai_ops
ASoC: SOF: Intel: fix build issue related to CODEC_PROBE_ENTRIES
ASoC: ti: davinci-mcasp: Remove unnecessary conditional
ASoC: ti: davinci-mcasp: Get rid of duplicate of_node assignment
ASoC: zl38060: Setup parent device and get rid of unnecessary of_node assignment
ASoC: test-component: fix null pointer dereference.
sound/soc: remove useless bool conversion to bool variable
ASoC: mediatek: mt8195: add headset codec rt5682s support
ASoC: fsl-asoc-card: Add missing Kconfig option for tlv320aic31xx
ASoC: mediatek: mt8195: support reserved memory assignment
iommu/io-pgtable-arm: Fix table descriptor paddr formatting
iommu: Extend mutex lock scope in iommu_probe_device()
iommu: Log iova range in map/unmap trace events
ALSA: usb-audio: Drop CONFIG_PM ifdefs
ALSA: oss: remove useless NULL check before kfree
ALSA: Fix some typo
uio: uio_dmem_genirq: Catch the Exception
memremap: remove support for external pgmap refcounts
fsdax: don't require CONFIG_BLOCK
iomap: build the block based code conditionally
dax: fix up some of the block device related ifdefs
fsdax: shift partition offset handling into the file systems
dax: return the partition offset from fs_dax_get_by_bdev
iomap: add a IOMAP_DAX flag
xfs: pass the mapping flags to xfs_bmbt_to_iomap
xfs: use xfs_direct_write_iomap_ops for DAX zeroing
xfs: move dax device handling into xfs_{alloc,free}_buftarg
ext4: cleanup the dax handling in ext4_fill_super
ext2: cleanup the dax handling in ext2_fill_super
fsdax: decouple zeroing from the iomap buffered I/O code
fsdax: factor out a dax_memzero helper
fsdax: simplify the offset check in dax_iomap_zero
xfs: add xfs_zero_range and xfs_truncate_page helpers
fsdax: simplify the pgoff calculation
fsdax: use a saner calling convention for copy_cow_page_dax
fsdax: remove a pointless __force cast in copy_cow_page_dax
dm-stripe: add a stripe_dax_pgoff helper
dm-log-writes: add a log_writes_dax_pgoff helper
dm-linear: add a linear_dax_pgoff helper
dax: remove dax_capable
xfs: factor out a xfs_setup_dax_always helper
dax: move the partition alignment check into fs_dax_get_by_bdev
dax: remove the pgmap sanity checks in generic_fsdax_supported
dax: simplify the dax_device <-> gendisk association
dax: remove CONFIG_DAX_DRIVER
dm: make the DAX support depend on CONFIG_FS_DAX
dm: fix alloc_dax error handling in alloc_dev
iio:dac:ad7293: add support for AD7293
iio: ltr501: Export near level property for proximity sensor
dt-bindings: iio: light: ltr501: Add proximity-near-level
dt-bindings: iio: adc: document TS voltage in AXP PMICs
iio:adc:axp20x: add support for NTC thermistor
Documentation: dt: iio: st_lsm6dsx: add disable-sensor-hub property
iio: imu: st_lsm6dsx: add dts property to disable sensor-hub
openrisc: Add clone3 ABI wrapper
openrisc: Use delay slot for clone and fork wrappers
openrisc: Cleanup switch code and comments
clk: qcom: Add support for SDX65 RPMh clocks
dt-bindings: clock: Introduce RPMHCC bindings for SDX65
driver: soc: xilinx: register for power events in zynqmp power driver
firmware: xilinx: instantiate xilinx event manager driver
drivers: soc: xilinx: add xilinx event management driver
nvmem: core: set size for sysfs bin file
w1: Misuse of get_user()/put_user() reported by sparse
binder: defer copies of pre-patched txn data
binder: read pre-translated fds from sender buffer
binder: avoid potential data leakage when copying txn
binder: fix handling of error during copy
binder: remove repeat word from comment
char/mwave: Adjust io port register size
mei: Remove some dead code
misc: at25: Align comment style
misc: at25: Replace commas by spaces in the ID tables
misc: at25: Reorganize headers for better maintenance
misc: at25: Factor out at_fram_to_chip()
misc: at25: Switch to use BIT() instead of custom approaches
misc: at25: Get rid of intermediate storage for AT25 chip data
misc: at25: Get platform data via dev_get_platdata()
misc: at25: Check new property ("address-width") first
misc: at25: Unshadow error codes in at25_fw_to_chip()
misc: at25: Use at25->chip instead of local chip everywhere in ->probe()
misc: at25: Check proper value of chip length in FRAM case
misc: at25: Don't copy garbage to the at25->chip in FRAM case
misc: at25: Make driver OF independent again
fpga: stratix10-soc: Do not use ret uninitialized in s10_probe()
scsi: sd_zbc: Clean up sd_zbc_parse_report() setting of wp
scsi: sd_zbc: Simplify zone full condition check
MAINTAINERS: Add entry for Qualcomm clock drivers
clk: Gemini: fix struct name in kernel-doc
clk: zynq: pll: Fix kernel-doc warnings
clk: imx: pllv1: fix kernel-doc notation for struct clk_pllv1
ASoC: cs35l41: Fix undefined reference to core functions
ASoC: amd: Fix dependency for SPI master
ASoC: rt5640: Fix the wrong state of the JD in the HDA header
powerpc: make memremap_compat_align 64s-only
powerpc/64: pcpu setup avoid reading mmu_linear_psize on 64e or radix
powerpc/64s: Rename hash_hugetlbpage.c to hugetlbpage.c
powerpc/64s: move page size definitions from hash specific file
powerpc/64s: Make flush_and_reload_slb a no-op when radix is enabled
powerpc/64s: move THP trace point creation out of hash specific file
powerpc/pseries: lparcfg don't include slb_size line in radix mode
powerpc/pseries: move process table registration away from hash-specific code
powerpc/64s: Move and rename do_bad_slb_fault as it is not hash specific
powerpc/pseries: Stop selecting PPC_HASH_MMU_NATIVE
powerpc: Rename PPC_NATIVE to PPC_HASH_MMU_NATIVE
powerpc: Remove unused FW_FEATURE_NATIVE references
KVM: PPC: Book3S: Suppress failed alloc warning in H_COPY_TOFROM_GUEST
KVM: PPC: Book3S: Suppress warnings when allocating too big memory slots
ALSA: usb-audio: Drop superfluous '0' in Presonus Studio 1810c's ID
ALSA: hda/hdmi: Consider ELD is invalid when no SAD is present
phy: lan966x: Extend lan966x to support multiple phy interfaces.
phy: intel: Remove redundant dev_err call in thunderbay_emmc_phy_probe()
dt-bindings: net: cdns,macb: Convert to json-schema
dt-bindings: dma: sifive,fu540-c000-pdma: Group interrupt tuples
dt-bindings: net: ethernet-controller: add 2.5G and 10G speeds
of: base: Skip CPU nodes with "fail"/"fail-..." status
Update trivial-devices.yaml with Sensirion,sht4x
dt-bindings: Add resets to the PL011 bindings
dt-bindings: hwmon: add TI DC-DC converters
dt-bindings: leds: convert BCM6328 controller to the json-schema
KVM: PPC: Book3S HV P9: Remove unused ri_set local variable
powerpc/xive: Fix compile when !CONFIG_PPC_POWERNV.
powerpc/signal32: Use struct_group() to zero spe regs
i2c: stm32f7: remove noisy and imprecise log messages
i2c: stm32: get rid of stm32f7_i2c_release_bus return value
ASoC: codecs: wcd934x: remove redundant ret variable
ASoC: tegra: Add master volume/mute control support
eeprom: at24: remove struct at24_client
ALSA: oss: fix compile error when OSS_DEBUG is enabled
clocksource: Reduce the default clocksource_watchdog() retries to 2
clocksource: Avoid accidental unstable marking of clocksources
genirq/generic_chip: Constify irq_generic_chip_ops
Revert "i2c: designware-pci: Add support for Fast Mode Plus and High Speed Mode"
Revert "i2c: designware-pci: Set ideal timing parameters for Elkhart Lake PSE"
ASoC: Intel: Skylake: Use NHLT API to search for blob
ALSA: hda: Simplify DMIC-in-NHLT check
ALSA: hda: Fill gaps in NHLT endpoint-interface
ASoC: Intel: boards: add max98390 2/4 speakers support
ASoC: mediatek: mt8195: make several arrays static const
firmware: cs_dsp: Move lockdep asserts to avoid potential null pointer
ASoC: intel: boards: bytcht*: Constify static snd_soc_ops
ASoC: Intel: hda_dsp_common: don't multiline PCM topology warning
ASoC: mediatek: mt8195: Constify static snd_soc_ops
interconnect: qcom: icc-rpmh: Add BCMs to commit list in pre_aggregate
powerpc/32s: Fix shift-out-of-bounds in KASAN init
powerpc/powermac: Add missing lockdep_register_key()
powerpc/modules: Don't WARN on first module allocation attempt
powerpc/64s: Get LPID bit width from device tree
MIPS: TXx9: Let MACH_TX49XX select BOOT_ELF32
clk: meson: gxbb: Fix the SDM_EN bit for MPLL0 on GXBB
powerpc/perf: Fix PMU callbacks to clear pending PMI before resetting an overflown PMC
scsi: Remove superfluous #include <linux/async.h> directives
scsi: pmcraid: Fix a kernel-doc warning
scsi: pm8001: Fix kernel-doc warnings
scsi: megaraid: Fix a kernel-doc warning
scsi: initio: Fix a kernel-doc warning
scsi: dc395x: Fix a kernel-doc warning
scsi: bfa: Declare 'bfad_im_vport_attrs' static
scsi: atp870u: Fix a kernel-doc warning
scsi: a100u2w: Fix a kernel-doc warning
scsi: core: Show SCMD_LAST in text form
scsi: core: Declare 'scsi_scan_type' static
scsi: core: Suppress a kernel-doc warning
scsi: qedi: Remove set but unused 'page' variable
scsi: ufs: Let devices remain runtime suspended during system suspend
powerpc/atomics: Remove atomic_inc()/atomic_dec() and friends
powerpc/atomics: Use immediate operand when possible
powerpc/bitops: Use immediate operand when possible
i2c: i801: Improve handling platform data for tco device
dt-bindings: arm: cpus: Add ARM Cortex-A78
dt-bindings: thermal: Fix definition of cooling-maps contribution property
dt-bindings: display: sync formats with simplefb.h
RDMA/bnxt_re: Use bitmap_zalloc() when applicable
RDMA/pvrdma: Use non-atomic bitmap functions when possible
RDMA/pvrdma: Use bitmap_zalloc() when applicable
IB/hfi1: Use bitmap_zalloc() when applicable
RDMA/mlx4: Use bitmap_alloc() when applicable
RDMA/ocrdma: Simplify code in 'ocrdma_search_mmap()'
RDMA/ocrdma: Use bitmap_zalloc() when applicable
i2c: designware-pci: Set ideal timing parameters for Elkhart Lake PSE
i2c: designware-pci: Add support for Fast Mode Plus and High Speed Mode
i2c: enable async suspend/resume on i2c client devices
i2c: enable async suspend/resume for i2c adapters
i2c: designware: Enable async suspend / resume of designware devices
i2c: mpc: Correct I2C reset procedure
ALSA: hda: Make proper use of timecounter
ASoC: sunxi: sun4i-spdif: Implement IEC958 control
ASoC: qcom: Add support for ALC5682I-VS codec
ASoC: sun8i-codec: Add AIF, ADC, and DAC volume controls
ASoC: soc-pcm: tidyup soc_pcm_pointer()'s delay update method
ASoC: intel: sst-mfld-platform-pcm: add .delay support
ASoC: amd: acp-pcm-dma: add .delay support
ASoC: soc-component: add snd_soc_pcm_component_delay()
ASoC: soc-dai: update snd_soc_dai_delay() to snd_soc_pcm_dai_delay()
powerpc: flexible GPR range save/restore macros
powerpc/watchdog: help remote CPUs to flush NMI printk output
powerpc: Don't bother about .data..Lubsan sections
powerpc/ptdump: Fix display a BAT's size unit
powerpc/ftrace: Activate HAVE_DYNAMIC_FTRACE_WITH_REGS on PPC32
powerpc/ftrace: Add module_trampoline_target() for PPC32
powerpc/ftrace: No need to read LR from stack in _mcount()
powerpc: Mark probe_machine() __init and static
powerpc/smp: Move setup_profiling_timer() under CONFIG_PROFILING
powerpc/mm: Move tlbcam_sz() and make it static
powerpc/85xx: Make c293_pcie_pic_init() static
powerpc/85xx: Make mpc85xx_smp_kexec_cpu_down() static
powerpc/85xx: Fix no previous prototype warning for mpc85xx_setup_pmc()
powerpc: select CPUMASK_OFFSTACK if NR_CPUS >= 8192
powerpc: remove cpu_online_cores_map function
MIPS: CPS: Use bitfield helpers
MIPS: CPC: Use bitfield helpers
MIPS: Remove a repeated word in a comment
dt-bindings: timer: tpm-timer: Add imx8ulp compatible string
i2c: designware: Fix the kernel doc description for struct dw_i2c_dev
i2c: rk3x: enable clock before getting rate
i2c: i801: Improve handling of chip-specific feature definitions
i2c: i801: Remove i801_set_block_buffer_mode
i2c: i801: Don't silently correct invalid transfer size
i2c: tegra: Add the ACPI support
dt-bindings: i2c: imx-lpi2c: Add imx8ulp compatible string
dt-bindings: i2c: imx-lpi2c: Add i.MX8DXL compatible match
Revert "powerpc/code-patching: Improve verification of patchability"
fpga: region: Use standard dev_release for class driver
fpga: bridge: Use standard dev_release for class driver
fpga: mgr: Use standard dev_release for class driver
iio: test: Add test for IIO_VAL_INT_64.
iio: test: Add check against NULL for buffer in tests.
iio: expose shared parameter in IIO_ENUM_AVAILABLE
iio: buffer-dma: Use round_down() instead of rounddown()
iio: buffer-dma: Remove unused iio_buffer_block struct
Documentation: coresight: Update coresight configuration docs
coresight: configfs: Allow configfs to activate configuration
coresight: syscfg: Example CoreSight configuration loadable module
coresight: syscfg: Update load API for config loadable modules
coresight: configuration: Update API to permit dynamic load/unload
coresight: configuration: Update API to introduce load owner concept
most: usb: replace snprintf in show functions with sysfs_emit
speakup: remove redundant assignment of variable i
scripts/tags: add space regexs to all regex_c
comedi: Move "comedi_isadma.h" to <linux/comedi/comedi_isadma.h>
comedi: Move "comedi_8254.h" to <linux/comedi/comedi_8254.h>
comedi: Move and rename "8255.h" to <linux/comedi/comedi_8255.h>
comedi: ni_routing: tools: Update due to moved COMEDI headers
comedi: Move the main COMEDI headers
include/linux/byteorder/generic.h: fix index variables
ASoC: SOF: mediatek: Use %pR/%pa to print resources/physical addresses
ASoC: cs35l41: Fix link problem
ASoC: codecs/jz4770: Add missing gain control after DAC/ADC mixer
ASoC: imx-hdmi: add put_device() after of_find_device_by_node()
ASoC: SOF: Intel: hda: send DAI_CONFIG IPC during pause
ASoC: SOF: IPC: dai: Expand DAI_CONFIG IPC flags
ASoC: SOF: align the hw_free sequence with stop
ASoC: SOF: pcm: move the check for prepared flag
ASoC: SOF: Add a helper for freeing PCM stream
ASoC: SOF: call platform hw_free for paused streams during suspend
ASoC: SOF: pcm: invoke platform hw_free for STOP/SUSPEND triggers
ASoC: SOF: Intel: hda: reset stream before coupling host and link DMA's
ASoC: SOF: Intel: hda: Add a helper function for stream reset
ASoC: SOF: Intel: hda: clear stream before freeing the DAI widget
clk: renesas: r9a07g044: Add TSU clock and reset entry
mmc: renesas_sdhi: Simplify an expression
mmc: renesas_sdhi: Use devm_clk_get_optional() to obtain CD clock
phy: stm32: adopt dev_err_probe for regulators
RDMA/bnxt_re: Remove dynamic pkey table
RDMA/siw: Use helper function to set sys_image_guid
RDMA/rtrs-clt: Fix the initial value of min_latency
RDMA/cma: Remove open coding of overflow checking for private_data_len
RDMA/cxgb4: Use non-atomic bitmap functions when possible
RDMA/cxgb4: Use bitmap_set() when applicable
RDMA/cxgb4: Use bitmap_zalloc() when applicable
IB/mthca: Use non-atomic bitmap functions when possible in 'mthca_mr.c'
IB/mthca: Use non-atomic bitmap functions when possible in 'mthca_allocator.c'
IB/mthca: Use bitmap_set() when applicable
IB/mthca: Use bitmap_zalloc() when applicable
fuse: send security context of inode on file
fuse: extend init flags
ASoC: rt5640: Add the HDA header support
ASoC: rt5640: Add the binding include file for the HDA header support
ASoC: codecs: wcd938x: add SND_SOC_WCD938_SDW to codec list instead
ASoC: uniphier: drop selecting non-existing SND_SOC_UNIPHIER_AIO_DMA
ASoC: SOF: mediatek: Add missing of_node_put() in platform_parse_resource()
ASoC: mediatek: remove unnecessary CONFIG_PM
powerpc/watchdog: Fix wd_smp_last_reset_tb reporting
phy: bcm-ns-usb2: improve printing ref clk errors
dax: Kill DEV_DAX_PMEM_COMPAT
powerpc/microwatt: Make microwatt_get_random_darn() static
powerpc/watchdog: read TB close to where it is used
powerpc/watchdog: Avoid holding wd_smp_lock over printk and smp_send_nmi_ipi
powerpc/watchdog: tighten non-atomic read-modify-write access
powerpc/watchdog: Fix missed watchdog reset due to memory ordering race
powerpc/prom_init: Fix improper check of prom_getprop()
powerpc/rtas: rtas_busy_delay_time() kernel-doc
powerpc/rtas: rtas_busy_delay() improvements
powerpc/pseries: delete scanlog
powerpc/rtas: kernel-doc fixes
powerpc/code-patching: Improve verification of patchability
powerpc/tsi108: make EXPORT_SYMBOL follow its function immediately
bpf ppc32: Access only if addr is kernel address
bpf ppc32: Add BPF_PROBE_MEM support for JIT
bpf ppc64: Access only if addr is kernel address
bpf ppc64: Add BPF_PROBE_MEM support for JIT
powerpc/ppc-opcode: introduce PPC_RAW_BRANCH() macro
bpf powerpc: refactor JIT compiler code
bpf powerpc: Remove extra_pass from bpf_jit_build_body()
bpf powerpc: Remove unused SEEN_STACK
powerpc/eeh: Use a goto for recovery failures
powerpc/eeh: Small refactor of eeh_handle_normal_event()
powerpc/xive: Add a debugfs toggle for save-restore
powerpc/xive: Add a kernel parameter for StoreEOI
powerpc/xive: Add a debugfs toggle for StoreEOI
powerpc/xive: Add a debugfs file to dump EQs
powerpc/xive: Rename the 'cpus' debugfs file to 'ipis'
powerpc/xive: Change the debugfs file 'xive' into a directory
powerpc/xive: Introduce xive_core_debugfs_create()
powerpc/xive: Activate StoreEOI on P10
powerpc/xive: Introduce an helper to print out interrupt characteristics
powerpc/xive: Replace pr_devel() by pr_debug() to ease debug
powerpc/powernv: Remove POWER9 PVR version check for entry and uaccess flushes
powerpc/btext: add missing of_node_put
powerpc/cell: add missing of_node_put
powerpc/powernv: add missing of_node_put
powerpc/6xx: add missing of_node_put
ASoC: SOF: handle paused streams during system suspend
ASoC: SOF: topology: don't use list_for_each_entry_reverse()
ASoC: SOF: sof-audio: setup sched widgets during pipeline complete step
ASoC: SOF: Intel: add .ack support for HDaudio platforms
ASoC: SOF: pcm: add .ack callback support
ALSA: pcm: introduce INFO_NO_REWINDS flag
ALSA: pcm: unconditionally check if appl_ptr is in 0..boundary range
KVM: PPC: Book3S HV P9: Remove subcore HMI handling
KVM: PPC: Book3S HV P9: Stop using vc->dpdes
KVM: PPC: Book3S HV P9: Tidy kvmppc_create_dtl_entry
KVM: PPC: Book3S HV P9: Remove most of the vcore logic
KVM: PPC: Book3S HV P9: Avoid cpu_in_guest atomics on entry and exit
KVM: PPC: Book3S HV P9: Add unlikely annotation for !mmu_ready
KVM: PPC: Book3S HV P9: Avoid changing MSR[RI] in entry and exit
KVM: PPC: Book3S HV P9: Optimise hash guest SLB saving
KVM: PPC: Book3S HV P9: Improve mfmsr performance on entry
KVM: PPC: Book3S HV Nested: Avoid extra mftb() in nested entry
KVM: PPC: Book3S HV P9: Avoid tlbsync sequence on radix guest exit
KVM: PPC: Book3S HV: Split P8 from P9 path guest vCPU TLB flushing
KVM: PPC: Book3S HV P9: Don't restore PSSCR if not needed
KVM: PPC: Book3S HV P9: Test dawr_enabled() before saving host DAWR SPRs
KVM: PPC: Book3S HV P9: Comment and fix MMU context switching code
KVM: PPC: Book3S HV P9: Use Linux SPR save/restore to manage some host SPRs
KVM: PPC: Book3S HV P9: Demand fault TM facility registers
KVM: PPC: Book3S HV P9: Demand fault EBB facility registers
KVM: PPC: Book3S HV P9: More SPR speed improvements
KVM: PPC: Book3S HV P9: Restrict DSISR canary workaround to processors that require it
KVM: PPC: Book3S HV P9: Switch PMU to guest as late as possible
KVM: PPC: Book3S HV P9: Implement TM fastpath for guest entry/exit
KVM: PPC: Book3S HV P9: Move remaining SPR and MSR access into low level entry
KVM: PPC: Book3S HV P9: Move nested guest entry into its own function
KVM: PPC: Book3S HV P9: Move host OS save/restore functions to built-in
KVM: PPC: Book3S HV P9: Move vcpu register save/restore into functions
KVM: PPC: Book3S HV P9: Juggle SPR switching around
KVM: PPC: Book3S HV P9: Only execute mtSPR if the value changed
KVM: PPC: Book3S HV P9: Avoid SPR scoreboard stalls
KVM: PPC: Book3S HV P9: Optimise timebase reads
KVM: PPC: Book3S HV P9: Move TB updates
KVM: PPC: Book3S HV: Change dec_expires to be relative to guest timebase
KVM: PPC: Book3S HV P9: Add kvmppc_stop_thread to match kvmppc_start_thread
KVM: PPC: Book3S HV P9: Improve mtmsrd scheduling by delaying MSR[EE] disable
KVM: PPC: Book3S HV P9: Reduce mtmsrd instructions required to save host SPRs
KVM: PPC: Book3S HV P9: Move SPRG restore to restore_p9_host_os_sprs
KVM: PPC: Book3S HV: CTRL SPR does not require read-modify-write
KVM: PPC: Book3S HV P9: Factor out yield_count increment
KVM: PPC: Book3S HV P9: Demand fault PMU SPRs when marked not inuse
KVM: PPC: Book3S HV P9: Factor PMU save/load into context switch functions
KVM: PPC: Book3S HV P9: Implement PMU save/restore in C
powerpc/64s: Implement PMU override command line option
powerpc/64s: Always set PMU control registers to frozen/disabled when not in use
KVM: PPC: Book3S HV: Don't always save PMU for guest capable of nesting
powerpc/64s: Keep AMOR SPR a constant ~0 at runtime
KVM: PPC: Book3S HV: POWER10 enable HAIL when running radix guests
powerpc/time: add API for KVM to re-arm the host timer/decrementer
KVM: PPC: Book3S HV P9: Reduce mftb per guest entry/exit
KVM: PPC: Book3S HV P9: Use large decrementer for HDEC
KVM: PPC: Book3S HV P9: Use host timer accounting to avoid decrementer read
KMV: PPC: Book3S HV P9: Use set_dec to set decrementer to host
powerpc/64s: guard optional TIDR SPR with CPU ftr test
powerpc/64s: Remove WORT SPR from POWER9/10 (take 2)
ALSA: led: Use restricted type for iface assignment
soundwire: qcom: remove redundant version number read
i2c: mux: gpio: Use array_size() helper
i2c: mux: gpio: Don't dereference fwnode from struct device
i2c: mux: gpio: Replace custom acpi_get_local_address()
i2c: imx: Add timer for handling the stop condition
clk: sunxi-ng: Add support for the D1 SoC clocks
clk: sunxi-ng: gate: Add macros for gates with fixed dividers
clk: sunxi-ng: mux: Add macros using clk_parent_data and clk_hw
clk: sunxi-ng: mp: Add macros using clk_parent_data and clk_hw
clk: sunxi-ng: div: Add macros using clk_parent_data and clk_hw
dt-bindings: clk: Add compatibles for D1 CCUs
clk: sunxi-ng: Allow the CCU core to be built as a module
clk: sunxi-ng: Convert early providers to platform drivers
i2c: Remove unused Netlogic/Sigma Designs XLR driver
i2c: Remove Netlogic XLP variant
phy: intel: Add Thunder Bay eMMC PHY support
dt-bindings: phy: intel: Add Thunder Bay eMMC PHY bindings
phy: Add lan966x ethernet serdes PHY driver
dt-bindings: phy: Add constants for lan966x serdes
dt-bindings: phy: Add lan966x-serdes binding
phy: phy-can-transceiver: Make devm_gpiod_get optional
phy: cadence-torrent: use swap() to make code cleaner
phy: uniphier-ahci: Add support for Pro4 SoC
dt-bindings: phy: uniphier-ahci: Add bindings for Pro4 SoC
phy: uniphier-pcie: Add dual-phy support for NX1 SoC
phy: uniphier-pcie: Set VCOPLL clamp mode in PHY register
phy: uniphier-pcie: Add compatible string and SoC-dependent data for NX1 SoC
dt-bindings: phy: uniphier-pcie: Add bindings for NX1 SoC
phy: uniphier-usb3: Add compatible string for NX1 SoC
dt-bindings: phy: uniphier-usb3: Add bindings for NX1 SoC
dt-bindings: phy: Tegra194 P2U convert to YAML
phy: amlogic: Add a new driver for the HDMI TX PHY on Meson8/8b/8m2
dt-bindings: phy: Add the Amlogic Meson8 HDMI TX PHY bindings
phy: qcom: Introduce new eDP PHY driver
dt-bindings: phy: Introduce Qualcomm eDP PHY binding
phy: bcm-ns-usb2: support updated DT binding with PHY reg space
clk: samsung: exynos850: Register clocks early
interconnect: qcom: Add MSM8996 interconnect provider driver
dt-bindings: interconnect: Add Qualcomm MSM8996 DT bindings
interconnect: icc-rpm: Add support for bus power domain
dt-bindings: interconnect: Combine SDM660 bindings into RPM schema
ASoC: fsl-asoc-card: Support fsl,imx-audio-tlv320aic31xx codec
ASoC: tlv320aic31xx: Handle BCLK set as PLL input configuration
ASoC: tlv320aic31xx: Add divs for bclk as clk_in
ASoC: tlv320aic31xx: Add support for pll_r coefficient
ASoC: tlv320aic31xx: Fix typo in BCLK clock name
ASoC: cs42l42: Report initial jack state
ASoC: SOF: sof-pci-dev: use community key on all Up boards
ASoC: stm32: spdifrx: add pm_runtime support
ASoC: stm32: dfsdm: add pm_runtime support for audio
ASoC: stm32: i2s: add pm_runtime support
ASoC: SOF: Intel: hda: free DAI widget during stop and suspend
ASoC: SOF: add support for dynamic pipelines with multi-core
ASoC: SOF: hda: don't use the core op for power up/power down
ASoC: SOF: free widgets in sof_tear_down_pipelines() for static pipelines
ASoC: SOF: topology: remove sof_load_pipeline_ipc()
ASoC: SOF: Intel: CNL/ICL/APL: set core_get/core_put ops
ASoC: SOF: Intel: TGL: set core_get/put ops
ASoC: SOF: Add ops for core_get and core_put
ASoC: SOF: Introduce num_cores and ref count per core
ASoC: SOF: Intel: hda: expose get_chip_info()
ASoC: SOF: imx8m: Implement reset callback
ASoC: SOF: imx8m: Implement DSP start
ASoC: SOF: imx8m: Add runtime PM / System PM support
ASoC: SOF: imx8: Add runtime PM / System PM support
ASoC: SOF: imx: Add code to manage DSP related clocks
clk: imx8mp: Fix the parent clk of the audio_root_clk
clk: imx8mp: Remove IPG_AUDIO_ROOT from imx8mp-clock.h
interconnect: qcom: Add EPSS L3 support on SC7280
dt-bindings: interconnect: Add EPSS L3 DT binding on SC7280
clk: imx8mn: Fix imx8mn_clko1_sels
clk: imx: Use div64_ul instead of do_div
clk: imx: imx8ulp: set suppress_bind_attrs to true
clk: samsung: exynos850: Keep some crucial clocks running
clk: samsung: exynos850: Implement CMU_CMGP domain
dt-bindings: clock: Add bindings for Exynos850 CMU_CMGP
clk: samsung: exynos850: Implement CMU_APM domain
dt-bindings: clock: Add bindings for Exynos850 CMU_APM
clk: sunxi-ng: Allow drivers to be built as modules
clk: sunxi-ng: Export symbols used by CCU drivers
iio: buffer: Use dedicated variable in iio_buffers_alloc_sysfs_and_mask()
clk: samsung: Update CPU clk registration
ALSA: hda: Remove redundant runtime PM calls
clk: samsung: Remove meaningless __init and extern from header files
clk: samsung: remove __clk_lookup() usage
dt-bindings: clock: samsung: add IDs for some core clocks
RDMA/hns: Remove magic number
RDMA/hns: Remove macros that are no longer used
RDMA/hns: Correctly initialize the members of Array[][]
RDMA/hns: Correct the type of variables participating in the shift operation
RDMA/hns: Replace tab with space in the right-side comments
RDMA/hns: Correct the print format to be consistent with the variable type
RDMA/hns: Correct the hex print format
RDMA/rxe: Remove some #defines from rxe_pool.h
RDMA/rxe: Remove #include "rxe_loc.h" from rxe_pool.c
RDMA/rxe: Save object pointer in pool element
RDMA/rxe: Copy setup parameters into rxe_pool
RDMA/rxe: Cleanup rxe_pool_entry
RDMA/rxe: Replace irqsave locks with bh locks
RDMA/usnic: Clean up usnic_ib_alloc_pd()
RDMA/cxgb4: Use helper function to set GUIDs
reset: Add of_reset_control_get_optional_exclusive()
dt-bindings: clock: renesas,cpg-mssr: Document r8a779f0
clk: renesas: cpg-mssr: propagate return value of_genpd_add_provider_simple()
clk: renesas: cpg-mssr: Check return value of pm_genpd_init()
clk: renesas: rzg2l: propagate return value of_genpd_add_provider_simple()
clk: renesas: rzg2l: Check return value of pm_genpd_init()
clk: renesas: r9a07g044: Add RSPI clock and reset entries
clk: renesas: r9a07g044: Change core clock "I" from DEF_FIXED->DEF_DIV
clk: renesas: rzg2l: Add CPG_PL1_DDIV macro
mmc: renesas_sdhi: Parse DT for SDnH
mmc: renesas_sdhi: Use dev_err_probe when getting clock fails
clk: renesas: rcar-gen3: Remove outdated SD_SKIP_FIRST
clk: renesas: rcar-gen3: Switch to new SD clock handling
mmc: renesas_sdhi: Flag non-standard SDnH handling for V3M
clk: renesas: r8a779a0: Add SDnH clock to V3U
clk: renesas: rcar-gen3: Add SDnH clock
clk: renesas: rcar-gen3: Add dummy SDnH clock
scsi: ufs: Fix double space in SCSI_UFS_HWMON description
scsi: ufs: Wrap Universal Flash Storage drivers in SCSI_UFSHCD
scsi: pm80xx: Add pm80xx_mpi_build_cmd() tracepoint
scsi: pm80xx: Add tracepoints
scsi: pm80xx: Use bitmap_zalloc() for tags bitmap allocation
scsi: pm80xx: Update WARN_ON check in pm8001_mpi_build_cmd()
scsi: pm80xx: Do not check the address-of value for NULL
scsi: pm80xx: Apply byte mask for phy ID in mpi_phy_start_resp()
scsi: core: Use eh_timeout for START STOP UNIT
scsi: core: Remove Scsi_Host.shost_dev_attr_groups
scsi: core: Simplify control flow in scmd_eh_abort_handler()
Documentation: coresight: Fix documentation issue
of: property: fw_devlink: Fixup behaviour when 'node_not_dev' is set
ASoC: codecs: MBHC: Remove useless condition check
ASoC: SOF: mediatek: Add DSP system PM callback for mt8195
ASoC: SOF: mediatek: Add mt8195 dsp clock support
ASoC: SOF: mediatek: Add dai driver dsp ops callback for mt8195
ASoC: SOF: Add mt8195 device descriptor
ASoC: SOF: mediatek: Add fw loader and mt8195 dsp ops to load firmware
ASoC: SOF: topology: Add support for Mediatek AFE DAI
ASoC: SOF: tokens: add token for Mediatek AFE
ASoC: SOF: mediatek: Add mt8195 hardware support
firmware: cs_dsp: Allow creation of event controls
firmware: cs_dsp: Add offset to cs_dsp read/write
firmware: cs_dsp: Clarify some kernel doc comments
firmware: cs_dsp: Perform NULL check in cs_dsp_coeff_write/read_ctrl
firmware: cs_dsp: Add support for rev 2 coefficient files
firmware: cs_dsp: Print messages from bin files
firmware: cs_dsp: Add pre_run callback
firmware: cs_dsp: Add version checks on coefficient loading
firmware: cs_dsp: Add lockdep asserts to interface functions
ASoC: wm_adsp: Remove the wmfw_add_ctl helper function
RDMA/hns: Validate the pkey index
RDMA/ocrdma: Use helper function to set GUIDs
iio: light: ltr501: Added ltr303 driver support
iio: adc: rzg2l_adc: Remove unnecessary print function dev_err()
iio: mpl3115: Use scan_type.shift and realbit in mpl3115_read_raw
iio: xilinx-xadc-core: Use local variable in xadc_read_raw
iio: ti-ads1015: Remove shift variable ads1015_read_raw
iio: mag3110: Use scan_type when processing raw data
iio: ti-adc12138: Use scan_type when processing raw data
iio: ad7266: Use scan_type when processing raw data
iio: stk8ba50: Use scan_type when processing raw data
iio: stk8312: Use scan_type when processing raw data
iio: sca3000: Use scan_type when processing raw data
iio: mma7455: Use scan_type when processing raw data
iio: kxcjk-1013: Use scan_type when processing raw data
iio: bma220: Use scan_type when processing raw data
iio: at91-sama5d2: Use dev_to_iio_dev() in sysfs callbacks
iio: at91-sama5d2: Fix incorrect cast to platform_device
iio: mma8452: Use correct type for return variable in IRQ handler
iio: lmp91000: Remove no-op trigger ops
iio: gp2ap020a00f: Remove no-op trigger ops
iio: atlas-sensor: Remove no-op trigger ops
iio: as3935: Remove no-op trigger ops
iio: afe4404: Remove no-op trigger ops
iio: afe4403: Remove no-op trigger ops
iio: ad_sigma_delta: Remove no-op trigger ops
iio: sysfs-trigger: Remove no-op trigger ops
iio: interrupt-trigger: Remove no-op trigger ops
iio: Mark iio_device_type as const
iio/scmi: Add reading "raw" attribute.
iio: core: Introduce IIO_VAL_INT_64.
iio: adc: ina2xx: Avoid double reference counting from get_task_struct/put_task_struct()
iio: adc: ina2xx: Make use of the helper macro kthread_run()
iio: ms5611: Simplify IO callback parameters
iio: imx7d_adc: Don't pass IIO device to imx7d_adc_{enable,disable}()
iio: st-sensors: Use dev_to_iio_dev() in sysfs callbacks
iio: adc: stm32-adc: Fix of_node_put() issue in stm32-adc
iio: xilinx-xadc: Make IRQ optional
iio: accel: mma7660: Warn about failure to put device in stand-by in .remove()
iio: adc: lpc18xx_adc: Reorder clk_get_rate() function call
ASoC: SOF: amd: Add support for SOF firmware authentication
ASoC: SOF: amd: Add trace logger support
ASoC: SOF: topology: Add support for AMD ACP DAIs
ASoC: amd: acp-config: Remove legacy acpi based machine struct
ASoC: SOF: amd: Add Renoir PCI driver interface
ASoC: SOF: amd: Add machine driver dsp ops for Renoir platform
ASoC: amd: Add module to determine ACP configuration
ASoC: SOF: amd: Add PCM stream callback for Renoir dai's
ASoC: SOF: amd: Add dai driver dsp ops callback for Renoir
ASoC: SOF: amd: Add IPC support for ACP IP block
ASoC: SOF: amd: Add fw loader and renoir dsp ops to load firmware
ASoC: SOF: amd: Add helper callbacks for ACP's DMA configuration
ASoC: SOF: amd: Add Renoir ACP HW support
firmware: xilinx: export the feature check of zynqmp firmware
firmware: xilinx: add macros of node ids for error event
firmware: xilinx: add register notifier in zynqmp firmware
nitro_enclaves: Add KUnit tests for contiguous physical memory regions merging
nitro_enclaves: Add KUnit tests setup for the misc device functionality
nitro_enclaves: Sanity check physical memory regions during merging
nitro_enclaves: Merge contiguous physical memory regions
nitro_enclaves: Remove redundant 'flush_workqueue()' calls
perf: Drop guest callback (un)register stubs
KVM: arm64: Drop perf.c and fold its tiny bits of code into arm.c
KVM: arm64: Hide kvm_arm_pmu_available behind CONFIG_HW_PERF_EVENTS=y
KVM: arm64: Convert to the generic perf callbacks
KVM: x86: Move Intel Processor Trace interrupt handler to vmx.c
KVM: Move x86's perf guest info callbacks to generic KVM
KVM: x86: More precisely identify NMI from guest when handling PMI
KVM: x86: Drop current_vcpu for kvm_running_vcpu + kvm_arch_vcpu variable
perf/core: Use static_call to optimize perf_guest_info_callbacks
perf: Force architectures to opt-in to guest callbacks
perf: Add wrappers for invoking guest callbacks
perf/core: Rework guest callbacks to prepare for static_call support
perf: Drop dead and useless guest "support" from arm, csky, nds32 and riscv
perf: Stop pretending that perf can handle multiple guest callbacks
KVM: x86: Register Processor Trace interrupt hook iff PT enabled in guest
KVM: x86: Register perf callbacks after calling vendor's hardware_setup()
perf: Protect perf_guest_cbs with RCU
ALSA: hda: Do disconnect jacks at codec unbind
ASoC: stm32: sai: increase channels_max limit
ASoC: SOF: debug: Add support for IPC message injection
ASoC: SOF: intel: Use the generic helper to get the reply
ASoC: SOF: imx: Use the generic helper to get the reply
ASoC: SOF: utils: Add generic function to get the reply for a tx message
ASoC: cs42l42: Remove redundant pll_divout member
ASoC: cs42l42: Simplify reporting of jack unplug
ASoC: cs42l42: Remove redundant writes to RS_PLUG/RS_UNPLUG masks
ASoC: cs42l42: Remove redundant writes to DETECT_MODE
RDMA/bnxt_re: Scan the whole bitmap when checking if "disabling RCFW with pending cmd-bit"
RDMA/bnxt_re: Remove unneeded variable
RDMA/irdma: Use helper function to set GUIDs
coresight: Use devm_bitmap_zalloc when applicable
clocksource/drivers/exynos_mct: Refactor resources allocation
ASoC: SOF: i.MX: simplify Kconfig
ASoC: qcom: sdm845: only setup slim ports once
ALSA: memalloc: Unify x86 SG-buffer handling (take#3)
ALSA: hda: Fix potential deadlock at codec unbinding
ALSA: hda: Add missing rwsem around snd_ctl_remove() calls
ALSA: PCM: Add missing rwsem around snd_ctl_remove() calls
ALSA: jack: Add missing rwsem around snd_ctl_remove() calls
ALSA: usb-audio: Fix dB level of Bose Revolve+ SoundLink
ALSA: usb-audio: Add minimal-mute notion in dB mapping table
ALSA: usb-audio: Use int for dB map values
ASoC: wm8903: Convert txt bindings to yaml
ASoC: codecs: MBHC: Add support for special headset
ASoC: SOF: core: Unregister machine driver before IPC and debugfs
ASoC: adau1701: Replace legacy gpio interface for gpiod
firmware: cs_dsp: tidy includes in cs_dsp.c and cs_dsp.h
ASoC: cs42l42: Add control for audio slow-start switch
ASoC: Intel: add sof-nau8825 machine driver
ASoC: codecs: Axe some dead code in 'wcd_mbhc_adc_hs_rem_irq()'
ASoC: cs35l41: DSP Support
ASoC: dt-bindings: cs42l42: Convert binding to yaml
cxl/pmem: Fix module reload vs workqueue state
ACPI: NUMA: Add a node and memblk for each CFMWS not in SRAT
cxl/test: Mock acpi_table_parse_cedt()
cxl/acpi: Convert CFMWS parsing to ACPI sub-table helpers
ACPI: Add a context argument for table parsing handlers
ACPI: Teach ACPI table parsing about the CEDT header format
ACPI: Keep sub-table parsing infrastructure available for modules
tools/testing/cxl: add mock output for the GET_HEALTH_INFO command
cxl/memdev: Remove unused cxlmd field
cxl/core: Convert to EXPORT_SYMBOL_NS_GPL
cxl/memdev: Change cxl_mem to a more descriptive name
cxl/mbox: Remove bad comment
cxl/pmem: Fix reference counting for delayed work
dt-bindings: vendor-prefixes: add T-Head Semiconductor
dt-bindings: leds: Add bindings for MT6360 LED
ASoC: intel: sof_sdw: add link adr order check
ASoC: intel: sof_sdw: remove get_next_be_id
ASoC: intel: sof_sdw: remove sof_sdw_mic_codec_mockup_init
ASoC: intel: sof_sdw: remove SOF_RT715_DAI_ID_FIX quirk
ASoC: intel: sof_sdw: move DMIC link id overwrite to create_sdw_dailink
ASoC: intel: sof_sdw: Use a fixed DAI link id for AMP
ASoC: intel: sof_sdw: rename be_index/link_id to link_index
ASoC: Intel: sof_sdw: add SKU for Dell Latitude 9520
ASoC: Intel: sof_sdw: fix jack detection on HP Spectre x360 convertible
ASoC: intel: sof_sdw: return the original error number
ASoC: SOF: trace: send DMA_TRACE_FREE IPC during release
ASoC: SOF: IPC: update ipc_log_header()
ASoC: SOF: IPC: Add new IPC command to free trace DMA
ASoC: codecs: tfa989x: Add support for tfa9897 optional rcv-gpios
ASoC: dt-bindings: nxp, tfa989x: Add rcv-gpios property for tfa9897
clk: renesas: r9a07g044: Add OSTM clock and reset entries
clk: renesas: r9a07g044: Rename CLK_PLL2_DIV16 and CLK_PLL2_DIV20 macros
clk: renesas: r9a07g044: Add WDT clock and reset entries
clk: renesas: r9a07g044: Add clock and reset entry for SCI1
ALSA: hda: intel: More comprehensive PM runtime setup for controller driver
clk: renesas: rzg2l: Add missing kerneldoc for resets
gnss: drop stray semicolons
dt-bindings: timer: remove rockchip,rk3066-timer compatible string from rockchip,rk-timer.yaml
dt-bindings: timer: cadence_ttc: Add power-domains
Conflicts:
Documentation/devicetree/bindings
Documentation/devicetree/bindings/Makefile
Documentation/devicetree/bindings/arm/arm,cci-400.yaml
Documentation/devicetree/bindings/arm/cpus.yaml
Documentation/devicetree/bindings/arm/mediatek/mediatek,apmixedsys.txt
Documentation/devicetree/bindings/arm/mediatek/mediatek,ethsys.txt
Documentation/devicetree/bindings/arm/mediatek/mediatek,infracfg.txt
Documentation/devicetree/bindings/arm/mediatek/mediatek,sgmiisys.txt
Documentation/devicetree/bindings/arm/mediatek/mediatek,topckgen.txt
Documentation/devicetree/bindings/arm/pmu.yaml
Documentation/devicetree/bindings/arm/ux500.yaml
Documentation/devicetree/bindings/arm/xen.txt
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-ccu.yaml
Documentation/devicetree/bindings/clock/imx5-clock.yaml
Documentation/devicetree/bindings/clock/qcom,rpmhcc.yaml
Documentation/devicetree/bindings/clock/renesas,cpg-mssr.yaml
Documentation/devicetree/bindings/clock/samsung,exynos850-clock.yaml
Documentation/devicetree/bindings/display/msm/dpu-sdm845.yaml
Documentation/devicetree/bindings/display/panel/jdi,lt070me05000.yaml
Documentation/devicetree/bindings/display/panel/novatek,nt36672a.yaml
Documentation/devicetree/bindings/display/simple-framebuffer.yaml
Documentation/devicetree/bindings/display/st,stm32-dsi.yaml
Documentation/devicetree/bindings/dma/sifive,fu540-c000-pdma.yaml
Documentation/devicetree/bindings/eeprom/at24.yaml
Documentation/devicetree/bindings/gpio/toshiba,gpio-visconti.yaml
Documentation/devicetree/bindings/gpu/arm,mali-bifrost.yaml
Documentation/devicetree/bindings/i2c/aspeed,i2c.yaml
Documentation/devicetree/bindings/i2c/i2c-gate.yaml
Documentation/devicetree/bindings/i2c/i2c-imx-lpi2c.yaml
Documentation/devicetree/bindings/i2c/st,stm32-i2c.yaml
Documentation/devicetree/bindings/iio/adc/fsl,vf610-adc.yaml
Documentation/devicetree/bindings/iio/adc/x-powers,axp209-adc.yaml
Documentation/devicetree/bindings/iio/dac/adi,ad5755.yaml
Documentation/devicetree/bindings/iio/gyroscope/invensense,mpu3050.yaml
Documentation/devicetree/bindings/iio/imu/invensense,mpu6050.yaml
Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml
Documentation/devicetree/bindings/iio/light/liteon,ltr501.yaml
Documentation/devicetree/bindings/iio/magnetometer/yamaha,yas530.yaml
Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml
Documentation/devicetree/bindings/interconnect/qcom,osm-l3.yaml
Documentation/devicetree/bindings/interconnect/qcom,rpm.yaml
Documentation/devicetree/bindings/interconnect/qcom,rpmh.yaml
Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.yaml
Documentation/devicetree/bindings/iommu/arm,smmu.yaml
Documentation/devicetree/bindings/mailbox/apple,mailbox.yaml
Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml
Documentation/devicetree/bindings/memory-controllers/ti,gpmc.yaml
Documentation/devicetree/bindings/mfd/cirrus,madera.yaml
Documentation/devicetree/bindings/mux/gpio-mux.yaml
Documentation/devicetree/bindings/mux/mux-consumer.yaml
Documentation/devicetree/bindings/mux/mux-controller.yaml
Documentation/devicetree/bindings/net/actions,owl-emac.yaml
Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml
Documentation/devicetree/bindings/net/brcm,bcm6368-mdio-mux.yaml
Documentation/devicetree/bindings/net/brcm,unimac-mdio.yaml
Documentation/devicetree/bindings/net/dsa/nxp,sja1105.yaml
Documentation/devicetree/bindings/net/dsa/qca8k.yaml
Documentation/devicetree/bindings/net/ethernet-controller.yaml
Documentation/devicetree/bindings/net/fsl,fec.yaml
Documentation/devicetree/bindings/net/intel,dwmac-plat.yaml
Documentation/devicetree/bindings/net/intel,ixp4xx-ethernet.yaml
Documentation/devicetree/bindings/net/lantiq,etop-xway.yaml
Documentation/devicetree/bindings/net/lantiq,xrx200-net.yaml
Documentation/devicetree/bindings/net/litex,liteeth.yaml
Documentation/devicetree/bindings/net/mdio-mux.yaml
Documentation/devicetree/bindings/net/mdio.yaml
Documentation/devicetree/bindings/net/mediatek,star-emac.yaml
Documentation/devicetree/bindings/net/qca,ar71xx.yaml
Documentation/devicetree/bindings/net/snps,dwmac.yaml
Documentation/devicetree/bindings/net/socionext,uniphier-ave4.yaml
Documentation/devicetree/bindings/net/stm32-dwmac.yaml
Documentation/devicetree/bindings/net/ti,davinci-mdio.yaml
Documentation/devicetree/bindings/net/ti,dp83869.yaml
Documentation/devicetree/bindings/net/toshiba,visconti-dwmac.yaml
Documentation/devicetree/bindings/net/wireless/mediatek,mt76.yaml
Documentation/devicetree/bindings/nvmem/brcm,nvram.yaml
Documentation/devicetree/bindings/nvmem/mtk-efuse.txt
Documentation/devicetree/bindings/nvmem/rmem.yaml
Documentation/devicetree/bindings/nvmem/st,stm32-romem.yaml
Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
Documentation/devicetree/bindings/pci/cdns,cdns-pcie-ep.yaml
Documentation/devicetree/bindings/pci/cdns-pcie-ep.yaml
Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
Documentation/devicetree/bindings/pci/mediatek,mt7621-pcie.yaml
Documentation/devicetree/bindings/pci/mediatek-pcie-gen3.yaml
Documentation/devicetree/bindings/pci/microchip,pcie-host.yaml
Documentation/devicetree/bindings/pci/sifive,fu740-pcie.yaml
Documentation/devicetree/bindings/pci/snps,dw-pcie-ep.yaml
Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml
Documentation/devicetree/bindings/pci/socionext,uniphier-pcie-ep.yaml
Documentation/devicetree/bindings/pci/ti,am65-pci-ep.yaml
Documentation/devicetree/bindings/pci/ti,am65-pci-host.yaml
Documentation/devicetree/bindings/pci/ti,j721e-pci-host.yaml
Documentation/devicetree/bindings/pci/xilinx-versal-cpm.yaml
Documentation/devicetree/bindings/phy/mediatek,tphy.yaml
Documentation/devicetree/bindings/phy/phy-cadence-sierra.yaml
Documentation/devicetree/bindings/phy/phy-cadence-torrent.yaml
Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.yaml
Documentation/devicetree/bindings/phy/qcom,qmp-phy.yaml
Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml
Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
Documentation/devicetree/bindings/phy/socionext,uniphier-ahci-phy.yaml
Documentation/devicetree/bindings/phy/socionext,uniphier-pcie-phy.yaml
Documentation/devicetree/bindings/phy/socionext,uniphier-usb3hs-phy.yaml
Documentation/devicetree/bindings/phy/socionext,uniphier-usb3ss-phy.yaml
Documentation/devicetree/bindings/power/supply/maxim,max17040.yaml
Documentation/devicetree/bindings/serial/pl011.yaml
Documentation/devicetree/bindings/sound/amlogic,aiu.yaml
Documentation/devicetree/bindings/sound/amlogic,g12a-toacodec.yaml
Documentation/devicetree/bindings/sound/amlogic,t9015.yaml
Documentation/devicetree/bindings/sound/audio-graph-port.yaml
Documentation/devicetree/bindings/sound/linux,spdif-dit.yaml
Documentation/devicetree/bindings/sound/mt8195-afe-pcm.yaml
Documentation/devicetree/bindings/sound/mt8195-mt6359-rt1011-rt5682.yaml
Documentation/devicetree/bindings/sound/mt8195-mt6359-rt1019-rt5682.yaml
Documentation/devicetree/bindings/sound/nvidia,tegra-audio-graph-card.yaml
Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.yaml
Documentation/devicetree/bindings/sound/nxp,tfa989x.yaml
Documentation/devicetree/bindings/sound/qcom,sm8250.yaml
Documentation/devicetree/bindings/sound/realtek,rt5682s.yaml
Documentation/devicetree/bindings/sound/simple-audio-amplifier.yaml
Documentation/devicetree/bindings/spmi/spmi.yaml
Documentation/devicetree/bindings/thermal/thermal-zones.yaml
Documentation/devicetree/bindings/timer/cdns,ttc.yaml
Documentation/devicetree/bindings/timer/nxp,tpm-timer.yaml
Documentation/devicetree/bindings/timer/renesas,ostm.yaml
Documentation/devicetree/bindings/timer/rockchip,rk-timer.yaml
Documentation/devicetree/bindings/trivial-devices.yaml
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt
Documentation/devicetree/bindings/usb/intel,keembay-dwc3.yaml
Documentation/devicetree/bindings/usb/snps,dwc3.yaml
Documentation/devicetree/bindings/vendor-prefixes.yaml
Documentation/devicetree/bindings/watchdog/atmel,sama5d4-wdt.yaml
Documentation/devicetree/bindings/watchdog/ti,rti-wdt.yaml
drivers/clk/qcom/clk-alpha-pll.c
drivers/clk/qcom/clk-alpha-pll.h
Upstream-Build:ks_qcom-android-mainline-keystone-qcom-release@8305483 SKQ4.220315.002
Change-Id: I5bbd3cf1599c0d8421e506f42c52f3e2854d0ff4
Signed-off-by: jianzhou <quic_jianzhou@quicinc.com>
This commit is contained in:
commit
10083df451
|
|
@ -216,7 +216,6 @@ ForEachMacros:
|
|||
- 'for_each_migratetype_order'
|
||||
- 'for_each_msi_entry'
|
||||
- 'for_each_msi_entry_safe'
|
||||
- 'for_each_msi_vector'
|
||||
- 'for_each_net'
|
||||
- 'for_each_net_continue_reverse'
|
||||
- 'for_each_netdev'
|
||||
|
|
|
|||
|
|
@ -17,6 +17,6 @@ package(
|
|||
],
|
||||
)
|
||||
|
||||
load("//build/kleaf:common_kernels.bzl", "define_common_kernels")
|
||||
load("//build/kernel/kleaf:common_kernels.bzl", "define_common_kernels")
|
||||
|
||||
define_common_kernels()
|
||||
|
|
|
|||
|
|
@ -1,22 +0,0 @@
|
|||
What: /sys/class/dax/
|
||||
Date: May, 2016
|
||||
KernelVersion: v4.7
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description: Device DAX is the device-centric analogue of Filesystem
|
||||
DAX (CONFIG_FS_DAX). It allows memory ranges to be
|
||||
allocated and mapped without need of an intervening file
|
||||
system. Device DAX is strict, precise and predictable.
|
||||
Specifically this interface:
|
||||
|
||||
1. Guarantees fault granularity with respect to a given
|
||||
page size (pte, pmd, or pud) set at configuration time.
|
||||
|
||||
2. Enforces deterministic behavior by being strict about
|
||||
what fault scenarios are supported.
|
||||
|
||||
The /sys/class/dax/ interface enumerates all the
|
||||
device-dax instances in the system. The ABI is
|
||||
deprecated and will be removed after 2020. It is
|
||||
replaced with the DAX bus interface /sys/bus/dax/ where
|
||||
device-dax instances can be found under
|
||||
/sys/bus/dax/devices/
|
||||
|
|
@ -21,11 +21,11 @@ Description: Allow the root user to disable/enable in runtime the clock
|
|||
a different engine to disable/enable its clock gating feature.
|
||||
The bitmask is composed of 20 bits:
|
||||
|
||||
======= ============
|
||||
======= ============
|
||||
0 - 7 DMA channels
|
||||
8 - 11 MME engines
|
||||
12 - 19 TPC engines
|
||||
======= ============
|
||||
======= ============
|
||||
|
||||
The bit's location of a specific engine can be determined
|
||||
using (1 << GAUDI_ENGINE_ID_*). GAUDI_ENGINE_ID_* values
|
||||
|
|
@ -155,6 +155,13 @@ Description: Triggers an I2C transaction that is generated by the device's
|
|||
CPU. Writing to this file generates a write transaction while
|
||||
reading from the file generates a read transaction
|
||||
|
||||
What: /sys/kernel/debug/habanalabs/hl<n>/i2c_len
|
||||
Date: Dec 2021
|
||||
KernelVersion: 5.17
|
||||
Contact: obitton@habana.ai
|
||||
Description: Sets I2C length in bytes for I2C transaction that is generated by
|
||||
the device's CPU
|
||||
|
||||
What: /sys/kernel/debug/habanalabs/hl<n>/i2c_reg
|
||||
Date: Jan 2019
|
||||
KernelVersion: 5.1
|
||||
|
|
@ -226,12 +233,6 @@ Description: Gets the state dump occurring on a CS timeout or failure.
|
|||
Writing an integer X discards X state dumps, so that the
|
||||
next read would return X+1-st newest state dump.
|
||||
|
||||
What: /sys/kernel/debug/habanalabs/hl<n>/timeout_locked
|
||||
Date: Sep 2021
|
||||
KernelVersion: 5.16
|
||||
Contact: obitton@habana.ai
|
||||
Description: Sets the command submission timeout value in seconds.
|
||||
|
||||
What: /sys/kernel/debug/habanalabs/hl<n>/stop_on_err
|
||||
Date: Mar 2020
|
||||
KernelVersion: 5.6
|
||||
|
|
@ -239,6 +240,12 @@ Contact: ogabbay@kernel.org
|
|||
Description: Sets the stop-on_error option for the device engines. Value of
|
||||
"0" is for disable, otherwise enable.
|
||||
|
||||
What: /sys/kernel/debug/habanalabs/hl<n>/timeout_locked
|
||||
Date: Sep 2021
|
||||
KernelVersion: 5.16
|
||||
Contact: obitton@habana.ai
|
||||
Description: Sets the command submission timeout value in seconds.
|
||||
|
||||
What: /sys/kernel/debug/habanalabs/hl<n>/userptr
|
||||
Date: Jan 2019
|
||||
KernelVersion: 5.1
|
||||
|
|
|
|||
16
Documentation/ABI/testing/sysfs-bus-iio-filter-admv8818
Normal file
16
Documentation/ABI/testing/sysfs-bus-iio-filter-admv8818
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
What: /sys/bus/iio/devices/iio:deviceX/filter_mode_available
|
||||
KernelVersion:
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Reading this returns the valid values that can be written to the
|
||||
on_altvoltage0_mode attribute:
|
||||
|
||||
- auto -> Adjust bandpass filter to track changes in input clock rate.
|
||||
- manual -> disable/unregister the clock rate notifier / input clock tracking.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/filter_mode
|
||||
KernelVersion:
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
This attribute configures the filter mode.
|
||||
Reading returns the actual mode.
|
||||
38
Documentation/ABI/testing/sysfs-bus-iio-frequency-admv1013
Normal file
38
Documentation/ABI/testing/sysfs-bus-iio-frequency-admv1013
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltage0-1_i_calibphase
|
||||
KernelVersion:
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Read/write unscaled value for the Local Oscillatior path quadrature I phase shift.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltage0-1_q_calibphase
|
||||
KernelVersion:
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Read/write unscaled value for the Local Oscillatior path quadrature Q phase shift.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltage0_i_calibbias
|
||||
KernelVersion:
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Read/write value for the Local Oscillatior Feedthrough Offset Calibration I Positive
|
||||
side.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltage0_q_calibbias
|
||||
KernelVersion:
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Read/write value for the Local Oscillatior Feedthrough Offset Calibration Q Positive side.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltage1_i_calibbias
|
||||
KernelVersion:
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Read/write raw value for the Local Oscillatior Feedthrough Offset Calibration I Negative
|
||||
side.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltage1_q_calibbias
|
||||
KernelVersion:
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Read/write raw value for the Local Oscillatior Feedthrough Offset Calibration Q Negative
|
||||
side.
|
||||
|
|
@ -612,8 +612,8 @@
|
|||
clocksource.max_cswd_read_retries= [KNL]
|
||||
Number of clocksource_watchdog() retries due to
|
||||
external delays before the clock will be marked
|
||||
unstable. Defaults to three retries, that is,
|
||||
four attempts to read the clock under test.
|
||||
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
|
||||
|
|
@ -3397,7 +3397,7 @@
|
|||
Disable SMAP (Supervisor Mode Access Prevention)
|
||||
even if it is supported by processor.
|
||||
|
||||
nosmep [X86,PPC]
|
||||
nosmep [X86,PPC64s]
|
||||
Disable SMEP (Supervisor Mode Execution Prevention)
|
||||
even if it is supported by processor.
|
||||
|
||||
|
|
@ -4170,6 +4170,14 @@
|
|||
Override pmtimer IOPort with a hex value.
|
||||
e.g. pmtmr=0x508
|
||||
|
||||
pmu_override= [PPC] Override the PMU.
|
||||
This option takes over the PMU facility, so it is no
|
||||
longer usable by perf. Setting this option starts the
|
||||
PMU counters by setting MMCR0 to 0 (the FC bit is
|
||||
cleared). If a number is given, then MMCR1 is set to
|
||||
that number, otherwise (e.g., 'pmu_override=on'), MMCR1
|
||||
remains 0.
|
||||
|
||||
pm_debug_messages [SUSPEND,KNL]
|
||||
Enable suspend/resume debug messages during boot up.
|
||||
|
||||
|
|
@ -6498,6 +6506,12 @@
|
|||
controller on both pseries and powernv
|
||||
platforms. Only useful on POWER9 and above.
|
||||
|
||||
xive.store-eoi=off [PPC]
|
||||
By default on POWER10 and above, the kernel will use
|
||||
stores for EOI handling when the XIVE interrupt mode
|
||||
is active. This option allows the XIVE driver to use
|
||||
loads instead, as on POWER9.
|
||||
|
||||
xhci-hcd.quirks [USB,KNL]
|
||||
A hex value specifying bitmask with supplemental xhci
|
||||
host controller quirks. Meaning of each bit can be
|
||||
|
|
|
|||
|
|
@ -6,8 +6,7 @@ API to implement a new FPGA bridge
|
|||
|
||||
* struct fpga_bridge - The FPGA Bridge structure
|
||||
* struct fpga_bridge_ops - Low level Bridge driver ops
|
||||
* devm_fpga_bridge_create() - Allocate and init a bridge struct
|
||||
* fpga_bridge_register() - Register a bridge
|
||||
* fpga_bridge_register() - Create and register a bridge
|
||||
* fpga_bridge_unregister() - Unregister a bridge
|
||||
|
||||
.. kernel-doc:: include/linux/fpga/fpga-bridge.h
|
||||
|
|
@ -16,9 +15,6 @@ API to implement a new FPGA bridge
|
|||
.. kernel-doc:: include/linux/fpga/fpga-bridge.h
|
||||
:functions: fpga_bridge_ops
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-bridge.c
|
||||
:functions: devm_fpga_bridge_create
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-bridge.c
|
||||
:functions: fpga_bridge_register
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ How to support a new FPGA device
|
|||
--------------------------------
|
||||
|
||||
To add another FPGA manager, write a driver that implements a set of ops. The
|
||||
probe function calls fpga_mgr_register(), such as::
|
||||
probe function calls fpga_mgr_register() or fpga_mgr_register_full(), such as::
|
||||
|
||||
static const struct fpga_manager_ops socfpga_fpga_ops = {
|
||||
.write_init = socfpga_fpga_ops_configure_init,
|
||||
|
|
@ -49,14 +49,14 @@ probe function calls fpga_mgr_register(), such as::
|
|||
* them in priv
|
||||
*/
|
||||
|
||||
mgr = devm_fpga_mgr_create(dev, "Altera SOCFPGA FPGA Manager",
|
||||
&socfpga_fpga_ops, priv);
|
||||
if (!mgr)
|
||||
return -ENOMEM;
|
||||
mgr = fpga_mgr_register(dev, "Altera SOCFPGA FPGA Manager",
|
||||
&socfpga_fpga_ops, priv);
|
||||
if (IS_ERR(mgr))
|
||||
return PTR_ERR(mgr);
|
||||
|
||||
platform_set_drvdata(pdev, mgr);
|
||||
|
||||
return fpga_mgr_register(mgr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int socfpga_fpga_remove(struct platform_device *pdev)
|
||||
|
|
@ -68,6 +68,11 @@ probe function calls fpga_mgr_register(), such as::
|
|||
return 0;
|
||||
}
|
||||
|
||||
Alternatively, the probe function could call one of the resource managed
|
||||
register functions, devm_fpga_mgr_register() or devm_fpga_mgr_register_full().
|
||||
When these functions are used, the parameter syntax is the same, but the call
|
||||
to fpga_mgr_unregister() should be removed. In the above example, the
|
||||
socfpga_fpga_remove() function would not be required.
|
||||
|
||||
The ops will implement whatever device specific register writes are needed to
|
||||
do the programming sequence for this particular FPGA. These ops return 0 for
|
||||
|
|
@ -104,8 +109,14 @@ API for implementing a new FPGA Manager driver
|
|||
* ``fpga_mgr_states`` - Values for :c:expr:`fpga_manager->state`.
|
||||
* struct fpga_manager - the FPGA manager struct
|
||||
* struct fpga_manager_ops - Low level FPGA manager driver ops
|
||||
* devm_fpga_mgr_create() - Allocate and init a manager struct
|
||||
* fpga_mgr_register() - Register an FPGA manager
|
||||
* struct fpga_manager_info - Parameter structure for fpga_mgr_register_full()
|
||||
* fpga_mgr_register_full() - Create and register an FPGA manager using the
|
||||
fpga_mgr_info structure to provide the full flexibility of options
|
||||
* fpga_mgr_register() - Create and register an FPGA manager using standard
|
||||
arguments
|
||||
* devm_fpga_mgr_register_full() - Resource managed version of
|
||||
fpga_mgr_register_full()
|
||||
* devm_fpga_mgr_register() - Resource managed version of fpga_mgr_register()
|
||||
* fpga_mgr_unregister() - Unregister an FPGA manager
|
||||
|
||||
.. kernel-doc:: include/linux/fpga/fpga-mgr.h
|
||||
|
|
@ -117,11 +128,20 @@ API for implementing a new FPGA Manager driver
|
|||
.. kernel-doc:: include/linux/fpga/fpga-mgr.h
|
||||
:functions: fpga_manager_ops
|
||||
|
||||
.. kernel-doc:: include/linux/fpga/fpga-mgr.h
|
||||
:functions: fpga_manager_info
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||
:functions: devm_fpga_mgr_create
|
||||
:functions: fpga_mgr_register_full
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||
:functions: fpga_mgr_register
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||
:functions: devm_fpga_mgr_register_full
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||
:functions: devm_fpga_mgr_register
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||
:functions: fpga_mgr_unregister
|
||||
|
|
|
|||
|
|
@ -46,8 +46,11 @@ API to add a new FPGA region
|
|||
----------------------------
|
||||
|
||||
* struct fpga_region - The FPGA region struct
|
||||
* devm_fpga_region_create() - Allocate and init a region struct
|
||||
* fpga_region_register() - Register an FPGA region
|
||||
* struct fpga_region_info - Parameter structure for fpga_region_register_full()
|
||||
* fpga_region_register_full() - Create and register an FPGA region using the
|
||||
fpga_region_info structure to provide the full flexibility of options
|
||||
* fpga_region_register() - Create and register an FPGA region using standard
|
||||
arguments
|
||||
* fpga_region_unregister() - Unregister an FPGA region
|
||||
|
||||
The FPGA region's probe function will need to get a reference to the FPGA
|
||||
|
|
@ -75,8 +78,11 @@ following APIs to handle building or tearing down that list.
|
|||
.. kernel-doc:: include/linux/fpga/fpga-region.h
|
||||
:functions: fpga_region
|
||||
|
||||
.. kernel-doc:: include/linux/fpga/fpga-region.h
|
||||
:functions: fpga_region_info
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-region.c
|
||||
:functions: devm_fpga_region_create
|
||||
:functions: fpga_region_register_full
|
||||
|
||||
.. kernel-doc:: drivers/fpga/fpga-region.c
|
||||
:functions: fpga_region_register
|
||||
|
|
|
|||
|
|
@ -262,11 +262,11 @@ order to communicate with the device: to read and write various Signals
|
|||
and Counts, and to set and get the "action mode" and "function mode" for
|
||||
various Synapses and Counts respectively.
|
||||
|
||||
A defined counter_device structure may be registered to the system by
|
||||
passing it to the counter_register function, and unregistered by passing
|
||||
it to the counter_unregister function. Similarly, the
|
||||
devm_counter_register function may be used if device memory-managed
|
||||
registration is desired.
|
||||
A counter_device structure is allocated using counter_alloc() and then
|
||||
registered to the system by passing it to the counter_add() function, and
|
||||
unregistered by passing it to the counter_unregister function. There are
|
||||
device managed variants of these functions: devm_counter_alloc() and
|
||||
devm_counter_add().
|
||||
|
||||
The struct counter_comp structure is used to define counter extensions
|
||||
for Signals, Synapses, and Counts.
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ PCI Support Library
|
|||
.. kernel-doc:: drivers/pci/search.c
|
||||
:export:
|
||||
|
||||
.. kernel-doc:: drivers/pci/msi.c
|
||||
.. kernel-doc:: drivers/pci/msi/msi.c
|
||||
:export:
|
||||
|
||||
.. kernel-doc:: drivers/pci/bus.c
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,8 +1,8 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
===============================================
|
||||
CacheFiles: CACHE ON ALREADY MOUNTED FILESYSTEM
|
||||
===============================================
|
||||
===================================
|
||||
Cache on Already Mounted Filesystem
|
||||
===================================
|
||||
|
||||
.. Contents:
|
||||
|
||||
|
|
|
|||
|
|
@ -10,25 +10,25 @@ Overview
|
|||
This facility is a general purpose cache for network filesystems, though it
|
||||
could be used for caching other things such as ISO9660 filesystems too.
|
||||
|
||||
FS-Cache mediates between cache backends (such as CacheFS) and network
|
||||
FS-Cache mediates between cache backends (such as CacheFiles) and network
|
||||
filesystems::
|
||||
|
||||
+---------+
|
||||
| | +--------------+
|
||||
| NFS |--+ | |
|
||||
| | | +-->| CacheFS |
|
||||
+---------+ | +----------+ | | /dev/hda5 |
|
||||
| | | | +--------------+
|
||||
+---------+ +-->| | |
|
||||
| | | |--+
|
||||
| AFS |----->| FS-Cache |
|
||||
| | | |--+
|
||||
+---------+ +-->| | |
|
||||
| | | | +--------------+
|
||||
+---------+ | +----------+ | | |
|
||||
| | | +-->| CacheFiles |
|
||||
| ISOFS |--+ | /var/cache |
|
||||
| | +--------------+
|
||||
| | +--------------+
|
||||
| NFS |--+ | |
|
||||
| | | +-->| CacheFS |
|
||||
+---------+ | +----------+ | | /dev/hda5 |
|
||||
| | | | +--------------+
|
||||
+---------+ +-------------->| | |
|
||||
| | +-------+ | |--+
|
||||
| AFS |----->| | | FS-Cache |
|
||||
| | | netfs |-->| |--+
|
||||
+---------+ +-->| lib | | | |
|
||||
| | | | | | +--------------+
|
||||
+---------+ | +-------+ +----------+ | | |
|
||||
| | | +-->| CacheFiles |
|
||||
| 9P |--+ | /var/cache |
|
||||
| | +--------------+
|
||||
+---------+
|
||||
|
||||
Or to look at it another way, FS-Cache is a module that provides a caching
|
||||
|
|
@ -84,101 +84,62 @@ then serving the pages out of that cache rather than the netfs inode because:
|
|||
one-off access of a small portion of it (such as might be done with the
|
||||
"file" program).
|
||||
|
||||
It instead serves the cache out in PAGE_SIZE chunks as and when requested by
|
||||
the netfs('s) using it.
|
||||
It instead serves the cache out in chunks as and when requested by the netfs
|
||||
using it.
|
||||
|
||||
|
||||
FS-Cache provides the following facilities:
|
||||
|
||||
(1) More than one cache can be used at once. Caches can be selected
|
||||
* More than one cache can be used at once. Caches can be selected
|
||||
explicitly by use of tags.
|
||||
|
||||
(2) Caches can be added / removed at any time.
|
||||
* Caches can be added / removed at any time, even whilst being accessed.
|
||||
|
||||
(3) The netfs is provided with an interface that allows either party to
|
||||
* The netfs is provided with an interface that allows either party to
|
||||
withdraw caching facilities from a file (required for (2)).
|
||||
|
||||
(4) The interface to the netfs returns as few errors as possible, preferring
|
||||
* The interface to the netfs returns as few errors as possible, preferring
|
||||
rather to let the netfs remain oblivious.
|
||||
|
||||
(5) Cookies are used to represent indices, files and other objects to the
|
||||
netfs. The simplest cookie is just a NULL pointer - indicating nothing
|
||||
cached there.
|
||||
* There are three types of cookie: cache, volume and data file cookies.
|
||||
Cache cookies represent the cache as a whole and are not normally visible
|
||||
to the netfs; the netfs gets a volume cookie to represent a collection of
|
||||
files (typically something that a netfs would get for a superblock); and
|
||||
data file cookies are used to cache data (something that would be got for
|
||||
an inode).
|
||||
|
||||
(6) The netfs is allowed to propose - dynamically - any index hierarchy it
|
||||
desires, though it must be aware that the index search function is
|
||||
recursive, stack space is limited, and indices can only be children of
|
||||
indices.
|
||||
* Volumes are matched using a key. This is a printable string that is used
|
||||
to encode all the information that might be needed to distinguish one
|
||||
superblock, say, from another. This would be a compound of things like
|
||||
cell name or server address, volume name or share path. It must be a
|
||||
valid pathname.
|
||||
|
||||
(7) Data I/O is done direct to and from the netfs's pages. The netfs
|
||||
indicates that page A is at index B of the data-file represented by cookie
|
||||
C, and that it should be read or written. The cache backend may or may
|
||||
not start I/O on that page, but if it does, a netfs callback will be
|
||||
invoked to indicate completion. The I/O may be either synchronous or
|
||||
asynchronous.
|
||||
* Cookies are matched using a key. This is a binary blob and is used to
|
||||
represent the object within a volume (so the volume key need not form
|
||||
part of the blob). This might include things like an inode number and
|
||||
uniquifier or a file handle.
|
||||
|
||||
(8) Cookies can be "retired" upon release. At this point FS-Cache will mark
|
||||
them as obsolete and the index hierarchy rooted at that point will get
|
||||
recycled.
|
||||
* Cookie resources are set up and pinned by marking the cookie in-use.
|
||||
This prevents the backing resources from being culled. Timed garbage
|
||||
collection is employed to eliminate cookies that haven't been used for a
|
||||
short while, thereby reducing resource overload. This is intended to be
|
||||
used when a file is opened or closed.
|
||||
|
||||
(9) The netfs provides a "match" function for index searches. In addition to
|
||||
saying whether a match was made or not, this can also specify that an
|
||||
entry should be updated or deleted.
|
||||
A cookie can be marked in-use multiple times simultaneously; each mark
|
||||
must be unused.
|
||||
|
||||
(10) As much as possible is done asynchronously.
|
||||
* Begin/end access functions are provided to delay cache withdrawal for the
|
||||
duration of an operation and prevent structs from being freed whilst
|
||||
we're looking at them.
|
||||
|
||||
* Data I/O is done by asynchronous DIO to/from a buffer described by the
|
||||
netfs using an iov_iter.
|
||||
|
||||
FS-Cache maintains a virtual indexing tree in which all indices, files, objects
|
||||
and pages are kept. Bits of this tree may actually reside in one or more
|
||||
caches::
|
||||
* An invalidation facility is available to discard data from the cache and
|
||||
to deal with I/O that's in progress that is accessing old data.
|
||||
|
||||
FSDEF
|
||||
|
|
||||
+------------------------------------+
|
||||
| |
|
||||
NFS AFS
|
||||
| |
|
||||
+--------------------------+ +-----------+
|
||||
| | | |
|
||||
homedir mirror afs.org redhat.com
|
||||
| | |
|
||||
+------------+ +---------------+ +----------+
|
||||
| | | | | |
|
||||
00001 00002 00007 00125 vol00001 vol00002
|
||||
| | | | |
|
||||
+---+---+ +-----+ +---+ +------+------+ +-----+----+
|
||||
| | | | | | | | | | | | |
|
||||
PG0 PG1 PG2 PG0 XATTR PG0 PG1 DIRENT DIRENT DIRENT R/W R/O Bak
|
||||
| |
|
||||
PG0 +-------+
|
||||
| |
|
||||
00001 00003
|
||||
|
|
||||
+---+---+
|
||||
| | |
|
||||
PG0 PG1 PG2
|
||||
|
||||
In the example above, you can see two netfs's being backed: NFS and AFS. These
|
||||
have different index hierarchies:
|
||||
|
||||
* The NFS primary index contains per-server indices. Each server index is
|
||||
indexed by NFS file handles to get data file objects. Each data file
|
||||
objects can have an array of pages, but may also have further child
|
||||
objects, such as extended attributes and directory entries. Extended
|
||||
attribute objects themselves have page-array contents.
|
||||
|
||||
* The AFS primary index contains per-cell indices. Each cell index contains
|
||||
per-logical-volume indices. Each of volume index contains up to three
|
||||
indices for the read-write, read-only and backup mirrors of those volumes.
|
||||
Each of these contains vnode data file objects, each of which contains an
|
||||
array of pages.
|
||||
|
||||
The very top index is the FS-Cache master index in which individual netfs's
|
||||
have entries.
|
||||
|
||||
Any index object may reside in more than one cache, provided it only has index
|
||||
children. Any index with non-index object children will be assumed to only
|
||||
reside in one cache.
|
||||
* Cookies can be "retired" upon release, thereby causing the object to be
|
||||
removed from the cache.
|
||||
|
||||
|
||||
The netfs API to FS-Cache can be found in:
|
||||
|
|
@ -189,11 +150,6 @@ The cache backend API to FS-Cache can be found in:
|
|||
|
||||
Documentation/filesystems/caching/backend-api.rst
|
||||
|
||||
A description of the internal representations and object state machine can be
|
||||
found in:
|
||||
|
||||
Documentation/filesystems/caching/object.rst
|
||||
|
||||
|
||||
Statistical Information
|
||||
=======================
|
||||
|
|
@ -201,333 +157,162 @@ Statistical Information
|
|||
If FS-Cache is compiled with the following options enabled::
|
||||
|
||||
CONFIG_FSCACHE_STATS=y
|
||||
CONFIG_FSCACHE_HISTOGRAM=y
|
||||
|
||||
then it will gather certain statistics and display them through a number of
|
||||
proc files.
|
||||
then it will gather certain statistics and display them through:
|
||||
|
||||
/proc/fs/fscache/stats
|
||||
----------------------
|
||||
/proc/fs/fscache/stats
|
||||
|
||||
This shows counts of a number of events that can happen in FS-Cache:
|
||||
This shows counts of a number of events that can happen in FS-Cache:
|
||||
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|CLASS |EVENT |MEANING |
|
||||
+==============+=======+=======================================================+
|
||||
|Cookies |idx=N |Number of index cookies allocated |
|
||||
|Cookies |n=N |Number of data storage cookies allocated |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |dat=N |Number of data storage cookies allocated |
|
||||
| |v=N |Number of volume index cookies allocated |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |spc=N |Number of special cookies allocated |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|Objects |alc=N |Number of objects allocated |
|
||||
| |vcol=N |Number of volume index key collisions |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |nal=N |Number of object allocation failures |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |avl=N |Number of objects that reached the available state |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |ded=N |Number of objects that reached the dead state |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|ChkAux |non=N |Number of objects that didn't have a coherency check |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |ok=N |Number of objects that passed a coherency check |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |upd=N |Number of objects that needed a coherency data update |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |obs=N |Number of objects that were declared obsolete |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|Pages |mrk=N |Number of pages marked as being cached |
|
||||
| |unc=N |Number of uncache page requests seen |
|
||||
| |voom=N |Number of OOM events when allocating volume cookies |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|Acquire |n=N |Number of acquire cookie requests seen |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |nul=N |Number of acq reqs given a NULL parent |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |noc=N |Number of acq reqs rejected due to no cache available |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |ok=N |Number of acq reqs succeeded |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |nbf=N |Number of acq reqs rejected due to error |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |oom=N |Number of acq reqs failed on ENOMEM |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|Lookups |n=N |Number of lookup calls made on cache backends |
|
||||
|LRU |n=N |Number of cookies currently on the LRU |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |neg=N |Number of negative lookups made |
|
||||
| |exp=N |Number of cookies expired off of the LRU |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |pos=N |Number of positive lookups made |
|
||||
| |rmv=N |Number of cookies removed from the LRU |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |crt=N |Number of objects created by lookup |
|
||||
| |drp=N |Number of LRU'd cookies relinquished/withdrawn |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |tmo=N |Number of lookups timed out and requeued |
|
||||
| |at=N |Time till next LRU cull (jiffies) |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|Invals |n=N |Number of invalidations |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|Updates |n=N |Number of update cookie requests seen |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |nul=N |Number of upd reqs given a NULL parent |
|
||||
| |rsz=N |Number of resize requests |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |run=N |Number of upd reqs granted CPU time |
|
||||
| |rsn=N |Number of skipped resize requests |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|Relinqs |n=N |Number of relinquish cookie requests seen |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |nul=N |Number of rlq reqs given a NULL parent |
|
||||
| |rtr=N |Number of rlq reqs with retire=true |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |wcr=N |Number of rlq reqs waited on completion of creation |
|
||||
| |drop=N |Number of cookies no longer blocking re-acquisition |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|AttrChg |n=N |Number of attribute changed requests seen |
|
||||
|NoSpace |nwr=N |Number of write requests refused due to lack of space |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |ok=N |Number of attr changed requests queued |
|
||||
| |ncr=N |Number of create requests refused due to lack of space |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |nbf=N |Number of attr changed rejected -ENOBUFS |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |oom=N |Number of attr changed failed -ENOMEM |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |run=N |Number of attr changed ops given CPU time |
|
||||
| |cull=N |Number of objects culled to make space |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|Allocs |n=N |Number of allocation requests seen |
|
||||
|IO |rd=N |Number of read operations in the cache |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |ok=N |Number of successful alloc reqs |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |wt=N |Number of alloc reqs that waited on lookup completion |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |nbf=N |Number of alloc reqs rejected -ENOBUFS |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |int=N |Number of alloc reqs aborted -ERESTARTSYS |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |ops=N |Number of alloc reqs submitted |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |owt=N |Number of alloc reqs waited for CPU time |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |abt=N |Number of alloc reqs aborted due to object death |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|Retrvls |n=N |Number of retrieval (read) requests seen |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |ok=N |Number of successful retr reqs |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |wt=N |Number of retr reqs that waited on lookup completion |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |nod=N |Number of retr reqs returned -ENODATA |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |nbf=N |Number of retr reqs rejected -ENOBUFS |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |int=N |Number of retr reqs aborted -ERESTARTSYS |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |oom=N |Number of retr reqs failed -ENOMEM |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |ops=N |Number of retr reqs submitted |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |owt=N |Number of retr reqs waited for CPU time |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |abt=N |Number of retr reqs aborted due to object death |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|Stores |n=N |Number of storage (write) requests seen |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |ok=N |Number of successful store reqs |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |agn=N |Number of store reqs on a page already pending storage |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |nbf=N |Number of store reqs rejected -ENOBUFS |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |oom=N |Number of store reqs failed -ENOMEM |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |ops=N |Number of store reqs submitted |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |run=N |Number of store reqs granted CPU time |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |pgs=N |Number of pages given store req processing time |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |rxd=N |Number of store reqs deleted from tracking tree |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |olm=N |Number of store reqs over store limit |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|VmScan |nos=N |Number of release reqs against pages with no |
|
||||
| | |pending store |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |gon=N |Number of release reqs against pages stored by |
|
||||
| | |time lock granted |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |bsy=N |Number of release reqs ignored due to in-progress store|
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |can=N |Number of page stores cancelled due to release req |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|Ops |pend=N |Number of times async ops added to pending queues |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |run=N |Number of times async ops given CPU time |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |enq=N |Number of times async ops queued for processing |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |can=N |Number of async ops cancelled |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |rej=N |Number of async ops rejected due to object |
|
||||
| | |lookup/create failure |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |ini=N |Number of async ops initialised |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |dfr=N |Number of async ops queued for deferred release |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |rel=N |Number of async ops released |
|
||||
| | |(should equal ini=N when idle) |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |gc=N |Number of deferred-release async ops garbage collected |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|CacheOp |alo=N |Number of in-progress alloc_object() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |luo=N |Number of in-progress lookup_object() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |luc=N |Number of in-progress lookup_complete() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |gro=N |Number of in-progress grab_object() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |upo=N |Number of in-progress update_object() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |dro=N |Number of in-progress drop_object() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |pto=N |Number of in-progress put_object() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |syn=N |Number of in-progress sync_cache() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |atc=N |Number of in-progress attr_changed() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |rap=N |Number of in-progress read_or_alloc_page() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |ras=N |Number of in-progress read_or_alloc_pages() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |alp=N |Number of in-progress allocate_page() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |als=N |Number of in-progress allocate_pages() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |wrp=N |Number of in-progress write_page() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |ucp=N |Number of in-progress uncache_page() cache ops |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |dsp=N |Number of in-progress dissociate_pages() cache ops |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|CacheEv |nsp=N |Number of object lookups/creations rejected due to |
|
||||
| | |lack of space |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |stl=N |Number of stale objects deleted |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |rtr=N |Number of objects retired when relinquished |
|
||||
+ +-------+-------------------------------------------------------+
|
||||
| |cul=N |Number of objects culled |
|
||||
| |wr=N |Number of write operations in the cache |
|
||||
+--------------+-------+-------------------------------------------------------+
|
||||
|
||||
Netfslib will also add some stats counters of its own.
|
||||
|
||||
|
||||
/proc/fs/fscache/histogram
|
||||
--------------------------
|
||||
Cache List
|
||||
==========
|
||||
|
||||
::
|
||||
FS-Cache provides a list of cache cookies:
|
||||
|
||||
cat /proc/fs/fscache/histogram
|
||||
JIFS SECS OBJ INST OP RUNS OBJ RUNS RETRV DLY RETRIEVLS
|
||||
===== ===== ========= ========= ========= ========= =========
|
||||
|
||||
This shows the breakdown of the number of times each amount of time
|
||||
between 0 jiffies and HZ-1 jiffies a variety of tasks took to run. The
|
||||
columns are as follows:
|
||||
|
||||
========= =======================================================
|
||||
COLUMN TIME MEASUREMENT
|
||||
========= =======================================================
|
||||
OBJ INST Length of time to instantiate an object
|
||||
OP RUNS Length of time a call to process an operation took
|
||||
OBJ RUNS Length of time a call to process an object event took
|
||||
RETRV DLY Time between an requesting a read and lookup completing
|
||||
RETRIEVLS Time between beginning and end of a retrieval
|
||||
========= =======================================================
|
||||
|
||||
Each row shows the number of events that took a particular range of times.
|
||||
Each step is 1 jiffy in size. The JIFS column indicates the particular
|
||||
jiffy range covered, and the SECS field the equivalent number of seconds.
|
||||
|
||||
|
||||
|
||||
Object List
|
||||
===========
|
||||
|
||||
If CONFIG_FSCACHE_OBJECT_LIST is enabled, the FS-Cache facility will maintain a
|
||||
list of all the objects currently allocated and allow them to be viewed
|
||||
through::
|
||||
|
||||
/proc/fs/fscache/objects
|
||||
/proc/fs/fscache/cookies
|
||||
|
||||
This will look something like::
|
||||
|
||||
[root@andromeda ~]# head /proc/fs/fscache/objects
|
||||
OBJECT PARENT STAT CHLDN OPS OOP IPR EX READS EM EV F S | NETFS_COOKIE_DEF TY FL NETFS_DATA OBJECT_KEY, AUX_DATA
|
||||
======== ======== ==== ===== === === === == ===== == == = = | ================ == == ================ ================
|
||||
17e4b 2 ACTV 0 0 0 0 0 0 7b 4 0 0 | NFS.fh DT 0 ffff88001dd82820 010006017edcf8bbc93b43298fdfbe71e50b57b13a172c0117f38472, e567634700000000000000000000000063f2404a000000000000000000000000c9030000000000000000000063f2404a
|
||||
1693a 2 ACTV 0 0 0 0 0 0 7b 4 0 0 | NFS.fh DT 0 ffff88002db23380 010006017edcf8bbc93b43298fdfbe71e50b57b1e0162c01a2df0ea6, 420ebc4a000000000000000000000000420ebc4a0000000000000000000000000e1801000000000000000000420ebc4a
|
||||
# cat /proc/fs/fscache/caches
|
||||
CACHE REF VOLS OBJS ACCES S NAME
|
||||
======== ===== ===== ===== ===== = ===============
|
||||
00000001 2 1 2123 1 A default
|
||||
|
||||
where the first set of columns before the '|' describe the object:
|
||||
where the columns are:
|
||||
|
||||
======= ===============================================================
|
||||
COLUMN DESCRIPTION
|
||||
======= ===============================================================
|
||||
OBJECT Object debugging ID (appears as OBJ%x in some debug messages)
|
||||
PARENT Debugging ID of parent object
|
||||
STAT Object state
|
||||
CHLDN Number of child objects of this object
|
||||
OPS Number of outstanding operations on this object
|
||||
OOP Number of outstanding child object management operations
|
||||
IPR
|
||||
EX Number of outstanding exclusive operations
|
||||
READS Number of outstanding read operations
|
||||
EM Object's event mask
|
||||
EV Events raised on this object
|
||||
F Object flags
|
||||
S Object work item busy state mask (1:pending 2:running)
|
||||
CACHE Cache cookie debug ID (also appears in traces)
|
||||
REF Number of references on the cache cookie
|
||||
VOLS Number of volumes cookies in this cache
|
||||
OBJS Number of cache objects in use
|
||||
ACCES Number of accesses pinning the cache
|
||||
S State
|
||||
NAME Name of the cache.
|
||||
======= ===============================================================
|
||||
|
||||
and the second set of columns describe the object's cookie, if present:
|
||||
The state can be (-) Inactive, (P)reparing, (A)ctive, (E)rror or (W)ithdrawing.
|
||||
|
||||
================ ======================================================
|
||||
COLUMN DESCRIPTION
|
||||
================ ======================================================
|
||||
NETFS_COOKIE_DEF Name of netfs cookie definition
|
||||
TY Cookie type (IX - index, DT - data, hex - special)
|
||||
FL Cookie flags
|
||||
NETFS_DATA Netfs private data stored in the cookie
|
||||
OBJECT_KEY Object key } 1 column, with separating comma
|
||||
AUX_DATA Object aux data } presence may be configured
|
||||
================ ======================================================
|
||||
|
||||
The data shown may be filtered by attaching the a key to an appropriate keyring
|
||||
before viewing the file. Something like::
|
||||
Volume List
|
||||
===========
|
||||
|
||||
keyctl add user fscache:objlist <restrictions> @s
|
||||
FS-Cache provides a list of volume cookies:
|
||||
|
||||
where <restrictions> are a selection of the following letters:
|
||||
/proc/fs/fscache/volumes
|
||||
|
||||
== =========================================================
|
||||
K Show hexdump of object key (don't show if not given)
|
||||
A Show hexdump of object aux data (don't show if not given)
|
||||
== =========================================================
|
||||
This will look something like::
|
||||
|
||||
and the following paired letters:
|
||||
VOLUME REF nCOOK ACC FL CACHE KEY
|
||||
======== ===== ===== === == =============== ================
|
||||
00000001 55 54 1 00 default afs,example.com,100058
|
||||
|
||||
== =========================================================
|
||||
C Show objects that have a cookie
|
||||
c Show objects that don't have a cookie
|
||||
B Show objects that are busy
|
||||
b Show objects that aren't busy
|
||||
W Show objects that have pending writes
|
||||
w Show objects that don't have pending writes
|
||||
R Show objects that have outstanding reads
|
||||
r Show objects that don't have outstanding reads
|
||||
S Show objects that have work queued
|
||||
s Show objects that don't have work queued
|
||||
== =========================================================
|
||||
where the columns are:
|
||||
|
||||
If neither side of a letter pair is given, then both are implied. For example:
|
||||
======= ===============================================================
|
||||
COLUMN DESCRIPTION
|
||||
======= ===============================================================
|
||||
VOLUME The volume cookie debug ID (also appears in traces)
|
||||
REF Number of references on the volume cookie
|
||||
nCOOK Number of cookies in the volume
|
||||
ACC Number of accesses pinning the cache
|
||||
FL Flags on the volume cookie
|
||||
CACHE Name of the cache or "-"
|
||||
KEY The indexing key for the volume
|
||||
======= ===============================================================
|
||||
|
||||
keyctl add user fscache:objlist KB @s
|
||||
|
||||
shows objects that are busy, and lists their object keys, but does not dump
|
||||
their auxiliary data. It also implies "CcWwRrSs", but as 'B' is given, 'b' is
|
||||
not implied.
|
||||
Cookie List
|
||||
===========
|
||||
|
||||
By default all objects and all fields will be shown.
|
||||
FS-Cache provides a list of cookies:
|
||||
|
||||
/proc/fs/fscache/cookies
|
||||
|
||||
This will look something like::
|
||||
|
||||
# head /proc/fs/fscache/cookies
|
||||
COOKIE VOLUME REF ACT ACC S FL DEF
|
||||
======== ======== === === === = == ================
|
||||
00000435 00000001 1 0 -1 - 08 0000000201d080070000000000000000, 0000000000000000
|
||||
00000436 00000001 1 0 -1 - 00 0000005601d080080000000000000000, 0000000000000051
|
||||
00000437 00000001 1 0 -1 - 08 00023b3001d0823f0000000000000000, 0000000000000000
|
||||
00000438 00000001 1 0 -1 - 08 0000005801d0807b0000000000000000, 0000000000000000
|
||||
00000439 00000001 1 0 -1 - 08 00023b3201d080a10000000000000000, 0000000000000000
|
||||
0000043a 00000001 1 0 -1 - 08 00023b3401d080a30000000000000000, 0000000000000000
|
||||
0000043b 00000001 1 0 -1 - 08 00023b3601d080b30000000000000000, 0000000000000000
|
||||
0000043c 00000001 1 0 -1 - 08 00023b3801d080b40000000000000000, 0000000000000000
|
||||
|
||||
where the columns are:
|
||||
|
||||
======= ===============================================================
|
||||
COLUMN DESCRIPTION
|
||||
======= ===============================================================
|
||||
COOKIE The cookie debug ID (also appears in traces)
|
||||
VOLUME The parent volume cookie debug ID
|
||||
REF Number of references on the volume cookie
|
||||
ACT Number of times the cookie is marked for in use
|
||||
ACC Number of access pins in the cookie
|
||||
S State of the cookie
|
||||
FL Flags on the cookie
|
||||
DEF Key, auxiliary data
|
||||
======= ===============================================================
|
||||
|
||||
|
||||
Debugging
|
||||
|
|
@ -549,10 +334,8 @@ This is a bitmask of debugging streams to enable:
|
|||
3 8 Cookie management Function entry trace
|
||||
4 16 Function exit trace
|
||||
5 32 General
|
||||
6 64 Page handling Function entry trace
|
||||
7 128 Function exit trace
|
||||
8 256 General
|
||||
9 512 Operation management Function entry trace
|
||||
6-8 (Not used)
|
||||
9 512 I/O operation management Function entry trace
|
||||
10 1024 Function exit trace
|
||||
11 2048 General
|
||||
======= ======= =============================== =======================
|
||||
|
|
@ -560,6 +343,6 @@ This is a bitmask of debugging streams to enable:
|
|||
The appropriate set of values should be OR'd together and the result written to
|
||||
the control file. For example::
|
||||
|
||||
echo $((1|8|64)) >/sys/module/fscache/parameters/debug
|
||||
echo $((1|8|512)) >/sys/module/fscache/parameters/debug
|
||||
|
||||
will turn on all function entry debugging.
|
||||
|
|
|
|||
|
|
@ -7,8 +7,6 @@ Filesystem Caching
|
|||
:maxdepth: 2
|
||||
|
||||
fscache
|
||||
object
|
||||
netfs-api
|
||||
backend-api
|
||||
cachefiles
|
||||
netfs-api
|
||||
operations
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,313 +0,0 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
====================================================
|
||||
In-Kernel Cache Object Representation and Management
|
||||
====================================================
|
||||
|
||||
By: David Howells <dhowells@redhat.com>
|
||||
|
||||
.. Contents:
|
||||
|
||||
(*) Representation
|
||||
|
||||
(*) Object management state machine.
|
||||
|
||||
- Provision of cpu time.
|
||||
- Locking simplification.
|
||||
|
||||
(*) The set of states.
|
||||
|
||||
(*) The set of events.
|
||||
|
||||
|
||||
Representation
|
||||
==============
|
||||
|
||||
FS-Cache maintains an in-kernel representation of each object that a netfs is
|
||||
currently interested in. Such objects are represented by the fscache_cookie
|
||||
struct and are referred to as cookies.
|
||||
|
||||
FS-Cache also maintains a separate in-kernel representation of the objects that
|
||||
a cache backend is currently actively caching. Such objects are represented by
|
||||
the fscache_object struct. The cache backends allocate these upon request, and
|
||||
are expected to embed them in their own representations. These are referred to
|
||||
as objects.
|
||||
|
||||
There is a 1:N relationship between cookies and objects. A cookie may be
|
||||
represented by multiple objects - an index may exist in more than one cache -
|
||||
or even by no objects (it may not be cached).
|
||||
|
||||
Furthermore, both cookies and objects are hierarchical. The two hierarchies
|
||||
correspond, but the cookies tree is a superset of the union of the object trees
|
||||
of multiple caches::
|
||||
|
||||
NETFS INDEX TREE : CACHE 1 : CACHE 2
|
||||
: :
|
||||
: +-----------+ :
|
||||
+----------->| IObject | :
|
||||
+-----------+ | : +-----------+ :
|
||||
| ICookie |-------+ : | :
|
||||
+-----------+ | : | : +-----------+
|
||||
| +------------------------------>| IObject |
|
||||
| : | : +-----------+
|
||||
| : V : |
|
||||
| : +-----------+ : |
|
||||
V +----------->| IObject | : |
|
||||
+-----------+ | : +-----------+ : |
|
||||
| ICookie |-------+ : | : V
|
||||
+-----------+ | : | : +-----------+
|
||||
| +------------------------------>| IObject |
|
||||
+-----+-----+ : | : +-----------+
|
||||
| | : | : |
|
||||
V | : V : |
|
||||
+-----------+ | : +-----------+ : |
|
||||
| ICookie |------------------------->| IObject | : |
|
||||
+-----------+ | : +-----------+ : |
|
||||
| V : | : V
|
||||
| +-----------+ : | : +-----------+
|
||||
| | ICookie |-------------------------------->| IObject |
|
||||
| +-----------+ : | : +-----------+
|
||||
V | : V : |
|
||||
+-----------+ | : +-----------+ : |
|
||||
| DCookie |------------------------->| DObject | : |
|
||||
+-----------+ | : +-----------+ : |
|
||||
| : : |
|
||||
+-------+-------+ : : |
|
||||
| | : : |
|
||||
V V : : V
|
||||
+-----------+ +-----------+ : : +-----------+
|
||||
| DCookie | | DCookie |------------------------>| DObject |
|
||||
+-----------+ +-----------+ : : +-----------+
|
||||
: :
|
||||
|
||||
In the above illustration, ICookie and IObject represent indices and DCookie
|
||||
and DObject represent data storage objects. Indices may have representation in
|
||||
multiple caches, but currently, non-index objects may not. Objects of any type
|
||||
may also be entirely unrepresented.
|
||||
|
||||
As far as the netfs API goes, the netfs is only actually permitted to see
|
||||
pointers to the cookies. The cookies themselves and any objects attached to
|
||||
those cookies are hidden from it.
|
||||
|
||||
|
||||
Object Management State Machine
|
||||
===============================
|
||||
|
||||
Within FS-Cache, each active object is managed by its own individual state
|
||||
machine. The state for an object is kept in the fscache_object struct, in
|
||||
object->state. A cookie may point to a set of objects that are in different
|
||||
states.
|
||||
|
||||
Each state has an action associated with it that is invoked when the machine
|
||||
wakes up in that state. There are four logical sets of states:
|
||||
|
||||
(1) Preparation: states that wait for the parent objects to become ready. The
|
||||
representations are hierarchical, and it is expected that an object must
|
||||
be created or accessed with respect to its parent object.
|
||||
|
||||
(2) Initialisation: states that perform lookups in the cache and validate
|
||||
what's found and that create on disk any missing metadata.
|
||||
|
||||
(3) Normal running: states that allow netfs operations on objects to proceed
|
||||
and that update the state of objects.
|
||||
|
||||
(4) Termination: states that detach objects from their netfs cookies, that
|
||||
delete objects from disk, that handle disk and system errors and that free
|
||||
up in-memory resources.
|
||||
|
||||
|
||||
In most cases, transitioning between states is in response to signalled events.
|
||||
When a state has finished processing, it will usually set the mask of events in
|
||||
which it is interested (object->event_mask) and relinquish the worker thread.
|
||||
Then when an event is raised (by calling fscache_raise_event()), if the event
|
||||
is not masked, the object will be queued for processing (by calling
|
||||
fscache_enqueue_object()).
|
||||
|
||||
|
||||
Provision of CPU Time
|
||||
---------------------
|
||||
|
||||
The work to be done by the various states was given CPU time by the threads of
|
||||
the slow work facility. This was used in preference to the workqueue facility
|
||||
because:
|
||||
|
||||
(1) Threads may be completely occupied for very long periods of time by a
|
||||
particular work item. These state actions may be doing sequences of
|
||||
synchronous, journalled disk accesses (lookup, mkdir, create, setxattr,
|
||||
getxattr, truncate, unlink, rmdir, rename).
|
||||
|
||||
(2) Threads may do little actual work, but may rather spend a lot of time
|
||||
sleeping on I/O. This means that single-threaded and 1-per-CPU-threaded
|
||||
workqueues don't necessarily have the right numbers of threads.
|
||||
|
||||
|
||||
Locking Simplification
|
||||
----------------------
|
||||
|
||||
Because only one worker thread may be operating on any particular object's
|
||||
state machine at once, this simplifies the locking, particularly with respect
|
||||
to disconnecting the netfs's representation of a cache object (fscache_cookie)
|
||||
from the cache backend's representation (fscache_object) - which may be
|
||||
requested from either end.
|
||||
|
||||
|
||||
The Set of States
|
||||
=================
|
||||
|
||||
The object state machine has a set of states that it can be in. There are
|
||||
preparation states in which the object sets itself up and waits for its parent
|
||||
object to transit to a state that allows access to its children:
|
||||
|
||||
(1) State FSCACHE_OBJECT_INIT.
|
||||
|
||||
Initialise the object and wait for the parent object to become active. In
|
||||
the cache, it is expected that it will not be possible to look an object
|
||||
up from the parent object, until that parent object itself has been looked
|
||||
up.
|
||||
|
||||
There are initialisation states in which the object sets itself up and accesses
|
||||
disk for the object metadata:
|
||||
|
||||
(2) State FSCACHE_OBJECT_LOOKING_UP.
|
||||
|
||||
Look up the object on disk, using the parent as a starting point.
|
||||
FS-Cache expects the cache backend to probe the cache to see whether this
|
||||
object is represented there, and if it is, to see if it's valid (coherency
|
||||
management).
|
||||
|
||||
The cache should call fscache_object_lookup_negative() to indicate lookup
|
||||
failure for whatever reason, and should call fscache_obtained_object() to
|
||||
indicate success.
|
||||
|
||||
At the completion of lookup, FS-Cache will let the netfs go ahead with
|
||||
read operations, no matter whether the file is yet cached. If not yet
|
||||
cached, read operations will be immediately rejected with ENODATA until
|
||||
the first known page is uncached - as to that point there can be no data
|
||||
to be read out of the cache for that file that isn't currently also held
|
||||
in the pagecache.
|
||||
|
||||
(3) State FSCACHE_OBJECT_CREATING.
|
||||
|
||||
Create an object on disk, using the parent as a starting point. This
|
||||
happens if the lookup failed to find the object, or if the object's
|
||||
coherency data indicated what's on disk is out of date. In this state,
|
||||
FS-Cache expects the cache to create
|
||||
|
||||
The cache should call fscache_obtained_object() if creation completes
|
||||
successfully, fscache_object_lookup_negative() otherwise.
|
||||
|
||||
At the completion of creation, FS-Cache will start processing write
|
||||
operations the netfs has queued for an object. If creation failed, the
|
||||
write ops will be transparently discarded, and nothing recorded in the
|
||||
cache.
|
||||
|
||||
There are some normal running states in which the object spends its time
|
||||
servicing netfs requests:
|
||||
|
||||
(4) State FSCACHE_OBJECT_AVAILABLE.
|
||||
|
||||
A transient state in which pending operations are started, child objects
|
||||
are permitted to advance from FSCACHE_OBJECT_INIT state, and temporary
|
||||
lookup data is freed.
|
||||
|
||||
(5) State FSCACHE_OBJECT_ACTIVE.
|
||||
|
||||
The normal running state. In this state, requests the netfs makes will be
|
||||
passed on to the cache.
|
||||
|
||||
(6) State FSCACHE_OBJECT_INVALIDATING.
|
||||
|
||||
The object is undergoing invalidation. When the state comes here, it
|
||||
discards all pending read, write and attribute change operations as it is
|
||||
going to clear out the cache entirely and reinitialise it. It will then
|
||||
continue to the FSCACHE_OBJECT_UPDATING state.
|
||||
|
||||
(7) State FSCACHE_OBJECT_UPDATING.
|
||||
|
||||
The state machine comes here to update the object in the cache from the
|
||||
netfs's records. This involves updating the auxiliary data that is used
|
||||
to maintain coherency.
|
||||
|
||||
And there are terminal states in which an object cleans itself up, deallocates
|
||||
memory and potentially deletes stuff from disk:
|
||||
|
||||
(8) State FSCACHE_OBJECT_LC_DYING.
|
||||
|
||||
The object comes here if it is dying because of a lookup or creation
|
||||
error. This would be due to a disk error or system error of some sort.
|
||||
Temporary data is cleaned up, and the parent is released.
|
||||
|
||||
(9) State FSCACHE_OBJECT_DYING.
|
||||
|
||||
The object comes here if it is dying due to an error, because its parent
|
||||
cookie has been relinquished by the netfs or because the cache is being
|
||||
withdrawn.
|
||||
|
||||
Any child objects waiting on this one are given CPU time so that they too
|
||||
can destroy themselves. This object waits for all its children to go away
|
||||
before advancing to the next state.
|
||||
|
||||
(10) State FSCACHE_OBJECT_ABORT_INIT.
|
||||
|
||||
The object comes to this state if it was waiting on its parent in
|
||||
FSCACHE_OBJECT_INIT, but its parent died. The object will destroy itself
|
||||
so that the parent may proceed from the FSCACHE_OBJECT_DYING state.
|
||||
|
||||
(11) State FSCACHE_OBJECT_RELEASING.
|
||||
(12) State FSCACHE_OBJECT_RECYCLING.
|
||||
|
||||
The object comes to one of these two states when dying once it is rid of
|
||||
all its children, if it is dying because the netfs relinquished its
|
||||
cookie. In the first state, the cached data is expected to persist, and
|
||||
in the second it will be deleted.
|
||||
|
||||
(13) State FSCACHE_OBJECT_WITHDRAWING.
|
||||
|
||||
The object transits to this state if the cache decides it wants to
|
||||
withdraw the object from service, perhaps to make space, but also due to
|
||||
error or just because the whole cache is being withdrawn.
|
||||
|
||||
(14) State FSCACHE_OBJECT_DEAD.
|
||||
|
||||
The object transits to this state when the in-memory object record is
|
||||
ready to be deleted. The object processor shouldn't ever see an object in
|
||||
this state.
|
||||
|
||||
|
||||
The Set of Events
|
||||
-----------------
|
||||
|
||||
There are a number of events that can be raised to an object state machine:
|
||||
|
||||
FSCACHE_OBJECT_EV_UPDATE
|
||||
The netfs requested that an object be updated. The state machine will ask
|
||||
the cache backend to update the object, and the cache backend will ask the
|
||||
netfs for details of the change through its cookie definition ops.
|
||||
|
||||
FSCACHE_OBJECT_EV_CLEARED
|
||||
This is signalled in two circumstances:
|
||||
|
||||
(a) when an object's last child object is dropped and
|
||||
|
||||
(b) when the last operation outstanding on an object is completed.
|
||||
|
||||
This is used to proceed from the dying state.
|
||||
|
||||
FSCACHE_OBJECT_EV_ERROR
|
||||
This is signalled when an I/O error occurs during the processing of some
|
||||
object.
|
||||
|
||||
FSCACHE_OBJECT_EV_RELEASE, FSCACHE_OBJECT_EV_RETIRE
|
||||
These are signalled when the netfs relinquishes a cookie it was using.
|
||||
The event selected depends on whether the netfs asks for the backing
|
||||
object to be retired (deleted) or retained.
|
||||
|
||||
FSCACHE_OBJECT_EV_WITHDRAW
|
||||
This is signalled when the cache backend wants to withdraw an object.
|
||||
This means that the object will have to be detached from the netfs's
|
||||
cookie.
|
||||
|
||||
Because the withdrawing releasing/retiring events are all handled by the object
|
||||
state machine, it doesn't matter if there's a collision with both ends trying
|
||||
to sever the connection at the same time. The state machine can just pick
|
||||
which one it wants to honour, and that effects the other.
|
||||
|
|
@ -1,210 +0,0 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
================================
|
||||
Asynchronous Operations Handling
|
||||
================================
|
||||
|
||||
By: David Howells <dhowells@redhat.com>
|
||||
|
||||
.. Contents:
|
||||
|
||||
(*) Overview.
|
||||
|
||||
(*) Operation record initialisation.
|
||||
|
||||
(*) Parameters.
|
||||
|
||||
(*) Procedure.
|
||||
|
||||
(*) Asynchronous callback.
|
||||
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
FS-Cache has an asynchronous operations handling facility that it uses for its
|
||||
data storage and retrieval routines. Its operations are represented by
|
||||
fscache_operation structs, though these are usually embedded into some other
|
||||
structure.
|
||||
|
||||
This facility is available to and expected to be used by the cache backends,
|
||||
and FS-Cache will create operations and pass them off to the appropriate cache
|
||||
backend for completion.
|
||||
|
||||
To make use of this facility, <linux/fscache-cache.h> should be #included.
|
||||
|
||||
|
||||
Operation Record Initialisation
|
||||
===============================
|
||||
|
||||
An operation is recorded in an fscache_operation struct::
|
||||
|
||||
struct fscache_operation {
|
||||
union {
|
||||
struct work_struct fast_work;
|
||||
struct slow_work slow_work;
|
||||
};
|
||||
unsigned long flags;
|
||||
fscache_operation_processor_t processor;
|
||||
...
|
||||
};
|
||||
|
||||
Someone wanting to issue an operation should allocate something with this
|
||||
struct embedded in it. They should initialise it by calling::
|
||||
|
||||
void fscache_operation_init(struct fscache_operation *op,
|
||||
fscache_operation_release_t release);
|
||||
|
||||
with the operation to be initialised and the release function to use.
|
||||
|
||||
The op->flags parameter should be set to indicate the CPU time provision and
|
||||
the exclusivity (see the Parameters section).
|
||||
|
||||
The op->fast_work, op->slow_work and op->processor flags should be set as
|
||||
appropriate for the CPU time provision (see the Parameters section).
|
||||
|
||||
FSCACHE_OP_WAITING may be set in op->flags prior to each submission of the
|
||||
operation and waited for afterwards.
|
||||
|
||||
|
||||
Parameters
|
||||
==========
|
||||
|
||||
There are a number of parameters that can be set in the operation record's flag
|
||||
parameter. There are three options for the provision of CPU time in these
|
||||
operations:
|
||||
|
||||
(1) The operation may be done synchronously (FSCACHE_OP_MYTHREAD). A thread
|
||||
may decide it wants to handle an operation itself without deferring it to
|
||||
another thread.
|
||||
|
||||
This is, for example, used in read operations for calling readpages() on
|
||||
the backing filesystem in CacheFiles. Although readpages() does an
|
||||
asynchronous data fetch, the determination of whether pages exist is done
|
||||
synchronously - and the netfs does not proceed until this has been
|
||||
determined.
|
||||
|
||||
If this option is to be used, FSCACHE_OP_WAITING must be set in op->flags
|
||||
before submitting the operation, and the operating thread must wait for it
|
||||
to be cleared before proceeding::
|
||||
|
||||
wait_on_bit(&op->flags, FSCACHE_OP_WAITING,
|
||||
TASK_UNINTERRUPTIBLE);
|
||||
|
||||
|
||||
(2) The operation may be fast asynchronous (FSCACHE_OP_FAST), in which case it
|
||||
will be given to keventd to process. Such an operation is not permitted
|
||||
to sleep on I/O.
|
||||
|
||||
This is, for example, used by CacheFiles to copy data from a backing fs
|
||||
page to a netfs page after the backing fs has read the page in.
|
||||
|
||||
If this option is used, op->fast_work and op->processor must be
|
||||
initialised before submitting the operation::
|
||||
|
||||
INIT_WORK(&op->fast_work, do_some_work);
|
||||
|
||||
|
||||
(3) The operation may be slow asynchronous (FSCACHE_OP_SLOW), in which case it
|
||||
will be given to the slow work facility to process. Such an operation is
|
||||
permitted to sleep on I/O.
|
||||
|
||||
This is, for example, used by FS-Cache to handle background writes of
|
||||
pages that have just been fetched from a remote server.
|
||||
|
||||
If this option is used, op->slow_work and op->processor must be
|
||||
initialised before submitting the operation::
|
||||
|
||||
fscache_operation_init_slow(op, processor)
|
||||
|
||||
|
||||
Furthermore, operations may be one of two types:
|
||||
|
||||
(1) Exclusive (FSCACHE_OP_EXCLUSIVE). Operations of this type may not run in
|
||||
conjunction with any other operation on the object being operated upon.
|
||||
|
||||
An example of this is the attribute change operation, in which the file
|
||||
being written to may need truncation.
|
||||
|
||||
(2) Shareable. Operations of this type may be running simultaneously. It's
|
||||
up to the operation implementation to prevent interference between other
|
||||
operations running at the same time.
|
||||
|
||||
|
||||
Procedure
|
||||
=========
|
||||
|
||||
Operations are used through the following procedure:
|
||||
|
||||
(1) The submitting thread must allocate the operation and initialise it
|
||||
itself. Normally this would be part of a more specific structure with the
|
||||
generic op embedded within.
|
||||
|
||||
(2) The submitting thread must then submit the operation for processing using
|
||||
one of the following two functions::
|
||||
|
||||
int fscache_submit_op(struct fscache_object *object,
|
||||
struct fscache_operation *op);
|
||||
|
||||
int fscache_submit_exclusive_op(struct fscache_object *object,
|
||||
struct fscache_operation *op);
|
||||
|
||||
The first function should be used to submit non-exclusive ops and the
|
||||
second to submit exclusive ones. The caller must still set the
|
||||
FSCACHE_OP_EXCLUSIVE flag.
|
||||
|
||||
If successful, both functions will assign the operation to the specified
|
||||
object and return 0. -ENOBUFS will be returned if the object specified is
|
||||
permanently unavailable.
|
||||
|
||||
The operation manager will defer operations on an object that is still
|
||||
undergoing lookup or creation. The operation will also be deferred if an
|
||||
operation of conflicting exclusivity is in progress on the object.
|
||||
|
||||
If the operation is asynchronous, the manager will retain a reference to
|
||||
it, so the caller should put their reference to it by passing it to::
|
||||
|
||||
void fscache_put_operation(struct fscache_operation *op);
|
||||
|
||||
(3) If the submitting thread wants to do the work itself, and has marked the
|
||||
operation with FSCACHE_OP_MYTHREAD, then it should monitor
|
||||
FSCACHE_OP_WAITING as described above and check the state of the object if
|
||||
necessary (the object might have died while the thread was waiting).
|
||||
|
||||
When it has finished doing its processing, it should call
|
||||
fscache_op_complete() and fscache_put_operation() on it.
|
||||
|
||||
(4) The operation holds an effective lock upon the object, preventing other
|
||||
exclusive ops conflicting until it is released. The operation can be
|
||||
enqueued for further immediate asynchronous processing by adjusting the
|
||||
CPU time provisioning option if necessary, eg::
|
||||
|
||||
op->flags &= ~FSCACHE_OP_TYPE;
|
||||
op->flags |= ~FSCACHE_OP_FAST;
|
||||
|
||||
and calling::
|
||||
|
||||
void fscache_enqueue_operation(struct fscache_operation *op)
|
||||
|
||||
This can be used to allow other things to have use of the worker thread
|
||||
pools.
|
||||
|
||||
|
||||
Asynchronous Callback
|
||||
=====================
|
||||
|
||||
When used in asynchronous mode, the worker thread pool will invoke the
|
||||
processor method with a pointer to the operation. This should then get at the
|
||||
container struct by using container_of()::
|
||||
|
||||
static void fscache_write_op(struct fscache_operation *_op)
|
||||
{
|
||||
struct fscache_storage *op =
|
||||
container_of(_op, struct fscache_storage, op);
|
||||
...
|
||||
}
|
||||
|
||||
The caller holds a reference on the operation, and will invoke
|
||||
fscache_put_operation() when the processor function returns. The processor
|
||||
function is at liberty to call fscache_enqueue_operation() or to take extra
|
||||
references.
|
||||
|
|
@ -23,8 +23,8 @@ on it as usual. The `DAX` code currently only supports files with a block
|
|||
size equal to your kernel's `PAGE_SIZE`, so you may need to specify a block
|
||||
size when creating the filesystem.
|
||||
|
||||
Currently 3 filesystems support `DAX`: ext2, ext4 and xfs. Enabling `DAX` on them
|
||||
is different.
|
||||
Currently 4 filesystems support `DAX`: ext2, ext4, xfs and virtiofs.
|
||||
Enabling `DAX` on them is different.
|
||||
|
||||
Enabling DAX on ext2
|
||||
--------------------
|
||||
|
|
@ -168,6 +168,22 @@ if the underlying media does not support dax and/or the filesystem is
|
|||
overridden with a mount option.
|
||||
|
||||
|
||||
Enabling DAX on virtiofs
|
||||
----------------------------
|
||||
The semantic of DAX on virtiofs is basically equal to that on ext4 and xfs,
|
||||
except that when '-o dax=inode' is specified, virtiofs client derives the hint
|
||||
whether DAX shall be enabled or not from virtiofs server through FUSE protocol,
|
||||
rather than the persistent `FS_XFLAG_DAX` flag. That is, whether DAX shall be
|
||||
enabled or not is completely determined by virtiofs server, while virtiofs
|
||||
server itself may deploy various algorithm making this decision, e.g. depending
|
||||
on the persistent `FS_XFLAG_DAX` flag on the host.
|
||||
|
||||
It is still supported to set or clear persistent `FS_XFLAG_DAX` flag inside
|
||||
guest, but it is not guaranteed that DAX will be enabled or disabled for
|
||||
corresponding file then. Users inside guest still need to call statx(2) and
|
||||
check the statx flag `STATX_ATTR_DAX` to see if DAX is enabled for this file.
|
||||
|
||||
|
||||
Implementation Tips for Block Driver Writers
|
||||
--------------------------------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -454,7 +454,8 @@ operation table looks like the following::
|
|||
void *term_func_priv);
|
||||
|
||||
int (*prepare_write)(struct netfs_cache_resources *cres,
|
||||
loff_t *_start, size_t *_len, loff_t i_size);
|
||||
loff_t *_start, size_t *_len, loff_t i_size,
|
||||
bool no_space_allocated_yet);
|
||||
|
||||
int (*write)(struct netfs_cache_resources *cres,
|
||||
loff_t start_pos,
|
||||
|
|
@ -515,11 +516,14 @@ The methods defined in the table are:
|
|||
|
||||
* ``prepare_write()``
|
||||
|
||||
[Required] Called to adjust a write to the cache and check that there is
|
||||
sufficient space in the cache. The start and length values indicate the
|
||||
size of the write that netfslib is proposing, and this can be adjusted by
|
||||
the cache to respect DIO boundaries. The file size is passed for
|
||||
information.
|
||||
[Required] Called to prepare a write to the cache to take place. This
|
||||
involves checking to see whether the cache has sufficient space to honour
|
||||
the write. ``*_start`` and ``*_len`` indicate the region to be written; the
|
||||
region can be shrunk or it can be expanded to a page boundary either way as
|
||||
necessary to align for direct I/O. i_size holds the size of the object and
|
||||
is provided for reference. no_space_allocated_yet is set to true if the
|
||||
caller is certain that no data has been written to that region - for example
|
||||
if it tried to do a read from there already.
|
||||
|
||||
* ``write()``
|
||||
|
||||
|
|
|
|||
|
|
@ -155,14 +155,14 @@ follows::
|
|||
autofdo
|
||||
$ cd autofdo/
|
||||
$ ls
|
||||
description preset1 preset3 preset5 preset7 preset9
|
||||
feature_refs preset2 preset4 preset6 preset8
|
||||
description feature_refs preset1 preset3 preset5 preset7 preset9
|
||||
enable preset preset2 preset4 preset6 preset8
|
||||
$ cat description
|
||||
Setup ETMs with strobing for autofdo
|
||||
$ cat feature_refs
|
||||
strobing
|
||||
|
||||
Each preset declared has a preset<n> subdirectory declared. The values for
|
||||
Each preset declared has a 'preset<n>' subdirectory declared. The values for
|
||||
the preset can be examined::
|
||||
|
||||
$ cat preset1/values
|
||||
|
|
@ -170,6 +170,9 @@ the preset can be examined::
|
|||
$ cat preset2/values
|
||||
strobing.window = 0x1388 strobing.period = 0x4
|
||||
|
||||
The 'enable' and 'preset' files allow the control of a configuration when
|
||||
using CoreSight with sysfs.
|
||||
|
||||
The features referenced by the configuration can be examined in the features
|
||||
directory::
|
||||
|
||||
|
|
@ -211,19 +214,13 @@ also declared in the perf 'cs_etm' event infrastructure so that they can
|
|||
be selected when running trace under perf::
|
||||
|
||||
$ ls /sys/devices/cs_etm
|
||||
configurations format perf_event_mux_interval_ms sinks type
|
||||
events nr_addr_filters power
|
||||
cpu0 cpu2 events nr_addr_filters power subsystem uevent
|
||||
cpu1 cpu3 format perf_event_mux_interval_ms sinks type
|
||||
|
||||
Key directories here are 'configurations' - which lists the loaded
|
||||
configurations, and 'events' - a generic perf directory which allows
|
||||
selection on the perf command line.::
|
||||
The key directory here is 'events' - a generic perf directory which allows
|
||||
selection on the perf command line. As with the sinks entries, this provides
|
||||
a hash of the configuration name.
|
||||
|
||||
$ ls configurations/
|
||||
autofdo
|
||||
$ cat configurations/autofdo
|
||||
0xa7c3dddd
|
||||
|
||||
As with the sinks entries, this provides a hash of the configuration name.
|
||||
The entry in the 'events' directory uses perfs built in syntax generator
|
||||
to substitute the syntax for the name when evaluating the command::
|
||||
|
||||
|
|
@ -242,3 +239,56 @@ A preset to override the current parameter values can also be selected::
|
|||
|
||||
When configurations are selected in this way, then the trace sink used is
|
||||
automatically selected.
|
||||
|
||||
Using Configurations in sysfs
|
||||
=============================
|
||||
|
||||
Coresight can be controlled using sysfs. When this is in use then a configuration
|
||||
can be made active for the devices that are used in the sysfs session.
|
||||
|
||||
In a configuration there are 'enable' and 'preset' files.
|
||||
|
||||
To enable a configuration for use with sysfs::
|
||||
|
||||
$ cd configurations/autofdo
|
||||
$ echo 1 > enable
|
||||
|
||||
This will then use any default parameter values in the features - which can be
|
||||
adjusted as described above.
|
||||
|
||||
To use a preset<n> set of parameter values::
|
||||
|
||||
$ echo 3 > preset
|
||||
|
||||
This will select preset3 for the configuration.
|
||||
The valid values for preset are 0 - to deselect presets, and any value of
|
||||
<n> where a preset<n> sub-directory is present.
|
||||
|
||||
Note that the active sysfs configuration is a global parameter, therefore
|
||||
only a single configuration can be active for sysfs at any one time.
|
||||
Attempting to enable a second configuration will result in an error.
|
||||
Additionally, attempting to disable the configuration while in use will
|
||||
also result in an error.
|
||||
|
||||
The use of the active configuration by sysfs is independent of the configuration
|
||||
used in perf.
|
||||
|
||||
|
||||
Creating and Loading Custom Configurations
|
||||
==========================================
|
||||
|
||||
Custom configurations and / or features can be dynamically loaded into the
|
||||
system by using a loadable module.
|
||||
|
||||
An example of a custom configuration is found in ./samples/coresight.
|
||||
|
||||
This creates a new configuration that uses the existing built in
|
||||
strobing feature, but provides a different set of presets.
|
||||
|
||||
When the module is loaded, then the configuration appears in the configfs
|
||||
file system and is selectable in the same way as the built in configuration
|
||||
described above.
|
||||
|
||||
Configurations can use previously loaded features. The system will ensure
|
||||
that it is not possible to unload a feature that is currently in use, by
|
||||
enforcing the unload order as the strict reverse of the load order.
|
||||
|
|
|
|||
87
MAINTAINERS
87
MAINTAINERS
|
|
@ -1077,6 +1077,15 @@ W: http://ez.analog.com/community/linux-device-drivers
|
|||
F: Documentation/devicetree/bindings/iio/adc/adi,ad7780.yaml
|
||||
F: drivers/iio/adc/ad7780.c
|
||||
|
||||
ANALOG DEVICES INC AD74413R DRIVER
|
||||
M: Cosmin Tanislav <cosmin.tanislav@analog.com>
|
||||
L: linux-iio@vger.kernel.org
|
||||
S: Supported
|
||||
W: http://ez.analog.com/community/linux-device-drivers
|
||||
F: Documentation/devicetree/bindings/iio/addac/adi,ad74413r.yaml
|
||||
F: drivers/iio/addac/ad74413r.c
|
||||
F: include/dt-bindings/iio/addac/adi,ad74413r.h
|
||||
|
||||
ANALOG DEVICES INC AD9389B DRIVER
|
||||
M: Hans Verkuil <hverkuil-cisco@xs4all.nl>
|
||||
L: linux-media@vger.kernel.org
|
||||
|
|
@ -1903,6 +1912,7 @@ F: Documentation/trace/coresight/*
|
|||
F: drivers/hwtracing/coresight/*
|
||||
F: include/dt-bindings/arm/coresight-cti-dt.h
|
||||
F: include/linux/coresight*
|
||||
F: samples/coresight/*
|
||||
F: tools/perf/arch/arm/util/auxtrace.c
|
||||
F: tools/perf/arch/arm/util/cs-etm.c
|
||||
F: tools/perf/arch/arm/util/cs-etm.h
|
||||
|
|
@ -2304,6 +2314,7 @@ F: Documentation/devicetree/bindings/gpio/mstar,msc313-gpio.yaml
|
|||
F: arch/arm/boot/dts/mstar-*
|
||||
F: arch/arm/mach-mstar/
|
||||
F: drivers/clk/mstar/
|
||||
F: drivers/clocksource/timer-msc313e.c
|
||||
F: drivers/gpio/gpio-msc313.c
|
||||
F: drivers/rtc/rtc-msc313.c
|
||||
F: drivers/watchdog/msc313e_wdt.c
|
||||
|
|
@ -2807,12 +2818,15 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
|||
S: Supported
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/iwamatsu/linux-visconti.git
|
||||
F: Documentation/devicetree/bindings/arm/toshiba.yaml
|
||||
F: Documentation/devicetree/bindings/clock/toshiba,tmpv770x-pipllct.yaml
|
||||
F: Documentation/devicetree/bindings/clock/toshiba,tmpv770x-pismu.yaml
|
||||
F: Documentation/devicetree/bindings/net/toshiba,visconti-dwmac.yaml
|
||||
F: Documentation/devicetree/bindings/gpio/toshiba,gpio-visconti.yaml
|
||||
F: Documentation/devicetree/bindings/pci/toshiba,visconti-pcie.yaml
|
||||
F: Documentation/devicetree/bindings/pinctrl/toshiba,visconti-pinctrl.yaml
|
||||
F: Documentation/devicetree/bindings/watchdog/toshiba,visconti-wdt.yaml
|
||||
F: arch/arm64/boot/dts/toshiba/
|
||||
F: drivers/clk/visconti/
|
||||
F: drivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c
|
||||
F: drivers/gpio/gpio-visconti.c
|
||||
F: drivers/pci/controller/dwc/pcie-visconti.c
|
||||
|
|
@ -3730,7 +3744,7 @@ M: Al Cooper <alcooperx@gmail.com>
|
|||
L: linux-usb@vger.kernel.org
|
||||
L: bcm-kernel-feedback-list@broadcom.com
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/usb/brcm,bdc.txt
|
||||
F: Documentation/devicetree/bindings/usb/brcm,bdc.yaml
|
||||
F: drivers/usb/gadget/udc/bdc/
|
||||
|
||||
BROADCOM BMIPS CPUFREQ DRIVER
|
||||
|
|
@ -3813,7 +3827,7 @@ M: Doug Berger <opendmb@gmail.com>
|
|||
M: Florian Fainelli <f.fainelli@gmail.com>
|
||||
L: bcm-kernel-feedback-list@broadcom.com
|
||||
S: Supported
|
||||
F: Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.txt
|
||||
F: Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.yaml
|
||||
F: drivers/gpio/gpio-brcmstb.c
|
||||
|
||||
BROADCOM BRCMSTB I2C DRIVER
|
||||
|
|
@ -3871,7 +3885,7 @@ M: Florian Fainelli <f.fainelli@gmail.com>
|
|||
L: bcm-kernel-feedback-list@broadcom.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/devicetree/bindings/net/brcm,bcmgenet.txt
|
||||
F: Documentation/devicetree/bindings/net/brcm,bcmgenet.yaml
|
||||
F: Documentation/devicetree/bindings/net/brcm,unimac-mdio.yaml
|
||||
F: drivers/net/ethernet/broadcom/genet/
|
||||
F: drivers/net/ethernet/broadcom/unimac.h
|
||||
|
|
@ -3913,7 +3927,7 @@ M: Rafał Miłecki <rafal@milecki.pl>
|
|||
M: bcm-kernel-feedback-list@broadcom.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/net/brcm,amac.txt
|
||||
F: Documentation/devicetree/bindings/net/brcm,amac.yaml
|
||||
F: drivers/net/ethernet/broadcom/bgmac*
|
||||
F: drivers/net/ethernet/broadcom/unimac.h
|
||||
|
||||
|
|
@ -3988,7 +4002,7 @@ M: Markus Mayer <mmayer@broadcom.com>
|
|||
M: bcm-kernel-feedback-list@broadcom.com
|
||||
L: linux-pm@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/thermal/brcm,avs-tmon.txt
|
||||
F: Documentation/devicetree/bindings/thermal/brcm,avs-tmon.yaml
|
||||
F: drivers/thermal/broadcom/brcmstb*
|
||||
|
||||
BROADCOM STB DPFE DRIVER
|
||||
|
|
@ -4024,6 +4038,7 @@ L: netdev@vger.kernel.org
|
|||
S: Supported
|
||||
F: drivers/net/ethernet/broadcom/bcmsysport.*
|
||||
F: drivers/net/ethernet/broadcom/unimac.h
|
||||
F: Documentation/devicetree/bindings/net/brcm,systemport.yaml
|
||||
|
||||
BROADCOM TG3 GIGABIT ETHERNET DRIVER
|
||||
M: Siva Reddy Kallam <siva.kallam@broadcom.com>
|
||||
|
|
@ -4563,9 +4578,12 @@ F: drivers/media/cec/i2c/ch7322.c
|
|||
CIRRUS LOGIC AUDIO CODEC DRIVERS
|
||||
M: James Schulman <james.schulman@cirrus.com>
|
||||
M: David Rhodes <david.rhodes@cirrus.com>
|
||||
M: Lucas Tanure <tanureal@opensource.cirrus.com>
|
||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||
L: patches@opensource.cirrus.com
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/sound/cirrus,cs*
|
||||
F: sound/pci/hda/cs*
|
||||
F: sound/soc/codecs/cs*
|
||||
|
||||
CIRRUS LOGIC DSP FIRMWARE DRIVER
|
||||
|
|
@ -4765,6 +4783,8 @@ M: Ian Abbott <abbotti@mev.co.uk>
|
|||
M: H Hartley Sweeten <hsweeten@visionengravers.com>
|
||||
S: Odd Fixes
|
||||
F: drivers/comedi/
|
||||
F: include/linux/comedi/
|
||||
F: include/uapi/linux/comedi.h
|
||||
|
||||
COMMON CLK FRAMEWORK
|
||||
M: Michael Turquette <mturquette@baylibre.com>
|
||||
|
|
@ -7076,9 +7096,7 @@ S: Maintained
|
|||
F: drivers/mmc/host/cqhci*
|
||||
|
||||
EMULEX 10Gbps iSCSI - OneConnect DRIVER
|
||||
M: Subbu Seetharaman <subbu.seetharaman@broadcom.com>
|
||||
M: Ketan Mukadam <ketan.mukadam@broadcom.com>
|
||||
M: Jitendra Bhivare <jitendra.bhivare@broadcom.com>
|
||||
L: linux-scsi@vger.kernel.org
|
||||
S: Supported
|
||||
W: http://www.broadcom.com
|
||||
|
|
@ -9771,6 +9789,13 @@ F: drivers/crypto/keembay/keembay-ocs-hcu-core.c
|
|||
F: drivers/crypto/keembay/ocs-hcu.c
|
||||
F: drivers/crypto/keembay/ocs-hcu.h
|
||||
|
||||
INTEL THUNDER BAY EMMC PHY DRIVER
|
||||
M: Nandhini Srikandan <nandhini.srikandan@intel.com>
|
||||
M: Rashmi A <rashmi.a@intel.com>
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/phy/intel,phy-thunderbay-emmc.yaml
|
||||
F: drivers/phy/intel/phy-intel-thunderbay-emmc.c
|
||||
|
||||
INTEL MANAGEMENT ENGINE (mei)
|
||||
M: Tomas Winkler <tomas.winkler@intel.com>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
|
|
@ -13818,12 +13843,24 @@ F: Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
|
|||
F: drivers/gpu/drm/imx/dcss/
|
||||
|
||||
NXP i.MX 8QXP ADC DRIVER
|
||||
M: Cai Huoqing <caihuoqing@baidu.com>
|
||||
M: Cai Huoqing <cai.huoqing@linux.dev>
|
||||
M: Haibo Chen <haibo.chen@nxp.com>
|
||||
L: linux-imx@nxp.com
|
||||
L: linux-iio@vger.kernel.org
|
||||
S: Supported
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/iio/adc/nxp,imx8qxp-adc.yaml
|
||||
F: drivers/iio/adc/imx8qxp-adc.c
|
||||
|
||||
NXP i.MX 7D/6SX/6UL AND VF610 ADC DRIVER
|
||||
M: Haibo Chen <haibo.chen@nxp.com>
|
||||
L: linux-iio@vger.kernel.org
|
||||
L: linux-imx@nxp.com
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/iio/adc/fsl,imx7d-adc.yaml
|
||||
F: Documentation/devicetree/bindings/iio/adc/fsl,vf610-adc.yaml
|
||||
F: drivers/iio/adc/imx7d_adc.c
|
||||
F: drivers/iio/adc/vf610_adc.c
|
||||
|
||||
NXP PF8100/PF8121A/PF8200 PMIC REGULATOR DEVICE DRIVER
|
||||
M: Jagan Teki <jagan@amarulasolutions.com>
|
||||
S: Maintained
|
||||
|
|
@ -15874,6 +15911,15 @@ F: Documentation/admin-guide/media/qcom_camss.rst
|
|||
F: Documentation/devicetree/bindings/media/*camss*
|
||||
F: drivers/media/platform/qcom/camss/
|
||||
|
||||
QUALCOMM CLOCK DRIVERS
|
||||
M: Bjorn Andersson <bjorn.andersson@linaro.org>
|
||||
L: linux-arm-msm@vger.kernel.org
|
||||
S: Supported
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git
|
||||
F: Documentation/devicetree/bindings/clock/qcom,*
|
||||
F: drivers/clk/qcom/
|
||||
F: include/dt-bindings/clock/qcom,*
|
||||
|
||||
QUALCOMM CORE POWER REDUCTION (CPR) AVS DRIVER
|
||||
M: Niklas Cassel <nks@flawful.org>
|
||||
L: linux-pm@vger.kernel.org
|
||||
|
|
@ -17013,10 +17059,8 @@ M: Chanwoo Choi <cw00.choi@samsung.com>
|
|||
L: linux-samsung-soc@vger.kernel.org
|
||||
S: Supported
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/snawrocki/clk.git
|
||||
F: Documentation/devicetree/bindings/clock/exynos*.txt
|
||||
F: Documentation/devicetree/bindings/clock/samsung,*.yaml
|
||||
F: Documentation/devicetree/bindings/clock/samsung,s3c*
|
||||
F: Documentation/devicetree/bindings/clock/samsung,s5p*
|
||||
F: drivers/clk/samsung/
|
||||
F: include/dt-bindings/clock/exynos*.h
|
||||
F: include/dt-bindings/clock/s3c*.h
|
||||
|
|
@ -17985,6 +18029,7 @@ F: Documentation/sound/
|
|||
F: include/sound/
|
||||
F: include/uapi/sound/
|
||||
F: sound/
|
||||
F: tools/testing/selftests/alsa
|
||||
|
||||
SOUND - COMPRESSED AUDIO
|
||||
M: Vinod Koul <vkoul@kernel.org>
|
||||
|
|
@ -18004,6 +18049,13 @@ F: include/sound/dmaengine_pcm.h
|
|||
F: sound/core/pcm_dmaengine.c
|
||||
F: sound/soc/soc-generic-dmaengine-pcm.c
|
||||
|
||||
SOUND - ALSA SELFTESTS
|
||||
M: Mark Brown <broonie@kernel.org>
|
||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||
L: linux-kselftest@vger.kernel.org
|
||||
S: Supported
|
||||
F: tools/testing/selftests/alsa
|
||||
|
||||
SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC)
|
||||
M: Liam Girdwood <lgirdwood@gmail.com>
|
||||
M: Mark Brown <broonie@kernel.org>
|
||||
|
|
@ -21080,6 +21132,13 @@ F: fs/xfs/
|
|||
F: include/uapi/linux/dqblk_xfs.h
|
||||
F: include/uapi/linux/fsmap.h
|
||||
|
||||
XILINX AMS DRIVER
|
||||
M: Anand Ashok Dumbre <anand.ashok.dumbre@xilinx.com>
|
||||
L: linux-iio@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/iio/adc/xlnx,zynqmp-ams.yaml
|
||||
F: drivers/iio/adc/xilinx-ams.c
|
||||
|
||||
XILINX AXI ETHERNET DRIVER
|
||||
M: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
|
||||
S: Maintained
|
||||
|
|
@ -21148,6 +21207,12 @@ T: git https://github.com/Xilinx/linux-xlnx.git
|
|||
F: Documentation/devicetree/bindings/phy/xlnx,zynqmp-psgtr.yaml
|
||||
F: drivers/phy/xilinx/phy-zynqmp.c
|
||||
|
||||
XILINX EVENT MANAGEMENT DRIVER
|
||||
M: Abhyuday Godhasara <abhyuday.godhasara@xilinx.com>
|
||||
S: Maintained
|
||||
F: drivers/soc/xilinx/xlnx_event_manager.c
|
||||
F: include/linux/firmware/xlnx-event-manager.h
|
||||
|
||||
XILLYBUS DRIVER
|
||||
M: Eli Billauer <eli.billauer@gmail.com>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
|
|
|
|||
11
Makefile
11
Makefile
|
|
@ -708,17 +708,6 @@ ifdef CONFIG_FUNCTION_TRACER
|
|||
CC_FLAGS_FTRACE := -pg
|
||||
endif
|
||||
|
||||
ifdef CONFIG_CC_IS_GCC
|
||||
RETPOLINE_CFLAGS := $(call cc-option,-mindirect-branch=thunk-extern -mindirect-branch-register)
|
||||
RETPOLINE_VDSO_CFLAGS := $(call cc-option,-mindirect-branch=thunk-inline -mindirect-branch-register)
|
||||
endif
|
||||
ifdef CONFIG_CC_IS_CLANG
|
||||
RETPOLINE_CFLAGS := -mretpoline-external-thunk
|
||||
RETPOLINE_VDSO_CFLAGS := -mretpoline
|
||||
endif
|
||||
export RETPOLINE_CFLAGS
|
||||
export RETPOLINE_VDSO_CFLAGS
|
||||
|
||||
include $(srctree)/arch/$(SRCARCH)/Makefile
|
||||
|
||||
ifdef need-config
|
||||
|
|
|
|||
1
android/ACK_SHA
Normal file
1
android/ACK_SHA
Normal file
|
|
@ -0,0 +1 @@
|
|||
8bbe6f703a8dfcaf7b310c897491bd55a13be6ca
|
||||
227526
android/abi_gki_aarch64.xml
Normal file
227526
android/abi_gki_aarch64.xml
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -1 +0,0 @@
|
|||
lib/test_stackinit.ko
|
||||
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
#include "omap34xx.dtsi"
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
/*
|
||||
* Default secure signed bootloader (Nokia X-Loader) does not enable L3 firewall
|
||||
|
|
@ -630,63 +631,92 @@ indicator {
|
|||
};
|
||||
|
||||
lp5523: lp5523@32 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "national,lp5523";
|
||||
reg = <0x32>;
|
||||
clock-mode = /bits/ 8 <0>; /* LP55XX_CLOCK_AUTO */
|
||||
enable-gpio = <&gpio2 9 GPIO_ACTIVE_HIGH>; /* 41 */
|
||||
enable-gpios = <&gpio2 9 GPIO_ACTIVE_HIGH>; /* 41 */
|
||||
|
||||
chan0 {
|
||||
led@0 {
|
||||
reg = <0>;
|
||||
chan-name = "lp5523:kb1";
|
||||
led-cur = /bits/ 8 <50>;
|
||||
max-cur = /bits/ 8 <100>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
function = LED_FUNCTION_KBD_BACKLIGHT;
|
||||
};
|
||||
|
||||
chan1 {
|
||||
led@1 {
|
||||
reg = <1>;
|
||||
chan-name = "lp5523:kb2";
|
||||
led-cur = /bits/ 8 <50>;
|
||||
max-cur = /bits/ 8 <100>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
function = LED_FUNCTION_KBD_BACKLIGHT;
|
||||
};
|
||||
|
||||
chan2 {
|
||||
led@2 {
|
||||
reg = <2>;
|
||||
chan-name = "lp5523:kb3";
|
||||
led-cur = /bits/ 8 <50>;
|
||||
max-cur = /bits/ 8 <100>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
function = LED_FUNCTION_KBD_BACKLIGHT;
|
||||
};
|
||||
|
||||
chan3 {
|
||||
led@3 {
|
||||
reg = <3>;
|
||||
chan-name = "lp5523:kb4";
|
||||
led-cur = /bits/ 8 <50>;
|
||||
max-cur = /bits/ 8 <100>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
function = LED_FUNCTION_KBD_BACKLIGHT;
|
||||
};
|
||||
|
||||
chan4 {
|
||||
led@4 {
|
||||
reg = <4>;
|
||||
chan-name = "lp5523:b";
|
||||
led-cur = /bits/ 8 <50>;
|
||||
max-cur = /bits/ 8 <100>;
|
||||
color = <LED_COLOR_ID_BLUE>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
};
|
||||
|
||||
chan5 {
|
||||
led@5 {
|
||||
reg = <5>;
|
||||
chan-name = "lp5523:g";
|
||||
led-cur = /bits/ 8 <50>;
|
||||
max-cur = /bits/ 8 <100>;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
};
|
||||
|
||||
chan6 {
|
||||
led@6 {
|
||||
reg = <6>;
|
||||
chan-name = "lp5523:r";
|
||||
led-cur = /bits/ 8 <50>;
|
||||
max-cur = /bits/ 8 <100>;
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
};
|
||||
|
||||
chan7 {
|
||||
led@7 {
|
||||
reg = <7>;
|
||||
chan-name = "lp5523:kb5";
|
||||
led-cur = /bits/ 8 <50>;
|
||||
max-cur = /bits/ 8 <100>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
function = LED_FUNCTION_KBD_BACKLIGHT;
|
||||
};
|
||||
|
||||
chan8 {
|
||||
led@8 {
|
||||
reg = <8>;
|
||||
chan-name = "lp5523:kb6";
|
||||
led-cur = /bits/ 8 <50>;
|
||||
max-cur = /bits/ 8 <100>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
function = LED_FUNCTION_KBD_BACKLIGHT;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -13,12 +13,12 @@
|
|||
static int crypto_blake2s_update_arm(struct shash_desc *desc,
|
||||
const u8 *in, unsigned int inlen)
|
||||
{
|
||||
return crypto_blake2s_update(desc, in, inlen, blake2s_compress);
|
||||
return crypto_blake2s_update(desc, in, inlen, false);
|
||||
}
|
||||
|
||||
static int crypto_blake2s_final_arm(struct shash_desc *desc, u8 *out)
|
||||
{
|
||||
return crypto_blake2s_final(desc, out, blake2s_compress);
|
||||
return crypto_blake2s_final(desc, out, false);
|
||||
}
|
||||
|
||||
#define BLAKE2S_ALG(name, driver_name, digest_size) \
|
||||
|
|
|
|||
|
|
@ -64,11 +64,6 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs
|
|||
{
|
||||
struct frame_tail __user *tail;
|
||||
|
||||
if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) {
|
||||
/* We don't support guest os callchain now */
|
||||
return;
|
||||
}
|
||||
|
||||
perf_callchain_store(entry, regs->ARM_pc);
|
||||
|
||||
if (!current->mm)
|
||||
|
|
@ -100,20 +95,12 @@ perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *re
|
|||
{
|
||||
struct stackframe fr;
|
||||
|
||||
if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) {
|
||||
/* We don't support guest os callchain now */
|
||||
return;
|
||||
}
|
||||
|
||||
arm_get_current_stackframe(regs, &fr);
|
||||
walk_stackframe(&fr, callchain_trace, entry);
|
||||
}
|
||||
|
||||
unsigned long perf_instruction_pointer(struct pt_regs *regs)
|
||||
{
|
||||
if (perf_guest_cbs && perf_guest_cbs->is_in_guest())
|
||||
return perf_guest_cbs->get_guest_ip();
|
||||
|
||||
return instruction_pointer(regs);
|
||||
}
|
||||
|
||||
|
|
@ -121,17 +108,10 @@ unsigned long perf_misc_flags(struct pt_regs *regs)
|
|||
{
|
||||
int misc = 0;
|
||||
|
||||
if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) {
|
||||
if (perf_guest_cbs->is_user_mode())
|
||||
misc |= PERF_RECORD_MISC_GUEST_USER;
|
||||
else
|
||||
misc |= PERF_RECORD_MISC_GUEST_KERNEL;
|
||||
} else {
|
||||
if (user_mode(regs))
|
||||
misc |= PERF_RECORD_MISC_USER;
|
||||
else
|
||||
misc |= PERF_RECORD_MISC_KERNEL;
|
||||
}
|
||||
if (user_mode(regs))
|
||||
misc |= PERF_RECORD_MISC_USER;
|
||||
else
|
||||
misc |= PERF_RECORD_MISC_KERNEL;
|
||||
|
||||
return misc;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,6 +59,10 @@ unsigned long xen_released_pages;
|
|||
struct xen_memory_region xen_extra_mem[XEN_EXTRA_MEM_MAX_REGIONS] __initdata;
|
||||
|
||||
static __read_mostly unsigned int xen_events_irq;
|
||||
static __read_mostly phys_addr_t xen_grant_frames;
|
||||
|
||||
#define GRANT_TABLE_INDEX 0
|
||||
#define EXT_REGION_INDEX 1
|
||||
|
||||
uint32_t xen_start_flags;
|
||||
EXPORT_SYMBOL(xen_start_flags);
|
||||
|
|
@ -300,9 +304,115 @@ static void __init xen_acpi_guest_init(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_XEN_UNPOPULATED_ALLOC
|
||||
/*
|
||||
* A type-less specific Xen resource which contains extended regions
|
||||
* (unused regions of guest physical address space provided by the hypervisor).
|
||||
*/
|
||||
static struct resource xen_resource = {
|
||||
.name = "Xen unused space",
|
||||
};
|
||||
|
||||
int __init arch_xen_unpopulated_init(struct resource **res)
|
||||
{
|
||||
struct device_node *np;
|
||||
struct resource *regs, *tmp_res;
|
||||
uint64_t min_gpaddr = -1, max_gpaddr = 0;
|
||||
unsigned int i, nr_reg = 0;
|
||||
int rc;
|
||||
|
||||
if (!xen_domain())
|
||||
return -ENODEV;
|
||||
|
||||
if (!acpi_disabled)
|
||||
return -ENODEV;
|
||||
|
||||
np = of_find_compatible_node(NULL, NULL, "xen,xen");
|
||||
if (WARN_ON(!np))
|
||||
return -ENODEV;
|
||||
|
||||
/* Skip region 0 which is reserved for grant table space */
|
||||
while (of_get_address(np, nr_reg + EXT_REGION_INDEX, NULL, NULL))
|
||||
nr_reg++;
|
||||
|
||||
if (!nr_reg) {
|
||||
pr_err("No extended regions are found\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
regs = kcalloc(nr_reg, sizeof(*regs), GFP_KERNEL);
|
||||
if (!regs)
|
||||
return -ENOMEM;
|
||||
|
||||
/*
|
||||
* Create resource from extended regions provided by the hypervisor to be
|
||||
* used as unused address space for Xen scratch pages.
|
||||
*/
|
||||
for (i = 0; i < nr_reg; i++) {
|
||||
rc = of_address_to_resource(np, i + EXT_REGION_INDEX, ®s[i]);
|
||||
if (rc)
|
||||
goto err;
|
||||
|
||||
if (max_gpaddr < regs[i].end)
|
||||
max_gpaddr = regs[i].end;
|
||||
if (min_gpaddr > regs[i].start)
|
||||
min_gpaddr = regs[i].start;
|
||||
}
|
||||
|
||||
xen_resource.start = min_gpaddr;
|
||||
xen_resource.end = max_gpaddr;
|
||||
|
||||
/*
|
||||
* Mark holes between extended regions as unavailable. The rest of that
|
||||
* address space will be available for the allocation.
|
||||
*/
|
||||
for (i = 1; i < nr_reg; i++) {
|
||||
resource_size_t start, end;
|
||||
|
||||
/* There is an overlap between regions */
|
||||
if (regs[i - 1].end + 1 > regs[i].start) {
|
||||
rc = -EINVAL;
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* There is no hole between regions */
|
||||
if (regs[i - 1].end + 1 == regs[i].start)
|
||||
continue;
|
||||
|
||||
start = regs[i - 1].end + 1;
|
||||
end = regs[i].start - 1;
|
||||
|
||||
tmp_res = kzalloc(sizeof(*tmp_res), GFP_KERNEL);
|
||||
if (!tmp_res) {
|
||||
rc = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
|
||||
tmp_res->name = "Unavailable space";
|
||||
tmp_res->start = start;
|
||||
tmp_res->end = end;
|
||||
|
||||
rc = insert_resource(&xen_resource, tmp_res);
|
||||
if (rc) {
|
||||
pr_err("Cannot insert resource %pR (%d)\n", tmp_res, rc);
|
||||
kfree(tmp_res);
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
|
||||
*res = &xen_resource;
|
||||
|
||||
err:
|
||||
kfree(regs);
|
||||
|
||||
return rc;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void __init xen_dt_guest_init(void)
|
||||
{
|
||||
struct device_node *xen_node;
|
||||
struct resource res;
|
||||
|
||||
xen_node = of_find_compatible_node(NULL, NULL, "xen,xen");
|
||||
if (!xen_node) {
|
||||
|
|
@ -311,13 +421,19 @@ static void __init xen_dt_guest_init(void)
|
|||
}
|
||||
|
||||
xen_events_irq = irq_of_parse_and_map(xen_node, 0);
|
||||
|
||||
if (of_address_to_resource(xen_node, GRANT_TABLE_INDEX, &res)) {
|
||||
pr_err("Xen grant table region is not found\n");
|
||||
return;
|
||||
}
|
||||
xen_grant_frames = res.start;
|
||||
}
|
||||
|
||||
static int __init xen_guest_init(void)
|
||||
{
|
||||
struct xen_add_to_physmap xatp;
|
||||
struct shared_info *shared_info_page = NULL;
|
||||
int cpu;
|
||||
int rc, cpu;
|
||||
|
||||
if (!xen_domain())
|
||||
return 0;
|
||||
|
|
@ -370,12 +486,16 @@ static int __init xen_guest_init(void)
|
|||
for_each_possible_cpu(cpu)
|
||||
per_cpu(xen_vcpu_id, cpu) = cpu;
|
||||
|
||||
xen_auto_xlat_grant_frames.count = gnttab_max_grant_frames();
|
||||
if (xen_xlate_map_ballooned_pages(&xen_auto_xlat_grant_frames.pfn,
|
||||
&xen_auto_xlat_grant_frames.vaddr,
|
||||
xen_auto_xlat_grant_frames.count)) {
|
||||
if (!xen_grant_frames) {
|
||||
xen_auto_xlat_grant_frames.count = gnttab_max_grant_frames();
|
||||
rc = xen_xlate_map_ballooned_pages(&xen_auto_xlat_grant_frames.pfn,
|
||||
&xen_auto_xlat_grant_frames.vaddr,
|
||||
xen_auto_xlat_grant_frames.count);
|
||||
} else
|
||||
rc = gnttab_setup_auto_xlat_frames(xen_grant_frames);
|
||||
if (rc) {
|
||||
free_percpu(xen_vcpu_info);
|
||||
return -ENOMEM;
|
||||
return rc;
|
||||
}
|
||||
gnttab_init();
|
||||
|
||||
|
|
|
|||
|
|
@ -1989,12 +1989,6 @@ config CMDLINE_FROM_BOOTLOADER
|
|||
the boot loader doesn't provide any, the default kernel command
|
||||
string provided in CMDLINE will be used.
|
||||
|
||||
config CMDLINE_EXTEND
|
||||
bool "Extend bootloader kernel arguments"
|
||||
help
|
||||
The command-line arguments provided by the boot loader will be
|
||||
appended to the default kernel command string.
|
||||
|
||||
config CMDLINE_FORCE
|
||||
bool "Always use the default kernel command string"
|
||||
help
|
||||
|
|
|
|||
|
|
@ -995,9 +995,8 @@ hda@3510000 {
|
|||
<&bpmp TEGRA194_CLK_HDA2CODEC_2X>;
|
||||
clock-names = "hda", "hda2hdmi", "hda2codec_2x";
|
||||
resets = <&bpmp TEGRA194_RESET_HDA>,
|
||||
<&bpmp TEGRA194_RESET_HDA2HDMICODEC>,
|
||||
<&bpmp TEGRA194_RESET_HDA2CODEC_2X>;
|
||||
reset-names = "hda", "hda2hdmi", "hda2codec_2x";
|
||||
<&bpmp TEGRA194_RESET_HDA2HDMICODEC>;
|
||||
reset-names = "hda", "hda2hdmi";
|
||||
power-domains = <&bpmp TEGRA194_POWER_DOMAIN_DISP>;
|
||||
interconnects = <&mc TEGRA194_MEMORY_CLIENT_HDAR &emc>,
|
||||
<&mc TEGRA194_MEMORY_CLIENT_HDAW &emc>;
|
||||
|
|
|
|||
|
|
@ -69,7 +69,6 @@ CONFIG_TASKS_RUDE_RCU=y
|
|||
# CONFIG_TEST_PRINTF is not set
|
||||
# CONFIG_TEST_RHASHTABLE is not set
|
||||
# CONFIG_TEST_SORT is not set
|
||||
# CONFIG_TEST_STACKINIT is not set
|
||||
# CONFIG_TEST_STATIC_KEYS is not set
|
||||
# CONFIG_TEST_STRING_HELPERS is not set
|
||||
# CONFIG_TEST_STRSCPY is not set
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ CONFIG_SETEND_EMULATION=y
|
|||
CONFIG_RANDOMIZE_BASE=y
|
||||
# CONFIG_RANDOMIZE_MODULE_REGION_FULL is not set
|
||||
CONFIG_CMDLINE="stack_depot_disable=on kasan.stacktrace=off cgroup_disable=pressure"
|
||||
CONFIG_CMDLINE_EXTEND=y
|
||||
# CONFIG_DMI is not set
|
||||
CONFIG_PM_WAKELOCKS=y
|
||||
CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||
|
|
@ -370,6 +369,7 @@ CONFIG_SERIAL_8250=y
|
|||
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
# CONFIG_SERIAL_8250_EXAR is not set
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=0
|
||||
CONFIG_SERIAL_8250_DW=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SERIAL_AMBA_PL011=y
|
||||
|
|
@ -650,7 +650,6 @@ CONFIG_PRINTK_CALLER=y
|
|||
CONFIG_DYNAMIC_DEBUG_CORE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_INFO_DWARF4=y
|
||||
CONFIG_DEBUG_INFO_BTF=y
|
||||
CONFIG_HEADERS_INSTALL=y
|
||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
|
|
@ -681,4 +680,4 @@ CONFIG_HIST_TRIGGERS=y
|
|||
CONFIG_PID_IN_CONTEXTIDR=y
|
||||
CONFIG_KUNIT=y
|
||||
CONFIG_KUNIT_DEBUGFS=y
|
||||
CONFIG_TEST_STACKINIT=m
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
|
|
|
|||
|
|
@ -675,8 +675,15 @@ unsigned long kvm_mmio_read_buf(const void *buf, unsigned int len);
|
|||
int kvm_handle_mmio_return(struct kvm_vcpu *vcpu);
|
||||
int io_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa);
|
||||
|
||||
int kvm_perf_init(void);
|
||||
int kvm_perf_teardown(void);
|
||||
/*
|
||||
* Returns true if a Performance Monitoring Interrupt (PMI), a.k.a. perf event,
|
||||
* arrived in guest context. For arm64, any event that arrives while a vCPU is
|
||||
* loaded is considered to be "in guest".
|
||||
*/
|
||||
static inline bool kvm_arch_pmi_in_guest(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
return IS_ENABLED(CONFIG_GUEST_PERF_EVENTS) && !!vcpu;
|
||||
}
|
||||
|
||||
long kvm_hypercall_pv_features(struct kvm_vcpu *vcpu);
|
||||
gpa_t kvm_init_stolen_time(struct kvm_vcpu *vcpu);
|
||||
|
|
|
|||
|
|
@ -214,11 +214,8 @@ static __init void parse_cmdline(void)
|
|||
{
|
||||
const u8 *prop = get_bootargs_cmdline();
|
||||
|
||||
if (IS_ENABLED(CONFIG_CMDLINE_EXTEND) ||
|
||||
IS_ENABLED(CONFIG_CMDLINE_FORCE) ||
|
||||
!prop) {
|
||||
if (IS_ENABLED(CONFIG_CMDLINE_FORCE) || !prop)
|
||||
__parse_cmdline(CONFIG_CMDLINE, true);
|
||||
}
|
||||
|
||||
if (!IS_ENABLED(CONFIG_CMDLINE_FORCE) && prop)
|
||||
__parse_cmdline(prop, true);
|
||||
|
|
|
|||
|
|
@ -102,7 +102,9 @@ KVM_NVHE_ALIAS(__stop___kvm_ex_table);
|
|||
KVM_NVHE_ALIAS(kvm_arm_hyp_percpu_base);
|
||||
|
||||
/* PMU available static key */
|
||||
#ifdef CONFIG_HW_PERF_EVENTS
|
||||
KVM_NVHE_ALIAS(kvm_arm_pmu_available);
|
||||
#endif
|
||||
|
||||
/* Position-independent library routines */
|
||||
KVM_NVHE_ALIAS_HYP(clear_page, __pi_clear_page);
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ void *module_alloc(unsigned long size)
|
|||
module_alloc_end = MODULES_END;
|
||||
|
||||
p = __vmalloc_node_range(size, MODULE_ALIGN, module_alloc_base,
|
||||
module_alloc_end, gfp_mask, PAGE_KERNEL, 0,
|
||||
module_alloc_end, gfp_mask, PAGE_KERNEL, VM_DEFER_KMEMLEAK,
|
||||
NUMA_NO_NODE, __builtin_return_address(0));
|
||||
|
||||
if (!p && IS_ENABLED(CONFIG_ARM64_MODULE_PLTS) &&
|
||||
|
|
@ -58,7 +58,7 @@ void *module_alloc(unsigned long size)
|
|||
PAGE_KERNEL, 0, NUMA_NO_NODE,
|
||||
__builtin_return_address(0));
|
||||
|
||||
if (p && (kasan_module_alloc(p, size) < 0)) {
|
||||
if (p && (kasan_module_alloc(p, size, gfp_mask) < 0)) {
|
||||
vfree(p);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ compat_user_backtrace(struct compat_frame_tail __user *tail,
|
|||
void perf_callchain_user(struct perf_callchain_entry_ctx *entry,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) {
|
||||
if (perf_guest_state()) {
|
||||
/* We don't support guest os callchain now */
|
||||
return;
|
||||
}
|
||||
|
|
@ -141,7 +141,7 @@ static bool callchain_trace(void *data, unsigned long pc)
|
|||
void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) {
|
||||
if (perf_guest_state()) {
|
||||
/* We don't support guest os callchain now */
|
||||
return;
|
||||
}
|
||||
|
|
@ -151,18 +151,19 @@ void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,
|
|||
|
||||
unsigned long perf_instruction_pointer(struct pt_regs *regs)
|
||||
{
|
||||
if (perf_guest_cbs && perf_guest_cbs->is_in_guest())
|
||||
return perf_guest_cbs->get_guest_ip();
|
||||
if (perf_guest_state())
|
||||
return perf_guest_get_ip();
|
||||
|
||||
return instruction_pointer(regs);
|
||||
}
|
||||
|
||||
unsigned long perf_misc_flags(struct pt_regs *regs)
|
||||
{
|
||||
unsigned int guest_state = perf_guest_state();
|
||||
int misc = 0;
|
||||
|
||||
if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) {
|
||||
if (perf_guest_cbs->is_user_mode())
|
||||
if (guest_state) {
|
||||
if (guest_state & PERF_GUEST_USER)
|
||||
misc |= PERF_RECORD_MISC_GUEST_USER;
|
||||
else
|
||||
misc |= PERF_RECORD_MISC_GUEST_KERNEL;
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ menuconfig KVM
|
|||
select HAVE_KVM_IRQ_BYPASS
|
||||
select HAVE_KVM_VCPU_RUN_PID_CHANGE
|
||||
select SCHED_INFO
|
||||
select GUEST_PERF_EVENTS if PERF_EVENTS
|
||||
help
|
||||
Support hosting virtualized guest machines.
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ obj-$(CONFIG_KVM) += hyp/
|
|||
|
||||
kvm-y := $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o $(KVM)/eventfd.o \
|
||||
$(KVM)/vfio.o $(KVM)/irqchip.o $(KVM)/binary_stats.o \
|
||||
arm.o mmu.o mmio.o psci.o perf.o hypercalls.o pvtime.o \
|
||||
arm.o mmu.o mmio.o psci.o hypercalls.o pvtime.o \
|
||||
inject_fault.o va_layout.o handle_exit.o \
|
||||
guest.o debug.o reset.o sys_regs.o \
|
||||
vgic-sys-reg-v3.o fpsimd.o pmu.o \
|
||||
|
|
|
|||
|
|
@ -503,6 +503,13 @@ bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu)
|
|||
return vcpu_mode_priv(vcpu);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_GUEST_PERF_EVENTS
|
||||
unsigned long kvm_arch_vcpu_get_ip(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
return *vcpu_pc(vcpu);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Just ensure a guest exit from a particular CPU */
|
||||
static void exit_vm_noop(void *info)
|
||||
{
|
||||
|
|
@ -1775,7 +1782,8 @@ static int init_subsystems(void)
|
|||
if (err)
|
||||
goto out;
|
||||
|
||||
kvm_perf_init();
|
||||
kvm_register_perf_callbacks(NULL);
|
||||
|
||||
kvm_sys_reg_table_init();
|
||||
|
||||
out:
|
||||
|
|
@ -2163,7 +2171,7 @@ int kvm_arch_init(void *opaque)
|
|||
/* NOP: Compiling as a module not supported */
|
||||
void kvm_arch_exit(void)
|
||||
{
|
||||
kvm_perf_teardown();
|
||||
kvm_unregister_perf_callbacks();
|
||||
}
|
||||
|
||||
static int __init early_kvm_mode_cfg(char *arg)
|
||||
|
|
|
|||
|
|
@ -1,59 +0,0 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Based on the x86 implementation.
|
||||
*
|
||||
* Copyright (C) 2012 ARM Ltd.
|
||||
* Author: Marc Zyngier <marc.zyngier@arm.com>
|
||||
*/
|
||||
|
||||
#include <linux/perf_event.h>
|
||||
#include <linux/kvm_host.h>
|
||||
|
||||
#include <asm/kvm_emulate.h>
|
||||
|
||||
DEFINE_STATIC_KEY_FALSE(kvm_arm_pmu_available);
|
||||
|
||||
static int kvm_is_in_guest(void)
|
||||
{
|
||||
return kvm_get_running_vcpu() != NULL;
|
||||
}
|
||||
|
||||
static int kvm_is_user_mode(void)
|
||||
{
|
||||
struct kvm_vcpu *vcpu;
|
||||
|
||||
vcpu = kvm_get_running_vcpu();
|
||||
|
||||
if (vcpu)
|
||||
return !vcpu_mode_priv(vcpu);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static unsigned long kvm_get_guest_ip(void)
|
||||
{
|
||||
struct kvm_vcpu *vcpu;
|
||||
|
||||
vcpu = kvm_get_running_vcpu();
|
||||
|
||||
if (vcpu)
|
||||
return *vcpu_pc(vcpu);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct perf_guest_info_callbacks kvm_guest_cbs = {
|
||||
.is_in_guest = kvm_is_in_guest,
|
||||
.is_user_mode = kvm_is_user_mode,
|
||||
.get_guest_ip = kvm_get_guest_ip,
|
||||
};
|
||||
|
||||
int kvm_perf_init(void)
|
||||
{
|
||||
return perf_register_guest_info_callbacks(&kvm_guest_cbs);
|
||||
}
|
||||
|
||||
int kvm_perf_teardown(void)
|
||||
{
|
||||
return perf_unregister_guest_info_callbacks(&kvm_guest_cbs);
|
||||
}
|
||||
|
|
@ -14,6 +14,8 @@
|
|||
#include <kvm/arm_pmu.h>
|
||||
#include <kvm/arm_vgic.h>
|
||||
|
||||
DEFINE_STATIC_KEY_FALSE(kvm_arm_pmu_available);
|
||||
|
||||
static void kvm_pmu_create_perf_event(struct kvm_vcpu *vcpu, u64 select_idx);
|
||||
static void kvm_pmu_update_pmc_chained(struct kvm_vcpu *vcpu, u64 select_idx);
|
||||
static void kvm_pmu_stop_counter(struct kvm_vcpu *vcpu, struct kvm_pmc *pmc);
|
||||
|
|
|
|||
|
|
@ -88,10 +88,6 @@ void perf_callchain_user(struct perf_callchain_entry_ctx *entry,
|
|||
{
|
||||
unsigned long fp = 0;
|
||||
|
||||
/* C-SKY does not support virtualization. */
|
||||
if (perf_guest_cbs && perf_guest_cbs->is_in_guest())
|
||||
return;
|
||||
|
||||
fp = regs->regs[4];
|
||||
perf_callchain_store(entry, regs->pc);
|
||||
|
||||
|
|
@ -112,12 +108,6 @@ void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,
|
|||
{
|
||||
struct stackframe fr;
|
||||
|
||||
/* C-SKY does not support virtualization. */
|
||||
if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) {
|
||||
pr_warn("C-SKY does not support perf in guest mode!");
|
||||
return;
|
||||
}
|
||||
|
||||
fr.fp = regs->regs[4];
|
||||
fr.lr = regs->lr;
|
||||
walk_stackframe(&fr, entry);
|
||||
|
|
|
|||
|
|
@ -848,7 +848,7 @@ register_unwind_table (struct module *mod)
|
|||
{
|
||||
struct unw_table_entry *start = (void *) mod->arch.unwind->sh_addr;
|
||||
struct unw_table_entry *end = start + mod->arch.unwind->sh_size / sizeof (*start);
|
||||
struct unw_table_entry tmp, *e1, *e2, *core, *init;
|
||||
struct unw_table_entry *e1, *e2, *core, *init;
|
||||
unsigned long num_init = 0, num_core = 0;
|
||||
|
||||
/* First, count how many init and core unwind-table entries there are. */
|
||||
|
|
@ -865,9 +865,7 @@ register_unwind_table (struct module *mod)
|
|||
for (e1 = start; e1 < end; ++e1) {
|
||||
for (e2 = e1 + 1; e2 < end; ++e2) {
|
||||
if (e2->start_offset < e1->start_offset) {
|
||||
tmp = *e1;
|
||||
*e1 = *e2;
|
||||
*e2 = tmp;
|
||||
swap(*e1, *e2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -208,10 +208,7 @@ sort_regions (struct rsvd_region *rsvd_region, int max)
|
|||
while (max--) {
|
||||
for (j = 0; j < max; ++j) {
|
||||
if (rsvd_region[j].start > rsvd_region[j+1].start) {
|
||||
struct rsvd_region tmp;
|
||||
tmp = rsvd_region[j];
|
||||
rsvd_region[j] = rsvd_region[j + 1];
|
||||
rsvd_region[j + 1] = tmp;
|
||||
swap(rsvd_region[j], rsvd_region[j + 1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -264,6 +264,7 @@ static struct attribute * cache_default_attrs[] = {
|
|||
&shared_cpu_map.attr,
|
||||
NULL
|
||||
};
|
||||
ATTRIBUTE_GROUPS(cache_default);
|
||||
|
||||
#define to_object(k) container_of(k, struct cache_info, kobj)
|
||||
#define to_attr(a) container_of(a, struct cache_attr, attr)
|
||||
|
|
@ -284,7 +285,7 @@ static const struct sysfs_ops cache_sysfs_ops = {
|
|||
|
||||
static struct kobj_type cache_ktype = {
|
||||
.sysfs_ops = &cache_sysfs_ops,
|
||||
.default_attrs = cache_default_attrs,
|
||||
.default_groups = cache_default_groups,
|
||||
};
|
||||
|
||||
static struct kobj_type cache_ktype_percpu_entry = {
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@ static int uncached_add_chunk(struct uncached_pool *uc_pool, int nid)
|
|||
* @n_pages: number of contiguous pages to allocate
|
||||
*
|
||||
* Allocate the specified number of contiguous uncached pages on the
|
||||
* the requested node. If not enough contiguous uncached pages are available
|
||||
* requested node. If not enough contiguous uncached pages are available
|
||||
* on the requested node, roundrobin starting with the next higher node.
|
||||
*/
|
||||
unsigned long uncached_alloc_page(int starting_nid, int n_pages)
|
||||
|
|
|
|||
|
|
@ -264,7 +264,6 @@ config BMIPS_GENERIC
|
|||
bool "Broadcom Generic BMIPS kernel"
|
||||
select ARCH_HAS_RESET_CONTROLLER
|
||||
select ARCH_HAS_SYNC_DMA_FOR_CPU_ALL
|
||||
select ARCH_HAS_PHYS_TO_DMA
|
||||
select BOOT_RAW
|
||||
select NO_EXCEPT_FILL
|
||||
select USE_OF
|
||||
|
|
@ -640,9 +639,6 @@ config MACH_REALTEK_RTL
|
|||
select SYS_SUPPORTS_MIPS16
|
||||
select SYS_SUPPORTS_MULTITHREADING
|
||||
select SYS_SUPPORTS_VPE_LOADER
|
||||
select SYS_HAS_EARLY_PRINTK
|
||||
select SYS_HAS_EARLY_PRINTK_8250
|
||||
select USE_GENERIC_EARLY_PRINTK_8250
|
||||
select BOOT_RAW
|
||||
select PINCTRL
|
||||
select USE_OF
|
||||
|
|
@ -765,7 +761,6 @@ config SGI_IP30
|
|||
select HAVE_PCI
|
||||
select IRQ_MIPS_CPU
|
||||
select IRQ_DOMAIN_HIERARCHY
|
||||
select NR_CPUS_DEFAULT_2
|
||||
select PCI_DRIVERS_GENERIC
|
||||
select PCI_XTALK_BRIDGE
|
||||
select SYS_HAS_EARLY_PRINTK
|
||||
|
|
@ -1611,7 +1606,6 @@ config CPU_R4300
|
|||
depends on SYS_HAS_CPU_R4300
|
||||
select CPU_SUPPORTS_32BIT_KERNEL
|
||||
select CPU_SUPPORTS_64BIT_KERNEL
|
||||
select CPU_HAS_LOAD_STORE_LR
|
||||
help
|
||||
MIPS Technologies R4300-series processors.
|
||||
|
||||
|
|
@ -1907,6 +1901,10 @@ config SYS_HAS_CPU_MIPS64_R1
|
|||
config SYS_HAS_CPU_MIPS64_R2
|
||||
bool
|
||||
|
||||
config SYS_HAS_CPU_MIPS64_R5
|
||||
bool
|
||||
select ARCH_HAS_SYNC_DMA_FOR_CPU if DMA_NONCOHERENT
|
||||
|
||||
config SYS_HAS_CPU_MIPS64_R6
|
||||
bool
|
||||
select ARCH_HAS_SYNC_DMA_FOR_CPU if DMA_NONCOHERENT
|
||||
|
|
@ -2065,7 +2063,7 @@ config CPU_SUPPORTS_ADDRWINCFG
|
|||
bool
|
||||
config CPU_SUPPORTS_HUGEPAGES
|
||||
bool
|
||||
depends on !(32BIT && (ARCH_PHYS_ADDR_T_64BIT || EVA))
|
||||
depends on !(32BIT && (PHYS_ADDR_T_64BIT || EVA))
|
||||
config MIPS_PGD_C0_CONTEXT
|
||||
bool
|
||||
depends on 64BIT
|
||||
|
|
@ -2116,6 +2114,16 @@ config MIPS_VA_BITS_48
|
|||
|
||||
If unsure, say N.
|
||||
|
||||
config ZBOOT_LOAD_ADDRESS
|
||||
hex "Compressed kernel load address"
|
||||
default 0xffffffff80400000 if BCM47XX
|
||||
default 0x0
|
||||
depends on SYS_SUPPORTS_ZBOOT
|
||||
help
|
||||
The address to load compressed kernel, aka vmlinuz.
|
||||
|
||||
This is only used if non-zero.
|
||||
|
||||
choice
|
||||
prompt "Kernel page size"
|
||||
default PAGE_SIZE_4KB
|
||||
|
|
|
|||
|
|
@ -253,9 +253,7 @@ endif
|
|||
#
|
||||
# Board-dependent options and extra files
|
||||
#
|
||||
ifdef need-compiler
|
||||
include $(srctree)/arch/mips/Kbuild.platforms
|
||||
endif
|
||||
|
||||
ifdef CONFIG_PHYSICAL_START
|
||||
load-y = $(CONFIG_PHYSICAL_START)
|
||||
|
|
|
|||
|
|
@ -23,8 +23,6 @@
|
|||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Notes :
|
||||
* This file must ONLY be built when CONFIG_GPIOLIB=y and
|
||||
* CONFIG_ALCHEMY_GPIO_INDIRECT=n, otherwise compilation will fail!
|
||||
* au1000 SoC have only one GPIO block : GPIO1
|
||||
* Au1100, Au15x0, Au12x0 have a second one : GPIO2
|
||||
* Au1300 is totally different: 1 block with up to 128 GPIOs
|
||||
|
|
|
|||
|
|
@ -34,15 +34,6 @@
|
|||
|
||||
static char ath79_sys_type[ATH79_SYS_TYPE_LEN];
|
||||
|
||||
static void ath79_restart(char *command)
|
||||
{
|
||||
local_irq_disable();
|
||||
ath79_device_reset_set(AR71XX_RESET_FULL_CHIP);
|
||||
for (;;)
|
||||
if (cpu_wait)
|
||||
cpu_wait();
|
||||
}
|
||||
|
||||
static void ath79_halt(void)
|
||||
{
|
||||
while (1)
|
||||
|
|
@ -234,7 +225,6 @@ void __init plat_mem_setup(void)
|
|||
|
||||
detect_memory_region(0, ATH79_MEM_SIZE_MIN, ATH79_MEM_SIZE_MAX);
|
||||
|
||||
_machine_restart = ath79_restart;
|
||||
_machine_halt = ath79_halt;
|
||||
pm_power_off = ath79_halt;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,4 +4,3 @@
|
|||
cflags-$(CONFIG_BCM47XX) += \
|
||||
-I$(srctree)/arch/mips/include/asm/mach-bcm47xx
|
||||
load-$(CONFIG_BCM47XX) := 0xffffffff80001000
|
||||
zload-$(CONFIG_BCM47XX) += 0xffffffff80400000
|
||||
|
|
|
|||
|
|
@ -141,6 +141,7 @@ struct bcm47xx_board_type_list2 bcm47xx_board_list_boot_hw[] __initconst = {
|
|||
{{BCM47XX_BOARD_LINKSYS_WRT300NV11, "Linksys WRT300N V1.1"}, "WRT300N", "1.1"},
|
||||
{{BCM47XX_BOARD_LINKSYS_WRT310NV1, "Linksys WRT310N V1"}, "WRT310N", "1.0"},
|
||||
{{BCM47XX_BOARD_LINKSYS_WRT310NV2, "Linksys WRT310N V2"}, "WRT310N", "2.0"},
|
||||
{{BCM47XX_BOARD_LINKSYS_WRT320N_V1, "Linksys WRT320N V1"}, "WRT320N", "1.0"},
|
||||
{{BCM47XX_BOARD_LINKSYS_WRT54G3GV2, "Linksys WRT54G3GV2-VF"}, "WRT54G3GV2-VF", "1.0"},
|
||||
{{BCM47XX_BOARD_LINKSYS_WRT610NV1, "Linksys WRT610N V1"}, "WRT610N", "1.0"},
|
||||
{{BCM47XX_BOARD_LINKSYS_WRT610NV2, "Linksys WRT610N V2"}, "WRT610N", "2.0"},
|
||||
|
|
@ -161,9 +162,12 @@ struct bcm47xx_board_type_list1 bcm47xx_board_list_board_id[] __initconst = {
|
|||
{{BCM47XX_BOARD_LUXUL_XWR_600_V1, "Luxul XWR-600 V1"}, "luxul_xwr600_v1"},
|
||||
{{BCM47XX_BOARD_LUXUL_XWR_1750_V1, "Luxul XWR-1750 V1"}, "luxul_xwr1750_v1"},
|
||||
{{BCM47XX_BOARD_NETGEAR_R6200_V1, "Netgear R6200 V1"}, "U12H192T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_R6300_V1, "Netgear R6300 V1"}, "U12H218T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WGR614V8, "Netgear WGR614 V8"}, "U12H072T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WGR614V9, "Netgear WGR614 V9"}, "U12H094T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WGR614_V10, "Netgear WGR614 V10"}, "U12H139T01_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WN2500RP_V1, "Netgear WN2500RP V1"}, "U12H197T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WN2500RP_V2, "Netgear WN2500RP V2"}, "U12H294T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WNDR3300, "Netgear WNDR3300"}, "U12H093T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WNDR3400V1, "Netgear WNDR3400 V1"}, "U12H155T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WNDR3400V2, "Netgear WNDR3400 V2"}, "U12H187T00_NETGEAR"},
|
||||
|
|
@ -345,7 +349,7 @@ void __init bcm47xx_board_detect(void)
|
|||
|
||||
board_detected = bcm47xx_board_get_nvram();
|
||||
bcm47xx_board.board = board_detected->board;
|
||||
strlcpy(bcm47xx_board.name, board_detected->name,
|
||||
strscpy(bcm47xx_board.name, board_detected->name,
|
||||
BCM47XX_BOARD_MAX_NAME);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,12 @@
|
|||
|
||||
/* Asus */
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_asus_rtn10u[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(20, KEY_WPS_BUTTON),
|
||||
BCM47XX_GPIO_KEY(21, KEY_RESTART),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_asus_rtn12[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON),
|
||||
|
|
@ -276,6 +282,18 @@ bcm47xx_buttons_linksys_wrt310nv1[] __initconst = {
|
|||
BCM47XX_GPIO_KEY(8, KEY_UNKNOWN),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_linksys_wrt310n_v2[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(5, KEY_WPS_BUTTON),
|
||||
BCM47XX_GPIO_KEY(6, KEY_RESTART),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_linksys_wrt320n_v1[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(5, KEY_WPS_BUTTON),
|
||||
BCM47XX_GPIO_KEY(8, KEY_RESTART),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_linksys_wrt54g3gv2[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(5, KEY_WIMAX),
|
||||
|
|
@ -391,6 +409,17 @@ bcm47xx_buttons_netgear_r6200_v1[] __initconst = {
|
|||
BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_netgear_r6300_v1[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(6, KEY_RESTART),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_netgear_wn2500rp_v1[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(12, KEY_RESTART),
|
||||
BCM47XX_GPIO_KEY(31, KEY_WPS_BUTTON),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_netgear_wndr3400v1[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(4, KEY_RESTART),
|
||||
|
|
@ -478,6 +507,9 @@ int __init bcm47xx_buttons_register(void)
|
|||
int err;
|
||||
|
||||
switch (board) {
|
||||
case BCM47XX_BOARD_ASUS_RTN10U:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_rtn10u);
|
||||
break;
|
||||
case BCM47XX_BOARD_ASUS_RTN12:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_rtn12);
|
||||
break;
|
||||
|
|
@ -608,6 +640,12 @@ int __init bcm47xx_buttons_register(void)
|
|||
case BCM47XX_BOARD_LINKSYS_WRT310NV1:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt310nv1);
|
||||
break;
|
||||
case BCM47XX_BOARD_LINKSYS_WRT310NV2:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt310n_v2);
|
||||
break;
|
||||
case BCM47XX_BOARD_LINKSYS_WRT320N_V1:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt320n_v1);
|
||||
break;
|
||||
case BCM47XX_BOARD_LINKSYS_WRT54G3GV2:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54g3gv2);
|
||||
break;
|
||||
|
|
@ -674,6 +712,12 @@ int __init bcm47xx_buttons_register(void)
|
|||
case BCM47XX_BOARD_NETGEAR_R6200_V1:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_r6200_v1);
|
||||
break;
|
||||
case BCM47XX_BOARD_NETGEAR_R6300_V1:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_r6300_v1);
|
||||
break;
|
||||
case BCM47XX_BOARD_NETGEAR_WN2500RP_V1:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wn2500rp_v1);
|
||||
break;
|
||||
case BCM47XX_BOARD_NETGEAR_WNDR3400V1:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr3400v1);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -29,6 +29,14 @@
|
|||
|
||||
/* Asus */
|
||||
|
||||
static const struct gpio_led
|
||||
bcm47xx_leds_asus_rtn10u[] __initconst = {
|
||||
BCM47XX_GPIO_LED(5, "green", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF),
|
||||
BCM47XX_GPIO_LED(6, "green", "power", 1, LEDS_GPIO_DEFSTATE_ON),
|
||||
BCM47XX_GPIO_LED(7, "green", "wps", 0, LEDS_GPIO_DEFSTATE_OFF),
|
||||
BCM47XX_GPIO_LED(8, "green", "usb", 0, LEDS_GPIO_DEFSTATE_OFF),
|
||||
};
|
||||
|
||||
static const struct gpio_led
|
||||
bcm47xx_leds_asus_rtn12[] __initconst = {
|
||||
BCM47XX_GPIO_LED(2, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
|
||||
|
|
@ -313,6 +321,13 @@ bcm47xx_leds_linksys_wrt310nv1[] __initconst = {
|
|||
BCM47XX_GPIO_LED(9, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
|
||||
};
|
||||
|
||||
static const struct gpio_led
|
||||
bcm47xx_leds_linksys_wrt320n_v1[] __initconst = {
|
||||
BCM47XX_GPIO_LED(1, "blue", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
|
||||
BCM47XX_GPIO_LED(2, "blue", "power", 0, LEDS_GPIO_DEFSTATE_ON),
|
||||
BCM47XX_GPIO_LED(4, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
|
||||
};
|
||||
|
||||
static const struct gpio_led
|
||||
bcm47xx_leds_linksys_wrt54g_generic[] __initconst = {
|
||||
BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF),
|
||||
|
|
@ -556,6 +571,9 @@ void __init bcm47xx_leds_register(void)
|
|||
enum bcm47xx_board board = bcm47xx_board_get();
|
||||
|
||||
switch (board) {
|
||||
case BCM47XX_BOARD_ASUS_RTN10U:
|
||||
bcm47xx_set_pdata(bcm47xx_leds_asus_rtn10u);
|
||||
break;
|
||||
case BCM47XX_BOARD_ASUS_RTN12:
|
||||
bcm47xx_set_pdata(bcm47xx_leds_asus_rtn12);
|
||||
break;
|
||||
|
|
@ -689,6 +707,9 @@ void __init bcm47xx_leds_register(void)
|
|||
case BCM47XX_BOARD_LINKSYS_WRT310NV1:
|
||||
bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt310nv1);
|
||||
break;
|
||||
case BCM47XX_BOARD_LINKSYS_WRT320N_V1:
|
||||
bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt320n_v1);
|
||||
break;
|
||||
case BCM47XX_BOARD_LINKSYS_WRT54G3GV2:
|
||||
bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g3gv2);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -387,6 +387,12 @@ struct clk *clk_get_parent(struct clk *clk)
|
|||
}
|
||||
EXPORT_SYMBOL(clk_get_parent);
|
||||
|
||||
int clk_set_parent(struct clk *clk, struct clk *parent)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(clk_set_parent);
|
||||
|
||||
unsigned long clk_get_rate(struct clk *clk)
|
||||
{
|
||||
if (!clk)
|
||||
|
|
|
|||
|
|
@ -1,68 +1,8 @@
|
|||
/*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright (C) 2014 Kevin Cernekee <cernekee@gmail.com>
|
||||
*/
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
#define pr_fmt(fmt) "bmips-dma: " fmt
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/dma-direction.h>
|
||||
#include <linux/dma-direct.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/printk.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/types.h>
|
||||
#include <asm/bmips.h>
|
||||
|
||||
/*
|
||||
* BCM338x has configurable address translation windows which allow the
|
||||
* peripherals' DMA addresses to be different from the Zephyr-visible
|
||||
* physical addresses. e.g. usb_dma_addr = zephyr_pa ^ 0x08000000
|
||||
*
|
||||
* If the "brcm,ubus" node has a "dma-ranges" property we will enable this
|
||||
* translation globally using the provided information. This implements a
|
||||
* very limited subset of "dma-ranges" support and it will probably be
|
||||
* replaced by a more generic version later.
|
||||
*/
|
||||
|
||||
struct bmips_dma_range {
|
||||
u32 child_addr;
|
||||
u32 parent_addr;
|
||||
u32 size;
|
||||
};
|
||||
|
||||
static struct bmips_dma_range *bmips_dma_ranges;
|
||||
|
||||
#define FLUSH_RAC 0x100
|
||||
|
||||
dma_addr_t phys_to_dma(struct device *dev, phys_addr_t pa)
|
||||
{
|
||||
struct bmips_dma_range *r;
|
||||
|
||||
for (r = bmips_dma_ranges; r && r->size; r++) {
|
||||
if (pa >= r->child_addr &&
|
||||
pa < (r->child_addr + r->size))
|
||||
return pa - r->child_addr + r->parent_addr;
|
||||
}
|
||||
return pa;
|
||||
}
|
||||
|
||||
phys_addr_t dma_to_phys(struct device *dev, dma_addr_t dma_addr)
|
||||
{
|
||||
struct bmips_dma_range *r;
|
||||
|
||||
for (r = bmips_dma_ranges; r && r->size; r++) {
|
||||
if (dma_addr >= r->parent_addr &&
|
||||
dma_addr < (r->parent_addr + r->size))
|
||||
return dma_addr - r->parent_addr + r->child_addr;
|
||||
}
|
||||
return dma_addr;
|
||||
}
|
||||
#include <asm/io.h>
|
||||
|
||||
void arch_sync_dma_for_cpu_all(void)
|
||||
{
|
||||
|
|
@ -79,45 +19,3 @@ void arch_sync_dma_for_cpu_all(void)
|
|||
__raw_writel(cfg | 0x100, cbr + BMIPS_RAC_CONFIG);
|
||||
__raw_readl(cbr + BMIPS_RAC_CONFIG);
|
||||
}
|
||||
|
||||
static int __init bmips_init_dma_ranges(void)
|
||||
{
|
||||
struct device_node *np =
|
||||
of_find_compatible_node(NULL, NULL, "brcm,ubus");
|
||||
const __be32 *data;
|
||||
struct bmips_dma_range *r;
|
||||
int len;
|
||||
|
||||
if (!np)
|
||||
return 0;
|
||||
|
||||
data = of_get_property(np, "dma-ranges", &len);
|
||||
if (!data)
|
||||
goto out_good;
|
||||
|
||||
len /= sizeof(*data) * 3;
|
||||
if (!len)
|
||||
goto out_bad;
|
||||
|
||||
/* add a dummy (zero) entry at the end as a sentinel */
|
||||
bmips_dma_ranges = kcalloc(len + 1, sizeof(struct bmips_dma_range),
|
||||
GFP_KERNEL);
|
||||
if (!bmips_dma_ranges)
|
||||
goto out_bad;
|
||||
|
||||
for (r = bmips_dma_ranges; len; len--, r++) {
|
||||
r->child_addr = be32_to_cpup(data++);
|
||||
r->parent_addr = be32_to_cpup(data++);
|
||||
r->size = be32_to_cpup(data++);
|
||||
}
|
||||
|
||||
out_good:
|
||||
of_node_put(np);
|
||||
return 0;
|
||||
|
||||
out_bad:
|
||||
pr_err("error parsing dma-ranges property\n");
|
||||
of_node_put(np);
|
||||
return -EINVAL;
|
||||
}
|
||||
arch_initcall(bmips_init_dma_ranges);
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ endif
|
|||
|
||||
vmlinuzobjs-$(CONFIG_KERNEL_XZ) += $(obj)/ashldi3.o
|
||||
|
||||
vmlinuzobjs-$(CONFIG_KERNEL_ZSTD) += $(obj)/bswapdi.o $(obj)/ashldi3.o
|
||||
vmlinuzobjs-$(CONFIG_KERNEL_ZSTD) += $(obj)/bswapdi.o $(obj)/ashldi3.o $(obj)/clz_ctz.o
|
||||
|
||||
targets := $(notdir $(vmlinuzobjs-y))
|
||||
|
||||
|
|
@ -89,6 +89,10 @@ HOSTCFLAGS_calc_vmlinuz_load_addr.o += $(LINUXINCLUDE)
|
|||
# Calculate the load address of the compressed kernel image
|
||||
hostprogs := calc_vmlinuz_load_addr
|
||||
|
||||
ifneq (0x0,$(CONFIG_ZBOOT_LOAD_ADDRESS))
|
||||
zload-y = $(CONFIG_ZBOOT_LOAD_ADDRESS)
|
||||
endif
|
||||
|
||||
ifneq ($(zload-y),)
|
||||
VMLINUZ_LOAD_ADDRESS := $(zload-y)
|
||||
else
|
||||
|
|
|
|||
2
arch/mips/boot/compressed/clz_ctz.c
Normal file
2
arch/mips/boot/compressed/clz_ctz.c
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
#include "../../../../lib/clz_ctz.c"
|
||||
|
|
@ -584,4 +584,34 @@ shimphy@8000 {
|
|||
};
|
||||
};
|
||||
};
|
||||
|
||||
pcie_0: pcie@8b20000 {
|
||||
status = "disabled";
|
||||
compatible = "brcm,bcm7425-pcie";
|
||||
|
||||
ranges = <0x02000000 0x0 0xd0000000 0xd0000000 0x0 0x08000000
|
||||
0x02000000 0x0 0xd8000000 0xd8000000 0x0 0x08000000
|
||||
0x02000000 0x0 0xe0000000 0xe0000000 0x0 0x08000000
|
||||
0x02000000 0x0 0xe8000000 0xe8000000 0x0 0x08000000>;
|
||||
|
||||
reg = <0x10410000 0x19310>;
|
||||
aspm-no-l0s;
|
||||
device_type = "pci";
|
||||
msi-controller;
|
||||
msi-parent = <&pcie_0>;
|
||||
#address-cells = <0x3>;
|
||||
#size-cells = <0x2>;
|
||||
bus-range = <0x0 0xff>;
|
||||
interrupt-map-mask = <0x0 0x0 0x0 0x7>;
|
||||
linux,pci-domain = <0x0>;
|
||||
|
||||
interrupt-parent = <&periph_intc>;
|
||||
interrupts = <37>, <37>;
|
||||
interrupt-names = "pcie", "msi";
|
||||
#interrupt-cells = <0x1>;
|
||||
interrupt-map = <0 0 0 1 &periph_intc 0x21
|
||||
0 0 0 1 &periph_intc 0x22
|
||||
0 0 0 1 &periph_intc 0x23
|
||||
0 0 0 1 &periph_intc 0x24>;
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -599,4 +599,34 @@ shimphy@8000 {
|
|||
};
|
||||
};
|
||||
};
|
||||
|
||||
pcie_0: pcie@8b20000 {
|
||||
status = "disabled";
|
||||
compatible = "brcm,bcm7435-pcie";
|
||||
|
||||
ranges = <0x02000000 0x0 0xd0000000 0xd0000000 0x0 0x08000000
|
||||
0x02000000 0x0 0xd8000000 0xd8000000 0x0 0x08000000
|
||||
0x02000000 0x0 0xe0000000 0xe0000000 0x0 0x08000000
|
||||
0x02000000 0x0 0xe8000000 0xe8000000 0x0 0x08000000>;
|
||||
|
||||
reg = <0x10410000 0x19310>;
|
||||
aspm-no-l0s;
|
||||
device_type = "pci";
|
||||
msi-controller;
|
||||
msi-parent = <&pcie_0>;
|
||||
#address-cells = <0x3>;
|
||||
#size-cells = <0x2>;
|
||||
bus-range = <0x0 0xff>;
|
||||
interrupt-map-mask = <0x0 0x0 0x0 0x7>;
|
||||
linux,pci-domain = <0x0>;
|
||||
|
||||
interrupt-parent = <&periph_intc>;
|
||||
interrupts = <39>, <39>;
|
||||
interrupt-names = "pcie", "msi";
|
||||
#interrupt-cells = <0x1>;
|
||||
interrupt-map = <0 0 0 1 &periph_intc 0x23
|
||||
0 0 0 1 &periph_intc 0x24
|
||||
0 0 0 1 &periph_intc 0x25
|
||||
0 0 0 1 &periph_intc 0x26>;
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -152,3 +152,12 @@ &mspi {
|
|||
&waketimer {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie_0 {
|
||||
status = "okay";
|
||||
/* 1GB Memc0, 1GB Memc1 */
|
||||
brcm,scb-sizes = <0 0x40000000 0 0x40000000>;
|
||||
dma-ranges = <0x43000000 0x00000000 0x00000000 0x00000000 0x0 0x10000000
|
||||
0x43000000 0x00000000 0x10000000 0x20000000 0x0 0x30000000
|
||||
0x43000000 0x00000000 0x40000000 0x90000000 0x0 0x40000000>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -128,3 +128,12 @@ &mspi {
|
|||
&waketimer {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie_0 {
|
||||
status = "okay";
|
||||
/* 1GB Memc0, 1GB Memc1 */
|
||||
brcm,scb-sizes = <0 0x40000000 0 0x40000000>;
|
||||
dma-ranges = <0x43000000 0x00000000 0x00000000 0x00000000 0x0 0x10000000
|
||||
0x43000000 0x00000000 0x10000000 0x20000000 0x0 0x30000000
|
||||
0x43000000 0x00000000 0x40000000 0x90000000 0x0 0x40000000>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@ eth0_power: fixedregulator@0 {
|
|||
enable-active-high;
|
||||
};
|
||||
|
||||
hdmi_out: connector {
|
||||
compatible = "hdmi-connector";
|
||||
label = "HDMI OUT";
|
||||
type = "a";
|
||||
|
||||
port {
|
||||
hdmi_con: endpoint {
|
||||
remote-endpoint = <&dw_hdmi_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ir: ir {
|
||||
compatible = "gpio-ir-receiver";
|
||||
gpios = <&gpe 3 GPIO_ACTIVE_LOW>;
|
||||
|
|
@ -102,6 +114,17 @@ otg_power: fixedregulator@2 {
|
|||
gpio = <&gpf 14 GPIO_ACTIVE_LOW>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
hdmi_power: fixedregulator@3 {
|
||||
compatible = "regulator-fixed";
|
||||
|
||||
regulator-name = "hdmi_power";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
|
||||
gpio = <&gpa 25 0>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
||||
|
||||
&ext {
|
||||
|
|
@ -114,11 +137,12 @@ &cgu {
|
|||
* precision.
|
||||
*/
|
||||
assigned-clocks = <&cgu JZ4780_CLK_OTGPHY>, <&cgu JZ4780_CLK_RTC>,
|
||||
<&cgu JZ4780_CLK_SSIPLL>, <&cgu JZ4780_CLK_SSI>;
|
||||
<&cgu JZ4780_CLK_SSIPLL>, <&cgu JZ4780_CLK_SSI>,
|
||||
<&cgu JZ4780_CLK_HDMI>;
|
||||
assigned-clock-parents = <0>, <&cgu JZ4780_CLK_RTCLK>,
|
||||
<&cgu JZ4780_CLK_MPLL>,
|
||||
<&cgu JZ4780_CLK_SSIPLL>;
|
||||
assigned-clock-rates = <48000000>, <0>, <54000000>;
|
||||
assigned-clock-rates = <48000000>, <0>, <54000000>, <0>, <27000000>;
|
||||
};
|
||||
|
||||
&tcu {
|
||||
|
|
@ -509,6 +533,12 @@ pins_i2c4: i2c4 {
|
|||
bias-disable;
|
||||
};
|
||||
|
||||
pins_hdmi_ddc: hdmi_ddc {
|
||||
function = "hdmi-ddc";
|
||||
groups = "hdmi-ddc";
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pins_nemc: nemc {
|
||||
function = "nemc";
|
||||
groups = "nemc-data", "nemc-cle-ale", "nemc-rd-we", "nemc-frd-fwe";
|
||||
|
|
@ -539,3 +569,41 @@ pins_mmc1: mmc1 {
|
|||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
status = "okay";
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pins_hdmi_ddc>;
|
||||
|
||||
hdmi-5v-supply = <&hdmi_power>;
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
dw_hdmi_in: endpoint {
|
||||
remote-endpoint = <&lcd_out>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
dw_hdmi_out: endpoint {
|
||||
remote-endpoint = <&hdmi_con>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&lcdc0 {
|
||||
status = "okay";
|
||||
|
||||
port {
|
||||
lcd_out: endpoint {
|
||||
remote-endpoint = <&dw_hdmi_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -321,7 +321,7 @@ udc: usb@13040000 {
|
|||
|
||||
lcd: lcd-controller@13050000 {
|
||||
compatible = "ingenic,jz4725b-lcd";
|
||||
reg = <0x13050000 0x1000>;
|
||||
reg = <0x13050000 0x130>; /* tbc */
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <31>;
|
||||
|
|
|
|||
|
|
@ -323,7 +323,7 @@ udc: usb@13040000 {
|
|||
|
||||
lcd: lcd-controller@13050000 {
|
||||
compatible = "ingenic,jz4740-lcd";
|
||||
reg = <0x13050000 0x1000>;
|
||||
reg = <0x13050000 0x60>; /* LCDCMD1+4 */
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <30>;
|
||||
|
|
|
|||
|
|
@ -399,7 +399,7 @@ gpu: gpu@13040000 {
|
|||
|
||||
lcd: lcd-controller@13050000 {
|
||||
compatible = "ingenic,jz4770-lcd";
|
||||
reg = <0x13050000 0x300>;
|
||||
reg = <0x13050000 0x130>; /* tbc */
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <31>;
|
||||
|
|
|
|||
|
|
@ -444,6 +444,46 @@ i2c4: i2c@10054000 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
hdmi: hdmi@10180000 {
|
||||
compatible = "ingenic,jz4780-dw-hdmi";
|
||||
reg = <0x10180000 0x8000>;
|
||||
reg-io-width = <4>;
|
||||
|
||||
clocks = <&cgu JZ4780_CLK_AHB0>, <&cgu JZ4780_CLK_HDMI>;
|
||||
clock-names = "iahb", "isfr";
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <3>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lcdc0: lcdc0@13050000 {
|
||||
compatible = "ingenic,jz4780-lcd";
|
||||
reg = <0x13050000 0x1800>;
|
||||
|
||||
clocks = <&cgu JZ4780_CLK_TVE>, <&cgu JZ4780_CLK_LCD0PIXCLK>;
|
||||
clock-names = "lcd", "lcd_pclk";
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <31>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lcdc1: lcdc1@130a0000 {
|
||||
compatible = "ingenic,jz4780-lcd";
|
||||
reg = <0x130a0000 0x1800>;
|
||||
|
||||
clocks = <&cgu JZ4780_CLK_TVE>, <&cgu JZ4780_CLK_LCD1PIXCLK>;
|
||||
clock-names = "lcd", "lcd_pclk";
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <23>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
nemc: nemc@13410000 {
|
||||
compatible = "ingenic,jz4780-nemc", "simple-mfd";
|
||||
reg = <0x13410000 0x10000>;
|
||||
|
|
|
|||
|
|
@ -52,6 +52,11 @@ package0: bus@10000000 {
|
|||
0 0x40000000 0 0x40000000 0 0x40000000
|
||||
0xfe 0x00000000 0xfe 0x00000000 0 0x40000000>;
|
||||
|
||||
pm: reset-controller@1fe07000 {
|
||||
compatible = "loongson,ls2k-pm";
|
||||
reg = <0 0x1fe07000 0 0x422>;
|
||||
};
|
||||
|
||||
liointc0: interrupt-controller@1fe11400 {
|
||||
compatible = "loongson,liointc-2.0";
|
||||
reg = <0 0x1fe11400 0 0x40>,
|
||||
|
|
|
|||
|
|
@ -328,6 +328,7 @@ static int __init octeon_ehci_device_init(void)
|
|||
|
||||
pd->dev.platform_data = &octeon_ehci_pdata;
|
||||
octeon_ehci_hw_start(&pd->dev);
|
||||
put_device(&pd->dev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -391,6 +392,7 @@ static int __init octeon_ohci_device_init(void)
|
|||
|
||||
pd->dev.platform_data = &octeon_ohci_pdata;
|
||||
octeon_ohci_hw_start(&pd->dev);
|
||||
put_device(&pd->dev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -537,6 +537,7 @@ static int __init dwc3_octeon_device_init(void)
|
|||
devm_iounmap(&pdev->dev, base);
|
||||
devm_release_mem_region(&pdev->dev, res->start,
|
||||
resource_size(res));
|
||||
put_device(&pdev->dev);
|
||||
}
|
||||
} while (node != NULL);
|
||||
|
||||
|
|
|
|||
|
|
@ -98,7 +98,13 @@ CONFIG_RC_DEVICES=y
|
|||
CONFIG_IR_GPIO_CIR=m
|
||||
CONFIG_IR_GPIO_TX=m
|
||||
CONFIG_MEDIA_SUPPORT=m
|
||||
CONFIG_DRM=m
|
||||
CONFIG_DRM_INGENIC=m
|
||||
CONFIG_DRM_INGENIC_DW_HDMI=m
|
||||
CONFIG_DRM_DISPLAY_CONNECTOR=m
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_FB=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
# CONFIG_HID is not set
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
|
|
|
|||
|
|
@ -10,9 +10,6 @@ CONFIG_EXPERT=y
|
|||
CONFIG_SLAB=y
|
||||
CONFIG_MACH_TX49XX=y
|
||||
CONFIG_TOSHIBA_RBTX4927=y
|
||||
CONFIG_TOSHIBA_RBTX4938=y
|
||||
CONFIG_TOSHIBA_RBTX4939=y
|
||||
CONFIG_TOSHIBA_RBTX4938_MPLEX_KEEP=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_PCI=y
|
||||
CONFIG_MODULES=y
|
||||
|
|
@ -38,7 +35,6 @@ CONFIG_MTD_JEDECPROBE=y
|
|||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_RBTX4939=y
|
||||
CONFIG_MTD_RAW_NAND=m
|
||||
CONFIG_MTD_NAND_TXX9NDFMC=m
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ void __init prom_init(void)
|
|||
if ((current_cpu_type() == CPU_R4000SC) ||
|
||||
(current_cpu_type() == CPU_R4400SC)) {
|
||||
static const char r4k_msg[] __initconst =
|
||||
"Please recompile with \"CONFIG_CPU_R4x00 = y\".\n";
|
||||
"Please recompile with \"CONFIG_CPU_R4X00 = y\".\n";
|
||||
printk(cpu_msg);
|
||||
printk(r4k_msg);
|
||||
dec_machine_halt();
|
||||
|
|
|
|||
|
|
@ -13,8 +13,7 @@ cflags-$(CONFIG_MACH_INGENIC_SOC) += -I$(srctree)/arch/mips/include/asm/mach-ing
|
|||
cflags-$(CONFIG_MIPS_GENERIC) += -I$(srctree)/arch/mips/include/asm/mach-generic
|
||||
|
||||
load-$(CONFIG_MIPS_GENERIC) += 0xffffffff80100000
|
||||
zload-$(CONFIG_MIPS_GENERIC) += 0xffffffff81000000
|
||||
all-$(CONFIG_MIPS_GENERIC) := vmlinux.gz.itb
|
||||
all-$(CONFIG_MIPS_GENERIC) += vmlinux.gz.itb
|
||||
|
||||
its-y := vmlinux.its.S
|
||||
its-$(CONFIG_FIT_IMAGE_FDT_BOSTON) += board-boston.its.S
|
||||
|
|
|
|||
|
|
@ -110,14 +110,15 @@ void __init plat_mem_setup(void)
|
|||
|
||||
void __init device_tree_init(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
unflatten_and_copy_device_tree();
|
||||
mips_cpc_probe();
|
||||
|
||||
err = register_cps_smp_ops();
|
||||
if (err)
|
||||
err = register_up_smp_ops();
|
||||
if (!register_cps_smp_ops())
|
||||
return;
|
||||
if (!register_vsmp_smp_ops())
|
||||
return;
|
||||
|
||||
register_up_smp_ops();
|
||||
}
|
||||
|
||||
int __init apply_mips_fdt_fixups(void *fdt_out, size_t fdt_out_size,
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include <asm/sgidefs.h>
|
||||
#include <asm/asm-eva.h>
|
||||
#include <asm/isa-rev.h>
|
||||
|
||||
#ifndef __VDSO__
|
||||
/*
|
||||
|
|
@ -211,6 +212,8 @@ symbol = value
|
|||
#define LONG_SUB sub
|
||||
#define LONG_SUBU subu
|
||||
#define LONG_L lw
|
||||
#define LONG_LL ll
|
||||
#define LONG_SC sc
|
||||
#define LONG_S sw
|
||||
#define LONG_SP swp
|
||||
#define LONG_SLL sll
|
||||
|
|
@ -219,6 +222,8 @@ symbol = value
|
|||
#define LONG_SRLV srlv
|
||||
#define LONG_SRA sra
|
||||
#define LONG_SRAV srav
|
||||
#define LONG_INS ins
|
||||
#define LONG_EXT ext
|
||||
|
||||
#ifdef __ASSEMBLY__
|
||||
#define LONG .word
|
||||
|
|
@ -236,6 +241,8 @@ symbol = value
|
|||
#define LONG_SUB dsub
|
||||
#define LONG_SUBU dsubu
|
||||
#define LONG_L ld
|
||||
#define LONG_LL lld
|
||||
#define LONG_SC scd
|
||||
#define LONG_S sd
|
||||
#define LONG_SP sdp
|
||||
#define LONG_SLL dsll
|
||||
|
|
@ -244,6 +251,8 @@ symbol = value
|
|||
#define LONG_SRLV dsrlv
|
||||
#define LONG_SRA dsra
|
||||
#define LONG_SRAV dsrav
|
||||
#define LONG_INS dins
|
||||
#define LONG_EXT dext
|
||||
|
||||
#ifdef __ASSEMBLY__
|
||||
#define LONG .dword
|
||||
|
|
@ -320,6 +329,19 @@ symbol = value
|
|||
|
||||
#define SSNOP sll zero, zero, 1
|
||||
|
||||
/*
|
||||
* Using a branch-likely instruction to check the result of an sc instruction
|
||||
* works around a bug present in R10000 CPUs prior to revision 3.0 that could
|
||||
* cause ll-sc sequences to execute non-atomically.
|
||||
*/
|
||||
#ifdef CONFIG_WAR_R10000_LLSC
|
||||
# define SC_BEQZ beqzl
|
||||
#elif MIPS_ISA_REV >= 6
|
||||
# define SC_BEQZ beqzc
|
||||
#else
|
||||
# define SC_BEQZ beqz
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SGI_IP28
|
||||
/* Inhibit speculative stores to volatile (e.g.DMA) or invalid addresses. */
|
||||
#include <asm/cacheops.h>
|
||||
|
|
|
|||
|
|
@ -16,13 +16,12 @@
|
|||
|
||||
#include <linux/irqflags.h>
|
||||
#include <linux/types.h>
|
||||
#include <asm/asm.h>
|
||||
#include <asm/barrier.h>
|
||||
#include <asm/compiler.h>
|
||||
#include <asm/cpu-features.h>
|
||||
#include <asm/cmpxchg.h>
|
||||
#include <asm/llsc.h>
|
||||
#include <asm/sync.h>
|
||||
#include <asm/war.h>
|
||||
|
||||
#define ATOMIC_OPS(pfx, type) \
|
||||
static __always_inline type arch_##pfx##_read(const pfx##_t *v) \
|
||||
|
|
@ -74,7 +73,7 @@ static __inline__ void arch_##pfx##_##op(type i, pfx##_t * v) \
|
|||
"1: " #ll " %0, %1 # " #pfx "_" #op " \n" \
|
||||
" " #asm_op " %0, %2 \n" \
|
||||
" " #sc " %0, %1 \n" \
|
||||
"\t" __SC_BEQZ "%0, 1b \n" \
|
||||
"\t" __stringify(SC_BEQZ) " %0, 1b \n" \
|
||||
" .set pop \n" \
|
||||
: "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (v->counter) \
|
||||
: "Ir" (i) : __LLSC_CLOBBER); \
|
||||
|
|
@ -104,7 +103,7 @@ arch_##pfx##_##op##_return_relaxed(type i, pfx##_t * v) \
|
|||
"1: " #ll " %1, %2 # " #pfx "_" #op "_return\n" \
|
||||
" " #asm_op " %0, %1, %3 \n" \
|
||||
" " #sc " %0, %2 \n" \
|
||||
"\t" __SC_BEQZ "%0, 1b \n" \
|
||||
"\t" __stringify(SC_BEQZ) " %0, 1b \n" \
|
||||
" " #asm_op " %0, %1, %3 \n" \
|
||||
" .set pop \n" \
|
||||
: "=&r" (result), "=&r" (temp), \
|
||||
|
|
@ -137,7 +136,7 @@ arch_##pfx##_fetch_##op##_relaxed(type i, pfx##_t * v) \
|
|||
"1: " #ll " %1, %2 # " #pfx "_fetch_" #op "\n" \
|
||||
" " #asm_op " %0, %1, %3 \n" \
|
||||
" " #sc " %0, %2 \n" \
|
||||
"\t" __SC_BEQZ "%0, 1b \n" \
|
||||
"\t" __stringify(SC_BEQZ) " %0, 1b \n" \
|
||||
" .set pop \n" \
|
||||
" move %0, %1 \n" \
|
||||
: "=&r" (result), "=&r" (temp), \
|
||||
|
|
@ -237,7 +236,7 @@ static __inline__ type arch_##pfx##_sub_if_positive(type i, pfx##_t * v) \
|
|||
" .set push \n" \
|
||||
" .set " MIPS_ISA_LEVEL " \n" \
|
||||
" " #sc " %1, %2 \n" \
|
||||
" " __SC_BEQZ "%1, 1b \n" \
|
||||
" " __stringify(SC_BEQZ) " %1, 1b \n" \
|
||||
"2: " __SYNC(full, loongson3_war) " \n" \
|
||||
" .set pop \n" \
|
||||
: "=&r" (result), "=&r" (temp), \
|
||||
|
|
|
|||
|
|
@ -16,14 +16,12 @@
|
|||
#include <linux/bits.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/types.h>
|
||||
#include <asm/asm.h>
|
||||
#include <asm/barrier.h>
|
||||
#include <asm/byteorder.h> /* sigh ... */
|
||||
#include <asm/compiler.h>
|
||||
#include <asm/cpu-features.h>
|
||||
#include <asm/isa-rev.h>
|
||||
#include <asm/llsc.h>
|
||||
#include <asm/sgidefs.h>
|
||||
#include <asm/war.h>
|
||||
|
||||
#define __bit_op(mem, insn, inputs...) do { \
|
||||
unsigned long __temp; \
|
||||
|
|
@ -32,10 +30,10 @@
|
|||
" .set push \n" \
|
||||
" .set " MIPS_ISA_LEVEL " \n" \
|
||||
" " __SYNC(full, loongson3_war) " \n" \
|
||||
"1: " __LL "%0, %1 \n" \
|
||||
"1: " __stringify(LONG_LL) " %0, %1 \n" \
|
||||
" " insn " \n" \
|
||||
" " __SC "%0, %1 \n" \
|
||||
" " __SC_BEQZ "%0, 1b \n" \
|
||||
" " __stringify(LONG_SC) " %0, %1 \n" \
|
||||
" " __stringify(SC_BEQZ) " %0, 1b \n" \
|
||||
" .set pop \n" \
|
||||
: "=&r"(__temp), "+" GCC_OFF_SMALL_ASM()(mem) \
|
||||
: inputs \
|
||||
|
|
@ -49,10 +47,10 @@
|
|||
" .set push \n" \
|
||||
" .set " MIPS_ISA_LEVEL " \n" \
|
||||
" " __SYNC(full, loongson3_war) " \n" \
|
||||
"1: " __LL ll_dst ", %2 \n" \
|
||||
"1: " __stringify(LONG_LL) " " ll_dst ", %2\n" \
|
||||
" " insn " \n" \
|
||||
" " __SC "%1, %2 \n" \
|
||||
" " __SC_BEQZ "%1, 1b \n" \
|
||||
" " __stringify(LONG_SC) " %1, %2 \n" \
|
||||
" " __stringify(SC_BEQZ) " %1, 1b \n" \
|
||||
" .set pop \n" \
|
||||
: "=&r"(__orig), "=&r"(__temp), \
|
||||
"+" GCC_OFF_SMALL_ASM()(mem) \
|
||||
|
|
@ -98,7 +96,7 @@ static inline void set_bit(unsigned long nr, volatile unsigned long *addr)
|
|||
}
|
||||
|
||||
if ((MIPS_ISA_REV >= 2) && __builtin_constant_p(bit) && (bit >= 16)) {
|
||||
__bit_op(*m, __INS "%0, %3, %2, 1", "i"(bit), "r"(~0));
|
||||
__bit_op(*m, __stringify(LONG_INS) " %0, %3, %2, 1", "i"(bit), "r"(~0));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -126,7 +124,7 @@ static inline void clear_bit(unsigned long nr, volatile unsigned long *addr)
|
|||
}
|
||||
|
||||
if ((MIPS_ISA_REV >= 2) && __builtin_constant_p(bit)) {
|
||||
__bit_op(*m, __INS "%0, $0, %2, 1", "i"(bit));
|
||||
__bit_op(*m, __stringify(LONG_INS) " %0, $0, %2, 1", "i"(bit));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -234,8 +232,8 @@ static inline int test_and_clear_bit(unsigned long nr,
|
|||
res = __mips_test_and_clear_bit(nr, addr);
|
||||
} else if ((MIPS_ISA_REV >= 2) && __builtin_constant_p(nr)) {
|
||||
res = __test_bit_op(*m, "%1",
|
||||
__EXT "%0, %1, %3, 1;"
|
||||
__INS "%1, $0, %3, 1",
|
||||
__stringify(LONG_EXT) " %0, %1, %3, 1;"
|
||||
__stringify(LONG_INS) " %1, $0, %3, 1",
|
||||
"i"(bit));
|
||||
} else {
|
||||
orig = __test_bit_op(*m, "%0",
|
||||
|
|
|
|||
|
|
@ -10,10 +10,9 @@
|
|||
|
||||
#include <linux/bug.h>
|
||||
#include <linux/irqflags.h>
|
||||
#include <asm/asm.h>
|
||||
#include <asm/compiler.h>
|
||||
#include <asm/llsc.h>
|
||||
#include <asm/sync.h>
|
||||
#include <asm/war.h>
|
||||
|
||||
/*
|
||||
* These functions doesn't exist, so if they are called you'll either:
|
||||
|
|
@ -48,7 +47,7 @@ extern unsigned long __xchg_called_with_bad_pointer(void)
|
|||
" move $1, %z3 \n" \
|
||||
" .set " MIPS_ISA_ARCH_LEVEL " \n" \
|
||||
" " st " $1, %1 \n" \
|
||||
"\t" __SC_BEQZ "$1, 1b \n" \
|
||||
"\t" __stringify(SC_BEQZ) " $1, 1b \n" \
|
||||
" .set pop \n" \
|
||||
: "=&r" (__ret), "=" GCC_OFF_SMALL_ASM() (*m) \
|
||||
: GCC_OFF_SMALL_ASM() (*m), "Jr" (val) \
|
||||
|
|
@ -127,7 +126,7 @@ unsigned long __xchg(volatile void *ptr, unsigned long x, int size)
|
|||
" move $1, %z4 \n" \
|
||||
" .set "MIPS_ISA_ARCH_LEVEL" \n" \
|
||||
" " st " $1, %1 \n" \
|
||||
"\t" __SC_BEQZ "$1, 1b \n" \
|
||||
"\t" __stringify(SC_BEQZ) " $1, 1b \n" \
|
||||
" .set pop \n" \
|
||||
"2: " __SYNC(full, loongson3_war) " \n" \
|
||||
: "=&r" (__ret), "=" GCC_OFF_SMALL_ASM() (*m) \
|
||||
|
|
@ -282,7 +281,7 @@ static inline unsigned long __cmpxchg64(volatile void *ptr,
|
|||
/* Attempt to store new at ptr */
|
||||
" scd %L1, %2 \n"
|
||||
/* If we failed, loop! */
|
||||
"\t" __SC_BEQZ "%L1, 1b \n"
|
||||
"\t" __stringify(SC_BEQZ) " %L1, 1b \n"
|
||||
"2: " __SYNC(full, loongson3_war) " \n"
|
||||
" .set pop \n"
|
||||
: "=&r"(ret),
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
#ifdef CONFIG_32BIT
|
||||
#define KGDB_GDB_REG_SIZE 32
|
||||
#define GDB_SIZEOF_REG sizeof(u32)
|
||||
#else /* CONFIG_CPU_32BIT */
|
||||
#else /* CONFIG_32BIT */
|
||||
#define KGDB_GDB_REG_SIZE 64
|
||||
#define GDB_SIZEOF_REG sizeof(u64)
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
#include <linux/threads.h>
|
||||
#include <linux/spinlock.h>
|
||||
|
||||
#include <asm/asm.h>
|
||||
#include <asm/inst.h>
|
||||
#include <asm/mipsregs.h>
|
||||
|
||||
|
|
@ -379,9 +380,9 @@ static inline void _kvm_atomic_set_c0_guest_reg(unsigned long *reg,
|
|||
__asm__ __volatile__(
|
||||
" .set push \n"
|
||||
" .set "MIPS_ISA_ARCH_LEVEL" \n"
|
||||
" " __LL "%0, %1 \n"
|
||||
" "__stringify(LONG_LL) " %0, %1 \n"
|
||||
" or %0, %2 \n"
|
||||
" " __SC "%0, %1 \n"
|
||||
" "__stringify(LONG_SC) " %0, %1 \n"
|
||||
" .set pop \n"
|
||||
: "=&r" (temp), "+m" (*reg)
|
||||
: "r" (val));
|
||||
|
|
@ -396,9 +397,9 @@ static inline void _kvm_atomic_clear_c0_guest_reg(unsigned long *reg,
|
|||
__asm__ __volatile__(
|
||||
" .set push \n"
|
||||
" .set "MIPS_ISA_ARCH_LEVEL" \n"
|
||||
" " __LL "%0, %1 \n"
|
||||
" "__stringify(LONG_LL) " %0, %1 \n"
|
||||
" and %0, %2 \n"
|
||||
" " __SC "%0, %1 \n"
|
||||
" "__stringify(LONG_SC) " %0, %1 \n"
|
||||
" .set pop \n"
|
||||
: "=&r" (temp), "+m" (*reg)
|
||||
: "r" (~val));
|
||||
|
|
@ -414,10 +415,10 @@ static inline void _kvm_atomic_change_c0_guest_reg(unsigned long *reg,
|
|||
__asm__ __volatile__(
|
||||
" .set push \n"
|
||||
" .set "MIPS_ISA_ARCH_LEVEL" \n"
|
||||
" " __LL "%0, %1 \n"
|
||||
" "__stringify(LONG_LL) " %0, %1 \n"
|
||||
" and %0, %2 \n"
|
||||
" or %0, %3 \n"
|
||||
" " __SC "%0, %1 \n"
|
||||
" "__stringify(LONG_SC) " %0, %1 \n"
|
||||
" .set pop \n"
|
||||
: "=&r" (temp), "+m" (*reg)
|
||||
: "r" (~change), "r" (val & change));
|
||||
|
|
|
|||
|
|
@ -1,39 +0,0 @@
|
|||
/*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Macros for 32/64-bit neutral inline assembler
|
||||
*/
|
||||
|
||||
#ifndef __ASM_LLSC_H
|
||||
#define __ASM_LLSC_H
|
||||
|
||||
#include <asm/isa-rev.h>
|
||||
|
||||
#if _MIPS_SZLONG == 32
|
||||
#define __LL "ll "
|
||||
#define __SC "sc "
|
||||
#define __INS "ins "
|
||||
#define __EXT "ext "
|
||||
#elif _MIPS_SZLONG == 64
|
||||
#define __LL "lld "
|
||||
#define __SC "scd "
|
||||
#define __INS "dins "
|
||||
#define __EXT "dext "
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Using a branch-likely instruction to check the result of an sc instruction
|
||||
* works around a bug present in R10000 CPUs prior to revision 3.0 that could
|
||||
* cause ll-sc sequences to execute non-atomically.
|
||||
*/
|
||||
#ifdef CONFIG_WAR_R10000_LLSC
|
||||
# define __SC_BEQZ "beqzl "
|
||||
#elif MIPS_ISA_REV >= 6
|
||||
# define __SC_BEQZ "beqzc "
|
||||
#else
|
||||
# define __SC_BEQZ "beqz "
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_LLSC_H */
|
||||
|
|
@ -5,9 +5,9 @@
|
|||
#include <linux/percpu.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/atomic.h>
|
||||
#include <asm/asm.h>
|
||||
#include <asm/cmpxchg.h>
|
||||
#include <asm/compiler.h>
|
||||
#include <asm/war.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
|
@ -31,34 +31,18 @@ static __inline__ long local_add_return(long i, local_t * l)
|
|||
{
|
||||
unsigned long result;
|
||||
|
||||
if (kernel_uses_llsc && IS_ENABLED(CONFIG_WAR_R10000_LLSC)) {
|
||||
unsigned long temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set push \n"
|
||||
" .set arch=r4000 \n"
|
||||
__SYNC(full, loongson3_war) " \n"
|
||||
"1:" __LL "%1, %2 # local_add_return \n"
|
||||
" addu %0, %1, %3 \n"
|
||||
__SC "%0, %2 \n"
|
||||
" beqzl %0, 1b \n"
|
||||
" addu %0, %1, %3 \n"
|
||||
" .set pop \n"
|
||||
: "=&r" (result), "=&r" (temp), "=m" (l->a.counter)
|
||||
: "Ir" (i), "m" (l->a.counter)
|
||||
: "memory");
|
||||
} else if (kernel_uses_llsc) {
|
||||
if (kernel_uses_llsc) {
|
||||
unsigned long temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set push \n"
|
||||
" .set "MIPS_ISA_ARCH_LEVEL" \n"
|
||||
__SYNC(full, loongson3_war) " \n"
|
||||
"1:" __LL "%1, %2 # local_add_return \n"
|
||||
" addu %0, %1, %3 \n"
|
||||
__SC "%0, %2 \n"
|
||||
" beqz %0, 1b \n"
|
||||
" addu %0, %1, %3 \n"
|
||||
__SYNC(full, loongson3_war) " \n"
|
||||
"1:" __stringify(LONG_LL) " %1, %2 \n"
|
||||
__stringify(LONG_ADDU) " %0, %1, %3 \n"
|
||||
__stringify(LONG_SC) " %0, %2 \n"
|
||||
__stringify(SC_BEQZ) " %0, 1b \n"
|
||||
__stringify(LONG_ADDU) " %0, %1, %3 \n"
|
||||
" .set pop \n"
|
||||
: "=&r" (result), "=&r" (temp), "=m" (l->a.counter)
|
||||
: "Ir" (i), "m" (l->a.counter)
|
||||
|
|
@ -80,34 +64,19 @@ static __inline__ long local_sub_return(long i, local_t * l)
|
|||
{
|
||||
unsigned long result;
|
||||
|
||||
if (kernel_uses_llsc && IS_ENABLED(CONFIG_WAR_R10000_LLSC)) {
|
||||
unsigned long temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set push \n"
|
||||
" .set arch=r4000 \n"
|
||||
__SYNC(full, loongson3_war) " \n"
|
||||
"1:" __LL "%1, %2 # local_sub_return \n"
|
||||
" subu %0, %1, %3 \n"
|
||||
__SC "%0, %2 \n"
|
||||
" beqzl %0, 1b \n"
|
||||
" subu %0, %1, %3 \n"
|
||||
" .set pop \n"
|
||||
: "=&r" (result), "=&r" (temp), "=m" (l->a.counter)
|
||||
: "Ir" (i), "m" (l->a.counter)
|
||||
: "memory");
|
||||
} else if (kernel_uses_llsc) {
|
||||
if (kernel_uses_llsc) {
|
||||
unsigned long temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set push \n"
|
||||
" .set "MIPS_ISA_ARCH_LEVEL" \n"
|
||||
__SYNC(full, loongson3_war) " \n"
|
||||
"1:" __LL "%1, %2 # local_sub_return \n"
|
||||
" subu %0, %1, %3 \n"
|
||||
__SC "%0, %2 \n"
|
||||
" beqz %0, 1b \n"
|
||||
" subu %0, %1, %3 \n"
|
||||
__SYNC(full, loongson3_war) " \n"
|
||||
"1:" __stringify(LONG_LL) " %1, %2 \n"
|
||||
__stringify(LONG_SUBU) " %0, %1, %3 \n"
|
||||
__stringify(LONG_SUBU) " %0, %1, %3 \n"
|
||||
__stringify(LONG_SC) " %0, %2 \n"
|
||||
__stringify(SC_BEQZ) " %0, 1b \n"
|
||||
__stringify(LONG_SUBU) " %0, %1, %3 \n"
|
||||
" .set pop \n"
|
||||
: "=&r" (result), "=&r" (temp), "=m" (l->a.counter)
|
||||
: "Ir" (i), "m" (l->a.counter)
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ enum bcm47xx_board {
|
|||
BCM47XX_BOARD_LINKSYS_WRT300NV11,
|
||||
BCM47XX_BOARD_LINKSYS_WRT310NV1,
|
||||
BCM47XX_BOARD_LINKSYS_WRT310NV2,
|
||||
BCM47XX_BOARD_LINKSYS_WRT320N_V1,
|
||||
BCM47XX_BOARD_LINKSYS_WRT54G3GV2,
|
||||
BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101,
|
||||
BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467,
|
||||
|
|
@ -99,9 +100,12 @@ enum bcm47xx_board {
|
|||
BCM47XX_BOARD_MOTOROLA_WR850GV2V3,
|
||||
|
||||
BCM47XX_BOARD_NETGEAR_R6200_V1,
|
||||
BCM47XX_BOARD_NETGEAR_R6300_V1,
|
||||
BCM47XX_BOARD_NETGEAR_WGR614V8,
|
||||
BCM47XX_BOARD_NETGEAR_WGR614V9,
|
||||
BCM47XX_BOARD_NETGEAR_WGR614_V10,
|
||||
BCM47XX_BOARD_NETGEAR_WN2500RP_V1,
|
||||
BCM47XX_BOARD_NETGEAR_WN2500RP_V2,
|
||||
BCM47XX_BOARD_NETGEAR_WNDR3300,
|
||||
BCM47XX_BOARD_NETGEAR_WNDR3400V1,
|
||||
BCM47XX_BOARD_NETGEAR_WNDR3400V2,
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
nop
|
||||
/* Loongson-3A R2/R3 */
|
||||
andi t0, (PRID_IMP_MASK | PRID_REV_MASK)
|
||||
slti t0, (PRID_IMP_LOONGSON_64C | PRID_REV_LOONGSON3A_R2_0)
|
||||
slti t0, t0, (PRID_IMP_LOONGSON_64C | PRID_REV_LOONGSON3A_R2_0)
|
||||
bnez t0, 2f
|
||||
nop
|
||||
1:
|
||||
|
|
@ -63,7 +63,7 @@
|
|||
nop
|
||||
/* Loongson-3A R2/R3 */
|
||||
andi t0, (PRID_IMP_MASK | PRID_REV_MASK)
|
||||
slti t0, (PRID_IMP_LOONGSON_64C | PRID_REV_LOONGSON3A_R2_0)
|
||||
slti t0, t0, (PRID_IMP_LOONGSON_64C | PRID_REV_LOONGSON3A_R2_0)
|
||||
bnez t0, 2f
|
||||
nop
|
||||
1:
|
||||
|
|
|
|||
|
|
@ -9,16 +9,8 @@
|
|||
|
||||
#define ioswabb(a, x) (x)
|
||||
#define __mem_ioswabb(a, x) (x)
|
||||
#if defined(CONFIG_TOSHIBA_RBTX4939) && \
|
||||
IS_ENABLED(CONFIG_SMC91X) && \
|
||||
defined(__BIG_ENDIAN)
|
||||
#define NEEDS_TXX9_IOSWABW
|
||||
extern u16 (*ioswabw)(volatile u16 *a, u16 x);
|
||||
extern u16 (*__mem_ioswabw)(volatile u16 *a, u16 x);
|
||||
#else
|
||||
#define ioswabw(a, x) le16_to_cpu((__force __le16)(x))
|
||||
#define __mem_ioswabw(a, x) (x)
|
||||
#endif
|
||||
#define ioswabl(a, x) le32_to_cpu((__force __le32)(x))
|
||||
#define __mem_ioswabl(a, x) (x)
|
||||
#define ioswabq(a, x) le64_to_cpu((__force __le64)(x))
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
#ifndef __MIPS_ASM_MIPS_CPS_H__
|
||||
#define __MIPS_ASM_MIPS_CPS_H__
|
||||
|
||||
#include <linux/bitfield.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
|
|
@ -112,14 +113,10 @@ static inline void clear_##unit##_##name(uint##sz##_t val) \
|
|||
*/
|
||||
static inline unsigned int mips_cps_numclusters(void)
|
||||
{
|
||||
unsigned int num_clusters;
|
||||
|
||||
if (mips_cm_revision() < CM_REV_CM3_5)
|
||||
return 1;
|
||||
|
||||
num_clusters = read_gcr_config() & CM_GCR_CONFIG_NUM_CLUSTERS;
|
||||
num_clusters >>= __ffs(CM_GCR_CONFIG_NUM_CLUSTERS);
|
||||
return num_clusters;
|
||||
return FIELD_GET(CM_GCR_CONFIG_NUM_CLUSTERS, read_gcr_config());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -169,7 +166,8 @@ static inline unsigned int mips_cps_numcores(unsigned int cluster)
|
|||
return 0;
|
||||
|
||||
/* Add one before masking to handle 0xff indicating no cores */
|
||||
return (mips_cps_cluster_config(cluster) + 1) & CM_GCR_CONFIG_PCORES;
|
||||
return FIELD_GET(CM_GCR_CONFIG_PCORES,
|
||||
mips_cps_cluster_config(cluster) + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -181,14 +179,11 @@ static inline unsigned int mips_cps_numcores(unsigned int cluster)
|
|||
*/
|
||||
static inline unsigned int mips_cps_numiocu(unsigned int cluster)
|
||||
{
|
||||
unsigned int num_iocu;
|
||||
|
||||
if (!mips_cm_present())
|
||||
return 0;
|
||||
|
||||
num_iocu = mips_cps_cluster_config(cluster) & CM_GCR_CONFIG_NUMIOCU;
|
||||
num_iocu >>= __ffs(CM_GCR_CONFIG_NUMIOCU);
|
||||
return num_iocu;
|
||||
return FIELD_GET(CM_GCR_CONFIG_NUMIOCU,
|
||||
mips_cps_cluster_config(cluster));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -230,7 +225,7 @@ static inline unsigned int mips_cps_numvps(unsigned int cluster, unsigned int co
|
|||
|
||||
mips_cm_unlock_other();
|
||||
|
||||
return (cfg + 1) & CM_GCR_Cx_CONFIG_PVPE;
|
||||
return FIELD_GET(CM_GCR_Cx_CONFIG_PVPE, cfg + 1);
|
||||
}
|
||||
|
||||
#endif /* __MIPS_ASM_MIPS_CPS_H__ */
|
||||
|
|
|
|||
|
|
@ -318,7 +318,7 @@ enum cvmx_chip_types_enum {
|
|||
|
||||
/* Functions to return string based on type */
|
||||
#define ENUM_BRD_TYPE_CASE(x) \
|
||||
case x: return(#x + 16); /* Skip CVMX_BOARD_TYPE_ */
|
||||
case x: return (&#x[16]); /* Skip CVMX_BOARD_TYPE_ */
|
||||
static inline const char *cvmx_board_type_to_string(enum
|
||||
cvmx_board_types_enum type)
|
||||
{
|
||||
|
|
@ -410,7 +410,7 @@ static inline const char *cvmx_board_type_to_string(enum
|
|||
}
|
||||
|
||||
#define ENUM_CHIP_TYPE_CASE(x) \
|
||||
case x: return(#x + 15); /* Skip CVMX_CHIP_TYPE */
|
||||
case x: return (&#x[15]); /* Skip CVMX_CHIP_TYPE */
|
||||
static inline const char *cvmx_chip_type_to_string(enum
|
||||
cvmx_chip_types_enum type)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -484,7 +484,7 @@
|
|||
|
||||
|
||||
/*
|
||||
* Bank Address Address Bits Register (Table 6-22)
|
||||
* Bank Address Bits Register (Table 6-22)
|
||||
*/
|
||||
|
||||
#define S_MC_BA_RESERVED 0
|
||||
|
|
|
|||
|
|
@ -101,6 +101,9 @@ static inline int register_vsmp_smp_ops(void)
|
|||
#ifdef CONFIG_MIPS_MT_SMP
|
||||
extern const struct plat_smp_ops vsmp_smp_ops;
|
||||
|
||||
if (!cpu_has_mipsmt)
|
||||
return -ENODEV;
|
||||
|
||||
register_smp_ops(&vsmp_smp_ops);
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -6,9 +6,3 @@ BOARD_VEC(jmr3927_vec)
|
|||
BOARD_VEC(rbtx4927_vec)
|
||||
BOARD_VEC(rbtx4937_vec)
|
||||
#endif
|
||||
#ifdef CONFIG_TOSHIBA_RBTX4938
|
||||
BOARD_VEC(rbtx4938_vec)
|
||||
#endif
|
||||
#ifdef CONFIG_TOSHIBA_RBTX4939
|
||||
BOARD_VEC(rbtx4939_vec)
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,145 +0,0 @@
|
|||
/*
|
||||
* Definitions for TX4937/TX4938
|
||||
*
|
||||
* 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
|
||||
* terms of the GNU General Public License version 2. This program is
|
||||
* licensed "as is" without any warranty of any kind, whether express
|
||||
* or implied.
|
||||
*
|
||||
* Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
|
||||
*/
|
||||
#ifndef __ASM_TXX9_RBTX4938_H
|
||||
#define __ASM_TXX9_RBTX4938_H
|
||||
|
||||
#include <asm/addrspace.h>
|
||||
#include <asm/txx9irq.h>
|
||||
#include <asm/txx9/tx4938.h>
|
||||
|
||||
/* Address map */
|
||||
#define RBTX4938_FPGA_REG_ADDR (IO_BASE + TXX9_CE(2) + 0x00000000)
|
||||
#define RBTX4938_FPGA_REV_ADDR (IO_BASE + TXX9_CE(2) + 0x00000002)
|
||||
#define RBTX4938_CONFIG1_ADDR (IO_BASE + TXX9_CE(2) + 0x00000004)
|
||||
#define RBTX4938_CONFIG2_ADDR (IO_BASE + TXX9_CE(2) + 0x00000006)
|
||||
#define RBTX4938_CONFIG3_ADDR (IO_BASE + TXX9_CE(2) + 0x00000008)
|
||||
#define RBTX4938_LED_ADDR (IO_BASE + TXX9_CE(2) + 0x00001000)
|
||||
#define RBTX4938_DIPSW_ADDR (IO_BASE + TXX9_CE(2) + 0x00001002)
|
||||
#define RBTX4938_BDIPSW_ADDR (IO_BASE + TXX9_CE(2) + 0x00001004)
|
||||
#define RBTX4938_IMASK_ADDR (IO_BASE + TXX9_CE(2) + 0x00002000)
|
||||
#define RBTX4938_IMASK2_ADDR (IO_BASE + TXX9_CE(2) + 0x00002002)
|
||||
#define RBTX4938_INTPOL_ADDR (IO_BASE + TXX9_CE(2) + 0x00002004)
|
||||
#define RBTX4938_ISTAT_ADDR (IO_BASE + TXX9_CE(2) + 0x00002006)
|
||||
#define RBTX4938_ISTAT2_ADDR (IO_BASE + TXX9_CE(2) + 0x00002008)
|
||||
#define RBTX4938_IMSTAT_ADDR (IO_BASE + TXX9_CE(2) + 0x0000200a)
|
||||
#define RBTX4938_IMSTAT2_ADDR (IO_BASE + TXX9_CE(2) + 0x0000200c)
|
||||
#define RBTX4938_SOFTINT_ADDR (IO_BASE + TXX9_CE(2) + 0x00003000)
|
||||
#define RBTX4938_PIOSEL_ADDR (IO_BASE + TXX9_CE(2) + 0x00005000)
|
||||
#define RBTX4938_SPICS_ADDR (IO_BASE + TXX9_CE(2) + 0x00005002)
|
||||
#define RBTX4938_SFPWR_ADDR (IO_BASE + TXX9_CE(2) + 0x00005008)
|
||||
#define RBTX4938_SFVOL_ADDR (IO_BASE + TXX9_CE(2) + 0x0000500a)
|
||||
#define RBTX4938_SOFTRESET_ADDR (IO_BASE + TXX9_CE(2) + 0x00007000)
|
||||
#define RBTX4938_SOFTRESETLOCK_ADDR (IO_BASE + TXX9_CE(2) + 0x00007002)
|
||||
#define RBTX4938_PCIRESET_ADDR (IO_BASE + TXX9_CE(2) + 0x00007004)
|
||||
#define RBTX4938_ETHER_BASE (IO_BASE + TXX9_CE(2) + 0x00020000)
|
||||
|
||||
/* Ethernet port address (Jumperless Mode (W12:Open)) */
|
||||
#define RBTX4938_ETHER_ADDR (RBTX4938_ETHER_BASE + 0x280)
|
||||
|
||||
/* bits for ISTAT/IMASK/IMSTAT */
|
||||
#define RBTX4938_INTB_PCID 0
|
||||
#define RBTX4938_INTB_PCIC 1
|
||||
#define RBTX4938_INTB_PCIB 2
|
||||
#define RBTX4938_INTB_PCIA 3
|
||||
#define RBTX4938_INTB_RTC 4
|
||||
#define RBTX4938_INTB_ATA 5
|
||||
#define RBTX4938_INTB_MODEM 6
|
||||
#define RBTX4938_INTB_SWINT 7
|
||||
#define RBTX4938_INTF_PCID (1 << RBTX4938_INTB_PCID)
|
||||
#define RBTX4938_INTF_PCIC (1 << RBTX4938_INTB_PCIC)
|
||||
#define RBTX4938_INTF_PCIB (1 << RBTX4938_INTB_PCIB)
|
||||
#define RBTX4938_INTF_PCIA (1 << RBTX4938_INTB_PCIA)
|
||||
#define RBTX4938_INTF_RTC (1 << RBTX4938_INTB_RTC)
|
||||
#define RBTX4938_INTF_ATA (1 << RBTX4938_INTB_ATA)
|
||||
#define RBTX4938_INTF_MODEM (1 << RBTX4938_INTB_MODEM)
|
||||
#define RBTX4938_INTF_SWINT (1 << RBTX4938_INTB_SWINT)
|
||||
|
||||
#define rbtx4938_fpga_rev_addr ((__u8 __iomem *)RBTX4938_FPGA_REV_ADDR)
|
||||
#define rbtx4938_led_addr ((__u8 __iomem *)RBTX4938_LED_ADDR)
|
||||
#define rbtx4938_dipsw_addr ((__u8 __iomem *)RBTX4938_DIPSW_ADDR)
|
||||
#define rbtx4938_bdipsw_addr ((__u8 __iomem *)RBTX4938_BDIPSW_ADDR)
|
||||
#define rbtx4938_imask_addr ((__u8 __iomem *)RBTX4938_IMASK_ADDR)
|
||||
#define rbtx4938_imask2_addr ((__u8 __iomem *)RBTX4938_IMASK2_ADDR)
|
||||
#define rbtx4938_intpol_addr ((__u8 __iomem *)RBTX4938_INTPOL_ADDR)
|
||||
#define rbtx4938_istat_addr ((__u8 __iomem *)RBTX4938_ISTAT_ADDR)
|
||||
#define rbtx4938_istat2_addr ((__u8 __iomem *)RBTX4938_ISTAT2_ADDR)
|
||||
#define rbtx4938_imstat_addr ((__u8 __iomem *)RBTX4938_IMSTAT_ADDR)
|
||||
#define rbtx4938_imstat2_addr ((__u8 __iomem *)RBTX4938_IMSTAT2_ADDR)
|
||||
#define rbtx4938_softint_addr ((__u8 __iomem *)RBTX4938_SOFTINT_ADDR)
|
||||
#define rbtx4938_piosel_addr ((__u8 __iomem *)RBTX4938_PIOSEL_ADDR)
|
||||
#define rbtx4938_spics_addr ((__u8 __iomem *)RBTX4938_SPICS_ADDR)
|
||||
#define rbtx4938_sfpwr_addr ((__u8 __iomem *)RBTX4938_SFPWR_ADDR)
|
||||
#define rbtx4938_sfvol_addr ((__u8 __iomem *)RBTX4938_SFVOL_ADDR)
|
||||
#define rbtx4938_softreset_addr ((__u8 __iomem *)RBTX4938_SOFTRESET_ADDR)
|
||||
#define rbtx4938_softresetlock_addr \
|
||||
((__u8 __iomem *)RBTX4938_SOFTRESETLOCK_ADDR)
|
||||
#define rbtx4938_pcireset_addr ((__u8 __iomem *)RBTX4938_PCIRESET_ADDR)
|
||||
|
||||
/*
|
||||
* IRQ mappings
|
||||
*/
|
||||
|
||||
#define RBTX4938_SOFT_INT0 0 /* not used */
|
||||
#define RBTX4938_SOFT_INT1 1 /* not used */
|
||||
#define RBTX4938_IRC_INT 2
|
||||
#define RBTX4938_TIMER_INT 7
|
||||
|
||||
/* These are the virtual IRQ numbers, we divide all IRQ's into
|
||||
* 'spaces', the 'space' determines where and how to enable/disable
|
||||
* that particular IRQ on an RBTX4938 machine. Add new 'spaces' as new
|
||||
* IRQ hardware is supported.
|
||||
*/
|
||||
#define RBTX4938_NR_IRQ_IOC 8
|
||||
|
||||
#define RBTX4938_IRQ_IRC TXX9_IRQ_BASE
|
||||
#define RBTX4938_IRQ_IOC (TXX9_IRQ_BASE + TX4938_NUM_IR)
|
||||
#define RBTX4938_IRQ_END (RBTX4938_IRQ_IOC + RBTX4938_NR_IRQ_IOC)
|
||||
|
||||
#define RBTX4938_IRQ_IRC_ECCERR (RBTX4938_IRQ_IRC + TX4938_IR_ECCERR)
|
||||
#define RBTX4938_IRQ_IRC_WTOERR (RBTX4938_IRQ_IRC + TX4938_IR_WTOERR)
|
||||
#define RBTX4938_IRQ_IRC_INT(n) (RBTX4938_IRQ_IRC + TX4938_IR_INT(n))
|
||||
#define RBTX4938_IRQ_IRC_SIO(n) (RBTX4938_IRQ_IRC + TX4938_IR_SIO(n))
|
||||
#define RBTX4938_IRQ_IRC_DMA(ch, n) (RBTX4938_IRQ_IRC + TX4938_IR_DMA(ch, n))
|
||||
#define RBTX4938_IRQ_IRC_PIO (RBTX4938_IRQ_IRC + TX4938_IR_PIO)
|
||||
#define RBTX4938_IRQ_IRC_PDMAC (RBTX4938_IRQ_IRC + TX4938_IR_PDMAC)
|
||||
#define RBTX4938_IRQ_IRC_PCIC (RBTX4938_IRQ_IRC + TX4938_IR_PCIC)
|
||||
#define RBTX4938_IRQ_IRC_TMR(n) (RBTX4938_IRQ_IRC + TX4938_IR_TMR(n))
|
||||
#define RBTX4938_IRQ_IRC_NDFMC (RBTX4938_IRQ_IRC + TX4938_IR_NDFMC)
|
||||
#define RBTX4938_IRQ_IRC_PCIERR (RBTX4938_IRQ_IRC + TX4938_IR_PCIERR)
|
||||
#define RBTX4938_IRQ_IRC_PCIPME (RBTX4938_IRQ_IRC + TX4938_IR_PCIPME)
|
||||
#define RBTX4938_IRQ_IRC_ACLC (RBTX4938_IRQ_IRC + TX4938_IR_ACLC)
|
||||
#define RBTX4938_IRQ_IRC_ACLCPME (RBTX4938_IRQ_IRC + TX4938_IR_ACLCPME)
|
||||
#define RBTX4938_IRQ_IRC_PCIC1 (RBTX4938_IRQ_IRC + TX4938_IR_PCIC1)
|
||||
#define RBTX4938_IRQ_IRC_SPI (RBTX4938_IRQ_IRC + TX4938_IR_SPI)
|
||||
#define RBTX4938_IRQ_IOC_PCID (RBTX4938_IRQ_IOC + RBTX4938_INTB_PCID)
|
||||
#define RBTX4938_IRQ_IOC_PCIC (RBTX4938_IRQ_IOC + RBTX4938_INTB_PCIC)
|
||||
#define RBTX4938_IRQ_IOC_PCIB (RBTX4938_IRQ_IOC + RBTX4938_INTB_PCIB)
|
||||
#define RBTX4938_IRQ_IOC_PCIA (RBTX4938_IRQ_IOC + RBTX4938_INTB_PCIA)
|
||||
#define RBTX4938_IRQ_IOC_RTC (RBTX4938_IRQ_IOC + RBTX4938_INTB_RTC)
|
||||
#define RBTX4938_IRQ_IOC_ATA (RBTX4938_IRQ_IOC + RBTX4938_INTB_ATA)
|
||||
#define RBTX4938_IRQ_IOC_MODEM (RBTX4938_IRQ_IOC + RBTX4938_INTB_MODEM)
|
||||
#define RBTX4938_IRQ_IOC_SWINT (RBTX4938_IRQ_IOC + RBTX4938_INTB_SWINT)
|
||||
|
||||
|
||||
/* IOC (PCI, etc) */
|
||||
#define RBTX4938_IRQ_IOCINT (TXX9_IRQ_BASE + TX4938_IR_INT(0))
|
||||
/* Onboard 10M Ether */
|
||||
#define RBTX4938_IRQ_ETHER (TXX9_IRQ_BASE + TX4938_IR_INT(1))
|
||||
|
||||
#define RBTX4938_RTL_8019_BASE (RBTX4938_ETHER_ADDR - mips_io_port_base)
|
||||
#define RBTX4938_RTL_8019_IRQ (RBTX4938_IRQ_ETHER)
|
||||
|
||||
void rbtx4938_prom_init(void);
|
||||
void rbtx4938_irq_setup(void);
|
||||
struct pci_dev;
|
||||
int rbtx4938_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
|
||||
|
||||
#endif /* __ASM_TXX9_RBTX4938_H */
|
||||
|
|
@ -1,142 +0,0 @@
|
|||
/*
|
||||
* Definitions for RBTX4939
|
||||
*
|
||||
* (C) Copyright TOSHIBA CORPORATION 2005-2006
|
||||
* 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
|
||||
* terms of the GNU General Public License version 2. This program is
|
||||
* licensed "as is" without any warranty of any kind, whether express
|
||||
* or implied.
|
||||
*/
|
||||
#ifndef __ASM_TXX9_RBTX4939_H
|
||||
#define __ASM_TXX9_RBTX4939_H
|
||||
|
||||
#include <asm/addrspace.h>
|
||||
#include <asm/txx9irq.h>
|
||||
#include <asm/txx9/generic.h>
|
||||
#include <asm/txx9/tx4939.h>
|
||||
|
||||
/* Address map */
|
||||
#define RBTX4939_IOC_REG_ADDR (IO_BASE + TXX9_CE(1) + 0x00000000)
|
||||
#define RBTX4939_BOARD_REV_ADDR (IO_BASE + TXX9_CE(1) + 0x00000000)
|
||||
#define RBTX4939_IOC_REV_ADDR (IO_BASE + TXX9_CE(1) + 0x00000002)
|
||||
#define RBTX4939_CONFIG1_ADDR (IO_BASE + TXX9_CE(1) + 0x00000004)
|
||||
#define RBTX4939_CONFIG2_ADDR (IO_BASE + TXX9_CE(1) + 0x00000006)
|
||||
#define RBTX4939_CONFIG3_ADDR (IO_BASE + TXX9_CE(1) + 0x00000008)
|
||||
#define RBTX4939_CONFIG4_ADDR (IO_BASE + TXX9_CE(1) + 0x0000000a)
|
||||
#define RBTX4939_USTAT_ADDR (IO_BASE + TXX9_CE(1) + 0x00001000)
|
||||
#define RBTX4939_UDIPSW_ADDR (IO_BASE + TXX9_CE(1) + 0x00001002)
|
||||
#define RBTX4939_BDIPSW_ADDR (IO_BASE + TXX9_CE(1) + 0x00001004)
|
||||
#define RBTX4939_IEN_ADDR (IO_BASE + TXX9_CE(1) + 0x00002000)
|
||||
#define RBTX4939_IPOL_ADDR (IO_BASE + TXX9_CE(1) + 0x00002002)
|
||||
#define RBTX4939_IFAC1_ADDR (IO_BASE + TXX9_CE(1) + 0x00002004)
|
||||
#define RBTX4939_IFAC2_ADDR (IO_BASE + TXX9_CE(1) + 0x00002006)
|
||||
#define RBTX4939_SOFTINT_ADDR (IO_BASE + TXX9_CE(1) + 0x00003000)
|
||||
#define RBTX4939_ISASTAT_ADDR (IO_BASE + TXX9_CE(1) + 0x00004000)
|
||||
#define RBTX4939_PCISTAT_ADDR (IO_BASE + TXX9_CE(1) + 0x00004002)
|
||||
#define RBTX4939_ROME_ADDR (IO_BASE + TXX9_CE(1) + 0x00004004)
|
||||
#define RBTX4939_SPICS_ADDR (IO_BASE + TXX9_CE(1) + 0x00004006)
|
||||
#define RBTX4939_AUDI_ADDR (IO_BASE + TXX9_CE(1) + 0x00004008)
|
||||
#define RBTX4939_ISAGPIO_ADDR (IO_BASE + TXX9_CE(1) + 0x0000400a)
|
||||
#define RBTX4939_PE1_ADDR (IO_BASE + TXX9_CE(1) + 0x00005000)
|
||||
#define RBTX4939_PE2_ADDR (IO_BASE + TXX9_CE(1) + 0x00005002)
|
||||
#define RBTX4939_PE3_ADDR (IO_BASE + TXX9_CE(1) + 0x00005004)
|
||||
#define RBTX4939_VP_ADDR (IO_BASE + TXX9_CE(1) + 0x00005006)
|
||||
#define RBTX4939_VPRESET_ADDR (IO_BASE + TXX9_CE(1) + 0x00005008)
|
||||
#define RBTX4939_VPSOUT_ADDR (IO_BASE + TXX9_CE(1) + 0x0000500a)
|
||||
#define RBTX4939_VPSIN_ADDR (IO_BASE + TXX9_CE(1) + 0x0000500c)
|
||||
#define RBTX4939_7SEG_ADDR(s, ch) \
|
||||
(IO_BASE + TXX9_CE(1) + 0x00006000 + (s) * 16 + ((ch) & 3) * 2)
|
||||
#define RBTX4939_SOFTRESET_ADDR (IO_BASE + TXX9_CE(1) + 0x00007000)
|
||||
#define RBTX4939_RESETEN_ADDR (IO_BASE + TXX9_CE(1) + 0x00007002)
|
||||
#define RBTX4939_RESETSTAT_ADDR (IO_BASE + TXX9_CE(1) + 0x00007004)
|
||||
#define RBTX4939_ETHER_BASE (IO_BASE + TXX9_CE(1) + 0x00020000)
|
||||
|
||||
/* Ethernet port address */
|
||||
#define RBTX4939_ETHER_ADDR (RBTX4939_ETHER_BASE + 0x300)
|
||||
|
||||
/* bits for IEN/IPOL/IFAC */
|
||||
#define RBTX4938_INTB_ISA0 0
|
||||
#define RBTX4938_INTB_ISA11 1
|
||||
#define RBTX4938_INTB_ISA12 2
|
||||
#define RBTX4938_INTB_ISA15 3
|
||||
#define RBTX4938_INTB_I2S 4
|
||||
#define RBTX4938_INTB_SW 5
|
||||
#define RBTX4938_INTF_ISA0 (1 << RBTX4938_INTB_ISA0)
|
||||
#define RBTX4938_INTF_ISA11 (1 << RBTX4938_INTB_ISA11)
|
||||
#define RBTX4938_INTF_ISA12 (1 << RBTX4938_INTB_ISA12)
|
||||
#define RBTX4938_INTF_ISA15 (1 << RBTX4938_INTB_ISA15)
|
||||
#define RBTX4938_INTF_I2S (1 << RBTX4938_INTB_I2S)
|
||||
#define RBTX4938_INTF_SW (1 << RBTX4938_INTB_SW)
|
||||
|
||||
/* bits for PE1,PE2,PE3 */
|
||||
#define RBTX4939_PE1_ATA(ch) (0x01 << (ch))
|
||||
#define RBTX4939_PE1_RMII(ch) (0x04 << (ch))
|
||||
#define RBTX4939_PE2_SIO0 0x01
|
||||
#define RBTX4939_PE2_SIO2 0x02
|
||||
#define RBTX4939_PE2_SIO3 0x04
|
||||
#define RBTX4939_PE2_CIR 0x08
|
||||
#define RBTX4939_PE2_SPI 0x10
|
||||
#define RBTX4939_PE2_GPIO 0x20
|
||||
#define RBTX4939_PE3_VP 0x01
|
||||
#define RBTX4939_PE3_VP_P 0x02
|
||||
#define RBTX4939_PE3_VP_S 0x04
|
||||
|
||||
#define rbtx4939_board_rev_addr ((u8 __iomem *)RBTX4939_BOARD_REV_ADDR)
|
||||
#define rbtx4939_ioc_rev_addr ((u8 __iomem *)RBTX4939_IOC_REV_ADDR)
|
||||
#define rbtx4939_config1_addr ((u8 __iomem *)RBTX4939_CONFIG1_ADDR)
|
||||
#define rbtx4939_config2_addr ((u8 __iomem *)RBTX4939_CONFIG2_ADDR)
|
||||
#define rbtx4939_config3_addr ((u8 __iomem *)RBTX4939_CONFIG3_ADDR)
|
||||
#define rbtx4939_config4_addr ((u8 __iomem *)RBTX4939_CONFIG4_ADDR)
|
||||
#define rbtx4939_ustat_addr ((u8 __iomem *)RBTX4939_USTAT_ADDR)
|
||||
#define rbtx4939_udipsw_addr ((u8 __iomem *)RBTX4939_UDIPSW_ADDR)
|
||||
#define rbtx4939_bdipsw_addr ((u8 __iomem *)RBTX4939_BDIPSW_ADDR)
|
||||
#define rbtx4939_ien_addr ((u8 __iomem *)RBTX4939_IEN_ADDR)
|
||||
#define rbtx4939_ipol_addr ((u8 __iomem *)RBTX4939_IPOL_ADDR)
|
||||
#define rbtx4939_ifac1_addr ((u8 __iomem *)RBTX4939_IFAC1_ADDR)
|
||||
#define rbtx4939_ifac2_addr ((u8 __iomem *)RBTX4939_IFAC2_ADDR)
|
||||
#define rbtx4939_softint_addr ((u8 __iomem *)RBTX4939_SOFTINT_ADDR)
|
||||
#define rbtx4939_isastat_addr ((u8 __iomem *)RBTX4939_ISASTAT_ADDR)
|
||||
#define rbtx4939_pcistat_addr ((u8 __iomem *)RBTX4939_PCISTAT_ADDR)
|
||||
#define rbtx4939_rome_addr ((u8 __iomem *)RBTX4939_ROME_ADDR)
|
||||
#define rbtx4939_spics_addr ((u8 __iomem *)RBTX4939_SPICS_ADDR)
|
||||
#define rbtx4939_audi_addr ((u8 __iomem *)RBTX4939_AUDI_ADDR)
|
||||
#define rbtx4939_isagpio_addr ((u8 __iomem *)RBTX4939_ISAGPIO_ADDR)
|
||||
#define rbtx4939_pe1_addr ((u8 __iomem *)RBTX4939_PE1_ADDR)
|
||||
#define rbtx4939_pe2_addr ((u8 __iomem *)RBTX4939_PE2_ADDR)
|
||||
#define rbtx4939_pe3_addr ((u8 __iomem *)RBTX4939_PE3_ADDR)
|
||||
#define rbtx4939_vp_addr ((u8 __iomem *)RBTX4939_VP_ADDR)
|
||||
#define rbtx4939_vpreset_addr ((u8 __iomem *)RBTX4939_VPRESET_ADDR)
|
||||
#define rbtx4939_vpsout_addr ((u8 __iomem *)RBTX4939_VPSOUT_ADDR)
|
||||
#define rbtx4939_vpsin_addr ((u8 __iomem *)RBTX4939_VPSIN_ADDR)
|
||||
#define rbtx4939_7seg_addr(s, ch) \
|
||||
((u8 __iomem *)RBTX4939_7SEG_ADDR(s, ch))
|
||||
#define rbtx4939_softreset_addr ((u8 __iomem *)RBTX4939_SOFTRESET_ADDR)
|
||||
#define rbtx4939_reseten_addr ((u8 __iomem *)RBTX4939_RESETEN_ADDR)
|
||||
#define rbtx4939_resetstat_addr ((u8 __iomem *)RBTX4939_RESETSTAT_ADDR)
|
||||
|
||||
/*
|
||||
* IRQ mappings
|
||||
*/
|
||||
#define RBTX4939_NR_IRQ_IOC 8
|
||||
|
||||
#define RBTX4939_IRQ_IOC (TXX9_IRQ_BASE + TX4939_NUM_IR)
|
||||
#define RBTX4939_IRQ_END (RBTX4939_IRQ_IOC + RBTX4939_NR_IRQ_IOC)
|
||||
|
||||
/* IOC (ISA, etc) */
|
||||
#define RBTX4939_IRQ_IOCINT (TXX9_IRQ_BASE + TX4939_IR_INT(0))
|
||||
/* Onboard 10M Ether */
|
||||
#define RBTX4939_IRQ_ETHER (TXX9_IRQ_BASE + TX4939_IR_INT(1))
|
||||
|
||||
void rbtx4939_prom_init(void);
|
||||
void rbtx4939_irq_setup(void);
|
||||
|
||||
struct mtd_partition;
|
||||
struct map_info;
|
||||
struct rbtx4939_flash_data {
|
||||
unsigned int width;
|
||||
unsigned int nr_parts;
|
||||
struct mtd_partition *parts;
|
||||
void (*map_init)(struct map_info *map);
|
||||
};
|
||||
|
||||
#endif /* __ASM_TXX9_RBTX4939_H */
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
/*
|
||||
* Definitions for TX4937/TX4938 SPI
|
||||
*
|
||||
* Copyright (C) 2000-2001 Toshiba Corporation
|
||||
*
|
||||
* 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
|
||||
* terms of the GNU General Public License version 2. This program is
|
||||
* licensed "as is" without any warranty of any kind, whether express
|
||||
* or implied.
|
||||
*
|
||||
* Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
|
||||
*/
|
||||
#ifndef __ASM_TXX9_SPI_H
|
||||
#define __ASM_TXX9_SPI_H
|
||||
|
||||
#include <linux/errno.h>
|
||||
|
||||
#ifdef CONFIG_SPI
|
||||
int spi_eeprom_register(int busid, int chipid, int size);
|
||||
int spi_eeprom_read(int busid, int chipid,
|
||||
int address, unsigned char *buf, int len);
|
||||
#else
|
||||
static inline int spi_eeprom_register(int busid, int chipid, int size)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
static inline int spi_eeprom_read(int busid, int chipid,
|
||||
int address, unsigned char *buf, int len)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_TXX9_SPI_H */
|
||||
|
|
@ -1,524 +0,0 @@
|
|||
/*
|
||||
* Definitions for TX4939
|
||||
*
|
||||
* Copyright (C) 2000-2001,2005-2006 Toshiba Corporation
|
||||
* 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
|
||||
* terms of the GNU General Public License version 2. This program is
|
||||
* licensed "as is" without any warranty of any kind, whether express
|
||||
* or implied.
|
||||
*/
|
||||
#ifndef __ASM_TXX9_TX4939_H
|
||||
#define __ASM_TXX9_TX4939_H
|
||||
|
||||
/* some controllers are compatible with 4927/4938 */
|
||||
#include <asm/txx9/tx4938.h>
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
#define TX4939_REG_BASE 0xffffffffff1f0000UL /* == TX4938_REG_BASE */
|
||||
#else
|
||||
#define TX4939_REG_BASE 0xff1f0000UL /* == TX4938_REG_BASE */
|
||||
#endif
|
||||
#define TX4939_REG_SIZE 0x00010000 /* == TX4938_REG_SIZE */
|
||||
|
||||
#define TX4939_ATA_REG(ch) (TX4939_REG_BASE + 0x3000 + (ch) * 0x1000)
|
||||
#define TX4939_NDFMC_REG (TX4939_REG_BASE + 0x5000)
|
||||
#define TX4939_SRAMC_REG (TX4939_REG_BASE + 0x6000)
|
||||
#define TX4939_CRYPTO_REG (TX4939_REG_BASE + 0x6800)
|
||||
#define TX4939_PCIC1_REG (TX4939_REG_BASE + 0x7000)
|
||||
#define TX4939_DDRC_REG (TX4939_REG_BASE + 0x8000)
|
||||
#define TX4939_EBUSC_REG (TX4939_REG_BASE + 0x9000)
|
||||
#define TX4939_VPC_REG (TX4939_REG_BASE + 0xa000)
|
||||
#define TX4939_DMA_REG(ch) (TX4939_REG_BASE + 0xb000 + (ch) * 0x800)
|
||||
#define TX4939_PCIC_REG (TX4939_REG_BASE + 0xd000)
|
||||
#define TX4939_CCFG_REG (TX4939_REG_BASE + 0xe000)
|
||||
#define TX4939_IRC_REG (TX4939_REG_BASE + 0xe800)
|
||||
#define TX4939_NR_TMR 6 /* 0xf000,0xf100,0xf200,0xfd00,0xfe00,0xff00 */
|
||||
#define TX4939_TMR_REG(ch) \
|
||||
(TX4939_REG_BASE + 0xf000 + ((ch) + ((ch) >= 3) * 10) * 0x100)
|
||||
#define TX4939_NR_SIO 4 /* 0xf300, 0xf400, 0xf380, 0xf480 */
|
||||
#define TX4939_SIO_REG(ch) \
|
||||
(TX4939_REG_BASE + 0xf300 + (((ch) & 1) << 8) + (((ch) & 2) << 6))
|
||||
#define TX4939_ACLC_REG (TX4939_REG_BASE + 0xf700)
|
||||
#define TX4939_SPI_REG (TX4939_REG_BASE + 0xf800)
|
||||
#define TX4939_I2C_REG (TX4939_REG_BASE + 0xf900)
|
||||
#define TX4939_I2S_REG (TX4939_REG_BASE + 0xfa00)
|
||||
#define TX4939_RTC_REG (TX4939_REG_BASE + 0xfb00)
|
||||
#define TX4939_CIR_REG (TX4939_REG_BASE + 0xfc00)
|
||||
|
||||
#define TX4939_RNG_REG (TX4939_CRYPTO_REG + 0xb0)
|
||||
|
||||
struct tx4939_le_reg {
|
||||
__u32 r;
|
||||
__u32 unused;
|
||||
};
|
||||
|
||||
struct tx4939_ddrc_reg {
|
||||
struct tx4939_le_reg ctl[47];
|
||||
__u64 unused0[17];
|
||||
__u64 winen;
|
||||
__u64 win[4];
|
||||
};
|
||||
|
||||
struct tx4939_ccfg_reg {
|
||||
__u64 ccfg;
|
||||
__u64 crir;
|
||||
__u64 pcfg;
|
||||
__u64 toea;
|
||||
__u64 clkctr;
|
||||
__u64 unused0;
|
||||
__u64 garbc;
|
||||
__u64 unused1[2];
|
||||
__u64 ramp;
|
||||
__u64 unused2[2];
|
||||
__u64 dskwctrl;
|
||||
__u64 mclkosc;
|
||||
__u64 mclkctl;
|
||||
__u64 unused3[17];
|
||||
struct {
|
||||
__u64 mr;
|
||||
__u64 dr;
|
||||
} gpio[2];
|
||||
};
|
||||
|
||||
struct tx4939_irc_reg {
|
||||
struct tx4939_le_reg den;
|
||||
struct tx4939_le_reg scipb;
|
||||
struct tx4939_le_reg dm[2];
|
||||
struct tx4939_le_reg lvl[16];
|
||||
struct tx4939_le_reg msk;
|
||||
struct tx4939_le_reg edc;
|
||||
struct tx4939_le_reg pnd0;
|
||||
struct tx4939_le_reg cs;
|
||||
struct tx4939_le_reg pnd1;
|
||||
struct tx4939_le_reg dm2[2];
|
||||
struct tx4939_le_reg dbr[2];
|
||||
struct tx4939_le_reg dben;
|
||||
struct tx4939_le_reg unused0[2];
|
||||
struct tx4939_le_reg flag[2];
|
||||
struct tx4939_le_reg pol;
|
||||
struct tx4939_le_reg cnt;
|
||||
struct tx4939_le_reg maskint;
|
||||
struct tx4939_le_reg maskext;
|
||||
};
|
||||
|
||||
struct tx4939_crypto_reg {
|
||||
struct tx4939_le_reg csr;
|
||||
struct tx4939_le_reg idesptr;
|
||||
struct tx4939_le_reg cdesptr;
|
||||
struct tx4939_le_reg buserr;
|
||||
struct tx4939_le_reg cip_tout;
|
||||
struct tx4939_le_reg cir;
|
||||
union {
|
||||
struct {
|
||||
struct tx4939_le_reg data[8];
|
||||
struct tx4939_le_reg ctrl;
|
||||
} gen;
|
||||
struct {
|
||||
struct {
|
||||
struct tx4939_le_reg l;
|
||||
struct tx4939_le_reg u;
|
||||
} key[3], ini;
|
||||
struct tx4939_le_reg ctrl;
|
||||
} des;
|
||||
struct {
|
||||
struct tx4939_le_reg key[4];
|
||||
struct tx4939_le_reg ini[4];
|
||||
struct tx4939_le_reg ctrl;
|
||||
} aes;
|
||||
struct {
|
||||
struct {
|
||||
struct tx4939_le_reg l;
|
||||
struct tx4939_le_reg u;
|
||||
} cnt;
|
||||
struct tx4939_le_reg ini[5];
|
||||
struct tx4939_le_reg unused;
|
||||
struct tx4939_le_reg ctrl;
|
||||
} hash;
|
||||
} cdr;
|
||||
struct tx4939_le_reg unused0[7];
|
||||
struct tx4939_le_reg rcsr;
|
||||
struct tx4939_le_reg rpr;
|
||||
__u64 rdr;
|
||||
__u64 ror[3];
|
||||
struct tx4939_le_reg unused1[2];
|
||||
struct tx4939_le_reg xorslr;
|
||||
struct tx4939_le_reg xorsur;
|
||||
};
|
||||
|
||||
struct tx4939_crypto_desc {
|
||||
__u32 src;
|
||||
__u32 dst;
|
||||
__u32 next;
|
||||
__u32 ctrl;
|
||||
__u32 index;
|
||||
__u32 xor;
|
||||
};
|
||||
|
||||
struct tx4939_vpc_reg {
|
||||
struct tx4939_le_reg csr;
|
||||
struct {
|
||||
struct tx4939_le_reg ctrlA;
|
||||
struct tx4939_le_reg ctrlB;
|
||||
struct tx4939_le_reg idesptr;
|
||||
struct tx4939_le_reg cdesptr;
|
||||
} port[3];
|
||||
struct tx4939_le_reg buserr;
|
||||
};
|
||||
|
||||
struct tx4939_vpc_desc {
|
||||
__u32 src;
|
||||
__u32 next;
|
||||
__u32 ctrl1;
|
||||
__u32 ctrl2;
|
||||
};
|
||||
|
||||
/*
|
||||
* IRC
|
||||
*/
|
||||
#define TX4939_IR_NONE 0
|
||||
#define TX4939_IR_DDR 1
|
||||
#define TX4939_IR_WTOERR 2
|
||||
#define TX4939_NUM_IR_INT 3
|
||||
#define TX4939_IR_INT(n) (3 + (n))
|
||||
#define TX4939_NUM_IR_ETH 2
|
||||
#define TX4939_IR_ETH(n) ((n) ? 43 : 6)
|
||||
#define TX4939_IR_VIDEO 7
|
||||
#define TX4939_IR_CIR 8
|
||||
#define TX4939_NUM_IR_SIO 4
|
||||
#define TX4939_IR_SIO(n) ((n) ? 43 + (n) : 9) /* 9,44-46 */
|
||||
#define TX4939_NUM_IR_DMA 4
|
||||
#define TX4939_IR_DMA(ch, n) (((ch) ? 22 : 10) + (n)) /* 10-13,22-25 */
|
||||
#define TX4939_IR_IRC 14
|
||||
#define TX4939_IR_PDMAC 15
|
||||
#define TX4939_NUM_IR_TMR 6
|
||||
#define TX4939_IR_TMR(n) (((n) >= 3 ? 45 : 16) + (n)) /* 16-18,48-50 */
|
||||
#define TX4939_NUM_IR_ATA 2
|
||||
#define TX4939_IR_ATA(n) (19 + (n))
|
||||
#define TX4939_IR_ACLC 21
|
||||
#define TX4939_IR_CIPHER 26
|
||||
#define TX4939_IR_INTA 27
|
||||
#define TX4939_IR_INTB 28
|
||||
#define TX4939_IR_INTC 29
|
||||
#define TX4939_IR_INTD 30
|
||||
#define TX4939_IR_I2C 33
|
||||
#define TX4939_IR_SPI 34
|
||||
#define TX4939_IR_PCIC 35
|
||||
#define TX4939_IR_PCIC1 36
|
||||
#define TX4939_IR_PCIERR 37
|
||||
#define TX4939_IR_PCIPME 38
|
||||
#define TX4939_IR_NDFMC 39
|
||||
#define TX4939_IR_ACLCPME 40
|
||||
#define TX4939_IR_RTC 41
|
||||
#define TX4939_IR_RND 42
|
||||
#define TX4939_IR_I2S 47
|
||||
#define TX4939_NUM_IR 64
|
||||
|
||||
#define TX4939_IRC_INT 2 /* IP[2] in Status register */
|
||||
|
||||
/*
|
||||
* CCFG
|
||||
*/
|
||||
/* CCFG : Chip Configuration */
|
||||
#define TX4939_CCFG_PCIBOOT 0x0000040000000000ULL
|
||||
#define TX4939_CCFG_WDRST 0x0000020000000000ULL
|
||||
#define TX4939_CCFG_WDREXEN 0x0000010000000000ULL
|
||||
#define TX4939_CCFG_BCFG_MASK 0x000000ff00000000ULL
|
||||
#define TX4939_CCFG_GTOT_MASK 0x06000000
|
||||
#define TX4939_CCFG_GTOT_4096 0x06000000
|
||||
#define TX4939_CCFG_GTOT_2048 0x04000000
|
||||
#define TX4939_CCFG_GTOT_1024 0x02000000
|
||||
#define TX4939_CCFG_GTOT_512 0x00000000
|
||||
#define TX4939_CCFG_TINTDIS 0x01000000
|
||||
#define TX4939_CCFG_PCI66 0x00800000
|
||||
#define TX4939_CCFG_PCIMODE 0x00400000
|
||||
#define TX4939_CCFG_SSCG 0x00100000
|
||||
#define TX4939_CCFG_MULCLK_MASK 0x000e0000
|
||||
#define TX4939_CCFG_MULCLK_8 (0x7 << 17)
|
||||
#define TX4939_CCFG_MULCLK_9 (0x0 << 17)
|
||||
#define TX4939_CCFG_MULCLK_10 (0x1 << 17)
|
||||
#define TX4939_CCFG_MULCLK_11 (0x2 << 17)
|
||||
#define TX4939_CCFG_MULCLK_12 (0x3 << 17)
|
||||
#define TX4939_CCFG_MULCLK_13 (0x4 << 17)
|
||||
#define TX4939_CCFG_MULCLK_14 (0x5 << 17)
|
||||
#define TX4939_CCFG_MULCLK_15 (0x6 << 17)
|
||||
#define TX4939_CCFG_BEOW 0x00010000
|
||||
#define TX4939_CCFG_WR 0x00008000
|
||||
#define TX4939_CCFG_TOE 0x00004000
|
||||
#define TX4939_CCFG_PCIARB 0x00002000
|
||||
#define TX4939_CCFG_YDIVMODE_MASK 0x00001c00
|
||||
#define TX4939_CCFG_YDIVMODE_2 (0x0 << 10)
|
||||
#define TX4939_CCFG_YDIVMODE_3 (0x1 << 10)
|
||||
#define TX4939_CCFG_YDIVMODE_5 (0x6 << 10)
|
||||
#define TX4939_CCFG_YDIVMODE_6 (0x7 << 10)
|
||||
#define TX4939_CCFG_PTSEL 0x00000200
|
||||
#define TX4939_CCFG_BESEL 0x00000100
|
||||
#define TX4939_CCFG_SYSSP_MASK 0x000000c0
|
||||
#define TX4939_CCFG_ACKSEL 0x00000020
|
||||
#define TX4939_CCFG_ROMW 0x00000010
|
||||
#define TX4939_CCFG_ENDIAN 0x00000004
|
||||
#define TX4939_CCFG_ARMODE 0x00000002
|
||||
#define TX4939_CCFG_ACEHOLD 0x00000001
|
||||
|
||||
/* PCFG : Pin Configuration */
|
||||
#define TX4939_PCFG_SIO2MODE_MASK 0xc000000000000000ULL
|
||||
#define TX4939_PCFG_SIO2MODE_GPIO 0x8000000000000000ULL
|
||||
#define TX4939_PCFG_SIO2MODE_SIO2 0x4000000000000000ULL
|
||||
#define TX4939_PCFG_SIO2MODE_SIO0 0x0000000000000000ULL
|
||||
#define TX4939_PCFG_SPIMODE 0x2000000000000000ULL
|
||||
#define TX4939_PCFG_I2CMODE 0x1000000000000000ULL
|
||||
#define TX4939_PCFG_I2SMODE_MASK 0x0c00000000000000ULL
|
||||
#define TX4939_PCFG_I2SMODE_GPIO 0x0c00000000000000ULL
|
||||
#define TX4939_PCFG_I2SMODE_I2S 0x0800000000000000ULL
|
||||
#define TX4939_PCFG_I2SMODE_I2S_ALT 0x0400000000000000ULL
|
||||
#define TX4939_PCFG_I2SMODE_ACLC 0x0000000000000000ULL
|
||||
#define TX4939_PCFG_SIO3MODE 0x0200000000000000ULL
|
||||
#define TX4939_PCFG_DMASEL3 0x0004000000000000ULL
|
||||
#define TX4939_PCFG_DMASEL3_SIO0 0x0004000000000000ULL
|
||||
#define TX4939_PCFG_DMASEL3_NDFC 0x0000000000000000ULL
|
||||
#define TX4939_PCFG_VSSMODE 0x0000200000000000ULL
|
||||
#define TX4939_PCFG_VPSMODE 0x0000100000000000ULL
|
||||
#define TX4939_PCFG_ET1MODE 0x0000080000000000ULL
|
||||
#define TX4939_PCFG_ET0MODE 0x0000040000000000ULL
|
||||
#define TX4939_PCFG_ATA1MODE 0x0000020000000000ULL
|
||||
#define TX4939_PCFG_ATA0MODE 0x0000010000000000ULL
|
||||
#define TX4939_PCFG_BP_PLL 0x0000000100000000ULL
|
||||
|
||||
#define TX4939_PCFG_SYSCLKEN 0x08000000
|
||||
#define TX4939_PCFG_PCICLKEN_ALL 0x000f0000
|
||||
#define TX4939_PCFG_PCICLKEN(ch) (0x00010000<<(ch))
|
||||
#define TX4939_PCFG_SPEED1 0x00002000
|
||||
#define TX4939_PCFG_SPEED0 0x00001000
|
||||
#define TX4939_PCFG_ITMODE 0x00000300
|
||||
#define TX4939_PCFG_DMASEL_ALL (0x00000007 | TX4939_PCFG_DMASEL3)
|
||||
#define TX4939_PCFG_DMASEL2 0x00000004
|
||||
#define TX4939_PCFG_DMASEL2_DRQ2 0x00000000
|
||||
#define TX4939_PCFG_DMASEL2_SIO0 0x00000004
|
||||
#define TX4939_PCFG_DMASEL1 0x00000002
|
||||
#define TX4939_PCFG_DMASEL1_DRQ1 0x00000000
|
||||
#define TX4939_PCFG_DMASEL0 0x00000001
|
||||
#define TX4939_PCFG_DMASEL0_DRQ0 0x00000000
|
||||
|
||||
/* CLKCTR : Clock Control */
|
||||
#define TX4939_CLKCTR_IOSCKD 0x8000000000000000ULL
|
||||
#define TX4939_CLKCTR_SYSCKD 0x4000000000000000ULL
|
||||
#define TX4939_CLKCTR_TM5CKD 0x2000000000000000ULL
|
||||
#define TX4939_CLKCTR_TM4CKD 0x1000000000000000ULL
|
||||
#define TX4939_CLKCTR_TM3CKD 0x0800000000000000ULL
|
||||
#define TX4939_CLKCTR_CIRCKD 0x0400000000000000ULL
|
||||
#define TX4939_CLKCTR_SIO3CKD 0x0200000000000000ULL
|
||||
#define TX4939_CLKCTR_SIO2CKD 0x0100000000000000ULL
|
||||
#define TX4939_CLKCTR_SIO1CKD 0x0080000000000000ULL
|
||||
#define TX4939_CLKCTR_VPCCKD 0x0040000000000000ULL
|
||||
#define TX4939_CLKCTR_EPCICKD 0x0020000000000000ULL
|
||||
#define TX4939_CLKCTR_ETH1CKD 0x0008000000000000ULL
|
||||
#define TX4939_CLKCTR_ATA1CKD 0x0004000000000000ULL
|
||||
#define TX4939_CLKCTR_BROMCKD 0x0002000000000000ULL
|
||||
#define TX4939_CLKCTR_NDCCKD 0x0001000000000000ULL
|
||||
#define TX4939_CLKCTR_I2CCKD 0x0000800000000000ULL
|
||||
#define TX4939_CLKCTR_ETH0CKD 0x0000400000000000ULL
|
||||
#define TX4939_CLKCTR_SPICKD 0x0000200000000000ULL
|
||||
#define TX4939_CLKCTR_SRAMCKD 0x0000100000000000ULL
|
||||
#define TX4939_CLKCTR_PCI1CKD 0x0000080000000000ULL
|
||||
#define TX4939_CLKCTR_DMA1CKD 0x0000040000000000ULL
|
||||
#define TX4939_CLKCTR_ACLCKD 0x0000020000000000ULL
|
||||
#define TX4939_CLKCTR_ATA0CKD 0x0000010000000000ULL
|
||||
#define TX4939_CLKCTR_DMA0CKD 0x0000008000000000ULL
|
||||
#define TX4939_CLKCTR_PCICCKD 0x0000004000000000ULL
|
||||
#define TX4939_CLKCTR_I2SCKD 0x0000002000000000ULL
|
||||
#define TX4939_CLKCTR_TM0CKD 0x0000001000000000ULL
|
||||
#define TX4939_CLKCTR_TM1CKD 0x0000000800000000ULL
|
||||
#define TX4939_CLKCTR_TM2CKD 0x0000000400000000ULL
|
||||
#define TX4939_CLKCTR_SIO0CKD 0x0000000200000000ULL
|
||||
#define TX4939_CLKCTR_CYPCKD 0x0000000100000000ULL
|
||||
#define TX4939_CLKCTR_IOSRST 0x80000000
|
||||
#define TX4939_CLKCTR_SYSRST 0x40000000
|
||||
#define TX4939_CLKCTR_TM5RST 0x20000000
|
||||
#define TX4939_CLKCTR_TM4RST 0x10000000
|
||||
#define TX4939_CLKCTR_TM3RST 0x08000000
|
||||
#define TX4939_CLKCTR_CIRRST 0x04000000
|
||||
#define TX4939_CLKCTR_SIO3RST 0x02000000
|
||||
#define TX4939_CLKCTR_SIO2RST 0x01000000
|
||||
#define TX4939_CLKCTR_SIO1RST 0x00800000
|
||||
#define TX4939_CLKCTR_VPCRST 0x00400000
|
||||
#define TX4939_CLKCTR_EPCIRST 0x00200000
|
||||
#define TX4939_CLKCTR_ETH1RST 0x00080000
|
||||
#define TX4939_CLKCTR_ATA1RST 0x00040000
|
||||
#define TX4939_CLKCTR_BROMRST 0x00020000
|
||||
#define TX4939_CLKCTR_NDCRST 0x00010000
|
||||
#define TX4939_CLKCTR_I2CRST 0x00008000
|
||||
#define TX4939_CLKCTR_ETH0RST 0x00004000
|
||||
#define TX4939_CLKCTR_SPIRST 0x00002000
|
||||
#define TX4939_CLKCTR_SRAMRST 0x00001000
|
||||
#define TX4939_CLKCTR_PCI1RST 0x00000800
|
||||
#define TX4939_CLKCTR_DMA1RST 0x00000400
|
||||
#define TX4939_CLKCTR_ACLRST 0x00000200
|
||||
#define TX4939_CLKCTR_ATA0RST 0x00000100
|
||||
#define TX4939_CLKCTR_DMA0RST 0x00000080
|
||||
#define TX4939_CLKCTR_PCICRST 0x00000040
|
||||
#define TX4939_CLKCTR_I2SRST 0x00000020
|
||||
#define TX4939_CLKCTR_TM0RST 0x00000010
|
||||
#define TX4939_CLKCTR_TM1RST 0x00000008
|
||||
#define TX4939_CLKCTR_TM2RST 0x00000004
|
||||
#define TX4939_CLKCTR_SIO0RST 0x00000002
|
||||
#define TX4939_CLKCTR_CYPRST 0x00000001
|
||||
|
||||
/*
|
||||
* CRYPTO
|
||||
*/
|
||||
#define TX4939_CRYPTO_CSR_SAESO 0x08000000
|
||||
#define TX4939_CRYPTO_CSR_SAESI 0x04000000
|
||||
#define TX4939_CRYPTO_CSR_SDESO 0x02000000
|
||||
#define TX4939_CRYPTO_CSR_SDESI 0x01000000
|
||||
#define TX4939_CRYPTO_CSR_INDXBST_MASK 0x00700000
|
||||
#define TX4939_CRYPTO_CSR_INDXBST(n) ((n) << 20)
|
||||
#define TX4939_CRYPTO_CSR_TOINT 0x00080000
|
||||
#define TX4939_CRYPTO_CSR_DCINT 0x00040000
|
||||
#define TX4939_CRYPTO_CSR_GBINT 0x00010000
|
||||
#define TX4939_CRYPTO_CSR_INDXAST_MASK 0x0000e000
|
||||
#define TX4939_CRYPTO_CSR_INDXAST(n) ((n) << 13)
|
||||
#define TX4939_CRYPTO_CSR_CSWAP_MASK 0x00001800
|
||||
#define TX4939_CRYPTO_CSR_CSWAP_NONE 0x00000000
|
||||
#define TX4939_CRYPTO_CSR_CSWAP_IN 0x00000800
|
||||
#define TX4939_CRYPTO_CSR_CSWAP_OUT 0x00001000
|
||||
#define TX4939_CRYPTO_CSR_CSWAP_BOTH 0x00001800
|
||||
#define TX4939_CRYPTO_CSR_CDIV_MASK 0x00000600
|
||||
#define TX4939_CRYPTO_CSR_CDIV_DIV2 0x00000000
|
||||
#define TX4939_CRYPTO_CSR_CDIV_DIV1 0x00000200
|
||||
#define TX4939_CRYPTO_CSR_CDIV_DIV2ALT 0x00000400
|
||||
#define TX4939_CRYPTO_CSR_CDIV_DIV1ALT 0x00000600
|
||||
#define TX4939_CRYPTO_CSR_PDINT_MASK 0x000000c0
|
||||
#define TX4939_CRYPTO_CSR_PDINT_ALL 0x00000000
|
||||
#define TX4939_CRYPTO_CSR_PDINT_END 0x00000040
|
||||
#define TX4939_CRYPTO_CSR_PDINT_NEXT 0x00000080
|
||||
#define TX4939_CRYPTO_CSR_PDINT_NONE 0x000000c0
|
||||
#define TX4939_CRYPTO_CSR_GINTE 0x00000008
|
||||
#define TX4939_CRYPTO_CSR_RSTD 0x00000004
|
||||
#define TX4939_CRYPTO_CSR_RSTC 0x00000002
|
||||
#define TX4939_CRYPTO_CSR_ENCR 0x00000001
|
||||
|
||||
/* bits for tx4939_crypto_reg.cdr.gen.ctrl */
|
||||
#define TX4939_CRYPTO_CTX_ENGINE_MASK 0x00000003
|
||||
#define TX4939_CRYPTO_CTX_ENGINE_DES 0x00000000
|
||||
#define TX4939_CRYPTO_CTX_ENGINE_AES 0x00000001
|
||||
#define TX4939_CRYPTO_CTX_ENGINE_MD5 0x00000002
|
||||
#define TX4939_CRYPTO_CTX_ENGINE_SHA1 0x00000003
|
||||
#define TX4939_CRYPTO_CTX_TDMS 0x00000010
|
||||
#define TX4939_CRYPTO_CTX_CMS 0x00000020
|
||||
#define TX4939_CRYPTO_CTX_DMS 0x00000040
|
||||
#define TX4939_CRYPTO_CTX_UPDATE 0x00000080
|
||||
|
||||
/* bits for tx4939_crypto_desc.ctrl */
|
||||
#define TX4939_CRYPTO_DESC_OB_CNT_MASK 0xffe00000
|
||||
#define TX4939_CRYPTO_DESC_OB_CNT(cnt) ((cnt) << 21)
|
||||
#define TX4939_CRYPTO_DESC_IB_CNT_MASK 0x001ffc00
|
||||
#define TX4939_CRYPTO_DESC_IB_CNT(cnt) ((cnt) << 10)
|
||||
#define TX4939_CRYPTO_DESC_START 0x00000200
|
||||
#define TX4939_CRYPTO_DESC_END 0x00000100
|
||||
#define TX4939_CRYPTO_DESC_XOR 0x00000010
|
||||
#define TX4939_CRYPTO_DESC_LAST 0x00000008
|
||||
#define TX4939_CRYPTO_DESC_ERR_MASK 0x00000006
|
||||
#define TX4939_CRYPTO_DESC_ERR_NONE 0x00000000
|
||||
#define TX4939_CRYPTO_DESC_ERR_TOUT 0x00000002
|
||||
#define TX4939_CRYPTO_DESC_ERR_DIGEST 0x00000004
|
||||
#define TX4939_CRYPTO_DESC_OWN 0x00000001
|
||||
|
||||
/* bits for tx4939_crypto_desc.index */
|
||||
#define TX4939_CRYPTO_DESC_HASH_IDX_MASK 0x00000070
|
||||
#define TX4939_CRYPTO_DESC_HASH_IDX(idx) ((idx) << 4)
|
||||
#define TX4939_CRYPTO_DESC_ENCRYPT_IDX_MASK 0x00000007
|
||||
#define TX4939_CRYPTO_DESC_ENCRYPT_IDX(idx) ((idx) << 0)
|
||||
|
||||
#define TX4939_CRYPTO_NR_SET 6
|
||||
|
||||
#define TX4939_CRYPTO_RCSR_INTE 0x00000008
|
||||
#define TX4939_CRYPTO_RCSR_RST 0x00000004
|
||||
#define TX4939_CRYPTO_RCSR_FIN 0x00000002
|
||||
#define TX4939_CRYPTO_RCSR_ST 0x00000001
|
||||
|
||||
/*
|
||||
* VPC
|
||||
*/
|
||||
#define TX4939_VPC_CSR_GBINT 0x00010000
|
||||
#define TX4939_VPC_CSR_SWAPO 0x00000020
|
||||
#define TX4939_VPC_CSR_SWAPI 0x00000010
|
||||
#define TX4939_VPC_CSR_GINTE 0x00000008
|
||||
#define TX4939_VPC_CSR_RSTD 0x00000004
|
||||
#define TX4939_VPC_CSR_RSTVPC 0x00000002
|
||||
|
||||
#define TX4939_VPC_CTRLA_VDPSN 0x00000200
|
||||
#define TX4939_VPC_CTRLA_PBUSY 0x00000100
|
||||
#define TX4939_VPC_CTRLA_DCINT 0x00000080
|
||||
#define TX4939_VPC_CTRLA_UOINT 0x00000040
|
||||
#define TX4939_VPC_CTRLA_PDINT_MASK 0x00000030
|
||||
#define TX4939_VPC_CTRLA_PDINT_ALL 0x00000000
|
||||
#define TX4939_VPC_CTRLA_PDINT_NEXT 0x00000010
|
||||
#define TX4939_VPC_CTRLA_PDINT_NONE 0x00000030
|
||||
#define TX4939_VPC_CTRLA_VDVLDP 0x00000008
|
||||
#define TX4939_VPC_CTRLA_VDMODE 0x00000004
|
||||
#define TX4939_VPC_CTRLA_VDFOR 0x00000002
|
||||
#define TX4939_VPC_CTRLA_ENVPC 0x00000001
|
||||
|
||||
/* bits for tx4939_vpc_desc.ctrl1 */
|
||||
#define TX4939_VPC_DESC_CTRL1_ERR_MASK 0x00000006
|
||||
#define TX4939_VPC_DESC_CTRL1_OWN 0x00000001
|
||||
|
||||
#define tx4939_ddrcptr ((struct tx4939_ddrc_reg __iomem *)TX4939_DDRC_REG)
|
||||
#define tx4939_ebuscptr tx4938_ebuscptr
|
||||
#define tx4939_ircptr \
|
||||
((struct tx4939_irc_reg __iomem *)TX4939_IRC_REG)
|
||||
#define tx4939_pcicptr tx4938_pcicptr
|
||||
#define tx4939_pcic1ptr tx4938_pcic1ptr
|
||||
#define tx4939_ccfgptr \
|
||||
((struct tx4939_ccfg_reg __iomem *)TX4939_CCFG_REG)
|
||||
#define tx4939_sramcptr tx4938_sramcptr
|
||||
#define tx4939_cryptoptr \
|
||||
((struct tx4939_crypto_reg __iomem *)TX4939_CRYPTO_REG)
|
||||
#define tx4939_vpcptr ((struct tx4939_vpc_reg __iomem *)TX4939_VPC_REG)
|
||||
|
||||
#define TX4939_REV_MAJ_MIN() \
|
||||
((__u32)__raw_readq(&tx4939_ccfgptr->crir) & 0x00ff)
|
||||
#define TX4939_REV_PCODE() \
|
||||
((__u32)__raw_readq(&tx4939_ccfgptr->crir) >> 16)
|
||||
#define TX4939_CCFG_BCFG() \
|
||||
((__u32)((__raw_readq(&tx4939_ccfgptr->ccfg) & TX4939_CCFG_BCFG_MASK) \
|
||||
>> 32))
|
||||
|
||||
#define tx4939_ccfg_clear(bits) tx4938_ccfg_clear(bits)
|
||||
#define tx4939_ccfg_set(bits) tx4938_ccfg_set(bits)
|
||||
#define tx4939_ccfg_change(change, new) tx4938_ccfg_change(change, new)
|
||||
|
||||
#define TX4939_EBUSC_CR(ch) TX4927_EBUSC_CR(ch)
|
||||
#define TX4939_EBUSC_BA(ch) TX4927_EBUSC_BA(ch)
|
||||
#define TX4939_EBUSC_SIZE(ch) TX4927_EBUSC_SIZE(ch)
|
||||
#define TX4939_EBUSC_WIDTH(ch) \
|
||||
(16 >> ((__u32)(TX4939_EBUSC_CR(ch) >> 20) & 0x1))
|
||||
|
||||
/* SCLK0 = MSTCLK * 429/19 * 16/245 / 2 (14.745MHz for MST 20MHz) */
|
||||
#define TX4939_SCLK0(mst) \
|
||||
((((mst) + 245/2) / 245UL * 429 * 16 + 19) / 19 / 2)
|
||||
|
||||
void tx4939_wdt_init(void);
|
||||
void tx4939_setup(void);
|
||||
void tx4939_time_init(unsigned int tmrnr);
|
||||
void tx4939_sio_init(unsigned int sclk, unsigned int cts_mask);
|
||||
void tx4939_spi_init(int busid);
|
||||
void tx4939_ethaddr_init(unsigned char *addr0, unsigned char *addr1);
|
||||
int tx4939_report_pciclk(void);
|
||||
void tx4939_report_pci1clk(void);
|
||||
struct pci_dev;
|
||||
int tx4939_pcic1_map_irq(const struct pci_dev *dev, u8 slot);
|
||||
int tx4939_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
|
||||
void tx4939_setup_pcierr_irq(void);
|
||||
void tx4939_irq_init(void);
|
||||
int tx4939_irq(void);
|
||||
void tx4939_mtd_init(int ch);
|
||||
void tx4939_ata_init(void);
|
||||
void tx4939_rtc_init(void);
|
||||
void tx4939_ndfmc_init(unsigned int hold, unsigned int spw,
|
||||
unsigned char ch_mask, unsigned char wide_mask);
|
||||
void tx4939_dmac_init(int memcpy_chan0, int memcpy_chan1);
|
||||
void tx4939_aclc_init(void);
|
||||
void tx4939_sramc_init(void);
|
||||
void tx4939_rng_init(void);
|
||||
|
||||
#endif /* __ASM_TXX9_TX4939_H */
|
||||
|
|
@ -4,6 +4,7 @@
|
|||
* Author: Paul Burton <paul.burton@mips.com>
|
||||
*/
|
||||
|
||||
#include <linux/bitfield.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/percpu.h>
|
||||
#include <linux/of.h>
|
||||
|
|
@ -97,7 +98,7 @@ void mips_cpc_lock_other(unsigned int core)
|
|||
curr_core = cpu_core(¤t_cpu_data);
|
||||
spin_lock_irqsave(&per_cpu(cpc_core_lock, curr_core),
|
||||
per_cpu(cpc_core_lock_flags, curr_core));
|
||||
write_cpc_cl_other(core << __ffs(CPC_Cx_OTHER_CORENUM));
|
||||
write_cpc_cl_other(FIELD_PREP(CPC_Cx_OTHER_CORENUM, core));
|
||||
|
||||
/*
|
||||
* Ensure the core-other region reflects the appropriate core &
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user