public inbox for linux-pci@vger.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: "Verma, Devendra" <Devendra.Verma@amd.com>
Cc: "bhelgaas@google.com" <bhelgaas@google.com>,
	"mani@kernel.org" <mani@kernel.org>,
	"vkoul@kernel.org" <vkoul@kernel.org>,
	"dmaengine@vger.kernel.org" <dmaengine@vger.kernel.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Simek, Michal" <michal.simek@amd.com>
Subject: Re: [PATCH v7 2/2] dmaengine: dw-edma: Add non-LL mode
Date: Tue, 23 Dec 2025 10:28:42 -0600	[thread overview]
Message-ID: <20251223162842.GA4022246@bhelgaas> (raw)
In-Reply-To: <SA1PR12MB8120306AAE9B655A8F8273B795AAA@SA1PR12MB8120.namprd12.prod.outlook.com>

On Tue, Dec 16, 2025 at 10:15:34AM +0000, Verma, Devendra wrote:
> > From: Bjorn Helgaas <helgaas@kernel.org>

[snipped pointless header quotes]

> > On Fri, Dec 12, 2025 at 05:50:56PM +0530, Devendra K Verma wrote:
> > > AMD MDB IP supports Linked List (LL) mode as well as non-LL mode.
> > > The current code does not have the mechanisms to enable the DMA
> > > transactions using the non-LL mode. The following two cases are added
> > > with this patch:
> > > - For the AMD (Xilinx) only, when a valid physical base address of
> > >   the device side DDR is not configured, then the IP can still be
> > >   used in non-LL mode. For all the channels DMA transactions will
> > >   be using the non-LL mode only. This, the default non-LL mode,
> > >   is not applicable for Synopsys IP with the current code addition.
> > >
> > > - If the default mode is LL-mode, for both AMD (Xilinx) and Synosys,
> > >   and if user wants to use non-LL mode then user can do so via
> > >   configuring the peripheral_config param of dma_slave_config.
> > > ...
> >
> > > +++ b/drivers/dma/dw-edma/dw-edma-core.c
> > > @@ -223,8 +223,31 @@ static int dw_edma_device_config(struct
> > dma_chan *dchan,
> > >                                struct dma_slave_config *config)  {
> > >       struct dw_edma_chan *chan = dchan2dw_edma_chan(dchan);
> > > +     int non_ll = 0;
> >
> > Other "non_ll" uses below are bool, so a little bit of an int/bool mix.
> >
> > The name also leads to a lot of double negative use ("!non_ll", etc), which is
> > hard to read.  I suppose "non-LL" corresponds to some spec language, but it
> > would be nice if we could avoid some of the negation by testing for "ll_mode"
> > or calling the other mode "single_burst" or similar.
> >
> 
> Yes, non-LL is being referred in the Synosys databook extensively to
> differentiate between LL and non-LL mode.
>
> I agree with the concern raised here but, at the moment, this is the
> only suitable term that can handle the following cases:

> 1) Choice of variable of the DMA client to use non-LL mode,
> 2) Establish flow for the non-LL use-case in the driver.
> 
> Before, using the term with negation (non_ll), the possibility was explored
> to use a term which does not result in double negation, eg, ll or ll_mode.
> But this again breaks the above either one or both use-cases.
> If using ll_mode as a variable, then with this, DMA client shall
> either provide ll_mode=false or non_ll=true.
> 
> When ll_mode=false. This option would be as good as
> passing a valid reference to peripheral_config pointer as
> the value of ll_mode would never be used for ll_mode=true
> due to default mode being LL.
> On the basis of ll_mode=true, the DMA client given option, no code
> is impacted with these patches.
> 
> When DMA client gives non_ll=true; this causes confusion,
> DMA client does right but internally ll_mode as a variable is set
> to establish the flow for non-LL mode. The different variable is
> used for establishing the non-LL mode inside the driver code.
> Also, it uses the combination of double negation variable.
> 
> Though, the use of non_ll, raises concern due to double
> negation but its use fits the use-case from both DMA client
> and in the driver to establish the non-LL flow. Additionally,
> The use of non_ll also aligns with the documentation of the
> vendor making it easier to follow.
> Please let me know your thoughts on this.

OK.  It's good to match the databook.  Maybe there's a way to
restructure the code to prefer "if (chan->non_ll)" tests over
"if (!chan->non_ll)"?

  reply	other threads:[~2025-12-23 16:28 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-12 12:20 [PATCH v7 0/2] Add AMD MDB Endpoint and non-LL mode Support Devendra K Verma
2025-12-12 12:20 ` [PATCH v7 1/2] dmaengine: dw-edma: Add AMD MDB Endpoint Support Devendra K Verma
2025-12-12 18:08   ` Bjorn Helgaas
2025-12-15 11:39     ` Verma, Devendra
2025-12-12 12:20 ` [PATCH v7 2/2] dmaengine: dw-edma: Add non-LL mode Devendra K Verma
2025-12-12 18:21   ` Bjorn Helgaas
2025-12-16 10:15     ` Verma, Devendra
2025-12-23 16:28       ` Bjorn Helgaas [this message]
2026-01-05 10:30         ` Verma, Devendra
2025-12-16 12:31   ` Vinod Koul
2026-01-05 10:35     ` Verma, Devendra
2026-03-18 11:27 ` [PATCH v7 0/2] Add AMD MDB Endpoint and non-LL mode Support Vinod Koul

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251223162842.GA4022246@bhelgaas \
    --to=helgaas@kernel.org \
    --cc=Devendra.Verma@amd.com \
    --cc=bhelgaas@google.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=mani@kernel.org \
    --cc=michal.simek@amd.com \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox