lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 30 Aug 2023 10:32:32 -0700
From:   Dave Hansen <dave.hansen@...ux.intel.com>
To:     torvalds@...ux-foundation.org
Cc:     x86@...nel.org, linux-kernel@...r.kernel.org,
        Dave Hansen <dave.hansen@...ux.intel.com>
Subject: [GIT PULL] x86/apic for 6.6-rc1

Hi Linus,

Please pull some x86/apic changes for 6.6-rc1.  This includes a very
thorough rework of the 'struct apic' handlers.  Quite a variety of
them popped up over the years, especially in the 32-bit days when odd
apics were much more in vogue.

The end result speaks for itself, which is a removal of a ton of code
and static calls to replace indirect calls.

If there's any breakage here, it's likely to be around the 32-bit
museum pieces that get light to no testing these days.

There is an oddity in the authorship/SoB chains I wanted to point out.
When sticking this series on top of the x86/apic pile, I managed to
replace Thomas's "Author:" with mine for a pair of patches:

	28b8235238fa ("x86/apic: Wrap IPI calls into helper functions")
	670c04add6e1 ("x86/apic: Nuke ack_APIC_irq()")

This was noticed after sitting in the public tree for a week or two
and I figured you'd rather have slightly wonky authorship than
something that looked like a fresh rebase close to the merge window.

--

The following changes since commit 5d0c230f1de8c7515b6567d9afba1f196fb4e2f4:

  Linux 6.5-rc4 (2023-07-30 13:23:47 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git tags/x86_apic_for_6.6-rc1

for you to fetch changes up to f8542a55499a69a859c84866b66f0df43933e563:

  x86/apic: Turn on static calls (2023-08-09 12:00:55 -0700)

----------------------------------------------------------------
 * Rework apic callbacks, getting rid of unnecessary ones and
   coalescing lots of silly duplicates.
 * Use static_calls() instead of indirect calls for apic->foo()
 * Tons of cleanups an crap removal along the way

----------------------------------------------------------------
Dave Hansen (3):
      x86/apic: Remove mpparse 'apicid' variable
      x86/apic: Nuke ack_APIC_irq()
      x86/apic: Wrap IPI calls into helper functions

Juergen Gross (1):
      x86/xen/apic: Use standard apic driver mechanism for Xen PV

Thomas Gleixner (59):
      x86/vector: Rename send_cleanup_vector() to vector_schedule_cleanup()
      x86/vector: Replace IRQ_MOVE_CLEANUP_VECTOR with a timer callback
      x86/cpu: Make identify_boot_cpu() static
      x86/cpu: Remove unused physid_*() nonsense
      x86/apic: Rename disable_apic
      x86/apic/ioapic: Rename skip_ioapic_setup
      x86/apic: Remove pointless x86_bios_cpu_apicid
      x86/apic: Get rid of hard_smp_processor_id()
      x86/apic: Remove unused max_physical_apicid
      x86/apic: Nuke unused apic::inquire_remote_apic()
      x86/apic: Consolidate boot_cpu_physical_apicid initialization sites
      x86/apic: Register boot CPU APIC early
      x86/apic: Remove the pointless APIC version check
      x86/of: Fix the APIC address registration
      x86/apic: Make some APIC init functions bool
      x86/apic: Split register_apic_address()
      x86/apic: Sanitize APIC address setup
      x86/xen/pv: Pretend that it found SMP configuration
      x86/apic: Sanitize num_processors handling
      x86/apic: Nuke another processor check
      x86/apic: Remove check_phys_apicid_present()
      x86/apic: Get rid of apic_phys
      x86/apic/32: Sanitize logical APIC ID handling
      x86/apic/32: Remove x86_cpu_to_logical_apicid
      x86/apic/ipi: Code cleanup
      x86/apic: Mop up early_per_cpu() abuse
      x86/apic/32: Remove pointless default_acpi_madt_oem_check()
      x86/apic/32: Decrapify the def_bigsmp mechanism
      x86/apic/32: Remove bigsmp_cpu_present_to_apicid()
      x86/apic: Nuke empty init_apic_ldr() callbacks
      x86/apic: Nuke apic::apicid_to_cpu_present()
      x86/ioapic/32: Decrapify phys_id_present_map operation
      x86/apic: Mop up *setup_apic_routing()
      x86/apic: Mop up apic::apic_id_registered()
      x86/apic/ipi: Tidy up the code and fixup comments
      x86/apic: Consolidate wait_icr_idle() implementations
      x86/apic: Allow apic::wait_icr_idle() to be NULL
      x86/apic: Allow apic::safe_wait_icr_idle() to be NULL
      x86/apic: Move safe wait_icr_idle() next to apic_mem_wait_icr_idle()
      x86/apic/uv: Get rid of wrapper callbacks
      x86/apic/x2apic: Share all common IPI functions
      x86/apic/64: Uncopypaste probing
      x86/apic: Wrap APIC ID validation into an inline
      x86/apic: Add max_apic_id member
      x86/apic: Simplify X2APIC ID validation
      x86/apic: Prepare x2APIC for using apic::max_apic_id
      x86/apic: Sanitize APIC ID range validation
      x86/apic: Remove pointless NULL initializations
      x86/apic/noop: Tidy up the code
      x86/apic: Remove pointless arguments from [native_]eoi_write()
      x86/apic: Wrap apic->native_eoi() into a helper
      x86/apic: Provide common init infrastructure
      x86/apic: Provide apic_update_callback()
      x86/apic: Replace acpi_wake_cpu_handler_update() and apic_set_eoi_cb()
      x86/apic: Convert other overrides to apic_update_callback()
      x86/xen/apic: Mark apic __ro_after_init
      x86/apic: Mark all hotpath APIC callback wrappers __always_inline
      x86/apic: Provide static call infrastructure for APIC callbacks
      x86/apic: Turn on static calls

Xin Li (1):
      tools: Get rid of IRQ_MOVE_CLEANUP_VECTOR from tools

 arch/x86/hyperv/hv_apic.c                          |  26 +-
 arch/x86/hyperv/hv_init.c                          |   2 +-
 arch/x86/hyperv/hv_spinlock.c                      |   2 +-
 arch/x86/hyperv/hv_vtl.c                           |   2 +-
 arch/x86/include/asm/apic.h                        | 239 ++++++-----
 arch/x86/include/asm/hw_irq.h                      |   4 +-
 arch/x86/include/asm/idtentry.h                    |   1 -
 arch/x86/include/asm/io_apic.h                     |   7 +-
 arch/x86/include/asm/irq_vectors.h                 |   7 -
 arch/x86/include/asm/mpspec.h                      |  31 +-
 arch/x86/include/asm/processor.h                   |   1 -
 arch/x86/include/asm/smp.h                         |  11 -
 arch/x86/kernel/acpi/boot.c                        |  12 +-
 arch/x86/kernel/apic/Makefile                      |   2 +-
 arch/x86/kernel/apic/apic.c                        | 454 +++++++--------------
 arch/x86/kernel/apic/apic_common.c                 |  21 +-
 arch/x86/kernel/apic/apic_flat_64.c                |  80 +---
 arch/x86/kernel/apic/apic_noop.c                   |  91 +----
 arch/x86/kernel/apic/apic_numachip.c               |  50 +--
 arch/x86/kernel/apic/bigsmp_32.c                   |  89 +---
 arch/x86/kernel/apic/hw_nmi.c                      |   4 +-
 arch/x86/kernel/apic/init.c                        | 110 +++++
 arch/x86/kernel/apic/io_apic.c                     |  30 +-
 arch/x86/kernel/apic/ipi.c                         | 176 ++++----
 arch/x86/kernel/apic/local.h                       |  30 +-
 arch/x86/kernel/apic/msi.c                         |   2 +-
 arch/x86/kernel/apic/probe_32.c                    | 117 ++----
 arch/x86/kernel/apic/probe_64.c                    |  18 +-
 arch/x86/kernel/apic/vector.c                      | 116 ++++--
 arch/x86/kernel/apic/x2apic_cluster.c              |  23 +-
 arch/x86/kernel/apic/x2apic_phys.c                 |  74 ++--
 arch/x86/kernel/apic/x2apic_uv_x.c                 |  51 +--
 arch/x86/kernel/cpu/acrn.c                         |   2 +-
 arch/x86/kernel/cpu/amd.c                          |   2 +-
 arch/x86/kernel/cpu/common.c                       |   2 +-
 arch/x86/kernel/cpu/hygon.c                        |   3 +-
 arch/x86/kernel/cpu/mce/amd.c                      |   2 +-
 arch/x86/kernel/cpu/mce/inject.c                   |   3 +-
 arch/x86/kernel/cpu/mce/threshold.c                |   2 +-
 arch/x86/kernel/cpu/mshyperv.c                     |   4 +-
 arch/x86/kernel/devicetree.c                       |  21 +-
 arch/x86/kernel/idt.c                              |   1 -
 arch/x86/kernel/irq.c                              |  14 +-
 arch/x86/kernel/irq_work.c                         |   4 +-
 arch/x86/kernel/jailhouse.c                        |   6 +-
 arch/x86/kernel/kvm.c                              |  14 +-
 arch/x86/kernel/mpparse.c                          |  20 +-
 arch/x86/kernel/nmi_selftest.c                     |   2 +-
 arch/x86/kernel/setup.c                            |   7 +-
 arch/x86/kernel/setup_percpu.c                     |  10 -
 arch/x86/kernel/sev.c                              |   4 +-
 arch/x86/kernel/smp.c                              |  10 +-
 arch/x86/kernel/smpboot.c                          | 115 +-----
 arch/x86/kernel/vsmp_64.c                          |   2 +-
 arch/x86/kvm/vmx/posted_intr.c                     |   2 +-
 arch/x86/kvm/vmx/vmx.c                             |   2 +-
 arch/x86/mm/srat.c                                 |   5 +-
 arch/x86/pci/xen.c                                 |   2 +-
 arch/x86/platform/uv/uv_irq.c                      |   2 +-
 arch/x86/platform/uv/uv_nmi.c                      |   2 +-
 arch/x86/xen/apic.c                                |  85 +---
 arch/x86/xen/enlighten_hvm.c                       |   2 +-
 arch/x86/xen/enlighten_pv.c                        |   4 +-
 arch/x86/xen/smp_pv.c                              |   5 +-
 drivers/iommu/amd/iommu.c                          |   2 +-
 drivers/iommu/hyperv-iommu.c                       |   4 +-
 drivers/iommu/intel/irq_remapping.c                |   2 +-
 tools/arch/x86/include/asm/irq_vectors.h           |   7 -
 .../trace/beauty/tracepoints/x86_irq_vectors.sh    |   2 +-
 69 files changed, 841 insertions(+), 1420 deletions(-)
 create mode 100644 arch/x86/kernel/apic/init.c

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ