[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/5] exec.c: use refcnt to protect device during
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 2/5] exec.c: use refcnt to protect device during dispatching |
Date: |
Wed, 25 Jul 2012 11:18:35 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1 |
Il 25/07/2012 10:12, liu ping fan ha scritto:
>>> >> + qemu_rwlock_rdlock_devtree();
>>> >> section = phys_page_find(page >> TARGET_PAGE_BITS);
>>> >> + if (!(memory_region_is_ram(section->mr) ||
>>> >> + memory_region_is_romd(section->mr)) && !is_write) {
>>> >> + bk = get_backend(section->mr, addr);
>>> >> + object_ref(bk);
>>> >> + } else if (!memory_region_is_ram(section->mr) && is_write) {
>>> >> + bk = get_backend(section->mr, addr);
>>> >> + object_ref(bk);
>>> >> + }
>>> >> + qemu_rwlock_unlock_devtree();
>>> >>
>>> >> if (is_write) {
>>> >> if (!memory_region_is_ram(section->mr)) {
>>> >> @@ -3426,6 +3462,7 @@ void cpu_physical_memory_rw(target_phys_addr_t
>>> >> addr, uint8_t *buf,
>>> >> io_mem_write(section->mr, addr1, val, 1);
>>> >> l = 1;
>>> >> }
>>> >> + object_unref(bk);
>> >
>> > Currently object_ref()/object_unref() are not atomic. Will you send
> We obey the rule:
> rdlock->search->ref_get,
> wrlock->remove ->ref_put
> So can it causes problem if object_ref()/object_unref() are not atomic?
Yes, two CPUs can perform object_ref at the same time.
You can find a header file for atomic operations here:
https://github.com/bonzini/qemu/commit/atomics.patch
Paolo
- [Qemu-devel] [PATCH 1/5] qom: adopt rwlock to protect accessing dev from removing it, (continued)
- [Qemu-devel] [PATCH 1/5] qom: adopt rwlock to protect accessing dev from removing it, Liu Ping Fan, 2012/07/24
- Re: [Qemu-devel] [PATCH 1/5] qom: adopt rwlock to protect accessing dev from removing it, Paolo Bonzini, 2012/07/25
- Re: [Qemu-devel] [PATCH 1/5] qom: adopt rwlock to protect accessing dev from removing it, liu ping fan, 2012/07/26
- Re: [Qemu-devel] [PATCH 1/5] qom: adopt rwlock to protect accessing dev from removing it, Avi Kivity, 2012/07/26
- Re: [Qemu-devel] [PATCH 1/5] qom: adopt rwlock to protect accessing dev from removing it, liu ping fan, 2012/07/26
- Re: [Qemu-devel] [PATCH 1/5] qom: adopt rwlock to protect accessing dev from removing it, Avi Kivity, 2012/07/26
- Re: [Qemu-devel] [PATCH 1/5] qom: adopt rwlock to protect accessing dev from removing it, liu ping fan, 2012/07/26
[Qemu-devel] [PATCH 2/5] exec.c: use refcnt to protect device during dispatching, Liu Ping Fan, 2012/07/24
Re: [Qemu-devel] [PATCH 2/5] exec.c: use refcnt to protect device during dispatching, Avi Kivity, 2012/07/25
[Qemu-devel] [PATCH 3/5] hotplug: introduce qdev_unplug_ack() to remove device from views, Liu Ping Fan, 2012/07/24
[Qemu-devel] [PATCH 4/5] qom: delay DeviceState's reclaim to main-loop, Liu Ping Fan, 2012/07/24