From patchwork Fri Aug 28 20:31:48 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Whitfield X-Patchwork-Id: 2294264 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4hWqnH5tpNz1xpT for ; Sat, 29 Aug 2026 06:32:18 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1x03FB-0002K2-AX; Fri, 28 Aug 2026 20:32:09 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1x03F7-0002Ii-19 for kernel-team@lists.ubuntu.com; Fri, 28 Aug 2026 20:32:05 +0000 Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id E7CF03F2DD for ; Fri, 28 Aug 2026 20:32:04 +0000 (UTC) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-93917f4ccb4so92973685a.0 for ; Fri, 28 Aug 2026 13:32:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787949124; x=1788553924; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=c+TTdhLH16O1H9XxfWRYAOT05KNsIAvZ8miu2H4j1a0=; b=MWL+Yqwn77kBCDfisPgjs0RyPzirCn2egzenvtOyRKYKCxkOsy3Ywa6Q7zS5eCZ/j5 hYIIETHljJ5EWn9Yf7pc0Lfy4ItBzpoKVq3wuslIFFF93/owgwcXRDWHNlPSAHvwnJlF 7jD3zvS/fIMqJgOtVZt89zm7N1/cvpUMdwPrTxD6xB/gwk/ZziEr6HtrTEPD1RoBMzkr 9R1cWuNAjjr4o2Pka9ol79HlLSIPlvgRRTIysNHKO/AaqybKeZ/Vhi+12isugK5vds+m qYlEG2+uDDHTRV+u6aNZ4Ig63L7hFPC2xdS3e9qFS5HSRNP7nyTAgzu1jzFm3OFJu3ql MzRg== X-Gm-Message-State: AFuF++kvc5wfLSdsBV9t7W3vlDrAYqWbnpAyXKm7uebkL/8lI4Es3Lft 6ftaQX68ZEUOQnhIgowNDyGKr4mO9UR3KSb6pw3FcJ925bTFn5H4UKVjiRcvGP0+IaAiFXCSSnn Du1rcDatAxAg9m2NvEgXU2g4yYCMaBNQHJdE61G+QZQzHTgN4cvxTdNAYEEWjxBkJ4XeF7a1Mkf AdCTxn4feDbwENfg== X-Gm-Gg: AR+sD12FcXcRGQjeu5FeLxE4x+nTKuKjyGOIPh2sa2pfESjyfcF+QkjwLztFPxfuD6b D3GRrIXkIxc5+XMOatXiDoXgm17aIVh79i6tjwir30w0j+2iNeqxrE9bbbeXvNBr/+VixI1tmNs uaQUTyXWIhYTPo9yMTQkUwZ3CcMIvZ9xCxiF3vhebqXfU0porxK1tTpcSL1Rpyin4lL1I6wqdJj JuenKZEs2kD1j74JdvzS4HsDU7r2ZT88ssHKTHVAh3MfBjoJWOERcpL7+2rhZxzTXrb77kEUPao +t6RTQs289E+22sJ9ymHubfRSgBqtCEurNjg+AWy1yTAZQGyxfu3ZI7PjLZJtp8PqQJCmkrJqxp ID0nJIQ== X-Received: by 2002:a05:620a:240b:10b0:937:260a:bcd7 with SMTP id af79cd13be357-939137b8c57mr896661185a.8.1787949123824; Fri, 28 Aug 2026 13:32:03 -0700 (PDT) X-Received: by 2002:a05:620a:240b:10b0:937:260a:bcd7 with SMTP id af79cd13be357-939137b8c57mr896654185a.8.1787949123382; Fri, 28 Aug 2026 13:32:03 -0700 (PDT) Received: from localhost ([208.89.33.89]) by smtp.gmail.com with ESMTPSA id af79cd13be357-939173a735asm219608885a.28.2026.08.28.13.32.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Aug 2026 13:32:02 -0700 (PDT) To: kernel-team@lists.ubuntu.com Subject: [SRU][R:linux-gcp][PATCH 2/9] RDMA/irdma: Add support for GEN4 hardware Date: Fri, 28 Aug 2026 16:31:48 -0400 Message-ID: <20260828203155.75778-3-ian.whitfield@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260828203155.75778-1-ian.whitfield@canonical.com> References: <20260828203155.75778-1-ian.whitfield@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Ian Whitfield via kernel-team From: Ian Whitfield Reply-To: Ian Whitfield Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Jacob Moroni BugLink: https://bugs.launchpad.net/bugs/2165062 GEN4 hardware is similar to GEN3 and requires only a few special cases. Signed-off-by: Jacob Moroni Signed-off-by: Tatyana Nikolova Signed-off-by: Leon Romanovsky (cherry picked from commit f3cf74933c9ca62a46e51c69412c93c9df816b4b) Signed-off-by: Ian Whitfield --- drivers/infiniband/hw/irdma/ctrl.c | 1 + drivers/infiniband/hw/irdma/hw.c | 14 ++++++++++---- drivers/infiniband/hw/irdma/ig3rdma_hw.c | 1 - drivers/infiniband/hw/irdma/irdma.h | 1 + 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/infiniband/hw/irdma/ctrl.c b/drivers/infiniband/hw/irdma/ctrl.c index 13820f1a48a40..335ae3c82e173 100644 --- a/drivers/infiniband/hw/irdma/ctrl.c +++ b/drivers/infiniband/hw/irdma/ctrl.c @@ -6465,6 +6465,7 @@ static inline void irdma_sc_init_hw(struct irdma_sc_dev *dev) icrdma_init_hw(dev); break; case IRDMA_GEN_3: + case IRDMA_GEN_4: ig3rdma_init_hw(dev); break; } diff --git a/drivers/infiniband/hw/irdma/hw.c b/drivers/infiniband/hw/irdma/hw.c index 879fb632ee7a9..05e813ba30553 100644 --- a/drivers/infiniband/hw/irdma/hw.c +++ b/drivers/infiniband/hw/irdma/hw.c @@ -1082,6 +1082,7 @@ static int irdma_create_cqp(struct irdma_pci_f *rf) cqp_init_info.hw_maj_ver = IRDMA_CQPHC_HW_MAJVER_GEN_2; break; case IRDMA_GEN_3: + case IRDMA_GEN_4: cqp_init_info.hw_maj_ver = IRDMA_CQPHC_HW_MAJVER_GEN_3; cqp_init_info.ts_override = 1; break; @@ -1508,7 +1509,7 @@ static int irdma_create_aeq(struct irdma_pci_f *rf) hmc_info->hmc_obj[IRDMA_HMC_IW_CQ].cnt; aeq_size = min(aeq_size, dev->hw_attrs.max_hw_aeq_size); /* GEN_3 does not support virtual AEQ. Cap at max Kernel alloc size */ - if (rf->rdma_ver == IRDMA_GEN_3) + if (rf->rdma_ver >= IRDMA_GEN_3) aeq_size = min(aeq_size, (u32)((PAGE_SIZE << MAX_PAGE_ORDER) / sizeof(struct irdma_sc_aeqe))); aeq->mem.size = ALIGN(sizeof(struct irdma_sc_aeqe) * aeq_size, @@ -1518,7 +1519,7 @@ static int irdma_create_aeq(struct irdma_pci_f *rf) GFP_KERNEL | __GFP_NOWARN); if (aeq->mem.va) goto skip_virt_aeq; - else if (rf->rdma_ver == IRDMA_GEN_3) + else if (rf->rdma_ver >= IRDMA_GEN_3) return -ENOMEM; /* physically mapped aeq failed. setup virtual aeq */ @@ -2192,8 +2193,13 @@ u32 irdma_initialize_hw_rsrc(struct irdma_pci_f *rf) set_bit(2, rf->allocated_pds); INIT_LIST_HEAD(&rf->mc_qht_list.list); - /* stag index mask has a minimum of 14 bits */ - mrdrvbits = 24 - max(get_count_order(rf->max_mr), 14); + + if (rf->rdma_ver >= IRDMA_GEN_4) + mrdrvbits = 24 - max(get_count_order(rf->max_mr), 16); + else + /* stag index mask has a minimum of 14 bits */ + mrdrvbits = 24 - max(get_count_order(rf->max_mr), 14); + rf->mr_stagmask = ~(((1 << mrdrvbits) - 1) << (32 - mrdrvbits)); return 0; diff --git a/drivers/infiniband/hw/irdma/ig3rdma_hw.c b/drivers/infiniband/hw/irdma/ig3rdma_hw.c index 2e8bb475e22a9..f0361675c2de1 100644 --- a/drivers/infiniband/hw/irdma/ig3rdma_hw.c +++ b/drivers/infiniband/hw/irdma/ig3rdma_hw.c @@ -113,7 +113,6 @@ void ig3rdma_init_hw(struct irdma_sc_dev *dev) dev->irq_ops = &ig3rdma_irq_ops; dev->hw_stats_map = ig3rdma_hw_stat_map; - dev->hw_attrs.uk_attrs.hw_rev = IRDMA_GEN_3; dev->hw_attrs.uk_attrs.max_hw_wq_frags = IG3RDMA_MAX_WQ_FRAGMENT_COUNT; dev->hw_attrs.uk_attrs.max_hw_read_sges = IG3RDMA_MAX_SGE_RD; dev->hw_attrs.uk_attrs.max_hw_sq_chunk = IRDMA_MAX_QUANTA_PER_WR; diff --git a/drivers/infiniband/hw/irdma/irdma.h b/drivers/infiniband/hw/irdma/irdma.h index ff938a01d70c4..b5ce515f4ee83 100644 --- a/drivers/infiniband/hw/irdma/irdma.h +++ b/drivers/infiniband/hw/irdma/irdma.h @@ -119,6 +119,7 @@ enum irdma_vers { IRDMA_GEN_1, IRDMA_GEN_2, IRDMA_GEN_3, + IRDMA_GEN_4, IRDMA_GEN_NEXT, IRDMA_GEN_MAX = IRDMA_GEN_NEXT-1 };