From: Jake H. <jh...@an...> - 2004-11-15 05:34:22
|
Kristian Van Der Vliet wrote: > I think Jake is on the right track, provided we get the issues correctly > solved. We have to be realistic and foreign binary support will be an issue > once we hit a certain point. There is no sense in limiting ourselves. > > Getting create_area() shouldn't be too tough, nor should fixing the device > drivers. It might be a good idea to add a MEMF_DMA flag to kmalloc() that in > turn uses AREA_CONTIGOUS, so at least we don't need to make big changes to > the existing code base. Also note that nothing should be calling > get_free_pages() directly; the emu10k1 driver hacks it up but shouldn't be > doing it. Henrik used it to get a page aligned area but it should really be > using the PAGE_ALIGN() macro.. > > We already knew that Syllable wouldn't boot with systems of 2Gb or more, > exactly because of that 1:1 kernel memory mapping. For that reason alone > it's good enough to move everything around and load the kernel at 0xc0000000 > (Could there possibly be a good reason for using more than 1Gb of virtual > address space in a desktop OS kernel? None I can think of). At todays > growth rate 2Gb+ machines as standard are not far off. There is also some > good news; current applications are compiled with -fPIC by default. > Theoretically we don't even need any special case handling for old binaries; > just load them at 0x08000000. Cool, now I know what has to be done. Unfortunately, something else has broken since I upgraded my RAM: the vm86 code to call BIOS routines. At least three BIOS calls are now failing for me: 1) the e820 memory map retrieved in init_e820_memory_map() is giving an "ERROR : unknown v86 16 bit instruction 7c" 2) the ps2mouse probing gives an "unknown v86 16 bit instruction 2" 3) the APM power-off code has also stopped working. If anyone is experiencing similar problems after building a recent kernel, please let me know. I hope this isn't something that I broke somehow with one of my changes. I've added some printk() statements so you should now see a dump of the BIOS memory map if you search /var/log/kernel for "BIOS-e820", and each BIOS call will be traced with a line like "sys_realint(21) -> f000:6ac8". -Jake |