* refs/heads/tmp-96bf853:
FROMLIST: drivers/clocksource/timer-of: Remove __init markings
ANDROID: GKI: add symbol list for raviole
Linux 5.15.12
phonet/pep: refuse to enable an unbound pipe
tun: avoid double free in tun_free_netdev
hamradio: improve the incomplete fix to avoid NPD
hamradio: defer ax25 kfree after unregister_netdev
ax25: NPD bug when detaching AX25 device
r8152: sync ocp base
hwmon: (lm90) Do not report 'busy' status bit as alarm
hwmom: (lm90) Fix citical alarm status for MAX6680/MAX6681
pinctrl: mediatek: fix global-out-of-bounds issue
ASoC: rt5682: fix the wrong jack type detected
ASoC: SOF: Intel: pci-tgl: add ADL-N support
ASoC: SOF: Intel: pci-tgl: add new ADL-P variant
ASoC: tas2770: Fix setting of high sample rates
Input: goodix - add id->model mapping for the "9111" model
Input: elants_i2c - do not check Remark ID on eKTH3900/eKTH5312
Input: iqs626a - prohibit inlining of channel parsing functions
kfence: fix memory leak when cat kfence objects
arm64: dts: lx2160a: fix scl-gpios property name
KVM: VMX: Fix stale docs for kvm-intel.emulate_invalid_guest_state
netfs: fix parameter of cleanup()
f2fs: fix to do sanity check on last xattr entry in __f2fs_setxattr()
tee: optee: Fix incorrect page free bug
mm/damon/dbgfs: protect targets destructions with kdamond_lock
mm/hwpoison: clear MF_COUNT_INCREASED before retrying get_any_page()
mm, hwpoison: fix condition in free hugetlb page path
mm: mempolicy: fix THP allocations escaping mempolicy restrictions
mac80211: fix locking in ieee80211_start_ap error path
ksmbd: disable SMB2_GLOBAL_CAP_ENCRYPTION for SMB 3.1.1
ksmbd: fix uninitialized symbol 'pntsd_size'
ksmbd: fix error code in ndr_read_int32()
ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling
mmc: mmci: stm32: clear DLYB_CR after sending tuning command
mmc: core: Disable card detect during shutdown
mmc: meson-mx-sdhc: Set MANUAL_STOP for multi-block SDIO commands
mmc: sdhci-tegra: Fix switch to HS400ES mode
gpio: dln2: Fix interrupts when replugging the device
pinctrl: stm32: consider the GPIO offset to expose all the GPIO lines
KVM: VMX: Wake vCPU when delivering posted IRQ even if vCPU == this vCPU
KVM: VMX: Always clear vmx->fail on emulation_required
KVM: nVMX: Synthesize TRIPLE_FAULT for L2 if emulation is required
KVM: x86/mmu: Don't advance iterator after restart due to yielding
KVM: x86: Always set kvm_run->if_flag
platform/x86: intel_pmc_core: fix memleak on registration failure
platform/x86: amd-pmc: only use callbacks for suspend
x86/pkey: Fix undefined behaviour with PKRU_WD_BIT
tee: handle lookup of shm with reference count 0
parisc: Fix mask used to select futex spinlock
parisc: Correct completer in lws start
ipmi: fix initialization when workqueue allocation fails
ipmi: ssif: initialize ssif_info->client early
ipmi: bail out if init_srcu_struct fails
Input: atmel_mxt_ts - fix double free in mxt_read_info_block
ASoC: tegra: Restore headphones jack name on Nyan Big
ASoC: tegra: Add DAPM switches for headphones and mic jack
ASoC: meson: aiu: Move AIU_I2S_MISC hold setting to aiu-fifo-i2s
ALSA: hda/realtek: Fix quirk for Clevo NJ51CU
ALSA: hda/realtek: fix mute/micmute LEDs for a HP ProBook
ALSA: hda/realtek: Add new alc285-hp-amp-init model
ALSA: hda/realtek: Amp init fixup for HP ZBook 15 G6
ALSA: hda/hdmi: Disable silent stream on GLK
ALSA: rawmidi - fix the uninitalized user_pversion
ALSA: drivers: opl3: Fix incorrect use of vp->state
ALSA: jack: Check the return value of kstrdup()
x86/boot: Move EFI range reservation after cmdline parsing
Revert "x86/boot: Pull up cmdline preparation and early param parsing"
kernel/crash_core: suppress unknown crashkernel parameter warning
platform/x86/intel: Remove X86_PLATFORM_DRIVERS_INTEL
compiler.h: Fix annotation macro misplacement with Clang
uapi: Fix undefined __always_inline on non-glibc systems
ARM: 9160/1: NOMMU: Reload __secondary_data after PROCINFO_INITFUNC
hwmon: (lm90) Drop critical attribute support for MAX6654
hwmon: (lm90) Add basic support for TI TMP461
hwmon: (lm90) Introduce flag indicating extended temperature support
hwmon: (lm90) Prevent integer overflow/underflow in hysteresis calculations
hwmon: (lm90) Fix usage of CONFIG2 register in detect function
pinctrl: bcm2835: Change init order for gpio hogs
Input: elantech - fix stack out of bound access in elantech_change_report_id()
net: stmmac: dwmac-visconti: Fix value of ETHER_CLK_SEL_FREQ_SEL_2P5M
r8152: fix the force speed doesn't work for RTL8156
net: bridge: fix ioctl old_deviceless bridge argument
net: bridge: Use array_size() helper in copy_to_user()
net: stmmac: ptp: fix potentially overflowing expression
veth: ensure skb entering GRO are not cloned.
io_uring: zero iocb->ki_pos for stream file types
asix: fix wrong return value in asix_check_host_enable()
asix: fix uninit-value in asix_mdio_read()
sfc: falcon: Check null pointer of rx_queue->page_ring
sfc: Check null pointer of rx_queue->page_ring
net: ks8851: Check for error irq
drivers: net: smc911x: Check for error irq
fjes: Check for error irq
bonding: fix ad_actor_system option setting to default
gpio: virtio: remove timeout
ipmi: Fix UAF when uninstall ipmi_si and ipmi_msghandler module
igb: fix deadlock caused by taking RTNL in RPM resume path
net: skip virtio_net_hdr_set_proto if protocol already set
net: accept UFOv6 packages in virtio_net_hdr_to_skb
inet: fully convert sk->sk_rx_dst to RCU rules
ipv6: move inet6_sk(sk)->rx_dst_cookie to sk->sk_rx_dst_cookie
tcp: move inet->rx_dst_ifindex to sk->sk_rx_dst_ifindex
qlcnic: potential dereference null pointer of rx_queue->page_ring
net: marvell: prestera: fix incorrect structure access
net: marvell: prestera: fix incorrect return of port_find
ice: xsk: return xsk buffers back to pool when cleaning the ring
ice: Use xdp_buf instead of rx_buf for xsk zero-copy
ARM: dts: imx6qdl-wandboard: Fix Ethernet support
netfilter: fix regression in looped (broad|multi)cast's MAC handling
netfilter: nf_tables: fix use-after-free in nft_set_catchall_destroy()
RDMA/hns: Replace kfree() with kvfree()
IB/qib: Fix memory leak in qib_user_sdma_queue_pkts()
RDMA/hns: Fix RNR retransmission issue for HIP08
ASoC: meson: aiu: fifo: Add missing dma_coerce_mask_and_coherent()
drm/mediatek: hdmi: Perform NULL pointer check for mtk_hdmi_conf
ucounts: Fix rlimit max values check
spi: change clk_disable_unprepare to clk_unprepare
bus: sunxi-rsb: Fix shutdown
arm64: dts: allwinner: orangepi-zero-plus: fix PHY mode
PM: sleep: Fix error handling in dpm_prepare()
NFSD: Fix READDIR buffer overflow
HID: potential dereference of null pointer
HID: holtek: fix mouse probing
selftests: KVM: Fix non-x86 compiling
ext4: check for inconsistent extents between index and leaf block
ext4: check for out-of-order index extents in ext4_valid_extent_entries()
ext4: prevent partial update of the extent blocks
net: usb: lan78xx: add Allied Telesis AT29M2-AF
arm64: vdso32: require CROSS_COMPILE_COMPAT for gcc+bfd
FROMLIST: kbuild: install the modules.order for external modules
ANDROID: GKI: Export clocksource_mmio_init
ANDROID: GKI: Export sched_clock_register
Linux 5.15.11
xen/netback: don't queue unlimited number of packages
xen/netback: fix rx queue stall detection
xen/console: harden hvc_xen against event channel storms
xen/netfront: harden netfront against event channel storms
xen/blkfront: harden blkfront against event channel storms
Revert "xsk: Do not sleep in poll() when need_wakeup set"
selftests/damon: test debugfs file reads/writes with huge count
bus: ti-sysc: Fix variable set but not used warning for reinit_modules
io-wq: drop wqe lock before creating new worker
rcu: Mark accesses to rcu_state.n_force_qs
io-wq: check for wq exit after adding new worker task_work
io-wq: remove spurious bit clear on task_work addition
scsi: scsi_debug: Sanity check block descriptor length in resp_mode_select()
scsi: scsi_debug: Fix type in min_t to avoid stack OOB
scsi: scsi_debug: Don't call kcalloc() if size arg is zero
ovl: fix warning in ovl_create_real()
fuse: annotate lock in fuse_reverse_inval_entry()
media: mxl111sf: change mutex_init() location
USB: core: Make do_proc_control() and do_proc_bulk() killable
bpf: Fix extable address check.
bpf, x64: Factor out emission of REX byte in more cases
mptcp: add missing documented NL params
xsk: Do not sleep in poll() when need_wakeup set
ARM: dts: imx6ull-pinfunc: Fix CSI_DATA07__ESAI_TX0 pad name
can: m_can: pci: use custom bit timings for Elkhart Lake
can: m_can: make custom bittiming fields const
Revert "can: m_can: remove support for custom bit timing"
drm/amd/pm: fix reading SMU FW version from amdgpu_firmware_info on YC
drm/amdgpu: don't override default ECO_BITs setting
drm/amdgpu: correct register access for RLC_JUMP_TABLE_RESTORE
powerpc/module_64: Fix livepatching for RO modules
libata: if T_LENGTH is zero, dma direction should be DMA_NONE
perf inject: Fix segfault due to perf_data__fd() without open
perf inject: Fix segfault due to close without open
riscv: dts: unmatched: Add gpio card detect to mmc-spi-slot
riscv: dts: unleashed: Add gpio card detect to mmc-spi-slot
locking/rtmutex: Fix incorrect condition in rtmutex_spin_on_owner()
cifs: sanitize multiple delimiters in prepath
timekeeping: Really make sure wall_to_monotonic isn't positive
serial: 8250_fintek: Fix garbled text for console
iocost: Fix divide-by-zero on donation from low hweight cgroup
zonefs: add MODULE_ALIAS_FS
btrfs: fix missing blkdev_put() call in btrfs_scan_one_device()
btrfs: check WRITE_ERR when trying to read an extent buffer
btrfs: fix double free of anon_dev after failure to create subvolume
btrfs: fix memory leak in __add_inode_ref()
selinux: fix sleeping function called from invalid context
USB: serial: option: add Telit FN990 compositions
USB: serial: cp210x: fix CP2105 GPIO registration
usb: gadget: u_ether: fix race in setting MAC address in setup phase
usb: typec: tcpm: fix tcpm unregister port but leave a pending timer
usb: cdnsp: Fix lack of spin_lock_irqsave/spin_lock_restore
usb: cdnsp: Fix issue in cdnsp_log_ep trace event
usb: cdnsp: Fix incorrect calling of cdnsp_died function
usb: cdnsp: Fix incorrect status for control request
usb: xhci: Extend support for runtime power management for AMD's Yellow carp.
usb: xhci-mtk: fix list_del warning when enable list debug
PCI/MSI: Mask MSI-X vectors only on success
PCI/MSI: Clear PCI_MSIX_FLAGS_MASKALL on error
usb: dwc2: fix STM ID/VBUS detection startup delay in dwc2_driver_probe
USB: NO_LPM quirk Lenovo USB-C to Ethernet Adapher(RTL8153-04)
tty: n_hdlc: make n_hdlc_tty_wakeup() asynchronous
KVM: x86: Drop guest CPUID check for host initiated writes to MSR_IA32_PERF_CAPABILITIES
Revert "usb: early: convert to readl_poll_timeout_atomic()"
USB: gadget: bRequestType is a bitfield, not a enum
powerpc/85xx: Fix oops when CONFIG_FSL_PMC=n
bpf, selftests: Fix racing issue in btf_skc_cls_ingress test
bpf: Fix extable fixup offset.
arm64: kexec: Fix missing error code 'ret' warning in load_other_segments()
afs: Fix mmap
sit: do not call ipip6_dev_free() from sit_init_net()
net: systemport: Add global locking for descriptor lifecycle
net/smc: Prevent smc_release() from long blocking
net: Fix double 0x prefix print in SKB dump
dsa: mv88e6xxx: fix debug print for SPEED_UNFORCED
sfc_ef100: potential dereference of null pointer
net: stmmac: dwmac-rk: fix oob read in rk_gmac_setup
net/packet: rx_owner_map depends on pg_vec
netdevsim: Zero-initialize memory for new map's value in function nsim_bpf_map_alloc
ixgbe: set X550 MDIO speed before talking to PHY
ixgbe: Document how to enable NBASE-T support
igc: Fix typo in i225 LTR functions
igbvf: fix double free in `igbvf_probe`
igb: Fix removal of unicast MAC filters of VFs
soc/tegra: fuse: Fix bitwise vs. logical OR warning
mptcp: fix deadlock in __mptcp_push_pending()
mptcp: clear 'kern' flag from fallback sockets
mptcp: remove tcp ulp setsockopt support
drm/amd/pm: fix a potential gpu_metrics_table memory leak
drm/amd/display: Set exit_optimized_pwr_state for DCN31
ice: Don't put stale timestamps in the skb
ice: Use div64_u64 instead of div_u64 in adjfine
rds: memory leak in __rds_conn_create()
flow_offload: return EOPNOTSUPP for the unsupported mpls action type
net: stmmac: fix tc flower deletion for VLAN priority Rx steering
mac80211: fix lookup when adding AddBA extension element
cfg80211: Acquire wiphy mutex on regulatory work
mac80211: agg-tx: don't schedule_and_wake_txq() under sta->lock
drm/i915/display: Fix an unsigned subtraction which can never be negative.
drm/ast: potential dereference of null pointer
mptcp: never allow the PM to close a listener subflow
selftest/net/forwarding: declare NETIFS p9 p10
net: dsa: mv88e6xxx: Unforce speed & duplex in mac_link_down()
selftests/net: toeplitz: fix udp option
net/sched: sch_ets: don't remove idle classes from the round-robin list
drm: simpledrm: fix wrong unit with pixel clock
dmaengine: st_fdma: fix MODULE_ALIAS
dmaengine: idxd: fix missed completion on abort path
selftests: Fix IPv6 address bind tests
selftests: Fix raw socket bind tests with VRF
selftests: Add duplicate config only for MD5 VRF tests
net: hns3: fix race condition in debugfs
net: hns3: fix use-after-free bug in hclgevf_send_mbx_msg
selftests: icmp_redirect: pass xfail=0 to log_test()
netdevsim: don't overwrite read only ethtool parms
inet_diag: fix kernel-infoleak for UDP sockets
sch_cake: do not call cake_destroy() from cake_init()
s390/kexec_file: fix error handling when applying relocations
selftests: net: Correct ping6 expected rc from 2 to 1
Revert "drm/fb-helper: improve DRM fbdev emulation device names"
vdpa: Consider device id larger than 31
virtio/vsock: fix the transport to work with VMADDR_CID_ANY
virtio: always enter drivers/virtio/
iwlwifi: mvm: don't crash on invalid rate w/o STA
soc: imx: Register SoC device only on i.MX boards
clk: Don't parent clks until the parent is fully registered
arm64: dts: imx8mq: remove interconnect property from lcdif
ARM: socfpga: dts: fix qspi node compatible
ceph: initialize pathlen variable in reconnect_caps_cb
ceph: fix duplicate increment of opened_inodes metric
tee: amdtee: fix an IS_ERR() vs NULL bug
mac80211: track only QoS data frames for admission control
dmaengine: idxd: fix calling wq quiesce inside spinlock
dmaengine: idxd: add halt interrupt support
arm64: dts: rockchip: fix poweroff on helios64
arm64: dts: rockchip: fix audio-supply for Rock Pi 4
arm64: dts: rockchip: fix rk3399-leez-p710 vcc3v3-lan supply
arm64: dts: rockchip: fix rk3308-roc-cc vcc-sd supply
arm64: dts: rockchip: remove mmc-hs400-enhanced-strobe from rk3399-khadas-edge
pinctrl: amd: Fix wakeups when IRQ is shared with SCI
drm/i915/hdmi: Turn DP++ TMDS output buffers back on in encoder->shutdown()
drm/i915/hdmi: convert intel_hdmi_to_dev to intel_hdmi_to_i915
scsi: ufs: core: Retry START_STOP on UNIT_ATTENTION
btrfs: remove stale comment about the btrfs_show_devname
btrfs: update latest_dev when we create a sprout device
btrfs: use latest_dev in btrfs_show_devname
btrfs: convert latest_bdev type to btrfs_device and rename
audit: improve robustness of the audit queue handling
dm btree remove: fix use after free in rebalance_children()
ceph: fix up non-directory creation in SGID directories
arm64: dts: ten64: remove redundant interrupt declaration for gpio-keys
recordmcount.pl: look for jgnop instruction as well as bcrl on s390
s390/entry: fix duplicate tracking of irq nesting level
vdpa: check that offsets are within bounds
virtio_ring: Fix querying of maximum DMA mapping size for virtio device
vduse: check that offset is within bounds in get_config()
vduse: fix memory corruption in vduse_dev_ioctl()
bpf, selftests: Update test case for atomic cmpxchg on r0 with pointer
bpf: Fix kernel address leakage in atomic cmpxchg's r0 aux reg
bpf, selftests: Add test case trying to taint map value pointer
bpf: Make 32->64 bounds propagation slightly more robust
bpf: Fix signed bounds propagation after mov32
bpf, selftests: Add test case for atomic fetch on spilled pointer
bpf: Fix kernel address leakage in atomic fetch
firmware: arm_scpi: Fix string overflow in SCPI genpd driver
mac80211: validate extended element ID is present
mac80211: send ADDBA requests using the tid/queue of the aggregation session
mac80211: mark TX-during-stop for TX in in_reconfig
mac80211: fix regression in SSN handling of addba tx
mac80211: fix rate control for retransmitted frames
KVM: X86: Fix tlb flush for tdp in kvm_invalidate_pcid()
x86/kvm: remove unused ack_notifier callbacks
KVM: downgrade two BUG_ONs to WARN_ON_ONCE
KVM: selftests: Make sure kvm_create_max_vcpus test won't hit RLIMIT_NOFILE
KVM: VMX: clear vmx_x86_ops.sync_pir_to_irr if APICv is disabled
reset: tegra-bpmp: Revert Handle errors in BPMP response
BACKPORT: FROMGIT: scsi: ufs: core: Retry START_STOP on UNIT_ATTENTION
ANDROID: Kleaf: Fix build by exporting mixed-build-prefix
ANDROID: Reland "Kbuild: Support KBUILD_MIXED_TREE in Makefile.modfinal"
ANDROID: kbuild: add support for compiling external device trees
ANDROID: kbuild: add Kconfig support for external modules
Linux 5.15.10
perf inject: Fix itrace space allowed for new attributes
fuse: make sure reclaim doesn't write the inode
staging: most: dim2: use device release method
tracing: Fix a kmemleak false positive in tracing_map
drm/amdkfd: process_info lock not needed for svm
drm/amd/display: add connector type check for CRC source set
drm/amdkfd: fix double free mem structure
drm/amd/display: Fix for the no Audio bug with Tiled Displays
drm/amdgpu: check atomic flag to differeniate with legacy path
drm/amdgpu: cancel the correct hrtimer on exit
net: netlink: af_netlink: Prevent empty skb by adding a check on len.
i2c: rk3x: Handle a spurious start completion interrupt flag
parisc/agp: Annotate parisc agp init functions with __init
ALSA: hda/hdmi: fix HDA codec entry table order for ADL-P
ALSA: hda: Add Intel DG2 PCI ID and HDMI codec vid
loop: Use pr_warn_once() for loop_control_remove() warning
net/mlx4_en: Update reported link modes for 1/10G
Revert "tty: serial: fsl_lpuart: drop earlycon entry for i.MX8QXP"
s390/test_unwind: use raw opcode instead of invalid instruction
KVM: arm64: Save PSTATE early on exit
drm/msm/dp: Avoid unpowered AUX xfers that caused crashes
drm/msm/dsi: set default num_data_lanes
drm/msm/a6xx: Fix uinitialized use of gpu_scid
drm/msm: Fix null ptr access msm_ioctl_gem_submit()
i2c: virtio: fix completion handling
vmxnet3: fix minimum vectors alloc issue
ice: fix FDIR init missing when reset VF
RDMA/irdma: Don't arm the CQ more than two times if no CE for this CQ
RDMA/irdma: Report correct WC errors
RDMA/irdma: Fix a potential memory allocation issue in 'irdma_prm_add_pble_mem()'
RDMA/irdma: Fix a user-after-free in add_pble_prm
netfs: Fix lockdep warning from taking sb_writers whilst holding mmap_lock
perf bpf_skel: Do not use typedef to avoid error on old clang
clk: qcom: sm6125-gcc: Swap ops of ice and apps on sdcc1
dt-bindings: media: nxp,imx7-mipi-csi2: Drop bad if/then schema
inet: use #ifdef CONFIG_SOCK_RX_QUEUE_MAPPING consistently
mtd: rawnand: Fix nand_choose_best_timings() on unsupported interface
mtd: rawnand: Fix nand_erase_op delay
RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow
RDMA: Fix use-after-free in rxe_queue_cleanup
hwmon: (corsair-psu) fix plain integer used as NULL pointer
nfc: fix segfault in nfc_genl_dump_devices_done
ANDROID: GKI: fscrypt: add OEM data to struct fscrypt_operations
Linux 5.15.9
netfilter: selftest: conntrack_vrf.sh: fix file permission
ANDROID: Fix wrong pr_err type specifier in remove_memory_subsection
ANDROID: GKI: update symbol list for usleep_range change
ANDROID: GKI: update virtual device symbol list
UPSTREAM: arm64: dts: qcom: qrb5165-rb5: Add msm-id and board-id
UPSTREAM: arm64: dts: qcom: sdm845-db845c: Add msm-id and board-id
ANDROID: GKI: Add VLAN_8021Q
ANDROID: sched: add hook point in do_sched_yield()
Linux 5.15.8
bpf: Add selftests to cover packet access corner cases
clocksource/drivers/dw_apb_timer_of: Fix probe failure
misc: fastrpc: fix improper packet size calculation
irqchip: nvic: Fix offset for Interrupt Priority Offsets
irqchip/irq-gic-v3-its.c: Force synchronisation when issuing INVALL
aio: Fix incorrect usage of eventfd_signal_allowed()
irqchip/armada-370-xp: Fix support for Multi-MSI interrupts
irqchip/armada-370-xp: Fix return value of armada_370_xp_msi_alloc()
irqchip/aspeed-scu: Replace update_bits with write_bits.
csky: fix typo of fpu config macro
bus: mhi: core: Add support for forced PM resume
bus: mhi: pci_generic: Fix device recovery failed issue
nvmem: eeprom: at25: fix FRAM byte_len
misc: rtsx: Avoid mangling IRQ during runtime PM
iio: accel: kxcjk-1013: Fix possible memory leak in probe and remove
iio: ad7768-1: Call iio_trigger_notify_done() on error
iio: adc: axp20x_adc: fix charging current reporting on AXP22x
iio: adc: stm32: fix a current leak by resetting pcsel before disabling vdda
iio: at91-sama5d2: Fix incorrect sign extension
iio: dln2: Check return value of devm_iio_trigger_register()
iio: dln2-adc: Fix lockdep complaint
iio: itg3200: Call iio_trigger_notify_done() on error
iio: kxsd9: Don't return error code in trigger handler
iio: ltr501: Don't return error code in trigger handler
iio: mma8452: Fix trigger reference couting
iio: stk3310: Don't return error code in interrupt handler
iio: trigger: stm32-timer: fix MODULE_ALIAS
iio: trigger: Fix reference counting
iio: gyro: adxrs290: fix data signedness
xhci: avoid race between disable slot command and host runtime suspend
usb: core: config: using bit mask instead of individual bits
xhci: Remove CONFIG_USB_DEFAULT_PERSIST to prevent xHCI from runtime suspending
usb: core: config: fix validation of wMaxPacketValue entries
Revert "usb: dwc3: dwc3-qcom: Enable tx-fifo-resize property by default"
USB: gadget: zero allocate endpoint 0 buffers
USB: gadget: detect too-big endpoint 0 requests
selftests/fib_tests: Rework fib_rp_filter_test()
net/qla3xxx: fix an error code in ql_adapter_up()
net, neigh: clear whole pneigh_entry at alloc time
net: fec: only clear interrupt of handling queue in fec_enet_rx_queue()
net: altera: set a couple error code in probe()
net: cdc_ncm: Allow for dwNtbOutMaxSize to be unset or zero
tools build: Remove needless libpython-version feature check that breaks test-all fast path
dt-bindings: net: Reintroduce PHY no lane swap binding
Documentation/locking/locktypes: Update migrate_disable() bits.
perf tools: Fix SMT detection fast read path
drm/amd/display: Fix DPIA outbox timeout after S3/S4/reset
Revert "PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge"
i40e: Fix NULL pointer dereference in i40e_dbg_dump_desc
bpf, sockmap: Re-evaluate proto ops when psock is removed from sockmap
mtd: rawnand: fsmc: Fix timing computation
mtd: rawnand: fsmc: Take instruction delay into account
i40e: Fix pre-set max number of queues for VF
i40e: Fix failed opcode appearing if handling messages from VF
clk: qcom: clk-alpha-pll: Don't reconfigure running Trion
clk: imx: use module_platform_driver
hwmon: (dell-smm) Fix warning on /proc/i8k creation error
RDMA/hns: Do not destroy QP resources in the hw resetting phase
RDMA/hns: Do not halt commands during reset until later
ASoC: codecs: wcd934x: return correct value from mixer put
ASoC: codecs: wcd934x: handle channel mappping list correctly
ASoC: codecs: wsa881x: fix return values from kcontrol put
ASoC: qdsp6: q6routing: Fix return value from msm_routing_put_audio_mixer
ASoC: rt5682: Fix crash due to out of scope stack vars
PM: runtime: Fix pm_runtime_active() kerneldoc comment
qede: validate non LSO skb length
ALSA: usb-audio: Reorder snd_djm_devices[] entries
scsi: scsi_debug: Fix buffer size of REPORT ZONES command
scsi: pm80xx: Do not call scsi_remove_host() in pm8001_alloc()
block: fix ioprio_get(IOPRIO_WHO_PGRP) vs setuid(2)
i2c: mpc: Use atomic read and fix break condition
tracefs: Set all files to the same group ownership as the mount option
aio: fix use-after-free due to missing POLLFREE handling
aio: keep poll requests on waitqueue until completed
signalfd: use wake_up_pollfree()
binder: use wake_up_pollfree()
wait: add wake_up_pollfree()
io_uring: ensure task_work gets run as part of cancelations
libata: add horkage for ASMedia 1092
drm/syncobj: Deal with signalled fences in drm_syncobj_find_fence.
thermal: int340x: Fix VCoRefLow MMIO bit offset for TGL
clk: qcom: regmap-mux: fix parent clock lookup
mmc: renesas_sdhi: initialize variable properly when tuning
hwmon: (pwm-fan) Ensure the fan going on in .probe()
selftests: KVM: avoid failures due to reserved HyperTransport region
tracefs: Have new files inherit the ownership of their parent
nfsd: Fix nsfd startup race (again)
nfsd: fix use-after-free due to delegation race
md: fix update super 1.0 on rdev size change
perf intel-pt: Fix error timestamp setting on the decoder error path
perf intel-pt: Fix missing 'instruction' events with 'q' option
perf intel-pt: Fix next 'err' value, walking trace
perf intel-pt: Fix state setting when receiving overflow (OVF) packet
perf intel-pt: Fix intel_pt_fup_event() assumptions about setting state type
perf intel-pt: Fix sync state when a PSB (synchronization) packet is found
perf intel-pt: Fix some PGE (packet generation enable/control flow packets) usage
btrfs: free exchange changeset on failures
btrfs: replace the BUG_ON in btrfs_del_root_ref with proper error handling
btrfs: fix re-dirty process of tree-log nodes
btrfs: clear extent buffer uptodate when we fail to write it
scsi: qla2xxx: Format log strings only if needed
cifs: Fix crash on unload of cifs_arc4.ko
ALSA: pcm: oss: Handle missing errors in snd_pcm_oss_change_params*()
ALSA: pcm: oss: Limit the period size to 16MB
ALSA: pcm: oss: Fix negative period/buffer sizes
ALSA: hda/realtek: Fix quirk for TongFang PHxTxX1
ALSA: hda/realtek - Add headset Mic support for Lenovo ALC897 platform
ALSA: ctl: Fix copy of updated id with element read/write
mm: bdi: initialize bdi_min_ratio when bdi is unregistered
mm/slub: fix endianness bug for alloc/free_traces attributes
mm/damon/core: fix fake load reports due to uninterruptible sleeps
timers: implement usleep_idle_range()
KVM: x86: Wait for IPIs to be delivered when handling Hyper-V TLB flush hypercall
KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI req
KVM: x86: Don't WARN if userspace mucks with RCX during string I/O exit
net: mvpp2: fix XDP rx queues registering
net/sched: fq_pie: prevent dismantle issue
net: dsa: felix: Fix memory leak in felix_setup_mmio_filtering
net: dsa: mv88e6xxx: error handling for serdes_power functions
net: bcm4908: Handle dma_set_coherent_mask error codes
devlink: fix netns refcount leak in devlink_nl_cmd_reload()
IB/hfi1: Correct guard on eager buffer deallocation
iavf: Fix reporting when setting descriptor count
iavf: restore MSI state on reset
netfilter: conntrack: annotate data-races around ct->timeout
netfilter: nft_exthdr: break evaluation if setting TCP option fails
udp: using datalen to cap max gso segments
seg6: fix the iif in the IPv6 socket control block
nfp: Fix memory leak in nfp_cpp_area_cache_add()
bonding: make tx_rebalance_counter an atomic
ethtool: do not perform operations on net devices being unregistered
ice: ignore dropped packets during init
bpf: Fix the off-by-two error in range markings
bpf: Make sure bpf_disable_instrumentation() is safe vs preemption.
bpf, sockmap: Attach map progs to psock early for feature probes
bpf, x86: Fix "no previous prototype" warning
vrf: don't run conntrack on vrf with !dflt qdisc
selftests: netfilter: add a vrf+conntrack testcase
nfc: fix potential NULL pointer deref in nfc_genl_dump_ses_done
platform/x86: amd-pmc: Fix s2idle failures on certain AMD laptops
x86/sme: Explicitly map new EFI memmap table as encrypted
net: dsa: mv88e6xxx: allow use of PHYs on CPU and DSA ports
net: dsa: mv88e6xxx: fix "don't use PHY_DETECT on internal PHY's"
can: m_can: Disable and ignore ELO interrupt
can: m_can: pci: fix iomap_read_fifo() and iomap_write_fifo()
can: m_can: pci: fix incorrect reference clock rate
can: m_can: m_can_read_fifo: fix memory leak in error branch
can: pch_can: pch_can_rx_normal: fix use after free
can: sja1000: fix use after free in ems_pcmcia_add_card()
can: kvaser_pciefd: kvaser_pciefd_rx_error_frame(): increase correct stats->{rx,tx}_errors counter
can: kvaser_usb: get CAN clock frequency from device
IB/hfi1: Fix leak of rcvhdrtail_dummy_kvaddr
IB/hfi1: Fix early init panic
IB/hfi1: Insure use of smp_processor_id() is preempt disabled
nft_set_pipapo: Fix bucket load in AVX2 lookup routine for six 8-bit groups
platform/x86/intel: hid: add quirk to support Surface Go 3
HID: Ignore battery for Elan touchscreen on Asus UX550VE
HID: sony: fix error path in probe
mmc: spi: Add device-tree SPI IDs
mtd: dataflash: Add device-tree SPI IDs
HID: check for valid USB device for many HID drivers
HID: wacom: fix problems when device is not a valid USB device
HID: bigbenff: prevent null pointer dereference
HID: add USB_HID dependancy on some USB HID drivers
HID: add USB_HID dependancy to hid-chicony
HID: add USB_HID dependancy to hid-prodikeys
HID: add hid_is_usb() function to make it simpler for USB detection
HID: intel-ish-hid: ipc: only enable IRQ wakeup when requested
HID: google: add eel USB id
HID: quirks: Add quirk for the Microsoft Surface 3 type-cover
usb: gadget: uvc: fix multiple opens
UPSTREAM: tracefs: Set all files to the same group ownership as the mount option
UPSTREAM: tracefs: Have new files inherit the ownership of their parent
ANDROID: Fix wrong pr_err type specifier in add_memory_subsection
ANDROID: Kleaf: Fix branch-specific toolchain_version
ANDROID: move CLANG_VERSION definition to build.config.constants
ANDROID: clang: update to 14.0.0
FROMGIT: clk: Don't parent clks until the parent is fully registered
ANDROID: sched: Introducing PELT multiplier
ANDROID: mm/memory_hotplug: Relax remove_memory_subsection error checking
ANDROID: mm/memory_hotplug: fix check for proper subsection removal
ANDROID: mm/memory_hotplug: implement {add/remove}_memory_subsection
FROMLIST: KVM: arm64: Use defined value for SCTLR_ELx_EE
FROMLIST: KVM: arm64: Fix comment on barrier in kvm_psci_vcpu_on()
FROMLIST: KVM: arm64: Fix comment for kvm_reset_vcpu()
ANDROID: allmodconfig: disable WERROR
Revert "ANDROID: Revert "Enable '-Werror' by default for all kernel builds""
FROMLIST: irqchip/gic-v3-its: Mark some in-memory data structures as 'decrypted'
FROMLIST: KVM: arm64: pkvm: Stub io map functions
FROMLIST: KVM: arm64: Make __io_map_base static
FROMLIST: KVM: arm64: Make the hyp memory pool static
FROMLIST: KVM: arm64: pkvm: Disable GICv2 support
FROMLIST: KVM: arm64: pkvm: Fix hyp_pool max order
FROMLIST: KVM: arm64: pkvm: Unshare guest structs during teardown
FROMLIST: KVM: arm64: Expose unshare hypercall to the host
FROMLIST: KVM: arm64: Implement do_unshare() helper for unsharing memory
FROMLIST: KVM: arm64: Implement __pkvm_host_share_hyp() using do_share()
FROMLIST: KVM: arm64: Implement do_share() helper for sharing memory
FROMLIST: KVM: arm64: Introduce wrappers for host and hyp spin lock accessors
FROMLIST: KVM: arm64: Extend pkvm_page_state enumeration to handle absent pages
FROMLIST: KVM: arm64: pkvm: Refcount the pages shared with EL2
FROMLIST: KVM: arm64: Introduce kvm_share_hyp()
FROMLIST: KVM: arm64: Implement kvm_pgtable_hyp_unmap() at EL2
FROMLIST: KVM: arm64: Hook up ->page_count() for hypervisor stage-1 page-table
FROMLIST: KVM: arm64: Fixup hyp stage-1 refcount
FROMLIST: KVM: arm64: Refcount hyp stage-1 pgtable pages
FROMLIST: KVM: arm64: Provide {get,put}_page() stubs for early hyp allocator
FROMLIST: KVM: arm64: Check if running in VHE from kvm_host_owns_hyp_mappings()
FROMLIST: virtio_ring: Fix querying of maximum DMA mapping size for virtio device
FROMGIT: KVM: Drop stale kvm_is_transparent_hugepage() declaration
FROMGIT: KVM: arm64: Move host EL1 code out of hyp/ directory
FROMGIT: KVM: arm64: Generate hyp_constants.h for the host
FROMGIT: arm64: Add missing include of asm/cpufeature.h to asm/mmu.h
FROMGIT: KVM: arm64: Constify kvm_io_gic_ops
FROMGIT: KVM: arm64: Add minimal handling for the ARMv8.7 PMU
FROMGIT: KVM: arm64: Drop vcpu->arch.has_run_once for vcpu->pid
FROMGIT: KVM: arm64: Merge kvm_arch_vcpu_run_pid_change() and kvm_vcpu_first_run_init()
FROMGIT: KVM: arm64: Restructure the point where has_run_once is advertised
FROMGIT: KVM: arm64: Move kvm_arch_vcpu_run_pid_change() out of line
BACKPORT: FROMGIT: KVM: arm64: Move SVE state mapping at HYP to finalize-time
FROMGIT: arm64/fpsimd: Document the use of TIF_FOREIGN_FPSTATE by KVM
FROMGIT: KVM: arm64: Stop mapping current thread_info at EL2
FROMGIT: KVM: arm64: Introduce flag shadowing TIF_FOREIGN_FPSTATE
BACKPORT: FROMGIT: KVM: arm64: Remove unused __sve_save_state
FROMGIT: KVM: arm64: Get rid of host SVE tracking/saving
FROMGIT: KVM: arm64: Reorder vcpu flag definitions
ANDROID: Remove LOCALVERSION
Conflicts:
Documentation/devicetree/bindings
Documentation/devicetree/bindings/media/nxp,imx7-mipi-csi2.yaml
Documentation/devicetree/bindings/net/ethernet-phy.yaml
Kconfig
Makefile
drivers/bus/mhi/core/pm.c
drivers/clk/qcom/common.c
drivers/virtio/virtio_ring.c
scripts/Makefile.lib
scripts/Makefile.modfinal
Upstream-Build: ks_qcom-android13-5.15-keystone-qcom-release@8043401 TKQ2.220104.001
Change-Id: Iaa799c27ecf23e6655bdcc660a0248f92a7ba7c4
Signed-off-by: Blagovest Kolenichev <quic_c_bkolen@quicinc.com>
525 lines
19 KiB
Makefile
525 lines
19 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
# Backward compatibility
|
|
asflags-y += $(EXTRA_AFLAGS)
|
|
ccflags-y += $(EXTRA_CFLAGS)
|
|
cppflags-y += $(EXTRA_CPPFLAGS)
|
|
ldflags-y += $(EXTRA_LDFLAGS)
|
|
|
|
# flags that take effect in current and sub directories
|
|
KBUILD_AFLAGS += $(subdir-asflags-y)
|
|
KBUILD_CFLAGS += $(subdir-ccflags-y)
|
|
|
|
# Figure out what we need to build from the various variables
|
|
# ===========================================================================
|
|
|
|
# When an object is listed to be built compiled-in and modular,
|
|
# only build the compiled-in version
|
|
obj-m := $(filter-out $(obj-y),$(obj-m))
|
|
|
|
# Libraries are always collected in one lib file.
|
|
# Filter out objects already built-in
|
|
lib-y := $(filter-out $(obj-y), $(sort $(lib-y) $(lib-m)))
|
|
|
|
# Subdirectories we need to descend into
|
|
subdir-ym := $(sort $(subdir-y) $(subdir-m) \
|
|
$(patsubst %/,%, $(filter %/, $(obj-y) $(obj-m))))
|
|
|
|
# Handle objects in subdirs:
|
|
# - If we encounter foo/ in $(obj-y), replace it by foo/built-in.a and
|
|
# foo/modules.order
|
|
# - If we encounter foo/ in $(obj-m), replace it by foo/modules.order
|
|
#
|
|
# Generate modules.order to determine modorder. Unfortunately, we don't have
|
|
# information about ordering between -y and -m subdirs. Just put -y's first.
|
|
|
|
ifdef need-modorder
|
|
obj-m := $(patsubst %/,%/modules.order, $(filter %/, $(obj-y)) $(obj-m))
|
|
else
|
|
obj-m := $(filter-out %/, $(obj-m))
|
|
endif
|
|
|
|
ifdef need-builtin
|
|
obj-y := $(patsubst %/, %/built-in.a, $(obj-y))
|
|
else
|
|
obj-y := $(filter-out %/, $(obj-y))
|
|
endif
|
|
|
|
# Expand $(foo-objs) $(foo-y) etc. by replacing their individuals
|
|
suffix-search = $(strip $(foreach s, $3, $($(1:%$(strip $2)=%$s))))
|
|
# List composite targets that are constructed by combining other targets
|
|
multi-search = $(sort $(foreach m, $1, $(if $(call suffix-search, $m, $2, $3 -), $m)))
|
|
# List primitive targets that are compiled from source files
|
|
real-search = $(foreach m, $1, $(if $(call suffix-search, $m, $2, $3 -), $(call suffix-search, $m, $2, $3), $m))
|
|
|
|
# If $(foo-objs), $(foo-y), $(foo-m), or $(foo-) exists, foo.o is a composite object
|
|
multi-obj-y := $(call multi-search, $(obj-y), .o, -objs -y)
|
|
multi-obj-m := $(call multi-search, $(obj-m), .o, -objs -y -m)
|
|
multi-obj-ym := $(multi-obj-y) $(multi-obj-m)
|
|
|
|
# Replace multi-part objects by their individual parts,
|
|
# including built-in.a from subdirectories
|
|
real-obj-y := $(call real-search, $(obj-y), .o, -objs -y)
|
|
real-obj-m := $(call real-search, $(obj-m), .o, -objs -y -m)
|
|
|
|
always-y += $(always-m)
|
|
|
|
# hostprogs-always-y += foo
|
|
# ... is a shorthand for
|
|
# hostprogs += foo
|
|
# always-y += foo
|
|
hostprogs += $(hostprogs-always-y) $(hostprogs-always-m)
|
|
always-y += $(hostprogs-always-y) $(hostprogs-always-m)
|
|
|
|
# userprogs-always-y is likewise.
|
|
userprogs += $(userprogs-always-y) $(userprogs-always-m)
|
|
always-y += $(userprogs-always-y) $(userprogs-always-m)
|
|
|
|
# DTB
|
|
# If CONFIG_OF_ALL_DTBS is enabled, all DT blobs are built
|
|
dtb-$(CONFIG_OF_ALL_DTBS) += $(dtb-)
|
|
|
|
# Composite DTB (i.e. DTB constructed by overlay)
|
|
multi-dtb-y := $(call multi-search, $(dtb-y), .dtb, -dtbs)
|
|
# Primitive DTB compiled from *.dts
|
|
real-dtb-y := $(call real-search, $(dtb-y), .dtb, -dtbs)
|
|
# Base DTB that overlay is applied onto (each first word of $(*-dtbs) expansion)
|
|
base-dtb-y := $(foreach m, $(multi-dtb-y), $(firstword $(call suffix-search, $m, .dtb, -dtbs)))
|
|
|
|
always-y += $(dtb-y)
|
|
|
|
ifneq ($(CHECK_DTBS),)
|
|
always-y += $(patsubst %.dtb,%.dt.yaml, $(real-dtb-y))
|
|
always-y += $(patsubst %.dtbo,%.dt.yaml, $(real-dtb-y))
|
|
endif
|
|
|
|
# Add subdir path
|
|
|
|
extra-y := $(addprefix $(obj)/,$(extra-y))
|
|
always-y := $(addprefix $(obj)/,$(always-y))
|
|
targets := $(addprefix $(obj)/,$(targets))
|
|
obj-m := $(addprefix $(obj)/,$(obj-m))
|
|
lib-y := $(addprefix $(obj)/,$(lib-y))
|
|
real-obj-y := $(addprefix $(obj)/,$(real-obj-y))
|
|
real-obj-m := $(addprefix $(obj)/,$(real-obj-m))
|
|
multi-obj-m := $(addprefix $(obj)/, $(multi-obj-m))
|
|
multi-dtb-y := $(addprefix $(obj)/, $(multi-dtb-y))
|
|
real-dtb-y := $(addprefix $(obj)/, $(real-dtb-y))
|
|
subdir-ym := $(addprefix $(obj)/,$(subdir-ym))
|
|
|
|
# Finds the multi-part object the current object will be linked into.
|
|
# If the object belongs to two or more multi-part objects, list them all.
|
|
modname-multi = $(sort $(foreach m,$(multi-obj-ym),\
|
|
$(if $(filter $*.o, $(call suffix-search, $m, .o, -objs -y -m)),$(m:.o=))))
|
|
|
|
__modname = $(if $(modname-multi),$(modname-multi),$(basetarget))
|
|
|
|
modname = $(subst $(space),:,$(__modname))
|
|
modfile = $(addprefix $(obj)/,$(__modname))
|
|
|
|
# target with $(obj)/ and its suffix stripped
|
|
target-stem = $(basename $(patsubst $(obj)/%,%,$@))
|
|
|
|
# These flags are needed for modversions and compiling, so we define them here
|
|
# $(modname_flags) defines KBUILD_MODNAME as the name of the module it will
|
|
# end up in (or would, if it gets compiled in)
|
|
name-fix-token = $(subst $(comma),_,$(subst -,_,$1))
|
|
name-fix = $(call stringify,$(call name-fix-token,$1))
|
|
basename_flags = -DKBUILD_BASENAME=$(call name-fix,$(basetarget))
|
|
modname_flags = -DKBUILD_MODNAME=$(call name-fix,$(modname)) \
|
|
-D__KBUILD_MODNAME=kmod_$(call name-fix-token,$(modname))
|
|
modfile_flags = -DKBUILD_MODFILE=$(call stringify,$(modfile))
|
|
|
|
_c_flags = $(filter-out $(CFLAGS_REMOVE_$(target-stem).o), \
|
|
$(filter-out $(ccflags-remove-y), \
|
|
$(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(ccflags-y)) \
|
|
$(CFLAGS_$(target-stem).o))
|
|
_a_flags = $(filter-out $(AFLAGS_REMOVE_$(target-stem).o), \
|
|
$(filter-out $(asflags-remove-y), \
|
|
$(KBUILD_CPPFLAGS) $(KBUILD_AFLAGS) $(asflags-y)) \
|
|
$(AFLAGS_$(target-stem).o))
|
|
_cpp_flags = $(KBUILD_CPPFLAGS) $(cppflags-y) $(CPPFLAGS_$(target-stem).lds)
|
|
|
|
#
|
|
# Enable gcov profiling flags for a file, directory or for all files depending
|
|
# on variables GCOV_PROFILE_obj.o, GCOV_PROFILE and CONFIG_GCOV_PROFILE_ALL
|
|
# (in this order)
|
|
#
|
|
ifeq ($(CONFIG_GCOV_KERNEL),y)
|
|
_c_flags += $(if $(patsubst n%,, \
|
|
$(GCOV_PROFILE_$(basetarget).o)$(GCOV_PROFILE)$(CONFIG_GCOV_PROFILE_ALL)), \
|
|
$(CFLAGS_GCOV))
|
|
endif
|
|
|
|
#
|
|
# Enable address sanitizer flags for kernel except some files or directories
|
|
# we don't want to check (depends on variables KASAN_SANITIZE_obj.o, KASAN_SANITIZE)
|
|
#
|
|
ifeq ($(CONFIG_KASAN),y)
|
|
ifneq ($(CONFIG_KASAN_HW_TAGS),y)
|
|
_c_flags += $(if $(patsubst n%,, \
|
|
$(KASAN_SANITIZE_$(basetarget).o)$(KASAN_SANITIZE)y), \
|
|
$(CFLAGS_KASAN), $(CFLAGS_KASAN_NOSANITIZE))
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CONFIG_UBSAN),y)
|
|
_c_flags += $(if $(patsubst n%,, \
|
|
$(UBSAN_SANITIZE_$(basetarget).o)$(UBSAN_SANITIZE)$(CONFIG_UBSAN_SANITIZE_ALL)), \
|
|
$(CFLAGS_UBSAN))
|
|
endif
|
|
|
|
ifeq ($(CONFIG_KCOV),y)
|
|
_c_flags += $(if $(patsubst n%,, \
|
|
$(KCOV_INSTRUMENT_$(basetarget).o)$(KCOV_INSTRUMENT)$(CONFIG_KCOV_INSTRUMENT_ALL)), \
|
|
$(CFLAGS_KCOV))
|
|
endif
|
|
|
|
#
|
|
# Enable KCSAN flags except some files or directories we don't want to check
|
|
# (depends on variables KCSAN_SANITIZE_obj.o, KCSAN_SANITIZE)
|
|
#
|
|
ifeq ($(CONFIG_KCSAN),y)
|
|
_c_flags += $(if $(patsubst n%,, \
|
|
$(KCSAN_SANITIZE_$(basetarget).o)$(KCSAN_SANITIZE)y), \
|
|
$(CFLAGS_KCSAN))
|
|
endif
|
|
|
|
# $(srctree)/$(src) for including checkin headers from generated source files
|
|
# $(objtree)/$(obj) for including generated headers from checkin source files
|
|
ifeq ($(KBUILD_EXTMOD),)
|
|
ifdef building_out_of_srctree
|
|
_c_flags += -I $(srctree)/$(src) -I $(objtree)/$(obj)
|
|
_a_flags += -I $(srctree)/$(src) -I $(objtree)/$(obj)
|
|
_cpp_flags += -I $(srctree)/$(src) -I $(objtree)/$(obj)
|
|
endif
|
|
endif
|
|
|
|
part-of-module = $(if $(filter $(basename $@).o, $(real-obj-m)),y)
|
|
quiet_modtag = $(if $(part-of-module),[M], )
|
|
|
|
modkern_cflags = \
|
|
$(if $(part-of-module), \
|
|
$(KBUILD_CFLAGS_MODULE) $(CFLAGS_MODULE), \
|
|
$(KBUILD_CFLAGS_KERNEL) $(CFLAGS_KERNEL) $(modfile_flags))
|
|
|
|
modkern_aflags = $(if $(part-of-module), \
|
|
$(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE), \
|
|
$(KBUILD_AFLAGS_KERNEL) $(AFLAGS_KERNEL))
|
|
|
|
c_flags = -Wp,-MMD,$(depfile) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) \
|
|
-include $(srctree)/include/linux/compiler_types.h \
|
|
$(_c_flags) $(modkern_cflags) \
|
|
$(basename_flags) $(modname_flags)
|
|
|
|
a_flags = -Wp,-MMD,$(depfile) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) \
|
|
$(_a_flags) $(modkern_aflags)
|
|
|
|
cpp_flags = -Wp,-MMD,$(depfile) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) \
|
|
$(_cpp_flags)
|
|
|
|
ld_flags = $(KBUILD_LDFLAGS) $(ldflags-y) $(LDFLAGS_$(@F))
|
|
|
|
# ANDROID: Allow DTC_INCLUDE to be set by the BUILD_CONFIG. This allows one to
|
|
# compile an out-of-tree device tree.
|
|
DTC_INCLUDE += $(srctree)/scripts/dtc/include-prefixes $(KBUILD_DTC_INCLUDE)
|
|
|
|
dtc_cpp_flags = -Wp,-MMD,$(depfile).pre.tmp -nostdinc \
|
|
$(addprefix -I,$(DTC_INCLUDE)) \
|
|
-undef -D__DTS__
|
|
|
|
ifeq ($(CONFIG_LTO_CLANG),y)
|
|
# With CONFIG_LTO_CLANG, .o files in modules might be LLVM bitcode, so we
|
|
# need to run LTO to compile them into native code (.lto.o) before further
|
|
# processing.
|
|
mod-prelink-ext := .lto
|
|
endif
|
|
|
|
# Objtool arguments are also needed for modfinal with LTO, so we define
|
|
# then here to avoid duplication.
|
|
objtool_args = \
|
|
$(if $(CONFIG_UNWINDER_ORC),orc generate,check) \
|
|
$(if $(part-of-module), --module) \
|
|
$(if $(CONFIG_FRAME_POINTER),, --no-fp) \
|
|
$(if $(CONFIG_GCOV_KERNEL)$(CONFIG_LTO_CLANG), --no-unreachable)\
|
|
$(if $(CONFIG_RETPOLINE), --retpoline) \
|
|
$(if $(CONFIG_X86_SMAP), --uaccess) \
|
|
$(if $(CONFIG_FTRACE_MCOUNT_USE_OBJTOOL), --mcount)
|
|
|
|
# Useful for describing the dependency of composite objects
|
|
# Usage:
|
|
# $(call multi_depend, multi_used_targets, suffix_to_remove, suffix_to_add)
|
|
define multi_depend
|
|
$(foreach m, $(notdir $1), \
|
|
$(eval $(obj)/$m: \
|
|
$(addprefix $(obj)/, $(foreach s, $3, $($(m:%$(strip $2)=%$(s)))))))
|
|
endef
|
|
|
|
quiet_cmd_copy = COPY $@
|
|
cmd_copy = cp $< $@
|
|
|
|
# Shipped files
|
|
# ===========================================================================
|
|
# 'cp' preserves permissions. If you use it to copy a file in read-only srctree,
|
|
# the copy would be read-only as well, leading to an error when executing the
|
|
# rule next time. Use 'cat' instead in order to generate a writable file.
|
|
|
|
quiet_cmd_shipped = SHIPPED $@
|
|
cmd_shipped = cat $< > $@
|
|
|
|
$(obj)/%: $(src)/%_shipped
|
|
$(call cmd,shipped)
|
|
|
|
# Commands useful for building a boot image
|
|
# ===========================================================================
|
|
#
|
|
# Use as following:
|
|
#
|
|
# target: source(s) FORCE
|
|
# $(if_changed,ld/objcopy/gzip)
|
|
#
|
|
# and add target to 'targets' so that we know we have to
|
|
# read in the saved command line
|
|
|
|
# Linking
|
|
# ---------------------------------------------------------------------------
|
|
|
|
quiet_cmd_ld = LD $@
|
|
cmd_ld = $(LD) $(ld_flags) $(real-prereqs) -o $@
|
|
|
|
# Archive
|
|
# ---------------------------------------------------------------------------
|
|
|
|
quiet_cmd_ar = AR $@
|
|
cmd_ar = rm -f $@; $(AR) cDPrsT $@ $(real-prereqs)
|
|
|
|
# Objcopy
|
|
# ---------------------------------------------------------------------------
|
|
|
|
quiet_cmd_objcopy = OBJCOPY $@
|
|
cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
|
|
|
|
# Gzip
|
|
# ---------------------------------------------------------------------------
|
|
|
|
quiet_cmd_gzip = GZIP $@
|
|
cmd_gzip = cat $(real-prereqs) | $(KGZIP) -n -f -9 > $@
|
|
|
|
# DTC
|
|
# ---------------------------------------------------------------------------
|
|
DTC ?= $(objtree)/scripts/dtc/dtc
|
|
DTC_FLAGS += -Wno-interrupt_provider
|
|
|
|
# Disable noisy checks by default
|
|
ifeq ($(findstring 1,$(KBUILD_EXTRA_WARN)),)
|
|
DTC_FLAGS += -Wno-unit_address_vs_reg \
|
|
-Wno-unit_address_format \
|
|
-Wno-avoid_unnecessary_addr_size \
|
|
-Wno-alias_paths \
|
|
-Wno-graph_child_address \
|
|
-Wno-simple_bus_reg \
|
|
-Wno-unique_unit_address
|
|
endif
|
|
|
|
ifneq ($(findstring 2,$(KBUILD_EXTRA_WARN)),)
|
|
DTC_FLAGS += -Wnode_name_chars_strict \
|
|
-Wproperty_name_chars_strict \
|
|
-Winterrupt_provider
|
|
endif
|
|
|
|
DTC_FLAGS += $(DTC_FLAGS_$(basetarget))
|
|
|
|
# Set -@ if the target is a base DTB that overlay is applied onto
|
|
DTC_FLAGS += $(if $(filter $(patsubst $(obj)/%,%,$@), $(base-dtb-y)), -@)
|
|
|
|
# Generate an assembly file to wrap the output of the device tree compiler
|
|
quiet_cmd_dt_S_dtb= DTB $@
|
|
cmd_dt_S_dtb= \
|
|
{ \
|
|
echo '\#include <asm-generic/vmlinux.lds.h>'; \
|
|
echo '.section .dtb.init.rodata,"a"'; \
|
|
echo '.balign STRUCT_ALIGNMENT'; \
|
|
echo '.global __dtb_$(subst -,_,$(*F))_begin'; \
|
|
echo '__dtb_$(subst -,_,$(*F))_begin:'; \
|
|
echo '.incbin "$<" '; \
|
|
echo '__dtb_$(subst -,_,$(*F))_end:'; \
|
|
echo '.global __dtb_$(subst -,_,$(*F))_end'; \
|
|
echo '.balign STRUCT_ALIGNMENT'; \
|
|
} > $@
|
|
|
|
$(obj)/%.dtb.S: $(obj)/%.dtb FORCE
|
|
$(call if_changed,dt_S_dtb)
|
|
|
|
quiet_cmd_dtc = DTC $@
|
|
cmd_dtc = $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
|
|
$(DTC) -o $@ -b 0 \
|
|
$(addprefix -i,$(dir $<) $(DTC_INCLUDE)) $(DTC_FLAGS) \
|
|
-d $(depfile).dtc.tmp $(dtc-tmp) ; \
|
|
cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)
|
|
|
|
$(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE
|
|
$(call if_changed_dep,dtc)
|
|
|
|
$(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE
|
|
$(call if_changed_dep,dtc)
|
|
|
|
quiet_cmd_fdtoverlay = DTOVL $@
|
|
cmd_fdtoverlay = $(objtree)/scripts/dtc/fdtoverlay -o $@ -i $(real-prereqs)
|
|
|
|
$(multi-dtb-y): FORCE
|
|
$(call if_changed,fdtoverlay)
|
|
$(call multi_depend, $(multi-dtb-y), .dtb, -dtbs)
|
|
|
|
DT_CHECKER ?= dt-validate
|
|
DT_CHECKER_FLAGS ?= $(if $(DT_SCHEMA_FILES),,-m)
|
|
DT_BINDING_DIR := Documentation/devicetree/bindings
|
|
# DT_TMP_SCHEMA may be overridden from Documentation/devicetree/bindings/Makefile
|
|
DT_TMP_SCHEMA ?= $(objtree)/$(DT_BINDING_DIR)/processed-schema.json
|
|
|
|
quiet_cmd_dtb_check = CHECK $@
|
|
cmd_dtb_check = $(DT_CHECKER) $(DT_CHECKER_FLAGS) -u $(srctree)/$(DT_BINDING_DIR) -p $(DT_TMP_SCHEMA) $@
|
|
|
|
define rule_dtc
|
|
$(call cmd_and_fixdep,dtc)
|
|
$(call cmd,dtb_check)
|
|
endef
|
|
|
|
$(obj)/%.dt.yaml: $(src)/%.dts $(DTC) $(DT_TMP_SCHEMA) FORCE
|
|
$(call if_changed_rule,dtc)
|
|
|
|
dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)
|
|
|
|
# Bzip2
|
|
# ---------------------------------------------------------------------------
|
|
|
|
# Bzip2 and LZMA do not include size in file... so we have to fake that;
|
|
# append the size as a 32-bit littleendian number as gzip does.
|
|
size_append = printf $(shell \
|
|
dec_size=0; \
|
|
for F in $(real-prereqs); do \
|
|
fsize=$$($(CONFIG_SHELL) $(srctree)/scripts/file-size.sh $$F); \
|
|
dec_size=$$(expr $$dec_size + $$fsize); \
|
|
done; \
|
|
printf "%08x\n" $$dec_size | \
|
|
sed 's/\(..\)/\1 /g' | { \
|
|
read ch0 ch1 ch2 ch3; \
|
|
for ch in $$ch3 $$ch2 $$ch1 $$ch0; do \
|
|
printf '%s%03o' '\\' $$((0x$$ch)); \
|
|
done; \
|
|
} \
|
|
)
|
|
|
|
quiet_cmd_bzip2 = BZIP2 $@
|
|
cmd_bzip2 = { cat $(real-prereqs) | $(KBZIP2) -9; $(size_append); } > $@
|
|
|
|
# Lzma
|
|
# ---------------------------------------------------------------------------
|
|
|
|
quiet_cmd_lzma = LZMA $@
|
|
cmd_lzma = { cat $(real-prereqs) | $(LZMA) -9; $(size_append); } > $@
|
|
|
|
quiet_cmd_lzo = LZO $@
|
|
cmd_lzo = { cat $(real-prereqs) | $(KLZOP) -9; $(size_append); } > $@
|
|
|
|
quiet_cmd_lz4 = LZ4 $@
|
|
cmd_lz4 = { cat $(real-prereqs) | \
|
|
$(LZ4) -l -12 --favor-decSpeed stdin stdout; \
|
|
$(size_append); } > $@
|
|
|
|
# U-Boot mkimage
|
|
# ---------------------------------------------------------------------------
|
|
|
|
MKIMAGE := $(srctree)/scripts/mkuboot.sh
|
|
|
|
# SRCARCH just happens to match slightly more than ARCH (on sparc), so reduces
|
|
# the number of overrides in arch makefiles
|
|
UIMAGE_ARCH ?= $(SRCARCH)
|
|
UIMAGE_COMPRESSION ?= $(if $(2),$(2),none)
|
|
UIMAGE_OPTS-y ?=
|
|
UIMAGE_TYPE ?= kernel
|
|
UIMAGE_LOADADDR ?= arch_must_set_this
|
|
UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR)
|
|
UIMAGE_NAME ?= 'Linux-$(KERNELRELEASE)'
|
|
|
|
quiet_cmd_uimage = UIMAGE $@
|
|
cmd_uimage = $(BASH) $(MKIMAGE) -A $(UIMAGE_ARCH) -O linux \
|
|
-C $(UIMAGE_COMPRESSION) $(UIMAGE_OPTS-y) \
|
|
-T $(UIMAGE_TYPE) \
|
|
-a $(UIMAGE_LOADADDR) -e $(UIMAGE_ENTRYADDR) \
|
|
-n $(UIMAGE_NAME) -d $< $@
|
|
|
|
# XZ
|
|
# ---------------------------------------------------------------------------
|
|
# Use xzkern to compress the kernel image and xzmisc to compress other things.
|
|
#
|
|
# xzkern uses a big LZMA2 dictionary since it doesn't increase memory usage
|
|
# of the kernel decompressor. A BCJ filter is used if it is available for
|
|
# the target architecture. xzkern also appends uncompressed size of the data
|
|
# using size_append. The .xz format has the size information available at
|
|
# the end of the file too, but it's in more complex format and it's good to
|
|
# avoid changing the part of the boot code that reads the uncompressed size.
|
|
# Note that the bytes added by size_append will make the xz tool think that
|
|
# the file is corrupt. This is expected.
|
|
#
|
|
# xzmisc doesn't use size_append, so it can be used to create normal .xz
|
|
# files. xzmisc uses smaller LZMA2 dictionary than xzkern, because a very
|
|
# big dictionary would increase the memory usage too much in the multi-call
|
|
# decompression mode. A BCJ filter isn't used either.
|
|
quiet_cmd_xzkern = XZKERN $@
|
|
cmd_xzkern = { cat $(real-prereqs) | sh $(srctree)/scripts/xz_wrap.sh; \
|
|
$(size_append); } > $@
|
|
|
|
quiet_cmd_xzmisc = XZMISC $@
|
|
cmd_xzmisc = cat $(real-prereqs) | $(XZ) --check=crc32 --lzma2=dict=1MiB > $@
|
|
|
|
# ZSTD
|
|
# ---------------------------------------------------------------------------
|
|
# Appends the uncompressed size of the data using size_append. The .zst
|
|
# format has the size information available at the beginning of the file too,
|
|
# but it's in a more complex format and it's good to avoid changing the part
|
|
# of the boot code that reads the uncompressed size.
|
|
#
|
|
# Note that the bytes added by size_append will make the zstd tool think that
|
|
# the file is corrupt. This is expected.
|
|
#
|
|
# zstd uses a maximum window size of 8 MB. zstd22 uses a maximum window size of
|
|
# 128 MB. zstd22 is used for kernel compression because it is decompressed in a
|
|
# single pass, so zstd doesn't need to allocate a window buffer. When streaming
|
|
# decompression is used, like initramfs decompression, zstd22 should likely not
|
|
# be used because it would require zstd to allocate a 128 MB buffer.
|
|
|
|
quiet_cmd_zstd = ZSTD $@
|
|
cmd_zstd = { cat $(real-prereqs) | $(ZSTD) -19; $(size_append); } > $@
|
|
|
|
quiet_cmd_zstd22 = ZSTD22 $@
|
|
cmd_zstd22 = { cat $(real-prereqs) | $(ZSTD) -22 --ultra; $(size_append); } > $@
|
|
|
|
# ASM offsets
|
|
# ---------------------------------------------------------------------------
|
|
|
|
# Default sed regexp - multiline due to syntax constraints
|
|
#
|
|
# Use [:space:] because LLVM's integrated assembler inserts <tab> around
|
|
# the .ascii directive whereas GCC keeps the <space> as-is.
|
|
define sed-offsets
|
|
's:^[[:space:]]*\.ascii[[:space:]]*"\(.*\)".*:\1:; \
|
|
/^->/{s:->#\(.*\):/* \1 */:; \
|
|
s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
|
|
s:->::; p;}'
|
|
endef
|
|
|
|
# Use filechk to avoid rebuilds when a header changes, but the resulting file
|
|
# does not
|
|
define filechk_offsets
|
|
echo "#ifndef $2"; \
|
|
echo "#define $2"; \
|
|
echo "/*"; \
|
|
echo " * DO NOT MODIFY."; \
|
|
echo " *"; \
|
|
echo " * This file was generated by Kbuild"; \
|
|
echo " */"; \
|
|
echo ""; \
|
|
sed -ne $(sed-offsets) < $<; \
|
|
echo ""; \
|
|
echo "#endif"
|
|
endef
|