Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp157738rdb; Tue, 5 Dec 2023 01:22:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IEnBIDk7GGcvqaeziKLQmg2VDF2i7XH53dMNJKeBocAmCtTQrwDzQViQoIcj7jXyZwMy6Ra X-Received: by 2002:a05:6358:913:b0:16d:b449:fe9d with SMTP id r19-20020a056358091300b0016db449fe9dmr3596463rwi.3.1701768129802; Tue, 05 Dec 2023 01:22:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701768129; cv=none; d=google.com; s=arc-20160816; b=gdruV+kFA+4Qy639z/O2SjqQiqC/mCSW4WepFAXEBfUEkbVm+3vD26geh3uNCwGCRm za8Uzdn/Mvk2xTL/oacTp7eoHTTnR5y8aTmGicNCtdO0YUD3VbsxnAojOOdwucAzipgH allieof03AbZyXwtAnznMyG8bpJ40bnKsfn1NYytYq3xq43Jp9CJCvLHcIcXEwQLYZFM U0B82vDqZcnDSwgSE1aePO1lEUX0Wng1N92f02JhmObLkQe8jY6JwVbXUP31o0hc2yFR kG26Mz5hyB6MWjqZTTmBdhp0IfmMz/Sy5JaTiKTt4tKyVZ1tx8lMfsPfOo0mJMSu5lgf dBYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=XXpEp9ubWK2vkOa++LayaLKdADssX50wyI6JPOqoBHU=; fh=ApE9LbBDvmw1f0twj5BxT7QNlezxatbfTn93z1Hr0iA=; b=Zqt+BNiBTWAnqvXzC7CeTdwSkXZ2YjQcylcgW2jDJOvcZ6nApmjgnSPNCZzbh8GY2e RVcxAXssnK5ndxJnIi/fVKVHYuFS3kRhyjmIbX2eovfsn5r45KZ2UJjBV54JGaiPlbyc S2MAl4/L8t9QA1Z+aPYyKd6UkOXHKBwvPpgK8R5kr9dNzbZnY4dgPPDGguqui3vxw3+1 OphIQjvLVnCqYgh2spLi5ZDMZpdEut/dAsrTedU1es7n3CcBdE2fObyBDQS2CKg9ptTZ xqozAmuGkoqvB+9LvTYmNbZyjW6drloTMB45E7+WAo3nEAEcLBRA2zTJxRXiB35i6Oi/ YEnA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=cclanZ6L; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from howler.vger.email (howler.vger.email. [2620:137:e000::3:4]) by mx.google.com with ESMTPS id cm8-20020a056a020a0800b005c677a35324si4530187pgb.464.2023.12.05.01.22.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Dec 2023 01:22:09 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) client-ip=2620:137:e000::3:4; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=cclanZ6L; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id 1BE5D804C55B; Tue, 5 Dec 2023 01:22:07 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234995AbjLEJVm (ORCPT + 99 others); Tue, 5 Dec 2023 04:21:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59396 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234993AbjLEJVl (ORCPT ); Tue, 5 Dec 2023 04:21:41 -0500 Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.126]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EACF2183; Tue, 5 Dec 2023 01:21:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1701768108; x=1733304108; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=59iQKEDl6X80Ax03Nq5CpaD02G8tfcF3NvfxIuhVihs=; b=cclanZ6L24/3h6MGwFC2QoqnvinXwRPYsHlidEv0SzMFhlDr8Tl/WcAt BjbojHGC6wxRljnQ++2jPywL37T3VQCzkZwxCcj3aDdkQRq/lSu0wY89k vefXnJ1k5+vSr+ImiznprO9To2cIoKpkX69yPzciFA6Zy1ft48omW8DJR pgNReXxpD9aYZwYcRnGpMmabNtTgQ5Of2fBJyT3BE5Ml5AbdRsfL9Pvh+ X9+g2zBAOBDuq7L/UsY9kg9JgPYPEy9/+k10ffYVLebtAUcfq9YDgec2Z zRDW5+nCGkqwWuNJ5wrAo1GlzBLxoDBDVn1TLaKCTilV1Rc+zOJOlvHTI Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10914"; a="378893727" X-IronPort-AV: E=Sophos;i="6.04,251,1695711600"; d="scan'208";a="378893727" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Dec 2023 01:21:46 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10914"; a="841387858" X-IronPort-AV: E=Sophos;i="6.04,251,1695711600"; d="scan'208";a="841387858" Received: from rex-z390-aorus-pro.sh.intel.com ([10.239.161.21]) by fmsmga004.fm.intel.com with ESMTP; 05 Dec 2023 01:21:42 -0800 From: Rex Zhang To: tom.zanussi@linux.intel.com Cc: dave.jiang@intel.com, davem@davemloft.net, dmaengine@vger.kernel.org, fenghua.yu@intel.com, giovanni.cabiddu@intel.com, herbert@gondor.apana.org.au, james.guilford@intel.com, kanchana.p.sridhar@intel.com, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, pavel@ucw.cz, tony.luck@intel.com, vinodh.gopal@intel.com, vkoul@kernel.org, wajdi.k.feghali@intel.com Subject: Re: [PATCH v11 14/14] dmaengine: idxd: Add support for device/wq defaults Date: Tue, 5 Dec 2023 17:21:39 +0800 Message-Id: <20231205092139.3682047-1-rex.zhang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231201201035.172465-15-tom.zanussi@linux.intel.com> References: <20231201201035.172465-15-tom.zanussi@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on howler.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Tue, 05 Dec 2023 01:22:07 -0800 (PST) Hi Tom, On 2023-12-01 at 14:10:35 -0600, Tom Zanussi wrote: [snip] > +int idxd_load_iaa_device_defaults(struct idxd_device *idxd) > +{ > + struct idxd_engine *engine; > + struct idxd_group *group; > + struct idxd_wq *wq; > + > + if (!test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags)) > + return 0; In the virtualization case, it is not configurable in guest OS, then the default work queue will not be enabled. Is it expected? > + > + wq = idxd->wqs[0]; > + > + if (wq->state != IDXD_WQ_DISABLED) > + return -EPERM; > + > + /* set mode to "dedicated" */ > + set_bit(WQ_FLAG_DEDICATED, &wq->flags); > + wq->threshold = 0; > + > + /* only setting up 1 wq, so give it all the wq space */ > + wq->size = idxd->max_wq_size; > + > + /* set priority to 10 */ > + wq->priority = 10; > + > + /* set type to "kernel" */ > + wq->type = IDXD_WQT_KERNEL; > + > + /* set wq group to 0 */ > + group = idxd->groups[0]; > + wq->group = group; > + group->num_wqs++; > + > + /* set name to "iaa_crypto" */ > + memset(wq->name, 0, WQ_NAME_SIZE + 1); > + strscpy(wq->name, "iaa_crypto", WQ_NAME_SIZE + 1); > + > + /* set driver_name to "crypto" */ > + memset(wq->driver_name, 0, DRIVER_NAME_SIZE + 1); > + strscpy(wq->driver_name, "crypto", DRIVER_NAME_SIZE + 1); > + > + engine = idxd->engines[0]; > + > + /* set engine group to 0 */ > + engine->group = idxd->groups[0]; > + engine->group->num_engines++; > + > + return 0; > +} > diff --git a/drivers/dma/idxd/idxd.h b/drivers/dma/idxd/idxd.h > index 62ea21b25906..47de3f93ff1e 100644 > --- a/drivers/dma/idxd/idxd.h > +++ b/drivers/dma/idxd/idxd.h > @@ -277,6 +277,8 @@ struct idxd_dma_dev { > struct dma_device dma; > }; > > +typedef int (*load_device_defaults_fn_t) (struct idxd_device *idxd); > + > struct idxd_driver_data { > const char *name_prefix; > enum idxd_type type; > @@ -286,6 +288,7 @@ struct idxd_driver_data { > int evl_cr_off; > int cr_status_off; > int cr_result_off; > + load_device_defaults_fn_t load_device_defaults; > }; > > struct idxd_evl { > @@ -730,6 +733,7 @@ void idxd_unregister_devices(struct idxd_device *idxd); > void idxd_wqs_quiesce(struct idxd_device *idxd); > bool idxd_queue_int_handle_resubmit(struct idxd_desc *desc); > void multi_u64_to_bmap(unsigned long *bmap, u64 *val, int count); > +int idxd_load_iaa_device_defaults(struct idxd_device *idxd); > > /* device interrupt control */ > irqreturn_t idxd_misc_thread(int vec, void *data); > diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c > index 0eb1c827a215..14df1f1347a8 100644 > --- a/drivers/dma/idxd/init.c > +++ b/drivers/dma/idxd/init.c > @@ -59,6 +59,7 @@ static struct idxd_driver_data idxd_driver_data[] = { > .evl_cr_off = offsetof(struct iax_evl_entry, cr), > .cr_status_off = offsetof(struct iax_completion_record, status), > .cr_result_off = offsetof(struct iax_completion_record, error_code), > + .load_device_defaults = idxd_load_iaa_device_defaults, > }, > }; > > @@ -745,6 +746,12 @@ static int idxd_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) > goto err; > } > > + if (data->load_device_defaults) { > + rc = data->load_device_defaults(idxd); > + if (rc) > + dev_warn(dev, "IDXD loading device defaults failed\n"); > + } > + > rc = idxd_register_devices(idxd); > if (rc) { > dev_err(dev, "IDXD sysfs setup failed\n"); Thanks, Rex Zhang > -- > 2.34.1 >