From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:45545) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R5dBS-0004nB-PZ for qemu-devel@nongnu.org; Mon, 19 Sep 2011 08:42:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R5dBR-0001E8-Q7 for qemu-devel@nongnu.org; Mon, 19 Sep 2011 08:42:50 -0400 Received: from mx1.redhat.com ([209.132.183.28]:7720) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R5dBR-00019W-FV for qemu-devel@nongnu.org; Mon, 19 Sep 2011 08:42:49 -0400 Message-ID: <4E7738C5.6050504@redhat.com> Date: Mon, 19 Sep 2011 15:42:45 +0300 From: Avi Kivity MIME-Version: 1.0 References: <4E75E7A4.50702@web.de> <4E75E96E.90101@web.de> <4E761051.9000204@redhat.com> <4E76119F.5040004@web.de> <4E761220.3080707@redhat.com> <4E761C20.4040609@web.de> <4E76212A.20000@redhat.com> <4E764185.8020500@web.de> <4E773365.9010008@redhat.com> <4E773644.8020005@web.de> In-Reply-To: <4E773644.8020005@web.de> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 1/2] memory: Fix old portio word accesses List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: qemu-devel , Richard Henderson On 09/19/2011 03:32 PM, Jan Kiszka wrote: > > It's opt-in. If a device sets > > MemoryRegionOps::impl.{min,max}_access_size = 1, it will only be fed > > byte accesses (the core will take care of breaking apart larger > > writes). If it sets MemoryRegionOps::impl.{min,max}_access_size = 4, it > > will only get long accesses (and the core will/should shift/mask or > > RMW). Refusing illegal access sizes is done using > > MemoryRegionOps::valid. Most of this is unimplemented unfortunately. > > That makes sense (for non-old_portio users). > > The trick of having a way to register N callbacks with one shot is worth growing. Ideally each register in a BAR would have a callback and we'd do something like MemoryRegionOps mydev_ops = { .registers = { { MYDEV_REG_x, 4, 4, mydev_reg_x_read, mydev_reg_x_write, }, ... }, } with hints to the core like "this register sits at this offset, use it for reads instead of a callback", or, "this is a read-only register". -- error compiling committee.c: too many arguments to function