Messages in this thread |  | | Date | Mon, 21 Oct 2002 11:08:20 +0200 | | From | Pavel Machek <> | | Subject | Re: APM work around for bad bios. |
| |
Hi!
> I use CASIO CASSIOPEIA FIVA 101 and 103. (http://www.da-cha.org/fiva/fiva.html) > this use Cyrix MediaGX and Award BIOS. > This APM BIOS report broken value for dseg_len. > it asumes granularity is 1. > > I made a work around for this situation. > > * if (cseg_len < bios.offset) BIOS report BAD len value. > -- segment length must be always larger than code offset > > * if (dseg_len <= 0x40 ) BIOS asumes granularity =1. > -- 0x40 * 4kB = 64kB, my pc reports 0x40. > > > diff -urB -x .config -x '*.[oasS]' -x '*.in' -x '*.rej' -x '*.orig' linux-2.5.43-orig/arch/i386/kernel/apm.c linux-2.5.43/arch/i386/kernel/apm.c > --- linux-2.5.43-orig/arch/i386/kernel/apm.c 2002-10-12 13:21:05.000000000 +0900 > +++ linux-2.5.43/arch/i386/kernel/apm.c 2002-10-14 21:36:14.000000000 +0900 > @@ -1980,6 +2141,14 @@ > (apm_info.bios.cseg_16_len - 1) & 0xffff); > _set_limit((char *)&cpu_gdt_table[i][APM_DS >> 3], > (apm_info.bios.dseg_len - 1) & 0xffff); > + /* workaround for broken BIOSes */ > + if (apm_info.bios.cseg_len <= apm_info.bios.offset) > + _set_limit((char *)&cpu_gdt_table[i][APM_CS >> 3], 64 * 1024 -1);
Maybe add printk KERN_WARNING "apm: broken bios -- code segment too short, assuming 64k"
> + if (apm_info.bios.dseg_len <= 0x40) { /* 0x40 * 4kB == 64kB */ > + /* for the BIOS that assumes granularity = 1 */ > + cpu_gdt_table[i][APM_DS >> 3].b |= 0x800000; > + printk(KERN_NOTICE "apm: we set the > granularity of dseg.\n");
Maybe better KERN_WARNING "apm: broken bios -- assuming granularity 1 on dseg" Pavel -- Worst form of spam? Adding advertisment signatures ala sourceforge.net. What goes next? Inserting advertisment *into* email? - 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/
|  |