qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	"gleb@redhat.com" <gleb@redhat.com>,
	Stefan Hajnoczi <stefanha@gmail.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	Liu Ping Fan <qemulist@gmail.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	Anthony Liguori <anthony@codemonkey.ws>
Subject: Re: [Qemu-devel] [PATCH v7 5/7] memory: make mmio dispatch able to be out of biglock
Date: Mon, 06 May 2013 13:25:26 +0200	[thread overview]
Message-ID: <51879326.9040607@siemens.com> (raw)
In-Reply-To: <51879242.7030402@redhat.com>

On 2013-05-06 13:21, Paolo Bonzini wrote:
> Il 25/11/2012 03:03, Liu Ping Fan ha scritto:
>> @@ -3550,12 +3668,11 @@ void *address_space_map(AddressSpace *as,
>>                          target_phys_addr_t *plen,
>>                          bool is_write)
>>  {
>> -    AddressSpaceDispatch *d = as->dispatch;
>>      target_phys_addr_t len = *plen;
>>      target_phys_addr_t todo = 0;
>>      int l;
>>      target_phys_addr_t page;
>> -    MemoryRegionSection *section;
>> +    MemoryRegionSection *section, mr_obj;
>>      ram_addr_t raddr = RAM_ADDR_MAX;
>>      ram_addr_t rlen;
>>      void *ret;
>> @@ -3565,7 +3682,8 @@ void *address_space_map(AddressSpace *as,
>>          l = (page + TARGET_PAGE_SIZE) - addr;
>>          if (l > len)
>>              l = len;
>> -        section = phys_page_find(d, page >> TARGET_PAGE_BITS);
>> +        address_space_section_lookup_ref(as, page >> TARGET_PAGE_BITS, &mr_obj);
>> +        section = &mr_obj;
>>  
>>          if (!(memory_region_is_ram(section->mr) && !section->readonly)) {
>>              if (todo || bounce.buffer) {
>> @@ -3579,6 +3697,7 @@ void *address_space_map(AddressSpace *as,
>>              }
>>  
>>              *plen = l;
>> +            memory_region_section_unref(&mr_obj);
>>              return bounce.buffer;
>>          }
>>          if (!todo) {
>> @@ -3589,6 +3708,7 @@ void *address_space_map(AddressSpace *as,
>>          len -= l;
>>          addr += l;
>>          todo += l;
>> +        memory_region_section_unref(&mr_obj);
>>      }
>>      rlen = todo;
>>      ret = qemu_ram_ptr_length(raddr, &rlen);
> 
> I think this unref is wrong.  You need to delay it to the
> address_space_unmap, and this in turns requires changing the signature
> of address_space_map.

Can't RAMBlock hold a reference to the associated region? Then this
could be retrieved on unmap without bothering the caller.

Jan

-- 
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux

  reply	other threads:[~2013-05-06 11:25 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-25  2:02 [Qemu-devel] [PATCH v7 0/7] push mmio dispatch out of big lock Liu Ping Fan
2012-11-25  2:02 ` [Qemu-devel] [PATCH v7 1/7] qom: apply atomic on object's refcount Liu Ping Fan
2012-11-28 17:16   ` Richard Henderson
2012-11-29  8:35     ` liu ping fan
2012-11-25  2:02 ` [Qemu-devel] [PATCH v7 2/7] hotplug: introduce qdev_unplug_complete() to remove device from views Liu Ping Fan
2012-11-25  2:03 ` [Qemu-devel] [PATCH v7 3/7] pci: remove pci device from mem view when unplug Liu Ping Fan
2012-11-25  2:03 ` [Qemu-devel] [PATCH v7 4/7] memory: introduce local lock for address space Liu Ping Fan
2012-11-25  2:03 ` [Qemu-devel] [PATCH v7 5/7] memory: make mmio dispatch able to be out of biglock Liu Ping Fan
2013-05-06 11:21   ` Paolo Bonzini
2013-05-06 11:25     ` Jan Kiszka [this message]
2013-05-06 11:30       ` Paolo Bonzini
2012-11-25  2:03 ` [Qemu-devel] [PATCH v7 6/7] memory: introduce tls context to trace nested mmio request issue Liu Ping Fan
2012-11-25  2:03 ` [Qemu-devel] [PATCH v7 7/7] vcpu: push mmio dispatcher out of big lock Liu Ping Fan
2012-12-06  7:28 ` [Qemu-devel] [PATCH v7 0/7] push mmio dispatch " liu ping fan
2013-05-02 16:58   ` Jan Kiszka
2013-05-02 17:14     ` Jan Kiszka
2013-05-03  7:37     ` liu ping fan
2013-05-03  8:04       ` Jan Kiszka
2013-05-04  9:47         ` Paolo Bonzini
2013-05-04 10:42           ` Jan Kiszka
2013-05-06  8:07             ` Paolo Bonzini
2013-05-06  8:40               ` Jan Kiszka
2013-05-06 10:27                 ` Paolo Bonzini
2013-05-06 10:56                   ` Jan Kiszka
2013-05-06 10:58                     ` Paolo Bonzini
2013-05-06 11:11                       ` Jan Kiszka
2013-05-06 11:28                         ` Paolo Bonzini
2013-05-06 11:39                           ` Jan Kiszka
2013-05-06 11:47                             ` Paolo Bonzini
2013-05-06 12:06                               ` Jan Kiszka
2013-05-06 13:09                                 ` Paolo Bonzini
2013-05-06 14:05                                   ` Jan Kiszka
2013-05-06 14:28                                     ` Paolo Bonzini
2013-05-06  1:46           ` liu ping fan
2013-05-06  1:57         ` liu ping fan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51879326.9040607@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=anthony@codemonkey.ws \
    --cc=gleb@redhat.com \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemulist@gmail.com \
    --cc=stefanha@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).