1. 14 6月, 2011 18 次提交
    • G
      usb-ehci: itd handling fixes. · e654887f
      Gerd Hoffmann 提交于
      This patch fixes a bunch of issues in the itd descriptor handling.
      Most important fix is to handle transfers which cross page borders
      correctly by looking up the address of the next page.  Luckily the
      linux uses physically contigous memory so the data used to hits the
      correct location even with this bug instead of corrupting guest
      memory.  Also the transfer length updates for outgoing transfers wasn't
      correct.
      
      While being at it DPRINTFs have been replaced by tracepoints.
      
      The isoch_pause logic has been disabled.  Not clear to me which propose
      this serves and I think it is incorrect too as we just skip processing
      itds.  Even when no xfer happens we have to clear the active bit.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      e654887f
    • K
      The USB tablet should not claim boot protocol support. · 69bf405b
      Kevin O'Connor 提交于
      The USB tablet advertises that it supports the "boot" protocol.
      However, its reports aren't "boot" protocol compatible.  So, it
      shouldn't claim that.
      Signed-off-by: NKevin O'Connor <kevin@koconnor.net>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      69bf405b
    • K
      Fix USB mouse Set_Protocol behavior · 46115ac4
      Kevin O'Connor 提交于
      The QEMU USB mouse claims to support the "boot" protocol
      (bInterfaceSubClass is 1).  However, the mouse rejects the
      Set_Protocol command.
      
      The qemu mouse does support the "boot" protocol specification, so a
      simple fix is to enable the Set_Protocol request.
      Signed-off-by: NKevin O'Connor <kevin@koconnor.net>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      46115ac4
    • G
      usb-ehci: drop EXECUTING checks. · d0539307
      Gerd Hoffmann 提交于
      The state machine doesn't stop in EXECUTING state any more when async
      packets are in flight, so the checks are not needed any more and can
      be dropped.
      
      Also kick out the check for the frame timer.  As we don't stop & sleep
      any more on async packets this is obsolete.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      d0539307
    • G
      usb: cancel async packets on unplug · 07771f6f
      Gerd Hoffmann 提交于
      This patch adds USBBusOps struct with (for now) only a single callback
      which is called when a device is about to be destroyed.  The USB Host
      adapters are implementing this callback and use it to cancel any async
      requests which might be in flight before the device actually goes away.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      07771f6f
    • H
    • G
      usb-ehci: fix error handling. · d2bd525f
      Gerd Hoffmann 提交于
      Set the correct bits for nodev, stall and babble errors.
      Raise errint irq.  Fix state transition from WRITEBACK
      to the next state.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      d2bd525f
    • G
      usb-ehci: fix offset writeback in ehci_buffer_rw · ba7cb5a8
      Gerd Hoffmann 提交于
      Two bugs at once:
      
      First the mask is backwards, so the it used to keeps the offset and
      clears the page address, which is not what we need when we update the
      offset.
      
      Second the offset calculation is wrong in case head isn't page aligned.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      ba7cb5a8
    • G
      usb-ehci: multiqueue support · 8ac6d699
      Gerd Hoffmann 提交于
      This patch adds support for keeping multiple queues going at the same
      time.  One slow device will not affect other devices any more.
      
      The patch adds code to manage EHCIQueue structs.  It also does a number
      of changes to the state machine:
      
       * The state machine will never ever stop in EXECUTING any more.
         Instead it will continue with the next queue (aka HORIZONTALQH) when
         the usb device returns USB_RET_ASYNC.
       * The state machine will stop processing when it figures it walks in
         circles (easy to figure now that we have a EHCIQueue struct for each
         QH we've processed).  The bailout logic should not be needed any
         more.  For now it is still in, but will assert() in case it triggers.
       * The state machine will just skip queues with a async USBPacket in
         flight.
       * The state machine will resume processing as soon as the async
         USBPacket is finished.
      
      The patch also takes care to flush the QH struct back to guest memory
      when needed, so we don't get stale data when (re-)loading it from guest
      memory in FETCHQH state.
      
      It also makes the writeback code to not touch the first three dwords of
      the QH struct as the EHCI must not write them.  This actually fixes a
      bug where QH chaining changes (next ptr) by the linux ehci driver where
      overwritten by the emulated EHCI.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      8ac6d699
    • G
      usb-ehci: add queue data struct · 0122f472
      Gerd Hoffmann 提交于
      Add EHCIQueue struct, move the fields needed to track the queue state
      into that struct.  Pass the new struct instead of ehci state down to
      functions which handle the queue state.  Lot of variable references have
      changed due to that without an actual functional change.
      
      Replace fetch_addr with two variables, one for async and one for
      periodic schedule.  Add functions to get and set the fetch address.
      
      Use EHCIQueue->usb_status (old name: EHCIState->exec_status) directly in
      ehci_execute_complete instead of passing around the status using a
      parameters and the return value.
      
      ehci_state_fetchqh returns a EHCIQueue struct now.
      
      No change in behavior.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      0122f472
    • G
      usb-ehci: trace buffer copy · f2c88dc1
      Gerd Hoffmann 提交于
      Add a trace point for buffer copies and drop the DPRINTF's.
      
      No change in behavior.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      f2c88dc1
    • G
      usb-ehci: improve mmio tracing · c4f8e211
      Gerd Hoffmann 提交于
      Add a separate tracepoint to log how register values change in response
      to a mmio write.  Especially useful for registers which have read-only
      or clear-on-write bits in them.
      
      No change in behavior.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      c4f8e211
    • G
      usb-ehci: trace port state · dcbd0b5c
      Gerd Hoffmann 提交于
      Trace usb port operations (attach, detach, reset),
      drop a few obsolete DPRINTF's.
      
      No change in behavior.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      dcbd0b5c
    • G
      usb-ehci: trace state machine changes · 26d53979
      Gerd Hoffmann 提交于
      Add functions to get and set the current state of the state machine,
      add tracepoints there to trace state transitions.  Add support for
      traceing the queue heads and transfer descriptors as we look at them.
      
      Drop a few DPRINTFs and all DPRINTF_ST lines, they are obsolete now.
      
      No change in behavior.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      26d53979
    • G
      usb-ehci: trace mmio and usbsts · 439a97cc
      Gerd Hoffmann 提交于
      This patch starts adding trace support to ehci.  It traces
      updates of the status register (USBSTS), mmio access and
      controller reset.
      
      It also adds functions to set and clear status register bits
      and puts them in use everywhere.
      
      Some DPRINTF's are dropped in favor of the new tracepoints.
      
      No change in behavior.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      439a97cc
    • G
      usb-linux: catch ENODEV in more places. · 41c01ee7
      Gerd Hoffmann 提交于
      Factor out disconnect code (called when a device disappears) to a
      separate function.  Add a check for ENODEV errno to a few more places
      to make sure we notice disconnects.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      41c01ee7
    • P
      configure: Detect and don't try to use older libcurl · 0b862ced
      Peter Maydell 提交于
      Older versions of libcurl don't have some of the features we try to
      use, in particular curl_multi_setopt(). Check for this in the 'is
      libcurl available?' configure test so we disable curl support if the
      library is too old.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NEdgar E. Iglesias <edgar.iglesias@gmail.com>
      0b862ced
    • P
      Changelog: Add explanatory note that this file is no longer updated · 5f04e368
      Peter Maydell 提交于
      Add an explanatory note to the top of Changelog pointing at the
      wiki and git history for changelogs for more recent releases.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NEdgar E. Iglesias <edgar.iglesias@gmail.com>
      5f04e368
  2. 11 6月, 2011 3 次提交
    • B
      doc: Minor typo fix. · caef55ed
      Brad Hards 提交于
      Thanks to agraf_, stefanha and Snader_LB for their IRC assistance.
      
      Thanks to Markus Armbruster and Alexander Graf (again) for their
      assistance with the second version of this patch. No patch is too
      simple to test...
      Signed-off-by: NBrad Hards <bradh@frogmouth.net>
      Signed-off-by: NEdgar E. Iglesias <edgar.iglesias@gmail.com>
      caef55ed
    • A
      sigfd: use pthread_sigmask · 09716e45
      Alexander Graf 提交于
      Qemu uses signalfd to figure out, if a signal occured without the need
      to actually receive the signal. Instead, it can read from the fd to receive
      its news.
      
      Now, we obviously don't always have signalfd around. Especially not on
      non-Linux systems. So what we do there is that we create a new thread,
      block that thread on all signals and simply call sigwait to wait for a
      signal we're interested in to occur.
      
      This all sounds great, but what we're really doing is:
      
          sigset_t all;
      
          sigfillset(&all);
          sigprocmask(SIG_BLOCK, &all, NULL);
      
      which - on Darwin - blocks all signals on the current _process_, not only
      on the current thread. To block signals on the thread, we can use
      pthread_sigmask().
      
      This patch does that, assuming that my above analysis is correct, and thus
      renders Qemu useable on Darwin again.
      Reported-by: NAndreas Färber <andreas.faerber@web.de>
      Acked-by: NPaolo Bonizni <pbonzini@redhat.com>
      CC: Jan Kiszka <jan.kiszka@siemens.com>
      CC: Anthony Liguori <anthony@codemonkey.ws>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      Signed-off-by: NEdgar E. Iglesias <edgar.iglesias@gmail.com>
      09716e45
    • E
      Merge remote branch 'rth/axp-next' into alpha-merge · 44829396
      Edgar E. Iglesias 提交于
      * rth/axp-next: (26 commits)
        target-alpha: Implement TLB flush primitives.
        target-alpha: Use a fixed frequency for the RPCC in system mode.
        target-alpha: Trap for unassigned and unaligned addresses.
        target-alpha: Remap PIO space for 43-bit KSEG for EV6.
        target-alpha: Implement cpu_alpha_handle_mmu_fault for system mode.
        target-alpha: Implement more CALL_PAL values inline.
        target-alpha: Disable interrupts properly.
        target-alpha: All ISA checks to use TB->FLAGS.
        target-alpha: Swap shadow registers moving to/from PALmode.
        target-alpha: Implement do_interrupt for system mode.
        target-alpha: Add IPRs to be used by the emulation PALcode.
        target-alpha: Use kernel mmu_idx for pal_mode.
        target-alpha: Add various symbolic constants.
        target-alpha: Use do_restore_state for arithmetic exceptions.
        target-alpha: Tidy up arithmetic exceptions.
        target-alpha: Tidy exception constants.
        target-alpha: Enable the alpha-softmmu target.
        target-alpha: Rationalize internal processor registers.
        target-alpha: Merge HW_REI and HW_RET implementations.
        target-alpha: Cleanup MMU modes.
        ...
      44829396
  3. 10 6月, 2011 1 次提交
  4. 09 6月, 2011 4 次提交
  5. 08 6月, 2011 14 次提交