Re: [Qemu-devel] [PATCH] memory: use signed arithmetic

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/03/2011 12:59 AM, Richard Henderson wrote:
On 08/02/2011 01:50 PM, Avi Kivity wrote:
>   struct AddrRange {
>  -    uint64_t start;
>  -    uint64_t size;
>  +    int64_t start;
>  +    int64_t size;

I'm must say I'm not keen on this.  My primary objection is that
a "range" can no longer properly represent the entire address space.
Or, indeed, anything in the second half of it.

I don't think there's any cpu which has a real 64-bit physical address space? Don't they all truncate it?

It sounds like your problem would be better solved by re-arranging
things such that you perform X<  Y comparisons rather than DELTA<  0.



More like, X + delta < Y + delta, I just get a headache what all those deltas mean everywhere.

For reference, the root cause is
static void render_memory_region(FlatView *view,
                                 MemoryRegion *mr,
                                 target_phys_addr_t base,
                                 AddrRange clip)
{
...

    base += mr->addr;

...

    if (mr->alias) {
        base -= mr->alias->addr;
        base -= mr->alias_offset;   // <--- HERE!
        render_memory_region(view, mr->alias, base, clip);
        return;
    }

I could pass alias_offset everywhere and compensate for it. But stealing bit from the address space is easier than adjusting all the calculations.

--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.

--
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


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux