Merge "Improve documentation related to execution."
diff --git a/current.txt b/current.txt
index f4aa57e..ce3d7b5 100644
--- a/current.txt
+++ b/current.txt
@@ -478,4 +478,6 @@
 
 # ABI preserving changes to HALs during Android R
 b69a7615c508acf5c5201efd1bfa3262167874fc3594e2db5a3ff93addd8ac75 android.hardware.keymaster@4.0::IKeymasterDevice
+ad431c8de51c07934a068e3043d8dd0537ac4d3158627706628b123f42df48dc android.hardware.neuralnetworks@1.0::IPreparedModel
+aafcc10cf04ab247e86d4582586c71c6b4c2b8c479241ffa7fe37deb659fc942 android.hardware.neuralnetworks@1.2::IPreparedModel
 1a6e2bd289f22931c526b21916910f1d4c436b7acb9556e4243de4ce8e6cc2e4 android.hardware.soundtrigger@2.0::ISoundTriggerHwCallback
diff --git a/neuralnetworks/1.0/IPreparedModel.hal b/neuralnetworks/1.0/IPreparedModel.hal
index ecaa7f8..5320050 100644
--- a/neuralnetworks/1.0/IPreparedModel.hal
+++ b/neuralnetworks/1.0/IPreparedModel.hal
@@ -42,6 +42,13 @@
      * execute function. This callback must be provided with the ErrorStatus of
      * the execution.
      *
+     * If the launch is successful, the caller must not change the content of
+     * any data object referenced by 'request' (described by the
+     * {@link DataLocation} of a {@link RequestArgument}) until the
+     * asynchronous task has invoked the callback object. The asynchronous task
+     * must not change the content of any of the data objects corresponding to
+     * 'request' inputs.
+     *
      * If the prepared model was prepared from a model wherein all
      * tensor operands have fully specified dimensions, and the inputs
      * to the function are valid, then the execution should launch
diff --git a/neuralnetworks/1.2/IPreparedModel.hal b/neuralnetworks/1.2/IPreparedModel.hal
index 5d2d80f..ba16334 100644
--- a/neuralnetworks/1.2/IPreparedModel.hal
+++ b/neuralnetworks/1.2/IPreparedModel.hal
@@ -47,6 +47,13 @@
      * execute_1_2 function. This callback must be provided with the ErrorStatus of
      * the execution.
      *
+     * If the launch is successful, the caller must not change the content of
+     * any data object referenced by 'request' (described by the
+     * {@link @1.0::DataLocation} of a {@link @1.0::RequestArgument}) until the
+     * asynchronous task has invoked the callback object. The asynchronous task
+     * must not change the content of any of the data objects corresponding to
+     * 'request' inputs.
+     *
      * If the prepared model was prepared from a model wherein all
      * tensor operands have fully specified dimensions, and the inputs
      * to the function are valid, then the execution should launch
@@ -90,6 +97,12 @@
      * perform the execution, and must not return until the execution is
      * complete.
      *
+     * The caller must not change the content of any data object referenced by
+     * 'request' (described by the {@link @1.0::DataLocation} of a
+     * {@link @1.0::RequestArgument}) until executeSynchronously
+     * returns. executeSynchronously must not change the content of any of the
+     * data objects corresponding to 'request' inputs.
+     *
      * If the prepared model was prepared from a model wherein all tensor
      * operands have fully specified dimensions, and the inputs to the function
      * are valid, then the execution should complete successfully
@@ -135,9 +148,15 @@
      * @param callback A callback object used to retrieve memory resources
      *                 corresponding to a unique identifiers ("slots").
      * @param requestChannel Used by the client to send a serialized Request to
-     *                       the Burst for execution. requestChannel must not be
-     *                       used to pass a second Request object until a result
-     *                       has been received from resultChannel.
+     *                       the Burst for execution. The client must not change
+     *                       the content of any data object referenced by the
+     *                       Request (described by the {@link @1.0::DataLocation}
+     *                       of an {@link OperandInformation}) until a result
+     *                       has been received from resultChannel. Execution
+     *                       must not change the content of any of the data
+     *                       objects corresponding to Request inputs. requestChannel
+     *                       must not be used to pass a second Request object
+     *                       until a result has been received from resultChannel.
      * @param resultChannel Used by the service to return the results of an
      *                      execution to the client: the status of the execution
      *                      and OutputShape of all output tensors. resultChannel