[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [Qemu-devel] [PATCH 05/13] cuda.c: fix CUDA_PACKET respon
From: |
Mark Cave-Ayland |
Subject: |
Re: [Qemu-ppc] [Qemu-devel] [PATCH 05/13] cuda.c: fix CUDA_PACKET response packet format |
Date: |
Wed, 04 Nov 2015 22:58:28 +0000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.8.0 |
On 04/11/15 03:15, David Gibson wrote:
> On Fri, Oct 23, 2015 at 02:56:30PM +0100, Mark Cave-Ayland wrote:
>> According to comments in MOL, the response to a CUDA_PACKET should be one of
>> the following:
>>
>> Reply: CUDA_PACKET, status, cmd
>> Error: ERROR_PACKET, status, CUDA_PACKET, cmd
>>
>> Update cuda_receive_packet() accordingly to reflect this.
>>
>> Signed-off-by: Mark Cave-Ayland <address@hidden>
>
> Code seems to match the description, but I don't have another source
> to check what the right thing to do is for CUDA.
Again there is no official documentation for this other than the
comments in MOL's src/drivers/via-cuda.c cuda_packet() function :(
>> ---
>> hw/misc/macio/cuda.c | 24 +++++-------------------
>> 1 file changed, 5 insertions(+), 19 deletions(-)
>>
>> diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
>> index 9ec19af..88a0999 100644
>> --- a/hw/misc/macio/cuda.c
>> +++ b/hw/misc/macio/cuda.c
>> @@ -480,7 +480,7 @@ static void cuda_adb_poll(void *opaque)
>> static void cuda_receive_packet(CUDAState *s,
>> const uint8_t *data, int len)
>> {
>> - uint8_t obuf[16];
>> + uint8_t obuf[16] = { CUDA_PACKET, 0, data[0] };
>> int autopoll;
>> uint32_t ti;
>>
>> @@ -497,23 +497,15 @@ static void cuda_receive_packet(CUDAState *s,
>> timer_del(s->adb_poll_timer);
>> }
>> }
>> - obuf[0] = CUDA_PACKET;
>> - obuf[1] = data[1];
>> - cuda_send_packet_to_host(s, obuf, 2);
>> + cuda_send_packet_to_host(s, obuf, 3);
>> break;
>> case CUDA_SET_TIME:
>> ti = (((uint32_t)data[1]) << 24) + (((uint32_t)data[2]) << 16) +
>> (((uint32_t)data[3]) << 8) + data[4];
>> s->tick_offset = ti - (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) /
>> get_ticks_per_sec());
>> - obuf[0] = CUDA_PACKET;
>> - obuf[1] = 0;
>> - obuf[2] = 0;
>> cuda_send_packet_to_host(s, obuf, 3);
>> break;
>> case CUDA_GET_TIME:
>> ti = s->tick_offset + (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) /
>> get_ticks_per_sec());
>> - obuf[0] = CUDA_PACKET;
>> - obuf[1] = 0;
>> - obuf[2] = 0;
>> obuf[3] = ti >> 24;
>> obuf[4] = ti >> 16;
>> obuf[5] = ti >> 8;
>> @@ -524,20 +516,14 @@ static void cuda_receive_packet(CUDAState *s,
>> case CUDA_SET_DEVICE_LIST:
>> case CUDA_SET_AUTO_RATE:
>> case CUDA_SET_POWER_MESSAGES:
>> - obuf[0] = CUDA_PACKET;
>> - obuf[1] = 0;
>> - cuda_send_packet_to_host(s, obuf, 2);
>> + cuda_send_packet_to_host(s, obuf, 3);
>> break;
>> case CUDA_POWERDOWN:
>> - obuf[0] = CUDA_PACKET;
>> - obuf[1] = 0;
>> - cuda_send_packet_to_host(s, obuf, 2);
>> + cuda_send_packet_to_host(s, obuf, 3);
>> qemu_system_shutdown_request();
>> break;
>> case CUDA_RESET_SYSTEM:
>> - obuf[0] = CUDA_PACKET;
>> - obuf[1] = 0;
>> - cuda_send_packet_to_host(s, obuf, 2);
>> + cuda_send_packet_to_host(s, obuf, 3);
>> qemu_system_reset_request();
>> break;
>> default:
ATB,
Mark.