[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH 01/13] cuda: add a framework to handle commands
From: |
David Gibson |
Subject: |
Re: [Qemu-ppc] [PATCH 01/13] cuda: add a framework to handle commands |
Date: |
Mon, 25 Jan 2016 10:10:57 +1100 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Sat, Jan 23, 2016 at 09:39:58PM +0100, Hervé Poussineau wrote:
> Next commits will port existing CUDA commands to this framework.
>
> Signed-off-by: Hervé Poussineau <address@hidden>
Reviewed-by: David Gibson <address@hidden>
> ---
> hw/misc/macio/cuda.c | 34 ++++++++++++++++++++++++++++++++++
> 1 file changed, 34 insertions(+)
>
> diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
> index 9db4c64..69f69c2 100644
> --- a/hw/misc/macio/cuda.c
> +++ b/hw/misc/macio/cuda.c
> @@ -534,13 +534,47 @@ static void cuda_adb_poll(void *opaque)
> (get_ticks_per_sec() / CUDA_ADB_POLL_FREQ));
> }
>
> +/* description of commands */
> +typedef struct CudaCommand {
> + uint8_t command;
> + const char *name;
> + bool (*handler)(CUDAState *s,
> + const uint8_t *in_args, int in_len,
> + uint8_t *out_args, int *out_len);
> +} CudaCommand;
> +
> +static const CudaCommand handlers[] = {
> +};
> +
> static void cuda_receive_packet(CUDAState *s,
> const uint8_t *data, int len)
> {
> uint8_t obuf[16] = { CUDA_PACKET, 0, data[0] };
> int autopoll;
> + int i, out_len = 0;
> uint32_t ti;
>
> + for (i = 0; i < ARRAY_SIZE(handlers); i++) {
> + const CudaCommand *desc = &handlers[i];
> + if (desc->command == data[0]) {
> + CUDA_DPRINTF("handling command %s\n", desc->name);
> + out_len = 0;
> + if (desc->handler(s, data + 1, len - 1, obuf + 3, &out_len)) {
> + cuda_send_packet_to_host(s, obuf, 3 + out_len);
> + } else {
> + qemu_log_mask(LOG_GUEST_ERROR,
> + "CUDA: %s: wrong parameters %d\n",
> + desc->name, len);
> + obuf[0] = ERROR_PACKET;
> + obuf[1] = 0x5; /* bad parameters */
> + obuf[2] = CUDA_PACKET;
> + obuf[3] = data[0];
> + cuda_send_packet_to_host(s, obuf, 4);
> + }
> + return;
> + }
> + }
> +
> switch(data[0]) {
> case CUDA_AUTOPOLL:
> autopoll = (data[1] != 0);
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature
- [Qemu-ppc] [PATCH 06/13] cuda: port POWERDOWN command to new framework, (continued)
- [Qemu-ppc] [PATCH 06/13] cuda: port POWERDOWN command to new framework, Hervé Poussineau, 2016/01/23
- [Qemu-ppc] [PATCH 04/13] cuda: port SET_AUTO_RATE command to new framework, Hervé Poussineau, 2016/01/23
- [Qemu-ppc] [PATCH 05/13] cuda: port SET_DEVICE_LIST command to new framework, Hervé Poussineau, 2016/01/23
- [Qemu-ppc] [PATCH 07/13] cuda: port RESET_SYSTEM command to new framework, Hervé Poussineau, 2016/01/23
- [Qemu-ppc] [PATCH 01/13] cuda: add a framework to handle commands, Hervé Poussineau, 2016/01/23
- Re: [Qemu-ppc] [PATCH 01/13] cuda: add a framework to handle commands,
David Gibson <=
- [Qemu-ppc] [PATCH 02/13] cuda: reject unknown commands, Hervé Poussineau, 2016/01/23
- [Qemu-ppc] [PATCH 03/13] cuda: port AUTOPOLL command to new framework, Hervé Poussineau, 2016/01/23
- [Qemu-ppc] [PATCH 12/13] cuda: remove GET_6805_ADDR command, Hervé Poussineau, 2016/01/23
- [Qemu-ppc] [PATCH 08/13] cuda: port FILE_SERVER_FLAG command to new framework, Hervé Poussineau, 2016/01/23