From patchwork Fri Feb 7 14:44:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shiju Jose X-Patchwork-Id: 13965229 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 85664C02194 for ; Fri, 7 Feb 2025 14:50:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1FDDB280010; Fri, 7 Feb 2025 09:50:53 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1AE8B28000F; Fri, 7 Feb 2025 09:50:53 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 07694280010; Fri, 7 Feb 2025 09:50:52 -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 D85C728000F for ; Fri, 7 Feb 2025 09:50:52 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id CFDD6121C9C for ; Fri, 7 Feb 2025 14:49:08 +0000 (UTC) X-FDA: 83093431176.28.DBC6D48 Received: from relay.hostedemail.com (unirelay02 [10.200.18.65]) by imf28.hostedemail.com (Postfix) with ESMTP id B31CDC0004 for ; Fri, 7 Feb 2025 14:49:06 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; arc=pass ("hostedemail.com:s=arc-20220608:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738939746; 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=PJGctY0qgyhHsqPrfvMg81dRErlsOgnFSNyJwepiVlI=; b=Pl3PfvyGs9rbLjZm2YAxTSJ25DJszn/E+OdG4f8pzaa4AF1s2WRHZBVLyUBRFDWbaPyegf ePy6OBs+YJ3gsMsWJenuJ9xxLm3n+RsSkZybas2w214eSXlxmAhQKlq5AN5Q8MKAuD4bas Ry+CbIdO4dhiRebdfjqIQ5yKNuXT2w8= ARC-Authentication-Results: i=2; imf28.hostedemail.com; arc=pass ("hostedemail.com:s=arc-20220608:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1738939746; a=rsa-sha256; cv=pass; b=rtsDrq8QtUO1QkbQwsrIe4MTXex6EekUIl6dDvTpPteRIe121Z5HO/FD4lQ4cvQavH5ktT XMS51RKqZE+V5CGa7bZkjr8lJGQRulYENGwkTdTTXQC8myRv9LTB8ywgHxBlUs1MMRByYw rCyaSOVxQsjy6bobPXZV9HA7G/HpX6w= Received: from relay.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 83F5A121C9C for ; Fri, 7 Feb 2025 14:49:02 +0000 (UTC) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 82D4F121C21 for ; Fri, 7 Feb 2025 14:45:58 +0000 (UTC) X-FDA: 83093423196.15.29F64C9 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by imf27.hostedemail.com (Postfix) with ESMTP id 34BE340016 for ; Fri, 7 Feb 2025 14:45:54 +0000 (UTC) ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738939555; a=rsa-sha256; cv=none; b=kJZaedT+fC2Z5hJyqH3uJhJpIdFQLtWOP9Io8CjZw1OxJKC/P4lSrUcepSmdrlvh80+BfS wo5+t2DeV8wWyLVf+/wxTpIC7Lqe7xdVH2dFs0oQbHdJ/Lqc4gEoWLgo17RE1PoSfs8lWb RWmP6NDuk/FwB8ZQtT9abVkABaudh88= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf27.hostedemail.com: domain of shiju.jose@huawei.com designates 185.176.79.56 as permitted sender) smtp.mailfrom=shiju.jose@huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738939555; 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=PJGctY0qgyhHsqPrfvMg81dRErlsOgnFSNyJwepiVlI=; b=FFsyUoViVjU+reMkb9n+pO8CeKe/i00zew+gGjXOvr5kquizm2igmiFDmEvDA8xrCVKO0c AdjNt5RmStG1cQQk0DAoPBm27D4FwQyPv/lIZXWHWYSVKbtheQgYn52VyI4UdMix7wWHZv zRXHZTV11r9mm1KykdoOHgkz7sp8gdw= Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4YqGt36VmZz6L4wt; Fri, 7 Feb 2025 22:43:07 +0800 (CST) Received: from frapeml500007.china.huawei.com (unknown [7.182.85.172]) by mail.maildlp.com (Postfix) with ESMTPS id DD3441402A5; Fri, 7 Feb 2025 22:45:52 +0800 (CST) Received: from P_UKIT01-A7bmah.china.huawei.com (10.126.173.5) by frapeml500007.china.huawei.com (7.182.85.172) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Fri, 7 Feb 2025 15:45:50 +0100 From: To: , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v19 10/15] cxl/mbox: Add support for PERFORM_MAINTENANCE mailbox command Date: Fri, 7 Feb 2025 14:44:39 +0000 Message-ID: <20250207144445.1879-11-shiju.jose@huawei.com> X-Mailer: git-send-email 2.43.0.windows.1 In-Reply-To: <20250207144445.1879-1-shiju.jose@huawei.com> References: <20250207144445.1879-1-shiju.jose@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.126.173.5] X-ClientProxiedBy: lhrpeml500001.china.huawei.com (7.191.163.213) To frapeml500007.china.huawei.com (7.182.85.172) X-HE-Meta: U2FsdGVkX19BLNoI4kguwA7kMKPyTbVtvgVgmbWMJ8iKX9gbv7cEODFQMnN61nLXZhh94uhNU+ZZns/ipUysaBKggKP4ga22JUZiPb5lpehq32/7B84CrYkQV9n1OSELqv2t8x/1ieqFh4XiASCek0aoAcRFofGMadvS2CyQEjLcNHtmSBuscdDL9Vb2LFdcProzQKF1YIEw/5KsNPh8dUgZs3+veNzp0Aoy+Lz47c64h8NYcv/slaUAh8Bt4hyTS+pPfRpby83e0cl2yCkFo7IwgywNmyjhSr8ITdZZ2K2KWroMuNgRXyDVRISLi2t3NuzBsroZb2KwnAtqW27NCkenMWKbcX8bVosAl0BaCEiE6wW9UBpvqPSOwfElxPaxcUvb2NE9FXCJnFKDb0CpNiTqkvo83QgdirdcgNLuRMuILfBKhe7QYB4HG9J51N4StFVbdQqw1Cb3vkl/CkZxlrAmZXQZeXSM6RB29be/IEffsPUrnED20qLlE6hqk53weQ53S4fw79fsVUY7utA6jUahWvA7QQYB9o8x0h0MR/pkGdsAFr4qhA+yPK/UcCEY+nKPxMmg5V34qcP9EuWxezHJLUxxoqdXlb4k0in07dOFXGTv7IlyjxOFD5lEud7Oa91x1npWjvGVPgCHOYCiW9MLVPY1LRbIvDo8p40M8eCPsws5v9EQVDgxwBF3ja4XISJ6lzsskLxdZClcgG2+5M2uQogQ/0MrheRCxituBzgWksNvYxVhj2LSKfnI/4r6JVlZhcOCHoj2FgktLCgmKpEH10jwu5ZRbmajds45gX7cfsg3cHXaW4vvDXHHwml+G89Oc0/hZhhVTpVadFOpXQ5IbKr1c61LMAZ0c8MMogFlzxCP908V2luqt/vKz1dgPefWSM7EDzz9um+BgxMh3sq1/sY2hS7Bay7kyEbDibzpVqwpAhXWhqZ0mLPfuXLv8MsFOkElEV82Zjl3jlV WumUwLRX nLq5bepH/C6JeGCZ9Cf17tzynC4c1T76iOhkWCGfQubsXW8N4QnxwWKy2AuEKSPNDT0M5bjdLRA/jk3c1Q8aKxbQoWJlg4U1ac1y/nQ/rbZxkSYx08j7aMehGCr3/VYaXEFvudcrj5SbdRd1WV2eBe2580qXKhOn2IFBpVWAkjNl17F7E6C3hgR9sCUYepN9OeZmS5JrlXAYh39k8XUA26KLsshuUkz6dcopv36yT0z3LZ6CSOo2uKJfVQ49ScXK6qhyfUtpxMChPZ1iS5slor0QJCSQ5CVxKkYw7 X-Rspam-User: X-Stat-Signature: s5mmu4jwn1jh5ie47g9nfamanyw1fw3h X-Rspamd-Server: rspam05 X-HE-Tag-Orig: 1738939554-826046 X-Rspamd-Queue-Id: B31CDC0004 X-HE-Tag: 1738939746-879653 X-HE-Meta: U2FsdGVkX1/n0J0zATNqlOKyT4P1KDGjRr98pKv7wjC9WPp339300jkTDVZS70QdT7m8JxGePRHaZOJhw8pJPFoqlGsLRXgihCvBtGUkH+EMuZVSbPe4ZY3Pf95cLnxS/2YsjIsjcT4F0SUUrTicr67o/glp5X2YoZBDLLBdgcBy7r4eQ/cMJ+WL7o7YiGnKxB9bu7h1BtjWNOGn4p2Bg8UcRWdCMod3O7JTQw79sX43JdNnScL2d33PlXu1ZtHHN8+ZuOUapA/u7+PJJHigEMzRCzIhcxDWdZuPfJ2Wixf4SN++8rwcXsUnlyF/C7GN3GMqPPcGFduVMavJilptBZl7WhvXit38Aw8ohPZgDB7iENn2DWLF4c2UVdYjyS3vkIuNLeorAZhvCNcgS1UY4fFcO46DbXf63V4R90qIke7Jtsz+76xlQi6W+0bMiBxZDELnvCAeRIQIPm1758ZjmskjZy5165kS0gZGCrhbqfDerlABO8iIoXwSFKopjuVDRoi20Pz6kskF+TuZ/wMgMd0+mqKUMcaiXfyopDjlCKX1A9Y8QdLmquGwEaAoQuWXGQ1M8g9U7ph3r6uAghBNKhSeCBI5GnWhZX6/yMa/qoaWKvIbstkj0XGkmi2VKDZLT3qswYWQOU7Upw2f0TdMFaKZ7NwncQxVS5F2+2ZUY6/U7hzPjgiVclPk41R/zdxsirvJTS4Hzo9+mcpMTk65PaIp6HUTej017UO9M65DGiLEjP+OphyrLDiNvNRQ9a34thrzkVIytmYs5qNnBAYJb768fN6L2dWo1tUhidiTl1jMNo8QBlwMzkSk0JAji3+HPDd9MuKNSthwivoTgGb4MAARS+LAUcX7elsgSdkJubNrVW6Rk0IJHVICH2Hntx8PFt9NGQuwr9ZKvUBURFGRQU2wvFypn+P1no0TPrIyc5yj4KSdT3oZ51MaEIRKQPAQP/DfWaSNH7R2DEehmiU EjTarqwO P58IMfARHfPRQl7cR8YE3KqicnVY5ym8VWr4ndXAZ12I1em7A/JHUU3aNEbgLHtYtlh7vzwASOd3spBqEuL4r5zZZpEid7wJe3DWitpWP3LfW0N06sBceW/mhFdqzIH3Snix2yGil5mfS/MJc+Bzzl8nvLTlLvvKsGuiW0kewDp7/VlEZj2MrCU26hel5u1BfVaJSbcJf6HDlSYrYQUor6X/ewFV6jPsU5qGXzD1Fn0pIkX08b6C6DtNX0CgijEaU36v8gI/QTyaO9t1Q1tEMCMLKfUkk7ZTTqOO8yeCPetBMmJw= 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: From: Shiju Jose Add support for PERFORM_MAINTENANCE mailbox command. CXL spec 3.1 section 8.2.9.7.1 describes the Perform Maintenance command. This command requests the device to execute the maintenance operation specified by the maintenance operation class and the maintenance operation subclass. Reviewed-by: Jonathan Cameron Reviewed-by: Dave Jiang Signed-off-by: Shiju Jose --- drivers/cxl/core/mbox.c | 34 ++++++++++++++++++++++++++++++++++ drivers/cxl/cxlmem.h | 17 +++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c index d38a5fc1384f..93ef94c57092 100644 --- a/drivers/cxl/core/mbox.c +++ b/drivers/cxl/core/mbox.c @@ -829,6 +829,40 @@ static const uuid_t log_uuid[] = { [VENDOR_DEBUG_UUID] = DEFINE_CXL_VENDOR_DEBUG_UUID, }; +int cxl_do_maintenance(struct cxl_mailbox *cxl_mbox, + u8 class, u8 subclass, + void *data_in, size_t data_in_size) +{ + struct cxl_memdev_maintenance_pi { + struct cxl_mbox_do_maintenance_hdr hdr; + u8 data[]; + } __packed; + struct cxl_mbox_cmd mbox_cmd; + size_t hdr_size; + + struct cxl_memdev_maintenance_pi *pi __free(kfree) = + kmalloc(cxl_mbox->payload_size, GFP_KERNEL); + pi->hdr.op_class = class; + pi->hdr.op_subclass = subclass; + hdr_size = sizeof(pi->hdr); + /* + * Check minimum mbox payload size is available for + * the maintenance data transfer. + */ + if (hdr_size + data_in_size > cxl_mbox->payload_size) + return -ENOMEM; + + memcpy(pi->data, data_in, data_in_size); + mbox_cmd = (struct cxl_mbox_cmd) { + .opcode = CXL_MBOX_OP_DO_MAINTENANCE, + .size_in = hdr_size + data_in_size, + .payload_in = pi, + }; + + return cxl_internal_send_cmd(cxl_mbox, &mbox_cmd); +} +EXPORT_SYMBOL_NS_GPL(cxl_do_maintenance, "CXL"); + /** * cxl_enumerate_cmds() - Enumerate commands for a device. * @mds: The driver data for the operation diff --git a/drivers/cxl/cxlmem.h b/drivers/cxl/cxlmem.h index cad0d41b98d0..19c6ab45860c 100644 --- a/drivers/cxl/cxlmem.h +++ b/drivers/cxl/cxlmem.h @@ -495,6 +495,7 @@ enum cxl_opcode { CXL_MBOX_OP_GET_SUPPORTED_FEATURES = 0x0500, CXL_MBOX_OP_GET_FEATURE = 0x0501, CXL_MBOX_OP_SET_FEATURE = 0x0502, + CXL_MBOX_OP_DO_MAINTENANCE = 0x0600, CXL_MBOX_OP_IDENTIFY = 0x4000, CXL_MBOX_OP_GET_PARTITION_INFO = 0x4100, CXL_MBOX_OP_SET_PARTITION_INFO = 0x4101, @@ -778,6 +779,19 @@ enum { CXL_PMEM_SEC_PASS_USER, }; +/* + * Perform Maintenance CXL 3.1 Spec 8.2.9.7.1 + */ + +/* + * Perform Maintenance input payload + * CXL rev 3.1 section 8.2.9.7.1 Table 8-102 + */ +struct cxl_mbox_do_maintenance_hdr { + u8 op_class; + u8 op_subclass; +} __packed; + int cxl_internal_send_cmd(struct cxl_mailbox *cxl_mbox, struct cxl_mbox_cmd *cmd); int cxl_dev_state_identify(struct cxl_memdev_state *mds); @@ -847,4 +861,7 @@ struct cxl_hdm { struct seq_file; struct dentry *cxl_debugfs_create_dir(const char *dir); void cxl_dpa_debug(struct seq_file *file, struct cxl_dev_state *cxlds); +int cxl_do_maintenance(struct cxl_mailbox *cxl_mbox, + u8 class, u8 subclass, + void *data_in, size_t data_in_size); #endif /* __CXL_MEM_H__ */