Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp258133imj; Wed, 13 Feb 2019 07:54:11 -0800 (PST) X-Google-Smtp-Source: AHgI3IaJ+Hq30sQNIW0m5y7RY/pFm/bosOR+VLc147BAP1Lf5pdV3eno9VCOiYnSJ+VDc1RWC+7Y X-Received: by 2002:a17:902:449:: with SMTP id 67mr1184562ple.310.1550073251109; Wed, 13 Feb 2019 07:54:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550073251; cv=none; d=google.com; s=arc-20160816; b=sBPdt8r6b2J4nXe+7gDcTYgS10QJ5fH2eaE+b0fHdG0lsLwCCrRhPCUTs0sN4q04Xr EmZLChVLLpIfROnw+G7G0EgN5PU+vv7qTnU6V2HZQrnGwyoHXblqwoQhQjEjJFbuXv8P 5VbqevQhM7x+FK8QS+HJsmouxqLHX7bZ7J7fyCMv2WUZShC8x0hiGNn/JVP9gESRpVmH njLsW3on1xJZeaagDKfPIIy99sNokv+nUKZFb/ZHGThV+LRtG7PSkS2drRZW331Bclc2 r6tITLoVeG2XR1Kgqtt5+uPB/qrCrpW2hatYBnPsEhOp/mLkz5vBbL9D2wrKUsK0JM8L 1+hg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=vYmLwjo7G2hsredvHL7xEmcDlkO8ksUOU0B7ifSAug8=; b=EJD3Qy2KOZZhaU99nPOQxnRgDpOo6k9DtsG/2aBmbx2nS5nnbe/sHyJDwQGQnb/QGy m0bIpMZhcdEJgeNnNh/5GZQtJJzhfzlgu+QNwOsAhCgbngcFQMaxMT3WScLJ8zws1/5m WJO0TONDFVU26gbShfeh306wHeUeqLyYs1IIzt91mhMxcYfJt7+O0Z6h5mGqKFAVSg0+ OUm+Ri0qA7NbhKlMTqoew9Cx4NdSHfkGaZgkXh1XydD0dKYa46VJGI9oaDs/+8iBTz3L 3YAm6SxoZcHOT54onIMxPcitzFXhCMgx9zZv+7CYJyKoBgkiQvINEdg4BdMx+UT7m+tQ ioZw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="nCDxYi/O"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d11si745727pgi.516.2019.02.13.07.53.54; Wed, 13 Feb 2019 07:54:11 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="nCDxYi/O"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391046AbfBMPQp (ORCPT + 99 others); Wed, 13 Feb 2019 10:16:45 -0500 Received: from mail.kernel.org ([198.145.29.99]:35714 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390416AbfBMPQp (ORCPT ); Wed, 13 Feb 2019 10:16:45 -0500 Received: from localhost (173-25-63-173.client.mchsi.com [173.25.63.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 12624222B1; Wed, 13 Feb 2019 15:16:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1550071004; bh=8T698jJA+B1VS7dD3ss7MUKHpeHgLZ8j3f8asqnOGdk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=nCDxYi/O9bFnFcsjAv3aqhXArBwjiBPbh2pmj8ws6eMxr6GE36JNYuc5YXPTXc6u4 mrf3n5YkPugO2YhLvSu+fSO8eAS0ZKINDoOKdyfl/NTeuwsnHw8FmVqgixQsBGwjuu 8lNlhJE4JJTRUiGuG4tZPV8iTR3FMs3EtTAI7tzE= Date: Wed, 13 Feb 2019 09:16:43 -0600 From: Bjorn Helgaas To: Ming Lei Cc: Christoph Hellwig , Thomas Gleixner , Jens Axboe , linux-block@vger.kernel.org, Sagi Grimberg , linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, Keith Busch Subject: Re: [PATCH V3 5/5] genirq/affinity: Document .calc_sets as required in case of multiple sets Message-ID: <20190213151642.GF96272@google.com> References: <20190213105041.13537-1-ming.lei@redhat.com> <20190213105041.13537-6-ming.lei@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190213105041.13537-6-ming.lei@redhat.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Feb 13, 2019 at 06:50:41PM +0800, Ming Lei wrote: > Now NVMe has implemented the .calc_sets callback for caculating each > set's vectors. s/caculating/calculating/ > For other cases of multiple IRQ sets, pre-caculating each set's vectors > before allocating IRQ vectors can't work because the whole vectors > number is unknow at that time. s/unknow/unknown/ Maybe spell check could be helpful? > So document .calc_sets as required explicitly for multiple sets. > > Acked-by: Bjorn Helgaas > Signed-off-by: Ming Lei > --- > drivers/pci/msi.c | 16 ++++++++++------ > include/linux/interrupt.h | 3 ++- > 2 files changed, 12 insertions(+), 7 deletions(-) > > diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c > index 96978459e2a0..199d708b4099 100644 > --- a/drivers/pci/msi.c > +++ b/drivers/pci/msi.c > @@ -1036,10 +1036,12 @@ static int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec, > return -ERANGE; > > /* > - * If the caller is passing in sets, we can't support a range of > - * vectors. The caller needs to handle that. > + * If the caller requests multiple sets of IRQs where each set > + * requires different affinity, it must also supply a ->calc_sets() > + * callback to compute vectors for each set after whole vectors are > + * allocated. "compute vectors for each set after whole vectors are allocated" doesn't read smoothly. The caller is requesting "multiple sets of IRQs". So each set contains several IRQ vectors. IIUC, the vectors calc_sets() are computing are something other than IRQ vectors. > */ > - if (affd && affd->nr_sets && minvec != maxvec) > + if (affd && affd->nr_sets > 1 && !affd->calc_sets) > return -EINVAL; > > if (WARN_ON_ONCE(dev->msi_enabled)) > @@ -1094,10 +1096,12 @@ static int __pci_enable_msix_range(struct pci_dev *dev, > return -ERANGE; > > /* > - * If the caller is passing in sets, we can't support a range of > - * supported vectors. The caller needs to handle that. > + * If the caller requests multiple sets of IRQs where each set > + * requires different affinity, it must also supply a ->calc_sets() > + * callback to compute vectors for each set after whole vectors are > + * allocated. > */ > - if (affd && affd->nr_sets && minvec != maxvec) > + if (affd && affd->nr_sets > 1 && !affd->calc_sets) > return -EINVAL; > > if (WARN_ON_ONCE(dev->msix_enabled)) > diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h > index 7a27f6ba1f2f..a053f7fb0ff1 100644 > --- a/include/linux/interrupt.h > +++ b/include/linux/interrupt.h > @@ -269,7 +269,8 @@ struct irq_affinity_notify { > * the MSI(-X) vector space > * @nr_sets: Length of passed in *sets array > * @set_vectors: Number of affinitized sets > - * @calc_sets: Callback for caculating set vectors > + * @calc_sets: Callback for caculating set vectors, required for > + * multiple irq sets. > * @priv: Private data of @calc_sets > */ > struct irq_affinity { > -- > 2.9.5 >