[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.
- [Qemu-devel] [PATCH 00/17] ide: Use ide_cmd_table function pointers for command execution, Kevin Wolf, 2013/06/18
- [Qemu-devel] [PATCH 01/17] ide: Add handler to ide_cmd_table, Kevin Wolf, 2013/06/18
- Re: [Qemu-devel] [PATCH 01/17] ide: Add handler to ide_cmd_table,
Stefan Hajnoczi <=
- [Qemu-devel] [PATCH 03/17] ide: Convert WIN_IDENTIFY to ide_cmd_table handler, Kevin Wolf, 2013/06/18
- [Qemu-devel] [PATCH 02/17] ide: Convert WIN_DSM to ide_cmd_table handler, Kevin Wolf, 2013/06/18
- [Qemu-devel] [PATCH 05/17] ide: Convert verify commands to ide_cmd_table handler, Kevin Wolf, 2013/06/18
- [Qemu-devel] [PATCH 04/17] ide: Convert cmd_nop commands to ide_cmd_table handler, Kevin Wolf, 2013/06/18
- [Qemu-devel] [PATCH 06/17] ide: Convert read/write multiple commands to ide_cmd_table handler, Kevin Wolf, 2013/06/18
- [Qemu-devel] [PATCH 08/17] ide: Convert DMA read/write commands to ide_cmd_table handler, Kevin Wolf, 2013/06/18
- [Qemu-devel] [PATCH 07/17] ide: Convert PIO read/write commands to ide_cmd_table handler, Kevin Wolf, 2013/06/18
- [Qemu-devel] [PATCH 10/17] ide: Convert CHECK POWER MDOE to ide_cmd_table handler, Kevin Wolf, 2013/06/18
- [Qemu-devel] [PATCH 09/17] ide: Convert READ NATIVE MAX ADDRESS to ide_cmd_table handler, Kevin Wolf, 2013/06/18
- [Qemu-devel] [PATCH 11/17] ide: Convert SET FEATURES to ide_cmd_table handler, Kevin Wolf, 2013/06/18