* be mapped into that page.
*/
void
-HSADriver::allocateQueue(PortProxy &mem_proxy, Addr ioc_buf)
+HSADriver::allocateQueue(ThreadContext *tc, Addr ioc_buf)
{
- TypedBufferArg<kfd_ioctl_create_queue_args> args(ioc_buf);
- args.copyIn(mem_proxy);
+ VPtr<kfd_ioctl_create_queue_args> args(ioc_buf, tc);
if (queueId >= 0x1000) {
fatal("%s: Exceeded maximum number of HSA queues allowed\n", name());
hsa_pp.setDeviceQueueDesc(args->read_pointer_address,
args->ring_base_address, args->queue_id,
args->ring_size);
- args.copyOut(mem_proxy);
}
HSADevice *device;
uint32_t queueId;
- void allocateQueue(PortProxy &mem_proxy, Addr ioc_buf);
+ void allocateQueue(ThreadContext *tc, Addr ioc_buf);
};
#endif // __DEV_HSA_HSA_DRIVER_HH__
{
DPRINTF(GPUDriver, "ioctl: AMDKFD_IOC_CREATE_QUEUE\n");
- allocateQueue(virt_proxy, ioc_buf);
+ allocateQueue(tc, ioc_buf);
DPRINTF(GPUDriver, "Creating queue %d\n", queueId);
}