From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 411091FC7C3 for ; Tue, 15 Oct 2024 16:48:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.174 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729010895; cv=none; b=RsEJLJG2KLQhpmddh45aOlJd81lyATaYubH0ND5tdqPqf7T3WKrudL/1tbpOTyU8G5cPF+ou3HXAdJWPKG6CPXsLDu3G8CTdVfY12k1opNT/DtVj3LpKoq3YeDP8a0TqotFYatQAsIeZmmAVdr4L1A89bUdL0sevu38ZxzrrPuM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729010895; c=relaxed/simple; bh=/Jc8uvLh1yHtx6Qpa7GDZefgH+t5Jvkba6SDmj7fFIk=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=H81345mtqmY1fQcWB+RNOyqy4tINdvaZpB3n2txRE3I802Y1NAbLB9p17MbyzYnfMV0iTxBLC2zfwMNdBFH6epaxEPh2F1/QB3o56aJMULglxy1jJDl7e8wiKBzuzvPZJTCIXtyfNckA0R2hdqMLH8V38bd8zQ8Aw0rw6rDGtdw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=m9/D5LIV; arc=none smtp.client-ip=209.85.214.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="m9/D5LIV" Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-20c767a9c50so45940935ad.1 for ; Tue, 15 Oct 2024 09:48:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1729010891; x=1729615691; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=ihI25Jo95pBvZkJLqX0Jc6fBbS14WZlY5IwIVqf7awk=; b=m9/D5LIV/YbeTllFHf4IBsSZJtfKa3l9yJvD4yYXnKm5hScPLG42JPN33B/l5Zdf0P w7ZB4DifSPnvQ16yY7VkIfBiJ0hWe0OHsg019kUoB8UjR5j9Q/BqmcY+5ZzDn2Kq6wrs Gz27JFYCCHVWnj78bRhuKuc4qpQ8wDinwVvtlOG+psL8Xw3K/Mh30zd0Z32AWRjsSLU2 E+UJQTBxA7mHtW6FoUoXM8jasKro9tLuYXENR19yI4fknOfr6H8IanKYQlVpQ5cB45mO advFbchgUwbzEDU6gwWUALW8s+0U7uDNoRVrB88d5ud3YQ0CdruvskxWezSIn8ERlfBh /A/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729010891; x=1729615691; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ihI25Jo95pBvZkJLqX0Jc6fBbS14WZlY5IwIVqf7awk=; b=rRn9oUI6jBYcnxJ7+ebhrQUiFjclcnSg8KWHn2swJ9iHpvufAGqO7/7/rA64oaR9Xg /kv6TT0Srz6St8AJd1MilizQMolCfbLpeLzYqpYNL3yzzBmeCA6Xck8v/E04kuX5iLLO Nj/Rb7kgisKWlP+eRCVMpra6i7qXthSKIoWL7oSz/4l9uy+hCpfktOuOm01HMfyWOSgS GWKmWe6x9xO+FkyBBB9QXcdEbVSoFiAjQ2nerwFtAWYNQfvKeghiIhkxhnZprSlbtxQl IUB5p9QH6KSe6Y8Hd1Fe26WsdoqMeI0ELQPrsbqf9k+WlRio8BsT2Fyp9wRevLQ3WX2A oVbQ== X-Forwarded-Encrypted: i=1; AJvYcCUOzC+QrwB6Vphd0WvKS5U88TfKZaurD0/0BBqNIVLg0TpoRXa+hp+i873f/AQO+3QJ1fsahm4WgStt35Q=@vger.kernel.org X-Gm-Message-State: AOJu0YzO7qDaOWVQbenfldbe93tYe5ymGC93n+6ZUyY6q6T6d3Z9N43p 75YBcA2LPDSj6PczMKxmkbcoUp4BtpaTLE2TIh0Of96cQg4isr4ODhPsl9lAIXKimlAB4yHs/B/ / X-Google-Smtp-Source: AGHT+IH7nqrjmNQoECCe3KKhqSZv+vi5izhEjiijtArvlkP/GK5rigzGBG9sRCIvmLdogJuWgQ2ccw== X-Received: by 2002:a17:902:d48b:b0:20b:7210:5859 with SMTP id d9443c01a7336-20cbb240b1bmr173955925ad.38.1729010891503; Tue, 15 Oct 2024 09:48:11 -0700 (PDT) Received: from p14s ([2604:3d09:148c:c800:3f26:e29e:2634:fca0]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-20d1805ca55sm14105185ad.261.2024.10.15.09.48.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Oct 2024 09:48:10 -0700 (PDT) Date: Tue, 15 Oct 2024 10:48:08 -0600 From: Mathieu Poirier To: Richard Weinberger Cc: linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, andersson@kernel.org, upstream+rproc@sigma-star.at, ohad@wizery.com, s-anna@ti.com, t-kristo@ti.com Subject: Re: [PATCH] rpmsg_ns: Work around TI non-standard message Message-ID: References: <20241011123922.23135-1-richard@nod.at> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241011123922.23135-1-richard@nod.at> Good morning Richard, On Fri, Oct 11, 2024 at 02:39:22PM +0200, Richard Weinberger wrote: > Texas Instruments ships a patch in their vendor kernels, > which adds a new NS message that includes a description field. > While TI is free to do whatever they want in their copy of the kernel, > it becomes a mess when people switch to a mainline kernel and want > to use their existing DSP programs with it. I suspect there is a lot more things to change when going from downstream to a mainline kernel. > > To make it easier to migrate to a mainline kernel, > let's make the kernel aware of their non-standard extension but > briefly ignore the description field. In my opinion the real fix here is to get TI to use the standard message announcement structure. The ->desc field doesn't seem to be that useful since it gets discarted. Thanks, Mathieu > > [0] https://patchwork.kernel.org/project/linux-remoteproc/patch/20190815231448.10100-1-s-anna@ti.com/ > [1] https://stash.phytec.com/projects/PUB/repos/linux-phytec-ti/commits/aeded1f439effc84aa9f4e341a6e92ce1844ab98#drivers/rpmsg/virtio_rpmsg_bus.c > > Cc: ohad@wizery.com > Cc: s-anna@ti.com > Cc: t-kristo@ti.com > Signed-off-by: Richard Weinberger > --- > FWIW, this is a forward port of a patch I'm using on v6.6. > > Thanks, > //richard > --- > drivers/rpmsg/rpmsg_ns.c | 30 ++++++++++++++++++++++-------- > include/linux/rpmsg/ns.h | 8 ++++++++ > 2 files changed, 30 insertions(+), 8 deletions(-) > > diff --git a/drivers/rpmsg/rpmsg_ns.c b/drivers/rpmsg/rpmsg_ns.c > index bde8c8d433e0a..2fb3721eb0141 100644 > --- a/drivers/rpmsg/rpmsg_ns.c > +++ b/drivers/rpmsg/rpmsg_ns.c > @@ -31,10 +31,11 @@ EXPORT_SYMBOL(rpmsg_ns_register_device); > static int rpmsg_ns_cb(struct rpmsg_device *rpdev, void *data, int len, > void *priv, u32 src) > { > - struct rpmsg_ns_msg *msg = data; > struct rpmsg_device *newch; > struct rpmsg_channel_info chinfo; > struct device *dev = rpdev->dev.parent; > + __rpmsg32 ns_addr, ns_flags; > + char *ns_name; > int ret; > > #if defined(CONFIG_DYNAMIC_DEBUG) > @@ -42,23 +43,36 @@ static int rpmsg_ns_cb(struct rpmsg_device *rpdev, void *data, int len, > data, len, true); > #endif > > - if (len != sizeof(*msg)) { > + if (len == sizeof(struct rpmsg_ns_msg)) { > + struct rpmsg_ns_msg *msg = data; > + > + ns_addr = msg->addr; > + ns_flags = msg->flags; > + ns_name = msg->name; > + } else if (len == sizeof(struct __rpmsg_ns_msg_ti)) { > + struct __rpmsg_ns_msg_ti *msg = data; > + > + ns_addr = msg->addr; > + ns_flags = msg->flags; > + ns_name = msg->name; > + dev_warn(dev, "non-standard ns msg found\n"); > + } else { > dev_err(dev, "malformed ns msg (%d)\n", len); > return -EINVAL; > } > > /* don't trust the remote processor for null terminating the name */ > - msg->name[RPMSG_NAME_SIZE - 1] = '\0'; > + ns_name[RPMSG_NAME_SIZE - 1] = '\0'; > > - strscpy_pad(chinfo.name, msg->name, sizeof(chinfo.name)); > + strscpy_pad(chinfo.name, ns_name, sizeof(chinfo.name)); > chinfo.src = RPMSG_ADDR_ANY; > - chinfo.dst = rpmsg32_to_cpu(rpdev, msg->addr); > + chinfo.dst = rpmsg32_to_cpu(rpdev, ns_addr); > > dev_info(dev, "%sing channel %s addr 0x%x\n", > - rpmsg32_to_cpu(rpdev, msg->flags) & RPMSG_NS_DESTROY ? > - "destroy" : "creat", msg->name, chinfo.dst); > + rpmsg32_to_cpu(rpdev, ns_flags) & RPMSG_NS_DESTROY ? > + "destroy" : "creat", ns_name, chinfo.dst); > > - if (rpmsg32_to_cpu(rpdev, msg->flags) & RPMSG_NS_DESTROY) { > + if (rpmsg32_to_cpu(rpdev, ns_flags) & RPMSG_NS_DESTROY) { > ret = rpmsg_release_channel(rpdev, &chinfo); > if (ret) > dev_err(dev, "rpmsg_destroy_channel failed: %d\n", ret); > diff --git a/include/linux/rpmsg/ns.h b/include/linux/rpmsg/ns.h > index a7804edd6d58f..60fca84ad4cea 100644 > --- a/include/linux/rpmsg/ns.h > +++ b/include/linux/rpmsg/ns.h > @@ -26,6 +26,14 @@ struct rpmsg_ns_msg { > __rpmsg32 flags; > } __packed; > > +/* Non-standard extended ns message by Texas Instruments */ > +struct __rpmsg_ns_msg_ti { > + char name[RPMSG_NAME_SIZE]; > + char desc[RPMSG_NAME_SIZE]; /* ignored */ > + u32 addr; > + u32 flags; > +} __packed; > + > /** > * enum rpmsg_ns_flags - dynamic name service announcement flags > * > -- > 2.35.3 >