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