From: Anthony Liguori <anthony@codemonkey.ws>
To: Hannes Reinecke <hare@suse.de>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
qemu-devel@nongnu.org, Alexander Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] [PATCH][v9] megasas: LSI Megaraid SAS HBA emulation
Date: Mon, 16 Jan 2012 07:38:21 -0600 [thread overview]
Message-ID: <4F14284D.7040206@codemonkey.ws> (raw)
In-Reply-To: <4F13EB68.7020500@suse.de>
On 01/16/2012 03:18 AM, Hannes Reinecke wrote:
> On 01/13/2012 05:14 PM, Anthony Liguori wrote:
>> On 01/13/2012 05:19 AM, Hannes Reinecke wrote:
>>> This patch adds an emulation for the LSI Megaraid SAS 8708EM2 HBA.
>>> I've tested it to work with Linux, Windows Vista, and Windows7.
>>>
>>> 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.
>>>
>>> Signed-off-by: Hannes Reinecke<hare@suse.de>
>>> ---
>>> Makefile.objs | 1 +
>>> default-configs/pci.mak | 1 +
>>> hw/megasas.c | 2119
>>> +++++++++++++++++++++++++++++++++++++++++++++++
>>> hw/mfi.h | 1281 ++++++++++++++++++++++++++++
>>> hw/pci_ids.h | 3 +-
>>> trace-events | 73 ++
>>> 6 files changed, 3477 insertions(+), 1 deletions(-)
>>> create mode 100644 hw/megasas.c
>>> create mode 100644 hw/mfi.h
>>>
>>> diff --git a/Makefile.objs b/Makefile.objs
>>> index 4f6d26c..3bb2e57 100644
>>> --- a/Makefile.objs
>>> +++ b/Makefile.objs
>>> @@ -275,6 +275,7 @@ hw-obj-$(CONFIG_AHCI) += ide/ich.o
>>>
>>> # SCSI layer
>>> hw-obj-$(CONFIG_LSI_SCSI_PCI) += lsi53c895a.o
>>> +hw-obj-$(CONFIG_MEGASAS_SCSI_PCI) += megasas.o
>>> hw-obj-$(CONFIG_ESP) += esp.o
>>>
>>> hw-obj-y += dma-helpers.o sysbus.o isa-bus.o
>>> diff --git a/default-configs/pci.mak b/default-configs/pci.mak
>>> index 22bd350..fabb56c 100644
>>> --- a/default-configs/pci.mak
>>> +++ b/default-configs/pci.mak
>>> @@ -9,6 +9,7 @@ CONFIG_EEPRO100_PCI=y
>>> CONFIG_PCNET_PCI=y
>>> CONFIG_PCNET_COMMON=y
>>> CONFIG_LSI_SCSI_PCI=y
>>> +CONFIG_MEGASAS_SCSI_PCI=y
>>> CONFIG_RTL8139_PCI=y
>>> CONFIG_E1000_PCI=y
>>> CONFIG_IDE_CORE=y
>>> diff --git a/hw/megasas.c b/hw/megasas.c
>>> new file mode 100644
>>> index 0000000..c49edd0
>>> --- /dev/null
>>> +++ b/hw/megasas.c
>>> @@ -0,0 +1,2119 @@
>>> +/*
>>> + * QEMU MegaRAID SAS 8708EM2 Host Bus Adapter emulation
>>> + *
>>> + * Copyright (c) 2009-2011 Hannes Reinecke, SUSE Labs
>>> + *
>>> + * This code is licensed under the LGPL.
>>> + */
>>> +
>>> +#include "hw.h"
>>> +#include "pci.h"
>>> +#include "dma.h"
>>> +#include "msix.h"
>>> +#include "iov.h"
>>> +#include "scsi.h"
>>> +#include "scsi-defs.h"
>>> +#include "block_int.h"
>>> +#include "trace.h"
>>> +
>>> +#include "mfi.h"
>>> +
>>> +/* Static definitions */
>>> +#define MEGASAS_VERSION "1.50"
>>> +#define MEGASAS_MAX_FRAMES 2048 /* Firmware limit at
>>> 65535 */
>>> +#define MEGASAS_DEFAULT_FRAMES 1000 /* Windows requires this */
>>> +#define MEGASAS_MAX_SGE 128 /* Firmware limit */
>>> +#define MEGASAS_DEFAULT_SGE 80
>>> +#define MEGASAS_MAX_SECTORS 0xFFFF /* No real limit */
>>> +#define MEGASAS_MAX_ARRAYS 128
>>> +
>>> +#define MEGASAS_FLAG_USE_JBOD 0x00000001
>>> +#define MEGASAS_FLAG_USE_MSIX 0x00000002
>>> +#define MEGASAS_FLAG_USE_QUEUE64 0x00000004
>>> +
>>> +const char *megasas_raid_modes[] = {
>>> + "raid", "jbod"
>>> +};
>>> +
>>> +const char *mfi_frame_desc[] = {
>>> + "MFI init", "LD Read", "LD Write", "LD SCSI", "PD SCSI",
>>> + "MFI Doorbell", "MFI Abort", "MFI SMP", "MFI Stop"};
>>> +
>>> +struct megasas_cmd_t {
>>> + uint32_t index;
>>> + uint16_t flags;
>>> + uint16_t count;
>>> + uint64_t context;
>>> +
>>> + target_phys_addr_t pa;
>>> + target_phys_addr_t pa_size;
>>> + union mfi_frame *frame;
>>> + SCSIRequest *req;
>>> + struct iovec iov[MEGASAS_MAX_SGE];
>>> + int iov_cnt;
>>> + size_t iov_size;
>>> + size_t iov_offset;
>>> + struct megasas_state_t *state;
>>> +};
>>
>> This needs a check-patch.pl cleanup pass.
>>
> Hmm. checkpatch just complained here:
Sorry, I put too much faith in checkpatch sometimes.
The structure naming doesn't follow CODING_STYLE along with a few other things.
Please read CODING_STYLE and adjust the code accordingly.
Regards,
Anthony Liguori
>
> perl ./scripts/checkpatch.pl
> 0001-megasas-LSI-Megaraid-SAS-HBA-emulation.patch
> ERROR: space required after that ',' (ctx:VxV)
> #1356: FILE: hw/megasas.c:1259:
> + dummy[0x00], dummy[0x01],dummy[0x02], dummy[0x03],
> ^
>
> total: 1 errors, 0 warnings, 3510 lines checked
>
> 0001-megasas-LSI-Megaraid-SAS-HBA-emulation.patch has style
> problems, please review. If any of these errors
> are false positives report them to the maintainer, see
> CHECKPATCH in MAINTAINERS.
>
> I'll fix this.
>
> Cheers,
>
> Hannes
next prev parent reply other threads:[~2012-01-16 13:38 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-13 11:19 [Qemu-devel] [PATCH][v9] megasas: LSI Megaraid SAS HBA emulation Hannes Reinecke
2012-01-13 16:14 ` Anthony Liguori
2012-01-13 16:35 ` Paolo Bonzini
2012-01-16 9:18 ` Hannes Reinecke
2012-01-16 13:38 ` Anthony Liguori [this message]
2012-01-13 16:54 ` Andreas Färber
2012-01-15 9:21 ` Avi Kivity
2012-01-16 7:18 ` Hannes Reinecke
2012-01-16 13:39 ` Anthony Liguori
2012-01-16 13:59 ` Hannes Reinecke
2012-01-16 14:05 ` Alexander Graf
2012-01-16 14:50 ` Avi Kivity
2012-01-16 15:35 ` Alexander Graf
2012-01-16 15:38 ` Avi Kivity
2012-01-16 15:39 ` Alexander Graf
2012-01-16 15:53 ` Avi Kivity
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F14284D.7040206@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=agraf@suse.de \
--cc=hare@suse.de \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).