Skip to content
Snippets Groups Projects
  1. Feb 12, 2014
  2. Feb 10, 2014
  3. Feb 06, 2014
  4. Dec 19, 2013
  5. Dec 18, 2013
  6. Sep 15, 2013
    • Nadav Har'El's avatar
      Add copyright statement to drivers/* · c0e0ebf2
      Nadav Har'El authored
      Add Cloudius copyright and license statement to drivers/*.
      
      A couple of header files were based on Linux's BSD-licensed header files
      (e.g., include/uapi/linux/virtio_net.h) so they included the BSD license,
      but not any copyright statement, so we can just replace that by our own
      statement of the BSD license.
      c0e0ebf2
  7. Jul 17, 2013
  8. Jul 11, 2013
    • Dor Laor's avatar
      Move from a request array approach back to allocation. · 5bcb95d9
      Dor Laor authored
      virtio_blk pre-allocates requests into a cache to avoid re-allocation
      (possibly an unneeded optimization with the current allocator).  However,
      it doesn't take into account that requests can be completed out-of-order,
      and simply reuses requests in a cyclic order. Noted by Avi although
      I had it made using a peak into the index ring but its too complex
      solution. There is no performance degradation w/ smp due to the good
      allocator we have today.
      5bcb95d9
  9. Jul 10, 2013
    • Dor Laor's avatar
      Allow parallel execution of {add|get}_buff, prevent fast path allocs · 350fa518
      Dor Laor authored
      virtio-vring and it's users (net/blk) were changed so no request
      header will be allocated on run time except for init. In order to
      do that, I have to change get_buf and break it into multiple parts:
      
              // Get the top item from the used ring
              void* get_buf_elem(u32 *len);
              // Let the host know we consumed the used entry
              // We separate that from get_buf_elem so no one
              // will re-cycle the request header location until
              // we're finished with it in the upper layer
              void get_buf_finalize();
              // GC the used items that were already read to be emptied
              // within the ring. Should be called by add_buf
              // It was separated from the get_buf flow to allow parallelism of the two
              void get_buf_gc();
      
      As a result, it was simple to get rid of the shared lock that protected
      _avail_head variable before. Today only the thread that calls add_buf
      updates this variable (add_buf calls get_buf_gc internally).
      
      There are two new locks instead:
        - virtio-net tx_gc lock - very rarely it can be accessed
          by the tx_gc thread or normally by the tx xmit thread
        - virtio-blk make_requests - there are parallel requests
      350fa518
    • Dor Laor's avatar
      Trivial: Move code above, preparation for preventing past path allocations for... · cc8cc19e
      Dor Laor authored
      Trivial: Move code above, preparation for preventing past path allocations for the virtio request data
      cc8cc19e
  10. Jun 23, 2013
  11. Mar 07, 2013
  12. Mar 05, 2013
    • Avi Kivity's avatar
      virtio: fold virtio_device into virtio_driver · 5c5b95fe
      Avi Kivity authored
      virtio_device is now a simple set of accessors around pci::device.  Since
      the only users of virtio_device are virtio_driver and its subclasses, we
      can simply fold it into virtio_driver, eliminating the middleman.
      
      Resolves two FIXMEs where we leaked virtio_device objects created during
      probing.
      5c5b95fe
  13. Feb 28, 2013
    • Avi Kivity's avatar
      driver: remove load/unload methods · 649672f4
      Avi Kivity authored
      These are subsumed into the driver constructor/destrutor.
      649672f4
    • Avi Kivity's avatar
      drivers: switch back to device enumeration, rather than driver enumeration · c86b2969
      Avi Kivity authored
      Driver enumeration requires instantiating a driver even for devices which
      are not present; and if a device is present multiple times, we need to
      pre-create multiple driver instances, which is awkward.  Further, driver
      life-cycle is complicated, with separation between instantiation and binding
      to a device.
      
      Switch (back) to the traditional device-driven model, where we iterate over
      all devices, try to find a matching driver factory, and when found, call it
      to instantiate the driver and bind to the device.
      c86b2969
  14. Feb 21, 2013
  15. Feb 17, 2013
  16. Feb 12, 2013
  17. Feb 05, 2013
  18. Feb 01, 2013
  19. Jan 31, 2013
  20. Jan 30, 2013
  21. Jan 27, 2013
  22. Jan 24, 2013
  23. Jan 21, 2013
  24. Jan 20, 2013
  25. Jan 15, 2013
Loading