1. 12 11月, 2012 1 次提交
    • P
      scsi: do not return short responses for emulated commands · c8dcb531
      Paolo Bonzini 提交于
      The inquiry command, for the case of VPD=1, was returning short
      responses; the number of returned bytes was just the number of bytes
      in the request, without padding to the specified allocation length
      with zero bytes.  This is usually harmless, but it is a violation
      of the SCSI specification.
      
      To fix this, always pad with zero bytes to r->cmd.xfer in
      scsi_disk_emulate_command, and return at most r->buflen bytes
      (the size of the buffer for command data) rather than at most
      buflen bytes (the number of bytes that was filled in).
      
      Before this patch, "strace sg_inq -p0x83 /dev/sda" would report a
      non-zero resid value.  After this patch, it reports resid=0.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      c8dcb531
  2. 11 11月, 2012 2 次提交
  3. 10 11月, 2012 14 次提交
  4. 09 11月, 2012 1 次提交
  5. 06 11月, 2012 2 次提交
    • P
      tools: initialize main loop before block layer · 2592c59a
      Paolo Bonzini 提交于
      Tools were broken because they initialized the block layer while
      qemu_aio_context was still NULL.
      Reported-by: Nmalc <av1474@comtv.ru>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: Nmalc <av1474@comtv.ru>
      2592c59a
    • M
      tcg/ppc32: Use trampolines to trim the code size for mmu slow path accessors · c878da3b
      malc 提交于
      mmu access looks something like:
      
      <check tlb>
      if miss goto slow_path
      <fast path>
      done:
      ...
      
      ; end of the TB
      slow_path:
       <pre process>
       mr r3, r27         ; move areg0 to r3
                          ; (r3 holds the first argument for all the PPC32 ABIs)
       <call mmu_helper>
       b $+8
       .long done
       <post process>
       b done
      
      On ppc32 <call mmu_helper> is:
      
      (SysV and Darwin)
      
      mmu_helper is most likely not within direct branching distance from
      the call site, necessitating
      
      a. moving 32 bit offset of mmu_helper into a GPR ; 8 bytes
      b. moving GPR to CTR/LR                          ; 4 bytes
      c. (finally) branching to CTR/LR                 ; 4 bytes
      
      r3 setting              - 4 bytes
      call                    - 16 bytes
      dummy jump over retaddr - 4 bytes
      embedded retaddr        - 4 bytes
               Total overhead - 28 bytes
      
      (PowerOpen (AIX))
      a. moving 32 bit offset of mmu_helper's TOC into a GPR1 ; 8 bytes
      b. loading 32 bit function pointer into GPR2            ; 4 bytes
      c. moving GPR2 to CTR/LR                                ; 4 bytes
      d. loading 32 bit small area pointer into R2            ; 4 bytes
      e. (finally) branching to CTR/LR                        ; 4 bytes
      
      r3 setting              - 4 bytes
      call                    - 24 bytes
      dummy jump over retaddr - 4 bytes
      embedded retaddr        - 4 bytes
               Total overhead - 36 bytes
      
      Following is done to trim the code size of slow path sections:
      
      In tcg_target_qemu_prologue trampolines are emitted that look like this:
      
      trampoline:
      mfspr r3, LR
      addi  r3, 4
      mtspr LR, r3      ; fixup LR to point over embedded retaddr
      mr    r3, r27
      <jump mmu_helper> ; tail call of sorts
      
      And slow path becomes:
      
      slow_path:
       <pre process>
       <call trampoline>
       .long done
       <post process>
       b done
      
      call                    - 4 bytes (trampoline is within code gen buffer
                                         and most likely accessible via
                                         direct branch)
      embedded retaddr        - 4 bytes
               Total overhead - 8 bytes
      
      In the end the icache pressure is decreased by 20/28 bytes at the cost
      of an extra jump to trampoline and adjusting LR (to skip over embedded
      retaddr) once inside.
      Signed-off-by: Nmalc <av1474@comtv.ru>
      c878da3b
  6. 05 11月, 2012 2 次提交
  7. 04 11月, 2012 1 次提交
  8. 03 11月, 2012 17 次提交