From: William Lee Irwin III <wli@holomorphy.com>
To: Zwane Mwaikambo <zwane@fsmlabs.com>
Cc: Eric BEGOT <eric_begot@yahoo.fr>, Andrew Morton <akpm@osdl.org>,
Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Re: 2.6.7-rc3-mm1
Date: Wed, 9 Jun 2004 07:48:09 -0700 [thread overview]
Message-ID: <20040609144809.GK1444@holomorphy.com> (raw)
In-Reply-To: <Pine.LNX.4.58.0406090942420.1838@montezuma.fsmlabs.com>
On Wed, 9 Jun 2004, William Lee Irwin III wrote:
>> As curious as I am as to whether that works, I'm also curious as to
>> whether it's the culprit in this case. Eric, could you also describe your
>> system? A dmesg from a working kernel would also help.
On Wed, Jun 09, 2004 at 09:43:58AM -0400, Zwane Mwaikambo wrote:
> I'm leaning more towards the cpumask stuff but at least eliminating your
> patch being a culprit gets us further.
> Zwane
A moment's reflection renders this obvious. phys_cpu_present_map needs
to be doublechecked for the invalid physical APIC ID's in
cpu_present_to_apicid() prior to waking cpus since I'm marking invalid
physical APIC ID's as present to drive the IO-APIC physical APIC ID
validity detection and cpuid validity + detection logic. Something like
this should help a bit.
I'm questioning whether the marking scheme is worth anything and if I
should just rely on bounds-checking against the dynamically-detected
physical APIC ID instead.
(a) attempt to fix zwane's numaq; m->mpc_apicid is wrong to look at.
(b) compilefix for CONFIG_ACPI_BOOT from zwane
(c) check physid's
Totally untested (compiletesting in progress).
-- wli
Index: mm1-2.6.7-rc3/arch/i386/kernel/mpparse.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/i386/kernel/mpparse.c 2004-06-09 07:11:51.335601000 -0700
+++ mm1-2.6.7-rc3/arch/i386/kernel/mpparse.c 2004-06-09 07:42:04.221000000 -0700
@@ -107,7 +107,7 @@
#ifdef CONFIG_X86_NUMAQ
static int MP_valid_apicid(int apicid, int version)
{
- return hweight_long(i & 0xf) == 1 && (i >> 4) != 0xf;
+ return hweight_long(apicid & 0xf) == 1 && (apicid >> 4) != 0xf;
}
#else
static int MP_valid_apicid(int apicid, int version)
@@ -207,7 +207,7 @@
num_processors++;
ver = m->mpc_apicver;
- if (MP_valid_apicid(m->mpc_apicid, ver))
+ if (MP_valid_apicid(apicid, ver))
MP_mark_version_physids(ver);
else {
printk(KERN_WARNING "Processor #%d INVALID. (Max ID: %d).\n",
@@ -871,7 +871,7 @@
MP_processor_info(&processor);
}
-#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_ACPI_INTERPRETER)
+#if defined(CONFIG_X86_IO_APIC) && (defined(CONFIG_ACPI_INTERPRETER) || defined(CONFIG_ACPI_BOOT))
#define MP_ISA_BUS 0
#define MP_MAX_IOAPIC_PIN 127
@@ -1103,5 +1103,5 @@
active_high_low == ACPI_ACTIVE_HIGH ? 0 : 1);
}
-#endif /*CONFIG_X86_IO_APIC && CONFIG_ACPI_INTERPRETER*/
+#endif /*CONFIG_X86_IO_APIC && (CONFIG_ACPI_INTERPRETER || CONFIG_ACPI_BOOT)*/
#endif /*CONFIG_ACPI_BOOT*/
Index: mm1-2.6.7-rc3/arch/i386/kernel/io_apic.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/i386/kernel/io_apic.c 2004-06-09 07:11:51.323603000 -0700
+++ mm1-2.6.7-rc3/arch/i386/kernel/io_apic.c 2004-06-09 07:30:06.936044000 -0700
@@ -722,7 +722,7 @@
__setup("pirq=", ioapic_pirq_setup);
-static int get_physical_broadcast(void)
+int get_physical_broadcast(void)
{
unsigned int lvr, version;
lvr = apic_read(APIC_LVR);
Index: mm1-2.6.7-rc3/include/asm-i386/mach-default/mach_apic.h
===================================================================
--- mm1-2.6.7-rc3.orig/include/asm-i386/mach-default/mach_apic.h 2004-06-09 07:11:51.513574000 -0700
+++ mm1-2.6.7-rc3/include/asm-i386/mach-default/mach_apic.h 2004-06-09 07:42:51.696783000 -0700
@@ -79,7 +79,10 @@
static inline int cpu_present_to_apicid(int mps_cpu)
{
- return mps_cpu;
+ if (mps_cpu < get_physical_broadcast())
+ return mps_cpu;
+ else
+ return BAD_APICID;
}
static inline physid_mask_t apicid_to_cpu_present(int phys_apicid)
Index: mm1-2.6.7-rc3/include/asm-i386/mach-visws/mach_apic.h
===================================================================
--- mm1-2.6.7-rc3.orig/include/asm-i386/mach-visws/mach_apic.h 2004-06-09 07:11:51.635555000 -0700
+++ mm1-2.6.7-rc3/include/asm-i386/mach-visws/mach_apic.h 2004-06-09 07:29:30.131639000 -0700
@@ -60,7 +60,10 @@
static inline int cpu_present_to_apicid(int mps_cpu)
{
- return mps_cpu;
+ if (mps_cpu < get_physical_broadcast())
+ return mps_cpu;
+ else
+ return BAD_APICID;
}
static inline physid_mask_t apicid_to_cpu_present(int apicid)
Index: mm1-2.6.7-rc3/include/asm-i386/apic.h
===================================================================
--- mm1-2.6.7-rc3.orig/include/asm-i386/apic.h 2004-06-07 12:15:12.000000000 -0700
+++ mm1-2.6.7-rc3/include/asm-i386/apic.h 2004-06-09 07:29:54.104995000 -0700
@@ -41,6 +41,8 @@
do { } while ( apic_read( APIC_ICR ) & APIC_ICR_BUSY );
}
+int get_physical_broadcast(void);
+
#ifdef CONFIG_X86_GOOD_APIC
# define FORCE_READ_AROUND_WRITE 0
# define apic_read_around(x)
next prev parent reply other threads:[~2004-06-09 14:49 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-09 8:50 2.6.7-rc3-mm1 Andrew Morton
2004-06-09 11:25 ` 2.6.7-rc3-mm1 Eric BEGOT
2004-06-09 13:13 ` 2.6.7-rc3-mm1 Zwane Mwaikambo
2004-06-09 13:36 ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 13:42 ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 13:43 ` 2.6.7-rc3-mm1 Zwane Mwaikambo
2004-06-09 14:48 ` William Lee Irwin III [this message]
2004-06-09 14:58 ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 15:16 ` 2.6.7-rc3-mm1 William Lee Irwin III
[not found] ` <40C73198.4080700@yahoo.fr>
2004-06-09 15:50 ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 16:35 ` 2.6.7-rc3-mm1 Norberto Bensa
2004-06-09 17:05 ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 17:46 ` 2.6.7-rc3-mm1 Norberto Bensa
2004-06-10 3:38 ` 2.6.7-rc3-mm1 Norberto Bensa
2004-06-09 17:59 ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 19:50 ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 23:44 ` 2.6.7-rc3-mm1 (compile stats) John Cherry
2004-06-10 2:10 ` 2.6.7-rc3-mm1 Phil Brunner
2004-06-10 2:22 ` 2.6.7-rc3-mm1 Andrew Morton
2004-06-10 2:52 ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-10 8:59 ` 2.6.7-rc3-mm1 Phil Brunner
2004-06-10 5:16 ` 2.6.7-rc3-mm1 Clemens Schwaighofer
2004-06-10 5:31 ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-10 6:54 ` 2.6.7-rc3-mm1 Clemens Schwaighofer
2004-06-11 4:36 ` 2.6.7-rc3-mm1 Paul Jackson
2004-06-11 5:47 ` 2.6.7-rc3-mm1 Andrew Morton
2004-06-11 5:53 ` 2.6.7-rc3-mm1 Paul Jackson
-- strict thread matches above, loose matches on Subject: below --
2004-06-09 15:33 2.6.7-rc3-mm1 Peter Maas
2004-06-09 15:52 ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 20:03 2.6.7-rc3-mm1 Nguyen, Tom L
2004-06-10 0:51 2.6.7-rc3-mm1 Nguyen, Tom L
[not found] <2576k-4hW-13@gated-at.bofh.it>
[not found] ` <25LZK-88C-17@gated-at.bofh.it>
2004-06-11 10:48 ` 2.6.7-rc3-mm1 Andi Kleen
2004-06-11 11:32 ` 2.6.7-rc3-mm1 Paul Jackson
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=20040609144809.GK1444@holomorphy.com \
--to=wli@holomorphy.com \
--cc=akpm@osdl.org \
--cc=eric_begot@yahoo.fr \
--cc=linux-kernel@vger.kernel.org \
--cc=zwane@fsmlabs.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox