Commit graph

3 commits

Author SHA1 Message Date
Chris Lew
85c2118a11 neuron: block_client: Wait for channel to init
Wait until all conditions are met instead of busy looping to check if
the channels are finished initializing.

Change-Id: I50bd3bad6ccf3f4957ed0a98cdceed45d49fe851
Acked-by: Chris Henroid <chenroid@qti.qualcomm.com>
Signed-off-by: Chris Lew <clew@codeaurora.org>
2020-04-22 16:14:07 -07:00
Chris Lew
a0a416b179 neuron: block_client: Fix init loop
Depending on timing there is a chance the channel initialization will
happen at different intervals. When this happens, the first channel
wakeup will be cleared by the init loop and never be set again by the
channel init.  This leads to a stall in init because both channels
will never have both their wakeups set to signal channel init done.

Change-Id: I435e78c3e4b83cf6b827d3827f35d1e6a1b297fa
Acked-by: Chris Henroid <chenroid@qti.qualcomm.com>
Signed-off-by: Chris Lew <clew@codeaurora.org>
2020-04-21 11:42:06 -07:00
Chris Lew
6493564fe3 net: Add Neuron Framework
Neuron is a device-sharing framework which is used by guests of the
haven hypervisor to serve or access shared I/O devices and other
inter-VM services.

There are three main layers that make up a neuron service.
channel - the physical layer transport that uses the hypervisor
          provided transports.

protocol - defines the syntax and semantics to virtualize a specific
           device across VMs. Block and Net are examples of protocols.

application - integrates the neuron service components into the rest of
              the system. There would be front and back end application
              drivers for the net protocol.

Change-Id: Ic7278fdaee1cd30147e91e1126643bce79c05e52
Signed-off-by: Chris Lew <clew@codeaurora.org>
2020-03-30 21:44:24 -07:00