qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 01/17] ide: Add handler to ide_cmd_table


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH 01/17] ide: Add handler to ide_cmd_table
Date: Wed, 19 Jun 2013 13:45:47 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

On Tue, Jun 18, 2013 at 10:25:55AM +0200, Kevin Wolf wrote:
> As a preparation for moving all IDE commands into their own function
> like in the ATAPI code, introduce a 'handler' callback to ide_cmd_table.
> 
> Commands using this new infrastructure get some things handled
> automatically:
> 
> * The BSY flag is set before calling the handler (in order to avoid bugs
>   like the one fixed in f68ec837) and reset on completion.
> 
> * The (obsolete) DSC flag in the status register is set on completion if
>   the command is flagged with SET_DSC in the command table
> 
> * An IRQ is triggered on completion.
> 
> * The error register and the ERR flag in the status register are cleared
>   before calling the handler and on completion it is asserted that
>   either none or both of them are set.
> 
> No commands are converted at this point.
> 
> Signed-off-by: Kevin Wolf <address@hidden>
> ---
>  hw/ide/core.c | 144 
> +++++++++++++++++++++++++++++++++++-----------------------
>  1 file changed, 86 insertions(+), 58 deletions(-)
> 
> diff --git a/hw/ide/core.c b/hw/ide/core.c
> index 9926d92..cd9de14 100644
> --- a/hw/ide/core.c
> +++ b/hw/ide/core.c
> @@ -1010,71 +1010,78 @@ void ide_ioport_write(void *opaque, uint32_t addr, 
> uint32_t val)
>  #define HD_CFA_OK (HD_OK | CFA_OK)
>  #define ALL_OK (HD_OK | CD_OK | CFA_OK)
>  
> +/* Set the Disk Seek Completed status bit during completion */
> +#define SET_DSC (1u << 8)

If DriveKind changes there could be unnoticed collisions and in the
meantime we have empty flags bits...

Creating a single IDEHandlerFlags enum would still depend on
IDEDriveKind constants so I don't see a nicer solution than what you've
done.  We can live with this.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]