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 E3DE4C48BC4 for ; Tue, 20 Feb 2024 11:27:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6CCBA6B006E; Tue, 20 Feb 2024 06:27:58 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 67C266B0071; Tue, 20 Feb 2024 06:27:58 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 545A56B0072; Tue, 20 Feb 2024 06:27:58 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 45CC36B006E for ; Tue, 20 Feb 2024 06:27:58 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 15E3914063E for ; Tue, 20 Feb 2024 11:27:58 +0000 (UTC) X-FDA: 81811957836.09.5527964 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by imf30.hostedemail.com (Postfix) with ESMTP id 0C9C380017 for ; Tue, 20 Feb 2024 11:27:54 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf30.hostedemail.com: domain of jonathan.cameron@huawei.com designates 185.176.79.56 as permitted sender) smtp.mailfrom=jonathan.cameron@huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708428476; h=from:from:sender: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=P+F1x799cH6nf62OG0MNHzcHmmpOqy2EUB4m94y9ri0=; b=hpxJhtpJqZ7Gz1mO83wRzsdBjO0tJLdexwysUc5ILyYifEHDPPEZhvGoBG7We1OT5Vf7bI 4iw7mo509yyPyJuioesevb26hly7Nfng2X8Wrup947da4YruPvUWGhhTZM9lZHgCwHKHK3 Pop1NIse2RVxG5NByGDVZnFZ2W04YTo= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf30.hostedemail.com: domain of jonathan.cameron@huawei.com designates 185.176.79.56 as permitted sender) smtp.mailfrom=jonathan.cameron@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708428476; a=rsa-sha256; cv=none; b=G4tUX+LEekA+NXAlxOqR9BzV68HKA7wbiL/DwyZF1acxEsN7h4ynBWNRLfmnIJs7jete7q rVIxdEd5OeYg8NGlqtFMS157/hrZNRMObyGmCt/+cdpYd5PzKhQWeFYzhrM+qpvT70oTHv bHm3rHlZ1kYYFSdJtdW/4U2+aJeSfmw= Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4TfH8k4gnzz6D8wp; Tue, 20 Feb 2024 19:23:34 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id 6835A140F3F; Tue, 20 Feb 2024 19:27:51 +0800 (CST) Received: from localhost (10.202.227.76) by lhrpeml500005.china.huawei.com (7.191.163.240) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 20 Feb 2024 11:27:50 +0000 Date: Tue, 20 Feb 2024 11:27:49 +0000 From: Jonathan Cameron To: CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: Re: [RFC PATCH v6 03/12] cxl/mbox: Add SET_FEATURE mailbox command Message-ID: <20240220112749.00006578@Huawei.com> In-Reply-To: <20240215111455.1462-4-shiju.jose@huawei.com> References: <20240215111455.1462-1-shiju.jose@huawei.com> <20240215111455.1462-4-shiju.jose@huawei.com> Organization: Huawei Technologies Research and Development (UK) Ltd. X-Mailer: Claws Mail 4.1.0 (GTK 3.24.33; x86_64-w64-mingw32) MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.202.227.76] X-ClientProxiedBy: lhrpeml500005.china.huawei.com (7.191.163.240) To lhrpeml500005.china.huawei.com (7.191.163.240) X-Rspam-User: X-Stat-Signature: 3ac6rnufw89ehxzaa5t7qn3g4b39z5w4 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 0C9C380017 X-HE-Tag: 1708428474-865149 X-HE-Meta: U2FsdGVkX1+kPUYfCKXibIXWaJmF6ZCDz05CDqC5CUZ8JNwm9y4+IDrqx6XOtzgssLqG2HpmJ+hkpLPZP8KM12QTFTc91Dad81klzmwFlqUZg/FLSXU4od5orc4BOTkHUNkmHKtPlABg0cCqiLLPJsPDw+vwVX5iGlI8FN5EyEWiHMpt09Bnex8w6O1RNGQSPxXbxQ7btUc+2XHxkEZFuYEDsmuJzpifB3tBRifSCS22R9dNpDq3LQ0jtCv0x7fSty5LgXWOM466waPJmpeKeBcavtlpreMCjDbsnDmrwOAgng5Lvmz66FHMolc2FCFbgDtihwK8TVj9O2tSugf7ioHkXoPS55dDC0DqC3cTW7jWUCSc2jYETplQgxPysQwV+nc4+yHCWpbpkS461FlnNLjio/u3gDeLH1cExsPtj7TkZ5tyb3ZAKmY4MzVntGqUYT41RcHyBeiuUDzW9n9arjS+vKUdwdLAta+YDUbi8lAR0ilOpDhYjrEHaj+LZ2ayGA8azAYMHPNoPRbiTMqdPy7fykWUsrmh3rCwwTKg2JLsv08sH5ggGvgADcsbNzUYxQewxbGHxtyW/3vECuQVPKhbG+5LsjI9Zt83lQpmsgkAG5HspcXop/fZHbCeRiMvivdpxP8hERTYN2dICrNDL1jy1O/PuSuQ/1qEuj3jISrN2fplRppj6DT/P9AD94DWMpgw8AFeDrb5okizvaY6B1LW9CH7eQwac3NUkpE8IyUqzFHOOFckyi9qLqBbzFHHB5+uLyjbzZuYUi9aBW4xsC7Df5Pn/OsPBKlg1nWDeGYnDn1fLwq2Ptnez/e1zme8xaQRgHe4euw2pQj+YL+4xjx6RON+05Ig1/IdEo5Q+mZCKmIoUmPyqjf0dfq/jvpAHqE3Sh9moppuoncK1ZRJxCN54C829JgwqeR6uBzEgOygbUCjPS2EFtDO7Mc7+S21dwkfGHQk7wXukLK8XzS zhYUxS6/ tXRCJDpkZRpPi20CMYhIRGlWEaiTFDWtofIbLoBx7qxZDl7uqW3+yL2neKt7YukVLnxOnbsENXRq7v3NkDQpzls4D7iMu8SbbHlYimpyQTr2E88z9cVINZVo0LZWUBm2E/J4gHSAzze4i7+AOpARhMrQMOcN5/+GtGVrkkpwlt62B1m6YYoscRcdPgDlst56EeXV8NwTtcXgeFp5zh64s4KAGv1n5Mb7DyAYlQM8KHd/9krKYXGpyglxBgPgj3VibmG3YG7XzO7a3y2bv7rCTQ5osPf6lbKPWp2IQnT8s/Uiq0W0ZedDlMcjFXQ== 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: On Thu, 15 Feb 2024 19:14:45 +0800 wrote: > From: Shiju Jose > > Add support for SET_FEATURE mailbox command. > > CXL spec 3.1 section 8.2.9.6 describes optional device specific features. > CXL devices supports features with changeable attributes. > The settings of a feature can be optionally modified using Set Feature > command. Same thing as patch 2. We should be able to call this with a feature of any size and have it send multiple commands if necessary due to a small mailbox. We don't want higher layers to have to deal with complexity. We work around this for many other similar multipart transfers because they allow more direct control (e.g. get single item on poison list etc). Can't do that for features :( Get supported logs sublist will run into the same thing but the code isn't yet upstream (and the current implementation makes it a userspace problem). > > Signed-off-by: Shiju Jose > --- > drivers/cxl/core/mbox.c | 14 ++++++++++++++ > drivers/cxl/cxlmem.h | 27 +++++++++++++++++++++++++++ > 2 files changed, 41 insertions(+) > > diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c > index f43189b6859a..056576862b8a 100644 > --- a/drivers/cxl/core/mbox.c > +++ b/drivers/cxl/core/mbox.c > @@ -1335,6 +1335,20 @@ int cxl_get_feature(struct cxl_memdev_state *mds, > } > EXPORT_SYMBOL_NS_GPL(cxl_get_feature, CXL); > > +int cxl_set_feature(struct cxl_memdev_state *mds, void *feat_in, size_t size) Signature should be int cxl_set_feature(struct cxl_memdev_state *mds, uuid_t feat, void *feat_data, size_t feat_data_size); And the internal workings of this should deal with multipart transfers if needed (all current features are fairly small so the probably aren't). > +{ > + struct cxl_mbox_cmd mbox_cmd; > + > + mbox_cmd = (struct cxl_mbox_cmd) { > + .opcode = CXL_MBOX_OP_SET_FEATURE, > + .size_in = size, > + .payload_in = feat_in, > + }; > + > + return cxl_internal_send_cmd(mds, &mbox_cmd); > +} > +EXPORT_SYMBOL_NS_GPL(cxl_set_feature, CXL); > + > int cxl_mem_get_poison(struct cxl_memdev *cxlmd, u64 offset, u64 len, > struct cxl_region *cxlr) > { > diff --git a/drivers/cxl/cxlmem.h b/drivers/cxl/cxlmem.h > index eaecc3234cfd..2223ef3d3140 100644 > --- a/drivers/cxl/cxlmem.h > +++ b/drivers/cxl/cxlmem.h > @@ -531,6 +531,7 @@ enum cxl_opcode { > CXL_MBOX_OP_GET_LOG = 0x0401, > CXL_MBOX_OP_GET_SUPPORTED_FEATURES = 0x0500, > CXL_MBOX_OP_GET_FEATURE = 0x0501, > + CXL_MBOX_OP_SET_FEATURE = 0x0502, > CXL_MBOX_OP_IDENTIFY = 0x4000, > CXL_MBOX_OP_GET_PARTITION_INFO = 0x4100, > CXL_MBOX_OP_SET_PARTITION_INFO = 0x4101, > @@ -778,6 +779,31 @@ struct cxl_mbox_get_feat_in { > u8 selection; > } __packed; > > +/* Set Feature CXL 3.1 Spec 8.2.9.6.3 */ > +/* > + * Set Feature input payload > + * CXL rev 3.1 section 8.2.9.6.3 Table 8-101 > + */ > +/* Set Feature : Payload in flags */ > +#define CXL_SET_FEAT_FLAG_DATA_TRANSFER_MASK GENMASK(2, 0) > +enum cxl_set_feat_flag_data_transfer { > + CXL_SET_FEAT_FLAG_FULL_DATA_TRANSFER, > + CXL_SET_FEAT_FLAG_INITIATE_DATA_TRANSFER, > + CXL_SET_FEAT_FLAG_CONTINUE_DATA_TRANSFER, > + CXL_SET_FEAT_FLAG_FINISH_DATA_TRANSFER, > + CXL_SET_FEAT_FLAG_ABORT_DATA_TRANSFER, > + CXL_SET_FEAT_FLAG_DATA_TRANSFER_MAX > +}; > +#define CXL_SET_FEAT_FLAG_MOD_VALUE_SAVED_ACROSS_RESET BIT(3) > + > +struct cxl_mbox_set_feat_in { > + uuid_t uuid; > + __le32 flags; > + __le16 offset; > + u8 version; > + u8 rsvd[9]; > +} __packed; > + > /* Get Poison List CXL 3.0 Spec 8.2.9.8.4.1 */ > struct cxl_mbox_poison_in { > __le64 offset; > @@ -914,6 +940,7 @@ int cxl_get_supported_features(struct cxl_memdev_state *mds, > void *feats_out); > int cxl_get_feature(struct cxl_memdev_state *mds, > struct cxl_mbox_get_feat_in *pi, void *feat_out); > +int cxl_set_feature(struct cxl_memdev_state *mds, void *feat_in, size_t size); > int cxl_poison_state_init(struct cxl_memdev_state *mds); > int cxl_mem_get_poison(struct cxl_memdev *cxlmd, u64 offset, u64 len, > struct cxl_region *cxlr);