[Letux-kernel] LetuxOS: Kernel: m-stable 5.4.77 successful

Andreas Kemnade andreas at kemnade.info
Sat Nov 21 11:58:38 CET 2020


On Sat, 21 Nov 2020 08:46:44 +0100
"H. Nikolaus Schaller" <hns at goldelico.com> wrote:

> Hi Andreas,
> 
> > Am 20.11.2020 um 22:37 schrieb Andreas Kemnade <andreas at kemnade.info>:
> > 
> > On Fri, 20 Nov 2020 22:26:16 +0100
> > Andreas Kemnade <andreas at kemnade.info> wrote:
> >   
> >> On Mon, 16 Nov 2020 15:20:24 +0100 (CET)
> >> hns at goldelico.com (H. Nikolaus Schaller) wrote:
> >>   
> >>> KVERSION: v5.4.77 - http://www.kernel.org
> >>> CONFIGS:  arch/arm/configs/letux_defconfig arch/arm/configs/letux_lpae_defconfig arch/mips/configs/letux_defconfig
> >>>   
> >> does not compile here
> >>  CC [M]  drivers/gpu/drm/omapdrm/omap_gem.o
> >> /home/andi/kernel/drivers/gpu/drm/omapdrm/omap_gem.c: In function ‘_omap_gem_unpin’:
> >> /home/andi/kernel/drivers/gpu/drm/omapdrm/omap_gem.c:886:28: error: passing argument 1 of ‘refcount_dec_and_test_checked’ from incompatible pointer type [-Werror=incompatible-pointer-types]
> >>  if (refcount_dec_and_test(&omap_obj->dma_addr_cnt)) {
> >>                            ^~~~~~~~~~~~~~~~~~~~~~~
> >> In file included from /home/andi/kernel/include/linux/kref.h:17,
> >>                 from /home/andi/kernel/include/linux/kobject.h:23,
> >>                 from /home/andi/kernel/include/linux/device.h:16,
> >>                 from /home/andi/kernel/include/linux/dma-mapping.h:7,
> >>                 from /home/andi/kernel/drivers/gpu/drm/omapdrm/omap_gem.c:7:
> >> /home/andi/kernel/include/linux/refcount.h:54:68: note: expected ‘refcount_t *’ {aka ‘struct refcount_struct *’} but argument is of type ‘u32 *’ {aka ‘unsigned int *’}
> >> extern __must_check bool refcount_dec_and_test_checked(refcount_t *r);
> >>                                                        ~~~~~~~~~~~~^
> >> cc1: some warnings being treated as errors  
> 
> Yes, my compiler also complains but does not treat it as error:
> 
> https://download.goldelico.com/letux-kernel/letux-5.4.77/src/warnings.log
> 
> >> 
> >> git blame:
> >> commit a882ed5f130ce0d467944a5d0a4d1e7259d815af
> >> Author: Matthijs van Duin <matthijsvanduin at gmail.com>
> >> Date:   Fri Jun 19 16:34:41 2020 +0100
> >> 
> >>    omapdrm: Use sg_table for dmabufs to enable width != 8192
> >> 
> >>    This fixes cases other than width=8k/stride=32k by using a proper
> >>    sg_table with multiple entries for dmabufs, mapping each line
> >>    to its correct TILER address.
> >> 
> >>    Original-by: Matthijs van Duin <matthijsvanduin at gmail.com>
> >>    Signed-off-by: David Shah <dave at ds0.me>
> >> 
> >> Hmm, letux-5.9 compiles, so any dangerous cherry-picking here?!  
> 
> AFAIR 5.4 did have a lot of trouble and I am not 100% sure if the tiler rotation works
> properly at all. 5.6 was the best kernel for a while and 5.9 should be best.
> 
> >>   
> > the logic looks ill:
> >               return;
> >        if (omap_obj->dma_addr_cnt--)
> >                return;
> >        if (WARN_ON(!omap_obj->block))
> >                return;
> > 
> >        if (refcount_dec_and_test(&omap_obj->dma_addr_cnt)) {
> > 
> > That looks a bit duplicated here (besides of the type problem).
> > dma_addr_cnt will always be 0 if that if is reached.
> > And then the 0 is decremented and checked if it is zero?!  
> 
> Yes, it may be a cherry-pick with bad automatic or manual conflict resolution.
> It may come from a patch backported from 5.6. AFAIR, 5.6 was the best Pyra kernel
> for a while and is currently used by PyraOS. But it is no longer maintained.
> 
Same code area from letux 5.6 kernel:

static void omap_gem_unpin_locked(struct drm_gem_object *obj)
{
        struct omap_drm_private *priv = obj->dev->dev_private;
        struct omap_gem_object *omap_obj = to_omap_bo(obj);
        int ret;

        if (omap_gem_is_contiguous(omap_obj) || !priv->has_dmm)
                return;

        if (refcount_dec_and_test(&omap_obj->dma_addr_cnt)) {


So something was refactored upstream and the patch does not fit
properly.

Regards,
Andreas 


More information about the Letux-kernel mailing list