haiku/headers/private/kernel/arch/x86
Ingo Weinhold dac21d8bfe * map_physical_memory() does now always set a memory type. If none is given (it
needs to be or'ed to the address specification), "uncached" is assumed.
* Set the memory type for the "BIOS" and "DMA" areas to write-back. Not sure, if
  that's correct, but that's what was effectively used on my machines before.
* Changed x86_set_mtrrs() and the CPU module hook to also set the default memory
  type.
* Rewrote the MTRR computation once more:
  - Now we know all used memory ranges, so we are free to extend used ranges
    into unused ones in order to simplify them for MTRR setup.
  - Leverage the subtractive properties of uncached and write-through ranges to
    simplify ranges of any other respectively write-back type.
  - Set the default memory type to write-back, so we don't need MTRRs for the
    RAM ranges.
  - If a new range intersects with an existing one, we no longer just fail.
    Instead we use the strictest requirements implied by the ranges. This fixes
    #5383.

Overall the new algorithm should be sufficient with far less MTRRs than before
(on my desktop machine 4 are used at maximum, while 8 didn't quite suffice
before). A drawback of the current implementation is that it doesn't deal with
the case of running out of MTRRs at all, which might result in some ranges
having weaker caching/memory ordering properties than requested.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35515 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-18 13:52:43 +00:00
..
apm.h * Introduced new header directory headers/private/system which is supposed 2008-05-14 03:55:16 +00:00
arch_acpi.h Patch by Dustin Howett (GSOC): Move ACPI probing out of the 2008-07-21 07:13:51 +00:00
arch_apic.h Patch by Dustin Howett (GSOC): Move ACPI probing out of the 2008-07-21 07:13:51 +00:00
arch_cpu.h * map_physical_memory() does now always set a memory type. If none is given (it 2010-02-18 13:52:43 +00:00
arch_hpet.h Some big changes, still not working on my laptop, since hpet interrupts 2009-09-29 08:36:36 +00:00
arch_int.h Patch by "Grey": Small optimization of arch_int_disable_interrupts_inline() 2010-02-01 08:55:44 +00:00
arch_kernel_args.h add hpet locations to the kernel_args. Patch by Dustin Howett (GSOC) 2008-08-22 08:03:25 +00:00
arch_kernel.h * For each userland team the kernel creates an area in the userland 2008-05-11 16:25:35 +00:00
arch_system_info.h pulled over some stuff from newos: 2007-02-05 01:46:28 +00:00
arch_thread_types.h Merged branch haiku/branches/developer/bonefish/optimization revision 2008-01-11 00:36:44 +00:00
arch_thread.h User debugger support: 2009-06-14 12:14:06 +00:00
arch_user_debugger.h Added transparent software breakpoint support for user debuggers: 2009-06-23 21:03:57 +00:00
arch_vm_translation_map.h Refactored vm_translation_map: 2010-01-14 03:26:12 +00:00
arch_vm_types.h The short story: we now have MTRR support on Intel and AMD CPUs (the latter 2005-12-13 16:34:29 +00:00
arch_vm.h * vm_page::offset is now called cache_offset and is now an uint32 instead of off_t; 2005-12-21 12:38:31 +00:00
bios.h
descriptors.h Implemented first basic APM driver. Only tested with QEMU so far, that's why 2006-01-28 18:11:20 +00:00
selector.h
smp_priv.h Add volatile keyword to apic memory access, cleanup, add timeout to arch_smp_send_ici. 2007-02-25 23:32:21 +00:00
timer.h Patch by Dustin Howett which 'modularizes' timers. The best timer is 2008-07-05 20:40:06 +00:00
types.h
vesa.h
vm86.h Patch by Jan Klötzke with minor changes by myself: 2008-05-28 10:48:01 +00:00