diff options
author | Robert Mustacchi <rm@joyent.com> | 2013-01-10 19:14:49 +0000 |
---|---|---|
committer | Robert Mustacchi <rm@joyent.com> | 2013-01-10 19:14:49 +0000 |
commit | fe0e2a69df4f09222cee2b5841a0772ad84876aa (patch) | |
tree | 8a9ae10716da889797f109b8fcf05ac4b02e33ff | |
parent | 0ea9d5f4c8ad687c9957a2e134dce0dbeb1c8404 (diff) | |
download | illumos-kvm-cmd-fe0e2a69df4f09222cee2b5841a0772ad84876aa.tar.gz |
HVM-763 uhci timer does not properly set expire time201304182013040420130321201302072013012420130110
HVM-765 qemu needs -msave-args
HVM-767 qemu e1000g shouldn't botch popts
-rwxr-xr-x | build.sh | 4 | ||||
-rw-r--r-- | hw/e1000.c | 4 | ||||
-rw-r--r-- | hw/usb-uhci.c | 4 |
3 files changed, 7 insertions, 5 deletions
@@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) 2011, Joyent Inc., All rights reserved. +# Copyright (c) 2012, Joyent Inc., All rights reserved. # for dir in seabios vgabios kvm/test; do @@ -36,7 +36,7 @@ fi echo "==> Running configure" KVM_DIR="${KVM_DIR:-$(cd `pwd`/../kvm; pwd)}" CC="${CC:-${DESTDIR}/usr/bin/gcc}" -XCFLAGS="-fno-builtin -I${PNGINC} -isystem ${DESTDIR}/usr/include" +XCFLAGS="-fno-builtin -I${PNGINC} -isystem ${DESTDIR}/usr/include -msave-args" XLDFLAGS="-nodefaultlibs -L${PNGLIB} -L${DESTDIR}/usr/lib -L${DESTDIR}/lib" XLDFLAGS="${XLDFLAGS} -Wl,-zfatal-warnings -Wl,-zassert-deflib" XLDFLAGS="${XLDFLAGS} -lz -lm -lc" @@ -446,7 +446,9 @@ process_tx_desc(E1000State *s, struct e1000_tx_desc *dp) return; } else if (dtype == (E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D)) { // data descriptor - tp->sum_needed = le32_to_cpu(dp->upper.data) >> 8; + if (tp->size == 0) { + tp->sum_needed = le32_to_cpu(dp->upper.data) >> 8; + } tp->cptse = ( txd_lower & E1000_TXD_CMD_TSE ) ? 1 : 0; } else { // legacy descriptor diff --git a/hw/usb-uhci.c b/hw/usb-uhci.c index b384e1d..a05e015 100644 --- a/hw/usb-uhci.c +++ b/hw/usb-uhci.c @@ -441,6 +441,8 @@ static void uhci_ioport_writew(void *opaque, uint32_t addr, uint32_t val) case 0x00: if ((val & UHCI_CMD_RS) && !(s->cmd & UHCI_CMD_RS)) { /* start frame processing */ + s->expire_time = qemu_get_clock_ns(vm_clock) + + (get_ticks_per_sec() / FRAME_TIMER_FREQ); qemu_mod_timer(s->frame_timer, qemu_get_clock(vm_clock)); s->status &= ~UHCI_STS_HCHALTED; } else if (!(val & UHCI_CMD_RS)) { @@ -1134,8 +1136,6 @@ static int usb_uhci_common_initfn(UHCIState *s) usb_port_location(&s->ports[i].port, NULL, i+1); } s->frame_timer = qemu_new_timer(vm_clock, uhci_frame_timer, s); - s->expire_time = qemu_get_clock(vm_clock) + - (get_ticks_per_sec() / FRAME_TIMER_FREQ); s->num_ports_vmstate = NB_PORTS; qemu_register_reset(uhci_reset, s); |