<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hi,<br>
    <br>
    I'm running 15.11 with a base-hw kernel on a TI Am335x SoC. <br>
    <br>
    I modified an existing application I had previously created, whose
    design had an object which accessed processors external to the host
    running Genode, via mmio.  The modification involved implementing
    the external processor access code in a driver and creating clients
    to access the driver using the same server/client coding pattern
    used in most Genode drivers.  (This would give me control over the
    running priority of the driver and hence the response time of the
    driver code.) The driver would dynamically use the libc library for
    file access.<br>
    <br>
    In the scenario I have, five drivers are running providing uart,
    timer, gpio, mmc, and pwm services. Now with this additional driver
    (named pruss_drv) running, I experience hard to follow messages
    related to ram quota allocations in the sys log (which is attached)
    as follows:<br>
    <br>
    1. Core hands over the available RAM amount to init as shown in this
    log message-<br>
            <i>int main(): transferred 501 MB to init<br>
    </i>(This is correct and expected.<i>)<br>
    </i><br>
    2. When the new driver runs, after all the other drivers are
    launched, an insufficient quota  message is  issued-<br>
           <i> Insufficient quota for transfer: init -> pruss_drv</i><i><br>
    </i><i>            </i><i>have 40960, need 143360<br>
              [init] not enough quota for a donation of 143360
      bytes                        <br>
              [init -> pruss_drv] resource_request: ram_quota=143360<br>
              <br>
    </i>(Question about this output is what are these numbers telling
    me? Are these byte or KByte quantities<br>
    or what? The total ram quota requests in all the components in the
    run script is about 35 MBytes so there should be well over 400
    MBytes available to init at this point. And, changing the ram quotas
    in the run script or the  ram quota requested in the associated
    server connection does not change the value of these numbers, which
    I would have thought it would.)<br>
    <br>
    3<i>.</i> Then messages indicating that the emergency ram allocation
    had to be freed to satisfy the drivers request for ram-<i><br>
              [init -> pruss_drv] virtual void
      Genode::Platform_env::release(): used before <br>
              freeing
      emergency=503808                                                     
      <br>
              [init -> pruss_drv] virtual void
      Genode::Platform_env::release(): used after f<br>
                 reeing
      emergency=495616                                                      
      <br>
              [init] child "pruss_drv" requests resources:
      ram_quota=143360<br>
    </i>(Question: What situation has occurred to require this action
    for this new driver when the other five drivers that have just been
    installed did not invoke such an action? Again there should be
    plenty of ram available for allocation at this point in the
    execution. And, what units are these numbers in?)<i><br>
      <br>
    </i>4. Finally, another request for ram from the new driver is
    logged-<i><br>
              [init -> pruss_drv] resource_request:
      ram_quota=45056                         <br>
              [init] child "pruss_drv" requests resources:
      ram_quota=45056                  <br>
    </i>(Question: I assume this is for information only and not an
    indication of abnormal behavior and that the allocation was actually
    made. Is that correct?)<i><br>
      <br>
    </i>After these unexpected log messages the output from the new
    driver is as expected and it appears that the initialization code in
    the driver executed correctly. In the initialization, a pair of disk
    files, specified in config settings, are correctly read via
    libc_ffat and loaded into the external processors instruction
    memories and begin there execution<i>. </i>So the driver appears to
    be running correctly, at least initially.<i><br>
      <br>
    </i>Thanks in advance for any response.<br>
            Bob Stewart<i><br>
    </i><i></i>
  </body>
</html>