linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
To: Jacopo Mondi <jacopo@jmondi.org>
Cc: gregkh@linuxfoundation.org, devel@driverdev.osuosl.org,
	kernel-list@raspberrypi.com, linux-kernel@vger.kernel.org,
	laurent.pinchart@ideasonboard.com,
	linux-arm-kernel@lists.infradead.org,
	linux-rpi-kernel@lists.infradead.org,
	dave.stevenson@raspberrypi.com, naush@raspberrypi.com
Subject: Re: [PATCH v2 28/47] staging: vchi: Get rid of vchiq_shim's message callback
Date: Mon, 31 Aug 2020 20:46:33 +0200	[thread overview]
Message-ID: <6071c2947095db72f5357f30f932dfa66442294a.camel@suse.de> (raw)
In-Reply-To: <20200828143103.2ljdrxk4py35ecu6@uno.localdomain>

Hi Jacopo, sorry if I'm a little late with my replies but I'm on vacation. I'll
be back Sept 7th, but wanted to reply since I don't want to stop your work.

On Fri, 2020-08-28 at 16:31 +0200, Jacopo Mondi wrote:
> Hi Nicolas,
> 
>    I'm working on a v2 of the bcm2835-isp support which was sent along
> with UNICAM v4l2 driver and some misc changes you have collected in
> this series. Reference to v1:
> https://lore.kernel.org/linux-media/20200504092611.9798-1-laurent.pinchart@ideasonboard.com/
> 
> On Mon, Jun 29, 2020 at 05:09:26PM +0200, Nicolas Saenz Julienne wrote:
> > As vchiq_shim's callback does nothing aside from pushing messages into
> > the service's queue, let's bypass it and jump directly to the service's
> > callbacks, letting them choose whether to use the message queue.
> 
> I admit this patch caused me some pain, as after a few days chasing
> why the ISP got stuck in importing buffers into the VPU through the vc-sm-cma
> driver I realized that this patch removed a significant part of the
> process..

Sorry for the pain, I made my best to keep the downstream code in mind, and
also to keep the amount of functional changes needed in the services minimal.
That said, getting rid of VCHI is, IMO, a necessary step towards making VCHIQ
upstreamable.

> > It turns out most services don't need to use the message queue, which
> > makes for simpler code in the end.
> > 
> > -
> > -	if (reason == VCHIQ_MESSAGE_AVAILABLE)
> > -		vchiq_msg_queue_push(service->handle, header);
> 
> This one '-.-
> 
> I wonder if this was intentional and it is expected all services now
> handle the message queue (it seems so according to your commit
> message).

Indeed, it was intentional. Upstream services (mmal & audio) don't need it and
IIRC vchiq's ioctl interface has it's own queue implementation. So I figured it
would be best to keep its usage optional.

> Fair enough, I could add in the vc-sma-cma callback a call to
> vchiq_msg_queue_push() but I wonder if it wouldn't be better to do so
> in vchiq_core.c:parse_rx_slots(), just before calling the service's
> callback, so that this has not to be re-implemented in all services.
> 
> What would you suggest ?

Actually, in hindsight my suggestion would be to get rid of the vchiq message
queue altogether[1], keeping VCHIQ as simple as possible is a must if we want
to get it upstream, and since vc-sma-cma is the only queue user there is little
benefit to having a generic implementation. Let the service do it's own custom
queueing and just force all services to release the messages when they see fit.
It'll make for a simpler VCHIQ usage.

> And by the way I see mmal-vchiq.c:service_callback() releasing
> messages but never pushing them to the queue. Is this intended as well ?

Yes, sorry, it's pretty confusing. That call, vchiq_release_message(), has
nothing to do with the queue. It's the call that really gets the core to
release the message from its slot and the only mandatory thing to do after
receiving a message.

All in all VCHIQ isn't documented an pretty cryptic in its design. I don't
claim to be an expert. So feel free to contradict me anytime, I'll be happy to
work out something that fits all of us.

Regards,
Nicolas

[1] Here I mean vchiq_msg_queue_push() & vchiq_msg_hold()


  reply	other threads:[~2020-08-31 18:46 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-29 15:08 [PATCH v2 00/47] staging: vchiq: Getting rid of the vchi/vchiq split Nicolas Saenz Julienne
2020-06-29 15:08 ` [PATCH v2 01/47] staging: mmal-vchiq: Make timeout a defined parameter Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 02/47] staging: mmal-vchiq: Make a mmal_buf struct for passing parameters Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 03/47] staging: mmal-vchiq: Fixup vchiq-mmal include ordering Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 04/47] staging: mmal-vchiq: Fix client_component for 64 bit kernel Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 05/47] staging: mmal-vchiq: Always return the param size from param_get Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 06/47] staging: mmal-vchiq: If the VPU returns an error, don't negate it Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 07/47] staging: mmal-vchiq: Fix formatting errors in mmal_parameters.h Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 08/47] staging: vchiq_arm: Add a matching unregister call Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 09/47] staging: vchi: Get rid of all useless callback reasons Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 10/47] staging: vchi: Get rid of vchi_msg_peek() Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 11/47] staging: vchi: Get rid of struct vchi_instance_handle Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 12/47] staging: vchi: Unify struct shim_service and struct vchi_service_handle Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 13/47] staging: vc04_services: bcm2835-audio: Use vchi_msg_hold() Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 14/47] staging: vchi: Get rid of vchi_msg_dequeue() Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 15/47] staging: vchi_common: Get rid of all unused definitions Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 16/47] staging: vchi: Get rid of unnecessary defines Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 17/47] staging: vc04_services: Get rid of vchi_cfg.h Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 18/47] staging: vchi: Get rid of flags argument in vchi_msg_hold() Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 19/47] staging: vchi: Use enum vchiq_bulk_mode instead of vchi's transmission flags Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 20/47] staging: vchi: Use vchiq's enum vchiq_reason Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 21/47] staging: vchi: Get rid of effect less expression Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 22/47] staging: vchiq: Introduce vchiq_validate_params() Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 23/47] staging: vchiq: Move message queue into struct vchiq_service Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 24/47] staging: vchiq: Get rid of vchiq_util.h Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 25/47] staging: vchi: Expose struct vchi_service Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 26/47] staging: vchiq: Export vchiq_get_service_userdata() Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 27/47] staging: vchiq: Export vchiq_msg_queue_push Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 28/47] staging: vchi: Get rid of vchiq_shim's message callback Nicolas Saenz Julienne
2020-08-28 14:31   ` Jacopo Mondi
2020-08-31 18:46     ` Nicolas Saenz Julienne [this message]
2020-06-29 15:09 ` [PATCH v2 29/47] staging: vchiq: Don't use a typedef for vchiq_callback Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 30/47] staging: vchi: Use struct vchiq_service_params Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 31/47] staging: vchi: Get rid of struct vchi_service Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 32/47] staging: vchiq: Pass vchiq's message when holding a message Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 33/47] staging: vchi: Rework vchi_msg_hold() to match vchiq_msg_hold() Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 34/47] staging: vchiq: Unify fourcc definition mechanisms Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 35/47] staging: vchi: Get rid of struct vchiq_instance forward declaration Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 36/47] staging: vchi: Don't include vchiq_core.h Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 37/47] staging: vchiq: Get rid of unnecessary definitions in vchiq_if.h Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 38/47] staging: vchiq: Make vchiq_add_service() local Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 39/47] staging: vchiq: Move definitions only used by core into core header Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 40/47] staging: vchi: Get rid of vchi_bulk_queue_receive() Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 41/47] staging: vchi: Get rid of vchi_bulk_queue_transmit() Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 42/47] staging: vchi: Move vchi_queue_kernel_message() into vchiq Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 43/47] staging: vchiq: Get rid of vchi Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 44/47] staging: vchiq: Move conditional barrier definition into vchiq_core.h Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 45/47] staging: vchiq: Use vchiq.h as the main header file for services Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 46/47] staging: vchiq: Move defines into core header Nicolas Saenz Julienne
2020-06-29 15:09 ` [PATCH v2 47/47] staging: vchiq: Move vchiq.h into include directory Nicolas Saenz Julienne

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=6071c2947095db72f5357f30f932dfa66442294a.camel@suse.de \
    --to=nsaenzjulienne@suse.de \
    --cc=dave.stevenson@raspberrypi.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jacopo@jmondi.org \
    --cc=kernel-list@raspberrypi.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rpi-kernel@lists.infradead.org \
    --cc=naush@raspberrypi.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).