Files
msm-5.15/scripts/Makefile.lib
Blagovest Kolenichev e949f703b5 Merge keystone/android13-5.15-keystone-qcom-release.12+ (96bf853) into msm-5.15
* 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>
2022-01-12 03:03:54 -08:00

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