[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH 5/5] cache slot lookup
From: |
Glauber Costa |
Subject: |
[Qemu-devel] Re: [PATCH 5/5] cache slot lookup |
Date: |
Thu, 18 Dec 2008 08:48:50 -0200 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
On Thu, Dec 18, 2008 at 11:41:24AM +0200, Avi Kivity wrote:
> Glauber Costa wrote:
>> record slot used in last lookup. For the common mmio case,
>> we'll usually access the same memory slot repeatedly.
>>
>
>> --- a/kvm-all.c
>> +++ b/kvm-all.c
>> @@ -75,16 +75,25 @@ static KVMSlot *kvm_alloc_slot(KVMState *s)
>> return NULL;
>> }
>> +static KVMSlot *last_slot = NULL;
>> +
>> static KVMSlot *kvm_lookup_slot(KVMState *s, target_phys_addr_t start_addr)
>> {
>> int i;
>> +
>> + if (last_slot && (start_addr >= last_slot->start_addr &&
>> + start_addr < (last_slot->start_addr + last_slot->memory_size)))
>> + return last_slot;
>> +
>> for (i = 0; i < ARRAY_SIZE(s->slots); i++) {
>> KVMSlot *mem = &s->slots[i];
>> if (start_addr >= mem->start_addr &&
>> - start_addr < (mem->start_addr + mem->memory_size))
>> + start_addr < (mem->start_addr + mem->memory_size)) {
>> + last_slot = mem;
>> return mem;
>> + }
>> }
>>
>
> This wasn't introduced by this patch, but the comparison is broken ion
> i386 hosts, where target_phys_addr_t is 32 bits wide. mem->start_addr +
> mem->memory_size can overflow (this in fact happens for the bios slot at
> 4G-128K)
AFAIK, the assumption is that kvm will always be qemu-system-x86_64, due to
migration issues. Then, _target_ phys_addr_t is always 64 bit wide.
If it's not the case, then this is really a problem.
- [Qemu-devel] [PATCH 0/5] Replace tcg memory functions, Glauber Costa, 2008/12/17
- [Qemu-devel] [PATCH 1/5] re-register whole area upon lfb unmap., Glauber Costa, 2008/12/17
- [Qemu-devel] [PATCH 2/5] isolate io handling routing, Glauber Costa, 2008/12/17
- [Qemu-devel] [PATCH 3/5] replace cpu_physical_memory_rw, Glauber Costa, 2008/12/17
- [Qemu-devel] [PATCH 4/5] hook cpu_register_physical_mem, Glauber Costa, 2008/12/17
- [Qemu-devel] [PATCH 5/5] cache slot lookup, Glauber Costa, 2008/12/17
- [Qemu-devel] Re: [PATCH 5/5] cache slot lookup, Avi Kivity, 2008/12/18
- [Qemu-devel] Re: [PATCH 5/5] cache slot lookup,
Glauber Costa <=
- Re: [Qemu-devel] Re: [PATCH 5/5] cache slot lookup, Daniel P. Berrange, 2008/12/18
- Re: [Qemu-devel] Re: [PATCH 5/5] cache slot lookup, Glauber Costa, 2008/12/18
- [Qemu-devel] Re: [PATCH 5/5] cache slot lookup, Avi Kivity, 2008/12/18
- [Qemu-devel] Re: [PATCH 3/5] replace cpu_physical_memory_rw, Anthony Liguori, 2008/12/17
- [Qemu-devel] Re: [PATCH 3/5] replace cpu_physical_memory_rw, Glauber Costa, 2008/12/17
- [Qemu-devel] Re: [PATCH 2/5] isolate io handling routing, Anthony Liguori, 2008/12/17
[Qemu-devel] Re: [PATCH 1/5] re-register whole area upon lfb unmap., Anthony Liguori, 2008/12/17
Re: [Qemu-devel] [PATCH 0/5] Replace tcg memory functions, Ian Jackson, 2008/12/22