On Wed, 2011-05-11 at 08:37 +0300, Pekka Enberg wrote: > On Wed, May 11, 2011 at 12:05 AM, Sasha Levin <levinsasha928@xxxxxxxxx> wrote: > > + if (kvm->ram_size < 0xe0000000) { > > Please use the ULL postfix for constants to ensure the types are sane. > Also, please come up with a sane name for these. > > > @@ -60,7 +60,14 @@ static inline u32 segment_to_flat(u16 selector, u16 offset) > > > > static inline void *guest_flat_to_host(struct kvm *self, unsigned long offset) > > { > > - return self->ram_start + offset; > > + /* > > + * We have a gap between 0xe0000000 and 0x100000000. > > + * Consider it when translating an address above 0x100000000. > > + */ > > + if (offset < 0xe0000000) > > + return self->ram_start + offset; > > + else > > + return self->ram_start + 0xe0000000 + (offset - 0x100000000); > > } > > Would it not be simpler to mmap() a "ram_size + gap_size" contiguous > region and mprotect(PROT_NONE) the gap? We'd still tell KVM and E820 > maps about two separate regions but guest_flat_to_host() would > work-as-is. I've wanted to avoid actually allocating that gap (which is currently 512MB) and instead take the hit in guest_flat_to_host(). If you feel the 512MB vs guest_flat_to_host() trade-off is worth it, I'll change it to work that way. -- Sasha. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html