mirror of https://github.com/proxmox/mirror_qemu
cuda.c: fix CUDA_PACKET response packet format
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 in order to make MacOS 9 happy. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>master
parent
6729aa4013
commit
4202e63c04
|
@ -480,7 +480,7 @@ static void cuda_adb_poll(void *opaque)
|
||||||
static void cuda_receive_packet(CUDAState *s,
|
static void cuda_receive_packet(CUDAState *s,
|
||||||
const uint8_t *data, int len)
|
const uint8_t *data, int len)
|
||||||
{
|
{
|
||||||
uint8_t obuf[16];
|
uint8_t obuf[16] = { CUDA_PACKET, 0, data[0] };
|
||||||
int autopoll;
|
int autopoll;
|
||||||
uint32_t ti;
|
uint32_t ti;
|
||||||
|
|
||||||
|
@ -497,23 +497,15 @@ static void cuda_receive_packet(CUDAState *s,
|
||||||
timer_del(s->adb_poll_timer);
|
timer_del(s->adb_poll_timer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
obuf[0] = CUDA_PACKET;
|
cuda_send_packet_to_host(s, obuf, 3);
|
||||||
obuf[1] = data[1];
|
|
||||||
cuda_send_packet_to_host(s, obuf, 2);
|
|
||||||
break;
|
break;
|
||||||
case CUDA_SET_TIME:
|
case CUDA_SET_TIME:
|
||||||
ti = (((uint32_t)data[1]) << 24) + (((uint32_t)data[2]) << 16) + (((uint32_t)data[3]) << 8) + data[4];
|
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());
|
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);
|
cuda_send_packet_to_host(s, obuf, 3);
|
||||||
break;
|
break;
|
||||||
case CUDA_GET_TIME:
|
case CUDA_GET_TIME:
|
||||||
ti = s->tick_offset + (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) / get_ticks_per_sec());
|
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[3] = ti >> 24;
|
||||||
obuf[4] = ti >> 16;
|
obuf[4] = ti >> 16;
|
||||||
obuf[5] = ti >> 8;
|
obuf[5] = ti >> 8;
|
||||||
|
@ -524,20 +516,14 @@ static void cuda_receive_packet(CUDAState *s,
|
||||||
case CUDA_SET_DEVICE_LIST:
|
case CUDA_SET_DEVICE_LIST:
|
||||||
case CUDA_SET_AUTO_RATE:
|
case CUDA_SET_AUTO_RATE:
|
||||||
case CUDA_SET_POWER_MESSAGES:
|
case CUDA_SET_POWER_MESSAGES:
|
||||||
obuf[0] = CUDA_PACKET;
|
cuda_send_packet_to_host(s, obuf, 3);
|
||||||
obuf[1] = 0;
|
|
||||||
cuda_send_packet_to_host(s, obuf, 2);
|
|
||||||
break;
|
break;
|
||||||
case CUDA_POWERDOWN:
|
case CUDA_POWERDOWN:
|
||||||
obuf[0] = CUDA_PACKET;
|
cuda_send_packet_to_host(s, obuf, 3);
|
||||||
obuf[1] = 0;
|
|
||||||
cuda_send_packet_to_host(s, obuf, 2);
|
|
||||||
qemu_system_shutdown_request();
|
qemu_system_shutdown_request();
|
||||||
break;
|
break;
|
||||||
case CUDA_RESET_SYSTEM:
|
case CUDA_RESET_SYSTEM:
|
||||||
obuf[0] = CUDA_PACKET;
|
cuda_send_packet_to_host(s, obuf, 3);
|
||||||
obuf[1] = 0;
|
|
||||||
cuda_send_packet_to_host(s, obuf, 2);
|
|
||||||
qemu_system_reset_request();
|
qemu_system_reset_request();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue