This is an updated patchset for megasas. Upon popular demand I've split it into three parts, the header file, the emulation itself, and a patch adding trace events to the emulation.
Paolo, can you merge it via your tree? Or should I ask someone else? Changes since v17: - Fix crash when booting without Option ROM, reported by Alex Graf Changes since v16: - Codingstyle fixes, reported by Alex Graf Changes since v15: - Move to new SCSI API - Use generic trace functions for DCMDs - Replace bitfields with defines - Implement CFG_READ - Fix enclosure ID reporting Changes since v14: - Rename MPTState to MegasasState - Use bool type - Enable 64 bit PCI accesses - Replace raid mode string handling - Use common function for requests handling Changes since v13: - Remove separate MSI-X BAR - Simplify BAR allocation Changes since v12: - Fixup flag setting via properties - Fixup MSI-X handling - Disable MSI-X per default Changes since v11: - Remove unneeded variables Changes since v10: - Port to new device type API - Include suggestion from Alex Graf: - Remove 'inline' function declaration - Queue setup and interrupt enablement needs to be treated independently - Always read in 64 bit context and just mask out the top bits if required Changes since v9: - Split off trace events into a separate patch - Do not check for max_luns in PD Info - Update trace events - Clarify license statement - Fixup coding style issues Changes since v8: - Remove 'disable' keyword from trace definitions - Convert hand-crafted debugging statements with trace definitions - Treat 'context' tag as little endian Changes since v7: - Port to new memory API - Port to new PCI infrastructure - Use fixed buffers for sense processing - Update to updated SCSI infrastructure Changes since v6: - Preliminary patches pushed to Kevins block tree - Implement 64bit contexts, required for Windows7 - Use iovecs for DCMD processing - Add MSI-X support Latest Linux driver now happily uses MSI-X. - Static iovec allocation We have a fixed upper number of iovecs, so we can save us the allocation. Suggested by Alex Graf. - Update MFI header Latest Linux driver has some more definitions, add them - Fixup AEN handling - Update tracing details - Remove sdev pointer from megasas_cmd_t Changes since v5: - megasas: Use tracing infrastructure instead of DPRINTF - megasas: Use new PCI infrastructure - megasas: Check for iovec mapping failure cpu_map_physical_memory() might fail, so we need to check for it when mapping iovecs. - megasas: Trace scsi buffer overflow The transfer length as specified in the SCSI command might disagree with the length of the iovec. We should be tracing these issues. - megasas: Reset frames after init firmware When receiving an INIT FIRMWARE command we need reset all frames, otherwise some frames might point to invalid memory. Chances since v4: - megasas: checkpatch.pl fixes and update to work with the changed interface in scsi_req_new(). Also included the suggested fixes from Alex. Hannes Reinecke (3): megasas: Add header file megasas: LSI Megaraid SAS HBA emulation megasas: Add trace events Makefile.objs | 1 + default-configs/pci.mak | 1 + hw/megasas.c | 2198 +++++++++++++++++++++++++++++++++++++++++++++++ hw/mfi.h | 1248 +++++++++++++++++++++++++++ hw/pci_ids.h | 3 +- trace-events | 79 ++ 6 files changed, 3529 insertions(+), 1 deletions(-) create mode 100644 hw/megasas.c create mode 100644 hw/mfi.h -- 1.7.3.4