Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp3919209pxv; Mon, 28 Jun 2021 16:39:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyz2QONT78DiIgi5tVNm7qpAW8+dq0bvWpNH4AvY588MeqsPw11WSF9fQ2I6FBh2QbD5bwe X-Received: by 2002:a92:290e:: with SMTP id l14mr10228693ilg.73.1624923594894; Mon, 28 Jun 2021 16:39:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624923594; cv=none; d=google.com; s=arc-20160816; b=VUgLza5ZtuoJSqXitzNOPb1uMBD8EIMzcBEbOY68q3tnAL6KGAZbFcdQu5lOmzRpPn W10GMhwpc1vvAdknLl6iEFmytkkXEORdfrFYPS3iE7HI/4IuhClJdYNbGiihSEDD9sz5 h1ZSB/JQwjYzzI2JQNiOspnckR8qxPx1es/mD215b1AlASER1wEWgpnoDA1WUEe7YKNg yTin99Dhn2jdHQwXJhRt+2gZGtt3XL3p0uSC9idBmYSqXkPn340pJspA1HCPRbMQ4rUf eKeNcrjhQp1PQ9lXeoDjBV/nF3lLi8p75TmpAavR1WdINWOkDcxv8nCZ1+KyUr6FV7YO Gajg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=HvSVNHh4ZU+6IGX5BagxMVGJPKgrleJWZDqevVIyXwc=; b=NTPGauSZI4lzVmj1jO/tLcO3xZquK2k49749cgkoj90+W0EHOCbuDplHmAMAl9mGGC 0zJHo9AWD3ZGHKy5ZJ8whadSV/aUdOtM5GSjML+sBBxkjPZeePuyC9mCyAGYuLUq76Eg 3S22RXEswhqMCa9mJPnEbH8tLHeem9iA178Z1MEwiVGJcVRiyEPrjaPobDOvBegT03ak t1Dg+pcYvH9WwzGAWvFWjBrWvU1PrWLqIP8RasdwHLhYdn/PZaRdp0Io9wAXPn/mUfdO hSuP0QLeweGMuFTyrlpVNllY5Nql1V6iV1ibudthzfP3KCVJwA8K0H5RyVsGlYEdKP9h vJ8g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f13si19717112ila.126.2021.06.28.16.39.43; Mon, 28 Jun 2021 16:39:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232122AbhF1RDh (ORCPT + 99 others); Mon, 28 Jun 2021 13:03:37 -0400 Received: from foss.arm.com ([217.140.110.172]:35746 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231892AbhF1RDh (ORCPT ); Mon, 28 Jun 2021 13:03:37 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7A319106F; Mon, 28 Jun 2021 10:01:11 -0700 (PDT) Received: from e120937-lin.home (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4BBA03F718; Mon, 28 Jun 2021 10:01:08 -0700 (PDT) From: Cristian Marussi To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: sudeep.holla@arm.com, cristian.marussi@arm.com Subject: [PATCH] firmware: arm_scmi: Avoid padding in sensor message structure Date: Mon, 28 Jun 2021 18:00:42 +0100 Message-Id: <20210628170042.34105-1-cristian.marussi@arm.com> X-Mailer: git-send-email 2.17.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Structure scmi_resp_sensor_reading_complete is meant to represent an SCMI asynchronous reading complete message: representing the readings field with a 64bit type forces padding and breaks reads in scmi_sensor_reading_get. Split it in two adjacent 32bit readings_low/high subfields to avoid padding or the need to make it packed. Fixes: e2083d3673916 ("firmware: arm_scmi: Add SCMI v3.0 sensors timestamped reads") Signed-off-by: Cristian Marussi --- drivers/firmware/arm_scmi/sensors.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/arm_scmi/sensors.c b/drivers/firmware/arm_scmi/sensors.c index 2c88aa221559..308471586381 100644 --- a/drivers/firmware/arm_scmi/sensors.c +++ b/drivers/firmware/arm_scmi/sensors.c @@ -166,7 +166,8 @@ struct scmi_msg_sensor_reading_get { struct scmi_resp_sensor_reading_complete { __le32 id; - __le64 readings; + __le32 readings_low; + __le32 readings_high; }; struct scmi_sensor_reading_resp { @@ -717,7 +718,8 @@ static int scmi_sensor_reading_get(const struct scmi_protocol_handle *ph, resp = t->rx.buf; if (le32_to_cpu(resp->id) == sensor_id) - *value = get_unaligned_le64(&resp->readings); + *value = + get_unaligned_le64(&resp->readings_low); else ret = -EPROTO; } -- 2.17.1