From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=33728 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q9CoJ-0004AH-MK for qemu-devel@nongnu.org; Mon, 11 Apr 2011 04:49:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q9CoI-0000xI-BK for qemu-devel@nongnu.org; Mon, 11 Apr 2011 04:49:27 -0400 Received: from mx1.redhat.com ([209.132.183.28]:27247) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q9CoI-0000wb-2P for qemu-devel@nongnu.org; Mon, 11 Apr 2011 04:49:26 -0400 Message-ID: <4DA2C122.6070506@redhat.com> Date: Mon, 11 Apr 2011 10:51:46 +0200 From: Kevin Wolf MIME-Version: 1.0 References: <8c4effc5d537fe0a35791e2f970ede8ed400b5bd.1302246567.git.amit.shah@redhat.com> <4D9F0E45.6000005@redhat.com> <20110409103658.GA3955@amit-x200.redhat.com> In-Reply-To: <20110409103658.GA3955@amit-x200.redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 3/5] atapi: GESN: Spin off No Event Available handling into own function List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Amit Shah Cc: Juan Quintela , Stefan Hajnoczi , Markus Armbruster , qemu list , Paolo Bonzini Am 09.04.2011 12:36, schrieb Amit Shah: > On (Fri) 08 Apr 2011 [15:31:49], Kevin Wolf wrote: >> Am 08.04.2011 09:15, schrieb Amit Shah: >>> Handle GET_EVENT_STATUS_NOTIFICATION's No Event Available status in its >>> own function. >>> >>> Also ensure the buffer the driver sent us is big enough to fill in all >>> the data we have -- else just fill in as much as the buffer can hold. >> >> This is unnecessary and in fact none of the IDE code does this. >> s->io_buffer isn't guest memory, but an internal buffer that is >> allocated like this: >> >> s->io_buffer = qemu_memalign(2048, IDE_DMA_BUF_SECTORS*512 + 4); > > OK - so all the code paths will be much easier then. > > But by my reading of (the kernel) code, it looks as if the kernel > allocates the memory and passes it on. What am I missing? That the data is copied. All command work on the internal s->io_buffer. Once the command is completed, the response can be transferred to the guest, either using DMA (see bmdma_rw_buf) or PIO (ide_data_readl). >> So that's more than enough for storing four bytes. ide_atapi_cmd_reply() >> takes care of making only max_size bytes visible to the guest. > > OK - but in some cases we just do a ide_set_irq() instead of > ide_atapi_cmd_reply() so what happens in that case? I can't find any ATAPI command that calls ide_set_irq directly. Anyway, the important thing is that s->io_buffer_size is set correctly. Kevin