Hi all,

On Thu, 19 Nov 2020 14:29:15 +1100 Stephen Rothwell <s...@canb.auug.org.au> 
wrote:
>
> Today's linux-next merge of the dmaengine tree got a conflict in:
> 
>   drivers/dma/idxd/submit.c
> 
> between commit:
> 
>   8326be9f1c0b ("dmaengine: idxd: fix mapping of portal size")
> 
> from the dmaengine-fixes tree and commit:
> 
>   8e50d392652f ("dmaengine: idxd: Add shared workqueue support")
> 
> from the dmaengine tree.
> 
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging.  You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.
> 
> diff --cc drivers/dma/idxd/submit.c
> index 417048e3c42a,efca5d8468a6..000000000000
> --- a/drivers/dma/idxd/submit.c
> +++ b/drivers/dma/idxd/submit.c
> @@@ -74,14 -86,27 +86,27 @@@ int idxd_submit_desc(struct idxd_wq *wq
>       if (idxd->state != IDXD_DEV_ENABLED)
>               return -EIO;
>   
> -     portal = wq->dportal;
>  -    portal = wq->portal + idxd_get_wq_portal_offset(IDXD_PORTAL_LIMITED);
> ++    portal = wq->portal;
> + 
>       /*
> -      * The wmb() flushes writes to coherent DMA data before possibly
> -      * triggering a DMA read. The wmb() is necessary even on UP because
> -      * the recipient is a device.
> +      * The wmb() flushes writes to coherent DMA data before
> +      * possibly triggering a DMA read. The wmb() is necessary
> +      * even on UP because the recipient is a device.
>        */
>       wmb();
> -     iosubmit_cmds512(portal, desc->hw, 1);
> +     if (wq_dedicated(wq)) {
> +             iosubmit_cmds512(portal, desc->hw, 1);
> +     } else {
> +             /*
> +              * It's not likely that we would receive queue full rejection
> +              * since the descriptor allocation gates at wq size. If we
> +              * receive a -EAGAIN, that means something went wrong such as 
> the
> +              * device is not accepting descriptor at all.
> +              */
> +             rc = enqcmds(portal, desc->hw);
> +             if (rc < 0)
> +                     return rc;
> +     }
>   
>       /*
>        * Pending the descriptor to the lockless list for the irq_entry

Just a reminder that this conflict still exists.  Commit 8326be9f1c0b
is now in Linus' tree.

-- 
Cheers,
Stephen Rothwell

Attachment: pgpSRdWRHSgu7.pgp
Description: OpenPGP digital signature

Reply via email to