From: Dan Williams <dan.j.williams@intel.com>
To: james.bottomley@suse.de
Cc: dave.jiang@intel.com, linux-scsi@vger.kernel.org,
jacek.danecki@intel.com, ed.ciechanowski@intel.com,
jeffrey.d.skirvin@intel.com, edmund.nadolski@intel.com
Subject: [RFC PATCH 0/6] isci: initial driver release (part1: intro and lldd)
Date: Sun, 06 Feb 2011 16:34:34 -0800 [thread overview]
Message-ID: <20110207003056.27040.89174.stgit@localhost6.localdomain6> (raw)
Introduction:
The upcoming Intel(R) C600 series Patsburg chipset family integrates
6Gb/s SAS capabilities. Depending on the version up to two 4-port SAS
controllers will be presented. This implementation does not utilize
firmware and relies on the driver to manage hardware state machines and
some protocol (to a higher degree than existing libsas drivers, more
details below). The isci driver is divided into two components the lldd
layer which interfaces with libsas and the core which manages the
hardware state and protocol exceptions. Development can be tracked
here:
git://git.kernel.org/pub/scm/linux/kernel/git/djbw/isci.git
This is an early release (fixes and reworks still in progress), but is
ready for community feedback.
Driver overview:
The hardware accelerates all the protocol fast paths (SSP, STP FPDMA and
UDMA), and relies on the the driver for everything else. One example is
legacy sata pio reads which are managed "manually" by their own state
machine in the driver. The driver submits the read and when the data
fis comes back the hardware, not having acceleration for pio operations,
assigns it to an unidentified frame queue. The core then associates that
frame with the pending pio request, copies the data into the location
specified by the original sgl, and completes the command up to the lldd.
Responsibility for these types of exceptions and slow path cases are
what contribute to the size of the driver compared to its peers.
Although the overall diffstat of drivers/scsi/isci/ is currently:
100 files changed, 51183 insertions(+), 0 deletions(-)
...the physical line count of the driver is around 23K [1], and expect
that number to drop further as the driver is cleaned up (see below).
Fixes and reworks overview (current todo list summary):
1/ The core handles the low level hardware interface and state machines,
but it also grew "too high" with OS abstracted convenience functions at
its interface to the lldd layer. The interface routines in
drivers/scsi/isci/deprecated.c are set for removal as the lldd layer
pushes down to replace the OS abstracted core routines with a native
implementation.
2/ Locking and lifetime (lldd_dev) issues in the lldd
3/ dma_map and kmap (in the pio data in case)
4/ Type safety, identifier names, and remaining style issues.
Current code:
As can be seen by the shortlog of the git tree a number of cleanups and
reworks have already been applied, some of which would have made the
early review more difficult.
Dan Williams (34):
isci: Kconfig and Makefile
isci: Make silicon revision configurable
isci: kill unused build options
isci: kill unnecessary call to pci_disable_msix()
isci: kill can queue device file
isci: auto install isci firmware
isci: clean up abort checks at submission
isci: cleanup sci_base_state
isci: controller state machine cleanup step1
isci: readable io request state machines step1
isci: controller state machine cleanup step2
isci: controller state machine cleanup step3
isci: kill off dubious usage of likely/unlikely
isci: fix driver name string
isci: kill ->dma_pool_name
isci: use a module scope kmem_cache rather then per-host
isci: kill isci_controller_init_names
isci: rename dev_p to pdev
isci: cleanup scic_remote_device_construct
isci: __iomem annotations
isci: remove 'library' dependency for initializing registers
isci: refactor init to handle arbitrary controller layouts
isci: move controller allocation to the core (kill isci_module_struct)
isci: kill 'library' interface
isci: fix ata protocol detection
isci: use sas_protocol_ata
isci: remove some host template debug overrides
isci: drop isci_queuecommand
isci: fix up queue parameters
isci: allow the silicon revision to be specified at runtime
isci: smp_request is too large for stack allocation
isci: sci_object cleanup step1
isci: drop redundant name from path
isci: consolidate core
Dave Jiang (11):
isci: Loading oem params through binary firmware instead of via module params
isci: move initialization to managed device model
isci: remove sci_environment.h file
isci: Moved lld logging calls to dev_* calls
isci: Remove logger in core and use appropriate dev_* calls
isci: Removing ASSERT() calls and change them to BUG_ON()
isci: Move pci mapping functions to dma mapping functions
isci: Remove MIN/MAX macro and use native linux macros
isci: remove special macros for upper and lower 32 bits
isci: Removing over-enthusiastic gotos
isci: clean up scic_cb_io_request_get_physical_address()
Edmund Nadolski (11):
isci: remove extraneous typedefs/enums/comments from sci_types.h
isci: remove SCI_TIMER_CALLBACK_T typedef
isci: remove SCI_OBJECT_HANDLE_T typedef
isci: remove SCI_TASK_REQUEST_HANDLE_T typedef
isci: remove SCI_IO_REQUEST_HANDLE_T typedef
isci: remove SCI_PHY_HANDLE_T typedef
isci: fix typo recieved to received
isci: remove SCI_PORT_HANDLE_T typedef
isci: remove SCI_REMOTE_DEVICE_HANDLE_T typedef
isci: remove SCI_MEMORY_DESCRIPTOR_HANDLE_T typedef
isci: remove SCI_CONTROLLER_HANDLE_T typedef
146 files changed, 16620 insertions(+), 26286 deletions(-)
The patches that follow this cover letter are a snapshot of the current
state of the lldd portion of the driver (with the above cleanups already
applied). The core will follow later, and the full driver is always
available from the git url above.
Suggestions and comments welcome.
--
Dan for the isci driver team
[1]: generated using David A. Wheeler's 'SLOCCount'.
next reply other threads:[~2011-02-07 0:16 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-07 0:34 Dan Williams [this message]
2011-02-07 0:34 ` [RFC PATCH 1/6] isci: initialization Dan Williams
2011-02-17 8:22 ` Jeff Garzik
2011-02-19 0:12 ` Dan Williams
2011-02-17 8:25 ` Christoph Hellwig
2011-02-19 0:23 ` Dan Williams
2011-03-04 23:35 ` James Bottomley
2011-03-08 1:51 ` Dan Williams
2011-03-18 16:51 ` Christoph Hellwig
2011-02-07 0:34 ` [RFC PATCH 2/6] isci: task (libsas interface support) Dan Williams
2011-02-09 15:01 ` David Milburn
2011-02-14 7:14 ` Dan Williams
2011-02-16 18:48 ` David Milburn
2011-02-16 19:35 ` David Milburn
2011-02-07 0:34 ` [RFC PATCH 3/6] isci: request (core request infrastructure) Dan Williams
2011-03-18 16:41 ` Christoph Hellwig
2011-02-07 0:34 ` [RFC PATCH 4/6] isci: hardware / topology event handling Dan Williams
2011-03-18 16:18 ` Christoph Hellwig
2011-03-23 8:15 ` Dan Williams
2011-03-23 8:40 ` Christoph Hellwig
2011-03-23 9:04 ` Dan Williams
2011-03-23 9:08 ` Christoph Hellwig
2011-03-24 0:07 ` Dan Williams
2011-03-24 6:26 ` Christoph Hellwig
2011-03-25 0:57 ` Dan Williams
2011-03-25 19:45 ` Christoph Hellwig
2011-03-25 21:39 ` Dan Williams
2011-03-25 22:07 ` Christoph Hellwig
2011-03-25 22:34 ` Dan Williams
2011-03-27 22:28 ` Christoph Hellwig
2011-03-29 1:11 ` Dan Williams
2011-03-30 0:37 ` Dan Williams
2011-02-07 0:35 ` [RFC PATCH 5/6] isci: phy, port, and remote device Dan Williams
2011-02-07 0:35 ` [RFC PATCH 6/6] isci: sata support and phy settings via request_firmware() Dan Williams
2011-02-07 7:58 ` [RFC PATCH 1/6] isci: initialization jack_wang
2011-02-14 7:49 ` Dan Williams
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=20110207003056.27040.89174.stgit@localhost6.localdomain6 \
--to=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=ed.ciechanowski@intel.com \
--cc=edmund.nadolski@intel.com \
--cc=jacek.danecki@intel.com \
--cc=james.bottomley@suse.de \
--cc=jeffrey.d.skirvin@intel.com \
--cc=linux-scsi@vger.kernel.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