All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Rajmohan Mani <rajmohan.mani@intel.com>
Cc: Tomasz Figa <tfiga@chromium.org>,
	Jacopo Mondi <jacopo@jmondi.org>,
	"Zhi, Yong" <yong.zhi@intel.com>,
	"Qiu, Tian Shu" <tian.shu.qiu@intel.com>,
	"Cao, Bingbu" <bingbu.cao@intel.com>,
	Linux Media Mailing List <linux-media@vger.kernel.org>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Hans Verkuil <hans.verkuil@cisco.com>,
	"Hu, Jerry W" <jerry.w.hu@intel.com>,
	"Toivonen, Tuukka" <tuukka.toivonen@intel.com>
Subject: Re: [PATCH v7 00/16] Intel IPU3 ImgU patchset
Date: Mon, 21 Jan 2019 10:07:11 +0200	[thread overview]
Message-ID: <20190121080711.GA4420@pendragon.ideasonboard.com> (raw)
In-Reply-To: <CAAFQd5CRWfBupPKmAUQnQmOqWgi0YZ7=8JOFe4tfpU4hhUxi7Q@mail.gmail.com>

Hello Raj,

On Mon, Jan 21, 2019 at 02:41:03PM +0900, Tomasz Figa wrote:
>  On Wed, Jan 16, 2019 at 11:16 AM Mani, Rajmohan <rajmohan.mani@intel.com> wrote:
> >> Subject: Re: [PATCH v7 00/16] Intel IPU3 ImgU patchset
> >> On Saturday, 12 January 2019 04:30:49 EET Mani, Rajmohan wrote:
> >> 
> >> [snip]
> >> 
> >>> I finally managed to reproduce the issue with 4.20-rc6, with KASAN
> >>> enabled and with CONFIG_SLUB_DEBUG_ON with SLAB_STORE_USER.
> >> 
> >> Nice ! Thank you for your work.
> >> 
> >>> The following line indicates the crash happens when yavta PID 10289
> >>> tries to free the memory.
> >>> 
> >>> [  452.437844] BUG: KASAN: use-after-free in
> >>> ipu3_dmamap_free+0x50/0x9c [ipu3_imgu] [  452.446123] Read of size 8
> >>> at addr ffff8881503481a0 by task yavta/10289
> >>> 
> >>> The above looks to be normal, since it's the same task that allocated
> >>> this memory.
> >>> [  452.685731] Allocated by task 10289:
> >>> 
> >>> Before the above happened, yavta/10187 came in and freed this memory
> >>> per KASAN.
> >>> [  452.787656] Freed by task 10187:
> >>> 
> >>> Is this (one instance of yavta freeing the memory allocated by another
> >>> instance of yavta) expected? Or does it indicate that mmap giving the
> >>> same address across these 2 instances of yavta? I need to debug /
> >>> confirm the latter case.
> >> 
> >> KASAN prints the task name (and process ID) to help you debugging the
> >> problem, but this doesn't mean that yavta is freeing the memory. yavta
> >> exercises the V4L2 API exposed by the driver, and internally, down the
> >> call stack, ipu3_dmamap_free() is called by the driver. According to the
> >> backtraces you posted, this is in response to a VIDIOC_STREAMOFF call
> >> from yavta. I would expect VIDIOC_STREAMOFF to free DMA mappings created
> >> for the buffers on the corresponding video nodes, and thus allocated by
> >> the same task.
> > 
> > Ack.
> > 
> >> The fact
> >> that memory is allocated in one task and freed in another seems weird to me
> >> in this case.
> >> 
> > 
> > I have instrumented the code around ipu3 dma map code, with a change to skip
> > dma free operations, if the current->pid is not the same as the pid that originally
> > did the dma alloc.
> > 
> > There are no crashes in this case, as expected.
> > 
> > I also confirmed that STREAM_ON/OFF is the one that results in this crash.
> > I need to spend more time on the alloc / free operations done by the yavta
> > Instances to see where the problem could be.
> > 
> > This below line doesn't make sense, as the free call for pid 12986 occurs first,
> > before the alloc calls. Yavta application logs indicate the dma alloc has been
> > done for pid 12986, although I don't see corresponding dma alloc calls from pid 12986.
>  
>  I wonder if that doesn't mean that for some reason some V4L2 ioctls
>  done from a context other than the owner (the one that first allocated
>  vb2 buffers) end up triggering some buffer freeing/re-allocation. For
>  VB2 buffers that's normally prevented by the core, but possibly we do
>  some internal buffer management in non-buffer related V4L2 ioctls in
>  the driver?

I had a quick look at the driver, and found the following code in the
VIDIOC_STREAMOFF handler ipu3_vb2_stop_streaming():

        /* Was this the first node with streaming disabled? */
        if (imgu->streaming && ipu3_all_nodes_streaming(imgu, node)) {
                /* Yes, really stop streaming now */
                dev_dbg(dev, "IMGU streaming is ready to stop");
                r = imgu_s_stream(imgu, false);
                if (!r)
                        imgu->streaming = false;
        }

The queue is initialized in ipu3_v4l2_node_setup() with

        vbq->lock = &node->lock;

which means that concurrent VIDIOC_STREAMOFF operations on different
nodes can race each other. Could you enable dynamic debugging to get the
"IMGU streaming is ready to stop" message printed to the kernel log, and
see if this could explain the double-free problem ?

In any case this race condition should be handled by proper locking.
Both the imgu->streaming and the ipu3_all_nodes_streaming() tests are
very racy, and can lead to many different problems (failure at
processing start also comes to mind).

> > 
> > [ 1604.194264] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > 
> > 
> > [ 1603.804102] ipu3_dmamap_alloc: allocated 4096 @ IOVA 0x00000000e530d000 @ VA 00000000a90fcad9 pid: 13281 comm: yavta
> > [ 1603.816015] ipu3_dmamap_alloc: allocated 4096 @ IOVA 0x00000000e530c000 @ VA 00000000a2315b8c pid: 13281 comm: yavta
> > [ 1603.827932] ipu3_dmamap_alloc: allocated 4096 @ IOVA 0x00000000e530b000 @ VA 0000000068fcc232 pid: 13281 comm: yavta
> > [ 1603.839818] ipu3_dmamap_alloc: allocated 4096 @ IOVA 0x00000000e530a000 @ VA 00000000bd8c0fc7 pid: 13281 comm: yavta
> > [ 1603.851904] ipu3_dmamap_alloc: allocated 286720 @ IOVA 0x00000000e52c4000 @ VA 00000000b19ebc35 pid: 13281 comm: yavta
> > [ 1603.864093] ipu3_dmamap_alloc: allocated 286720 @ IOVA 0x00000000e527e000 @ VA 00000000d890dde9 pid: 13281 comm: yavta
> > [ 1603.876335] ipu3_dmamap_alloc: allocated 286720 @ IOVA 0x00000000e5238000 @ VA 0000000032cb057a pid: 13281 comm: yavta
> > [ 1603.888533] ipu3_dmamap_alloc: allocated 286720 @ IOVA 0x00000000e51f2000 @ VA 000000004fdbe7b7 pid: 13281 comm: yavta
> > [ 1603.900747] ipu3_dmamap_alloc: allocated 233472 @ IOVA 0x00000000e51b9000 @ VA 000000001f7481bb pid: 13281 comm: yavta
> > [ 1603.912924] ipu3_dmamap_alloc: allocated 233472 @ IOVA 0x00000000e5180000 @ VA 000000005488930b pid: 13281 comm: yavta
> > [ 1603.925079] ipu3_dmamap_alloc: allocated 233472 @ IOVA 0x00000000e5147000 @ VA 00000000a1ef0f70 pid: 13281 comm: yavta
> > [ 1603.937276] ipu3_dmamap_alloc: allocated 233472 @ IOVA 0x00000000e510e000 @ VA 000000008f127f52 pid: 13281 comm: yavta
> > [ 1603.949461] ipu3_dmamap_alloc: allocated 303104 @ IOVA 0x00000000e50c4000 @ VA 000000002f4ec9a5 pid: 13281 comm: yavta
> > [ 1603.961689] ipu3_dmamap_alloc: allocated 303104 @ IOVA 0x00000000e507a000 @ VA 0000000003233f40 pid: 13281 comm: yavta
> > [ 1603.973868] ipu3_dmamap_alloc: allocated 303104 @ IOVA 0x00000000e5030000 @ VA 0000000069e1621c pid: 13281 comm: yavta
> > [ 1603.986152] ipu3_dmamap_alloc: allocated 303104 @ IOVA 0x00000000e4fe6000 @ VA 00000000b39f1cf0 pid: 13281 comm: yavta
> > [ 1603.998265] ipu3_dmamap_alloc: allocated 4096 @ IOVA 0x00000000e4fe5000 @ VA 000000002bd48bfe pid: 13281 comm: yavta
> > [ 1604.010163] ipu3_dmamap_alloc: allocated 4096 @ IOVA 0x00000000e4fe4000 @ VA 00000000261436cd pid: 13281 comm: yavta
> > [ 1604.022056] ipu3_dmamap_alloc: allocated 4096 @ IOVA 0x00000000e4fe3000 @ VA 00000000375b1a2a pid: 13281 comm: yavta
> > [ 1604.033989] ipu3_dmamap_alloc: allocated 4096 @ IOVA 0x00000000e4fe2000 @ VA 00000000a10eb873 pid: 13281 comm: yavta
> > [ 1604.045873] ipu3_dmamap_alloc: allocated 4096 @ IOVA 0x00000000e4fe1000 @ VA 00000000377717e8 pid: 13281 comm: yavta
> > [ 1604.057767] ipu3_dmamap_alloc: allocated 4096 @ IOVA 0x00000000e4fe0000 @ VA 000000004274cd53 pid: 13281 comm: yavta
> > [ 1604.069648] ipu3_dmamap_alloc: allocated 4096 @ IOVA 0x00000000e4fdf000 @ VA 000000008442a829 pid: 13281 comm: yavta
> > [ 1604.081537] ipu3_dmamap_alloc: allocated 4096 @ IOVA 0x00000000e4fde000 @ VA 000000007bd91d8f pid: 13281 comm: yavta
> > [ 1604.093973] ipu3-imgu 0000:00:05.0: dma buf resized from 3112960 to 7372800
> > [ 1604.101777] SKIPPING ipu3_dmamap_free map pid: 1453 this pid 13281...
> > [ 1604.112144] ipu3_dmamap_alloc: allocated 7372800 @ IOVA 0x00000000e48d6000 @ VA 000000008f3f13db pid: 13281 comm: yavta
> > [ 1604.187741] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.189093] ipu3_dmamap_free: freeing 4096 @ IOVA 0x00000000e530d000 @ VA 00000000a90fcad9 pid: 13281 comm: yavta
> > [ 1604.194264] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194267] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194268] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194270] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194271] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194273] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194275] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194277] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194279] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194280] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194282] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194283] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194285] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194286] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194288] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194289] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194291] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194293] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194294] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194296] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194645] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194647] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194649] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194650] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194652] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194654] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194655] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194657] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 12986...
> > [ 1604.194659] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194661] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194663] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194665] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194667] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194669] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194671] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194672] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194674] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194676] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194678] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194680] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194681] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194683] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194685] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194686] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194688] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194690] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194691] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194693] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194695] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194696] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194698] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194700] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194702] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194703] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194705] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.194707] SKIPPING ipu3_dmamap_free map pid: 0 this pid 12986...
> > [ 1604.195044] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195046] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195048] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195049] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195051] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195053] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195054] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195056] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195058] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195060] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195062] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195063] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195065] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195066] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195067] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195069] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195070] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1604.195071] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1604.195072] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1604.195073] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1604.195075] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195077] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195078] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.195086] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.196725] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196727] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196728] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196730] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196731] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196732] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196733] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196734] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196735] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196736] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196738] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196739] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196740] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196741] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196742] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196744] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196745] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196746] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196747] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196748] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196749] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196751] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196752] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196753] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196754] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196755] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196756] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13182...
> > [ 1604.196757] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196759] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196760] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196761] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196762] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196763] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196764] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196765] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196767] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196768] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196769] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196770] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196771] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196772] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196773] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196775] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196776] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196777] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196778] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196779] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196780] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196781] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196782] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196784] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196785] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196786] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196787] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.196788] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13182...
> > [ 1604.206728] ipu3_dmamap_free: freeing 4096 @ IOVA 0x00000000e530c000 @ VA 00000000a2315b8c pid: 13281 comm: yavta
> > [ 1604.217497] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.221514] ipu3_dmamap_free: freeing 4096 @ IOVA 0x00000000e530b000 @ VA 0000000068fcc232 pid: 13281 comm: yavta
> > [ 1604.230381] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.236134] ipu3_dmamap_free: freeing 4096 @ IOVA 0x00000000e530a000 @ VA 00000000bd8c0fc7 pid: 13281 comm: yavta
> > [ 1604.236171] ipu3_dmamap_free: freeing 286720 @ IOVA 0x00000000e52c4000 @ VA 00000000b19ebc35 pid: 13281 comm: yavta
> > [ 1604.236253] ipu3_dmamap_free: freeing 286720 @ IOVA 0x00000000e527e000 @ VA 00000000d890dde9 pid: 13281 comm: yavta
> > [ 1604.236336] ipu3_dmamap_free: freeing 286720 @ IOVA 0x00000000e5238000 @ VA 0000000032cb057a pid: 13281 comm: yavta
> > [ 1604.236421] ipu3_dmamap_free: freeing 286720 @ IOVA 0x00000000e51f2000 @ VA 000000004fdbe7b7 pid: 13281 comm: yavta
> > [ 1604.244291] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.251102] ipu3_dmamap_free: freeing 233472 @ IOVA 0x00000000e51b9000 @ VA 000000001f7481bb pid: 13281 comm: yavta
> > [ 1604.251190] ipu3_dmamap_free: freeing 233472 @ IOVA 0x00000000e5180000 @ VA 000000005488930b pid: 13281 comm: yavta
> > [ 1604.251279] ipu3_dmamap_free: freeing 233472 @ IOVA 0x00000000e5147000 @ VA 00000000a1ef0f70 pid: 13281 comm: yavta
> > [ 1604.251354] ipu3_dmamap_free: freeing 233472 @ IOVA 0x00000000e510e000 @ VA 000000008f127f52 pid: 13281 comm: yavta
> > [ 1604.251430] ipu3_dmamap_free: freeing 303104 @ IOVA 0x00000000e50c4000 @ VA 000000002f4ec9a5 pid: 13281 comm: yavta
> > [ 1604.251529] ipu3_dmamap_free: freeing 303104 @ IOVA 0x00000000e507a000 @ VA 0000000003233f40 pid: 13281 comm: yavta
> > [ 1604.251623] ipu3_dmamap_free: freeing 303104 @ IOVA 0x00000000e5030000 @ VA 0000000069e1621c pid: 13281 comm: yavta
> > [ 1604.251716] ipu3_dmamap_free: freeing 303104 @ IOVA 0x00000000e4fe6000 @ VA 00000000b39f1cf0 pid: 13281 comm: yavta
> > [ 1604.251821] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.259683] SKIPPING ipu3_dmamap_free map pid: 13281 this pid 13084...
> > [ 1604.266371] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266374] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266376] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266381] ipu3_dmamap_free: freeing 4096 @ IOVA 0x00000000e4fe5000 @ VA 000000002bd48bfe pid: 13281 comm: yavta
> > [ 1604.266438] ipu3_dmamap_free: freeing 4096 @ IOVA 0x00000000e4fe4000 @ VA 00000000261436cd pid: 13281 comm: yavta
> > [ 1604.266477] ipu3_dmamap_free: freeing 4096 @ IOVA 0x00000000e4fe3000 @ VA 00000000375b1a2a pid: 13281 comm: yavta
> > [ 1604.266514] ipu3_dmamap_free: freeing 4096 @ IOVA 0x00000000e4fe2000 @ VA 00000000a10eb873 pid: 13281 comm: yavta
> > [ 1604.266550] ipu3_dmamap_free: freeing 4096 @ IOVA 0x00000000e4fe1000 @ VA 00000000377717e8 pid: 13281 comm: yavta
> > [ 1604.266586] ipu3_dmamap_free: freeing 4096 @ IOVA 0x00000000e4fe0000 @ VA 000000004274cd53 pid: 13281 comm: yavta
> > [ 1604.266623] ipu3_dmamap_free: freeing 4096 @ IOVA 0x00000000e4fdf000 @ VA 000000008442a829 pid: 13281 comm: yavta
> > [ 1604.266659] ipu3_dmamap_free: freeing 4096 @ IOVA 0x00000000e4fde000 @ VA 000000007bd91d8f pid: 13281 comm: yavta
> > [ 1604.266694] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266695] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266697] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266699] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266701] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266702] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266704] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266706] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266707] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266709] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266711] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266712] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266714] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266716] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266717] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266719] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266721] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266722] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266724] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266726] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266728] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266729] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266731] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266733] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266735] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266736] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266738] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.266740] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13281...
> > [ 1604.296912] ipu3-imgu 0000:00:05.0: wait cio gate idle timeout
> > [ 1604.298946] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1604.366931] ipu3-imgu 0000:00:05.0: wait cio gate idle timeout
> > [ 1604.371182] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.722685] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.729641] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.737607] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.744549] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.751506] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.758465] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.765394] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.772447] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.779387] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.787021] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.801912] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.808976] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.816089] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.823311] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.830260] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.837218] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.844203] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.851192] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.858148] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.865073] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.872038] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.878971] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.885905] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.892876] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.899815] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1605.906829] SKIPPING ipu3_dmamap_free map pid: 0 this pid 13084...
> > [ 1606.013925] ipu3-imgu 0000:00:05.0: wait cio gate idle timeout
> > 
> > 
> >> My guess is that when using multiple instances of yavta the calls to
> >> VIDIOC_STREAMOFF on the different video nodes are asynchronous and
> >> happen in a way that the driver does not expect. Regardless of how the API is
> >> exercised by applications, in a good or bad way, the IPU3 driver must not
> >> crash. It needs to be prepared for all V4L2 ioctls to be called at any time, and
> >> an application could call VIDIOC_STREAMOFF on any video node while the
> >> IPU3 is busy processing images.
> >> 
> >>> With the help of local application that operates these pipes in a
> >>> serial fashion, I do not see this issue.
> >> 
> >> [snip]

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2019-01-21  8:07 UTC|newest]

Thread overview: 123+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-29 22:22 [PATCH v7 00/16] Intel IPU3 ImgU patchset Yong Zhi
2018-10-29 22:22 ` [PATCH v7 01/16] v4l: Add Intel IPU3 meta buffer formats Yong Zhi
2018-11-02 12:59   ` Mauro Carvalho Chehab
2018-11-02 13:05     ` Mauro Carvalho Chehab
2018-11-29 19:16   ` Laurent Pinchart
2018-11-29 23:12     ` Zhi, Yong
2018-10-29 22:22 ` [PATCH v7 02/16] doc-rst: Add Intel IPU3 documentation Yong Zhi
2018-11-29 22:50   ` Laurent Pinchart
2018-12-13  9:38     ` Sakari Ailus
2018-12-13 10:41       ` Laurent Pinchart
2018-12-13 10:50         ` Sakari Ailus
2018-12-13  9:38     ` [PATCH 1/1] staging/ipu3-imgu: Address documentation comments Sakari Ailus
2018-10-29 22:22 ` [PATCH v7 03/16] v4l: Add Intel IPU3 meta data uAPI Yong Zhi
2018-11-02 13:02   ` Sakari Ailus
2018-11-16 22:37     ` Zhi, Yong
     [not found]       ` <20181129224548.qwbkau6suipt2veq@kekkonen.localdomain>
2018-11-29 23:06         ` Zhi, Yong
2018-11-29 23:06           ` Zhi, Yong
2018-12-01 20:57           ` Sakari Ailus
2018-12-01 20:57             ` Sakari Ailus
2018-11-02 13:49   ` Mauro Carvalho Chehab
2018-11-02 14:04     ` Tomasz Figa
2018-11-06 23:27       ` Mani, Rajmohan
2018-11-15 10:52         ` Hans Verkuil
2018-11-29  0:41           ` Mani, Rajmohan
2018-11-06 18:25     ` Zhi, Yong
2018-11-15 12:51   ` Hans Verkuil
2018-11-21 18:45     ` Zhi, Yong
2018-10-29 22:22 ` [PATCH v7 04/16] intel-ipu3: abi: Add register definitions and enum Yong Zhi
2018-10-29 22:22 ` [PATCH v7 05/16] intel-ipu3: abi: Add structs Yong Zhi
2018-11-05  8:27   ` Sakari Ailus
2018-11-05 19:05     ` Mani, Rajmohan
2018-11-06  8:04       ` Sakari Ailus
2018-11-06 23:31         ` Mani, Rajmohan
2018-10-29 22:23 ` [PATCH v7 06/16] intel-ipu3: mmu: Implement driver Yong Zhi
2018-11-05 11:55   ` Sakari Ailus
2018-11-06  5:50     ` Zhi, Yong
2018-11-06  5:56       ` Tomasz Figa
2018-10-29 22:23 ` [PATCH v7 07/16] intel-ipu3: Implement DMA mapping functions Yong Zhi
2018-10-29 22:23 ` [PATCH v7 08/16] intel-ipu3: css: Add dma buff pool utility functions Yong Zhi
2018-11-08 15:36   ` Sakari Ailus
2018-11-09 23:16     ` Zhi, Yong
2018-11-12  9:21       ` Sakari Ailus
2018-10-29 22:23 ` [PATCH v7 09/16] intel-ipu3: css: Add support for firmware management Yong Zhi
2018-11-28 22:22   ` Sakari Ailus
2018-10-29 22:23 ` [PATCH v7 11/16] intel-ipu3: css: Compute and program ccs Yong Zhi
2018-10-29 22:23 ` [PATCH v7 12/16] intel-ipu3: css: Initialize css hardware Yong Zhi
2018-11-09 12:06   ` Sakari Ailus
2018-10-29 22:23 ` [PATCH v7 13/16] intel-ipu3: Add css pipeline programming Yong Zhi
2018-10-29 22:23 ` [PATCH v7 14/16] intel-ipu3: Add v4l2 driver based on media framework Yong Zhi
2018-11-09 12:36   ` Sakari Ailus
2018-11-09 23:26     ` Zhi, Yong
2018-11-15 12:51   ` Hans Verkuil
2018-11-15 16:09     ` Zhi, Yong
2018-10-29 22:23 ` [PATCH v7 15/16] intel-ipu3: Add imgu top level pci device driver Yong Zhi
2018-11-09 12:54   ` Sakari Ailus
2018-11-12 22:16     ` Zhi, Yong
2018-10-29 22:23 ` [PATCH v7 16/16] intel-ipu3: Add dual pipe support Yong Zhi
2018-11-01 12:03 ` [PATCH v7 00/16] Intel IPU3 ImgU patchset Sakari Ailus
2018-11-07  4:16   ` Bing Bu Cao
2018-11-09  1:28     ` Zhi, Yong
2018-11-09 11:28       ` Sakari Ailus
2018-11-09 10:09     ` Sakari Ailus
2018-11-12  4:31       ` Bing Bu Cao
2018-11-13 10:31         ` Sakari Ailus
2018-11-13 11:04           ` Bing Bu Cao
2018-11-13 21:58             ` Sakari Ailus
2018-11-14  7:02               ` Bing Bu Cao
2018-11-29 23:09       ` Laurent Pinchart
2018-11-30 13:37         ` Sakari Ailus
2018-11-29 23:07     ` Laurent Pinchart
2018-12-03  9:51       ` Sakari Ailus
2018-12-03 12:34         ` Laurent Pinchart
2018-11-14  0:25 ` jacopo mondi
2018-11-14  7:40   ` Sakari Ailus
2018-11-18  0:12     ` jacopo mondi
2018-11-29 14:43 ` Laurent Pinchart
2018-11-29 19:51   ` Tomasz Figa
2018-11-29 22:54     ` Laurent Pinchart
2018-11-29 22:58       ` Mani, Rajmohan
2018-12-04 16:07       ` Mani, Rajmohan
2018-12-04 16:42         ` Laurent Pinchart
2018-12-04 16:53           ` Mani, Rajmohan
2018-12-05  0:30           ` Mani, Rajmohan
2018-12-11 13:34             ` Laurent Pinchart
2018-12-11 13:43               ` Laurent Pinchart
2018-12-11 14:20                 ` Laurent Pinchart
2018-12-16  7:26                   ` Laurent Pinchart
2018-12-20 22:25                     ` Laurent Pinchart
2018-12-21  3:04                       ` Tomasz Figa
2019-01-08  6:54                         ` Tomasz Figa
2019-01-09 16:40                           ` Jacopo Mondi
2019-01-09 17:00                             ` Mani, Rajmohan
2019-01-09 17:25                               ` Jacopo Mondi
2019-01-09 18:01                                 ` Mani, Rajmohan
2019-01-09 18:20                                   ` Jacopo Mondi
2019-01-09 18:36                                     ` Mani, Rajmohan
2019-01-10  8:19                                       ` Jacopo Mondi
2019-01-12  2:06                                         ` Mani, Rajmohan
2019-01-12  2:30                                     ` Mani, Rajmohan
2019-01-12 15:10                                       ` Laurent Pinchart
     [not found]                                         ` <6F87890CF0F5204F892DEA1EF0D77A599B323499@fmsmsx122.amr.corp.intel.com>
2019-01-21  5:41                                           ` Tomasz Figa
2019-01-21  8:07                                             ` Laurent Pinchart [this message]
2019-01-22 16:21                                               ` Mani, Rajmohan
     [not found]                   ` <6F87890CF0F5204F892DEA1EF0D77A599B31FAF4@fmsmsx122.amr.corp.intel.com>
2019-01-08 23:34                     ` Laurent Pinchart
2018-12-12  4:55                 ` Bingbu Cao
2018-12-13 22:24                   ` Laurent Pinchart
2018-12-14  2:53                     ` Bingbu Cao
2018-12-17  3:14                     ` Bingbu Cao
2018-12-26 11:03                       ` Laurent Pinchart
2019-01-02  2:38                         ` Bingbu Cao
2019-01-02  8:20                           ` Laurent Pinchart
2019-01-02 20:26                             ` Sakari Ailus
2019-01-28 10:09                               ` Jacopo Mondi
2019-01-29  8:56                                 ` Tomasz Figa
2019-02-01 10:04                                   ` Jacopo Mondi
2019-02-05  6:01                                     ` Tomasz Figa
2019-03-23 13:02                           ` Jacopo Mondi
2019-03-25  3:45                             ` Bingbu Cao
2019-03-25  4:06                               ` Laurent Pinchart
2019-03-25  8:11                                 ` Jacopo Mondi
2019-03-25 10:07                                   ` Bingbu Cao
2019-03-26 11:16                                     ` Jacopo Mondi
2019-04-08  6:35                                       ` Bingbu Cao

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=20190121080711.GA4420@pendragon.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=bingbu.cao@intel.com \
    --cc=hans.verkuil@cisco.com \
    --cc=jacopo@jmondi.org \
    --cc=jerry.w.hu@intel.com \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=rajmohan.mani@intel.com \
    --cc=sakari.ailus@linux.intel.com \
    --cc=tfiga@chromium.org \
    --cc=tian.shu.qiu@intel.com \
    --cc=tuukka.toivonen@intel.com \
    --cc=yong.zhi@intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.