qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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

  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).