[PATCH][2.4] generic support for systems with more than 8 CPUs (2/2)

Pallipadi, Venkatesh (venkatesh.pallipadi@intel.com)
Sat, 21 Dec 2002 22:59:10 -0800


This is a multi-part message in MIME format.

------_=_NextPart_001_01C2A987.A123E52E
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

2/2 : switching to physical mode APIC setup in case of more than 8 CPU =
system

Thanks,
-Venkatesh

diff -urN linux-2.4.21-pre2.org/Documentation/Configure.help =
linux-2.4.21-pre2/Documentation/Configure.help
--- linux-2.4.21-pre2.org/Documentation/Configure.help 2002-12-17 =
20:05:15.000000000 -0800
+++ linux-2.4.21-pre2/Documentation/Configure.help 2002-12-17 =
20:11:23.000000000 -0800
@@ -262,6 +262,13 @@
=20
If you don't have this computer, you may safely say N.
=20
+Other more than 8 logical CPU system support
+CONFIG_X86_MANY_CPU
+ This option is required to support systems with more than 8 logical =
CPUs.
+
+ If you don't have such a computer, you may safely say N.
+ You dont have to choose this for IBM Summit/x440 systems.
+
IO-APIC support on uniprocessors
CONFIG_X86_UP_IOAPIC
An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an
diff -urN linux-2.4.21-pre2.org/arch/i386/config.in =
linux-2.4.21-pre2/arch/i386/config.in
--- linux-2.4.21-pre2.org/arch/i386/config.in 2002-12-17 =
20:05:15.000000000 -0800
+++ linux-2.4.21-pre2/arch/i386/config.in 2002-12-17 20:11:23.000000000 =
-0800
@@ -229,6 +229,10 @@
define_bool CONFIG_X86_CLUSTERED_APIC y
fi
fi
+ bool 'Other more than 8 logical CPU system support' =
CONFIG_X86_MANY_CPU
+ if [ "$CONFIG_X86_MANY_CPU" =3D "y" ]; then
+ define_bool CONFIG_X86_CLUSTERED_APIC y
+ fi
fi
=20
if [ "$CONFIG_X86_NUMA" !=3D "y" ]; then
diff -urN linux-2.4.21-pre2.org/arch/i386/kernel/mpparse.c =
linux-2.4.21-pre2/arch/i386/kernel/mpparse.c
--- linux-2.4.21-pre2.org/arch/i386/kernel/mpparse.c 2002-12-17 =
20:12:21.000000000 -0800
+++ linux-2.4.21-pre2/arch/i386/kernel/mpparse.c 2002-12-17 =
20:11:23.000000000 -0800
@@ -590,15 +590,6 @@
}
=20
=20
- printk("Enabling APIC mode: ");
- if(clustered_apic_mode =3D=3D CLUSTERED_APIC_NUMAQ)
- printk("Clustered Logical. ");
- else if(clustered_apic_mode =3D=3D CLUSTERED_APIC_XAPIC)
- printk("Physical. ");
- else
- printk("Flat. ");
- printk("Using %d I/O APICs\n",nr_ioapics);
-
if (!num_processors)
printk(KERN_ERR "SMP mptable: no processors registered!\n");
return num_processors;
@@ -834,6 +825,33 @@
=20
printk("Processors: %d\n", num_processors);
printk("xAPIC support %s present\n", (xapic_support?"is":"is not"));
+
+#ifdef CONFIG_X86_CLUSTERED_APIC
+ /*
+ * Switch to Physical destination mode in case of generic
+ * more than 8 CPU system, which has xAPIC support
+ */
+#define FLAT_APIC_CPU_MAX 8
+ if ((clustered_apic_mode =3D=3D CLUSTERED_APIC_NONE) &&
+ (xapic_support) &&
+ (num_processors > FLAT_APIC_CPU_MAX)) {
+ clustered_apic_mode =3D CLUSTERED_APIC_XAPIC;
+ apic_broadcast_id =3D APIC_BROADCAST_ID_XAPIC;
+ int_dest_addr_mode =3D APIC_DEST_PHYSICAL;
+ int_delivery_mode =3D dest_Fixed;
+ esr_disable =3D 1;
+ }
+#endif
+
+ printk("Enabling APIC mode: ");
+ if (clustered_apic_mode =3D=3D CLUSTERED_APIC_NUMAQ)
+ printk("Clustered Logical. ");
+ else if (clustered_apic_mode =3D=3D CLUSTERED_APIC_XAPIC)
+ printk("Physical. ");
+ else
+ printk("Flat. ");
+ printk("Using %d I/O APICs\n",nr_ioapics);
+
/*
* Only use the first configuration found.
*/

------_=_NextPart_001_01C2A987.A123E52E
Content-Type: application/octet-stream;
name="physapic_2.4.21-pre2.patch"
Content-Transfer-Encoding: base64
Content-Description: physapic_2.4.21-pre2.patch
Content-Disposition: attachment;
filename="physapic_2.4.21-pre2.patch"

ZGlmZiAtdXJOIGxpbnV4LTIuNC4yMS1wcmUyLm9yZy9Eb2N1bWVudGF0aW9uL0NvbmZpZ3VyZS5o
ZWxwIGxpbnV4LTIuNC4yMS1wcmUyL0RvY3VtZW50YXRpb24vQ29uZmlndXJlLmhlbHAKLS0tIGxp
bnV4LTIuNC4yMS1wcmUyLm9yZy9Eb2N1bWVudGF0aW9uL0NvbmZpZ3VyZS5oZWxwCTIwMDItMTIt
MTcgMjA6MDU6MTUuMDAwMDAwMDAwIC0wODAwCisrKyBsaW51eC0yLjQuMjEtcHJlMi9Eb2N1bWVu
dGF0aW9uL0NvbmZpZ3VyZS5oZWxwCTIwMDItMTItMTcgMjA6MTE6MjMuMDAwMDAwMDAwIC0wODAw
CkBAIC0yNjIsNiArMjYyLDEzIEBACiAKICAgSWYgeW91IGRvbid0IGhhdmUgdGhpcyBjb21wdXRl
ciwgeW91IG1heSBzYWZlbHkgc2F5IE4uCiAKK090aGVyIG1vcmUgdGhhbiA4IGxvZ2ljYWwgQ1BV
IHN5c3RlbSBzdXBwb3J0CitDT05GSUdfWDg2X01BTllfQ1BVCisgIFRoaXMgb3B0aW9uIGlzIHJl
cXVpcmVkIHRvIHN1cHBvcnQgc3lzdGVtcyB3aXRoIG1vcmUgdGhhbiA4IGxvZ2ljYWwgQ1BVcy4K
KworICBJZiB5b3UgZG9uJ3QgaGF2ZSBzdWNoIGEgY29tcHV0ZXIsIHlvdSBtYXkgc2FmZWx5IHNh
eSBOLgorICBZb3UgZG9udCBoYXZlIHRvIGNob29zZSB0aGlzIGZvciBJQk0gU3VtbWl0L3g0NDAg
c3lzdGVtcy4KKwogSU8tQVBJQyBzdXBwb3J0IG9uIHVuaXByb2Nlc3NvcnMKIENPTkZJR19YODZf
VVBfSU9BUElDCiAgIEFuIElPLUFQSUMgKEkvTyBBZHZhbmNlZCBQcm9ncmFtbWFibGUgSW50ZXJy
dXB0IENvbnRyb2xsZXIpIGlzIGFuCmRpZmYgLXVyTiBsaW51eC0yLjQuMjEtcHJlMi5vcmcvYXJj
aC9pMzg2L2NvbmZpZy5pbiBsaW51eC0yLjQuMjEtcHJlMi9hcmNoL2kzODYvY29uZmlnLmluCi0t
LSBsaW51eC0yLjQuMjEtcHJlMi5vcmcvYXJjaC9pMzg2L2NvbmZpZy5pbgkyMDAyLTEyLTE3IDIw
OjA1OjE1LjAwMDAwMDAwMCAtMDgwMAorKysgbGludXgtMi40LjIxLXByZTIvYXJjaC9pMzg2L2Nv
bmZpZy5pbgkyMDAyLTEyLTE3IDIwOjExOjIzLjAwMDAwMDAwMCAtMDgwMApAQCAtMjI5LDYgKzIy
OSwxMCBAQAogICAgICAgICAgZGVmaW5lX2Jvb2wgQ09ORklHX1g4Nl9DTFVTVEVSRURfQVBJQyB5
CiAgICAgICBmaQogICAgZmkKKyAgIGJvb2wgJ090aGVyIG1vcmUgdGhhbiA4IGxvZ2ljYWwgQ1BV
IHN5c3RlbSBzdXBwb3J0JyBDT05GSUdfWDg2X01BTllfQ1BVCisgICBpZiBbICIkQ09ORklHX1g4
Nl9NQU5ZX0NQVSIgPSAieSIgXTsgdGhlbgorICAgICAgZGVmaW5lX2Jvb2wgQ09ORklHX1g4Nl9D
TFVTVEVSRURfQVBJQyB5CisgICBmaQogZmkKIAogaWYgWyAiJENPTkZJR19YODZfTlVNQSIgIT0g
InkiIF07IHRoZW4KZGlmZiAtdXJOIGxpbnV4LTIuNC4yMS1wcmUyLm9yZy9hcmNoL2kzODYva2Vy
bmVsL21wcGFyc2UuYyBsaW51eC0yLjQuMjEtcHJlMi9hcmNoL2kzODYva2VybmVsL21wcGFyc2Uu
YwotLS0gbGludXgtMi40LjIxLXByZTIub3JnL2FyY2gvaTM4Ni9rZXJuZWwvbXBwYXJzZS5jCTIw
MDItMTItMTcgMjA6MTI6MjEuMDAwMDAwMDAwIC0wODAwCisrKyBsaW51eC0yLjQuMjEtcHJlMi9h
cmNoL2kzODYva2VybmVsL21wcGFyc2UuYwkyMDAyLTEyLTE3IDIwOjExOjIzLjAwMDAwMDAwMCAt
MDgwMApAQCAtNTkwLDE1ICs1OTAsNiBAQAogCX0KIAogCi0JcHJpbnRrKCJFbmFibGluZyBBUElD
IG1vZGU6ICIpOwotCWlmKGNsdXN0ZXJlZF9hcGljX21vZGUgPT0gQ0xVU1RFUkVEX0FQSUNfTlVN
QVEpCi0JCXByaW50aygiQ2x1c3RlcmVkIExvZ2ljYWwuCSIpOwotCWVsc2UgaWYoY2x1c3RlcmVk
X2FwaWNfbW9kZSA9PSBDTFVTVEVSRURfQVBJQ19YQVBJQykKLQkJcHJpbnRrKCJQaHlzaWNhbC4J
Iik7Ci0JZWxzZQotCQlwcmludGsoIkZsYXQuCSIpOwotCXByaW50aygiVXNpbmcgJWQgSS9PIEFQ
SUNzXG4iLG5yX2lvYXBpY3MpOwotCiAJaWYgKCFudW1fcHJvY2Vzc29ycykKIAkJcHJpbnRrKEtF
Uk5fRVJSICJTTVAgbXB0YWJsZTogbm8gcHJvY2Vzc29ycyByZWdpc3RlcmVkIVxuIik7CiAJcmV0
dXJuIG51bV9wcm9jZXNzb3JzOwpAQCAtODM0LDYgKzgyNSwzMyBAQAogCiAJcHJpbnRrKCJQcm9j
ZXNzb3JzOiAlZFxuIiwgbnVtX3Byb2Nlc3NvcnMpOwogCXByaW50aygieEFQSUMgc3VwcG9ydCAl
cyBwcmVzZW50XG4iLCAoeGFwaWNfc3VwcG9ydD8iaXMiOiJpcyBub3QiKSk7CisKKyNpZmRlZiBD
T05GSUdfWDg2X0NMVVNURVJFRF9BUElDCisJLyoKKwkgKiBTd2l0Y2ggdG8gUGh5c2ljYWwgZGVz
dGluYXRpb24gbW9kZSBpbiBjYXNlIG9mIGdlbmVyaWMKKwkgKiBtb3JlIHRoYW4gOCBDUFUgc3lz
dGVtLCB3aGljaCBoYXMgeEFQSUMgc3VwcG9ydAorCSAqLworI2RlZmluZSBGTEFUX0FQSUNfQ1BV
X01BWAk4CisJaWYgKChjbHVzdGVyZWRfYXBpY19tb2RlID09IENMVVNURVJFRF9BUElDX05PTkUp
ICYmCisJICAgICh4YXBpY19zdXBwb3J0KSAmJgorCSAgICAobnVtX3Byb2Nlc3NvcnMgPiBGTEFU
X0FQSUNfQ1BVX01BWCkpIHsKKwkJY2x1c3RlcmVkX2FwaWNfbW9kZSA9IENMVVNURVJFRF9BUElD
X1hBUElDOworCQlhcGljX2Jyb2FkY2FzdF9pZCA9IEFQSUNfQlJPQURDQVNUX0lEX1hBUElDOwor
CQlpbnRfZGVzdF9hZGRyX21vZGUgPSBBUElDX0RFU1RfUEhZU0lDQUw7CisJCWludF9kZWxpdmVy
eV9tb2RlID0gZGVzdF9GaXhlZDsKKwkJZXNyX2Rpc2FibGUgPSAxOworCX0KKyNlbmRpZgorCisJ
cHJpbnRrKCJFbmFibGluZyBBUElDIG1vZGU6ICIpOworCWlmIChjbHVzdGVyZWRfYXBpY19tb2Rl
ID09IENMVVNURVJFRF9BUElDX05VTUFRKQorCQlwcmludGsoIkNsdXN0ZXJlZCBMb2dpY2FsLgki
KTsKKwllbHNlIGlmIChjbHVzdGVyZWRfYXBpY19tb2RlID09IENMVVNURVJFRF9BUElDX1hBUElD
KQorCQlwcmludGsoIlBoeXNpY2FsLgkiKTsKKwllbHNlCisJCXByaW50aygiRmxhdC4JIik7CisJ
cHJpbnRrKCJVc2luZyAlZCBJL08gQVBJQ3NcbiIsbnJfaW9hcGljcyk7CisKIAkvKgogCSAqIE9u
bHkgdXNlIHRoZSBmaXJzdCBjb25maWd1cmF0aW9uIGZvdW5kLgogCSAqLwo=

------_=_NextPart_001_01C2A987.A123E52E--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/