Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v6.16-rc6 61 lines 1.4 kB view raw
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (C) 2024, Advanced Micro Devices, Inc. 4 */ 5 6#include <drm/amdxdna_accel.h> 7#include <drm/drm_device.h> 8#include <drm/drm_print.h> 9#include <drm/drm_gem.h> 10#include <drm/drm_gem_shmem_helper.h> 11#include <drm/gpu_scheduler.h> 12#include <linux/completion.h> 13 14#include "amdxdna_gem.h" 15#include "amdxdna_mailbox.h" 16#include "amdxdna_mailbox_helper.h" 17#include "amdxdna_pci_drv.h" 18 19int xdna_msg_cb(void *handle, void __iomem *data, size_t size) 20{ 21 struct xdna_notify *cb_arg = handle; 22 int ret; 23 24 if (unlikely(!data)) 25 goto out; 26 27 if (unlikely(cb_arg->size != size)) { 28 cb_arg->error = -EINVAL; 29 goto out; 30 } 31 32 memcpy_fromio(cb_arg->data, data, cb_arg->size); 33 print_hex_dump_debug("resp data: ", DUMP_PREFIX_OFFSET, 34 16, 4, cb_arg->data, cb_arg->size, true); 35out: 36 ret = cb_arg->error; 37 complete(&cb_arg->comp); 38 return ret; 39} 40 41int xdna_send_msg_wait(struct amdxdna_dev *xdna, struct mailbox_channel *chann, 42 struct xdna_mailbox_msg *msg) 43{ 44 struct xdna_notify *hdl = msg->handle; 45 int ret; 46 47 ret = xdna_mailbox_send_msg(chann, msg, TX_TIMEOUT); 48 if (ret) { 49 XDNA_ERR(xdna, "Send message failed, ret %d", ret); 50 return ret; 51 } 52 53 ret = wait_for_completion_timeout(&hdl->comp, 54 msecs_to_jiffies(RX_TIMEOUT)); 55 if (!ret) { 56 XDNA_ERR(xdna, "Wait for completion timeout"); 57 return -ETIME; 58 } 59 60 return hdl->error; 61}