* Import drivers using VCHI.

VCHI is just a tool to let drivers talk to the firmware.  Here are
some of the ones we want:

  - vc_mem (https://github.com/raspberrypi/linux/blob/rpi-4.4.y/drivers/char/broadcom/vc_mem.c)

  This driver is what the vcdbg userspace program uses to set up its
  requests to the firmware, which are transmitted across VCHIQ.  vcdbg
  is really useful for debugging firmware interactions.

  - VCSM (https://github.com/raspberrypi/linux/tree/rpi-4.4.y/drivers/char/broadcom/vc_sm)

  This driver is used for talking about regions of VC memory across
  firmware protocols including VCHI.  We'll want to extend this driver
  to manage these buffers as dmabufs so that we can zero-copy import
  camera images into vc4 for rendering/display.

* Fix kernel module support

Even the VPU firmware doesn't support a VCHI re-connect, the driver
should properly handle a module unload. This also includes that all
resources must be freed (kthreads, debugfs entries, ...) and global
variables avoided.

* Cleanup logging mechanism

The driver should probably be using the standard kernel logging mechanisms
such as dev_info, dev_dbg, and friends.

* Documentation

A short top-down description of this driver's architecture (function of
kthreads, userspace, limitations) could be very helpful for reviewers.

* Review and comment memory barriers

There is a heavy use of memory barriers in this driver, it would be very
beneficial to go over all of them and, if correct, comment on their merits.
Extra points to whomever confidently reviews the remote_event_*() family of
functions.

* Get rid of custom function return values

Most functions use a custom set of return values, we should force proper Linux
error numbers. Special care is needed for VCHIQ_RETRY.

* Reformat core code with more sane indentations

The code follows the 80 characters limitation yet tends to go 3 or 4 levels of
indentation deep making it very unpleasant to read. This is specially relevant
in the character driver ioctl code and in the core thread functions.

* Get rid of all non essential global structures and create a proper per
device structure

The first thing one generally sees in a probe function is a memory allocation
for all the device specific data. This structure is then passed all over the
driver. This is good practice since it makes the driver work regardless of the
number of devices probed.

* Clean up Sparse warnings from __user annotations. See
vchiq_irq_queue_bulk_tx_rx(). Ensure that the address of "&waiter->bulk_waiter"
is never disclosed to userspace.

* Fix behavior of message handling

The polling behavior of vchiq_bulk_transmit(), vchiq_bulk_receive() and
vchiq_queue_kernel_message() looks broken. A possible signal should be
propagated back to user space to let the calling task handle it before
retrying. Hopefully these msleep(1) shouldn't be necessary anymore.

https://lore.kernel.org/linux-staging/CAK8P3a3HGm1cPo4sW9fOY4E8AN8yAq3tevXxU5m8bmtmsU8WKw@mail.gmail.com/
