summaryrefslogtreecommitdiff
path: root/arch/x86/mach-generic/summit.c
AgeCommit message (Collapse)AuthorFilesLines
2009-01-29x86, summit: consolidate codeIngo Molnar1-94/+0
Consolidate all the Summit code into a single file: arch/x86/kernel/summit_32.c. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, smp: eliminate asm/mach-default/mach_wakecpu.hIngo Molnar1-1/+0
Spread mach_wakecpu.h's definitions into apic.h and genapic.h and remove mach_wakecpu.h. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, smp: refactor ->inquire_remote_apic() methodsIngo Molnar1-1/+1
Nothing exciting - a few subarches dont want APIC remote reads to be performed - the others are content with the default method. - extend the generic code to handle NULL methods - clear out dummy methods and replace them with NULL - clean up: remove wrapper macros, etc. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, smp: remove ->restore_NMI_vector()Ingo Molnar1-1/+0
Nothing actually restores the NMI vector - so remove this logic altogether. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, smp: refactor ->store/restore_NMI_vector() methodsIngo Molnar1-3/+2
Only NUMAQ does something substantial here, because it initializes via NMIs (not via INIT as standard SMP startup) - so it needs to store and restore the NMI vector. - extend the generic code to handle NULL methods - clear out dummy methods and replace them with NULL - clean up: remove wrapper macros, etc. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, smp: refactor ->smp_callin_clear_local_apic() methodsIngo Molnar1-1/+2
Only NUMAQ does something substantial here, because it initializes via NMIs (not via INIT as standard SMP startup) - so it needs to reset the APIC. - extend the generic code to handle NULL methods - clear out dummy methods and replace them with NULL - clean up: remove wrapper macros, etc. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, smp: refactor ->wait_for_init_deassert()Ingo Molnar1-1/+3
- spread out the namespace on a per APIC driver basis - handle a NULL ->wait_for_init_deassert() as a 'dont wait' default method - remove NUMAQ and Summit handlers Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, smp: clean up ->trampoline_phys_low/high handlingIngo Molnar1-2/+2
- spread out the namespace on a per apic driver basis - remove wrapper macros Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: untangle the send_IPI_*() jungleIngo Molnar1-3/+3
Our send_IPI_*() methods and definitions are a twisted mess: the same symbol is defined to different things depending on .config details, in a non-transparent way. - spread out the quirks into separately named per apic driver methods - prefix the standard PC methods with default_ - get rid of wrapper macro obfuscation - clean up various details Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: refactor ->cpu_mask_to_apicid*()Ingo Molnar1-2/+2
- spread out the namespace on a per driver basis - clean up the functions - get rid of macros Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: get rid of *_APIC_ID_MASK definitionsIngo Molnar1-1/+1
Impact: cleanup Remove the *_APIC_ID_MASK subarch definitions and move them straight to the genapic driver initialization code. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: refactor ->apic_id_mask & APIC_ID_MASKIngo Molnar1-1/+1
- spread out the namespace on a per driver basis - get rid of wrapper macros Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: refactor ->get_apic_id() & GET_APIC_ID()Ingo Molnar1-1/+1
- spread out the namespace on a per driver basis - get rid of macro wrappers - small cleanups Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86: consolidate the ->mps_oem_check() codeIngo Molnar1-1/+1
- spread out the mps_oem_check() namespace on a per APIC driver basis Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: refactor ->phys_pkg_id()Ingo Molnar1-1/+1
Refactor the ->phys_pkg_id() methods: - namespace separation - macro wrapper removal - open-coded calls to the methods in the generic code Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86: refactor ->enable_apic_mode() subarch methodsIngo Molnar1-1/+1
Only ES7000 has a real ->enable_apic_mode() method, the other subarchitectures define it but keep it empty. So mark the vector as NULL, extend the generic code to handle NULL -setup_portio_remap() entries and remove all the empty handlers. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86: refactor ->check_phys_apicid_present() subarch methodsIngo Molnar1-1/+1
- spread out the namespace to per driver methods - extend it to 64-bit as well so that we can use apic->check_phys_apicid_present() unconditionally Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86: refactor ->setup_portio_remap() subarch methodsIngo Molnar1-1/+1
Only NUMAQ has a real ->setup_portio_remap() method, the other subarchitectures define it but keep it empty. So mark the vector as NULL, extend the generic code to handle NULL -setup_portio_remap() entries and remove all the empty handlers. Also move the NUMAQ method from the header file into the apic driver .c file. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: clean up ->apicid_to_cpu_present()Ingo Molnar1-1/+1
- separate the namespace - remove macros Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: clean up ->cpu_present_to_apicid()Ingo Molnar1-1/+1
- separate the namespace - remove macros Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: clean up ->cpu_to_logical_apicid()Ingo Molnar1-1/+1
- separate the namespace - remove macros Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: clean up ->apicid_to_node()Ingo Molnar1-1/+1
- separate the namespace - remove macros Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: streamline the ->multi_timer_check() quirkIngo Molnar1-1/+1
only NUMAQ uses this quirk: to prevent the timer IRQ from being added on secondary nodes. All other genapic templates can have a NULL ->multi_timer_check() callback. Also, extend the generic code to treat a NULL pointer accordingly. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: clean up ->setup_apic_routing()Ingo Molnar1-1/+1
- separate the namespace - remove macros - remove namespace clash on 64-bit Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: clean up ->ioapic_phys_id_map()Ingo Molnar1-1/+1
- separate the namespace - remove macros Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: clean up ->init_apic_ldr()Ingo Molnar1-1/+1
- separate the namespace - remove macros Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: clean up ->vector_allocation_domain()Ingo Molnar1-2/+2
- separate the namespace - remove macros - move the default vector-allocation-domain to mach-generic - fix whitespace damage Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: remove no_balance_irq and no_ioapic_check flagsIngo Molnar1-3/+0
These flags are completely unused. (the in-kernel IRQ balancer has been removed from the upstream kernel.) Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: clean up check_apicid*() callbacksIngo Molnar1-2/+2
Clean up these methods - to make it clearer which function is used in which case. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: rename genapic::apic_destination_logical to genapic::dest_logicalIngo Molnar1-1/+1
This field name was unreasonably long - shorten it. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86: rename ->ESR_DISABLE to ->disable_esrIngo Molnar1-1/+1
the ->ESR_DISABLE shouting variant was used to enable the esr_disable macro wrappers. Those ugly macros are removed now so we can rename ->ESR_DISABLE to ->disable_esr Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86: clean up esr_disable() methodsIngo Molnar1-1/+1
Impact: cleanup Most subarchitectures want to disable the APIC ESR (Error Status Register), because they generally have hardware hacks that wrap standard CPUs into a bigger system and hence the APIC bus is quite non-standard and weirdnesses (lockups) have been seen with ESR reporting. Remove the esr_disable macros and put the desired flag into each subarchitecture's genapic template directly. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: clean up target_cpus methodsIngo Molnar1-1/+1
Impact: cleanup Clean up all the target_cpus() namespace overlap that exists between bigsmp, es7000, mach-default, numaq and summit - by separating the different functions into different names. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: remove SUMMIT_IRQ_DELIVERY_MODE and SUMMIT_IRQ_DEST_MODEIngo Molnar1-2/+3
Impact: cleanup They were only used in a single place and obscured the apic_summit template. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, apic: remove IRQ_DEST_MODE / IRQ_DELIVERY_MODEIngo Molnar1-2/+2
Remove the wrapper macros IRQ_DEST_MODE and IRQ_DELIVERY_MODE. The typical 32-bit and the 64-bit build all dereference via the genapic, so it's pointless to hide that indirection via these ugly macros. Furthermore, it also obscures subarchitecture details. So replace it with apic->irq_dest_mode / etc. accesses. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, genapic: rename int_delivery_mode, et. al.Ingo Molnar1-2/+2
int_delivery_mode is supposed to mean 'interrupt delivery mode', but it's quite a misnomer as 'int' we usually think of as an integer type ... The standard naming for such attributes is 'irq' - so rename the following fields and macros: int_delivery_mode => irq_delivery_mode INT_DELIVERY_MODE => IRQ_DELIVERY_MODE int_dest_mode => irq_dest_mode INT_DEST_MODE => IRQ_DEST_MODE Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86: clean up apic->apic_id_registered() methodsIngo Molnar1-1/+1
Impact: cleanup x86 subarchitectures each defined a "apic_id_registered()" method, which could be an inline function depending on which subarch we build for, and which was also the name of a genapic field. Untangle this namespace spaghetti by giving each of the instances a separate name. Also remove wrapper macro obfuscation. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86: clean up apic->acpi_madt_oem_check methodsIngo Molnar1-1/+1
Impact: refactor code x86 subarchitectures each defined a "acpi_madt_oem_check()" method, which could be an inline function, or an extern, or a static function, and which was also the name of a genapic field. Untangle this namespace spaghetti by setting ->acpi_madt_oem_check() to NULL on those subarchitectures that have no detection quirks, and rename the other ones (summit, es7000) that do. Also change default_acpi_madt_oem_check() to handle NULL entries, and clean its control flow up as well. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-29x86, genapic: cleanup 32-bit apic_summit templateIngo Molnar1-1/+57
Clean up the APIC driver template: - order fields properly - use the macro names explicitly (so that they can be renamed later) - fill in NULL entries as well Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-12-17x86 smp: modify send_IPI_mask interface to accept cpumask_t pointersMike Travis1-3/+2
Impact: cleanup, change parameter passing * Change genapic interfaces to accept cpumask_t pointers where possible. * Modify external callers to use cpumask_t pointers in function calls. * Create new send_IPI_mask_allbutself which is the same as the send_IPI_mask functions but removes smp_processor_id() from list. This removes another common need for a temporary cpumask_t variable. * Functions that used a temp cpumask_t variable for: cpumask_t allbutme = cpu_online_map; cpu_clear(smp_processor_id(), allbutme); if (!cpus_empty(allbutme)) ... become: if (!cpus_equal(cpu_online_map, cpumask_of_cpu(cpu))) ... * Other minor code optimizations (like using cpus_clear instead of CPU_MASK_NONE, etc.) Applies to linux-2.6.tip/master. Signed-off-by: Mike Travis <travis@sgi.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Acked-by: Ingo Molnar <mingo@elte.hu>
2008-11-17x86: fix wakeup_cpu with numaq/es7000, v2Yinghai Lu1-0/+1
Impact: fix secondary-CPU wakeup/init path with numaq and es7000 While looking at wakeup_secondary_cpu for WAKE_SECONDARY_VIA_NMI: |#ifdef WAKE_SECONDARY_VIA_NMI |/* | * Poke the other CPU in the eye via NMI to wake it up. Remember that the normal | * INIT, INIT, STARTUP sequence will reset the chip hard for us, and this | * won't ... remember to clear down the APIC, etc later. | */ |static int __devinit |wakeup_secondary_cpu(int logical_apicid, unsigned long start_eip) |{ | unsigned long send_status, accept_status = 0; | int maxlvt; |... | if (APIC_INTEGRATED(apic_version[phys_apicid])) { | maxlvt = lapic_get_maxlvt(); I noticed that there is no warning about undefined phys_apicid... because WAKE_SECONDARY_VIA_NMI and WAKE_SECONDARY_VIA_INIT can not be defined at the same time. So NUMAQ is using wrong wakeup_secondary_cpu. WAKE_SECONDARY_VIA_NMI, WAKE_SECONDARY_VIA_INIT and WAKE_SECONDARY_VIA_MIP are variants of a weird and fragile preprocessor-driven "HAL" mechanisms to specify the kind of secondary-CPU wakeup strategy a given x86 kernel will use. The vast majority of systems want to use INIT for secondary wakeup - NUMAQ uses an NMI, (old-style-) ES7000 uses 'MIP' (a firmware driven in-memory flag to let secondaries continue). So convert these mechanisms to x86_quirks and add a ->wakeup_secondary_cpu() method to specify the rare exception to the sane default. Extend genapic accordingly as well, for 32-bit. While looking further, I noticed that functions in wakecup.h for numaq and es7000 are different to the default in mach_wakecpu.h - but smpboot.c will only use default mach_wakecpu.h with smphook.h. So we need to add mach_wakecpu.h for mach_generic, to properly support numaq and es7000, and vectorize the following SMP init methods: int trampoline_phys_low; int trampoline_phys_high; void (*wait_for_init_deassert)(atomic_t *deassert); void (*smp_callin_clear_local_apic)(void); void (*store_NMI_vector)(unsigned short *high, unsigned short *low); void (*restore_NMI_vector)(unsigned short *high, unsigned short *low); void (*inquire_remote_apic)(int apicid); Signed-off-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-10-16x86: make 32bit support per_cpu vectorYinghai Lu1-0/+14
so we can merge io_apic_32.c and io_apic_64.c v2: Use cpu_online_map as target cpus for bigsmp, just like 64-bit is doing. Also remove some unused TARGET_CPUS macro. v3: need to check if desc is null in smp_irq_move_cleanup also migration needs to reset vector too, so copy __target_IO_APIC_irq from 64bit. (the duplication will go away once the two files are unified.) Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-07-26x86: mach_summit to summitYinghai Lu1-4/+4
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-07-12x86: mach_apicdef.h need to include before smp.hYinghai Lu1-3/+2
smp.h internal has include, so need to include that at first when genericarch use them need to have different apicdef.h Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Cc: Suresh Siddha <suresh.b.siddha@intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-04-17x86: coding style fixes to arch/x86/mach-generic/summit.cPaolo Ciarrocchi1-4/+4
File is now error/warning free. arch/x86/mach-generic/summit.o: text data bss dec hex filename 1481 140 0 1621 655 summit.o.before 1481 140 0 1621 655 summit.o.after md5: 7b7dc1cbd381af7b9393da989da5b0fd summit.o.before.asm 7b7dc1cbd381af7b9393da989da5b0fd summit.o.after.asm Signed-off-by: Paolo Ciarrocchi <paolo.ciarrocchi@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
2007-10-11i386: move mach-genericThomas Gleixner1-0/+27
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu>