From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 42C3BC54E49 for ; Thu, 7 Mar 2024 15:39:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A9A9B6B01F0; Thu, 7 Mar 2024 10:39:14 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A4B616B01F2; Thu, 7 Mar 2024 10:39:14 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8EBEC6B01F3; Thu, 7 Mar 2024 10:39:14 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 7C8B16B01F0 for ; Thu, 7 Mar 2024 10:39:14 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 473891C1209 for ; Thu, 7 Mar 2024 15:39:14 +0000 (UTC) X-FDA: 81870651828.14.F8E29A7 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by imf08.hostedemail.com (Postfix) with ESMTP id D2C7A160025 for ; Thu, 7 Mar 2024 15:39:11 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=quicinc.com header.s=qcppdkim1 header.b=PewkiV9M; dmarc=pass (policy=none) header.from=quicinc.com; spf=pass (imf08.hostedemail.com: domain of quic_svaddagi@quicinc.com designates 205.220.180.131 as permitted sender) smtp.mailfrom=quic_svaddagi@quicinc.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709825952; h=from:from:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=5nx7YKDKUKYaf+RGFR3mjyRftZOQ0lMCWnwUnwRPBmQ=; b=PpdlFYvccIaUh8B4bswSGAdgNR23M02JN3Uv8/A2kJcEtWQFOQlDYXC2vGE/6UROyFldsp rGqRGLEFFJ5/Ikxknp9X5f2bFEnt9fJ8ERrnvOLUCFBs/2YvOkI7XhyAEaSLyb7B671e27 aZjRQqlF5ch4+H8nWzwWvjnD98tZPKs= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=quicinc.com header.s=qcppdkim1 header.b=PewkiV9M; dmarc=pass (policy=none) header.from=quicinc.com; spf=pass (imf08.hostedemail.com: domain of quic_svaddagi@quicinc.com designates 205.220.180.131 as permitted sender) smtp.mailfrom=quic_svaddagi@quicinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709825952; a=rsa-sha256; cv=none; b=p+1RW+O02jYxdd5mkDc0Id/n3WHRNmuDVnlc1v0s0j0URcQ5/9odtKgcd3OoMzX/NEctTD fc5pCTnKtYv6t0FjNwDG3hmtjV1K+zsJrgtiKb97rnGP36EOcSFTA8nGLv6ShETbM/dL4S J4j0+Ayust7apZmsMnUtmpNgqcUwORY= Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 427ALcsM012641; Thu, 7 Mar 2024 15:39:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= date:from:to:cc:subject:message-id:reply-to:references :mime-version:content-type:in-reply-to; s=qcppdkim1; bh=5nx7YKDK UKYaf+RGFR3mjyRftZOQ0lMCWnwUnwRPBmQ=; b=PewkiV9MUKDOPYdt6AQXqbcM CMs004tAeFJZVxX1PSIKOzVusi2NbJ1PP8vWYn/s638Ejb7OBClgSVYTu+xdyEOE 7cCHzXPt+7hyrRyPupUGIm5GW8SobTJugIWiUe/K4XauBe7EelyzbWWrDEUU5B5y QfNAoFFT7dwk5HhjNq0eAgruJv9ijWSXHu9H6FDzwNb1XqikZrBDew7SA+wqB90B Z7ehefGmy6QMtWR+omkQMe3EwvpSNox2CS2yNeSzzw5t3rpPKCs3IfdByNy00DcT A81S7gBTSHU8ivKjDEEIAK3ZdIGzgu6NXAHBGMDKYpeNYVJtPncmq4WPDe+qnw== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3wqbrhse67-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 07 Mar 2024 15:38:56 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 427FcsKI006303 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 7 Mar 2024 15:38:54 GMT Received: from quicinc.com (10.80.80.8) by nalasex01b.na.qualcomm.com (10.47.209.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Thu, 7 Mar 2024 07:38:47 -0800 Date: Thu, 7 Mar 2024 21:08:43 +0530 From: Srivatsa Vaddagiri To: Elliot Berman CC: Alex Elder , Srinivas Kandagatla , Murali Nalajal , Trilok Soni , Carl van Schaik , Philip Derrin , Prakruthi Deepak Heragu , Jonathan Corbet , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas , Will Deacon , Konrad Dybcio , Bjorn Andersson , Dmitry Baryshkov , "Fuad Tabba" , Sean Christopherson , "Andrew Morton" , , , , , , Subject: Re: [PATCH v17 07/35] gunyah: rsc_mgr: Add resource manager RPC core Message-ID: <20240307153843.GC1695516@quicinc.com> Reply-To: Srivatsa Vaddagiri References: <20240222-gunyah-v17-0-1e9da6763d38@quicinc.com> <20240222-gunyah-v17-7-1e9da6763d38@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Disposition: inline In-Reply-To: <20240222-gunyah-v17-7-1e9da6763d38@quicinc.com> X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01b.na.qualcomm.com (10.47.209.197) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: SAqqeAVAnHjsZR1Kz4QUiMS6P36MU6IS X-Proofpoint-ORIG-GUID: SAqqeAVAnHjsZR1Kz4QUiMS6P36MU6IS X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-07_07,2024-03-06_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 impostorscore=0 malwarescore=0 bulkscore=0 phishscore=0 suspectscore=0 lowpriorityscore=0 spamscore=0 adultscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2402120000 definitions=main-2403070084 X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: D2C7A160025 X-Stat-Signature: yo686s8kdi4mm3cx3immjyam676ngk66 X-HE-Tag: 1709825951-125464 X-HE-Meta: U2FsdGVkX1/+3gsSgsaOYdmiWGD6tM+stVkoljR+CORZBSJf/IOv8SiXBhFbeptSuaQ8k9ca6DDQ4Udko54EgeCVM+Uuero4De6XQhpLj1hNhTuAnj1JO1FyD3Tn0Ir4IQ+4YjsXYC+eNkzBlc7SXOWEvjLV/gBAnAu0icRl2a/dcpy4StM09CCFR3hAVMg/uxUz+l13QZn+rV05TXdBH92PthssBgoueY7YqTrAJjJWzlyIH7UAHdr/6AF5SX2+ts6C1HavOE5Y2hBjS4rgqL3/hcf8md3ccOCAgQcL2RBwQwwVR7jbOsf2xZQVkMU0LAANbcltVmnRhv7QGwliBnINkzrtyM3/zomKuR2lQK46RfoMpcy17JD4Hsxjsen8Xx+5adHcRTaqkQ5N+BbyqyjGkXCRG3J9IhYT1EvtQbiTavU3exnaDeHG6TNTQHrxaLgRRQ2pxxxzdg1ra6CdCgPIRLsp7gF3oXo2O/qYpiCzQmVTORK2OY7oQQAikkCQflHpU6WkU/U/seX8kkjMtWX2MPFiakySakUWjYdXjXEGOB5r8yU4YIJy9Xggteg3/KBeEDnRo1zWKxHmficYe4miUC/0Cx/gfqK/s3WYBid8qkXR2uUVB/4+jCHv2Lv4ONk3RZNBUAqyAZEfFOZkOu/0/ZWM/Z9LX2nPrOJcA+D5vfQHiNAdjyX3KCH1o+0fTH23ZYot7USg3ALuS1yO3bb6SNRpvPYCZiJ4TCz8Wj/2mxIFCwZSC5wWSZPoSghk7QfLgsbHD6RJqidAooBCB2LmQwpbxiNbSKrgvP+2LmwZKtksdf0Cs+Be3WsPZ2VPZA0r4N4MO0euPxWx46Z7k9m7IVmc0F3Dj1ICnQrK/VxYVBT8agywkFKFGYqdAVBNGJUG5+7a09oubhtCVkgvGRli4qWgdrSUSC8tU6IGrfvgyKk95Ke26m2ehikuj475nTZ0HMJcHiChrLz0bsB NmnGzw5s qnLoSbv8V7DBv0zrhMwWNFyaB55pPnc+LE7nTINEm/O1dNi5LXR7vwWhk2VfEP4X8nzVU5kAeNc8kxAvLQ2MIctJmmx+962nzf+FgwvHz3tc18zlqgHbDJoY364ASexPp4mZSaUFUSG4IXiLm6gyrImUvHKtcK0qRxS+nlB26P/BmGHQNoIDueAot4WuDwUTVm+mDVeSeq2tX6GCqSAXE/bHyBJGBOu9UNkgEMVoJTUjrS4wRf9oMWAJW/nRG8UUvppcBY5ipOHyVgLFpfTwZyMqDFfjnjA+yY5wB6zPYE3nmYhDpx700hj6QkQN0q/mcC6uxCfYo1nOceGfQnmUYo4Xlj0gvuMMCz6ccSR2XEZJVxukMW+UcwlLKWQEIBwmggr1qXb3PTJ3YspxclKKC3PlZWm5rWy/GlWPfDzjmBYhB7TXkSDvGwB5mimY3fvhXh2sbVc2H2R44jcZ+11YKPO/c9xmnnPFc7yTr75n/bnNjW+1PC7wd3D0Fm58D+Pw+wKpYZuBjAKFSFdU03J6AyJdMG8qel+ilgddwo1sLlIqzuSROGn88ZP8pgQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: * Elliot Berman [2024-02-22 15:16:30]: > The resource manager is a special virtual machine which is always > running on a Gunyah system. It provides APIs for creating and destroying > VMs, secure memory management, sharing/lending of memory between VMs, > and setup of inter-VM communication. Calls to the resource manager are > made via message queues. > > This patch implements the basic probing and RPC mechanism to make those > API calls. Request/response calls can be made with gh_rm_call. > Drivers can also register to notifications pushed by RM via > gh_rm_register_notifier > > Specific API calls that resource manager supports will be implemented in > subsequent patches. > > Signed-off-by: Elliot Berman Left a minor comment below. LGTM otherwise. Reviewed-by: Srivatsa Vaddagiri > +static irqreturn_t gunyah_rm_rx(int irq, void *data) > +{ > + enum gunyah_error gunyah_error; > + struct gunyah_rm_rpc_hdr *hdr; > + struct gunyah_rm *rm = data; > + void *msg = &rm->recv_msg[0]; > + size_t len; > + bool ready; > + > + do { > + gunyah_error = gunyah_hypercall_msgq_recv(rm->rx_ghrsc.capid, > + msg, > + sizeof(rm->recv_msg), > + &len, &ready); > + if (gunyah_error != GUNYAH_ERROR_OK) { > + if (gunyah_error != GUNYAH_ERROR_MSGQUEUE_EMPTY) > + dev_warn(rm->dev, > + "Failed to receive data: %d\n", > + gunyah_error); > + return IRQ_HANDLED; > + } > + > + if (len < sizeof(*hdr)) { > + dev_err_ratelimited( > + rm->dev, > + "Too small message received. size=%ld\n", len); > + continue; In practice we should never hit this condition, in case we do encounter, do you see a reason why continue is preferred over simply breaking the loop? > + } > + > + hdr = msg; > + if (hdr->api != RM_RPC_API) { > + dev_err(rm->dev, "Unknown RM RPC API version: %x\n", > + hdr->api); > + return IRQ_HANDLED; > + } > + > + switch (FIELD_GET(RM_RPC_TYPE_MASK, hdr->type)) { > + case RM_RPC_TYPE_NOTIF: > + gunyah_rm_process_notif(rm, msg, len); > + break; > + case RM_RPC_TYPE_REPLY: > + gunyah_rm_process_reply(rm, msg, len); > + break; > + case RM_RPC_TYPE_CONTINUATION: > + gunyah_rm_process_cont(rm, rm->active_rx_message, msg, > + len); > + break; > + default: > + dev_err(rm->dev, > + "Invalid message type (%lu) received\n", > + FIELD_GET(RM_RPC_TYPE_MASK, hdr->type)); > + return IRQ_HANDLED; > + } > + } while (ready); > + > + return IRQ_HANDLED; > +}