24 Dec, 2011
1 commit
-
Currently we start with the default apic_flat mode and switch to some other
apic model depending on the apic drivers acpi_madt_oem_check() routines and
later followed by the apic drivers probe() routines.Once we selected non flat mode there was no case where we fall back to
flat mode again.Upcoming changes allow bios-enabled x2apic mode to be disabled by the OS
if interrupt-remapping etc is not setup properly by the bios.We now has a case for the apic to fall back to legacy flat mode during
apic driver probe() seqeuence. Add a simple flat_probe() which allows
the apic_flat mode to be the last fallback option.Signed-off-by: Yinghai Lu
Link: http://lkml.kernel.org/r/20111222014632.484984298@sbsiddha-desk.sc.intel.com
Signed-off-by: Suresh Siddha
Signed-off-by: H. Peter Anvin
06 Dec, 2011
1 commit
-
Allow flat_init_apic_ldr() to be used outside the compilation
unit for similar APIC implementations.Signed-off-by: Daniel J Blueman
Cc: Steffen Persvold
Cc: Jesse Barnes
Link: http://lkml.kernel.org/r/1323073238-32686-1-git-send-email-daniel@numascale-asia.com
Signed-off-by: Ingo Molnar
24 May, 2011
1 commit
-
apic_flat_64.c needs to include module.h because it uses
EXPORT_SYMBOL_GPL().This fixes these warnings on some !SMP randconfigs:
arch/x86/kernel/apic/apic_flat_64.c:31: warning: data definition has no type or storage class
arch/x86/kernel/apic/apic_flat_64.c:31: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
arch/x86/kernel/apic/apic_flat_64.c:31: warning: parameter names (without types) in function declarationSigned-off-by: Randy Dunlap
Cc: Stephen Rothwell
Link: http://lkml.kernel.org/r/20110523104300.dd532a99.randy.dunlap@oracle.com
Signed-off-by: Ingo Molnar
22 May, 2011
2 commits
-
Apic probe now looks at the apic drivers listed in the
.apicdrivers section. Remove apic_probe[] and make each apic
driver static.Signed-off-by: Suresh Siddha
Tested-by: Cyrill Gorcunov
Cc: steiner@sgi.com
Cc: gorcunov@openvz.org
Cc: yinghai@kernel.org
Link: http://lkml.kernel.org/r/20110521005526.341718626@sbsiddha-MOBL3.sc.intel.com
Signed-off-by: Ingo Molnar -
This will pave the way for each apic driver to be self-contained
and eliminate the need for apic_probe[].Order in which apic drivers are listed in the .apicdrivers
section is important, as this determines the apic probe order.
And this is enforced by the ordering of apic driver files in the
Makefile and the macros apic_driver()/apic_drivers().Signed-off-by: Suresh Siddha
Tested-by: Cyrill Gorcunov
Cc: steiner@sgi.com
Cc: gorcunov@openvz.org
Cc: yinghai@kernel.org
Link: http://lkml.kernel.org/r/20110521005526.068775085@sbsiddha-MOBL3.sc.intel.com
Signed-off-by: Ingo Molnar
20 May, 2011
1 commit
-
Use the unused probe routine in the apic driver to finalize the
apic model selection. This cleans up the
default_setup_apic_routing() and this probe routine in future
can also be used for doing any apic model specific
initialisation.Signed-off-by: Suresh Siddha
Acked-by: Cyrill Gorcunov
Cc: steiner@sgi.com
Cc: yinghai@kernel.org
Link: http://lkml.kernel.org/r/20110519234637.247458931@sbsiddha-MOBL3.sc.intel.com
Signed-off-by: Ingo Molnar
28 Jan, 2011
2 commits
-
apic->apicid_to_node() is 32bit specific apic operation which
determines NUMA node for a CPU. Depending on the APIC
implementation, it can be easier to determine NUMA node from
either physical or logical apicid. Currently,
->apicid_to_node() takes @logical_apicid and calls
hard_smp_processor_id() if the physical apicid is needed.This prevents NUMA mapping from being queried from a different
CPU, which in turn makes it impossible to initialize NUMA
mapping before SMP bringup.This patch replaces apic->apicid_to_node() with
->x86_32_numa_cpu_node() which takes @cpu, from which both
logical and physical apicids can easily be determined. While at
it, drop duplicate implementations from bigsmp_32 and summit_32,
and use the default one.Signed-off-by: Tejun Heo
Reviewed-by: Pekka Enberg
Cc: eric.dumazet@gmail.com
Cc: yinghai@kernel.org
Cc: brgerst@gmail.com
Cc: gorcunov@gmail.com
Cc: shaohui.zheng@intel.com
Cc: rientjes@google.com
LKML-Reference:
Signed-off-by: Ingo Molnar -
After the previous patch, apic->cpu_to_logical_apicid() is no
longer used. Kill it.For apic types with custom cpu_to_logical_apicid() which is also
used for other purposes, remove the function and modify its
users to do the mapping directly.#ifdef's on CONFIG_SMP in es7000_32 and summit_32 are ignored
during conversion as they are not used for UP kernels.Signed-off-by: Tejun Heo
Cc: eric.dumazet@gmail.com
Cc: yinghai@kernel.org
Cc: brgerst@gmail.com
Cc: gorcunov@gmail.com
Cc: penberg@kernel.org
Cc: shaohui.zheng@intel.com
Cc: rientjes@google.com
LKML-Reference:
Signed-off-by: Ingo Molnar
04 Feb, 2010
1 commit
-
Make the comment match the code, this also holds for intel systems,
according to probe_64.c in the same directory.Signed-off-by: Jasper Spaans
Signed-off-by: Jiri Kosina
19 Jan, 2010
1 commit
-
Chris McDermott from IBM confirmed that hurricane chipset in IBM summit
platforms doesn't support logical flat mode. Irrespective of the other
things like apic_id's, total number of logical cpu's, Linux kernel
should default to physical mode for this system.The 32-bit kernel does so using the OEM checks for the IBM summit
platform. Add a similar OEM platform check for the 64bit kernel too.Otherwise the linux kernel boot can hang on this platform under certain
bios/platform settings.Signed-off-by: Suresh Siddha
Tested-by: Ananth N Mavinakayanahalli
Cc: Chris McDermott
Cc: Yinghai Lu
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds
18 Dec, 2009
1 commit
-
John Blackwood reported:
> on an older Dell PowerEdge 6650 system with 8 cpus (4 are hyper-threaded),
> and 32 bit (x86) kernel, once you change the irq smp_affinity of an irq
> to be less than all cpus in the system, you can never change really the
> irq smp_affinity back to be all cpus in the system (0xff) again,
> even though no error status is returned on the "/bin/echo ff >
> /proc/irq/[n]/smp_affinity" operation.
>
> This is due to that fact that BAD_APICID has the same value as
> all cpus (0xff) on 32bit kernels, and thus the value returned from
> set_desc_affinity() via the cpu_mask_to_apicid_and() function is treated
> as a failure in set_ioapic_affinity_irq_desc(), and no affinity changes
> are made.set_desc_affinity() is already checking if the incoming cpu mask
intersects with the cpu online mask or not. So there is no need
for the apic op cpu_mask_to_apicid_and() to check again
and return BAD_APICID.Remove the BAD_APICID return value from cpu_mask_to_apicid_and()
and also fix set_desc_affinity() to return -1 instead of using BAD_APICID
to represent error conditions (as cpu_mask_to_apicid_and() can return
logical or physical apicid values and BAD_APICID is really to represent
bad physical apic id).Reported-by: John Blackwood
Root-caused-by: John Blackwood
Signed-off-by: Suresh Siddha
LKML-Reference:
Signed-off-by: H. Peter Anvin
18 May, 2009
1 commit
-
should not call that if apic is disabled.
[ Impact: fix crash on certain UP configs ]
Signed-off-by: Yinghai Lu
Cc: Cyrill Gorcunov
LKML-Reference:
Signed-off-by: Ingo Molnar
11 May, 2009
1 commit
-
Impact: fix fadt version checking
FADT2_REVISION_ID has value 3 aka rev 3 FADT. So need to use >= instead
of >, as other places in the code do.[ Impact: extend scope of APIC boot quirk ]
Signed-off-by: Yinghai Lu
LKML-Reference:
Signed-off-by: Ingo Molnar
08 Apr, 2009
1 commit
-
Impact: restore old behavior
for flat and phys_flat
Signed-off-by: Yinhai Lu
Signed-off-by: Ingo Molnar
25 Mar, 2009
1 commit
-
Impact: cleanup
Use online_mask directly on 64bit too.
Signed-off-by: Yinghai Lu
Cc: Andrew Morton
Cc: "Eric W. Biederman"
Cc: Rusty Russell
LKML-Reference:
Signed-off-by: Ingo Molnar
26 Feb, 2009
2 commits
-
Impact: cleanup
- rename apic->wakeup_cpu to apic->wakeup_secondary_cpu, to
make it apparent that this is an SMP-only method- handle NULL ->wakeup_secondary_cpus to mean the default INIT
wakeup sequence - this allows simplification of the APIC
driver templates.Cc: Yinghai Lu
Signed-off-by: Ingo Molnar -
Impact: cleanup
x86_quirks->update_apic() calling looks crazy. so try to remove it:
1. every apic take wakeup_cpu member directly
2. separate es7000_apic to es7000_apic_cluster
3. use uv_wakeup_cpu directlySigned-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar
18 Feb, 2009
1 commit
-
arch/x86/kernel/ is getting a bit crowded, and the APIC
drivers are scattered into various different files.Move them to arch/x86/kernel/apic/*, and also remove
the 'gen' prefix from those which had it.Also move APIC related functionality: the IO-APIC driver,
the NMI and the IPI code.Signed-off-by: Ingo Molnar