Messages in this thread Patch in this message | | | Date | Thu, 26 Nov 1998 14:11:09 +0100 | From | Pavel Machek <> | Subject | Re: Debian: Things left to do for release. (fwd) |
| |
Hi!
> Well, the problem is that on some broken computers, making APM BIOS calls > crashes the computer. So we would need a command line option (or sysctl in > /proc/sys) to _enable_ it. That may be what you meant :)
As in my prev. mail, no. Anyway, here is command line option to DISABLE apm. I belive Debian would like this option for their install disks (so that they can have APM always in but disabled - some machines crash when APM is enabled). Please merge to linus at next convience,
Pavel
--- clean//init/main.c Thu Nov 26 00:20:42 1998 +++ linux/init/main.c Thu Nov 26 00:12:29 1998 @@ -252,6 +257,9 @@ extern void epca_setup(char *str, int *i #ifdef CONFIG_ISDN_DRV_PCBIT extern void pcbit_setup(char *str, int *ints); #endif +#ifdef CONFIG_APM +extern void apm_setup(char *str, int *ints); +#endif #ifdef CONFIG_ATARIMOUSE extern void atari_mouse_setup (char *str, int *ints); @@ -577,6 +593,9 @@ static struct kernel_param cooked_params { "no387", no_387 }, { "reboot=", reboot_setup }, #endif +#ifdef CONFIG_APM + { "no-apm", apm_setup }, +#endif #ifdef CONFIG_INET { "ether=", eth_setup }, #endif --- clean//arch/i386/kernel/apm.c Sun Oct 18 16:25:23 1998 +++ linux/arch/i386/kernel/apm.c Thu Nov 26 13:57:23 1998 @@ -167,7 +168,7 @@ extern unsigned long get_cmos_time(void) * * U: TI 4000M TravelMate: BIOS is *NOT* APM compliant * [Confirmed by TI representative] - * U: ACER 486DX4/75: uses dseg 0040, in violation of APM specification + * ?: ACER 486DX4/75: uses dseg 0040, in violation of APM specification * [Confirmed by BIOS disassembly] * [This may work now ...] * P: Toshiba 1950S: battery life information only gets updated after resume @@ -251,6 +252,9 @@ extern void apm_unregister_callback(int /* * Local variables */ + +int apm_disabled = 0; + static asmlinkage struct { unsigned long offset; unsigned short segment; @@ -663,7 +667,7 @@ static int queue_event(apm_event_t event static int notified; if (notified == 0) { - printk( "apm_bios: an event queue overflowed\n" ); + printk(KERN_ERR "apm_bios: an event queue overflowed\n" ); notified = 1; } as->event_tail = (as->event_tail + 1) % APM_MAX_EVENTS; @@ -1168,6 +1172,11 @@ int apm_get_info(char *buf, char **start } #endif +void __init apm_setup(char *str, int *ints) +{ + apm_disabled = 1; +} + void __init apm_bios_init(void) { unsigned short bx; @@ -1178,6 +1188,11 @@ void __init apm_bios_init(void) char * bat_stat; static struct proc_dir_entry *ent; + if (apm_disabled) { + printk(KERN_NOTICE "APM disabled on user request.\n" ); + return; + } + #ifdef __SMP__ if (smp_num_cpus > 1) { printk(KERN_NOTICE "APM disabled: APM is not SMP safe.\n"); -- Look at http://atrey.karlin.mff.cuni.cz/~pavel/ ;-). I'm really pavel@atrey.karlin.mff.cuni.cz. Pavel
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |