From: Ingo Molnar <mingo@elte.hu>
To: Andi Kleen <andi@firstfloor.org>
Cc: linux-kernel@vger.kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: x86: unify genapic code, unify subarchitectures, remove old subarchitecture code
Date: Thu, 29 Jan 2009 23:29:56 +0100 [thread overview]
Message-ID: <20090129222956.GA1668@elte.hu> (raw)
In-Reply-To: <87vdryw6ql.fsf@basil.nowhere.org>
* Andi Kleen <andi@firstfloor.org> wrote:
> Also bigsmp is kind of obsolete too, it could be probably
> merged with default with very tiny impact because it's not
> all that different.
i dont think you have understood the driving principle behind this
restructuring and unification.
The whole _point_ of the apic driver infrastructure is to use it for
dissimilar APIC modes.
In the future we'll create _more_ of them, not less - so that we can
remove runtime conditionals from the drivers and that we can use the APIC
driver for the hardware that is the most efficient.
For example, the apic_default driver (which is used if all APIC IDs are
between 0 and 7 - which is the majority of current hardware), is more
efficient at sending IPIs, because it can send a broadcast IPI (used for
TLB flushes for example) as a single IPI.
The apic_bigsmp driver on the other hand has to use a 'serialized'
sequence of IPIs, to each CPU separately. That is less efficient,
especially for something as performance-sensitive as TLB flushes.
To "unify" the ability of apic_bigsmp to deal with APIC IDs >= 8 with the
more efficient logical addressing mode of apc_default is possible but ugly
- we'd have to add runtime checks and flip between the two methods. What
So what you call "very tiny impact" is in reality unnecessary and
avoidable overhead.
Ingo
next prev parent reply other threads:[~2009-01-29 22:30 UTC|newest]
Thread overview: 134+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-28 23:41 x86: unify genapic code, unify subarchitectures, remove old subarchitecture code Ingo Molnar
2009-01-28 23:41 ` [PATCH 001/114] x86, genapic: refactor genapic_64.h Ingo Molnar
2009-01-28 23:41 ` [PATCH 002/114] x86, genapic: refactor genapic_32.h Ingo Molnar
2009-01-28 23:41 ` [PATCH 003/114] x86, genapic: unify struct genapic Ingo Molnar
2009-01-28 23:41 ` [PATCH 004/114] x86, genapic: finish unification Ingo Molnar
2009-01-28 23:41 ` [PATCH 005/114] x86, genapic: cleanups Ingo Molnar
2009-01-28 23:41 ` [PATCH 006/114] x86, genapic: provide IPI callbacks unconditionally Ingo Molnar
2009-01-28 23:41 ` [PATCH 007/114] x86: rename 'genapic' to 'apic' Ingo Molnar
2009-01-28 23:41 ` [PATCH 008/114] x86: clean up genapic_flat Ingo Molnar
2009-01-28 23:41 ` [PATCH 009/114] x86: clean up genapic_phys_flat Ingo Molnar
2009-01-28 23:41 ` [PATCH 010/114] x86: clean up apic_x2apic_uv_x Ingo Molnar
2009-01-28 23:41 ` [PATCH 011/114] x86: clean up apic_x2apic_phys Ingo Molnar
2009-01-28 23:41 ` [PATCH 012/114] x86: clean up apic_x2apic_cluster Ingo Molnar
2009-01-28 23:41 ` [PATCH 013/114] x86, genapic: cleanup 32-bit apic_default template Ingo Molnar
2009-01-28 23:41 ` [PATCH 014/114] x86, genapic: cleanup 32-bit apic_bigsmp template Ingo Molnar
2009-01-28 23:41 ` [PATCH 015/114] x86, genapic: cleanup 32-bit apic_numaq template Ingo Molnar
2009-01-28 23:41 ` [PATCH 016/114] x86, genapic: cleanup 32-bit apic_es7000 template Ingo Molnar
2009-01-28 23:41 ` [PATCH 017/114] x86, genapic: cleanup 32-bit apic_summit template Ingo Molnar
2009-01-28 23:41 ` [PATCH 018/114] x86: remove APIC_INIT / APICFUNC / IPIFUNC Ingo Molnar
2009-01-28 23:41 ` [PATCH 019/114] x86: clean up apic->acpi_madt_oem_check methods Ingo Molnar
2009-01-28 23:41 ` [PATCH 020/114] x86: clean up apic->apic_id_registered() methods Ingo Molnar
2009-01-28 23:41 ` [PATCH 021/114] x86, genapic: rename int_delivery_mode, et. al Ingo Molnar
2009-01-28 23:41 ` [PATCH 022/114] x86, apic: remove IRQ_DEST_MODE / IRQ_DELIVERY_MODE Ingo Molnar
2009-01-28 23:41 ` [PATCH 023/114] x86, apic: remove DEFAULT_IRQ_DELIVERY_MODE and DEFAULT_IRQ_DEST_MODE Ingo Molnar
2009-01-28 23:41 ` [PATCH 024/114] x86, apic: remove SUMMIT_IRQ_DELIVERY_MODE and SUMMIT_IRQ_DEST_MODE Ingo Molnar
2009-01-28 23:41 ` [PATCH 025/114] x86, apic: remove NUMAQ_IRQ_DELIVERY_MODE and NUMAQ_IRQ_DEST_MODE Ingo Molnar
2009-01-28 23:41 ` [PATCH 026/114] x86, apic: remove BIGSMP_IRQ_DELIVERY_MODE and BIGSMP_IRQ_DEST_MODE Ingo Molnar
2009-01-28 23:41 ` [PATCH 027/114] x86, apic: remove ES7000_IRQ_DELIVERY_MODE and ES7000_IRQ_DEST_MODE Ingo Molnar
2009-01-28 23:41 ` [PATCH 028/114] x86, apic: remove IRQ_DEST_MODE Ingo Molnar
2009-01-28 23:41 ` [PATCH 029/114] x86, apic: clean up target_cpus methods Ingo Molnar
2009-01-28 23:41 ` [PATCH 030/114] x86, apic: clean up / remove TARGET_CPUS Ingo Molnar
2009-01-28 23:41 ` [PATCH 031/114] x86: clean up esr_disable() methods Ingo Molnar
2009-01-28 23:41 ` [PATCH 032/114] x86: rename ->ESR_DISABLE to ->disable_esr Ingo Molnar
2009-01-28 23:41 ` [PATCH 033/114] x86: clean up the APIC_DEST_LOGICAL logic Ingo Molnar
2009-01-28 23:41 ` [PATCH 034/114] x86, apic: rename genapic::apic_destination_logical to genapic::dest_logical Ingo Molnar
2009-01-28 23:41 ` [PATCH 035/114] x86, apic: clean up check_apicid*() callbacks Ingo Molnar
2009-01-28 23:41 ` [PATCH 036/114] x86, apic: remove no_balance_irq and no_ioapic_check flags Ingo Molnar
2009-01-28 23:41 ` [PATCH 037/114] x86, apic: clean up ->vector_allocation_domain() Ingo Molnar
2009-01-28 23:41 ` [PATCH 038/114] x86, apic: clean up ->init_apic_ldr() Ingo Molnar
2009-01-28 23:41 ` [PATCH 039/114] x86, apic: clean up ->ioapic_phys_id_map() Ingo Molnar
2009-01-28 23:41 ` [PATCH 040/114] x86, apic: clean up ->setup_apic_routing() Ingo Molnar
2009-01-28 23:41 ` [PATCH 041/114] x86, apic: streamline the ->multi_timer_check() quirk Ingo Molnar
2009-01-28 23:41 ` [PATCH 042/114] x86, apic: clean up ->apicid_to_node() Ingo Molnar
2009-01-28 23:41 ` [PATCH 043/114] x86, apic: clean up ->cpu_to_logical_apicid() Ingo Molnar
2009-01-28 23:41 ` [PATCH 044/114] x86, apic: clean up ->cpu_present_to_apicid() Ingo Molnar
2009-01-28 23:41 ` [PATCH 045/114] x86, apic: clean up ->apicid_to_cpu_present() Ingo Molnar
2009-01-28 23:41 ` [PATCH 046/114] x86: refactor ->setup_portio_remap() subarch methods Ingo Molnar
2009-01-28 23:41 ` [PATCH 047/114] x86: refactor ->check_phys_apicid_present() " Ingo Molnar
2009-01-28 23:41 ` [PATCH 048/114] x86: refactor ->enable_apic_mode() " Ingo Molnar
2009-01-28 23:41 ` [PATCH 049/114] x86, es7000: clean up es7000_enable_apic_mode() Ingo Molnar
2009-01-28 23:41 ` [PATCH 050/114] x86, apic: unify phys_pkg_id() Ingo Molnar
2009-01-28 23:41 ` [PATCH 051/114] x86, apic: refactor ->phys_pkg_id() Ingo Molnar
2009-01-28 23:41 ` [PATCH 052/114] x86, smp: clean up mps_oem_check() Ingo Molnar
2009-01-28 23:41 ` [PATCH 053/114] x86, mpparse: call the generic quirk handlers early Ingo Molnar
2009-01-28 23:42 ` [PATCH 054/114] x86: consolidate the ->mps_oem_check() code Ingo Molnar
2009-01-28 23:42 ` [PATCH 055/114] x86, apic: refactor ->get_apic_id() & GET_APIC_ID() Ingo Molnar
2009-01-28 23:42 ` [PATCH 056/114] x86, apic: refactor ->apic_id_mask & APIC_ID_MASK Ingo Molnar
2009-01-28 23:42 ` [PATCH 057/114] x86, apic: get rid of *_APIC_ID_MASK definitions Ingo Molnar
2009-01-28 23:42 ` [PATCH 058/114] x86, apic: refactor ->cpu_mask_to_apicid*() Ingo Molnar
2009-01-28 23:42 ` [PATCH 059/114] x86, apic: untangle the send_IPI_*() jungle Ingo Molnar
2009-01-28 23:42 ` [PATCH 060/114] x86, smp: clean up ->trampoline_phys_low/high handling Ingo Molnar
2009-01-28 23:42 ` [PATCH 061/114] x86: set ->trampoline_phys_low/high on 64-bit too Ingo Molnar
2009-01-28 23:42 ` [PATCH 062/114] x86, smp: refactor ->wait_for_init_deassert() Ingo Molnar
2009-01-28 23:42 ` [PATCH 063/114] x86, smp: refactor ->smp_callin_clear_local_apic() methods Ingo Molnar
2009-01-28 23:42 ` [PATCH 064/114] x86, smp: refactor ->store/restore_NMI_vector() methods Ingo Molnar
2009-01-28 23:42 ` [PATCH 065/114] x86, smp: remove ->restore_NMI_vector() Ingo Molnar
2009-01-28 23:42 ` [PATCH 066/114] x86, smp: refactor ->inquire_remote_apic() methods Ingo Molnar
2009-01-28 23:42 ` [PATCH 067/114] x86, ES7000: consolidate the APIC code Ingo Molnar
2009-01-28 23:42 ` [PATCH 068/114] x86, smp: eliminate asm/mach-default/mach_wakecpu.h Ingo Molnar
2009-01-28 23:42 ` [PATCH 069/114] x86: eliminate asm/mach-*/mach_mpparse.h Ingo Molnar
2009-01-28 23:42 ` [PATCH 070/114] x86: remove mach_mpspec.h Ingo Molnar
2009-01-28 23:42 ` [PATCH 071/114] x86: remove mach_apicdef.h Ingo Molnar
2009-01-28 23:42 ` [PATCH 072/114] x86, smp: refactor ->wake_cpu Ingo Molnar
2009-01-28 23:42 ` [PATCH 073/114] x86, numaq: consolidate code Ingo Molnar
2009-01-28 23:42 ` [PATCH 074/114] x86, summit: " Ingo Molnar
2009-01-28 23:42 ` [PATCH 075/114] x86: remove mach_apic.h Ingo Molnar
2009-01-28 23:42 ` [PATCH 076/114] x86, ES7000: Consolidate code Ingo Molnar
2009-01-28 23:42 ` [PATCH 077/114] x86, NUMAQ: " Ingo Molnar
2009-01-28 23:42 ` [PATCH 078/114] x86, bigsmp: consolidate code Ingo Molnar
2009-01-28 23:42 ` [PATCH 079/114] x86, bigsmp: consolidate header code Ingo Molnar
2009-01-28 23:42 ` [PATCH 080/114] x86, smp: remove mach_ipi.h Ingo Molnar
2009-01-28 23:42 ` [PATCH 081/114] x86: remove subarchitecture support code Ingo Molnar
2009-01-28 23:42 ` [PATCH 082/114] x86: move mach-default/*.h files to asm/ Ingo Molnar
2009-01-28 23:42 ` [PATCH 083/114] x86: remove subarchitecture support Ingo Molnar
2009-01-28 23:42 ` [PATCH 084/114] x86/Voyager: clean up BROKEN Kconfig reference Ingo Molnar
2009-01-28 23:42 ` [PATCH 085/114] x86: disable Voyager temporarily Ingo Molnar
2009-01-28 23:42 ` [PATCH 086/114] x86/Voyager: remove MCA Kconfig quirk Ingo Molnar
2009-01-28 23:42 ` [PATCH 087/114] x86/Voyager: remove NATSEMI " Ingo Molnar
2009-01-28 23:42 ` [PATCH 088/114] x86/Voyager: remove KVM " Ingo Molnar
2009-01-28 23:42 ` [PATCH 089/114] x86/Voyager: remove KGDB " Ingo Molnar
2009-01-28 23:42 ` [PATCH 090/114] x86/Voyager: remove HIBERNATION " Ingo Molnar
2009-01-28 23:42 ` [PATCH 091/114] x86/Voyager: remove ARCH_SUSPEND_POSSIBLE " Ingo Molnar
2009-01-28 23:42 ` [PATCH 092/114] x86: replace CONFIG_X86_SMP with CONFIG_SMP Ingo Molnar
2009-01-28 23:42 ` [PATCH 093/114] x86: generalize boot_cpu_id Ingo Molnar
2009-01-28 23:42 ` [PATCH 094/114] x86/Voyager: remove X86_HT Kconfig quirk Ingo Molnar
2009-01-28 23:42 ` [PATCH 095/114] x86/Voyager: remove X86_BIOS_REBOOT " Ingo Molnar
2009-01-28 23:42 ` [PATCH 096/114] x86/Voyager: remove X86_FIND_SMP_CONFIG " Ingo Molnar
2009-01-28 23:42 ` [PATCH 097/114] x86/VisWS: remove " Ingo Molnar
2009-01-28 23:42 ` [PATCH 098/114] x86/Voyager: remove VMI " Ingo Molnar
2009-01-28 23:42 ` [PATCH 099/114] x86/Voyager: remove KVM_CLOCK quirk Ingo Molnar
2009-01-28 23:42 ` [PATCH 100/114] x86/Voyager: remove KVM_GUEST quirk Ingo Molnar
2009-01-28 23:42 ` [PATCH 101/114] x86/Voyager: remove PARAVIRT Kconfig quirk Ingo Molnar
2009-01-28 23:42 ` [PATCH 102/114] x86/Voyager: remove APIC/IO-APIC Kbuild quirk Ingo Molnar
2009-01-28 23:42 ` [PATCH 103/114] x86/Voyager: remove MCE quirk Ingo Molnar
2009-01-28 23:42 ` [PATCH 104/114] x86/Voyager: remove HOTPLUG_CPU Kconfig quirk Ingo Molnar
2009-01-28 23:42 ` [PATCH 105/114] x86/Voyager: remove power management " Ingo Molnar
2009-01-28 23:42 ` [PATCH 106/114] x86/Voyager: remove ISA quirk Ingo Molnar
2009-01-28 23:42 ` [PATCH 107/114] x86: cleanup, introduce CONFIG_NON_STANDARD_PLATFORMS Ingo Molnar
2009-01-28 23:42 ` [PATCH 108/114] x86: move ELAN to the NON_STANDARD_PLATFORM section Ingo Molnar
2009-01-28 23:42 ` [PATCH 109/114] x86: move VOYAGER " Ingo Molnar
2009-01-28 23:42 ` [PATCH 110/114] x86: move non-standard 32-bit platform Kconfig entries Ingo Molnar
2009-01-28 23:42 ` [PATCH 111/114] x86: move X86_VSMP from subarch menu Ingo Molnar
2009-01-28 23:42 ` [PATCH 112/114] x86: remove the " Ingo Molnar
2009-01-28 23:42 ` [PATCH 113/114] x86: rename X86_GENERICARCH to X86_32_NON_STANDARD Ingo Molnar
2009-01-28 23:43 ` [PATCH 114/114] x86/Voyager: move to the X86_32_NON_STANDARD code section Ingo Molnar
2009-01-29 1:52 ` x86: unify genapic code, unify subarchitectures, remove old subarchitecture code Suresh Siddha
2009-01-29 11:27 ` Ingo Molnar
2009-01-29 20:11 ` Suresh Siddha
2009-01-29 20:26 ` Ingo Molnar
2009-01-29 14:02 ` Andi Kleen
2009-01-29 20:36 ` Yinghai Lu
2009-01-29 21:04 ` H. Peter Anvin
2009-01-29 21:24 ` Tim Pepper
2009-01-29 22:14 ` Ingo Molnar
2009-01-29 22:19 ` Valdis.Kletnieks
2009-01-29 22:58 ` Tim Pepper
2009-01-29 23:27 ` Ingo Molnar
2009-01-30 9:01 ` Andi Kleen
2009-01-29 22:29 ` Ingo Molnar [this message]
-- strict thread matches above, loose matches on Subject: below --
2009-02-08 14:16 James Bottomley
2009-02-08 16:56 ` Jeremy Fitzhardinge
2009-02-15 17:41 ` James Bottomley
2009-02-15 22:48 ` Jeremy Fitzhardinge
2009-02-22 23:25 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090129222956.GA1668@elte.hu \
--to=mingo@elte.hu \
--cc=andi@firstfloor.org \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox