Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 49e6a0e1 authored by Jilai Wang's avatar Jilai Wang
Browse files

msm: npu: Avoid allocating IPC buffer dynamically



Use the allocated IPC buffer during NPU initialization instead
of allcating it dynamically.

Change-Id: I7f5cd37c806e8756751ce9d70181c91037ea635c
Signed-off-by: default avatarJilai Wang <jilaiw@codeaurora.org>
parent eca47d45
Loading
Loading
Loading
Loading
+6 −17
Original line number Diff line number Diff line
@@ -1505,27 +1505,22 @@ static void app_msg_proc(struct npu_host_ctx *host_ctx, uint32_t *msg)

static void host_session_msg_hdlr(struct npu_device *npu_dev)
{
	uint32_t *msg;
	struct npu_host_ctx *host_ctx = &npu_dev->host_ctx;

	msg = kzalloc(sizeof(uint32_t) * NPU_IPC_BUF_LENGTH, GFP_KERNEL);
	if (!msg)
		return;

	mutex_lock(&host_ctx->lock);
	if (host_ctx->fw_state != FW_ENABLED) {
		NPU_WARN("handle npu session msg when FW is disabled\n");
		goto skip_read_msg;
	}

	while (npu_host_ipc_read_msg(npu_dev, IPC_QUEUE_APPS_RSP, msg) == 0) {
	while (npu_host_ipc_read_msg(npu_dev, IPC_QUEUE_APPS_RSP,
		host_ctx->ipc_msg_buf) == 0) {
		NPU_DBG("received from msg queue\n");
		app_msg_proc(host_ctx, msg);
		app_msg_proc(host_ctx, host_ctx->ipc_msg_buf);
	}

skip_read_msg:
	mutex_unlock(&host_ctx->lock);
	kfree(msg);
}

static void log_msg_proc(struct npu_device *npu_dev, uint32_t *msg)
@@ -1551,28 +1546,22 @@ static void log_msg_proc(struct npu_device *npu_dev, uint32_t *msg)

static void host_session_log_hdlr(struct npu_device *npu_dev)
{
	uint32_t *msg;
	struct npu_host_ctx *host_ctx = &npu_dev->host_ctx;

	msg = kzalloc(sizeof(uint32_t) * NPU_IPC_BUF_LENGTH, GFP_KERNEL);

	if (!msg)
		return;

	mutex_lock(&host_ctx->lock);
	if (host_ctx->fw_state != FW_ENABLED) {
		NPU_WARN("handle npu session msg when FW is disabled\n");
		goto skip_read_msg;
	}

	while (npu_host_ipc_read_msg(npu_dev, IPC_QUEUE_LOG, msg) == 0) {
	while (npu_host_ipc_read_msg(npu_dev, IPC_QUEUE_LOG,
		host_ctx->ipc_msg_buf) == 0) {
		NPU_DBG("received from log queue\n");
		log_msg_proc(npu_dev, msg);
		log_msg_proc(npu_dev, host_ctx->ipc_msg_buf);
	}

skip_read_msg:
	mutex_unlock(&host_ctx->lock);
	kfree(msg);
}

/* -------------------------------------------------------------------------