diff options
author | Suresh Siddha <suresh.b.siddha@intel.com> | 2008-07-10 11:16:49 -0700 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-12 08:44:59 +0200 |
commit | 1b374e4d6f8b3eb2fcd034fcc24ea8ba1dfde7aa (patch) | |
tree | faf5aa00e344e473957206bc82ffbb746e438d0b /arch/x86/kernel/apic_32.c | |
parent | 2d7a66d02e11af9ab8e16c76d22767e622b4e3d7 (diff) | |
download | linux-1b374e4d6f8b3eb2fcd034fcc24ea8ba1dfde7aa.tar.gz linux-1b374e4d6f8b3eb2fcd034fcc24ea8ba1dfde7aa.tar.bz2 linux-1b374e4d6f8b3eb2fcd034fcc24ea8ba1dfde7aa.zip |
x64, x2apic/intr-remap: basic apic ops support
Introduce basic apic operations which handle the apic programming. This
will be used later to introduce another specific operations for x2apic.
For the perfomance critial accesses like IPI's, EOI etc, we use the
native operations as they are already referenced by different
indirections like genapic, irq_chip etc.
64bit Paravirt ops can also define their apic operations accordingly.
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: akpm@linux-foundation.org
Cc: arjan@linux.intel.com
Cc: andi@firstfloor.org
Cc: ebiederm@xmission.com
Cc: jbarnes@virtuousgeek.org
Cc: steiner@sgi.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/apic_32.c')
-rw-r--r-- | arch/x86/kernel/apic_32.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/kernel/apic_32.c b/arch/x86/kernel/apic_32.c index 3e58b676d23b..2a83c07bd887 100644 --- a/arch/x86/kernel/apic_32.c +++ b/arch/x86/kernel/apic_32.c @@ -145,6 +145,12 @@ static int modern_apic(void) return lapic_get_version() >= 0x14; } +void apic_icr_write(u32 low, u32 id) +{ + apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(id)); + apic_write_around(APIC_ICR, low); +} + void apic_wait_icr_idle(void) { while (apic_read(APIC_ICR) & APIC_ICR_BUSY) |