lkml.org 
[lkml]   [2001]   [Aug]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] disableapic option
Hi Pekka, Linus, Alan,

On Tue, Aug 28, 2001 at 01:42:11AM +0300, Pekka Pietikainen wrote:
> Doesn't VA use one of those Intel boards which have the problem
> with theis BIOS, which is seen as a hang with the adaptec driver?
>
> Tried the same work-around? (enabling the APIC)

Here's a patch that allows you to compile the kernel with APIC enabled
always. Some machines need it, but others barf, when they find out that
there is an MP table and an IOAPIC but no APIC on the CPU is found.
(Plug a K6 in a dual Pentium board, e.g.)

Then you may pass the disableapic boot parameter, so you bypass APIC setup
completely and the APIC compiled kernel works like compiled without.
(For people who compile their own kernels, this is irrelevant, except for
testing. That's not the majority of Linux users anymore, though.)

Another possibility might be to make apic.c:221 fail gracefully instead of
BUG(), BTW.

Linus, Alan, please apply to your trees!

In theory, the compile time option could be removed now, but some people
probably want to be able to save a few bytes.

Regards,
--
Kurt Garloff <kurt@garloff.de> [Eindhoven, NL]
Physics: Plasma simulations <K.Garloff@Phys.TUE.NL> [TU Eindhoven, NL]
Linux: SCSI, Security <garloff@suse.de> [SuSE Nuernberg, DE]
(See mail header or public key servers for PGP2 and GPG public keys.)
--- linux-244.compile/arch/i386/kernel/io_apic.c.orig Mon Apr 30 17:12:43 2001
+++ linux-244.compile/arch/i386/kernel/io_apic.c Fri May 11 17:44:37 2001
@@ -182,6 +182,7 @@
int pirq_entries [MAX_PIRQS];
int pirqs_enabled;
int skip_ioapic_setup;
+int disable_apic;

static int __init ioapic_setup(char *str)
{
@@ -191,6 +192,15 @@

__setup("noapic", ioapic_setup);

+static int __init disable_apic_setup(char *str)
+{
+ skip_ioapic_setup = 1;
+ disable_apic = 1;
+ return 1;
+}
+
+__setup("disableapic", disable_apic_setup);
+
static int __init ioapic_pirq_setup(char *str)
{
int i, max;
@@ -1605,7 +1615,7 @@
*/
void IO_APIC_init_uniprocessor (void)
{
- if (!smp_found_config)
+ if (!smp_found_config || disable_apic)
return;
connect_bsp_APIC();
setup_local_APIC();[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2005-03-22 12:58    [W:0.129 / U:0.044 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site