Commit Graph

109 Commits

Author SHA1 Message Date
jianzhou
8d05ee6f07 Merge keystone/android-mainline-keystone-qcom-release.5.18.0 (36fb3cb) into msm-pineapple
* refs/heads/tmp-36fb3cb:
  ANDROID: sched: add vendor hook to set_cpus_allowed
  ANDROID: Incremental fs: Use ERR_CAST in handle_mapped_file()
  UPSTREAM: ipv4: ping: fix bind address validity check
  UPSTREAM: arm64/hugetlb: Fix building errors in huge_ptep_clear_flush()
  ANDROID: fix up gki_defconfig files due to Kconfig movements
  UPSTREAM: Revert "net: af_key: add check for pfkey_broadcast in function pfkey_process"
  ANDROID: disable LTO and CFI
  ANDROID: add smuckle to OWNERS
  media: lirc: add missing exceptions for lirc uapi header file
  mm: kfence: use PAGE_ALIGNED helper
  selftests: vm: add the "settings" file with timeout variable
  selftests: vm: add "test_hmm.sh" to TEST_FILES
  selftests: vm: check numa_available() before operating "merge_across_nodes" in ksm_tests
  selftests: vm: add migration to the .gitignore
  selftests/vm/pkeys: fix typo in comment
  ksm: fix typo in comment
  selftests: vm: add process_mrelease tests
  Revert "mm/vmscan: never demote for memcg reclaim"
  mm/kfence: print disabling or re-enabling message
  include/trace/events/percpu.h: cleanup for "percpu: improve percpu_alloc_percpu event trace"
  include/trace/events/mmflags.h: cleanup for "tracing: incorrect gfp_t conversion"
  mm: fix a potential infinite loop in start_isolate_page_range()
  MAINTAINERS: add Muchun as co-maintainer for HugeTLB
  zram: fix Kconfig dependency warning
  mm/shmem: fix shmem folio swapoff hang
  cgroup: fix an error handling path in alloc_pagecache_max_30M()
  KVM: x86: Fix the intel_pt PMI handling wrongly considered from guest
  KVM: selftests: x86: Sync the new name of the test case to .gitignore
  Documentation: kvm: reorder ARM-specific section about KVM_SYSTEM_EVENT_SUSPEND
  x86, kvm: use correct GFP flags for preemption disabled
  KVM: LAPIC: Drop pending LAPIC timer injection when canceling the timer
  x86/kvm: Alloc dummy async #PF token outside of raw spinlock
  KVM: x86: avoid calling x86 emulator without a decoded instruction
  KVM: SVM: Use kzalloc for sev ioctl interfaces to prevent kernel data leak
  x86/fpu: KVM: Set the base guest FPU uABI size to sizeof(struct kvm_xsave)
  s390/uv_uapi: depend on CONFIG_S390
  KVM: selftests: x86: Fix test failure on arch lbr capable platforms
  KVM: LAPIC: Trace LAPIC timer expiration on every vmentry
  gpio: sifive: Make the irqchip immutable
  gpio: rcar: Make the irqchip immutable
  gpio: pcf857x: Make the irqchip immutable
  gpio: pca953x: Make the irqchip immutable
  gpio: dwapb: Make the irqchip immutable
  mailbox: qcom-ipcc: Fix -Wunused-function with CONFIG_PM_SLEEP=n
  genksyms: adjust the output format to modpost
  kbuild: stop merging *.symversions
  kbuild: link symbol CRCs at final link, removing CONFIG_MODULE_REL_CRCS
  platform/chrome: Use imperative mood for ChromeOS ACPI sysfs ABI descriptions
  platform/chrome: Use tables for values lists of ChromeOS ACPI sysfs ABI
  mailbox: forward the hrtimer if not queued and under a lock
  modpost: extract symbol versions from *.cmd files
  modpost: add sym_find_with_module() helper
  gpio: sim: Use correct order for the parameters of devm_kcalloc()
  mailbox: qcom-ipcc: Log the pending interrupt during resume
  mailbox: pcc: Fix an invalid-load caught by the address sanitizer
  dt-bindings: mailbox: remove the IPCC "wakeup" IRQ
  mailbox: correct kerneldoc
  mailbox: omap: using pm_runtime_resume_and_get to simplify the code
  mailbox:imx: using pm_runtime_resume_and_get
  mailbox: mediatek: support mt8186 adsp mailbox
  dt-bindings: mailbox: mtk,adsp-mbox: add mt8186 compatible name
  mailbox: tegra-hsp: Add 128-bit shared mailbox support
  dt-bindings: tegra186-hsp: add type for shared mailboxes
  mailbox: tegra-hsp: Add tegra_hsp_sm_ops
  dt-bindings: gce: add the GCE header file for MT8186
  mailbox: remove an unneeded NULL check on list iterator
  mailbox: imx: remove redundant initializer
  dt-bindings: mailbox: qcom-ipcc: simplify the example
  gpio: ml-ioh: Convert to use managed functions pcim* and devm_*
  KVM: s390: selftest: Test suppression indication on key prot exception
  KVM: s390: Don't indicate suppression on dirtying, failing memop
  selftests: drivers/s390x: Add uvdevice tests
  drivers/s390/char: Add Ultravisor io device
  MAINTAINERS: Update KVM RISC-V entry to cover selftests support
  RISC-V: KVM: Introduce ISA extension register
  RISC-V: KVM: Cleanup stale TLB entries when host CPU changes
  RISC-V: KVM: Add remote HFENCE functions based on VCPU requests
  RISC-V: KVM: Reduce KVM_MAX_VCPUS value
  RISC-V: KVM: Introduce range based local HFENCE functions
  RISC-V: KVM: Treat SBI HFENCE calls as NOPs
  RISC-V: KVM: Add Sv57x4 mode support for G-stage
  RISC-V: KVM: Use G-stage name for hypervisor page table
  KVM: selftests: riscv: Remove unneeded semicolon
  KVM: selftests: riscv: Improve unexpected guest trap handling
  mm: damon: use HPAGE_PMD_SIZE
  tracing: incorrect isolate_mote_t cast in mm_vmscan_lru_isolate
  nodemask.h: fix compilation error with GCC12
  mm: fix missing handler for __GFP_NOWARN
  mm/page_alloc: fix tracepoint mm_page_alloc_zone_locked()
  mm/page_owner.c: add missing __initdata attribute
  tmpfs: fix undefined-behaviour in shmem_reconfigure()
  mm/mempolicy: fix uninit-value in mpol_rebind_policy()
  mm: don't be stuck to rmap lock on reclaim path
  zswap: memcg accounting
  mm: zswap: add basic meminfo and vmstat coverage
  mm: Kconfig: simplify zswap configuration
  mm: Kconfig: group swap, slab, hotplug and thp options into submenus
  mm: Kconfig: move swap and slab config options to the MM section
  Documentation: filesystems: proc: update meminfo section
  mm/swap: fix comment about swap extent
  mm/swap: fix the comment of get_kernel_pages
  mm/swap: clean up the comment of find_next_to_unuse
  mm/swap: fix the obsolete comment for SWP_TYPE_SHIFT
  mm/swap: add helper swap_offset_available()
  mm/swap: avoid calling swp_swap_info when try to check SWP_STABLE_WRITES
  mm/swap: make page_swapcount and __lru_add_drain_all static
  mm/swap: remove unneeded p != NULL check in __swap_duplicate
  mm/swap: remove buggy cache->nr check in refill_swap_slots_cache
  mm/swap: print bad swap offset entry in get_swap_device
  mm/swap: remove unneeded return value of free_swap_slot
  mm/swap: fold __swap_info_get() into its sole caller
  mm/swap: use helper macro __ATTR_RW
  mm/swap: use helper is_swap_pte() in swap_vma_readahead
  mm: mmap: register suitable readonly file vmas for khugepaged
  mm: khugepaged: introduce khugepaged_enter_vma() helper
  mm: khugepaged: make hugepage_vma_check() non-static
  mm: khugepaged: make khugepaged_enter() void function
  mm: thp: only regular file could be THP eligible
  mm: khugepaged: skip DAX vma
  mm: khugepaged: remove redundant check for VM_NO_KHUGEPAGED
  sched: coredump.h: clarify the use of MMF_VM_HUGEPAGE
  arm64/mm: fix page table check compile error for CONFIG_PGTABLE_LEVELS=2
  riscv/mm: fix two page table check related issues
  gpio: ftgpio: Remove unneeded ERROR check before clk_disable_unprepare
  KVM: arm64: Fix hypercall bitmap writeback when vcpus have already run
  KVM: arm64: vgic: Undo work in failed ITS restores
  KVM: arm64: vgic: Do not ignore vgic_its_restore_cte failures
  KVM: arm64: vgic: Add more checks when restoring ITS tables
  KVM: arm64: vgic: Check that new ITEs could be saved in guest memory
  KVM: arm64: pmu: Restore compilation when HW_PERF_EVENTS isn't selected
  platform/chrome: cros_ec_spi: drop BUG_ON() if `din` isn't large enough
  platform/chrome: cros_ec_spi: drop unneeded BUG_ON()
  platform/chrome: cros_ec_i2c: drop BUG_ON() in cros_ec_pkt_xfer_i2c()
  platform/chrome: cros_ec_proto: drop BUG_ON() in cros_ec_get_host_event()
  platform/chrome: cros_ec_proto: drop BUG_ON() in cros_ec_prepare_tx()
  platform/chrome: correct cros_ec_prepare_tx() usage
  platform/chrome: cros_ec_proto: drop unneeded BUG_ON() in prepare_packet()
  KVM: arm64: Hide KVM_REG_ARM_*_BMAP_BIT_COUNT from userspace
  KVM: arm64: Reenable pmu in Protected Mode
  KVM: arm64: Pass pmu events to hyp via vcpu
  KVM: arm64: Repack struct kvm_pmu to reduce size
  KVM: arm64: Wrapper for getting pmu_events
  KVM: arm64: vgic-v3: List M1 Pro/Max as requiring the SEIS workaround
  gpio: ws16c48: Utilize iomap interface
  gpio: gpio-mm: Utilize iomap interface
  gpio: 104-idio-16: Utilize iomap interface
  gpio: 104-idi-48: Utilize iomap interface
  gpio: 104-dio-48e: Utilize iomap interface
  gpio: zevio: drop of_gpio.h header
  mm, compaction: fast_find_migrateblock() should return pfn in the target zone
  mm/damon: add documentation for Enum value
  mm/memcontrol: export memcg->watermark via sysfs for v2 memcg
  mm: hugetlb_vmemmap: add hugetlb_optimize_vmemmap sysctl
  mm: hugetlb_vmemmap: use kstrtobool for hugetlb_vmemmap param parsing
  mm: memory_hotplug: override memmap_on_memory when hugetlb_free_vmemmap=on
  mm: hugetlb_vmemmap: disable hugetlb_optimize_vmemmap when struct page crosses page boundaries
  mm: rmap: fix CONT-PTE/PMD size hugetlb issue when unmapping
  mm: rmap: fix CONT-PTE/PMD size hugetlb issue when migration
  mm: change huge_ptep_clear_flush() to return the original pte
  Documentation/vm: rework "Temporary Virtual Mappings" section
  Documentation/vm: move "Using kmap-atomic" to highmem.h
  Documentation/vm: include kdocs from highmem*.h into highmem.rst
  mm/highmem: fix kernel-doc warnings in highmem*.h
  mm/memory-failure.c: simplify num_poisoned_pages_inc/dec
  mm/hwpoison: disable hwpoison filter during removing
  mm/memory-failure.c: add hwpoison_filter for soft offline
  mm/memory-failure.c: simplify num_poisoned_pages_dec
  mm/memory-failure.c: move clear_hwpoisoned_pages
  mm/page_owner: use strscpy() instead of strlcpy()
  kasan: clean-up kconfig options descriptions
  kasan: move boot parameters section in documentation
  kasan: update documentation
  kasan: give better names to shadow values
  kasan: use tabs to align shadow values
  kasan: clean up comments in internal kasan.h
  mm/vmalloc: use raw_cpu_ptr() for vmap_block_queue access
  tracing: incorrect gfp_t conversion
  zram: remove double compression logic
  percpu: improve percpu_alloc_percpu event trace
  docs: vm/page_owner: tweak literal block in STANDARD FORMAT SPECIFIERS
  mm/damon/reclaim: use resource_size function on resource object
  mm: functions may simplify the use of return values
  riscv/mm: enable ARCH_SUPPORTS_PAGE_TABLE_CHECK
  arm64/mm: enable ARCH_SUPPORTS_PAGE_TABLE_CHECK
  mm: remove __HAVE_ARCH_PTEP_CLEAR in pgtable.h
  mm: page_table_check: add hooks to public helpers
  mm: page_table_check: move pxx_user_accessible_page into x86
  mm: page_table_check: using PxD_SIZE instead of PxD_PAGE_SIZE
  mm/migrate: convert move_to_new_page() into move_to_new_folio()
  mm: add folio_test_movable()
  mm: add folio_mapping_flags()
  mm/shmem: convert shmem_swapin_page() to shmem_swapin_folio()
  mm/shmem: convert shmem_getpage_gfp to use a folio
  mm/shmem: convert shmem_alloc_and_acct_page to use a folio
  mm/shmem: add shmem_alloc_folio()
  mm/shmem: turn shmem_should_replace_page into shmem_should_replace_folio
  mm/shmem: convert shmem_add_to_page_cache to take a folio
  mm/swap: add folio_throttle_swaprate
  mm/shmem: use a folio in shmem_unused_huge_shrink
  vmscan: remove remaining uses of page in shrink_page_list
  mm: allow can_split_folio() to be called when THP are disabled
  vmscan: convert the activate_locked portion of shrink_page_list to folios
  vmscan: move initialisation of mapping down
  vmscan: convert lazy freeing to folios
  vmscan: convert page buffer handling to use folios
  vmscan: convert dirty page handling to folios
  swap: convert add_to_swap() to take a folio
  swap: turn get_swap_page() into folio_alloc_swap()
  vmscan: convert the writeback handling in shrink_page_list() to folios
  vmscan: use folio_mapped() in shrink_page_list()
  mm: remove alloc_pages_vma()
  alpha: fix alloc_zeroed_user_highpage_movable()
  mm/huge_memory: convert do_huge_pmd_anonymous_page() to use vma_alloc_folio()
  shmem: convert shmem_alloc_hugepage() to use vma_alloc_folio()
  mm/shmem: remove duplicate include in memory.c
  mm/vmscan: don't use NUMA_NO_NODE as indicator of page on different node
  mm/vmscan: filter empty page_list at the beginning
  mm/vmscan: use helper folio_is_file_lru()
  mm/vmscan: remove obsolete comment in kswapd_run
  mm/vmscan: take all base pages of THP into account when race with speculative reference
  mm/vmscan: introduce helper function reclaim_page_list()
  mm/vmscan: add a comment about MADV_FREE pages check in folio_check_dirty_writeback
  mm/vmscan: not necessary to re-init the list for each iteration
  mm: convert sysfs input to bool using kstrtobool()
  lib/kstrtox.c: add "false"/"true" support to kstrtobool()
  mm/vmscan: take min_slab_pages into account when try to call shrink_node
  drivers: virtio_mem: use pageblock size as the minimum virtio_mem size.
  mm: cma: use pageblock_order as the single alignment
  mm: page_isolation: enable arbitrary range page isolation.
  mm: make alloc_contig_range work at pageblock granularity
  mm: page_isolation: check specified range for unmovable pages
  mm: page_isolation: move has_unmovable_pages() to mm/page_isolation.c
  cgroup: fix racy check in alloc_pagecache_max_30M() helper function
  cgroup: remove racy check in test_memcg_sock()
  cgroup: account for memory_localevents in test_memcg_oom_group_leaf_events()
  cgroup: account for memory_recursiveprot in test_memcg_low()
  cgroups: refactor children cgroups in memcg tests
  mm/uffd: move USERFAULTFD configs into mm/
  userfaultfd/selftests: use swap() instead of open coding it
  selftests/uffd: enable uffd-wp for shmem/hugetlbfs
  mm: enable PTE markers by default
  mm/uffd: enable write protection for shmem & hugetlbfs
  mm/pagemap: recognize uffd-wp bit for shmem/hugetlbfs
  mm/khugepaged: don't recycle vma pgtable if uffd-wp registered
  mm/hugetlb: handle uffd-wp during fork()
  mm/hugetlb: only drop uffd-wp special pte if required
  mm/hugetlb: allow uffd wr-protect none ptes
  mm/hugetlb: handle pte markers in page faults
  mm/hugetlb: handle UFFDIO_WRITEPROTECT
  mm/hugetlb: take care of UFFDIO_COPY_MODE_WP
  mm/hugetlb: hook page faults for uffd write protection
  mm/hugetlb: introduce huge pte version of uffd-wp helpers
  mm/shmem: handle uffd-wp during fork()
  mm/shmem: allows file-back mem to be uffd wr-protected on thps
  mm/shmem: allow uffd wr-protect none pte for file-backed mem
  mm/shmem: persist uffd-wp bit across zapping for file-backed
  mm/shmem: handle uffd-wp special pte in page fault handler
  mm/shmem: take care of UFFDIO_COPY_MODE_WP
  mm/uffd: PTE_MARKER_UFFD_WP
  mm: check against orig_pte for finish_fault()
  mm: teach core mm about pte markers
  mm: introduce PTE_MARKER swap entry
  mm/page_alloc: cache the result of node_dirty_ok()
  Docs/admin-guide/mm/damon/reclaim: document 'commit_inputs' parameter
  mm/damon/reclaim: support online inputs update
  Docs/{ABI,admin-guide}/damon: Update for 'state' sysfs file input keyword, 'commit'
  mm/damon/sysfs: support online inputs update
  mm/damon/sysfs: update schemes stat in the kdamond context
  mm/damon/sysfs: use enum for 'state' input handling
  mm/damon/sysfs: reuse damon_set_regions() for regions setting
  mm/damon/sysfs: move targets setup code to a separated function
  mm/damon/sysfs: prohibit multiple physical address space monitoring targets
  mm/damon/vaddr: remove damon_va_apply_three_regions()
  mm/damon/vaddr: move 'damon_set_regions()' to core
  mm/damon/vaddr: generalize damon_va_apply_three_regions()
  mm/damon/core: finish kdamond as soon as any callback returns an error
  mm/damon/core: add a new callback for watermarks checks
  selftest/vm: test that mremap fails on non-existent vma
  mm/rmap: Fix typos in comments
  mm/swapops: make is_pmd_migration_entry more strict
  mmap locking API: fix missed mmap_sem references in comments
  mm: make minimum slab alignment a runtime property
  printk: stop including cache.h from printk.h
  mm: rmap: use flush_cache_range() to flush cache for hugetlb pages
  mm: rmap: move the cache flushing to the correct place for hugetlb PMD sharing
  mm: hugetlb: considering PMD sharing when flushing cache/TLBs
  mm/memory_hotplug: use pgprot_val to get value of pgprot
  Docs/{ABI,admin-guide}/damon: update for fixed virtual address ranges monitoring
  mm/damon/sysfs: support fixed virtual address ranges monitoring
  mm/damon/vaddr: register a damon_operations for fixed virtual address ranges monitoring
  Docs/{ABI,admin-guide}/damon: document 'avail_operations' sysfs file
  selftets/damon/sysfs: test existence and permission of avail_operations
  mm/damon/sysfs: add a file for listing available monitoring ops
  mm/damon/core: add a function for damon_operations registration checks
  mm/highmem: VM_BUG_ON() if offset + len > PAGE_SIZE
  kfence: enable check kfence canary on panic via boot param
  hugetlbfs: fix hugetlbfs_statfs() locking
  mm: avoid unnecessary flush on change_huge_pmd()
  mm/mprotect: do not flush when not required architecturally
  mm/mprotect: use mmu_gather
  platform/chrome: Add ChromeOS ACPI device driver
  KVM: x86/mmu: Speed up slot_rmap_walk_next for sparsely populated rmaps
  KVM: VMX: Include MKTME KeyID bits in shadow_zero_check
  KVM: x86/mmu: Add shadow_me_value and repurpose shadow_me_mask
  KVM: x86/mmu: Rename reset_rsvds_bits_mask()
  KVM: x86: a vCPU with a pending triple fault is runnable
  KVM: x86/mmu: Expand and clean up page fault stats
  KVM: x86/mmu: Use IS_ENABLED() to avoid RETPOLINE for TDP page faults
  KVM: x86/mmu: Make all page fault handlers internal to the MMU
  KVM: x86/mmu: Add RET_PF_CONTINUE to eliminate bool+int* "returns"
  KVM: x86/mmu: Drop exec/NX check from "page fault can be fast"
  KVM: x86/mmu: Don't attempt fast page fault just because EPT is in use
  KVM: VMX: clean up pi_wakeup_handler
  KVM: x86: fix typo in __try_cmpxchg_user causing non-atomicness
  modpost: change the license of EXPORT_SYMBOL to bool type
  modpost: remove left-over cross_compile declaration
  kbuild: record symbol versions in *.cmd files
  kbuild: generate a list of objects in vmlinux
  modpost: move *.mod.c generation to write_mod_c_files()
  modpost: merge add_{intree_flag,retpoline,staging_flag} to add_header
  scripts/prune-kernel: Use kernel-install if available
  kbuild: factor out the common installation code into scripts/install.sh
  platform/chrome: cros_ec_typec: Check for EC driver
  KVM: arm64: pkvm: Don't mask already zeroed FEAT_SVE
  KVM: arm64: pkvm: Drop unnecessary FP/SIMD trap handler
  VFS: add FMODE_CAN_ODIRECT file flag
  MM: handle THP in swap_*page_fs() - count_vm_events()
  mm: handle THP in swap_*page_fs()
  mm: submit multipage write for SWP_FS_OPS swap-space
  mm: submit multipage reads for SWP_FS_OPS swap-space
  doc: update documentation for swap_activate and swap_rw
  mm: perform async writes to SWP_FS_OPS swap-space using ->swap_rw
  nfs: rename nfs_direct_IO and use as ->swap_rw
  mm: introduce ->swap_rw and use it for reads from SWP_FS_OPS swap-space
  mm: reclaim mustn't enter FS for SWP_FS_OPS swap-space
  mm: move responsibility for setting SWP_FS_OPS to ->swap_activate
  mm: drop swap_dirty_folio
  mm: create new mm/swap.h header file
  selftests: clarify common error when running gup_test
  mm/gup: fix comments to pin_user_pages_*()
  powerpc/pgtable: support __HAVE_ARCH_PTE_SWP_EXCLUSIVE for book3s
  powerpc/pgtable: remove _PAGE_BIT_SWAP_TYPE for book3s
  s390/pgtable: support __HAVE_ARCH_PTE_SWP_EXCLUSIVE
  s390/pgtable: cleanup description of swp pte layout
  arm64/pgtable: support __HAVE_ARCH_PTE_SWP_EXCLUSIVE
  x86/pgtable: support __HAVE_ARCH_PTE_SWP_EXCLUSIVE
  mm/debug_vm_pgtable: add tests for __HAVE_ARCH_PTE_SWP_EXCLUSIVE
  mm/swap: remember PG_anon_exclusive via a swp pte bit
  mm/gup: sanity-check with CONFIG_DEBUG_VM that anonymous pages are exclusive when (un)pinning
  mm/gup: trigger FAULT_FLAG_UNSHARE when R/O-pinning a possibly shared anonymous page
  mm: support GUP-triggered unsharing of anonymous pages
  mm/gup: disallow follow_page(FOLL_PIN)
  mm/rmap: fail try_to_migrate() early when setting a PMD migration entry fails
  mm: remember exclusively mapped anonymous pages with PG_anon_exclusive
  mm/page-flags: reuse PG_mappedtodisk as PG_anon_exclusive for PageAnon() pages
  mm/huge_memory: remove outdated VM_WARN_ON_ONCE_PAGE from unmap_page()
  mm/rmap: use page_move_anon_rmap() when reusing a mapped PageAnon() page exclusively
  mm/rmap: drop "compound" parameter from page_add_new_anon_rmap()
  mm/rmap: pass rmap flags to hugepage_add_anon_rmap()
  mm/rmap: remove do_page_add_anon_rmap()
  mm/rmap: convert RMAP flags to a proper distinct rmap_t type
  mm/rmap: split page_dup_rmap() into page_dup_file_rmap() and page_try_dup_anon_rmap()
  mm/memory: slightly simplify copy_present_pte()
  mm/hugetlb: take src_mm->write_protect_seq in copy_hugetlb_page_range()
  mm/rmap: fix missing swap_free() in try_to_unmap() after arch_unmap_one() failed
  sched: Fix build warning without CONFIG_SYSCTL
  reboot: Fix build warning without CONFIG_SYSCTL
  modpost: split new_symbol() to symbol allocation and hash table addition
  modpost: make sym_add_exported() always allocate a new symbol
  modpost: make multiple export error
  modpost: dump Module.symvers in the same order of modules.order
  modpost: traverse the namespace_list in order
  modpost: use doubly linked list for dump_lists
  modpost: traverse unresolved symbols in order
  modpost: add sym_add_unresolved() helper
  modpost: traverse modules in order
  modpost: import include/linux/list.h
  modpost: change mod->gpl_compatible to bool type
  modpost: use bool type where appropriate
  ia64: make the install target not depend on any build artifact
  kbuild: drop $(objtree)/ prefix support for clean-files
  Makefile: fix 2 typos
  modpost: move struct namespace_list to modpost.c
  modpost: retrieve the module dependency and CRCs in check_exports()
  modpost: add a separate error for exported symbols without definition
  modpost: remove stale comment about sym_add_exported()
  modpost: do not write out any file when error occurred
  modpost: use snprintf() instead of sprintf() for safety
  checksyscalls: ignore -Wunused-macros
  scripts: dummy-tools, add pahole
  kheaders: Have cpio unconditionally replace files
  kbuild: support W=e to make build abort in case of warning
  kbuild: read *.mod to get objects passed to $(LD) or $(AR)
  kbuild: make *.mod not depend on *.o
  kbuild: get rid of duplication in *.mod files
  kbuild: split the second line of *.mod into *.usyms
  kbuild: reuse real-search to simplify cmd_mod
  kbuild: make multi_depend work with targets in subdirectory
  kbuild: reuse suffix-search to refactor multi_depend
  kbuild: refactor cmd_modversions_S
  kbuild: refactor cmd_modversions_c
  modpost: remove annoying namespace_from_kstrtabns()
  modpost: remove redundant initializes for static variables
  modpost: move export_from_secname() call to more relevant place
  modpost: remove useless export_from_sec()
  KVM: arm64: nvhe: Eliminate kernel-doc warnings
  KVM: arm64: Avoid unnecessary absolute addressing via literals
  gpio: max77620: Make the irqchip immutable
  dt-bindings: gpio: pca95xx: add entry for pca6408
  gpio: pca953xx: Add support for pca6408
  gpio: max732x: Drop unused support for irq and setup code via platform data
  Documentation: KVM: Fix title level for PSCI_SUSPEND
  KVM: arm64: Print emulated register table name when it is unsorted
  KVM: arm64: Don't BUG_ON() if emulated register table is unsorted
  KVM: arm64: vgic-v3: Advertise GICR_CTLR.{IR, CES} as a new GICD_IIDR revision
  KVM: arm64: vgic-v3: Implement MMIO-based LPI invalidation
  KVM: arm64: vgic-v3: Expose GICR_CTLR.RWP when disabling LPIs
  Documentation: Fix index.rst after psci.rst renaming
  selftests: KVM: Test SYSTEM_SUSPEND PSCI call
  selftests: KVM: Refactor psci_test to make it amenable to new tests
  selftests: KVM: Use KVM_SET_MP_STATE to power off vCPU in psci_test
  selftests: KVM: Create helper for making SMCCC calls
  selftests: KVM: Rename psci_cpu_on_test to psci_test
  KVM: arm64: Implement PSCI SYSTEM_SUSPEND
  KVM: arm64: Add support for userspace to suspend a vCPU
  KVM: arm64: Return a value from check_vcpu_requests()
  KVM: arm64: Rename the KVM_REQ_SLEEP handler
  KVM: arm64: Track vCPU power state using MP state values
  KVM: arm64: Dedupe vCPU power off helpers
  KVM: arm64: Don't depend on fallthrough to hide SYSTEM_RESET2
  KVM: arm64: Fix new instances of 32bit ESRs
  selftests: KVM: aarch64: Add the bitmap firmware registers to get-reg-list
  selftests: KVM: aarch64: Introduce hypercall ABI test
  selftests: KVM: Create helper for making SMCCC calls
  selftests: KVM: Rename psci_cpu_on_test to psci_test
  tools: Import ARM SMCCC definitions
  Docs: KVM: Add doc for the bitmap firmware registers
  Docs: KVM: Rename psci.rst to hypercalls.rst
  KVM: arm64: Add vendor hypervisor firmware register
  KVM: arm64: Add standard hypervisor firmware register
  KVM: arm64: Setup a framework for hypercall bitmap firmware registers
  KVM: arm64: Factor out firmware register handling from psci.c
  KVM: arm64: Hide AArch32 PMU registers when not available
  KVM: arm64: Start trapping ID registers for 32 bit guests
  KVM: arm64: Plumb cp10 ID traps through the AArch64 sysreg handler
  KVM: arm64: Wire up CP15 feature registers to their AArch64 equivalents
  KVM: arm64: Don't write to Rt unless sys_reg emulation succeeds
  KVM: arm64: Return a bool from emulate_cp()
  platform/chrome: cros_ec_lpcs: reserve the MEC LPC I/O ports first
  platform/chrome: cros_ec_lpcs: detect the Framework Laptop
  KVM: VMX: Use vcpu_to_pi_desc() uniformly in posted_intr.c
  KVM: Add max_vcpus field in common 'struct kvm'
  KVM: x86: avoid loading a vCPU after .vm_destroy was called
  gpio: vf610: drop the SOC_VF610 dependency for GPIO_VF610
  gpio: syscon: Remove usage of syscon_regmap_lookup_by_compatible
  mm/damon/reclaim: fix the timer always stays active
  mm/damon: remove unnecessary type castings
  mm/damon/core-test: add a kunit test case for ops registration
  damon: vaddr-test: tweak code to make the logic clearer
  selftests: cgroup: add a selftest for memory.reclaim
  selftests: cgroup: fix alloc_anon_noexit() instantly freeing memory
  selftests: cgroup: return -errno from cg_read()/cg_write() on failure
  memcg: introduce per-memcg reclaim interface
  zram: add a huge_idle writeback mode
  mm/page_alloc: simplify update of pgdat in wake_all_kswapds
  kasan: mark KASAN_VMALLOC flags as kasan_vmalloc_flags_t
  kasan: fix sleeping function called from invalid context on RT kernel
  mm: hugetlb: add missing cache flushing in hugetlb_unshare_all_pmds()
  mm/khugepaged: use vma_is_anonymous
  mm: use for_each_online_node and node_online instead of open coding
  hugetlb: fix return value of __setup handlers
  hugetlb: fix hugepages_setup when deal with pernode
  hugetlb: fix wrong use of nr_online_nodes
  KVM: X86/MMU: Fix shadowing 5-level NPT for 4-level NPT L1 guest
  KVM: X86/MMU: Add sp_has_gptes()
  KVM: SVM: Introduce trace point for the slow-path of avic_kic_target_vcpus
  KVM: SVM: Use target APIC ID to complete AVIC IRQs when possible
  KVM: x86/mmu: replace direct_map with root_role.direct
  KVM: x86/mmu: replace root_level with cpu_role.base.level
  KVM: x86/mmu: replace shadow_root_level with root_role.level
  KVM: x86/mmu: pull CPU mode computation to kvm_init_mmu
  KVM: x86/mmu: simplify and/or inline computation of shadow MMU roles
  KVM: x86/mmu: remove redundant bits from extended role
  KVM: x86/mmu: rename kvm_mmu_role union
  KVM: x86/mmu: remove extended bits from mmu_role, rename field
  KVM: x86/mmu: store shadow EFER.NX in the MMU role
  KVM: x86/mmu: cleanup computation of MMU roles for shadow paging
  KVM: x86/mmu: cleanup computation of MMU roles for two-dimensional paging
  KVM: x86/mmu: remove kvm_calc_shadow_root_page_role_common
  KVM: x86/mmu: remove ept_ad field
  KVM: x86/mmu: do not recompute root level from kvm_mmu_role_regs
  KVM: x86/mmu: split cpu_role from mmu_role
  KVM: x86/mmu: remove "bool base_only" arguments
  KVM: x86: Clean up and document nested #PF workaround
  KVM: x86/mmu: rephrase unclear comment
  KVM: x86/mmu: pull computation of kvm_mmu_role_regs to kvm_init_mmu
  KVM: x86/mmu: constify uses of struct kvm_mmu_role_regs
  KVM: x86/mmu: nested EPT cannot be used in SMM
  KVM: x86/mmu: Use enable_mmio_caching to track if MMIO caching is enabled
  KVM: x86/mmu: Check for host MMIO exclusion from mem encrypt iff necessary
  KVM: SEV-ES: Use V_TSC_AUX if available instead of RDTSC/MSR_TSC_AUX intercepts
  x86/cpufeatures: Add virtual TSC_AUX feature bit
  drivers/base/memory: fix an unlikely reference counting issue in __add_memory_block()
  mm: compaction: make sure highest is above the min_pfn
  mm: compaction: simplify the code in __compact_finished
  mm: compaction: make compaction_zonelist_suitable return false when COMPACT_SUCCESS
  mm: compaction: avoid possible NULL pointer dereference in kcompactd_cpu_online
  mm: compaction: clean up comment about async compaction in isolate_migratepages
  mm: compaction: use helper compound_nr in isolate_migratepages_block
  mm: compaction: use COMPACT_CLUSTER_MAX in compaction.c
  mm: compaction: clean up comment about suitable migration target recheck
  mm: compaction: clean up comment for sched contention
  mm: compaction: remove unneeded assignment to isolate_start_pfn
  mm: compaction: remove unneeded pfn update
  mm: compaction: remove unneeded return value of kcompactd_run
  mm/vmstat: add events for ksm cow
  ksm: count ksm merging pages for each process
  include/linux/swapops.h: remove stub for non_swap_entry()
  mm/page_alloc: reuse tail struct pages for compound devmaps
  mm/sparse-vmemmap: improve memory savings for compound devmaps
  mm/hugetlb_vmemmap: move comment block to Documentation/vm
  mm/sparse-vmemmap: refactor core of vmemmap_populate_basepages() to helper
  mm/sparse-vmemmap: add a pgmap argument to section activation
  mm: hugetlb_vmemmap: cleanup CONFIG_HUGETLB_PAGE_FREE_VMEMMAP*
  mm: hugetlb_vmemmap: cleanup hugetlb_free_vmemmap_enabled*
  mm: hugetlb_vmemmap: cleanup hugetlb_vmemmap related functions
  mm/page_alloc.c: calc the right pfn if page size is not 4K
  mm/mremap: avoid unneeded do_munmap call
  mm/mremap: use helper mlock_future_check()
  mm/mmap: drop arch_vm_get_page_pgprot()
  mm/mmap: drop arch_filter_pgprot()
  x86/mm: enable ARCH_HAS_VM_GET_PAGE_PROT
  sparc/mm: enable ARCH_HAS_VM_GET_PAGE_PROT
  arm64/mm: enable ARCH_HAS_VM_GET_PAGE_PROT
  powerpc/mm: enable ARCH_HAS_VM_GET_PAGE_PROT
  mm/mmap: add new config ARCH_HAS_VM_GET_PAGE_PROT
  mm/mmap.c: use helper mlock_future_check()
  mm/mmap: clarify protection_map[] indices
  mm/debug_vm_pgtable: drop protection_map[] usage
  mm/mmu_gather: limit free batch count and add schedule point in tlb_batch_pages_flush
  mm/mmap.c: use mmap_assert_write_locked() instead of open coding it
  selftests: vm: fix shellcheck warnings in run_vmtests.sh
  selftests: vm: refactor run_vmtests.sh to reduce boilerplate
  selftests: vm: add test for Soft-Dirty PTE bit
  selftests: vm: bring common functions to a new file
  tools/testing/selftests/vm/gup_test.c: clarify error statement
  mm: simplify follow_invalidate_pte()
  dax: fix missing writeprotect the pte entry
  mm: pvmw: add support for walking devmap pages
  mm: rmap: introduce pfn_mkclean_range() to cleans PTEs
  dax: fix cache flush on PMD-mapped pages
  mm: rmap: fix cache flush on THP pages
  mm/madvise: fix potential pte_unmap_unlock pte error
  mm: untangle config dependencies for demote-on-reclaim
  mm: migrate: simplify the refcount validation when migrating hugetlb mapping
  mm/migration: fix possible do_pages_stat_array racing with memory offline
  mm/migration: fix potential invalid node access for reclaim-based migration
  mm/migration: fix potential page refcounts leak in migrate_pages
  mm/migration: remove some duplicated codes in migrate_pages
  mm/migration: avoid unneeded nodemask_t initialization
  mm/migration: use helper macro min in do_pages_stat
  mm/migration: use helper function vma_lookup() in add_page_for_migration
  mm/migration: remove unneeded local variable page_lru
  mm/migration: remove unneeded local variable mapping_locked
  mm: add selftests for migration entries
  mm/mempolicy: clean up the code logic in queue_pages_pte_range
  drivers/base/node.c: fix compaction sysfs file leak
  mm: compaction: use helper isolation_suitable()
  mm/z3fold: remove unneeded PAGE_HEADLESS check in free_handle()
  mm/z3fold: remove redundant list_del_init of zhdr->buddy in z3fold_free
  mm/z3fold: move decrement of pool->pages_nr into __release_z3fold_page()
  mm/z3fold: remove confusing local variable l reassignment
  mm/z3fold: remove unneeded page_mapcount_reset and ClearPagePrivate
  mm/z3fold: minor clean up for z3fold_free
  mm/z3fold: remove obsolete comment in z3fold_alloc
  mm/z3fold: declare z3fold_mount with __init
  fs/proc/task_mmu.c: remove redundant page validation of pte_page
  mm/vmscan: fix comment for isolate_lru_pages
  mm/vmscan: fix comment for current_may_throttle
  mm/vmscan: remove obsolete comment in get_scan_count
  mm/vmscan: sc->reclaim_idx must be a valid zone index
  mm/vmscan: make sure wakeup_kswapd with managed zone
  mm/vmscan: reclaim only affects managed_zones
  arm64: mm: hugetlb: enable HUGETLB_PAGE_FREE_VMEMMAP for arm64
  mm: hugetlb_vmemmap: introduce ARCH_WANT_HUGETLB_PAGE_FREE_VMEMMAP
  hugetlb: remove use of list iterator variable after loop
  mm, hugetlb, hwpoison: separate branch for free and in-use hugepage
  mm/memory-failure.c: dissolve truncated hugetlb page
  mm/memory-failure.c: minor cleanup for HWPoisonHandlable
  Revert "mm/memory-failure.c: fix race with changing page compound again"
  mm/hwpoison: put page in already hwpoisoned case with MF_COUNT_INCREASED
  mm/memory-failure.c: remove unnecessary (void*) conversions
  mm: wrap __find_buddy_pfn() with a necessary buddy page validation
  mm: page_alloc: simplify pageblock migratetype check in __free_one_page()
  mm/page_alloc: adding same penalty is enough to get round-robin order
  Documentation/sysctl: document page_lock_unfairness
  vmap(): don't allow invalid pages
  mm/vmalloc: fix a comment
  mm/memcontrol.c: remove unused private flag of memory.oom_control
  mm/memcontrol.c: make cgroup_memory_noswap static
  MAINTAINERS: add corresponding kselftests to memcg entry
  MAINTAINERS: add corresponding kselftests to cgroup entry
  kselftests: memcg: speed up the memory.high test
  kselftests: memcg: update the oom group leaf events test
  mm/memcg: non-hierarchical mode is deprecated
  mm/memcg: move generation assignment and comparison together
  mm/memcg: set pos explicitly for reclaim and !reclaim
  mm/memcg: set memcg after css verified and got reference
  mm/memcg: mz already removed from rb_tree if not NULL
  mm/memcg: remove unneeded nr_scanned
  mm: shmem: make shmem_init return void
  mm: rework calculation of bdi_min_ratio in bdi_set_min_ratio
  tools/vm/page_owner_sort.c: avoid repeated judgments
  tools/vm/page_owner_sort.c: provide allocator labelling and update --cull and --sort options
  tools/vm/page_owner: support debug log to avoid huge log print
  tools/vm/page_owner_sort.c: support sorting blocks by multiple keys
  tools/vm/page_owner_sort.c: support for multi-value selection in single argument
  tools/vm/page_owner_sort.c: use fprintf() to send error messages to stderr
  KVM: arm64: Symbolize the nVHE HYP addresses
  KVM: arm64: Detect and handle hypervisor stack overflows
  KVM: arm64: Add guard pages for pKVM (protected nVHE) hypervisor stack
  KVM: arm64: Add guard pages for KVM nVHE hypervisor stack
  KVM: arm64: Introduce pkvm_alloc_private_va_range()
  KVM: arm64: Introduce hyp_alloc_private_va_range()
  kernel/kexec_core: move kexec_core sysctls into its own file
  sysctl: minor cleanup in new_dir()
  gpio: pcf857x: Make teardown callback return void
  irq/gpio: ixp4xx: Drop boardfile probe path
  dt-bindings: gpio: add common consumer GPIO lines
  gpio: use raw spinlock for gpio chip shadowed data
  ftrace: fix building with SYSCTL=y but DYNAMIC_FTRACE=n
  fs/proc: Introduce list_for_each_table_entry for proc sysctl
  mm: fix unused variable kernel warning when SYSCTL=n
  latencytop: move sysctl to its own file
  ftrace: fix building with SYSCTL=n but DYNAMIC_FTRACE=y
  KVM: arm64: Expose the WFXT feature to guests
  KVM: arm64: Offer early resume for non-blocking WFxT instructions
  KVM: arm64: Handle blocking WFIT instruction
  KVM: arm64: Introduce kvm_counter_compute_delta() helper
  KVM: arm64: Simplify kvm_cpu_has_pending_timer()
  arm64: Use WFxT for __delay() when possible
  arm64: Add wfet()/wfit() helpers
  arm64: Add HWCAP advertising FEAT_WFXT
  arm64: Add RV and RN fields for ESR_ELx_WFx_ISS
  arm64: Expand ESR_ELx_WFx_ISS_TI to match its ARMv8.7 definition
  platform/chrome: Re-introduce cros_ec_cmd_xfer and use it for ioctls
  gpio: ixp4xx: Detect special machines by compatible
  pinctrl: meson: Replace custom code by gpiochip_node_count() call
  pinctrl: meson: Enable COMPILE_TEST
  pinctrl: meson: Rename REG_* to MESON_REG_*
  pinctrl: armada-37xx: Reuse GPIO fwnode in armada_37xx_irqchip_register()
  pinctrl: armada-37xx: Switch to use fwnode instead of of_node
  platform/chrome: cros_ec: append newline to all logs
  platform/chrome: cros_ec: sort header inclusion alphabetically
  platform/chrome: cros_ec: determine `wake_enabled` in cros_ec_suspend()
  platform/chrome: cros_ec: remove unused variable `was_wake_device`
  platform/chrome: cros_ec: fix error handling in cros_ec_register()
  ftrace: Fix build warning
  gpiolib: Introduce a helper to get first GPIO controller node
  pinctrl: samsung: Switch to use for_each_gpiochip_node() helper
  pinctrl: samsung: Drop redundant node parameter in samsung_banks_of_node_get()
  KVM: x86: Bail to userspace if emulation of atomic user access faults
  KVM: x86: Use __try_cmpxchg_user() to emulate atomic accesses
  KVM: x86: Use __try_cmpxchg_user() to update guest PTE A/D bits
  x86/uaccess: Implement macros for CMPXCHG on user addresses
  Kconfig: Add option for asm goto w/ tied outputs to workaround clang-13 bug
  KVM, SEV: Add KVM_EXIT_SHUTDOWN metadata for SEV-ES
  KVM: nVMX: Clear IDT vectoring on nested VM-Exit for double/triple fault
  KVM: nVMX: Leave most VM-Exit info fields unmodified on failed VM-Entry
  KVM: x86: Drop WARNs that assert a triple fault never "escapes" from L2
  KVM: x86: Use static calls to reduce kvm_pmu_ops overhead
  KVM: x86: Move .pmu_ops to kvm_x86_init_ops and tag as __initdata
  KVM: x86: Copy kvm_pmu_ops by value to eliminate layer of indirection
  KVM: x86: Move kvm_ops_static_call_update() to x86.c
  KVM: x86/mmu: Derive EPT violation RWX bits from EPTE RWX bits
  KVM: VMX: replace 0x180 with EPT_VIOLATION_* definition
  x86/kvm: Don't waste kvmclock memory if there is nopv parameter
  kvm: vmx: remove redundant parentheses
  kvm: x86: Adjust the location of pkru_mask of kvm_mmu to reduce memory
  selftests: kvm/x86/xen: Replace a comma in the xen_shinfo_test with semicolon
  KVM: x86/xen: Remove the redundantly included header file lapic.h
  gpio: realtek-otto: Add RTL931x support
  dt-bindings: gpio: realtek-otto: Add rtl9310 compatible
  gpio: realtek-otto: Add RTL930x support
  gpio: realtek-otto: Support per-cpu interrupts
  gpio: realtek-otto: Support reversed port layouts
  dt-bindings: gpio: realtek-otto: Add rtl9300 compatible
  gpiolib: Extract gpio_chip_get_value() wrapper
  gpiolib: Refactor gpiolib_dbg_show() with help of for_each_gpio_desc()
  gpiolib: Split out for_each_gpio_desc() macro
  gpiolib: Embed iterator variable into for_each_gpio_desc_with_flag()
  gpiolib: Move error message out of a spinlock
  pinctrl: npcm7xx: Switch to use for_each_gpiochip_node() helper
  pinctrl: renesas: rza1: Switch to use for_each_gpiochip_node() helper
  pinctrl: renesas: rza1: Replace custom code by gpiochip_node_count() call
  pinctrl: stm32: Switch to use for_each_gpiochip_node() helper
  pinctrl: stm32: Replace custom code by gpiochip_node_count() call
  gpiolib: Introduce gpiochip_node_count() helper
  gpiolib: Introduce for_each_gpiochip_node() loop helper
  ftrace: move sysctl_ftrace_enabled to ftrace.c
  kernel/do_mount_initrd: move real_root_dev sysctls to its own file
  kernel/delayacct: move delayacct sysctls to its own file
  kernel/acct: move acct sysctls to its own file
  kernel/panic: move panic sysctls to its own file
  kernel/lockdep: move lockdep sysctls to its own file
  mm: move page-writeback sysctls to their own file
  mm: move oom_kill sysctls to their own file
  kernel/reboot: move reboot sysctls to its own file
  sched: Move energy_aware sysctls to topology.c
  sched: Move cfs_bandwidth_slice sysctls to fair.c
  sched: Move uclamp_util sysctls to core.c
  sched/rt: fix build error when CONFIG_SYSCTL is disable
  sched: Move rr_timeslice sysctls to rt.c
  sched: Move deadline_period sysctls to deadline.c
  sched: Move rt_period/runtime sysctls to rt.c
  sched: Move schedstats sysctls to core.c
  sched: Move child_runs_first sysctls to fair.c
  kbuild: do not remove empty *.symtypes explicitly
  kbuild: factor out genksyms command from cmd_gensymtypes_{c,S}
  docs: kbuild: add references on Kconfig semantics
  gpio: rcar: Add R-Car Gen4 support
  dt-bindings: gpio: renesas,rcar-gpio: Add r8a779f0 support
  gpiolib: Get rid of redundant 'else'
  kbuild: Allow kernel installation packaging to override pkg-config
  kbuild: uapi: use -fsyntax-only rather than -S
  dt-bindings: gpio: uniphier: Add hogs parsing
  KVM: x86/mmu: Don't rebuild page when the page is synced and no tlb flushing is required
  KVM: x86: optimize PKU branching in kvm_load_{guest|host}_xsave_state
  KVM: x86: SVM: allow AVIC to co-exist with a nested guest running
  KVM: x86: allow per cpu apicv inhibit reasons
  KVM: x86: nSVM: implement nested vGIF
  KVM: x86: nSVM: support PAUSE filtering when L0 doesn't intercept PAUSE
  KVM: x86: nSVM: implement nested LBR virtualization
  KVM: x86: nSVM: correctly virtualize LBR msrs when L2 is running
  KVM: x86: SVM: remove vgif_enabled()
  kvm: x86: SVM: use vmcb* instead of svm->vmcb where it makes sense
  KVM: x86: SVM: use vmcb01 in init_vmcb
  KVM: x86: Support the vCPU preemption check with nopvspin and realtime hint
  KVM: x86: Test case for TSC scaling and offset sync
  KVM: x86: Don't snapshot "max" TSC if host TSC is constant
  KVM: x86: Accept KVM_[GS]ET_TSC_KHZ as a VM ioctl.
  KVM: x86/i8259: Remove a dead store of irq in a conditional block
  KVM: VMX: Prepare VMCS setting for posted interrupt enabling when APICv is available
  KVM: x86/xen: Update self test for Xen PV timers
  KVM: x86/xen: Add self tests for KVM_XEN_HVM_CONFIG_EVTCHN_SEND
  KVM: x86/xen: handle PV spinlocks slowpath
  KVM: x86/xen: Advertise and document KVM_XEN_HVM_CONFIG_EVTCHN_SEND
  KVM: x86/xen: Support per-vCPU event channel upcall via local APIC
  KVM: x86/xen: Kernel acceleration for XENVER_version
  KVM: x86/xen: handle PV timers oneshot mode
  KVM: x86/xen: Add KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID
  KVM: x86/xen: handle PV IPI vcpu yield
  KVM: x86/xen: intercept EVTCHNOP_send from guests
  KVM: x86/xen: Support direct injection of event channel events
  KVM: x86/xen: Make kvm_xen_set_evtchn() reusable from other places
  KVM: x86/xen: Use gfn_to_pfn_cache for vcpu_time_info
  KVM: x86/xen: Use gfn_to_pfn_cache for vcpu_info
  KVM: x86: Use gfn_to_pfn_cache for pv_time
  KVM: x86/xen: Use gfn_to_pfn_cache for runstate area
  KVM: x86: mark synthetic SMM vmexit as SVM_EXIT_SW
  KVM: x86: SVM: allow to force AVIC to be enabled
  KVM: x86: nSVM: implement nested VMLOAD/VMSAVE
  selftests: KVM: Test KVM_X86_QUIRK_FIX_HYPERCALL_INSN
  KVM: x86: Allow userspace to opt out of hypercall patching

 Conflicts:
	Documentation/devicetree/bindings
	Documentation/devicetree/bindings/gpio/gpio-pca95xx.yaml
	Documentation/devicetree/bindings/gpio/realtek,otto-gpio.yaml
	Documentation/devicetree/bindings/gpio/renesas,rcar-gpio.yaml
	Documentation/devicetree/bindings/gpio/socionext,uniphier-gpio.yaml
	Documentation/devicetree/bindings/mailbox/mtk,adsp-mbox.yaml
	Documentation/devicetree/bindings/mailbox/nvidia,tegra186-hsp.yaml
	Documentation/devicetree/bindings/mailbox/qcom-ipcc.yaml
	Documentation/devicetree/bindings/mailbox/st,stm32-ipcc.yaml

Change-Id: I1a7d3bcfcbb7e38183af57932676c73a0d6918f7
Upstream-Build:ks_qcom-android-mainline-keystone-qcom-release@8784555 SKQ4.220629.002
Signed-off-by: jianzhou <quic_jianzhou@quicinc.com>
2022-07-02 19:01:14 -07:00
Masahiro Yamada
9413e76405 kbuild: split the second line of *.mod into *.usyms
The *.mod files have two lines; the first line lists the member objects
of the module, and the second line, if CONFIG_TRIM_UNUSED_KSYMS=y, lists
the undefined symbols.

Currently, we generate *.mod after constructing composite modules,
otherwise, we cannot compute the second line. No prerequisite is
required to print the first line.

They are orthogonal. Splitting them into separate commands will ease
further cleanups.

This commit splits the list of undefined symbols out to *.usyms files.

Previously, the list of undefined symbols ended up with a very long
line, but now it has one symbol per line.

Use sed like we did before commit 7d32358be8 ("kbuild: avoid split
lines in .mod files").

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>
2022-05-08 03:16:59 +09:00
Guru Das Srinagesh
8bec221456 .gitignore: ignore vendor dt softlink and generated configs
Update .gitignore list to ignore vendor devicetree softlink and also
defconfig file generating in the kernel source directory.

Change-Id: Ia09e4cb133da460de511bc0c5b9209fcddf05e27
Signed-off-by: Guru Das Srinagesh <quic_gurus@quicinc.com>
2022-03-07 10:31:56 -08:00
Masahiro Yamada
40cb020305 .gitignore: ignore only top-level modules.builtin
modules.builtin used to be created in every directory.

Since commit 8b41fc4454 ("kbuild: create modules.builtin without
Makefile.modbuiltin or tristate.conf"), modules.builtin is created only
in the top directory.

Add the '/' prefix so that it matches to only the modules.builtin located
in the top directory.

It has been more than one year since that change. I hope this will not
flood 'Untracked files' of 'git status'.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2021-05-02 00:43:35 +09:00
Masahiro Yamada
819cb9fc80 .gitignore: move tags and TAGS close to other tag files
For consistency, move tags and TAGS close to the cscope and GNU Global
patterns.

I removed the '/' prefix in case somebody wants to manually create tag
files in sub-directories.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2021-05-02 00:43:35 +09:00
Masahiro Yamada
69bc8d386a kbuild: generate Module.symvers only when vmlinux exists
The external module build shows the following warning if Module.symvers
is missing in the kernel tree.

  WARNING: Symbol version dump "Module.symvers" is missing.
           Modules may not have dependencies or modversions.

I think this is an important heads-up because the resulting modules may
not work as expected. This happens when you did not build the entire
kernel tree, for example, you might have prepared the minimal setups
for external modules by 'make defconfig && make modules_preapre'.

A problem is that 'make modules' creates Module.symvers even without
vmlinux. In this case, that warning is suppressed since Module.symvers
already exists in spite of its incomplete content.

The incomplete (i.e. invalid) Module.symvers should not be created.

This commit changes the second pass of modpost to dump symbols into
modules-only.symvers. The final Module.symvers is created by
concatenating vmlinux.symvers and modules-only.symvers if both exist.

Module.symvers is supposed to collect symbols from both vmlinux and
modules. It might be a bit confusing, and I am not quite sure if it
is an official interface, but presumably it is difficult to rename it
because some tools (e.g. kmod) parse it.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2021-04-25 05:17:02 +09:00
Rasmus Villemoes
5cc1247204 kbuild: add CONFIG_VMLINUX_MAP expert option
It can be quite useful to have ld emit a link map file, in order to
debug or verify that special sections end up where they are supposed
to, and to see what LD_DEAD_CODE_DATA_ELIMINATION manages to get rid
of.

The only reason I'm not just adding this unconditionally is that the
.map file can be rather large (several MB), and that's a waste of
space when one isn't interested in these things. Also make it depend
on CONFIG_EXPERT.

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2021-04-25 05:12:26 +09:00
Linus Torvalds
79db4d2293 clang-lto series for v5.12-rc1
- Clang LTO build infrastructure and arm64-specific enablement (Sami Tolvanen)
 - Recursive build CC_FLAGS_LTO fix (Alexander Lobakin)
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEpcP2jyKd1g9yPm4TiXL039xtwCYFAmA0OEYACgkQiXL039xt
 wCYGJw/8CcyvQUGmXYEZVDLMahKz93RYijiGuSTVnhl0pNAyfOojaZ8Z//eD1VNA
 s82azW1XybbA6RnPGD7YQzYz27cSF2qUFDmplwVfE4mwBnPXzRxtVBDLSxksP1HS
 77sCOu91QhbovPCWET4dSHLJB3DVc78FiW4lVlRgrglyAz+dut1iXYar5e7VNoS0
 S4MwnqwteHC6YXP619rubhpdDoj7njuw1uxRIaodt9S/zRSpl5MCUgHmzQusgezs
 yWDdPHPWHnF7xxKgwSvE7AKZPdOnIxKxRi6Yd6vUIyrYB3qLZkFe75nUsgMroAhs
 /Bgrn69U2McMiJsOdh0ERzP2VNYfvMacBQ308nb45j83Bgv5l6uj8QOZU4ZogmXV
 PsDzsfUe9GsxgYexfozGX61rpd6JinzQKVyoDW3oTT54fbBxO3uDqT8kOBw72dPT
 9nkOxTzyb+UO0dpb/MhXLGkGcv8+lTA5ffVIKUx5UxKngRbukc3dxwVJgO4HmucK
 bwVQGD83D+/if5/JL9WtQRjDwFEn+IFmdv+3cAXkRo4IIS18LPZB1MJncTeWr8Z9
 HlkuDXlJOncUWCABGd1IKu1j0S2HpXV4qhqQXJ6PdfOvUPEaD9qgqEAjD5FxxyXF
 wpaV2MWya5i1FGwD5UKhi8hVnAFJyF0/w+enjiPwlmIbjdyEVXE=
 =6peY
 -----END PGP SIGNATURE-----

Merge tag 'clang-lto-v5.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux

Pull clang LTO updates from Kees Cook:
 "Clang Link Time Optimization.

  This is built on the work done preparing for LTO by arm64 folks,
  tracing folks, etc. This includes the core changes as well as the
  remaining pieces for arm64 (LTO has been the default build method on
  Android for about 3 years now, as it is the prerequisite for the
  Control Flow Integrity protections).

  While x86 LTO enablement is done, it depends on some pending objtool
  clean-ups. It's possible that I'll send a "part 2" pull request for
  LTO that includes x86 support.

  For merge log posterity, and as detailed in commit dc5723b02e
  ("kbuild: add support for Clang LTO"), here is the lt;dr to do an LTO
  build:

        make LLVM=1 LLVM_IAS=1 defconfig
        scripts/config -e LTO_CLANG_THIN
        make LLVM=1 LLVM_IAS=1

  (To do a cross-compile of arm64, add "CROSS_COMPILE=aarch64-linux-gnu-"
  and "ARCH=arm64" to the "make" command lines.)

  Summary:

   - Clang LTO build infrastructure and arm64-specific enablement (Sami
     Tolvanen)

   - Recursive build CC_FLAGS_LTO fix (Alexander Lobakin)"

* tag 'clang-lto-v5.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
  kbuild: prevent CC_FLAGS_LTO self-bloating on recursive rebuilds
  arm64: allow LTO to be selected
  arm64: disable recordmcount with DYNAMIC_FTRACE_WITH_REGS
  arm64: vdso: disable LTO
  drivers/misc/lkdtm: disable LTO for rodata.o
  efi/libstub: disable LTO
  scripts/mod: disable LTO for empty.c
  modpost: lto: strip .lto from module names
  PCI: Fix PREL32 relocations for LTO
  init: lto: fix PREL32 relocations
  init: lto: ensure initcall ordering
  kbuild: lto: add a default list of used symbols
  kbuild: lto: merge module sections
  kbuild: lto: limit inlining
  kbuild: lto: fix module versioning
  kbuild: add support for Clang LTO
  tracing: move function tracer options to Kconfig
2021-02-23 09:28:51 -08:00
Viresh Kumar
ce88c9c794 kbuild: Add support to build overlays (%.dtbo)
Add support for building DT overlays (%.dtbo). The overlay's source file
will have the usual extension, i.e. .dts, though the blob will have
.dtbo extension to distinguish it from normal blobs.

Acked-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/434ba2467dd0cd011565625aeb3450650afe0aae.1611904394.git.viresh.kumar@linaro.org
2021-02-04 09:00:04 -06:00
Sami Tolvanen
38e8918490 kbuild: lto: fix module versioning
With CONFIG_MODVERSIONS, version information is linked into each
compilation unit that exports symbols. With LTO, we cannot use this
method as all C code is compiled into LLVM bitcode instead. This
change collects symbol versions into .symversions files and merges
them in link-vmlinux.sh where they are all linked into vmlinux.o at
the same time.

Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20201211184633.3213045-4-samitolvanen@google.com
2021-01-14 08:21:08 -08:00
Mauro Carvalho Chehab
f6236efced .gitignore: docs: ignore sphinx_*/ directories
The default way of building documentation is to use
Sphinx toolchain installed via pip, inside the
Kernel tree main directory. That's what's recommended by:

	scripts/sphinx-pre-install

As it usually provides a better version of this package
than the one installed, specially on LTS distros.

So, add the directories created by running the commands
suggested by the script.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/ac4e23d556c7d95cb11d6d5c605f43e425b2c3c7.1599660067.git.mchehab+huawei@kernel.org
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
2020-09-10 10:44:31 -06:00
Adam Borowski
6f3decabaf .gitignore: Add ZSTD-compressed files
For now, that's arch/x86/boot/compressed/vmlinux.bin.zst but probably more
will come, thus let's be consistent with all other compressors.

Signed-off-by: Adam Borowski <kilobyte@angband.pl>
Signed-off-by: Nick Terrell <terrelln@fb.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20200730190841.2071656-8-nickrterrell@gmail.com
2020-07-31 11:50:49 +02:00
Paul Menzel
ba77dca584 .gitignore: Do not track defconfig from make savedefconfig
Running `make savedefconfig` creates by default `defconfig`, which is,
currently, on git’s radar, for example, `git status` lists this file as
untracked.

So, add the file to `.gitignore`, so it’s ignored by git.

Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2020-07-05 16:15:46 +09:00
Masahiro Yamada
269a535ca9 modpost: generate vmlinux.symvers and reuse it for the second modpost
The full build runs modpost twice, first for vmlinux.o and second for
modules.

The first pass dumps all the vmlinux symbols into Module.symvers, but
the second pass parses vmlinux again instead of reusing the dump file,
presumably because it needs to avoid accumulating stale symbols.

Loading symbol info from a dump file is faster than parsing an ELF object.
Besides, modpost deals with various issues to parse vmlinux in the second
pass.

A solution is to make the first pass dumps symbols into a separate file,
vmlinux.symvers. The second pass reads it, and parses module .o files.
The merged symbol information is dumped into Module.symvers in the same
way as before.

This makes further modpost cleanups possible.

Also, it fixes the problem of 'make vmlinux', which previously overwrote
Module.symvers, throwing away module symbols.

I slightly touched scripts/link-vmlinux.sh so that vmlinux is re-linked
when you cross this commit. Otherwise, vmlinux.symvers would not be
generated.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2020-06-06 23:38:12 +09:00
Masahiro Yamada
d198b34f38 .gitignore: add SPDX License Identifier
Add SPDX License Identifier to all .gitignore files.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-03-25 11:50:48 +01:00
Christophe Leroy
f3a60268f5 selftest/lkdtm: Use local .gitignore
Commit 68ca0fd272 ("selftest/lkdtm: Don't pollute 'git status'")
introduced patterns for git to ignore files generated in
tools/testing/selftests/lkdtm/

Use local .gitignore file instead of using the root one.

Fixes: 68ca0fd272 ("selftest/lkdtm: Don't pollute 'git status'")
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Acked-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
2020-03-02 08:39:39 -07:00
Christophe Leroy
68ca0fd272 selftest/lkdtm: Don't pollute 'git status'
Commit 46d1a0f03d ("selftests/lkdtm: Add tests for LKDTM targets")
added generation of lkdtm test scripts.

Ignore those generated scripts when performing 'git status'

Fixes: 46d1a0f03d ("selftests/lkdtm: Add tests for LKDTM targets")
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
2020-02-20 08:55:06 -07:00
Masahiro Yamada
bbc55bded4 modpost: dump missing namespaces into a single modules.nsdeps file
The modpost, with the -d option given, generates per-module .ns_deps
files.

Kbuild generates per-module .mod files to carry module information.
This is convenient because Make handles multiple jobs in parallel
when the -j option is given.

On the other hand, the modpost always runs as a single thread.
I do not see a strong reason to produce separate .ns_deps files.

This commit changes the modpost to generate just one file,
modules.nsdeps, each line of which has the following format:

  <module_name>: <list of missing namespaces>

Please note it contains *missing* namespaces instead of required ones.
So, modules.nsdeps is empty if the namespace dependency is all good.

This will work more efficiently because spatch will no longer process
already imported namespaces. I removed the '(if needed)' from the
nsdeps log since spatch is invoked only when needed.

This also solves the stale .ns_deps problem reported by Jessica Yu:

  https://lkml.org/lkml/2019/10/28/467

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Tested-by: Jessica Yu <jeyu@kernel.org>
Acked-by: Jessica Yu <jeyu@kernel.org>
Reviewed-by: Matthias Maennich <maennich@google.com>
Tested-by: Matthias Maennich <maennich@google.com>
2019-11-11 20:10:01 +09:00
Linus Torvalds
e070355664 Modules updates for v5.4
Summary of modules changes for the 5.4 merge window:
 
 - Introduce exported symbol namespaces.
 
   This new feature allows subsystem maintainers to partition and
   categorize their exported symbols into explicit namespaces. Module
   authors are now required to import the namespaces they need.
 
   Some of the main motivations of this feature include: allowing kernel
   developers to better manage the export surface, allow subsystem
   maintainers to explicitly state that usage of some exported symbols
   should only be limited to certain users (think: inter-module or
   inter-driver symbols, debugging symbols, etc), as well as more easily
   limiting the availability of namespaced symbols to other parts of the
   kernel. With the module import requirement, it is also easier to spot
   the misuse of exported symbols during patch review. Two new macros are
   introduced: EXPORT_SYMBOL_NS() and EXPORT_SYMBOL_NS_GPL(). The API is
   thoroughly documented in Documentation/kbuild/namespaces.rst.
 
 - Some small code and kbuild cleanups here and there.
 -----BEGIN PGP SIGNATURE-----
 
 iQIcBAABCgAGBQJdh3n8AAoJEMBFfjjOO8Fy94kP+QHZF39QDvLbxAzEYAETAS+o
 CFu6wix/DrAwFkTU/kX1eAsAwDBEz0xkMciR4BsLX3sIafUVERxtDXVAui/dA1+6
 zfw2c3ObyVwPEk6aUPFprgkj+08gxujsJFlYTsQQUhtRbmxg6R7hD6t6ANxiHaY2
 AQe5TzOWXoIa2hHO+7rPMqf8l6qiFCaL0s3v5jrmBXa5mHmc4PVy95h1J6xQVw2u
 b+SlvKeylHv+OtCtvthkAJS3hfS35J/1TNb/RNYIvh60IfEguEuFsGuQ9JiSSAZS
 pv1cJ+I5d4v8Y/md1rZpdjTJL9gCrq/UUC67+UkejCOn0C+7XM2eR4Bu/jWvdMSn
 ZQDHcPhFSIfmP7FaKomPogaBbw1sI1FvM5930pPJzHnyO9+cefBXe7rWaaB+y0At
 GAxOtmk1dKh01BT7YO/C0oVuX87csWd74NHypVsbs0TgQo5jBFdZRheyDrq5YB+s
 tVK+5H0nqQrCcfo/TvhcsZlgITTGtgTPenaW99/i7qNa9mRUtxC/VkE+aob6HNRF
 1iBxxopOTxGN8akyKOVumtkuTQH3EJfouZee//pWbXLzyDmScg/k67vuao8kxbyq
 NA1piFAGJAHFsHATxrbvNOq6jZ5bfUT8pwSTs83JppuR++8Hxk7zaShS3/LvsvHt
 6ist/epOwTZ7oiNQ04nj
 =72Uy
 -----END PGP SIGNATURE-----

Merge tag 'modules-for-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux

Pull modules updates from Jessica Yu:
 "The main bulk of this pull request introduces a new exported symbol
  namespaces feature. The number of exported symbols is increasingly
  growing with each release (we're at about 31k exports as of 5.3-rc7)
  and we currently have no way of visualizing how these symbols are
  "clustered" or making sense of this huge export surface.

  Namespacing exported symbols allows kernel developers to more
  explicitly partition and categorize exported symbols, as well as more
  easily limiting the availability of namespaced symbols to other parts
  of the kernel. For starters, we have introduced the USB_STORAGE
  namespace to demonstrate the API's usage. I have briefly summarized
  the feature and its main motivations in the tag below.

  Summary:

   - Introduce exported symbol namespaces.

     This new feature allows subsystem maintainers to partition and
     categorize their exported symbols into explicit namespaces. Module
     authors are now required to import the namespaces they need.

     Some of the main motivations of this feature include: allowing
     kernel developers to better manage the export surface, allow
     subsystem maintainers to explicitly state that usage of some
     exported symbols should only be limited to certain users (think:
     inter-module or inter-driver symbols, debugging symbols, etc), as
     well as more easily limiting the availability of namespaced symbols
     to other parts of the kernel.

     With the module import requirement, it is also easier to spot the
     misuse of exported symbols during patch review.

     Two new macros are introduced: EXPORT_SYMBOL_NS() and
     EXPORT_SYMBOL_NS_GPL(). The API is thoroughly documented in
     Documentation/kbuild/namespaces.rst.

   - Some small code and kbuild cleanups here and there"

* tag 'modules-for-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux:
  module: Remove leftover '#undef' from export header
  module: remove unneeded casts in cmp_name()
  module: move CONFIG_UNUSED_SYMBOLS to the sub-menu of MODULES
  module: remove redundant 'depends on MODULES'
  module: Fix link failure due to invalid relocation on namespace offset
  usb-storage: export symbols in USB_STORAGE namespace
  usb-storage: remove single-use define for debugging
  docs: Add documentation for Symbol Namespaces
  scripts: Coccinelle script for namespace dependencies.
  modpost: add support for generating namespace dependencies
  export: allow definition default namespaces in Makefiles or sources
  module: add config option MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS
  modpost: add support for symbol namespaces
  module: add support for symbol namespaces.
  export: explicitly align struct kernel_symbol
  module: support reading multiple values per modinfo tag
2019-09-22 10:34:46 -07:00
Matthias Maennich
1d082773ff modpost: add support for generating namespace dependencies
This patch adds an option to modpost to generate a <module>.ns_deps file
per module, containing the namespace dependencies for that module.

E.g. if the linked module my-module.ko would depend on the symbol
myfunc.MY_NS in the namespace MY_NS, the my-module.ns_deps file created
by modpost would contain the entry MY_NS to express the namespace
dependency of my-module imposed by using the symbol myfunc.

These files can subsequently be used by static analysis tools (like
coccinelle scripts) to address issues with missing namespace imports. A
later patch of this series will introduce such a script 'nsdeps' and a
corresponding make target to automatically add missing
MODULE_IMPORT_NS() definitions to the module's sources. For that it uses
the information provided in the generated .ns_deps files.

Co-developed-by: Martijn Coenen <maco@android.com>
Signed-off-by: Martijn Coenen <maco@android.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Matthias Maennich <maennich@google.com>
Signed-off-by: Jessica Yu <jeyu@kernel.org>
2019-09-10 10:30:38 +02:00
Masahiro Yamada
a564bdeb5e .gitignore: ignore modules.order explicitly
The pattern '*.order' was added by commit c6025f4c8b ("kbuild: ignore
*.order files") to ignore modules.order files.

I do not see any other user of the '.order' extension.

Ignore 'modules.order' explicitly instead of '*.order'.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2019-08-22 01:14:11 +09:00
Toru Komatsu
26c4c71bcd .gitignore: Add compilation database file
This file is used by clangd to use language server protocol.
It can be generated at each compile using scripts/gen_compile_commands.py.
Therefore it is different depending on the environment and should be
ignored.

Signed-off-by: Toru Komatsu <k0ma@utam0k.jp>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2019-07-27 12:18:19 +09:00
Masahiro Yamada
b7dca6dd1e kbuild: create *.mod with full directory path and remove MODVERDIR
While descending directories, Kbuild produces objects for modules,
but do not link final *.ko files; it is done in the modpost.

To keep track of modules, Kbuild creates a *.mod file in $(MODVERDIR)
for every module it is building. Some post-processing steps read the
necessary information from *.mod files. This avoids descending into
directories again. This mechanism was introduced in 2003 or so.

Later, commit 551559e13a ("kbuild: implement modules.order") added
modules.order. So, we can simply read it out to know all the modules
with directory paths. This is easier than parsing the first line of
*.mod files.

$(MODVERDIR) has a flat directory structure, that is, *.mod files
are named only with base names. This is based on the assumption that
the module name is unique across the tree. This assumption is really
fragile.

Stephen Rothwell reported a race condition caused by a module name
conflict:

  https://lkml.org/lkml/2019/5/13/991

In parallel building, two different threads could write to the same
$(MODVERDIR)/*.mod simultaneously.

Non-unique module names are the source of all kind of troubles, hence
commit 3a48a91901 ("kbuild: check uniqueness of module names")
introduced a new checker script.

However, it is still fragile in the build system point of view because
this race happens before scripts/modules-check.sh is invoked. If it
happens again, the modpost will emit unclear error messages.

To fix this issue completely, create *.mod with full directory path
so that two threads never attempt to write to the same file.

$(MODVERDIR) is no longer needed.

Since modules with directory paths are listed in modules.order, Kbuild
is still able to find *.mod files without additional descending.

I also killed cmd_secanalysis; scripts/mod/sumversion.c computes MD4 hash
for modules with MODULE_VERSION(). When CONFIG_DEBUG_SECTION_MISMATCH=y,
it occurs not only in the modpost stage, but also during directory
descending, where sumversion.c may parse stale *.mod files. It would emit
'No such file or directory' warning when an object consisting a module is
renamed, or when a single-obj module is turned into a multi-obj module or
vice versa.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Nicolas Pitre <nico@fluxnic.net>
2019-07-18 02:19:31 +09:00
Masahiro Yamada
f46e65da48 .gitignore: exclude .get_maintainer.ignore and .gitattributes
Also, sort the patterns alphabetically. Update the comment since
we have non-git files here.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2019-05-18 11:49:54 +09:00
Masahiro Yamada
7fb1fc420f .gitignore: add more all*.config patterns
For completeness, ignore all the allconfig variants.

I added a leading slash because they are only searched in the
top of the tree.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2019-05-08 09:47:46 +09:00
Alexey Gladkov
898490c010 moduleparam: Save information about built-in modules in separate file
Problem:

When a kernel module is compiled as a separate module, some important
information about the kernel module is available via .modinfo section of
the module.  In contrast, when the kernel module is compiled into the
kernel, that information is not available.

Information about built-in modules is necessary in the following cases:

1. When it is necessary to find out what additional parameters can be
passed to the kernel at boot time.

2. When you need to know which module names and their aliases are in
the kernel. This is very useful for creating an initrd image.

Proposal:

The proposed patch does not remove .modinfo section with module
information from the vmlinux at the build time and saves it into a
separate file after kernel linking. So, the kernel does not increase in
size and no additional information remains in it. Information is stored
in the same format as in the separate modules (null-terminated string
array). Because the .modinfo section is already exported with a separate
modules, we are not creating a new API.

It can be easily read in the userspace:

$ tr '\0' '\n' < modules.builtin.modinfo
ext4.softdep=pre: crc32c
ext4.license=GPL
ext4.description=Fourth Extended Filesystem
ext4.author=Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
ext4.alias=fs-ext4
ext4.alias=ext3
ext4.alias=fs-ext3
ext4.alias=ext2
ext4.alias=fs-ext2
md_mod.alias=block-major-9-*
md_mod.alias=md
md_mod.description=MD RAID framework
md_mod.license=GPL
md_mod.parmtype=create_on_open:bool
md_mod.parmtype=start_dirty_degraded:int
...

Co-Developed-by: Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
Signed-off-by: Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
Signed-off-by: Alexey Gladkov <gladkov.alexey@gmail.com>
Acked-by: Jessica Yu <jeyu@kernel.org>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2019-05-07 21:50:24 +09:00
Masahiro Yamada
1e35663e41 .gitignore: add leading and trailing slashes to generated directories
Clarify these directory paths are relative to the top of the source
tree.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2019-05-07 21:50:23 +09:00
Rob Herring
4f0e3a57d6 kbuild: Add support for DT binding schema checks
This adds the build infrastructure for checking DT binding schema
documents and validating dts files using the binding schema.

Check DT binding schema documents:
make dt_binding_check

Build dts files and check using DT binding schema:
make dtbs_check

Optionally, DT_SCHEMA_FILES can be passed in with a schema file(s) to
use for validation. This makes it easier to find and fix errors
generated by a specific schema.

Currently, the validation targets are separate from a normal build to
avoid a hard dependency on the external DT schema project and because
there are lots of warnings generated.

Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Mark Rutland <mark.rutland@arm.com>
Acked-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Michal Marek <michal.lkml@markovi.net>
Cc: linux-doc@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: linux-kbuild@vger.kernel.org
Signed-off-by: Rob Herring <robh@kernel.org>
2018-12-13 09:41:32 -06:00
Linus Torvalds
ca71b3ba4c Kbuild updates for v4.17 (2nd)
- pass HOSTLDFLAGS when compiling single .c host programs
 
 - build genksyms lexer and parser files instead of using shipped
   versions
 
 - rename *-asn1.[ch] to *.asn1.[ch] for suffix consistency
 
 - let the top .gitignore globally ignore artifacts generated by
   flex, bison, and asn1_compiler
 
 - let the top Makefile globally clean artifacts generated by
   flex, bison, and asn1_compiler
 
 - use safer .SECONDARY marker instead of .PRECIOUS to prevent
   intermediate files from being removed
 
 - support -fmacro-prefix-map option to make __FILE__ a relative path
 
 - fix # escaping to prepare for the future GNU Make release
 
 - clean up deb-pkg by using debian tools instead of handrolled
   source/changes generation
 
 - improve rpm-pkg portability by supporting kernel-install as a
   fallback of new-kernel-pkg
 
 - extend Kconfig listnewconfig target to provide more information
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJa0krLAAoJED2LAQed4NsGyCAP/3Vsb8A4sea7sE3LV6/aFUJp
 WcAm6PXcip1MXy7GI5yxFciwen3Z3ghQUer7fJKDcHR5c4mRSfKaqWp+TLHd6uux
 7I4pV0FNx2PapcPu5T7wNZHN96p3xZC0Z66sq9BCZ/+gNyYmZLIDcBUSIOEk0nzJ
 IsvD46zy6R6KtEnycShKVscg4JyPXJIw1UBqsPDEFHg5l16ARkghND7e5zTW62Fi
 2MqQxNXAksIKpxxoxPH/fIcNp1kFKVxYBH2CW4LQtOjC3GmrozdeV5PUc7yTezPc
 dpqOuEcIAbMH91bkvhhF+ZBi34YrxRoT4S8B3G9iCXRz+2LRZZaitqO4dAH8Kjbn
 0KjkqzNc5TosJXQ8RPTcQlRBi+JmE1bHxICvTx3XNJcqJMqIH0vs3ez/LJKOwhB4
 DbAROoxQNfVcOdouHcx2EuCSdHn24BEyzaGFhi04LACpbRLxr8IJS7hSGXRloBYp
 K3ydRvG/dCZjFRTS+xWWSi3Nzjih2mCctQlH3D4nf4M3vtCX+/k5B9IMEYFfHlvL
 KoNlK4/1vP/dAJZj0iOqd2ksCA1G6iLoHrFp3E5pdtmb4sVe2Ez3gMt+pxz3htR9
 XvjuHOzkWE9eiihs1NsFgQuyP/o3UmNKpDDW0irQ06IFEPXkA/y1mVmeTU3qtrII
 ZDiwGozIkMMEy/MLkcjE
 =tD6R
 -----END PGP SIGNATURE-----

Merge tag 'kbuild-v4.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild

Pull more Kbuild updates from Masahiro Yamada:

 - pass HOSTLDFLAGS when compiling single .c host programs

 - build genksyms lexer and parser files instead of using shipped
   versions

 - rename *-asn1.[ch] to *.asn1.[ch] for suffix consistency

 - let the top .gitignore globally ignore artifacts generated by flex,
   bison, and asn1_compiler

 - let the top Makefile globally clean artifacts generated by flex,
   bison, and asn1_compiler

 - use safer .SECONDARY marker instead of .PRECIOUS to prevent
   intermediate files from being removed

 - support -fmacro-prefix-map option to make __FILE__ a relative path

 - fix # escaping to prepare for the future GNU Make release

 - clean up deb-pkg by using debian tools instead of handrolled
   source/changes generation

 - improve rpm-pkg portability by supporting kernel-install as a
   fallback of new-kernel-pkg

 - extend Kconfig listnewconfig target to provide more information

* tag 'kbuild-v4.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
  kconfig: extend output of 'listnewconfig'
  kbuild: rpm-pkg: use kernel-install as a fallback for new-kernel-pkg
  Kbuild: fix # escaping in .cmd files for future Make
  kbuild: deb-pkg: split generating packaging and build
  kbuild: use -fmacro-prefix-map to make __FILE__ a relative path
  kbuild: mark $(targets) as .SECONDARY and remove .PRECIOUS markers
  kbuild: rename *-asn1.[ch] to *.asn1.[ch]
  kbuild: clean up *-asn1.[ch] patterns from top-level Makefile
  .gitignore: move *-asn1.[ch] patterns to the top-level .gitignore
  kbuild: add %.dtb.S and %.dtb to 'targets' automatically
  kbuild: add %.lex.c and %.tab.[ch] to 'targets' automatically
  genksyms: generate lexer and parser during build instead of shipping
  kbuild: clean up *.lex.c and *.tab.[ch] patterns from top-level Makefile
  .gitignore: move *.lex.c *.tab.[ch] patterns to the top-level .gitignore
  kbuild: use HOSTLDFLAGS for single .c executables
2018-04-15 17:21:30 -07:00
Miguel Ojeda
d4ef8d3ff0 clang-format: add configuration file
clang-format is a tool to format C/C++/...  code according to a set of
rules and heuristics.  Like most tools, it is not perfect nor covers
every single case, but it is good enough to be helpful.

In particular, it is useful for quickly re-formatting blocks of code
automatically, for reviewing full files in order to spot coding style
mistakes, typos and possible improvements.  It is also handy for sorting
``#includes``, for aligning variables and macros, for reflowing text and
other similar tasks.  It also serves as a teaching tool/guide for
newcomers.

The tool itself has been already included in the repositories of popular
Linux distributions for a long time.  The rules in this file are
intended for clang-format >= 4, which is easily available in most
distributions.

This commit adds the configuration file that contains the rules that the
tool uses to know how to format the code according to the kernel coding
style.  This gives us several advantages:

  * clang-format works out of the box with reasonable defaults;
    avoiding that everyone has to re-do the configuration.

  * Everyone agrees (eventually) on what is the most useful default
    configuration for most of the kernel.

  * If it becomes commonplace among kernel developers, clang-format
    may feel compelled to support us better. They already recognize
    the Linux kernel and its style in their documentation and in one
    of the style sub-options.

Some of clang-format's features relevant for the kernel are:

  * Uses clang's tooling support behind the scenes to parse and rewrite
    the code. It is not based on ad-hoc regexps.

  * Supports reasonably well the Linux kernel coding style.

  * Fast enough to be used at the press of a key.

  * There are already integrations (either built-in or third-party)
    for many common editors used by kernel developers (e.g. vim,
    emacs, Sublime, Atom...) that allow you to format an entire file
    or, more usefully, just your selection.

  * Able to parse unified diffs -- you can, for instance, reformat
    only the lines changed by a git commit.

  * Able to reflow text comments as well.

  * Widely supported and used by hundreds of developers in highly
    complex projects and organizations (e.g. the LLVM project itself,
    Chromium, WebKit, Google, Mozilla...). Therefore, it will be
    supported for a long time.

See more information about the tool at:

    https://clang.llvm.org/docs/ClangFormat.html
    https://clang.llvm.org/docs/ClangFormatStyleOptions.html

Link: http://lkml.kernel.org/r/20180318171632.qfkemw3mwbcukth6@gmail.com
Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Andy Whitcroft <apw@canonical.com>
Cc: Joe Perches <joe@perches.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-04-11 10:28:35 -07:00
Masahiro Yamada
4fa8bc949d kbuild: rename *-asn1.[ch] to *.asn1.[ch]
Our convention is to distinguish file types by suffixes with a period
as a separator.

*-asn1.[ch] is a different pattern from other generated sources such
as *.lex.c, *.tab.[ch], *.dtb.S, etc.  More confusing, files with
'-asn1.[ch]' are generated files, but '_asn1.[ch]' are checked-in
files:
  net/netfilter/nf_conntrack_h323_asn1.c
  include/linux/netfilter/nf_conntrack_h323_asn1.h
  include/linux/sunrpc/gss_asn1.h

Rename generated files to *.asn1.[ch] for consistency.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2018-04-07 19:04:02 +09:00
Masahiro Yamada
9ce285cfe3 .gitignore: move *-asn1.[ch] patterns to the top-level .gitignore
These are common patterns where source files are parsed by the
asn1_compiler.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2018-04-07 19:04:02 +09:00
Masahiro Yamada
5988930027 .gitignore: move *.lex.c *.tab.[ch] patterns to the top-level .gitignore
These patterns are common to host programs that require lexer and parser.
Move them to the top .gitignore.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Frank Rowand <frowand.list@gmail.com>
2018-04-07 19:04:02 +09:00
Masahiro Yamada
fbfa9be990 kbuild: move include/config/ksym/* to include/ksym/*
The idea of using fixdep was inspired by Kconfig, but autoksyms
belongs to a different group.  So, I want to move those touched
files under include/config/ksym/ to include/ksym/.

The directory include/ksym/ can be removed by 'make clean' because
it is meaningless for the external module building.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Nicolas Pitre <nico@linaro.org>
2018-03-26 02:01:23 +09:00
Zhu Lingshan
d682026dd3 .gitignore: ignore ASN.1 auto generated files
when build kernel with default configure, files:

generatenet/ipv4/netfilter/nf_nat_snmp_basic-asn1.c
net/ipv4/netfilter/nf_nat_snmp_basic-asn1.h

will be automatically generated by ASN.1 compiler, so
No need to track them in git, it's better to ignore them.

Signed-off-by: Zhu Lingshan <lszhu@suse.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
2018-02-14 21:05:38 +01:00
Paolo Pisati
5704d4557f scripts/package: snap-pkg target
Following in footsteps of other targets like 'deb-pkg, 'rpm-pkg' and 'tar-pkg',
this patch adds a 'snap-pkg' target for the creation of a Linux kernel snap
package using the kbuild infrastructure.

A snap, in its general form, is a self contained, sandboxed, universal package
and it is intended to work across multiple distributions and/or devices. A snap
package is distributed as a single compressed squashfs filesystem.

A kernel snap is a snap package carrying the Linux kernel, kernel modules,
accessory files (DTBs, System.map, etc) and a manifesto file.  The purpose of a
kernel snap is to carry the Linux kernel during the creation of a system image,
eg. Ubuntu Core, and its subsequent upgrades.

For more information on snap packages: https://snapcraft.io/docs/

Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2017-12-13 00:00:18 +09:00
Linus Torvalds
2ce079f04d Kbuild misc updates for v4.15
- Clean up and fix RPM package build
 
 - Fix a warning in DEB package build
 
 - Improve coccicheck script
 
 - Improve some semantic patches
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJaDxwTAAoJED2LAQed4NsGtJAQAK1VnxVqcGznoy0CXg7vA93D
 iIstHN1AR1uFJgTEFU7PwKDd7zJ78R1lN0BeZat70RS4pv8YMvCFpjPajMbF0KHz
 zjRARuy+MKbWQVBGg7BjFaFcQqLrYLasIfp3nXDOBoyTxvaqvV/4HtyKISxYnY1n
 3vSoVm/JacwT9KZ3496eV8hZcO2pbpo4PvT5T/WGKzHCnHRjv40kCMj8a+BDLWWD
 LJ5CHXQRmzMTBR8J7OMVbaUl8JgJb/Gl6yAKnfNXVqaxzSMunWMC0cUEXjJ3kxEf
 wmthF99p4Og8Fe+eT5yUzODwPdH/JDqULaMKo1BSuQbB0ck0BRavlRvvTlv7ptKk
 5eoHoxop0GCNgsbhcXhpTQTDLqkGBtLVUD6pjUVGF5mtHIJ1m4GnNJ+4+cf453lr
 szhg0mOATydkOTQYg1oeWACXfoagbSieQQsQx5LIX3HTx3I+RW9FGEB7TltEGuoL
 cE+ijhIZZmFo7wHjcdW2FPV0A+qRYRPW//O2t7Zu/S/uRkrgTmpvIKPtoAfj7y+4
 c74LcsWyVB1TCMtbc2oJUyY6ltDuwTEA9i/FCr+GgaG3OHbmw7YEYewbhV9m4+Yr
 t3jNwJ+6TuxWX23RQPFgalAlf8XMr5MM0cF89Io0BZEIaoWWIGw1YiMxzL0Su61h
 eauy22XUBzZ2ewkcuq3v
 =7aYW
 -----END PGP SIGNATURE-----

Merge tag 'kbuild-misc-v4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild

Pull Kbuild misc updates from Masahiro Yamada:

 - Clean up and fix RPM package build

 - Fix a warning in DEB package build

 - Improve coccicheck script

 - Improve some semantic patches

* tag 'kbuild-misc-v4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
  docs: dev-tools: coccinelle: delete out of date wiki reference
  coccinelle: orplus: reorganize to improve performance
  coccinelle: use exists to improve efficiency
  builddeb: Pass the kernel:debarch substvar to dpkg-genchanges
  Coccinelle: use false positive annotation
  coccinelle: fix verbose message about .cocci file being run
  coccinelle: grep Options and Requires fields more precisely
  Coccinelle: make DEBUG_FILE option more useful
  coccinelle: api: detect identical chip data arrays
  coccinelle: Improve setup_timer.cocci matching
  Coccinelle: setup_timer: improve messages from setup_timer
  kbuild: rpm-pkg: do not force -jN in submake
  kbuild: rpm-pkg: keep spec file until make mrproper
  kbuild: rpm-pkg: fix jobserver unavailable warning
  kbuild: rpm-pkg: replace $RPM_BUILD_ROOT with %{buildroot}
  kbuild: rpm-pkg: fix build error when CONFIG_MODULES is disabled
  kbuild: rpm-pkg: refactor mkspec with here doc
  kbuild: rpm-pkg: clean up mkspec
  kbuild: rpm-pkg: install vmlinux.bz2 unconditionally
  kbuild: rpm-pkg: remove ppc64 specific image handling
2017-11-17 17:51:33 -08:00
Masahiro Yamada
af60e20708 kbuild: rpm-pkg: keep spec file until make mrproper
If build fails during (bin)rpm-pkg, the spec file is not cleaned by
anyone until the next successful build of the package.

We do not have to immediately delete the spec file in case somebody
may want to take a look at it.  Instead, make them ignored by git,
and cleaned up by make mrproper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2017-11-14 23:19:01 +09:00
Masahiro Yamada
10b62a2f78 .gitignore: move *.dtb and *.dtb.S patterns to the top-level .gitignore
Most of DT files are compiled under arch/*/boot/dts/, but we have some
other directories, like drivers/of/unittest-data/.  We often miss to
add gitignore patterns per directory.  Since there are no source files
that end with .dtb or .dtb.S, we can ignore the patterns globally.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Rob Herring <robh@kernel.org>
2017-11-08 11:20:24 -06:00
Masahiro Yamada
1377dd3e29 .gitignore: sort normal pattern rules alphabetically
We are having more and more ignore patterns.  Sort the list
alphabetically.  We will easily catch duplicated patterns if any.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Rob Herring <robh@kernel.org>
2017-11-08 11:20:23 -06:00
Vinícius Tinti
433db3e260 kbuild: Add support to generate LLVM assembly files
Add rules to kbuild in order to generate LLVM assembly files with the .ll
extension when using clang.

  # from c code
  make CC=clang kernel/pid.ll

Signed-off-by: Vinícius Tinti <viniciustinti@gmail.com>
Signed-off-by: Behan Webster <behanw@converseincode.com>
Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2017-04-25 08:13:52 +09:00
Linus Torvalds
44cee85a88 Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
Pull misc kbuild updates from Michal Marek:

 - coccicheck script improvements by Luis Rodriguez and Deepa Dinamani

 - new coccinelle patches by Yann Droneaud and Vaishali Thakkar

 - debian packaging fixes by Wilfried Klaebe, Henning Schild and Marcin
   Mielniczuk

* 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
  Fix the Debian packaging script on systems with no codename
  builddeb: fix file permissions before packaging
  scripts/coccinelle: require coccinelle >= 1.0.4 on device_node_continue.cocci
  coccicheck: refer to Documentation/coccinelle.txt and wiki
  coccicheck: add support for requring a coccinelle version
  scripts: add Linux .cocciconfig for coccinelle
  coccicheck: replace --very-quiet with --quiet when debugging
  coccicheck: add support for DEBUG_FILE
  coccicheck: enable parmap support
  coccicheck: make SPFLAGS more useful
  coccicheck: move spatch binary check up
  builddeb: really include objtool binary in headers package
  coccinelle: catch krealloc() on devm_*() allocated memory
  coccinelle: recognize more devm_* memory allocation functions
  coccinelle: also catch kzfree() issues
  coccicheck: Allow for overriding spatch flags
  Coccinelle: noderef: Add new rules and correct the old rule
2016-08-02 16:48:52 -04:00
Luis R. Rodriguez
dd951fc1b6 scripts: add Linux .cocciconfig for coccinelle
Coccinelle supports reading .cocciconfig, the order of precedence for
variables for .cocciconfig is as follows:

 o Your current user's home directory is processed first
 o Your directory from which spatch is called is processed next
 o The directory provided with the --dir option is processed last, if used

Since coccicheck runs through make, it naturally runs from the kernel
proper dir, as such the second rule above would be implied for picking up a
.cocciconfig when using 'make coccicheck'.

'make coccicheck' also supports using M= targets.If you do not supply
any M= target, it is assumed you want to target the entire kernel.
The kernel coccicheck script has:

    if [ "$KBUILD_EXTMOD" = "" ] ; then
        OPTIONS="--dir $srctree $COCCIINCLUDE"
    else
        OPTIONS="--dir $KBUILD_EXTMOD $COCCIINCLUDE"
    fi

KBUILD_EXTMOD is set when an explicit target with M= is used. For both cases
the spatch --dir argument is used, as such third rule applies when
whether M= is used or not, and when M= is used the target directory can
have its own .cocciconfig file. When M= is not passed as an argument to
coccicheck the target directory is the same as the directory from where
spatch was called.

If not using the kernel's coccicheck target, keep the above precedence order
logic of .cocciconfig reading. If using the kernel's coccicheck target,
override any of the kernel's .coccicheck's settings using SPFLAGS.

We help Coccinelle when used against Linux with a set of sensible defaults
options for Linux with our own Linux .cocciconfig. This hints to coccinelle
git can be used for 'git grep' queries over coccigrep. A timeout of 200
seconds should suffice for now.

The options picked up by coccinelle when reading a .cocciconfig do not appear
as arguments to spatch processes running on your system, to confirm what
options will be used by Coccinelle run:

  spatch --print-options-only

You can override with your own preferred index option by using SPFLAGS.
Coccinelle supports both glimpse and idutils. Glimpse had historically
provided the best performance, however recent benchmarks reveal idutils
is performing just as well. Due to some recent fixes however you however
will need at least coccinelle >= 1.0.6 if using idutils.

Coccinelle carries a script scripts/idutils_index.sh which creates the
idutils database with as follows:

    mkid -i C --output .id-utils.index

If using just "--use-idutils" coccinelle expects your idutils database to be
on the top level of the kernel as a file named ".id-utils.index". If you do
not use this you can symlink your database file to it, or you can specify the
database file following the "--use-idutils" argument. Examples:

    make SPFLAGS=--use-idutils coccicheck

This assumes you have $srctree/.id-utils.index, where $srctree is
the top level of the kernel.

    make SPFLAGS="--use-idutils /full-path/to/ID" coccicheck

Here you specify the full path of the idutils ID database. Using
.cocciconfig is possible, however given the order of precedence followed
by Coccinelle, and since the kernel now carries its own .cocciconfig,
you will need to use SPFLAGS to use idutils if desired.

v4:

o Recommend upgrade for using idutils with coccinelle due to some
  recent fixes.

o Refer to using --print-options-only for testing what options are
  picked up by .cocciconfig reading.

o Expand commit log considerably explaining *why* .cocconfig from
  two precedence rules are used when using coccicheck, and how to
  properly override these if needed.

o Expand Documentation/coccinelle.txt

v3: Expand commit log a bit more

Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Michal Marek <mmarek@suse.com>
2016-07-22 12:13:39 +02:00
Emese Revfy
6b90bd4ba4 GCC plugin infrastructure
This patch allows to build the whole kernel with GCC plugins. It was ported from
grsecurity/PaX. The infrastructure supports building out-of-tree modules and
building in a separate directory. Cross-compilation is supported too.
Currently the x86, arm, arm64 and uml architectures enable plugins.

The directory of the gcc plugins is scripts/gcc-plugins. You can use a file or a directory
there. The plugins compile with these options:
 * -fno-rtti: gcc is compiled with this option so the plugins must use it too
 * -fno-exceptions: this is inherited from gcc too
 * -fasynchronous-unwind-tables: this is inherited from gcc too
 * -ggdb: it is useful for debugging a plugin (better backtrace on internal
    errors)
 * -Wno-narrowing: to suppress warnings from gcc headers (ipa-utils.h)
 * -Wno-unused-variable: to suppress warnings from gcc headers (gcc_version
    variable, plugin-version.h)

The infrastructure introduces a new Makefile target called gcc-plugins. It
supports all gcc versions from 4.5 to 6.0. The scripts/gcc-plugin.sh script
chooses the proper host compiler (gcc-4.7 can be built by either gcc or g++).
This script also checks the availability of the included headers in
scripts/gcc-plugins/gcc-common.h.

The gcc-common.h header contains frequently included headers for GCC plugins
and it has a compatibility layer for the supported gcc versions.

The gcc-generate-*-pass.h headers automatically generate the registration
structures for GIMPLE, SIMPLE_IPA, IPA and RTL passes.

Note that 'make clean' keeps the *.so files (only the distclean or mrproper
targets clean all) because they are needed for out-of-tree modules.

Based on work created by the PaX Team.

Signed-off-by: Emese Revfy <re.emese@gmail.com>
Acked-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Michal Marek <mmarek@suse.com>
2016-06-07 22:57:10 +02:00
Kyeongmin Cho
52bbe141f3 gitignore: fix wording
Git files are the files that we don't want to ignore even if
they are dot-files. It must be "even if" but it says "even it".

Signed-off-by: Kyeongmin Cho <korea.drzix@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2016-04-28 11:01:23 +02:00
Linus Torvalds
d9241b22b5 Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
Pull misc kbuild updates from Michal Marek:
 - deb-pkg:
     + module signing fix
     + dtb files are added to the package
     + do not require `hostname -f` to work during build
     + make deb-pkg generates a source package, bindeb-pkg has been
       added to only generate the binary package
 - rpm-pkg packages /lib/modules as well
 - new coccinelle patch and updates to existing ones
 - new stackusage & stackdelta script to collect and compare stack usage
   info (using gcc's -fstack-usage)
 - make tags understands trace_*_rcuidle() macros
 - .gitignore updates, misc cleanups

* 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: (27 commits)
  deb-pkg: add source package
  package/Makefile: move source tar creation to a function
  scripts: add stackdelta script
  kbuild: remove *.su files generated by -fstack-usage
  .gitignore: add *.su pattern
  scripts: add stackusage script
  kbuild: avoid listing /lib/modules in kernel spec file
  fallback to hostname in scripts/package/builddeb
  coccinelle: api: extend spatch for dropping unnecessary owner
  deb-pkg: simplify directory creation
  scripts/tags.sh: Include trace_*_rcuidle() in tags
  scripts/package/Makefile: rpmbuild is needed for rpm targets
  Kbuild: Add ID files to .gitignore
  gitignore: Add MIPS vmlinux.32 to the list
  coccinelle: simple_return: Add a blank line
  coccinelle: irqf_oneshot.cocci: Improve the generated commit log
  coccinelle: api: add vma_pages.cocci
  scripts/coccinelle/misc/irqf_oneshot.cocci: Fix grammar
  scripts/coccinelle/misc/semicolon.cocci: Use imperative mood
  coccinelle: simple_open: Use imperative mood
  ...
2015-09-08 14:23:13 -07:00
Rasmus Villemoes
e25572878a .gitignore: add *.su pattern
Ignore the *.su files generated by using the gcc option -fstack-usage.

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-08-28 17:04:40 +02:00
David Woodhouse
fb11794991 modsign: Use single PEM file for autogenerated key
The current rule for generating signing_key.priv and signing_key.x509 is
a classic example of a bad rule which has a tendency to break parallel
make. When invoked to create *either* target, it generates the other
target as a side-effect that make didn't predict.

So let's switch to using a single file signing_key.pem which contains
both key and certificate. That matches what we do in the case of an
external key specified by CONFIG_MODULE_SIG_KEY anyway, so it's also
slightly cleaner.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: David Howells <dhowells@redhat.com>
2015-08-07 16:26:14 +01:00
Andi Kleen
a37161c058 Kbuild: Add ID files to .gitignore
I use GNU id-utils to find code (essentially a database backed grep),
which generates an ID file to maintain its data.

Add ID to the .gitignore file.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Michal Marek <mmarek@suse.cz>
2015-06-15 14:36:13 +02:00
Florian Fainelli
d0fe116b45 gitignore: Add MIPS vmlinux.32 to the list
MIPS64 kernels builds will produce a vmlinux.32 kernel image for
compatibility, ignore them.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Michal Marek <mmarek@suse.cz>
2015-06-15 11:10:32 +02:00