Re: [Qemu-devel] [PATCH][v8] megasas: LSI Megaraid SAS HBA emulation

2012-01-13 Thread Paolo Bonzini

On 01/13/2012 10:46 AM, Hannes Reinecke wrote:

So, I should be removing the 'disable' keyword, then, correct?


Yes.


The strings are just there to avoid trace statement duplication. But
if that's not a problem then I can easily convert the strings to
individual trace statements.


No, don't bother.

Paolo



Re: [Qemu-devel] [PATCH][v8] megasas: LSI Megaraid SAS HBA emulation

2012-01-13 Thread Hannes Reinecke
On 01/12/2012 07:04 PM, Stefan Hajnoczi wrote:
> On Thu, Jan 12, 2012 at 03:45:59PM +0100, Paolo Bonzini wrote:
>> On 01/12/2012 11:43 AM, Hannes Reinecke wrote:
>>> +# hw/megasas.c
>>> +disable megasas_init_firmware(int xfer_len, uint64_t pa) "xfer len %d pa 
>>> %" PRIx64 " "
>>> +disable megasas_init_queue(uint64_t queue_pa, int queue_len, uint64_t 
>>> head, uint64_t tail, uint32_t flags) "queue at %" PRIx64 " len %d head %" 
>>> PRIx64 " tail %" PRIx64 " flags %x"
>>> +megasas_initq_map_failed(int frame) "scmd %d: failed to map queue"
>>> +megasas_initq_mismatch(int queue_len, int fw_cmds) "queue size %d max fw 
>>> cmds %d"
>>> +disable megasas_qf_found(unsigned int index, uint64_t pa) "found mapped 
>>> frame %x pa %" PRIx64 ""
>>> +disable megasas_qf_new(unsigned int index, void *cmd) "return new frame %x 
>>> cmd %p"
>>> +megasas_qf_failed(unsigned long pa) "all frames busy for frame %lx"
>>> +disable megasas_qf_enqueue(unsigned int index, unsigned int count, 
>>> uint64_t context, unsigned int tail, int busy) "enqueue frame %x count %d 
>>> countext %" PRIx64 " tail %x busy %d"
>>> +disable megasas_qf_update(unsigned int head, unsigned int busy) "update 
>>> reply queue head %x busy %d"
>>> +disable megasas_qf_dequeue(unsigned int index) "dequeue frame %x"
>>> +disable megasas_qf_map_failed(int cmd, unsigned long frame) "scmd %d: 
>>> frame %lu"
>>> +disable megasas_qf_complete_noirq(uint64_t context) "context %" PRIx64 " "
>>> +disable megasas_qf_complete(uint64_t context, unsigned int tail, unsigned 
>>> int offset, int busy, unsigned int doorbell) "context %" PRIx64 " tail %x 
>>> offset %d busy %d doorbell %x"
>>> +disable megasas_handle_frame(const char *cmd, uint64_t addr, uint64_t 
>>> context, uint32_t count) "MFI cmd %s addr %" PRIx64 " context %" PRIx64 " 
>>> count %d"
>>> +megasas_frame_busy(uint64_t addr) "frame %" PRIx64 " busy"
>>> +megasas_unhandled_frame_cmd(int cmd, uint8_t frame_cmd) "scmd %d: 
>>> Unhandled MFI cmd %x"
>>> +disable megasas_handle_scsi(const char *frame, const char *desc, int dev, 
>>> int lun, void *sdev, unsigned long size) "%s %s dev %x/%x sdev %p xfer %lu"
>>> +disable megasas_scsi_target_not_present(const char *frame, const char 
>>> *desc, int dev, int lun) "%s %s dev %x/%x target not present"
>>> +megasas_scsi_invalid_cdb_len(const char *frame, const char *desc, int dev, 
>>> int lun, int len) "%s %s dev %x/%x invalid cdb len %d"
>>> +megasas_scsi_overflow(int cmd, const char *dir, int bytes, int len) "scmd 
>>> %d: %s %d of %d bytes"
>>> +disable megasas_scsi_underflow(int cmd, const char *dir, int bytes, int 
>>> len) "scmd %d: %s %d of %d bytes"
>>> +megasas_scsi_req_alloc_failed(const char *frame, int dev, int lun) "%s dev 
>>> %x/%x req allocation failed"
>>> +disable megasas_scsi_start(int cmd, const char *desc, int len) "scmd %d: 
>>> %s %d bytes of data"
>>> +disable megasas_scsi_nodata(int cmd) "scmd %d: no data to be transferred"
>>> +disable megasas_scsi_complete(int cmd, uint32_t status, int len, int xfer) 
>>> "scmd %d: finished with status %x, len %u/%u"
>>> +disable megasas_command_complete(int cmd, uint32_t status) "scmd %d: 
>>> command completed, status %x"
>>> +disable megasas_handle_io(int cmd, const char *frame, int dev, int lun, 
>>> unsigned long lba, unsigned long count) "scmd %d: %s dev %x/%x lba %lx 
>>> count %lu"
>>> +disable megasas_io_target_not_present(int cmd, const char *frame, int dev, 
>>> int lun) "scmd %d: %s dev %x/%x LUN not present"
>>> +disable megasas_io_start(int cmd, const char *dir, unsigned long lba, 
>>> unsigned long count, unsigned long len) "scmd %d: %s start LBA %lx %lu 
>>> blocks (%lu bytes)"
>>> +disable megasas_io_complete(int cmd, uint32_t len) "scmd %d: %d bytes 
>>> completed"
>>> +disable megasas_io_copy(int cmd, const char *dir, int bytes, int len, 
>>> unsigned long offset) "scmd %d: %s %d of %d bytes, iov offset %lu"
>>> +disable megasas_io_continue(int cmd, int bytes) "scmd %d: %d bytes left"
>>> +megasas_iovec_map_failed(int cmd, int index, unsigned long iov_size) "scmd 
>>> %d: iovec %d size %lu"
>>> +megasas_iovec_sgl_overflow(int cmd, int index, int limit) "scmd %d: iovec 
>>> count %d limit %d"
>>> +megasas_iovec_sgl_underflow(int cmd, int index) "scmd %d: iovec count %d"
>>> +megasas_iovec_sgl_invalid(int cmd, int index, uint64_t pa, uint32_t len) 
>>> "scmd %d: invalid sgl element %d pa %" PRIx64 " len %u"
>>> +megasas_iovec_len(int cmd, const char *desc, int len, int limit) "scmd %d: 
>>> iovec %s len %d limit %d"
>>> +disable megasas_handle_dcmd(int cmd, int opcode) "scmd %d: MFI DCMD opcode 
>>> %x"
>>> +disable megasas_finish_dcmd(int cmd, int size) "scmd %d: MFI DCMD wrote %d 
>>> bytes"
>>> +megasas_dcmd_req_alloc_failed(int cmd, const char *desc) "scmd %d: %s 
>>> alloc failed"
>>> +disable megasas_dcmd_internal_submit(int cmd, const char *desc, int dev) 
>>> "scmd %d: %s to dev %d"
>>> +disable megasas_dcmd_internal_finish(int cmd, int opcode, int lun) "scmd 
>>> %d: DCMD finis

Re: [Qemu-devel] [PATCH][v8] megasas: LSI Megaraid SAS HBA emulation

2012-01-13 Thread Stefan Hajnoczi
On Thu, Jan 12, 2012 at 03:45:59PM +0100, Paolo Bonzini wrote:
> On 01/12/2012 11:43 AM, Hannes Reinecke wrote:
> >+# hw/megasas.c
> >+disable megasas_init_firmware(int xfer_len, uint64_t pa) "xfer len %d pa %" 
> >PRIx64 " "
> >+disable megasas_init_queue(uint64_t queue_pa, int queue_len, uint64_t head, 
> >uint64_t tail, uint32_t flags) "queue at %" PRIx64 " len %d head %" PRIx64 " 
> >tail %" PRIx64 " flags %x"
> >+megasas_initq_map_failed(int frame) "scmd %d: failed to map queue"
> >+megasas_initq_mismatch(int queue_len, int fw_cmds) "queue size %d max fw 
> >cmds %d"
> >+disable megasas_qf_found(unsigned int index, uint64_t pa) "found mapped 
> >frame %x pa %" PRIx64 ""
> >+disable megasas_qf_new(unsigned int index, void *cmd) "return new frame %x 
> >cmd %p"
> >+megasas_qf_failed(unsigned long pa) "all frames busy for frame %lx"
> >+disable megasas_qf_enqueue(unsigned int index, unsigned int count, uint64_t 
> >context, unsigned int tail, int busy) "enqueue frame %x count %d countext %" 
> >PRIx64 " tail %x busy %d"
> >+disable megasas_qf_update(unsigned int head, unsigned int busy) "update 
> >reply queue head %x busy %d"
> >+disable megasas_qf_dequeue(unsigned int index) "dequeue frame %x"
> >+disable megasas_qf_map_failed(int cmd, unsigned long frame) "scmd %d: frame 
> >%lu"
> >+disable megasas_qf_complete_noirq(uint64_t context) "context %" PRIx64 " "
> >+disable megasas_qf_complete(uint64_t context, unsigned int tail, unsigned 
> >int offset, int busy, unsigned int doorbell) "context %" PRIx64 " tail %x 
> >offset %d busy %d doorbell %x"
> >+disable megasas_handle_frame(const char *cmd, uint64_t addr, uint64_t 
> >context, uint32_t count) "MFI cmd %s addr %" PRIx64 " context %" PRIx64 " 
> >count %d"
> >+megasas_frame_busy(uint64_t addr) "frame %" PRIx64 " busy"
> >+megasas_unhandled_frame_cmd(int cmd, uint8_t frame_cmd) "scmd %d: Unhandled 
> >MFI cmd %x"
> >+disable megasas_handle_scsi(const char *frame, const char *desc, int dev, 
> >int lun, void *sdev, unsigned long size) "%s %s dev %x/%x sdev %p xfer %lu"
> >+disable megasas_scsi_target_not_present(const char *frame, const char 
> >*desc, int dev, int lun) "%s %s dev %x/%x target not present"
> >+megasas_scsi_invalid_cdb_len(const char *frame, const char *desc, int dev, 
> >int lun, int len) "%s %s dev %x/%x invalid cdb len %d"
> >+megasas_scsi_overflow(int cmd, const char *dir, int bytes, int len) "scmd 
> >%d: %s %d of %d bytes"
> >+disable megasas_scsi_underflow(int cmd, const char *dir, int bytes, int 
> >len) "scmd %d: %s %d of %d bytes"
> >+megasas_scsi_req_alloc_failed(const char *frame, int dev, int lun) "%s dev 
> >%x/%x req allocation failed"
> >+disable megasas_scsi_start(int cmd, const char *desc, int len) "scmd %d: %s 
> >%d bytes of data"
> >+disable megasas_scsi_nodata(int cmd) "scmd %d: no data to be transferred"
> >+disable megasas_scsi_complete(int cmd, uint32_t status, int len, int xfer) 
> >"scmd %d: finished with status %x, len %u/%u"
> >+disable megasas_command_complete(int cmd, uint32_t status) "scmd %d: 
> >command completed, status %x"
> >+disable megasas_handle_io(int cmd, const char *frame, int dev, int lun, 
> >unsigned long lba, unsigned long count) "scmd %d: %s dev %x/%x lba %lx count 
> >%lu"
> >+disable megasas_io_target_not_present(int cmd, const char *frame, int dev, 
> >int lun) "scmd %d: %s dev %x/%x LUN not present"
> >+disable megasas_io_start(int cmd, const char *dir, unsigned long lba, 
> >unsigned long count, unsigned long len) "scmd %d: %s start LBA %lx %lu 
> >blocks (%lu bytes)"
> >+disable megasas_io_complete(int cmd, uint32_t len) "scmd %d: %d bytes 
> >completed"
> >+disable megasas_io_copy(int cmd, const char *dir, int bytes, int len, 
> >unsigned long offset) "scmd %d: %s %d of %d bytes, iov offset %lu"
> >+disable megasas_io_continue(int cmd, int bytes) "scmd %d: %d bytes left"
> >+megasas_iovec_map_failed(int cmd, int index, unsigned long iov_size) "scmd 
> >%d: iovec %d size %lu"
> >+megasas_iovec_sgl_overflow(int cmd, int index, int limit) "scmd %d: iovec 
> >count %d limit %d"
> >+megasas_iovec_sgl_underflow(int cmd, int index) "scmd %d: iovec count %d"
> >+megasas_iovec_sgl_invalid(int cmd, int index, uint64_t pa, uint32_t len) 
> >"scmd %d: invalid sgl element %d pa %" PRIx64 " len %u"
> >+megasas_iovec_len(int cmd, const char *desc, int len, int limit) "scmd %d: 
> >iovec %s len %d limit %d"
> >+disable megasas_handle_dcmd(int cmd, int opcode) "scmd %d: MFI DCMD opcode 
> >%x"
> >+disable megasas_finish_dcmd(int cmd, int size) "scmd %d: MFI DCMD wrote %d 
> >bytes"
> >+megasas_dcmd_req_alloc_failed(int cmd, const char *desc) "scmd %d: %s alloc 
> >failed"
> >+disable megasas_dcmd_internal_submit(int cmd, const char *desc, int dev) 
> >"scmd %d: %s to dev %d"
> >+disable megasas_dcmd_internal_finish(int cmd, int opcode, int lun) "scmd 
> >%d: DCMD finish internal cmd %x lun %d"
> >+megasas_dcmd_internal_invalid(int cmd, int opcode) "scmd %d: Invalid 
> >internal DCMD %x"
> >+megasas_

Re: [Qemu-devel] [PATCH][v8] megasas: LSI Megaraid SAS HBA emulation

2012-01-12 Thread Paolo Bonzini

On 01/12/2012 11:43 AM, Hannes Reinecke wrote:

+# hw/megasas.c
+disable megasas_init_firmware(int xfer_len, uint64_t pa) "xfer len %d pa %" PRIx64 
" "
+disable megasas_init_queue(uint64_t queue_pa, int queue_len, uint64_t head, uint64_t tail, uint32_t flags) "queue 
at %" PRIx64 " len %d head %" PRIx64 " tail %" PRIx64 " flags %x"
+megasas_initq_map_failed(int frame) "scmd %d: failed to map queue"
+megasas_initq_mismatch(int queue_len, int fw_cmds) "queue size %d max fw cmds 
%d"
+disable megasas_qf_found(unsigned int index, uint64_t pa) "found mapped frame %x pa %" 
PRIx64 ""
+disable megasas_qf_new(unsigned int index, void *cmd) "return new frame %x cmd 
%p"
+megasas_qf_failed(unsigned long pa) "all frames busy for frame %lx"
+disable megasas_qf_enqueue(unsigned int index, unsigned int count, uint64_t context, unsigned int 
tail, int busy) "enqueue frame %x count %d countext %" PRIx64 " tail %x busy %d"
+disable megasas_qf_update(unsigned int head, unsigned int busy) "update reply queue 
head %x busy %d"
+disable megasas_qf_dequeue(unsigned int index) "dequeue frame %x"
+disable megasas_qf_map_failed(int cmd, unsigned long frame) "scmd %d: frame 
%lu"
+disable megasas_qf_complete_noirq(uint64_t context) "context %" PRIx64 " "
+disable megasas_qf_complete(uint64_t context, unsigned int tail, unsigned int offset, int busy, 
unsigned int doorbell) "context %" PRIx64 " tail %x offset %d busy %d doorbell 
%x"
+disable megasas_handle_frame(const char *cmd, uint64_t addr, uint64_t context, uint32_t count) "MFI cmd 
%s addr %" PRIx64 " context %" PRIx64 " count %d"
+megasas_frame_busy(uint64_t addr) "frame %" PRIx64 " busy"
+megasas_unhandled_frame_cmd(int cmd, uint8_t frame_cmd) "scmd %d: Unhandled MFI cmd 
%x"
+disable megasas_handle_scsi(const char *frame, const char *desc, int dev, int lun, void 
*sdev, unsigned long size) "%s %s dev %x/%x sdev %p xfer %lu"
+disable megasas_scsi_target_not_present(const char *frame, const char *desc, int dev, 
int lun) "%s %s dev %x/%x target not present"
+megasas_scsi_invalid_cdb_len(const char *frame, const char *desc, int dev, int lun, int 
len) "%s %s dev %x/%x invalid cdb len %d"
+megasas_scsi_overflow(int cmd, const char *dir, int bytes, int len) "scmd %d: %s %d 
of %d bytes"
+disable megasas_scsi_underflow(int cmd, const char *dir, int bytes, int len) "scmd 
%d: %s %d of %d bytes"
+megasas_scsi_req_alloc_failed(const char *frame, int dev, int lun) "%s dev %x/%x 
req allocation failed"
+disable megasas_scsi_start(int cmd, const char *desc, int len) "scmd %d: %s %d 
bytes of data"
+disable megasas_scsi_nodata(int cmd) "scmd %d: no data to be transferred"
+disable megasas_scsi_complete(int cmd, uint32_t status, int len, int xfer) "scmd 
%d: finished with status %x, len %u/%u"
+disable megasas_command_complete(int cmd, uint32_t status) "scmd %d: command 
completed, status %x"
+disable megasas_handle_io(int cmd, const char *frame, int dev, int lun, unsigned long 
lba, unsigned long count) "scmd %d: %s dev %x/%x lba %lx count %lu"
+disable megasas_io_target_not_present(int cmd, const char *frame, int dev, int lun) 
"scmd %d: %s dev %x/%x LUN not present"
+disable megasas_io_start(int cmd, const char *dir, unsigned long lba, unsigned long 
count, unsigned long len) "scmd %d: %s start LBA %lx %lu blocks (%lu bytes)"
+disable megasas_io_complete(int cmd, uint32_t len) "scmd %d: %d bytes 
completed"
+disable megasas_io_copy(int cmd, const char *dir, int bytes, int len, unsigned long 
offset) "scmd %d: %s %d of %d bytes, iov offset %lu"
+disable megasas_io_continue(int cmd, int bytes) "scmd %d: %d bytes left"
+megasas_iovec_map_failed(int cmd, int index, unsigned long iov_size) "scmd %d: 
iovec %d size %lu"
+megasas_iovec_sgl_overflow(int cmd, int index, int limit) "scmd %d: iovec count %d 
limit %d"
+megasas_iovec_sgl_underflow(int cmd, int index) "scmd %d: iovec count %d"
+megasas_iovec_sgl_invalid(int cmd, int index, uint64_t pa, uint32_t len) "scmd %d: invalid 
sgl element %d pa %" PRIx64 " len %u"
+megasas_iovec_len(int cmd, const char *desc, int len, int limit) "scmd %d: iovec %s 
len %d limit %d"
+disable megasas_handle_dcmd(int cmd, int opcode) "scmd %d: MFI DCMD opcode %x"
+disable megasas_finish_dcmd(int cmd, int size) "scmd %d: MFI DCMD wrote %d 
bytes"
+megasas_dcmd_req_alloc_failed(int cmd, const char *desc) "scmd %d: %s alloc 
failed"
+disable megasas_dcmd_internal_submit(int cmd, const char *desc, int dev) "scmd %d: 
%s to dev %d"
+disable megasas_dcmd_internal_finish(int cmd, int opcode, int lun) "scmd %d: DCMD 
finish internal cmd %x lun %d"
+megasas_dcmd_internal_invalid(int cmd, int opcode) "scmd %d: Invalid internal DCMD 
%x"
+megasas_dcmd_unhandled(int cmd, int opcode, int len) "scmd %d: opcode %x, len 
%d"
+disable megasas_dcmd_zero_sge(int cmd) "scmd %d: zero DCMD sge count"
+megasas_dcmd_invalid_sge(int cmd, int count) "scmd %d: invalid DCMD sge count 
%d"
+megasas_dcmd_map_failed(int cmd) "scmd %d: Failed to map DCMD buffer"
+megasas_dcmd_invalid_xfer