From patchwork Wed Jun 19 20:05:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: admiyo@os.amperecomputing.com X-Patchwork-Id: 13704489 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2136.outbound.protection.outlook.com [40.107.92.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EE6C3156F25; Wed, 19 Jun 2024 20:06:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.136 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718827567; cv=fail; b=n781yTqIUI3nj25ntuW4mNgGZr9tTrOm3oahZ5B7GkD7t/77OF0HYig50B/WBsmZOdeLgtDj48zY1v64GKSwjK8bL3E6NSkJdOQVE4a2VDwTC+ipjAyro6HrfU6gWbQ1ggghGBuE0h/KN5auJ/tytCFL3J36N9ZqUJ2QIPhzX3s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718827567; c=relaxed/simple; bh=Hmj5Ulvo+nqYAvqEuYtvQDDA0L73DYfZL1cGFTucQ2g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=ggd5HRFqGlYXL3BVFlIBubvFu66/8wurWiSt4KlfJcP4VH+lCRJPwQK9hozAxLbo7pvdCOMvq4Hy6PdzJwjy6Gg/Jls7rJhzxo9lYK7nTrAi4ZWK4kA21UGQeDSH8TMRwxVQYZm/0+gGTwuZb9qtQJTfstqCThO3fBv5csp5oJ8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=irXN7m2v; arc=fail smtp.client-ip=40.107.92.136 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="irXN7m2v" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RGHKoOrmYdPavcyZfbzI6O3TqAbsNE+8R3avPoNTE11UIFZQnWiqtFHGccalKQUyenEApYfNLQqSccx0vL5lkfVX0mgf0ccskjsN383mS+WztmA+8zPtxm37wd2kp6/fZeG4DlHGD9/DU3RRygAv339AaMsVlCbev/rJlHtbkdcp7d/t2X1sTvNLY8srYbMqPOgD0bH1N4phq+4KrqnwrCSLJa4J+cg0ogAk6nUeW0mvTuzXaPTl6rv8f1ACNAyUVFvzKNBm9cZH7z/bwqKhHkn+lkXlhbPNE62QPH1XbQcWLsR7yu1f+JWLSsQl2ZiKBD5LMLj5qJoCzBbQyJWWsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=VK5zzcguWsiHz4kYsH0I/UsY5WwKBjTtaszm+g/aWwY=; b=oGwvzr4PyPEqQAuTNLOcc0RV0qR1q3B+LeFAFcR1U+cHGTwK17YZPnBxLDDJ+dvzBmDxesQdURge8F6Anb/5R6uMwHtBW1rAgHl6aOx3rCTvcCeIZwejwg4CUOsnFz7j34HUJP9y/8RiUIsP2toPuP+eYXPS9xZ25uofGPk7ZJ54KWZpim8HWG5M/oaKglClt9pkn8xw7RrOfhNdfv0oJ6QEUOS1ymg2WAjM4friBffe53OATxOE/zzeScvk5JayXu6bSEO38/2mfwmL2IrszJ4kAw8flc06pbomfbFv3ZNrkPddDSb4Gxwz88hQyNo+o5ykLj4hHd3PZYsrziLVAw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VK5zzcguWsiHz4kYsH0I/UsY5WwKBjTtaszm+g/aWwY=; b=irXN7m2vzoyruD7PsSLhQsEraCQHRFX8mU+5HDWJ3DL6JiipsniVVg3sPaatXtAbpDMlgRUmxAFmpp2+2gvNjHiT/0rqfr/wl0KO+dNG2g+7rgNNBNATcU0FPrWOmSGc8/qIcBpeA9zfsVnFVI3KhUY6aYp1wP2jcOy6C4KO6m4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from SA0PR01MB6171.prod.exchangelabs.com (2603:10b6:806:e5::16) by BN0PR01MB7086.prod.exchangelabs.com (2603:10b6:408:14a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7698.19; Wed, 19 Jun 2024 20:06:02 +0000 Received: from SA0PR01MB6171.prod.exchangelabs.com ([fe80::b0e5:c494:81a3:5e1d]) by SA0PR01MB6171.prod.exchangelabs.com ([fe80::b0e5:c494:81a3:5e1d%7]) with mapi id 15.20.7698.017; Wed, 19 Jun 2024 20:06:02 +0000 From: admiyo@os.amperecomputing.com To: Sudeep Holla , Jassi Brar , "Rafael J. Wysocki" , Len Brown , Robert Moore Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/3] mctp pcc: Check before sending MCTP PCC response ACK Date: Wed, 19 Jun 2024 16:05:50 -0400 Message-Id: <20240619200552.119080-2-admiyo@os.amperecomputing.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240619200552.119080-1-admiyo@os.amperecomputing.com> References: <20240513173546.679061-1-admiyo@os.amperecomputing.com> <20240619200552.119080-1-admiyo@os.amperecomputing.com> X-ClientProxiedBy: SJ0PR05CA0108.namprd05.prod.outlook.com (2603:10b6:a03:334::23) To SA0PR01MB6171.prod.exchangelabs.com (2603:10b6:806:e5::16) Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA0PR01MB6171:EE_|BN0PR01MB7086:EE_ X-MS-Office365-Filtering-Correlation-Id: 83f71535-c779-405e-3244-08dc909b3e8e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230037|1800799021|52116011|376011|366013; X-Microsoft-Antispam-Message-Info: UWqL6FHenvJywJ9gjtRazwsV0UAvzd/cLtWnhYQwio+UZiOVZ01lzOUyWND/yfbikMIRmTPMMur7vmoZKSumUbrVZ6U6oRMsHYsWOSdxiHJ33Vq5fbu12SKs6WxtTvLPuteVs+Mc16Q3GYr8j+U99KV6FqxNMm2+8Hzk+gvu5yZvgRgjdKL/XH7lILvHwBxgsgWnMqjJadboSTivcrdaxegGUj5RN6MXLxQzDyUFa/SO++b0hVoMKLDt7CdxweMDJHztiGrACt3qP6sgmQjRvHMDVjYTNmYOpkWMNr9F5xxZtpIczuVVGLCt9qSgoeYsJVNPv8OEnSMlRSFsVrEX6PTDllWwbSaJY/SFb6W8XR+oAMAW108s3IE2v3O/R+XB82Frgi6bdaTVvYwwR4VUzWbChiuM3gPonuyPnbkNMvVuqewGRuLQF2RzJqVAE4+nhF7OPFlkpHVUiu623CzrI+TnOot5XKgnlvML2foeAmXVZFuQ8pO2+H0WK600S9h2NhwyWsDz8Wsk+MtZ1Z/KpevzBAvmO6vH4IzbgKKCLIGlqTqfse+buLArWz7VmKH4edketuUOPGBO3kMkx3yqdlNZFJufLihgXFFxFMxGpcaZiBqk1noJG14jcMfVFrObeSq51YDshYWt4KRkTzaBkXBl82D7La2jJ1SaIWNooUuqlhIwdEAnfDWJw+CsbSEaMqgai9rt19gHUJfrvL1ATf8SF/XPZixNjD3maxImCqz4WFTYVi5DP23CAh4q0abWW28pUqOT4Y04RrfJIW3mVAJ7LrDrQhjNQxuy2VrMidxt8FBYWhUXwAci0wiJNm7ntE547b9asAuB0fPiynDEsgC17S3AchisDf4Z+mN9LJoCcNud/gmnpUpRWkKftP/P8g2CNj6VfgAfdNRCIoN3unyune2bUeEgf+fTNBuOOQWyUrIWqe3DTzBF3YwkwgsI71fCX5CDuEpqcnPNmzCTjJQb76YF18aZM5gziayW8STi8Sp2rsIwp4uxAGaPs7SUgrJD++zvTZ6nUKVPfV0YSpnmbzVkX2Bm29Sa8ojBYOjmmvHJBkOOVddMGNS0ZwpyayDdaHKad1UpL0hwr17woXPanjKeGCUUyg+1/cpzI+83wcZwFsZlaxEcdDMo0DGHxXCHhqVuVaIBn9BIN5t6Xa8no9WFY6N5SaJr0klJxTifyCwBoF1eJ8VA0fKifIV0M9v/msqWCllZ/3FVkPgTfMu5VMY9/QbQcYzDeL2loeYWkyG+/5BBhpjDqzbQNJ8EDpCniYNIWEghtiuaTooydhHsOaFz9/+r3FSZ0z6IPlujBxZHE38eXaLyCSQoJI6M X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA0PR01MB6171.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230037)(1800799021)(52116011)(376011)(366013);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KK3tHtam3OO2LksrjsPL2R/717GcPcTI7fZYp+PJiJh7nF5a5JROpAc0zLJhP49PFxf872FOwFH9YK9A4pynHz3ZkCNpabeUytiR0GCXDIlw8HQQFKOfl1yyFAYOejZrABg+BkFJtEPwtLxaYOgvgCebgTMv/Sjr+rnTicOztH3DTFwzL4Czr0QdfV8EPj1eQXAOhBTyNBlk1lnoqhaesqqoC9QcWvD9XynJk8vkK4ptPTI9EshCslgzykTA/b1U9w89S3UY80qwcy7HKPYSX0iyB8enFpZwa47tS2GnaLZVlPj18lyIIIE8N7RfU5ZT1EWAhRqTt7JznhO3oU9PKv0w6mf0Cn7cSSN6h4whaP4k+jasajt88cTYLgSNcfHz0GEHdMCRRoyI/QnalvwHcbnns4ACvxAEFC76MSr/eGXPZ0tH/XVk9URMBA68Nhn9KKmTEoFm2hfQcmShdA4o2PcgR3lmgDN0fGLdJaK2sFwzgV68ZUHI3IdI/ML5ImsFM/3iRjLJFzjEGSExMRb+3qDjetiXKrWQxlMMbuPmTxQMoF/+r7z2PugSWA5zvXN90EDXAszWuJAbJSjeG0JA0tt1tp4SZtA070Q0OpRnjeYFbIF/728nQLNSvFAvK3yplOi4tMZfqQXVgJXT06VFRnv+jF03fbbE3zpdqdWirDuKX/T0DIw6cm00If31DSUrDzwDbnqcKfLMsUub5VMHUl+wi7+yCuLgyZ+0hFAzTCJqC3bAwqVMn3gbZzQCCHnOzHu4F1OqqWze/FZpLUoMQqcvV7D2IUOdP87las4Mc6MG5JAhfyyFPtyAmMqoNggwJwDwYIJC4Mg+lsIC+f5t0Rgd2W5u54W+59C+FKT6z4gsE+xI2s6sWe3yJFFL+OZMzd8eACtS7KWu+ujVoGjuZc322tyj+a5ljlZEE8AUtGHf2L4UotVR2IZfgqgGXOrOZhufGuHpLp1I5ES4izFHw19RU90DWCxlm3c0JswYF1zCx3RSjUKFQ89sgvvy6BpJKoQz+sj6RAuN1OnaNsTARhQtw2YNZE9ljluC9cHFxdqaYJAWWIE46IURfTYTHGs/r1yIcWni0klOuI4Ku/fKwD5eMSB+hAsvUKYwB8TKnJ6uD3ZWjwjVd1aER2q1ivig2jfzaX3Nzlzv8lC84BKEN7b+G52EJPMnsaDHYuO/wL2PqwCVmPlYWtnJ/Zs8f2w1mH9eoA3As75XBPKno+cmj6bNAZ/BLMEq+yMMRE1Ua0fMaMafviVb/Lc3qekMHybaDSwrClMi9ZSnGDRx56kkBTaRwmhIXRfqN3jar9YMkeLKJ7MlOUHfwtAxLPV6Z2UzZrDCOyhozftlSKtqsHfhLBOIDdbsJA8kTP5RL7t5SxoC4L+lzFQAv2aCLqeGHW3GadOQUj173oEC8V5TTTreUcqyR4qiTk7/DcaT+YJXHApz5tToI0USFCrF78ZAUScxq+U3fNtK/Iefaqm5KpCa7VCwjQJUCFtDBJUUWf00sZcBDMzaenU7cJJn8xPY2N1de3UdPvOb/JYagTLd+SKeRJ56oEjPqP1jtEvveVb+omnxWRyEUlc/SCWdcUbYasEapsRhGjFHkpZ0xeOLDD4aVuhQ8nLU5flk3J4ttHuNtN8vRniQJZepjn0FmjUjWXY6bKw4Zko6lqan1nqXFW6+2mrxfxP6tu/3U13f+uiYcnM= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 83f71535-c779-405e-3244-08dc909b3e8e X-MS-Exchange-CrossTenant-AuthSource: SA0PR01MB6171.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jun 2024 20:06:02.4247 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: sZ0WRLZguMoB/1MLnMHPgcabyKoxDx4OdW+VgKy5ixnu0aBY/9Jd/tVZnIxpi37h4jppMYnTDKQA4aY2Jme33P1ucOZJlKqAPGiEXqgKaBOX3uf+N3UaAAfxRYdaYhc2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR01MB7086 From: Adam Young Type 4 PCC channels have an option to send back a response to the platform when they are done processing the request. The flag to indicate whether or not to respond is inside the message body, and thus is not available to the pcc mailbox. Since only one message can be processed at once per channel, the value of this flag is checked during message processing and passed back via the channels global structure. Ideally, the mailbox callback function would return a value indicating whether the message requires an ACK, but that would be a change to the mailbox API. That would involve some change to all (about 12) of the mailbox based drivers, and the majority of them would not need to know about the ACK call. Signed-off-by: Adam Young --- drivers/mailbox/pcc.c | 5 ++++- include/acpi/pcc.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/mailbox/pcc.c b/drivers/mailbox/pcc.c index 94885e411085..774727b89693 100644 --- a/drivers/mailbox/pcc.c +++ b/drivers/mailbox/pcc.c @@ -280,6 +280,7 @@ static irqreturn_t pcc_mbox_irq(int irq, void *p) { struct pcc_chan_info *pchan; struct mbox_chan *chan = p; + struct pcc_mbox_chan *pmchan; u64 val; int ret; @@ -304,6 +305,8 @@ static irqreturn_t pcc_mbox_irq(int irq, void *p) if (pcc_chan_reg_read_modify_write(&pchan->plat_irq_ack)) return IRQ_NONE; + pmchan = &pchan->chan; + pmchan->ack_rx = true; //TODO default to False mbox_chan_received_data(chan, NULL); /* @@ -312,7 +315,7 @@ static irqreturn_t pcc_mbox_irq(int irq, void *p) * * The PCC master subspace channel clears chan_in_use to free channel. */ - if (pchan->type == ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE) + if ((pchan->type == ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE) && pmchan->ack_rx) pcc_send_data(chan, NULL); pchan->chan_in_use = false; diff --git a/include/acpi/pcc.h b/include/acpi/pcc.h index 9b373d172a77..297913378c2b 100644 --- a/include/acpi/pcc.h +++ b/include/acpi/pcc.h @@ -16,6 +16,7 @@ struct pcc_mbox_chan { u32 latency; u32 max_access_rate; u16 min_turnaround_time; + bool ack_rx; }; /* Generic Communications Channel Shared Memory Region */ From patchwork Wed Jun 19 20:05:51 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: admiyo@os.amperecomputing.com X-Patchwork-Id: 13704490 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2136.outbound.protection.outlook.com [40.107.92.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B4C2715990C; Wed, 19 Jun 2024 20:06:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.136 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718827569; cv=fail; b=CwUqkiZMTsIXmGHi7XugLxKlRGk2E17xJO4Kv/hZVbbSXcYosyUeyWhkzXVMaJ9NtEYhd5iR1ouoPhVJz0eAJaX9/kE0M+FeyU1DIi0QvdnSrXZXORzQIpNdjeLeTg7XkwkMEMfHpPAZRiAyokcexvtjuNcMwtpaUqN+UCd6XaY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718827569; c=relaxed/simple; bh=+6n7XMOZw6uKbqbz/+NGjek1tKGEGd7c1pOvVl8S+GE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Yhdcwz1r+gW2z7gCNpG7BXK627iuy89vS1TYp5mp9A5dfsvI1RlSFIKeyBnH5xyl8OdC6NGh6EJhCKMxd2MpZzWGx5FhwwJysf4UW+ps5dVknGrhEMdga9ujk6Ni8gc/RFXUWTu0t/PPzOp/dnl51sPweaWqnA9qPRpOxKKb2Y8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=drHIWSvW; arc=fail smtp.client-ip=40.107.92.136 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="drHIWSvW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mOtHIlgASuofjhwJXxAE/Kb2MptlHpD/u+DTlemGqVptQChIYO71heQbyCX1V8kTjzOhnYV6eR5mvcLFAuSnQvkHU0B7M2I+bejVERgA7H9mwsOeSnoRdaeqmKgAc2ZoimE3qvkV2h5SAxNpTruLRlIf0UymCeYWixpZDPxft0Ay+2SMK1PsOk4eH7AQhMyHbjBK1mNdrvUxuhTw5eRJbldpAw9thqtxp/AnNV2s8mzq8Ll9thGusUMw/EctD3MxDy/920UHZcl42spRy09NRYB4BMBsr2P+W6xyEsl3n+EM/DURZW2ZWQczjwMCyzOpkZp7w8SsJvVRLvqFiPVLBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Q29wiy5+HBvTfdWDl7GntSBgtThBvZwXKEfvGZCKocI=; b=XvBd5Hj/t285zpLke7+DS957v9V8t7szJY2HxUd8OItgg1SU3nYwZDOdg7L5FdpeLLg9Y5AkuIsz78QXHMi9ToECkiwHEQaq4947F9cP/ZRh7X52fwQY41S490MWRSWcnVPIbuQRJDRDDQFQnwpDNvtAbQngN3sZnvxRWjgQjR8u7Fw9pntCSTw0Z2GGS+IeGRZbwDJh15YBqX1cY4irgDBVFUXffxlF06uVMVH/c8WPeTWEh9NrFZqHfUVAtDOOdaei3zRAJSByxOy3+Ud0FzehSSyckgCnejwtuVnfQKs1/auRFDoue7LWso+bAQWbzfTpailnJtGx+CJcn/I+GA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Q29wiy5+HBvTfdWDl7GntSBgtThBvZwXKEfvGZCKocI=; b=drHIWSvWZZ3UG9lrejU0QhaVoGgbr+BFguSg4wXTSBiP/NC8tbd5iFsVf8OVM6ylBQl2PuGRSD5KAgdYSHyYrmV41uGu496mvzSX/gjegD2Jr60ckXD5Fxbw0ggDHcOTthhxVwYZoYYjt1cRrGiBPLS1AmrjGP1AL1alM6uZBY0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from SA0PR01MB6171.prod.exchangelabs.com (2603:10b6:806:e5::16) by BN0PR01MB7086.prod.exchangelabs.com (2603:10b6:408:14a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7698.19; Wed, 19 Jun 2024 20:06:05 +0000 Received: from SA0PR01MB6171.prod.exchangelabs.com ([fe80::b0e5:c494:81a3:5e1d]) by SA0PR01MB6171.prod.exchangelabs.com ([fe80::b0e5:c494:81a3:5e1d%7]) with mapi id 15.20.7698.017; Wed, 19 Jun 2024 20:06:05 +0000 From: admiyo@os.amperecomputing.com To: Robert Moore , "Rafael J. Wysocki" , Len Brown Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/3] mctp pcc: Allow PCC Data Type in MCTP resource. Date: Wed, 19 Jun 2024 16:05:51 -0400 Message-Id: <20240619200552.119080-3-admiyo@os.amperecomputing.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240619200552.119080-1-admiyo@os.amperecomputing.com> References: <20240513173546.679061-1-admiyo@os.amperecomputing.com> <20240619200552.119080-1-admiyo@os.amperecomputing.com> X-ClientProxiedBy: BYAPR11CA0100.namprd11.prod.outlook.com (2603:10b6:a03:f4::41) To SA0PR01MB6171.prod.exchangelabs.com (2603:10b6:806:e5::16) Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA0PR01MB6171:EE_|BN0PR01MB7086:EE_ X-MS-Office365-Filtering-Correlation-Id: b545b527-801b-4d51-b44d-08dc909b4045 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230037|1800799021|52116011|376011|366013; X-Microsoft-Antispam-Message-Info: i5mx28Gwc9tuufi3Txf0FqPhNxPgRSPTHFlt51xAdJrzQyUF2L0ysYtmyLoefjYVc+T6y91B7GfOaP/CSLFk5oYXJZLfHxM+jgTh/QeHoKGPsZt0SFlJX2vSeiT4QYkUEdSPOasCnEx9LJ9ATWyieqpGy6wx9X+f0x1wEFxJu87hJkovl5Cjv0U3F3P3No/60OP3Sffh59srVrvSDMw8yp3wZ0XHEc/JNhVwAyBSnP632sP+Ky7S6gFQ7O94TAhWw6b671JCUyTENKnm00OrHpEiwXToVvWHa32yU6TgogOehEU1gsDFecoWhFvK9zTuYf3eoQfx999DIhK+5+idRgUbEeLPeqjmmaRDyS6A+e83wYscQXEbkOFNLP3XszxvRZP5fXlH0ImD0UcrtfqCoLibtcDCOp9wfI0LBJOdk/XRcTDsPzYEc+yrxFiPin2FdKdDWex/2GtC+mNtHars9wSy/uAbtUv6e8uPJ/DcL3aSVgxLETvPWDfw9tg0zC1MpIVprJKKegxmSnZ0wdegQeL3h3boes6dxxHyKDESWzSmTbW8PS5jfkNIbV8LEiImRHlb4w2yzwGG0ylddCfMvyHeY9IBSQgzlLB1uW5nqi2DJ9J1H6/kXnbVgMscqJtYCIJbBpWjRV5i7ngApB3hDEjc2EExYOar98ni6vJm2Il92ddc/dsu3zs4TDk9DEpnonGpV1mfKoaHo8UUbBE8SINO7kC26CQ8KU5NCcrQ/QD4DkGPvU+fN1m/BgLHOyysAI++HrBy67901Cw9QYmgDjL+yc5PLypRSwd7qQAzUD/+ujM6An01mSeqIXyktRX2BLzKZEUk59qxu8yX+LeejwO/0gwzm4errkzywxLKG7UTSPmTlwgCdky56bk3sbWruOBeqNNfMKExSWaZyE9U/yf5BQH1xRykHFKzHK8hbN3q7SS4XU8dXNMe6QYdtUXNdM8eeXoEg9jautbZcnOV/e0kckz1DwPjlOOzJ9uVmFLAAMSOfckZCtI3Aa7uJjxh8RvGlEjNNDjou9V9/vA0Vplj+odt/MG4PkyMkhtelb2mNQ2hfW+Bi0CWppAbclOIEsU/BPAHuD4XFUQMSL+eIY2wICirulF3quJQCk+OkOW6JsNUq+aUKQxBAoReV9kpMXjtUTL3V2WqU9sHShSpwmcHuRaK+AQjmUsHHVu6NAKrOfnMVAcd5XBBX8gpBSvMCt5LDbiwcDDz7pj0AXT6inBRkr/y02lLYWfyDy+XL9SHwIYCbFS1CWtk8wleNzvrBPl6x376WZCcQC6Cp3/SHd9VFSbJ0avX3+pC0vmWFvI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA0PR01MB6171.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230037)(1800799021)(52116011)(376011)(366013);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: HR32AVVONK4NJST0Awb/gmryFgu8QOSNxEV1UFuTTFDR/Ih4Ntcg0CbJIFF3FiuhYKpD1UwXeeLiHUUzg1JSJPH9CT6YXY5uPQrHOXLczm/FH5oaVW36lHiqRRWgqTBbAC87no0ZR7JrERb8+Jij9uBEPEOtP8lWIV6Dtw28SjfLXU6TGGzAKZjdhA/s1spBJhkBrR7iAEtJAbxxgc93eSvVidtb0W8AIILBgPnORhVllD2pQa2cRdOrbUiSBNs+61IDecUjWCVQhjqzMHEs/hOuuyiWAUcgtr6lbwHX3xXuWpqI/faCuO85zpPQZH/hfl86vLuX/Fc7fkKTF5Ei/QeEpT1rpwhaXxqe9vpgewSsjT+b63lGTyef//DFa/ZZWff5BVp1/6Y9S6Wi17YQ18N5RW/9AMsR4WbmQ7G0pxUExKtA2/yPKBYO6UnNbSRuB5xu/DdkrGsietGVbqcFA02xcTJL8dVXEEO8H8ycCu0qBTwZ/08kCX4rRXhydSCzx6W+6TYFR48gN2sGVD01TCRZMqXrUXP5RP/ptinANIkRmO/I1n08ybY5/W74oOsIwM2TehX+A88IuBhiC7cwDUYrsYgMN0wgSenrWuDhAHeAICvawEdT+xj5jtkW0ao4NUwEz4DKTvE3daFUVeI6JWxsRbjxXeI7CbXvThCakLGvsMebek9oo7/6m+J/zj8qFUJJ99U4bJ2Z4fTfaH7mPZJeytgY37B+/ZC45jqoeW38OJ7mJRr7L7BksDzdeBKUEf0Z3uUkORsC5FMjT07TRDgwWm8ugVSd4YYcWw9kCtTX7se0rU6YXJvFgG8/WmD6si2Z/epndA0UIMdtlUmAhDx/sxjoGuF5NiEP00/kqzijqRNd6WAYUVt+Qv1l/jL5Jsy1pKxd0fS1RUs0NZa5tqMUH7tCcNsjbCU8MmiGCo5LtEUEpOvaIOM4Y9rg8nwz8yEOlGqGmWEdBKCcKSL4dz8Sc6fRDt+LzIZKdzQxbXcqEwaEB9t92CP0L7Avc67ZDUeT81c087EcD3o/I/NM3kXFLzdNc1/gmS/XHaluuZjDptuuiB4Aj8U5bO9e5rjtDpmCORcI4Rro4Wb7BmgCZd5bGVI5TvQzap/DwVs4TGV5mvdP3egckgAFTsC9C4dzBirWQkE/c5nF3QobHlx+glaH6Z16uLAst3eVYizmlaZi1Ta4uAeL1DWH4GPi1HkzDyFVJdgStzTw1uuCinym3E0meduNZZaOUscqTviFlwCWh/R5eBoNnCwiSqbTgbwJCVuslNbkjGgxvIVjuL0gl3KluU89RBYt2de59mEjg+6dqHtgdamkF3lFa8FN5aHn9FPEcEP0Hw16DDyMA/kycP0yFsVYgIhUv4mWX3dFjJUgtpJb8htCSz3BxWdFBnRh8A4KYFVsOUKNQgrvq4LB80oTjIZCjLhgvB+jIFPWZfXpX2KvRVOkgCSyWe3DMBwcKf4CLbdpRLyk2i1BxwWLz0CoYFBK05dyKmiBndAKE7Iw+hPqzfZxSWBZu7ozGENbazd9pDQMEkqUbrq+7dNguBW9pMscyHVPwwGeSz8XwalibKbdN4+xf1plX2Ll6FKwJNOd35aT6BLlteG7fRuNPynUAC81ehl5l492nM2lwd1WLVIjpK+K9r1OYgEVayxFjOjwPNTc/gz/mSh5ERAOgFLorerfmCgEq+c0zPlb7xo= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: b545b527-801b-4d51-b44d-08dc909b4045 X-MS-Exchange-CrossTenant-AuthSource: SA0PR01MB6171.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jun 2024 20:06:05.3083 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gvaUto4BWrZhT81AEbBftwf9xGqDqDjC9+c+Q89KJ/rrhxd+A9PESpeRkDVOKKL6BUyrB979StZoNdCduKyveej2u5jlFJCNXZv3kwdGHjgHD0yx5X0pgipWNt2IKOe6 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR01MB7086 From: Adam Young Note that this patch is for code that will be merged in via ACPICA changes. The corresponding patch in ACPCA has already merged. Thus, no changes can be made to this patch. Signed-off-by: Adam Young --- drivers/acpi/acpica/rsaddr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/acpi/acpica/rsaddr.c b/drivers/acpi/acpica/rsaddr.c index fff48001d7ef..7932c2a6ddde 100644 --- a/drivers/acpi/acpica/rsaddr.c +++ b/drivers/acpi/acpica/rsaddr.c @@ -282,7 +282,7 @@ acpi_rs_get_address_common(struct acpi_resource *resource, /* Validate the Resource Type */ - if ((address.resource_type > 2) && (address.resource_type < 0xC0)) { + if ((address.resource_type > 2) && (address.resource_type < 0xC0) && (address.resource_type != 0x0A)) { return (FALSE); } From patchwork Wed Jun 19 20:05:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: admiyo@os.amperecomputing.com X-Patchwork-Id: 13704491 X-Patchwork-Delegate: kuba@kernel.org Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2104.outbound.protection.outlook.com [40.107.92.104]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6A39415B0F5; Wed, 19 Jun 2024 20:06:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.104 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718827573; cv=fail; b=lAS7xAI2gmK2fZAj48e0RIseF6l1TUmnIaTUEPdSb1ecgsm8d8mhm6bmVI2gm05t2I4jiUVF0vj1Sf9AfD+rOFVLxAWk8h207Fy357wt6I6wYCl7DJ2h4B7ELPj9NkGnNX+yPZwoqTml/PRunL7IurKBIxOkVe1FABMZ1KUkzjc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718827573; c=relaxed/simple; bh=MD3aduFtM8YDfdbOzqMugdXPqpHKeB5bjNVWrdKs+P8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=AZtW4u7mpsch93W9+9fY1RgfuBTGsyeGj8+0lHle8h899NNlSHZfxuO14RMS7Z2YilQZmik0zWPHm5wW9aEoIImZF41hd8gonEo/sDRZWHAU93j9bf1KjCnZ0D+GNUBFQGRImkLndCygOwxkj5bU2ufpaLW/skuXHEhwsiSyC8s= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=HtrO1/Ls; arc=fail smtp.client-ip=40.107.92.104 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="HtrO1/Ls" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CA7YN14xVNfGEl+dZY/xMtW6xqIQvJDsLFbhqxsek15OY4xcIfRElxYGtKoWSNQy0Bm38Bp+MV9tcI6zUnxzoahwUulidFwzElkXTTSVtD8l3Ja6RyoclKeovy6t25ZfOvT7k6d1n/9Sw1sSPbX2EkxUHAc3XdQDoUCT0Ycf1C70cmRJtPYBKQpqibNrdP/olwHcl+BSrsK1HmRJGHXcthP1+rLAip2N23Yah91ORtQDJLADegccK6Kq3snWUom7YZRXGfOTweKci/RGF/+mJmhxWiihqtuzSDoa6/m4xFrd2JnYe2LVVeAulPCNJ4x46PqYNBFzID8iS+XTehZoUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=H8XzXi4rhxKpjCO2ThUnfcbdGwNj9rjEVQ67SP74qPk=; b=BjYmyFgVrwAY2j2OvMLPsopfk42sg5ZOptw9XYhWcNXpaklrvwyxhBPi3Q4zksKk2R4k+rvNgIZRz7b9RuNoUqerTpHaXybgWC7avG/S5kdQ7XoGULIHNzdbVm+ItXYQVo94i3Y7P0FcOYM28dGQxXmf6fw49bGOktpZNlVUD6zO1GQC1DEYQ0ocm48U5LsoLLnNejVRLoO1zrZFREHy+TG5ZHvkaNzcbuOCEhnnlyttR6lJn5ZDqGsGhbEErAyLsXMLAlulSQzyjDMP1zcaKIxDLZayYiiCWKuYGZTW9g9gEmHtYqBFu1WZDo9tx4U0Uc0M0yBaMma6JYx7VmzIyA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=H8XzXi4rhxKpjCO2ThUnfcbdGwNj9rjEVQ67SP74qPk=; b=HtrO1/LsHlE0RMT7WzJO0z5nFA2+y3RwtG3ZbBKIbuFcTzo/6DIhFUcmLsh8f572snuMHKdWYVLz2SSufcV9HIHOPreqVtEH3wQYa0b562pry7Khnub8jN9L3oq7tkJuNJxHfeb56+BD9HKLx7cV9O/YEEDIKka3twdpES1nRzE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from SA0PR01MB6171.prod.exchangelabs.com (2603:10b6:806:e5::16) by BN0PR01MB7086.prod.exchangelabs.com (2603:10b6:408:14a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7698.19; Wed, 19 Jun 2024 20:06:08 +0000 Received: from SA0PR01MB6171.prod.exchangelabs.com ([fe80::b0e5:c494:81a3:5e1d]) by SA0PR01MB6171.prod.exchangelabs.com ([fe80::b0e5:c494:81a3:5e1d%7]) with mapi id 15.20.7698.017; Wed, 19 Jun 2024 20:06:08 +0000 From: admiyo@os.amperecomputing.com To: Jeremy Kerr , Matt Johnston , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 3/3] mctp pcc: Implement MCTP over PCC Transport Date: Wed, 19 Jun 2024 16:05:52 -0400 Message-Id: <20240619200552.119080-4-admiyo@os.amperecomputing.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240619200552.119080-1-admiyo@os.amperecomputing.com> References: <20240513173546.679061-1-admiyo@os.amperecomputing.com> <20240619200552.119080-1-admiyo@os.amperecomputing.com> X-ClientProxiedBy: SJ2PR07CA0005.namprd07.prod.outlook.com (2603:10b6:a03:505::29) To SA0PR01MB6171.prod.exchangelabs.com (2603:10b6:806:e5::16) Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA0PR01MB6171:EE_|BN0PR01MB7086:EE_ X-MS-Office365-Filtering-Correlation-Id: 12795b17-8dc3-44bf-c9f1-08dc909b424d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230037|1800799021|52116011|376011|366013; X-Microsoft-Antispam-Message-Info: 43RmKor4UlpRqhTnlEoyegpmsStSUdABDfXHiIKL8GjCovMJShaFuQuaTdzX893NvWOUFDKtT5se3VQkCm1mFqWG2qcsvMiBgv/lddPqYYttKETOMrQCkkUMNEhpnPEVl9ZLnGJfNwo+NZP8W5iN8iZLzmyJ/jnD+nA/G5rW5eqFlUpv4QCGHPcGv5+9Q0nAUPP/rusoTInbISdsneJMRxerptsgQMIGmvt6gImGOE/+vXtbN2jBgqPwQajW+QArYShQnRmVUKwxYE8AkNPL8Lfx6LgSMkYo+U7nX4+SLIFoESuWZsryBhaDGVk1R9vzLXKs4PwMYL6vBiabaidw8eadWO6kqYL3/au//X0+84wExaMlT4Qkt/B6XKd52a55eWZVu+TRZohEue1C2EnxyLwJtY80Ev2xP4+dOlWam3/XK0ETuFUytfwvzMS9ilslzxe5bisZ80/Nr+6jTNWY5xY7d5+UD01/wN4LrFDxkxjw8qv3or5nfnvuC5HxDAQMEb0WEbVbzjfYXBQI0PqdEyUOvQnxEwJlnQ5MzpVSpUXoUO7g6TbH27bhArSUogZA+pwhZdPATZ8kuspg/oZPc7MxKa0LSaLyqPnQ+9AFHvR3+8TGSpCx7e62dWepg2b2f1MXFN+jPXkEQqrnbaFBdL4qzC6A/L5l4Z5IizxuQ8kd0aVlODLYeyO7ouOuUZNYRj7cmbUHRiu7izGqL5A5KDdS2XeH7LyzD1ODwnMrzDpwJjuTfY2SL5kP4d8s1HT8wjHVTUGYi8Y0Zwi+gCYNb25obHlDlqmTSwdeR1ziPiL29vJBVKGp9JI3570RJARKwP8iy6NrTP1v4RNMwbPSTLdQXPWYnjwCc6tAxUc88Kr3Me/CBfYPIsZ9Nb9EZT9aw+ca7QZWt35cAWPBMFNt6FdBMWrurjSKbyzKByIp9WfxriYm3aqYZxi2wTxqox3CJriFcl/HUyR95PeUn+k1/JePsQoK6UW5cHqxjaDuUirlRK8HxXRN8VNo8wNx2JC9PmEjudVVEBonCmTPGZ15Vx/WQJhZ7+YZnHe7mCBHg5r2pcyEjAifUxlY5TqnQBJthslWwS+uoiffHvDcSFpLN3ryUiVTpjtaVnAxEVIsbED0HL249tXaIdvvd6u43sDu3X7qm+WWIpry9dvnRPRZII6T+YHBb3f6UQHwhUGbR6llU3H7M3kwmLrxfZhcJJX4IpnKvm4o2u9bDsdaSXTx69QfpJTOYfoABUMML1opnjcOfl0eWe9oDZjq/Fo2o9JoQ3xHFok4sFRvG4NKxJH41C+sXRPzW/UFZtsnXXozuS0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA0PR01MB6171.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230037)(1800799021)(52116011)(376011)(366013);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: g6sUx2Pu6hbfovtN9TuX5/LOq7oocuQRO+I5Am+NluxRE/YwycOitNZv1+4+BKllLXg93ppl8plnvN8UdUEiIiaPsecMYNQWtO5UgqTuKBEeMDfyelQrQY/dRlQIUMuXWcg3XnOnmytlpvLzmdHTaHiyx9vHCzs+759faSBS7eGyKTpXkuGIYDh4F2pP52Vk+cf+edD0q4XqkuaKRy0NvMNwY9HnKgPVX7kwPvnykMIcoM0WI2zRve71EKm+EozaFQgcdy6S7Ezoojh7lvwjplwQ3D952i6n0rBASK4x8cIJCh9oykaryoG7rmHmKM/qytECPPnVFZvHsak0X/p+RSugHUCdCAuPBQ4FcuxruoESjpL4rMeLw53GHRc82/KAPR2/tpiCxmmSOxwdKCQpxgwP5YTqAilu+9C/CcCMrAQkWcKWpp/vWcxn2jsQKY7iFEsrW6s7ZCOtZHmAWUPtYC1TFpuFGQ+vIov0gOhdmYNm694bcdjqqs7GbEmsVsLzbjVJvaNn0LbSLKaMVVrRECUCCXof5yfXUS9DvTu7UICmntU+9MzrPZN+zBXLGCe1vJ2bRAzygs6A+hEZua1RupuME2zUYLQwfWMxgQy3fS754m2SD6Eao+7tvRQpAD9TlNzQ0oiJ+k/5SXgPwZgo3AXNW58h0WrkFFS72W+LYHkHqUODPWOKN0yL7ehdXXfhs0Na2u6QwcxV1iozKKMXwcupYL3wMKad8QMq/o0ZdecDA2+DV0cOg3MWMHeiCmSG4v3kig8NH1ZJ67Uo9/aS4C4DRodw4mmztEcpebcdpf+fgO1Lypw7jv6mYNXLzxhUaiFuJyW4vdogKHzAwbNPe5JTNMjBloFbMZUghi+cVexgE0emHJXylQDW0N+Br4Mer/ZTfcR7F2ARSVEZaUYUopEsCSMepwPu+8zzA3cMMnePYjOTVbL2bihGCVRJZpjtwOhKl66b3aq4reml4aN3ahT8d0onQHXZrEctSz572yx5J0zywnamQbDXCf6nXNooVYY2fYN3hbOsQm3o5uXR19GD4+ZknnUSEWLqfN+LsrfNB832CeS58vULJ1aCHu3LoLce7M0ChL2F7ysC6D7rt/p7xqH+1qoLwPdX8p9r51TMaHQ1Jteh4EUjEIVTtudnaj1rq6h+JE19WEvXP3WJZYEJNGK054CrdmS2XF66Z/G74NSlEJ4jUMjxXtHk3PoZfvR7PnMEIuwH1LJbxPoUSsP+/1noW+FmhZ+ZQgpOK/Tttq22w8WJnaURsXRc1SIjQ/irFmZHq/e5RSvesy2fNcCoBvS3vU2vZ09aocKndTzqoC9m9U7fx4+yDV7tlzjdZ+bWbggupPGpcTi/o0VOtw0BMJWmOD2btVqQfU6B1c1876zFPn+44rXi1rt3HqJ5LRp72/DloJVksmR4yaGJ5+XRrdni9i5BrW+no98GazyXfejpuvOBiZ7LBQhoLdeY90Dp6G80tNGW+noTS6GVLGeFpfslnMtIGXiq6Tm1EjV01Eq1HmI/eFwDaZI8BBXdYi+2aufY6hyLbqSi3i6Xy7FXi8mj5vma4IXcj8Fqa+W3l9l1B0l4XbFsS2byx/9osodG3lvnqJq4ORB9zAJYlnWqP2LOxHwaKXYdl/57y7qB8aa229wteogMrxUDPQ/+NPkiG3Rw3/yQDm3V5Znf1qlbjtan6lcFjTyDUlwqprQ= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 12795b17-8dc3-44bf-c9f1-08dc909b424d X-MS-Exchange-CrossTenant-AuthSource: SA0PR01MB6171.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jun 2024 20:06:08.8249 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: r/TVbrfS61PELIYuNjQGlU+M/JeheicXT13E1xL9EQR8Mqi/P8N71FiDfbN0Xan1Vwm28fGf4EujZWCvgP/sWOoKc7UJoYXRI/VtnYHDKtDjSEEXMv8rf8K9D59+ZYU8 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR01MB7086 X-Patchwork-Delegate: kuba@kernel.org From: Adam Young Implementation of DMTF DSP:0292 Management Control Transport Protocol(MCTP) over Platform Communication Channel(PCC) network driver. MCTP devices are specified by entries in DSDT/SDST and reference channels specified in the PCCT. Communication with other devices use the PCC based doorbell mechanism. Signed-off-by: Adam Young --- drivers/net/mctp/Kconfig | 13 ++ drivers/net/mctp/Makefile | 1 + drivers/net/mctp/mctp-pcc.c | 373 ++++++++++++++++++++++++++++++++++++ 3 files changed, 387 insertions(+) create mode 100644 drivers/net/mctp/mctp-pcc.c diff --git a/drivers/net/mctp/Kconfig b/drivers/net/mctp/Kconfig index ce9d2d2ccf3b..ff4effd8e99c 100644 --- a/drivers/net/mctp/Kconfig +++ b/drivers/net/mctp/Kconfig @@ -42,6 +42,19 @@ config MCTP_TRANSPORT_I3C A MCTP protocol network device is created for each I3C bus having a "mctp-controller" devicetree property. +config MCTP_TRANSPORT_PCC + tristate "MCTP PCC transport" + select ACPI + help + Provides a driver to access MCTP devices over PCC transport, + A MCTP protocol network device is created via ACPI for each + entry in the DST/SDST that matches the identifier. The Platform + commuinucation channels are selected from the corresponding + entries in the PCCT. + + Say y here if you need to connect to MCTP endpoints over PCC. To + compile as a module, use m; the module will be called mctp-pcc. + endmenu endif diff --git a/drivers/net/mctp/Makefile b/drivers/net/mctp/Makefile index e1cb99ced54a..492a9e47638f 100644 --- a/drivers/net/mctp/Makefile +++ b/drivers/net/mctp/Makefile @@ -1,3 +1,4 @@ +obj-$(CONFIG_MCTP_TRANSPORT_PCC) += mctp-pcc.o obj-$(CONFIG_MCTP_SERIAL) += mctp-serial.o obj-$(CONFIG_MCTP_TRANSPORT_I2C) += mctp-i2c.o obj-$(CONFIG_MCTP_TRANSPORT_I3C) += mctp-i3c.o diff --git a/drivers/net/mctp/mctp-pcc.c b/drivers/net/mctp/mctp-pcc.c new file mode 100644 index 000000000000..1ce9c58099cb --- /dev/null +++ b/drivers/net/mctp/mctp-pcc.c @@ -0,0 +1,373 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * mctp-pcc.c - Driver for MCTP over PCC. + * Copyright (c) 2024, Ampere Computing LLC + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#define SPDM_VERSION_OFFSET 1 +#define SPDM_REQ_RESP_OFFSET 2 +#define MCTP_PAYLOAD_LENGTH 256 +#define MCTP_CMD_LENGTH 4 +#define MCTP_PCC_VERSION 0x1 /* DSP0253 defines a single version: 1 */ +#define MCTP_SIGNATURE "MCTP" +#define SIGNATURE_LENGTH 4 +#define MCTP_HEADER_LENGTH 12 +#define MCTP_MIN_MTU 68 +#define PCC_MAGIC 0x50434300 +#define PCC_HEADER_FLAG_REQ_INT 0x1 +#define PCC_HEADER_FLAGS PCC_HEADER_FLAG_REQ_INT +#define PCC_DWORD_TYPE 0x0c +#define PCC_ACK_FLAG_MASK 0x1 + +struct mctp_pcc_hdr { + u32 signature; + u32 flags; + u32 length; + char mctp_signature[4]; +}; + +struct mctp_pcc_hw_addr { + u32 inbox_index; + u32 outbox_index; +}; + +/* The netdev structure. One of these per PCC adapter. */ +struct mctp_pcc_ndev { + struct list_head next; + /* spinlock to serialize access to pcc buffer and registers*/ + spinlock_t lock; + struct mctp_dev mdev; + struct acpi_device *acpi_device; + struct pcc_mbox_chan *in_chan; + struct pcc_mbox_chan *out_chan; + struct mbox_client outbox_client; + struct mbox_client inbox_client; + void __iomem *pcc_comm_inbox_addr; + void __iomem *pcc_comm_outbox_addr; + struct mctp_pcc_hw_addr hw_addr; +}; + +static struct list_head mctp_pcc_ndevs; + +static void mctp_pcc_client_rx_callback(struct mbox_client *c, void *buffer) +{ + struct mctp_pcc_ndev *mctp_pcc_dev; + struct mctp_pcc_hdr mctp_pcc_hdr; + struct mctp_skb_cb *cb; + struct sk_buff *skb; + void *skb_buf; + u32 data_len; + u32 flags; + + mctp_pcc_dev = container_of(c, struct mctp_pcc_ndev, inbox_client); + memcpy_fromio(&mctp_pcc_hdr, mctp_pcc_dev->pcc_comm_inbox_addr, + sizeof(struct mctp_pcc_hdr)); + data_len = mctp_pcc_hdr.length + MCTP_HEADER_LENGTH; + + if (data_len > mctp_pcc_dev->mdev.dev->max_mtu) { + mctp_pcc_dev->mdev.dev->stats.rx_dropped++; + return; + } + + skb = netdev_alloc_skb(mctp_pcc_dev->mdev.dev, data_len); + if (!skb) { + mctp_pcc_dev->mdev.dev->stats.rx_dropped++; + return; + } + mctp_pcc_dev->mdev.dev->stats.rx_packets++; + mctp_pcc_dev->mdev.dev->stats.rx_bytes += data_len; + skb->protocol = htons(ETH_P_MCTP); + skb_buf = skb_put(skb, data_len); + memcpy_fromio(skb_buf, mctp_pcc_dev->pcc_comm_inbox_addr, data_len); + skb_reset_mac_header(skb); + skb_pull(skb, sizeof(struct mctp_pcc_hdr)); + skb_reset_network_header(skb); + cb = __mctp_cb(skb); + cb->halen = 0; + netif_rx(skb); + + flags = mctp_pcc_hdr.flags; + mctp_pcc_dev->in_chan->ack_rx = (flags & PCC_ACK_FLAG_MASK) > 0; +} + +static netdev_tx_t mctp_pcc_tx(struct sk_buff *skb, struct net_device *ndev) +{ + struct mctp_pcc_hdr pcc_header; + struct mctp_pcc_ndev *mpnd; + void __iomem *buffer; + unsigned long flags; + int rc; + + ndev->stats.tx_bytes += skb->len; + ndev->stats.tx_packets++; + mpnd = netdev_priv(ndev); + + spin_lock_irqsave(&mpnd->lock, flags); + buffer = mpnd->pcc_comm_outbox_addr; + pcc_header.signature = PCC_MAGIC | mpnd->hw_addr.outbox_index; + pcc_header.flags = PCC_HEADER_FLAGS; + memcpy(pcc_header.mctp_signature, MCTP_SIGNATURE, SIGNATURE_LENGTH); + pcc_header.length = skb->len + SIGNATURE_LENGTH; + memcpy_toio(buffer, &pcc_header, sizeof(struct mctp_pcc_hdr)); + memcpy_toio(buffer + sizeof(struct mctp_pcc_hdr), skb->data, skb->len); + mpnd->out_chan->mchan->mbox->ops->send_data(mpnd->out_chan->mchan, + NULL); + spin_unlock_irqrestore(&mpnd->lock, flags); + + dev_consume_skb_any(skb); + return NETDEV_TX_OK; +} + +static void +mctp_pcc_net_stats(struct net_device *net_dev, + struct rtnl_link_stats64 *stats) +{ + struct mctp_pcc_ndev *mpnd; + + mpnd = (struct mctp_pcc_ndev *)netdev_priv(net_dev); + stats->rx_errors = 0; + stats->rx_packets = mpnd->mdev.dev->stats.rx_packets; + stats->tx_packets = mpnd->mdev.dev->stats.tx_packets; + stats->rx_dropped = 0; + stats->tx_bytes = mpnd->mdev.dev->stats.tx_bytes; + stats->rx_bytes = mpnd->mdev.dev->stats.rx_bytes; +} + +static const struct net_device_ops mctp_pcc_netdev_ops = { + .ndo_start_xmit = mctp_pcc_tx, + .ndo_get_stats64 = mctp_pcc_net_stats, +}; + +static void mctp_pcc_setup(struct net_device *ndev) +{ + ndev->type = ARPHRD_MCTP; + ndev->hard_header_len = 0; + ndev->addr_len = 0; + ndev->tx_queue_len = 0; + ndev->flags = IFF_NOARP; + ndev->netdev_ops = &mctp_pcc_netdev_ops; + ndev->needs_free_netdev = true; +} + +static int create_mctp_pcc_netdev(struct acpi_device *acpi_dev, + struct device *dev, int inbox_index, + int outbox_index) +{ + struct mctp_pcc_ndev *mctp_pcc_dev; + struct net_device *ndev; + int mctp_pcc_mtu; + char name[32]; + int rc; + + snprintf(name, sizeof(name), "mctpipcc%d", inbox_index); + ndev = alloc_netdev(sizeof(struct mctp_pcc_ndev), name, NET_NAME_ENUM, + mctp_pcc_setup); + if (!ndev) + return -ENOMEM; + mctp_pcc_dev = (struct mctp_pcc_ndev *)netdev_priv(ndev); + INIT_LIST_HEAD(&mctp_pcc_dev->next); + spin_lock_init(&mctp_pcc_dev->lock); + + mctp_pcc_dev->hw_addr.inbox_index = inbox_index; + mctp_pcc_dev->hw_addr.outbox_index = outbox_index; + mctp_pcc_dev->inbox_client.rx_callback = mctp_pcc_client_rx_callback; + mctp_pcc_dev->out_chan = + pcc_mbox_request_channel(&mctp_pcc_dev->outbox_client, + outbox_index); + if (IS_ERR(mctp_pcc_dev->out_chan)) { + rc = PTR_ERR(mctp_pcc_dev->out_chan); + goto free_netdev; + } + mctp_pcc_dev->in_chan = + pcc_mbox_request_channel(&mctp_pcc_dev->inbox_client, + inbox_index); + if (IS_ERR(mctp_pcc_dev->in_chan)) { + rc = PTR_ERR(mctp_pcc_dev->in_chan); + goto cleanup_out_channel; + } + mctp_pcc_dev->pcc_comm_inbox_addr = + devm_ioremap(dev, mctp_pcc_dev->in_chan->shmem_base_addr, + mctp_pcc_dev->in_chan->shmem_size); + if (!mctp_pcc_dev->pcc_comm_inbox_addr) { + rc = -EINVAL; + goto cleanup_in_channel; + } + mctp_pcc_dev->pcc_comm_outbox_addr = + devm_ioremap(dev, mctp_pcc_dev->out_chan->shmem_base_addr, + mctp_pcc_dev->out_chan->shmem_size); + if (!mctp_pcc_dev->pcc_comm_outbox_addr) { + rc = -EINVAL; + goto cleanup_in_channel; + } + mctp_pcc_dev->acpi_device = acpi_dev; + mctp_pcc_dev->inbox_client.dev = dev; + mctp_pcc_dev->outbox_client.dev = dev; + mctp_pcc_dev->mdev.dev = ndev; + acpi_dev->driver_data = mctp_pcc_dev; + + /* There is no clean way to pass the MTU + * to the callback function used for registration, + * so set the values ahead of time. + */ + mctp_pcc_mtu = mctp_pcc_dev->out_chan->shmem_size - + sizeof(struct mctp_pcc_hdr); + ndev->mtu = MCTP_MIN_MTU; + ndev->max_mtu = mctp_pcc_mtu; + ndev->min_mtu = MCTP_MIN_MTU; + + rc = register_netdev(ndev); + if (rc) + goto cleanup_in_channel; + list_add_tail(&mctp_pcc_dev->next, &mctp_pcc_ndevs); + return 0; + +cleanup_in_channel: + pcc_mbox_free_channel(mctp_pcc_dev->in_chan); +cleanup_out_channel: + pcc_mbox_free_channel(mctp_pcc_dev->out_chan); +free_netdev: + unregister_netdev(ndev); + free_netdev(ndev); + return rc; +} + +struct lookup_context { + int index; + u32 inbox_index; + u32 outbox_index; +}; + +static acpi_status lookup_pcct_indices(struct acpi_resource *ares, + void *context) +{ + struct acpi_resource_address32 *addr; + struct lookup_context *luc = context; + + switch (ares->type) { + case PCC_DWORD_TYPE: + break; + default: + return AE_OK; + } + + addr = ACPI_CAST_PTR(struct acpi_resource_address32, &ares->data); + switch (luc->index) { + case 0: + luc->outbox_index = addr[0].address.minimum; + break; + case 1: + luc->inbox_index = addr[0].address.minimum; + break; + } + luc->index++; + return AE_OK; +} + +static int mctp_pcc_driver_add(struct acpi_device *adev) +{ + int outbox_index; + int inbox_index; + acpi_handle dev_handle; + acpi_status status; + struct lookup_context context = {0, 0, 0}; + + dev_dbg(&adev->dev, "Adding mctp_pcc device for HID %s\n", + acpi_device_hid(adev)); + dev_handle = acpi_device_handle(adev); + status = acpi_walk_resources(dev_handle, "_CRS", lookup_pcct_indices, + &context); + if (!ACPI_SUCCESS(status)) { + dev_err(&adev->dev, "FAILURE to lookup PCC indexes from CRS"); + return -EINVAL; + } + inbox_index = context.inbox_index; + outbox_index = context.outbox_index; + return create_mctp_pcc_netdev(adev, &adev->dev, inbox_index, + outbox_index); +} + +/* pass in adev=NULL to remove all devices + */ +static void mctp_pcc_driver_remove(struct acpi_device *adev) +{ + struct mctp_pcc_ndev *mctp_pcc_dev = NULL; + struct list_head *ptr; + struct list_head *tmp; + + list_for_each_safe(ptr, tmp, &mctp_pcc_ndevs) { + struct net_device *ndev; + + mctp_pcc_dev = list_entry(ptr, struct mctp_pcc_ndev, next); + if (adev && mctp_pcc_dev->acpi_device != adev) + continue; + pcc_mbox_free_channel(mctp_pcc_dev->out_chan); + pcc_mbox_free_channel(mctp_pcc_dev->in_chan); + ndev = mctp_pcc_dev->mdev.dev; + if (ndev) + mctp_unregister_netdev(ndev); + list_del(ptr); + if (adev) + break; + } +} + +static const struct acpi_device_id mctp_pcc_device_ids[] = { + { "DMT0001", 0}, + { "", 0}, +}; + +static struct acpi_driver mctp_pcc_driver = { + .name = "mctp_pcc", + .class = "Unknown", + .ids = mctp_pcc_device_ids, + .ops = { + .add = mctp_pcc_driver_add, + .remove = mctp_pcc_driver_remove, + }, + .owner = THIS_MODULE, +}; + +static int __init mctp_pcc_mod_init(void) +{ + int rc; + + pr_debug("Initializing MCTP over PCC transport driver\n"); + INIT_LIST_HEAD(&mctp_pcc_ndevs); + rc = acpi_bus_register_driver(&mctp_pcc_driver); + if (rc < 0) + ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error registering driver\n")); + return rc; +} + +static __exit void mctp_pcc_mod_exit(void) +{ + pr_debug("Removing MCTP over PCC transport driver\n"); + mctp_pcc_driver_remove(NULL); + acpi_bus_unregister_driver(&mctp_pcc_driver); +} + +module_init(mctp_pcc_mod_init); +module_exit(mctp_pcc_mod_exit); + +MODULE_DEVICE_TABLE(acpi, mctp_pcc_device_ids); + +MODULE_DESCRIPTION("MCTP PCC device"); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Adam Young ");