On 2011-05-18 18:21, Avi Kivity wrote: > On 05/18/2011 06:26 PM, Avi Kivity wrote: >>> This is about registration. Right now you can only register IO >>> intercepts in the chipset, not on a per-CPU basis. We could just as >>> easily have: >>> >>> CPUState { >>> MemoryRegion apic_region; >>> }; >>> >>> per_cpu_register_memory(env, &env->apic_region); >>> >> >> >> Right. Or all memory per-cpu, with two sub-regions: >> >> - global memory >> - overlaid apic memory >> >> for this, we need to have well defined semantics for overlap (perhaps >> a priority argument to memory_region_add_subregion). > > Or even > > cpu_memory_region > | > +-- global memory map (prio 0) > | | > | +-- RAM (prio 0) > | | > | +-- PCI (prio 1)
It depends on the chipset and its configuration (via PAM e.g.) in what region which takes precedence. Fixed prios do not help here. > | > +-- SMM memory (if active, prio 1) > | > +-- APIC memory (if active, prio 2) Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux