1. 31 8月, 2012 15 次提交
    • S
      console: Fix warning from clang (and potential crash) · 8bd6b06d
      Stefan Weil 提交于
      ccc-analyzer reports this warning:
      
      console.c:1090:29: warning: Dereference of null pointer
              if (active_console->cursor_timer) {
                                  ^
      
      Function console_select allows active_console to be NULL,
      but would crash when accessing cursor_timer. Fix this.
      Reviewed-by: NJan Kiszka <jan.kiszka@siemens.com>
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      8bd6b06d
    • A
      Merge remote-tracking branch 'kraxel/usb.61' into staging · 23aec600
      Anthony Liguori 提交于
      * kraxel/usb.61:
        uas: move transfer kickoff
        ehci: Fix interrupt endpoints no longer working
        ehci: handle TD deactivation of inflight packets
        ehci: add ehci_cancel_queue()
        ehci: simplify ehci_state_executing
        ehci: Remove unnecessary ehci_flush_qh call
        ehci: Schedule async-bh when IAAD bit gets set
        ehci: Fix NULL ptr deref when unplugging an USB dev with an iso stream active
        usb: unique packet ids
        usb: Halt ep queue en cancel pending packets on a packet error
        fix info qtree indention
      23aec600
    • A
      Merge remote-tracking branch 'kwolf/for-anthony' into staging · cdedd9d8
      Anthony Liguori 提交于
      * kwolf/for-anthony:
        qemu-iotests: add backing file smaller than image test case
        stream: complete early if end of backing file is reached
        qed: refuse unaligned zero writes with a backing file
      cdedd9d8
    • G
      uas: move transfer kickoff · 347e40ff
      Gerd Hoffmann 提交于
      Kick next scsi transfer from request release callback instead of command
      completion callback, otherwise we might get stuck in case scsi_req_unref()
      doesn't release the request instantly due to someone else holding a
      reference too.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      347e40ff
    • H
      ehci: Fix interrupt endpoints no longer working · adf47834
      Hans de Goede 提交于
      One of the recent changes (likely the addition of queuing support) has broken
      interrupt endpoints, this patch fixes this.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      adf47834
    • G
      ehci: handle TD deactivation of inflight packets · 287fd3f1
      Gerd Hoffmann 提交于
      Check the TDs of inflight packets, cancel
      packets in case the guest clears the active bit.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      287fd3f1
    • G
      ehci: add ehci_cancel_queue() · c7cdca3b
      Gerd Hoffmann 提交于
      Factor out function to cancel all packets of a queue.
      No behavior change.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      c7cdca3b
    • H
      ehci: simplify ehci_state_executing · 574ef171
      Hans de Goede 提交于
      ehci_state_executing does not need to check for p->usb_status == USB_RET_ASYNC
      or USB_RET_PROCERR, since ehci_execute_complete already does a similar check
      and will trigger an assert if either value is encountered.
      
      USB_RET_ASYNC should never be the packet status when execute_complete runs
      for obvious reasons, and USB_RET_PROCERR is only used by ehci_state_execute /
      ehci_execute not by ehci_state_executing / ehci_execute_complete.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      574ef171
    • H
      ehci: Remove unnecessary ehci_flush_qh call · 53dd6f70
      Hans de Goede 提交于
      ehci_qh_do_overlay() already calls ehci_flush_qh() before it returns, calling
      it twice is useless.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      53dd6f70
    • H
      ehci: Schedule async-bh when IAAD bit gets set · a1c3e4b8
      Hans de Goede 提交于
      After the "ehci: Print a warning when a queue unexpectedly contains packets
      on cancel" commit. Under certain reproducable conditions I was getting the
      following message: "EHCI: Warning queue not empty on queue reset".
      
      After aprox. 8 hours of debugging I've finally found the cause. The Linux EHCI
      driver has an IAAD watchdog, to work around certain EHCI hardware sometimes
      not acknowledging the doorbell at all. This watchdog has a timeout of 10 ms,
      which is less then the time between 2 runs through the async schedule when
      async_stepdown is at its highest value.
      
      Thus the watchdog can trigger, after which Linux clears the IAAD bit and
      re-uses the QH. IOW we were not properly detecting the unlink of the qh, due
      to us missing (ignoring for more then 10 ms) the IAAD command, which triggered
      the warning.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      a1c3e4b8
    • H
    • G
      usb: unique packet ids · e983395d
      Gerd Hoffmann 提交于
      This patch adds IDs to usb packets.  Those IDs are (a) supposed to be
      unique for the lifecycle of a packet (from packet setup until the packet
      is either completed or canceled) and (b) stable across migration.
      
      uhci, ohci, ehci and xhci use the guest physical address of the transfer
      descriptor for this.
      
      musb needs a different approach because there is no transfer descriptor.
      But musb also doesn't support pipelining, so we have never more than one
      packet per endpoint in flight.  So we go create an ID based on endpoint
      and device address.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      e983395d
    • H
      usb: Halt ep queue en cancel pending packets on a packet error · 0132b4b6
      Hans de Goede 提交于
      For controllers which queue up more then 1 packet at a time, we must halt the
      ep queue, and inside the controller code cancel all pending packets on an
      error.
      
      There are multiple reasons for this:
      1) Guests expect the controllers to halt ep queues on error, so that they
      get the opportunity to cancel transfers which the scheduled after the failing
      one, before processing continues
      
      2) Not cancelling queued up packets after a failed transfer also messes up
      the controller state machine, in the case of EHCI causing the following
      assert to trigger: "assert(p->qtdaddr == q->qtdaddr)" at hcd-ehci.c:2075
      
      3) For bulk endpoints with pipelining enabled (redirection to a real USB
      device), we must cancel all the transfers after this a failed one so that:
      a) If they've completed already, they are not processed further causing more
         stalls to be reported, originating from the same failed transfer
      b) If still in flight, they are cancelled before the guest does
         a clear stall, otherwise the guest and device can loose sync!
      
      Note this patch only touches the ehci and uhci controller changes, since AFAIK
      no other controllers actually queue up multiple transfer. If I'm wrong on this
      other controllers need to be updated too!
      
      Also note that this patch was heavily tested with the ehci code, where I had
      a reproducer for a device causing a transfer to fail. The uhci code is not
      tested with actually failing transfers and could do with a thorough review!
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      0132b4b6
    • G
      fix info qtree indention · da9fbe76
      Gerd Hoffmann 提交于
      Without the patch bus properties are are not in line with the other
      properties:
      
      [ ... ]
        dev: fw_cfg, id ""
          ctl_iobase = 0x510
          data_iobase = 0x511
            irq 0
            mmio ffffffffffffffff/0000000000000002
            mmio ffffffffffffffff/0000000000000001
      [ ... ]
      
      With the patch applied everything is lined up properly:
      
      [ ... ]
        dev: fw_cfg, id ""
          ctl_iobase = 0x510
          data_iobase = 0x511
          irq 0
          mmio ffffffffffffffff/0000000000000002
          mmio ffffffffffffffff/0000000000000001
      [ ... ]
      
      Needed to make the autotest qtree parser happy.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      da9fbe76
    • S
      w32: Fix broken build · b834b508
      Stefan Weil 提交于
      Commit ef8621b1 added an include
      file which is not available for MinGW compilations.
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      b834b508
  2. 30 8月, 2012 3 次提交
  3. 29 8月, 2012 16 次提交
  4. 28 8月, 2012 6 次提交