From: Cyrill Gorcunov <gorcunov@gmail.com>
To: macro@linux-mips.org, mingo@elte.hu, tglx@linutronix.de
Cc: hpa@zytor.com, yhlu.kernel@gmail.com,
linux-kernel@vger.kernel.org,
Cyrill Gorcunov <gorcunov@gmail.com>
Subject: [patch 8/8] x86: apic - unify init_bsp_APIC
Date: Thu, 01 Jan 1970 03:00:08 +0300 [thread overview]
Message-ID: <20080814184652.475361864@gmail.com> (raw)
In-Reply-To: 20080814183428.550709025@gmail.com
[-- Attachment #1: 0012-x86-apic-unify-init_bsp_APIC.patch --]
[-- Type: text/plain, Size: 2260 bytes --]
Remove redundant apic_read(APIC_LVR) and add check for
reserved bit on P4/Xeon in 64bit mode. For now it's
not really needed and made in a sake of unification.
#ifdef would be added probably.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
---
Index: linux-2.6.git/arch/x86/kernel/apic_32.c
===================================================================
--- linux-2.6.git.orig/arch/x86/kernel/apic_32.c 2008-08-14 22:23:04.000000000 +0400
+++ linux-2.6.git/arch/x86/kernel/apic_32.c 2008-08-14 22:24:49.000000000 +0400
@@ -927,7 +927,7 @@ void __init sync_Arb_IDs(void)
*/
void __init init_bsp_APIC(void)
{
- unsigned long value;
+ unsigned int value;
/*
* Don't do the setup now if we have a SMP BIOS as the
@@ -962,7 +962,8 @@ void __init init_bsp_APIC(void)
*/
apic_write(APIC_LVT0, APIC_DM_EXTINT);
value = APIC_DM_NMI;
- if (!lapic_is_integrated()) /* 82489DX */
+ /* discrete on 82489DX */
+ if (!lapic_is_integrated())
value |= APIC_LVT_LEVEL_TRIGGER;
apic_write(APIC_LVT1, value);
}
Index: linux-2.6.git/arch/x86/kernel/apic_64.c
===================================================================
--- linux-2.6.git.orig/arch/x86/kernel/apic_64.c 2008-08-14 22:23:04.000000000 +0400
+++ linux-2.6.git/arch/x86/kernel/apic_64.c 2008-08-14 22:24:49.000000000 +0400
@@ -776,8 +776,6 @@ void __init init_bsp_APIC(void)
if (smp_found_config || !cpu_has_apic)
return;
- value = apic_read(APIC_LVR);
-
/*
* Do not trust the local APIC being empty at bootup.
*/
@@ -789,7 +787,12 @@ void __init init_bsp_APIC(void)
value = apic_read(APIC_SPIV);
value &= ~APIC_VECTOR_MASK;
value |= APIC_SPIV_APIC_ENABLED;
- value |= APIC_SPIV_FOCUS_DISABLED;
+ /* This bit is reserved on P4/Xeon and should be cleared */
+ if ((boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) &&
+ (boot_cpu_data.x86 == 15))
+ value &= ~APIC_SPIV_FOCUS_DISABLED;
+ else
+ value |= APIC_SPIV_FOCUS_DISABLED;
value |= SPURIOUS_APIC_VECTOR;
apic_write(APIC_SPIV, value);
@@ -798,6 +801,9 @@ void __init init_bsp_APIC(void)
*/
apic_write(APIC_LVT0, APIC_DM_EXTINT);
value = APIC_DM_NMI;
+ /* discrete on 82489DX */
+ if (!lapic_is_integrated())
+ value |= APIC_LVT_LEVEL_TRIGGER;
apic_write(APIC_LVT1, value);
}
--
next prev parent reply other threads:[~2008-08-14 18:49 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-14 18:34 [patch 0/8] [RFC -tip] another one step toward APIC merging Cyrill Gorcunov
1970-01-01 0:00 ` [patch 1/8] x86: apic - use SET_APIC_DEST_FIELD instead of hardcoded shift Cyrill Gorcunov
1970-01-01 0:00 ` [patch 2/8] x86: apic - unify disable_apic_timer Cyrill Gorcunov
1970-01-01 0:00 ` [patch 3/8] x86: apic - unify __setup_APIC_LVTT Cyrill Gorcunov
1970-01-01 0:00 ` [patch 4/8] x86: apic - do not clear APIC twice in lapic_shutdown Cyrill Gorcunov
1970-01-01 0:00 ` [patch 5/8] x86: apic - get rid of local_apic_timer_verify_ok Cyrill Gorcunov
1970-01-01 0:00 ` [patch 6/8] x86: apic - unify verify_local_APIC Cyrill Gorcunov
1970-01-01 0:00 ` [patch 7/8] x86: apic - unify sync_Arb_IDs Cyrill Gorcunov
2008-08-14 19:41 ` Maciej W. Rozycki
2008-08-14 20:10 ` Cyrill Gorcunov
1970-01-01 0:00 ` Cyrill Gorcunov [this message]
2008-08-14 19:44 ` [patch 8/8] x86: apic - unify init_bsp_APIC Maciej W. Rozycki
2008-08-15 6:41 ` Cyrill Gorcunov
2008-08-15 11:51 ` Ingo Molnar
2008-08-15 12:15 ` Maciej W. Rozycki
2008-08-15 13:48 ` Ingo Molnar
2008-08-15 14:45 ` Cyrill Gorcunov
2008-08-15 14:47 ` Ingo Molnar
2008-08-15 15:31 ` Maciej W. Rozycki
2008-08-15 16:35 ` Cyrill Gorcunov
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=20080814184652.475361864@gmail.com \
--to=gorcunov@gmail.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=macro@linux-mips.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
--cc=yhlu.kernel@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.