* [GIT PULL] isci: sas controller driver for 3.0
@ 2011-07-01 23:35 Dan Williams
2011-07-02 22:45 ` James Bottomley
2011-07-04 13:45 ` Christoph Hellwig
0 siblings, 2 replies; 10+ messages in thread
From: Dan Williams @ 2011-07-01 23:35 UTC (permalink / raw)
To: James Bottomley, Christoph Hellwig
Cc: Linus Torvalds, linux-scsi, Dave Jiang, Jeff Skirvin,
Ed Ciechanowski, Ed Nadolski, David Milburn, Jeff Garzik,
Jacek Danecki, hare
James, please pull from:
git://git.kernel.org/pub/scm/linux/kernel/git/djbw/isci.git master
...to receive the isci driver that supports the integrated 6Gb/s SAS
capabilities of the upcoming Intel(R) C600 series chipset family. This
part is targeted at standard servers / workstations and provides
up to 8-ports (2x4-port controllers) of SAS beyond the traditional SATA
ports (surfaced by the ahci driver).
Since the last merge candidate [1], the driver has shed an additional
3,500 lines of code:
34 files changed, 5683 insertions(+), 9248 deletions(-)
delete mode 100644 drivers/scsi/isci/pool.h
delete mode 100644 drivers/scsi/isci/sata.c
delete mode 100644 drivers/scsi/isci/sata.h
delete mode 100644 drivers/scsi/isci/scu_unsolicited_frame.h
delete mode 100644 drivers/scsi/isci/state_machine.c
delete mode 100644 drivers/scsi/isci/state_machine.h
delete mode 100644 drivers/scsi/isci/timers.c
delete mode 100644 drivers/scsi/isci/timers.h
Thanks again goes to Christoph for his continued review of the driver.
There was a question in the last pull request about the why this driver
is the size that it is. According to physical lines of source [2] the
isci driver is now ~1.3x the size of the next largest libsas driver
aic94xx. Looking over that driver there are several additional
responsibilities that the hardware requires of isci:
1/ OOB management: the sequencing to bring the phys, perform speed
negotiation at all the operation points and handle spin-up ordering is
controlled by software.
2/ Non-fast path protocols: All non-fast path i/o protocols and
conditions (smp, sata-pio, atapi, errors/exceptions) are handled in
software (allowing more hardware resources to be dedicated to the fast
path)
3/ Port configuration and oem parameters: Since this controller is
embedded in the chipset and not a standalone hba the electrical
characteristics of the phys need to be tuned per platform. The platform
vendor also has the option to customize the port configuration.
Enabling patches like pci_map_biosrom() allow the driver to retrieve
these parameters embedded in the platform BIOS/EFI driver. We have a
binary blob firmware file that can be used as a backup for these
parameters.
There are still opportunities for code simplification, but we are
starting to approach the underlying complexity of the solution. In any
event, the diffstat since the initial import makes all the late nights
seem worth it:
192 files changed, 23575 insertions(+), 60895 deletions(-)
--
Dan for the isci driver team
[1]: http://marc.info/?l=linux-scsi&m=130531654412722&w=2
[2]: generated using David A. Wheeler's 'SLOCCount'.
Adam Gruchala (2):
isci: merge phy substates
isci: Added support for C0 to SCU Driver
Artur Wojcik (1):
isci: unify isci_host data structures
Bartosz Barcinski (2):
isci: sparse warnings cleanup
isci: audit usage of BUG_ON macro in isci driver
Christoph Hellwig (7):
isci: remove mmio wrappers
isci: remove base_controller abstraction
isci: remove base_request abstraction
isci: kill dead data structurs in scic_io_request.h
isci: simplify request state handlers
isci: simplify dma coherent allocation
isci: remove scic_controller state handlers
Dan Williams (187):
libsas: fix definition of wideport, include local sas address
isci: import baseline driver with automated conversions
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
isci: kill SCI_IO_REQUEST_DATA_DIRECTION
isci: cleanup core consolidation leftovers
isci: kill a callback cast
isci: remove SCIC_DEBUG_ENABLED, and fixup an odd macro
isci: bypass scic_controller_get_handler_methods()
isci: cleanup "starting" state handling
isci: implement error isr
isci: advertise linkrate
isci: debug fixes
isci: phy state machine cleanup step1
isci: clean up remaining silicon revision ifdefs in phy init
isci: fix sas address reporting
isci: rework timer api
isci: fix hang after target reset
isci: pad stp and smp request sizes
isci: enable isci for dmar builds
isci: kill isci_host list in favor of an array
isci: remove sci_device_handle
isci: kill "host quiesce" mechanism
isci: replace isci_remote_device completion with event queue
isci: preallocate remote devices
isci: replace remote_device_lock with scic_lock
isci: cleanup debug leftovers in isci.h
x86: introduce pci_map_biosrom()
isci: Add support for probing OROM for OEM params
isci: fixup with testing from isci OROM in BIOS
isci: Errors in the submit path for SATA devices manage the ap lock.
isci: add "isci_id" attribute
isci: fix incorrect assumptions about task->dev and task->dev->port being NULL
isci: task.h compile and checkpatch fixes
isci: fix oem parameter initialization and mode detection
Revert "isci: SATA/STP and SMP tasks are never explicitly put in the error path."
Revert "isci: only call sas_task_abort for tasks with NEED_DEV_RESET"
isci: reset hardware at init
isci: fix apc mode definition
isci: fix a build warning
Merge branch 'x86-pending' into devel
isci: reorder init to cleanup unneeded declarations
isci: kill some long macros
isci: namespacecheck cleanups
isci: remove unused "remote_device_started"
isci: cleanup isci_remote_device[_not]_ready interface
isci: fix fragile/conditional isci_host lookups
isci: replace sci_sas_link_rate with sas_linkrate
Merge commit 'v2.6.38' into devel
isci: fix oem parameter header definition
isci: validate oem parameters early, and fallback
isci: rely on irq core for intx multiplexing, and silence screaming intx
isci: make a remote_node_context a proper member of a remote_device
isci: remove rnc->device back pointer
isci: unify remote_device data structures
isci: move remote_device handling out of the core
isci: cleanup remote device construction and comments
isci: kill smp_discover_response_protocols in favor of domain_device.dev_type
isci: kill smp_discover_response
isci: remove usage of sci_sas_address in scic_sds_remote_device
isci: remove scic_sds_remote_device_get_port_index
isci: allow fallback to option-rom if efi variable retrieval fails
isci: defer pci_map_biosrom
isci: fix CONFIG_EFI=n compile error
isci: merge remote_device substates into a single state machine
isci: kill scic_remote_device_get_connection_rate
isci: fix remote_device start_io regressions
isci: unify remote_device start_handlers
isci: unify remote_device stop_handlers
isci: kill remote_device fail_handler
isci: unify remote_device destruct_handlers
isci: unify remote_device reset_handlers
isci: unify remote_device reset_complete_handlers
isci: unify remote_device start_io_handlers
isci: unify remote_device complete_io_handlers
isci: kill remote_device continue_io_handler
isci: unify remote_device start_task_handlers
isci: kill remote_device complete_task_handler
isci: unify remote_device suspend_handlers
isci: kill remote_device resume_handler
isci: unify remote_device event_handlers
isci: unify remote_device frame_handlers
isci: kill scic_sds_remote_device.state_handlers
isci: remove compile-time (Kconfig) silicon configuration
isci: fix ata locking
isci: implement I_T_nexus_reset
isci: unify phy data structures
isci: unify port data structures
isci: move stp request info to scic_sds_request
isci: make sgl explicit/aligned request object member
isci: move task context alignment from run-time to compile time
isci: make command/response iu explicit request object members
isci: unify request data structures
isci: unify constants
isci: move core/controller to host
isci: uplevel register hardware data structures and unsolicited frame handling
isci: uplevel state machine
isci: uplevel request infrastructure
isci: uplevel phy infrastructure
isci: uplevel port infrastructure
isci: merge ssp task management substates into primary state machine
isci: merge smp request substates into primary state machine
isci: merge stp request substates into primary state machine
isci: unify request abort handlers
isci: unify request frame handlers
isci: remove request task context completion state handler
isci: remove the completion and event state handlers
isci: unify phy start handlers
isci: unify phy stop handlers
isci: unify phy reset handlers
isci: remove phy destruct handlers
isci: unify phy frame handlers
isci: unify phy event handlers
isci: unify phy consume_power handlers
isci: clarify phy to port lookups
isci: unify port start_io and complete_io handlers
isci: unify rnc event handlers
isci: unify rnc destruct handlers
isci: unify rnc suspend/resume handlers
isci: unify rnc start{io|task} handlers
isci: add some type safety to the state machine interface
Revert "isci: Add missing PCI IDs"
isci: remove 'min memory' infrastructure
Merge commit 'v3.0-rc2' into devel
isci: use pci_map_biosrom
isci: fix isci_terminate_pending() list management
isci: cleanup/optimize pool implementation
isci: cleanup tag macros
isci: cleanup/optimize queue increment macros
isci: cleanup request allocation
isci: fix ssp response iu buffer size in isci_tmf
isci: atomic device lookup and reference counting
isci: kill isci_remote_device_change_state()
isci: kill device_sequence
isci: fix smp response frame overrun
isci: fix dma_unmap_sg usage
isci: fix support for arbitrarily large smp requests
isci: fix isci_task_execute_tmf completion
isci: fix frame received locking
isci: unify can_queue tracking on the tci_pool, uplevel tag assignment
isci: combine request flags
isci: preallocate requests
isci: rename / clean up scic_sds_stp_request
isci: unify isci_request and scic_sds_request
isci: unify isci_phy and scic_sds_phy
isci: fix scic_sds_remote_device_terminate_requests
isci: unify isci_port and scic_sds_port
isci: unify isci_remote_device and scic_sds_remote_device
isci: unify isci_host and scic_sds_controller
isci: retire scic_sds_ and scic_ prefixes
isci: kill 'get/set' macros
isci: merge sata.[ch] into request.c
isci: merge scu_unsolicited_frame.h into unsolicited_frame_control.h
isci: cleanup silicon revision detection
isci: pare back error messsages
Darrick J. Wong (1):
libsas: Don't issue commands to devices that have been hot-removed
Dave Jiang (49):
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()
isci: removing unused loglevel module param
isci: Move firmware loading to per PCI device
isci: Removed special macros that does 64bit address math
isci: Make the driver copy data directly from and to sg for PIO
isci: have the driver use native SG calls and DMA-API
isci: Change event notify calls from scic_cb_* to isci_event_*
isci: Removing deprecated functions
isci: Adding support for phy enable and disable
isci: Cleanup warning messages for phy resets
isci: Adding EFI variable skeletal support
isci: update efi variable name and guid
isci: copy the oem parameters instead of assign
isci: Fixup for OEM parameter EFI variable retrieval
isci: exposing user parameters via module params
isci: Remove event_* calls as they are just wrappers
isci: Remove "screaming" data types
isci: replace this_* and the_* variables with more meaningful names
isci: removing non-working ATAPI code
isci: Remove excessive log noise with expander hot-unplug
isci: Removing unused define SCIC_SDS_4_ENABLED
isci: Convert SATA fis data structures to Linux native
isci: Convert ATA defines to Linux native defines
isci: Convert SAS identify address frame to Linux Native format
isci: Collapsing of phy_type data structure
isci: renaming sas_capabilities to scic_phy_cap
isci: Fixup SSP command IU and task IU
isci: Convert of sci_ssp_response_iu to ssp_response_iu
isci: Fixup of smp request
isci: Converting smp_response to Linux native smp_resp
isci: remove redundant copies of IAF
isci: fixup SAS iaf protocols data structure
isci: Remove SCIC_SWAP_DWORD()
isci: Using Linux SSP frame header
isci: removing intel_*.h headers
isci: Removing unnecessary functions in request.c
isci: removing the kmalloc in smp request construct
isci: Retrieve the EFI variable for OEM parameter
isci: Removing unused variables compiler warnings
Edmund Nadolski (28):
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
isci: remove unused SC_LIBRARY_HANDLE_T typedef
isci: remove SCI_INVALID_HANDLE
isci: kill sci_types.h
isci: enable interrupts during controller start, and flush discovery
isci: remove scic_controller_get_handler_methods and ilk
isci: kill scic_controller_get_port_handle function
isci: remove scic_sds_port_increment_request_count
isci: replace isci_timer list with proper embedded timers
isci: convert port config agent timer to sci_timer
isci: convert phy sata_timeout_timer to sci_timer
isci: convert power control timer to sci_timer
isci: convert scic_timeout_timer to sci_timer
isci: convert phy_startup_timer to sci_timer
isci: Remove tmf timeout_timer
isci: remove isci_timer interface
isci: state machine cleanup
isci: additional state machine cleanup
Havard Skinnemoen (2):
isci: Add missing PCI IDs
isci: Initialize proc_name field in scsi_host_template
Henryk Dembkowski (6):
isci: remote device and node cleanup step1
isci: coding style changes for remote device
isci: c99 tables cleanup step1
isci: coding style changes for remote device
isci: Move transport layer registers from port to phy
isci: add support for 2 more oem parmeters
Jacek Danecki (2):
isci: Add support for user parameters in SCIC layer
isci: rnc state machine table c99 conversion
Jack Wang (1):
[SCSI] libsas: fix bug for vacant phy
Jeff Skirvin (29):
isci: isci_request_cleanup_completed_loiterer checks task before task_done
isci: Changes in isci_host_completion_routine
isci: fix completion / abort path.
isci: Any reset indicated on an I/O completion escalates it to the error path.
isci: save the i/o tag outside the scic request structure.
isci: Cleaning up task execute path.
isci: Code review change for completion pointer cleanup.
isci: Termination handling cleanup, added termination timeouts.
isci: Fix TMF build for SAS/SATA LUN reset cases.
isci: Fixed BUG_ON in isci_abort_task_process_cb callback.
isci: Always set response/status for requests going into the error path.
isci: All pending requests are terminated before stopping the device.
isci: don't hold scic_lock over calls to sas_task_abort()
isci: only call sas_task_abort for tasks with NEED_DEV_RESET
isci: SATA/STP and SMP tasks are never explicitly put in the error path.
isci: Properly handle requests in the "aborting" state.
isci: Free host lock for SATA/STP abort escalation at submission time.
isci: Fix use of SATA soft reset state machine.
isci: Qualify when the host lock is managed for STP/SATA callbacks.
isci: Move the reset delay after the remote node resumption.
isci: filter broadcast change notifications during SMP phy resets
isci: Add decode for SMP request retry error condition
isci: Requests that do not start must be set to "complete"
isci: Handle timed-out request terminations correctly
isci: Explicitly decode remote node ready and suspended states
isci: Hard reset failure will link reset all phys in the port
isci: Disable link layer hang detection
isci: Terminate dev requests on FIS err bit rx in NCQ
isci: Device reset should request sas_phy_reset(phy, true)
Maciej Patelczyk (10):
isci: Implement SCU AFE recipe 10.
isci: Removed struct sci_base_object from state machine.
isci: Removed sci_base_object from scic_sds_controller.
isci: Removed sci_base_object from scic_sds_phy.
isci: Removed sci_base_object from scic_sds_port.
isci: Removed sci_base_object from scic_sds_remote_device.
isci: Removed sci_base_object from scic_sds_remote_node_context.
isci: Removed sci_base_object from scic_sds_request.
isci: Removed sci_object.h from project.
isci: possible buffer overflow in isci_parse_oem_parameters fixed
Maciej Trela (3):
isci: remove base_remote_device abstraction
isci: remove base_port abstraction
isci: remove base_phy abstraction
Pawel Marek (1):
isci: controller stop/start fixes
Piotr Sawicki (11):
isci: fix for asserts during aborts/resets to SAS/SATA in APC mode
isci: handle cases where a d2h fis is used report an ncq error
isci: unify request start handlers
isci: c99 port state handlers
isci: merge port ready substates into primary state machine
isci: remove port start handler
isci: unify port stop handlers
isci: remove port destruct handler
isci: unify port reset, add_phy, and remove_phy handlers
isci: remove port frame and event handlers
isci: unify port link_up and link_down handlers
Tomasz Chudy (3):
isci: fix "no outbound task timeout" default value
isci: Add Support for new TC completion codes
isci: workaround port task scheduler starvation issue
drivers/scsi/Kconfig | 13 +
drivers/scsi/Makefile | 1 +
drivers/scsi/isci/Makefile | 8 +
drivers/scsi/isci/firmware/Makefile | 19 +
drivers/scsi/isci/firmware/README | 36 +
drivers/scsi/isci/firmware/create_fw.c | 99 +
drivers/scsi/isci/firmware/create_fw.h | 77 +
drivers/scsi/isci/host.c | 2751 ++++++++++++++++++++
drivers/scsi/isci/host.h | 542 ++++
drivers/scsi/isci/init.c | 565 ++++
drivers/scsi/isci/isci.h | 538 ++++
drivers/scsi/isci/phy.c | 1312 ++++++++++
drivers/scsi/isci/phy.h | 504 ++++
drivers/scsi/isci/port.c | 1757 +++++++++++++
drivers/scsi/isci/port.h | 306 +++
drivers/scsi/isci/port_config.c | 754 ++++++
drivers/scsi/isci/probe_roms.c | 242 ++
drivers/scsi/isci/probe_roms.h | 249 ++
drivers/scsi/isci/registers.h | 1934 ++++++++++++++
drivers/scsi/isci/remote_device.c | 1501 +++++++++++
drivers/scsi/isci/remote_device.h | 352 +++
drivers/scsi/isci/remote_node_context.c | 627 +++++
drivers/scsi/isci/remote_node_context.h | 224 ++
drivers/scsi/isci/remote_node_table.c | 598 +++++
drivers/scsi/isci/remote_node_table.h | 188 ++
drivers/scsi/isci/request.c | 3391 +++++++++++++++++++++++++
drivers/scsi/isci/request.h | 448 ++++
drivers/scsi/isci/sas.h | 219 ++
drivers/scsi/isci/scu_completion_codes.h | 283 ++
drivers/scsi/isci/scu_event_codes.h | 336 +++
drivers/scsi/isci/scu_remote_node_context.h | 229 ++
drivers/scsi/isci/scu_task_context.h | 942 +++++++
drivers/scsi/isci/task.c | 1675 ++++++++++++
drivers/scsi/isci/task.h | 367 +++
drivers/scsi/isci/unsolicited_frame_control.c | 225 ++
drivers/scsi/isci/unsolicited_frame_control.h | 278 ++
firmware/Makefile | 1 +
firmware/isci/isci_firmware.bin.ihex | 16 +
38 files changed, 23607 insertions(+), 0 deletions(-)
create mode 100644 drivers/scsi/isci/Makefile
create mode 100644 drivers/scsi/isci/firmware/Makefile
create mode 100644 drivers/scsi/isci/firmware/README
create mode 100644 drivers/scsi/isci/firmware/create_fw.c
create mode 100644 drivers/scsi/isci/firmware/create_fw.h
create mode 100644 drivers/scsi/isci/host.c
create mode 100644 drivers/scsi/isci/host.h
create mode 100644 drivers/scsi/isci/init.c
create mode 100644 drivers/scsi/isci/isci.h
create mode 100644 drivers/scsi/isci/phy.c
create mode 100644 drivers/scsi/isci/phy.h
create mode 100644 drivers/scsi/isci/port.c
create mode 100644 drivers/scsi/isci/port.h
create mode 100644 drivers/scsi/isci/port_config.c
create mode 100644 drivers/scsi/isci/probe_roms.c
create mode 100644 drivers/scsi/isci/probe_roms.h
create mode 100644 drivers/scsi/isci/registers.h
create mode 100644 drivers/scsi/isci/remote_device.c
create mode 100644 drivers/scsi/isci/remote_device.h
create mode 100644 drivers/scsi/isci/remote_node_context.c
create mode 100644 drivers/scsi/isci/remote_node_context.h
create mode 100644 drivers/scsi/isci/remote_node_table.c
create mode 100644 drivers/scsi/isci/remote_node_table.h
create mode 100644 drivers/scsi/isci/request.c
create mode 100644 drivers/scsi/isci/request.h
create mode 100644 drivers/scsi/isci/sas.h
create mode 100644 drivers/scsi/isci/scu_completion_codes.h
create mode 100644 drivers/scsi/isci/scu_event_codes.h
create mode 100644 drivers/scsi/isci/scu_remote_node_context.h
create mode 100644 drivers/scsi/isci/scu_task_context.h
create mode 100644 drivers/scsi/isci/task.c
create mode 100644 drivers/scsi/isci/task.h
create mode 100644 drivers/scsi/isci/unsolicited_frame_control.c
create mode 100644 drivers/scsi/isci/unsolicited_frame_control.h
create mode 100644 firmware/isci/isci_firmware.bin.ihex
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [GIT PULL] isci: sas controller driver for 3.0 2011-07-01 23:35 [GIT PULL] isci: sas controller driver for 3.0 Dan Williams @ 2011-07-02 22:45 ` James Bottomley 2011-07-03 2:43 ` Dan Williams 2011-07-04 13:45 ` Christoph Hellwig 1 sibling, 1 reply; 10+ messages in thread From: James Bottomley @ 2011-07-02 22:45 UTC (permalink / raw) To: Dan Williams Cc: Christoph Hellwig, Linus Torvalds, linux-scsi, Dave Jiang, Jeff Skirvin, Ed Ciechanowski, Ed Nadolski, David Milburn, Jeff Garzik, Jacek Danecki, hare On Fri, 2011-07-01 at 16:35 -0700, Dan Williams wrote: > James, please pull from: > > git://git.kernel.org/pub/scm/linux/kernel/git/djbw/isci.git master > > ...to receive the isci driver that supports the integrated 6Gb/s SAS > capabilities of the upcoming Intel(R) C600 series chipset family. This > part is targeted at standard servers / workstations and provides > up to 8-ports (2x4-port controllers) of SAS beyond the traditional SATA > ports (surfaced by the ahci driver). > > Since the last merge candidate [1], the driver has shed an additional > 3,500 lines of code: Look, this tree is unacceptable because A. It's not bisectable. This is what happens when I try a bisection: HEAD is now at f6edc9b isci: unify constants scripts/kconfig/conf --oldnoconfig Kconfig # # configuration written to .config # scripts/kconfig/conf --silentoldconfig Kconfig CHK include/linux/version.h CHK include/generated/utsrelease.h CALL scripts/checksyscalls.sh CC [M] drivers/scsi/isci/init.o In file included from drivers/scsi/isci/init.c:66:0: drivers/scsi/isci/core/scic_controller.h:67:6: error: nested redefinition of 'enum sci_controller_mode' drivers/scsi/isci/core/scic_controller.h:67:6: error: redeclaration of 'enum sci_controller_mode' drivers/scsi/isci/isci.h:75:6: note: originally defined here drivers/scsi/isci/core/scic_controller.h:68:2: error: redeclaration of enumerator 'SCI_MODE_SPEED' drivers/scsi/isci/isci.h:76:2: note: previous definition of 'SCI_MODE_SPEED' was here drivers/scsi/isci/core/scic_controller.h:69:2: error: redeclaration of enumerator 'SCI_MODE_SIZE' drivers/scsi/isci/isci.h:77:2: note: previous definition of 'SCI_MODE_SIZE' was here make[1]: *** [drivers/scsi/isci/init.o] Error 1 make: *** [drivers/scsi/isci/isci.ko] Error 2 And B. It's got contaminated history like this: commit bf94796e9b00fa3cc6d5f8021ceb547312fbed78 Author: Jack Wang <jack_wang@usish.com> Date: Thu Dec 2 13:27:05 2010 -0800 [SCSI] libsas: fix bug for vacant phy This patch fix bug reported by Chuck. And this new version incorporate comments from Hannes. Please consider to include it into mainline. [ upstream: 2bc72c91 ] Signed-off-by: Jack Wang <jack_wang@usish.com> Signed-off-by: Lindar Liu <lindar_liu@usish.com> Tested-by: Chuck Tuffli <Chuck_Tuffli@pmc-sierra.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de> commit 258c6a82d41929cee8e357887a6ba0518fb4085f Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Nov 23 09:47:14 2010 -0800 libsas: fix definition of wideport, include local sas address To date libsas has only looked at the attached sas address when determining the formation of wide ports. The specification and some hardware expects that phys with different addresses will not form a wide port unless the local peer phys also match each other. Introduce a flag to select stricter behavior at sas_register_ha() time. The flag can be dropped once it is known that all libsas users expect the same behavior. Current drivers just initialize this field to zero and get the traditional behavior. [upstream: 00f0254ed9b19164d416dc2e3c2e81eda55a6faf] Reported-by: Patrick Thomson <patrick.s.thomson@intel.com> Cc: Jeff Skirvin <jeffrey.d.skirvin@intel.com> Cc: Jack Wang <jack_wang@usish.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 73782d7e0e27b4a8b285f56e2f2c11534e33239f Author: Darrick J. Wong <djwong@us.ibm.com> Date: Tue Nov 23 09:48:34 2010 -0800 libsas: Don't issue commands to devices that have been hot-removed sd will get hung up issuing commands to flush write cache if a SAS device behind the expander is unplugged without warning. Change libsas to reject commands to domain devices that have already gone away. [maciej.trela@intel.com: removed setting ->gone in sas_deform_port() to permit sync cache commands at module removal] [upstream: 56dd2c0691a5a387b7b05835fe547dc6fade9407] Signed-off-by: Darrick J. Wong <djwong@us.ibm.com> linux-scsi-reference: <20071204223516.GA6767@tree.beaverton.ibm.com> Cc: Jeff Garzik <jeff@garzik.org> Cc: Brian King <brking@linux.vnet.ibm.com> Cc: Patrick Thomson <patrick.s.thomson@intel.com> Cc: Jeff Skirvin <jeffrey.d.skirvin@intel.com> Tested-by: Haipao Fan <haipao.fan@intel.com> Signed-off-by: Maciej Trela <maciej.trela@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> I need clean history and a bisectable tree ... By Sunday, since this has to be in linux-next before the next kernel release, which will likely be Monday. Since the tree is huge, I don't think this is fixable in the timescale, so just a single patch will do ... I can construct that, but I need the change log from you, please. James ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [GIT PULL] isci: sas controller driver for 3.0 2011-07-02 22:45 ` James Bottomley @ 2011-07-03 2:43 ` Dan Williams 2011-07-03 5:16 ` James Bottomley 0 siblings, 1 reply; 10+ messages in thread From: Dan Williams @ 2011-07-03 2:43 UTC (permalink / raw) To: James Bottomley Cc: Christoph Hellwig, Linus Torvalds, linux-scsi, Jiang, Dave, Skirvin, Jeffrey D, Ciechanowski, Ed, Nadolski, Edmund, David Milburn, Jeff Garzik, Danecki, Jacek, hare@suse.de On 07/02/2011 03:45 PM, James Bottomley wrote: > Look, this tree is unacceptable because > > A. It's not bisectable. This is what happens when I try a bisection: [..] > make[1]: *** [drivers/scsi/isci/init.o] Error 1 This was inadvertent, but breakage is breakage. > And B. It's got contaminated history like this: This was on purpose. We were in the position of stabilizing / validating the driver while carrying out the cleanups. To minimize back merges I duplicated upstream fixes/enabling in these instances. If this is de-facto unacceptable I will adjust my tree management going forward. But I don't believe it is given occasions where two maintainers take the same patch through their respective trees. > I need clean history and a bisectable tree ... By Sunday, since this has > to be in linux-next before the next kernel release, which will likely be > Monday. I certainly can rebase this to address the compile breakage. Although this does throw away old commit ids which have seen validation both inside and outside of Intel, but that's unavoidable at this point. The value I see in maintaining the history (even with some re-written ids) is: 1/ The history is available in mainline and not a side tree. Care went into the commit changelogs. They provide driver documentation and contain notes about future cleanups and improvements. 2/ Code reviewers are credited with Reported-by tags for the commits they generated. 3/ The history is instructive of the dangers of OS abstraction drivers. > Since the tree is huge, I don't think this is fixable in the timescale, > so just a single patch will do ... I can construct that, but I need the > change log from you, please. I can go either way, but my preference is a rebase to clean up the bisection. -- Dan ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [GIT PULL] isci: sas controller driver for 3.0 2011-07-03 2:43 ` Dan Williams @ 2011-07-03 5:16 ` James Bottomley 2011-07-03 5:46 ` Dan Williams 0 siblings, 1 reply; 10+ messages in thread From: James Bottomley @ 2011-07-03 5:16 UTC (permalink / raw) To: Dan Williams Cc: Christoph Hellwig, Linus Torvalds, linux-scsi, Jiang, Dave, Skirvin, Jeffrey D, Ciechanowski, Ed, Nadolski, Edmund, David Milburn, Jeff Garzik, Danecki, Jacek, hare@suse.de On Sat, 2011-07-02 at 19:43 -0700, Dan Williams wrote: > On 07/02/2011 03:45 PM, James Bottomley wrote: > > Look, this tree is unacceptable because > > > > A. It's not bisectable. This is what happens when I try a bisection: > [..] > > make[1]: *** [drivers/scsi/isci/init.o] Error 1 > > This was inadvertent, but breakage is breakage. That's fine for a development tree. When you submit a series of patches, whether directly or via a git tree, they have to be bisectable. This isn't negotiable because any old user has to be able to perform a bisection. This is why most submissions tend to be patches rather than git trees. To submit a git tree, you really have to prove that you knew the rules when you created and ran it (like no bisectability breaks etc.) > > And B. It's got contaminated history like this: > > This was on purpose. We were in the position of stabilizing / > validating the driver while carrying out the cleanups. To minimize back > merges I duplicated upstream fixes/enabling in these instances. If this > is de-facto unacceptable I will adjust my tree management going forward. Yes, it is. > But I don't believe it is given occasions where two maintainers take > the same patch through their respective trees. These aren't the same patches applied by different maintainers; it's a cherry pick backport which shouldn't be there. > > I need clean history and a bisectable tree ... By Sunday, since this has > > to be in linux-next before the next kernel release, which will likely be > > Monday. > > I certainly can rebase this to address the compile breakage. Although > this does throw away old commit ids which have seen validation both > inside and outside of Intel, but that's unavoidable at this point. > > The value I see in maintaining the history (even with some re-written > ids) is: > > 1/ The history is available in mainline and not a side tree. Care went > into the commit changelogs. They provide driver documentation and > contain notes about future cleanups and improvements. > > 2/ Code reviewers are credited with Reported-by tags for the commits > they generated. > > 3/ The history is instructive of the dangers of OS abstraction drivers. The internal intel history is completely irrelevant. I can see value to maintaining the commit history after publication because several non-intel people worked on it and it's nice to credit them. > > Since the tree is huge, I don't think this is fixable in the timescale, > > so just a single patch will do ... I can construct that, but I need the > > change log from you, please. > > I can go either way, but my preference is a rebase to clean up the > bisection. I just stopped at the first failure ... please ensure that there aren't any more ... as in test every bisection point in the tree, don't just squash the commit I've flagged as failing. The fact that there is a bisection failure tends to indicate you haven't been careful to check each commit in the tree ... which does make it suspect and will mean every commit in the reconstituted tree needs checking for bisectability. James ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [GIT PULL] isci: sas controller driver for 3.0 2011-07-03 5:16 ` James Bottomley @ 2011-07-03 5:46 ` Dan Williams 2011-07-03 11:37 ` Dan Williams 0 siblings, 1 reply; 10+ messages in thread From: Dan Williams @ 2011-07-03 5:46 UTC (permalink / raw) To: James Bottomley Cc: Christoph Hellwig, Linus Torvalds, linux-scsi, Jiang, Dave, Skirvin, Jeffrey D, Ciechanowski, Ed, Nadolski, Edmund, David Milburn, Jeff Garzik, Danecki, Jacek, hare@suse.de On 07/02/2011 10:16 PM, James Bottomley wrote: > On Sat, 2011-07-02 at 19:43 -0700, Dan Williams wrote: >> On 07/02/2011 03:45 PM, James Bottomley wrote: >>> Look, this tree is unacceptable because >>> >>> A. It's not bisectable. This is what happens when I try a bisection: >> [..] >>> make[1]: *** [drivers/scsi/isci/init.o] Error 1 >> >> This was inadvertent, but breakage is breakage. > > That's fine for a development tree. When you submit a series of > patches, whether directly or via a git tree, they have to be bisectable. > This isn't negotiable because any old user has to be able to perform a > bisection. > > This is why most submissions tend to be patches rather than git trees. > To submit a git tree, you really have to prove that you knew the rules > when you created and ran it (like no bisectability breaks etc.) Yup, knew it, blew it. >>> And B. It's got contaminated history like this: >> >> This was on purpose. We were in the position of stabilizing / >> validating the driver while carrying out the cleanups. To minimize back >> merges I duplicated upstream fixes/enabling in these instances. If this >> is de-facto unacceptable I will adjust my tree management going forward. > > Yes, it is. > >> But I don't believe it is given occasions where two maintainers take >> the same patch through their respective trees. > > These aren't the same patches applied by different maintainers; it's a > cherry pick backport which shouldn't be there. Ok, should have handled these with backmerges then, but these won't be there in the rebased tree. [..] > The internal intel history is completely irrelevant. I can see value to > maintaining the commit history after publication because several > non-intel people worked on it and it's nice to credit them. > Ok, everything prior to the first publicly available driver will be squashed. >>> Since the tree is huge, I don't think this is fixable in the timescale, >>> so just a single patch will do ... I can construct that, but I need the >>> change log from you, please. >> >> I can go either way, but my preference is a rebase to clean up the >> bisection. > > I just stopped at the first failure ... please ensure that there aren't > any more ... as in test every bisection point in the tree, don't just > squash the commit I've flagged as failing. > > The fact that there is a bisection failure tends to indicate you haven't > been careful to check each commit in the tree ... which does make it > suspect and will mean every commit in the reconstituted tree needs > checking for bisectability. > Will verify each commit. -- Dan ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [GIT PULL] isci: sas controller driver for 3.0 2011-07-03 5:46 ` Dan Williams @ 2011-07-03 11:37 ` Dan Williams 2011-07-03 19:14 ` James Bottomley 0 siblings, 1 reply; 10+ messages in thread From: Dan Williams @ 2011-07-03 11:37 UTC (permalink / raw) To: James Bottomley Cc: Christoph Hellwig, Linus Torvalds, linux-scsi, Jiang, Dave, Skirvin, Jeffrey D, Ciechanowski, Ed, Nadolski, Edmund, David Milburn, Jeff Garzik, Danecki, Jacek, hare@suse.de On Sat, 2011-07-02 at 22:46 -0700, Dan Williams wrote: > > I just stopped at the first failure ... please ensure that there aren't > > any more ... as in test every bisection point in the tree, don't just > > squash the commit I've flagged as failing. > > > > The fact that there is a bisection failure tends to indicate you haven't > > been careful to check each commit in the tree ... which does make it > > suspect and will mean every commit in the reconstituted tree needs > > checking for bisectability. > > > > Will verify each commit. I have pushed out a rebased tree it: 1/ discards the history prior to the first public release of the driver. 2/ discards merge commits and the cherry-pick backports 3/ deletes the reverts, and moves the CONFIG_EFI=n compile fix into the patch that introduced efi support. No other commit edits were required after this step. 4/ passes a compile test of every commit using a script like: for p in $(stg series --noprefix | xargs) do stg goto $p if ! make -j 8; then echo $p >> build-breakers else echo $p >> build-clean fi done 5/ is identical to the previous release I moved the old tree to a 'historical' branch. -- The following changes since commit 59c5f46fbe01a00eedf54a23789634438bb80603: Linux 3.0-rc2 (2011-06-06 18:06:33 +0900) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/djbw/isci.git master Adam Gruchala (2): isci: merge phy substates isci: Added support for C0 to SCU Driver Artur Wojcik (1): isci: unify isci_host data structures Bartosz Barcinski (2): isci: sparse warnings cleanup isci: audit usage of BUG_ON macro in isci driver Christoph Hellwig (7): isci: remove mmio wrappers isci: remove base_controller abstraction isci: remove base_request abstraction isci: kill dead data structurs in scic_io_request.h isci: simplify request state handlers isci: simplify dma coherent allocation isci: remove scic_controller state handlers Dan Williams (142): isci: Intel(R) C600 Series Chipset Storage Control Unit Driver isci: kill SCI_IO_REQUEST_DATA_DIRECTION isci: cleanup core consolidation leftovers isci: kill a callback cast isci: remove SCIC_DEBUG_ENABLED, and fixup an odd macro isci: bypass scic_controller_get_handler_methods() isci: cleanup "starting" state handling isci: implement error isr isci: advertise linkrate isci: debug fixes isci: phy state machine cleanup step1 isci: clean up remaining silicon revision ifdefs in phy init isci: fix sas address reporting isci: rework timer api isci: fix hang after target reset isci: pad stp and smp request sizes isci: enable isci for dmar builds isci: kill isci_host list in favor of an array isci: remove sci_device_handle isci: kill "host quiesce" mechanism isci: replace isci_remote_device completion with event queue isci: preallocate remote devices isci: replace remote_device_lock with scic_lock isci: cleanup debug leftovers in isci.h isci: Errors in the submit path for SATA devices manage the ap lock. isci: add "isci_id" attribute isci: fix incorrect assumptions about task->dev and task->dev->port being NULL isci: task.h compile and checkpatch fixes isci: reset hardware at init isci: Add support for probing OROM for OEM params isci: fixup with testing from isci OROM in BIOS isci: fix oem parameter initialization and mode detection isci: fix apc mode definition isci: fix a build warning isci: reorder init to cleanup unneeded declarations isci: kill some long macros isci: namespacecheck cleanups isci: remove unused "remote_device_started" isci: cleanup isci_remote_device[_not]_ready interface isci: fix fragile/conditional isci_host lookups isci: replace sci_sas_link_rate with sas_linkrate isci: fix oem parameter header definition isci: validate oem parameters early, and fallback isci: rely on irq core for intx multiplexing, and silence screaming intx isci: make a remote_node_context a proper member of a remote_device isci: remove rnc->device back pointer isci: unify remote_device data structures isci: move remote_device handling out of the core isci: cleanup remote device construction and comments isci: kill smp_discover_response_protocols in favor of domain_device.dev_type isci: kill smp_discover_response isci: remove usage of sci_sas_address in scic_sds_remote_device isci: remove scic_sds_remote_device_get_port_index isci: allow fallback to option-rom if efi variable retrieval fails isci: merge remote_device substates into a single state machine isci: kill scic_remote_device_get_connection_rate isci: fix remote_device start_io regressions isci: unify remote_device start_handlers isci: unify remote_device stop_handlers isci: kill remote_device fail_handler isci: unify remote_device destruct_handlers isci: unify remote_device reset_handlers isci: unify remote_device reset_complete_handlers isci: unify remote_device start_io_handlers isci: unify remote_device complete_io_handlers isci: kill remote_device continue_io_handler isci: unify remote_device start_task_handlers isci: kill remote_device complete_task_handler isci: unify remote_device suspend_handlers isci: kill remote_device resume_handler isci: unify remote_device event_handlers isci: unify remote_device frame_handlers isci: kill scic_sds_remote_device.state_handlers isci: remove compile-time (Kconfig) silicon configuration isci: fix ata locking isci: implement I_T_nexus_reset isci: unify phy data structures isci: unify port data structures isci: move stp request info to scic_sds_request isci: make sgl explicit/aligned request object member isci: move task context alignment from run-time to compile time isci: make command/response iu explicit request object members isci: unify request data structures isci: unify constants isci: move core/controller to host isci: uplevel register hardware data structures and unsolicited frame handling isci: uplevel state machine isci: uplevel request infrastructure isci: uplevel phy infrastructure isci: uplevel port infrastructure isci: merge ssp task management substates into primary state machine isci: merge smp request substates into primary state machine isci: merge stp request substates into primary state machine isci: unify request abort handlers isci: unify request frame handlers isci: remove request task context completion state handler isci: remove the completion and event state handlers isci: unify phy start handlers isci: unify phy stop handlers isci: unify phy reset handlers isci: remove phy destruct handlers isci: unify phy frame handlers isci: unify phy event handlers isci: unify phy consume_power handlers isci: clarify phy to port lookups isci: unify port start_io and complete_io handlers isci: unify rnc event handlers isci: unify rnc destruct handlers isci: unify rnc suspend/resume handlers isci: unify rnc start{io|task} handlers isci: add some type safety to the state machine interface isci: remove 'min memory' infrastructure isci: fix isci_terminate_pending() list management isci: cleanup/optimize pool implementation isci: cleanup tag macros isci: cleanup/optimize queue increment macros isci: cleanup request allocation isci: fix ssp response iu buffer size in isci_tmf isci: atomic device lookup and reference counting isci: kill isci_remote_device_change_state() isci: kill device_sequence isci: fix smp response frame overrun isci: fix dma_unmap_sg usage isci: fix support for arbitrarily large smp requests isci: fix isci_task_execute_tmf completion isci: fix frame received locking isci: unify can_queue tracking on the tci_pool, uplevel tag assignment isci: combine request flags isci: preallocate requests isci: rename / clean up scic_sds_stp_request isci: unify isci_request and scic_sds_request isci: unify isci_phy and scic_sds_phy isci: fix scic_sds_remote_device_terminate_requests isci: unify isci_port and scic_sds_port isci: unify isci_remote_device and scic_sds_remote_device isci: unify isci_host and scic_sds_controller isci: retire scic_sds_ and scic_ prefixes isci: kill 'get/set' macros isci: merge sata.[ch] into request.c isci: merge scu_unsolicited_frame.h into unsolicited_frame_control.h isci: cleanup silicon revision detection isci: pare back error messsages Dave Jiang (38): isci: removing unused loglevel module param isci: Move firmware loading to per PCI device isci: Removed special macros that does 64bit address math isci: Make the driver copy data directly from and to sg for PIO isci: have the driver use native SG calls and DMA-API isci: Change event notify calls from scic_cb_* to isci_event_* isci: Removing deprecated functions isci: Adding support for phy enable and disable isci: Cleanup warning messages for phy resets isci: Adding EFI variable skeletal support isci: update efi variable name and guid isci: copy the oem parameters instead of assign isci: Fixup for OEM parameter EFI variable retrieval isci: exposing user parameters via module params isci: Remove event_* calls as they are just wrappers isci: Remove "screaming" data types isci: replace this_* and the_* variables with more meaningful names isci: removing non-working ATAPI code isci: Remove excessive log noise with expander hot-unplug isci: Removing unused define SCIC_SDS_4_ENABLED isci: Convert SATA fis data structures to Linux native isci: Convert ATA defines to Linux native defines isci: Convert SAS identify address frame to Linux Native format isci: Collapsing of phy_type data structure isci: renaming sas_capabilities to scic_phy_cap isci: Fixup SSP command IU and task IU isci: Convert of sci_ssp_response_iu to ssp_response_iu isci: Fixup of smp request isci: Converting smp_response to Linux native smp_resp isci: remove redundant copies of IAF isci: fixup SAS iaf protocols data structure isci: Remove SCIC_SWAP_DWORD() isci: Using Linux SSP frame header isci: removing intel_*.h headers isci: Removing unnecessary functions in request.c isci: removing the kmalloc in smp request construct isci: Retrieve the EFI variable for OEM parameter isci: Removing unused variables compiler warnings Edmund Nadolski (17): isci: remove unused SC_LIBRARY_HANDLE_T typedef isci: remove SCI_INVALID_HANDLE isci: kill sci_types.h isci: enable interrupts during controller start, and flush discovery isci: remove scic_controller_get_handler_methods and ilk isci: kill scic_controller_get_port_handle function isci: remove scic_sds_port_increment_request_count isci: replace isci_timer list with proper embedded timers isci: convert port config agent timer to sci_timer isci: convert phy sata_timeout_timer to sci_timer isci: convert power control timer to sci_timer isci: convert scic_timeout_timer to sci_timer isci: convert phy_startup_timer to sci_timer isci: Remove tmf timeout_timer isci: remove isci_timer interface isci: state machine cleanup isci: additional state machine cleanup Havard Skinnemoen (1): isci: Initialize proc_name field in scsi_host_template Henryk Dembkowski (6): isci: remote device and node cleanup step1 isci: coding style changes for remote device isci: c99 tables cleanup step1 isci: coding style changes for remote device isci: Move transport layer registers from port to phy isci: add support for 2 more oem parmeters Jacek Danecki (2): isci: Add support for user parameters in SCIC layer isci: rnc state machine table c99 conversion Jeff Skirvin (27): isci: isci_request_cleanup_completed_loiterer checks task before task_done isci: Changes in isci_host_completion_routine isci: fix completion / abort path. isci: Any reset indicated on an I/O completion escalates it to the error path. isci: save the i/o tag outside the scic request structure. isci: Cleaning up task execute path. isci: Code review change for completion pointer cleanup. isci: Termination handling cleanup, added termination timeouts. isci: Fix TMF build for SAS/SATA LUN reset cases. isci: Fixed BUG_ON in isci_abort_task_process_cb callback. isci: Always set response/status for requests going into the error path. isci: All pending requests are terminated before stopping the device. isci: don't hold scic_lock over calls to sas_task_abort() isci: Properly handle requests in the "aborting" state. isci: Free host lock for SATA/STP abort escalation at submission time. isci: Fix use of SATA soft reset state machine. isci: Qualify when the host lock is managed for STP/SATA callbacks. isci: Move the reset delay after the remote node resumption. isci: filter broadcast change notifications during SMP phy resets isci: Add decode for SMP request retry error condition isci: Requests that do not start must be set to "complete" isci: Handle timed-out request terminations correctly isci: Explicitly decode remote node ready and suspended states isci: Hard reset failure will link reset all phys in the port isci: Disable link layer hang detection isci: Terminate dev requests on FIS err bit rx in NCQ isci: Device reset should request sas_phy_reset(phy, true) Maciej Patelczyk (10): isci: Implement SCU AFE recipe 10. isci: Removed struct sci_base_object from state machine. isci: Removed sci_base_object from scic_sds_controller. isci: Removed sci_base_object from scic_sds_phy. isci: Removed sci_base_object from scic_sds_port. isci: Removed sci_base_object from scic_sds_remote_device. isci: Removed sci_base_object from scic_sds_remote_node_context. isci: Removed sci_base_object from scic_sds_request. isci: Removed sci_object.h from project. isci: possible buffer overflow in isci_parse_oem_parameters fixed Maciej Trela (3): isci: remove base_remote_device abstraction isci: remove base_port abstraction isci: remove base_phy abstraction Pawel Marek (1): isci: controller stop/start fixes Piotr Sawicki (11): isci: fix for asserts during aborts/resets to SAS/SATA in APC mode isci: handle cases where a d2h fis is used report an ncq error isci: unify request start handlers isci: c99 port state handlers isci: merge port ready substates into primary state machine isci: remove port start handler isci: unify port stop handlers isci: remove port destruct handler isci: unify port reset, add_phy, and remove_phy handlers isci: remove port frame and event handlers isci: unify port link_up and link_down handlers Tomasz Chudy (3): isci: fix "no outbound task timeout" default value isci: Add Support for new TC completion codes isci: workaround port task scheduler starvation issue drivers/scsi/Kconfig | 13 + drivers/scsi/Makefile | 1 + drivers/scsi/isci/Makefile | 8 + drivers/scsi/isci/firmware/Makefile | 19 + drivers/scsi/isci/firmware/README | 36 + drivers/scsi/isci/firmware/create_fw.c | 99 + drivers/scsi/isci/firmware/create_fw.h | 77 + drivers/scsi/isci/host.c | 2751 ++++++++++++++++++++ drivers/scsi/isci/host.h | 542 ++++ drivers/scsi/isci/init.c | 565 ++++ drivers/scsi/isci/isci.h | 538 ++++ drivers/scsi/isci/phy.c | 1312 ++++++++++ drivers/scsi/isci/phy.h | 504 ++++ drivers/scsi/isci/port.c | 1757 +++++++++++++ drivers/scsi/isci/port.h | 306 +++ drivers/scsi/isci/port_config.c | 754 ++++++ drivers/scsi/isci/probe_roms.c | 242 ++ drivers/scsi/isci/probe_roms.h | 249 ++ drivers/scsi/isci/registers.h | 1934 ++++++++++++++ drivers/scsi/isci/remote_device.c | 1501 +++++++++++ drivers/scsi/isci/remote_device.h | 352 +++ drivers/scsi/isci/remote_node_context.c | 627 +++++ drivers/scsi/isci/remote_node_context.h | 224 ++ drivers/scsi/isci/remote_node_table.c | 598 +++++ drivers/scsi/isci/remote_node_table.h | 188 ++ drivers/scsi/isci/request.c | 3391 +++++++++++++++++++++++++ drivers/scsi/isci/request.h | 448 ++++ drivers/scsi/isci/sas.h | 219 ++ drivers/scsi/isci/scu_completion_codes.h | 283 ++ drivers/scsi/isci/scu_event_codes.h | 336 +++ drivers/scsi/isci/scu_remote_node_context.h | 229 ++ drivers/scsi/isci/scu_task_context.h | 942 +++++++ drivers/scsi/isci/task.c | 1675 ++++++++++++ drivers/scsi/isci/task.h | 367 +++ drivers/scsi/isci/unsolicited_frame_control.c | 225 ++ drivers/scsi/isci/unsolicited_frame_control.h | 278 ++ firmware/Makefile | 1 + firmware/isci/isci_firmware.bin.ihex | 16 + 38 files changed, 23607 insertions(+), 0 deletions(-) create mode 100644 drivers/scsi/isci/Makefile create mode 100644 drivers/scsi/isci/firmware/Makefile create mode 100644 drivers/scsi/isci/firmware/README create mode 100644 drivers/scsi/isci/firmware/create_fw.c create mode 100644 drivers/scsi/isci/firmware/create_fw.h create mode 100644 drivers/scsi/isci/host.c create mode 100644 drivers/scsi/isci/host.h create mode 100644 drivers/scsi/isci/init.c create mode 100644 drivers/scsi/isci/isci.h create mode 100644 drivers/scsi/isci/phy.c create mode 100644 drivers/scsi/isci/phy.h create mode 100644 drivers/scsi/isci/port.c create mode 100644 drivers/scsi/isci/port.h create mode 100644 drivers/scsi/isci/port_config.c create mode 100644 drivers/scsi/isci/probe_roms.c create mode 100644 drivers/scsi/isci/probe_roms.h create mode 100644 drivers/scsi/isci/registers.h create mode 100644 drivers/scsi/isci/remote_device.c create mode 100644 drivers/scsi/isci/remote_device.h create mode 100644 drivers/scsi/isci/remote_node_context.c create mode 100644 drivers/scsi/isci/remote_node_context.h create mode 100644 drivers/scsi/isci/remote_node_table.c create mode 100644 drivers/scsi/isci/remote_node_table.h create mode 100644 drivers/scsi/isci/request.c create mode 100644 drivers/scsi/isci/request.h create mode 100644 drivers/scsi/isci/sas.h create mode 100644 drivers/scsi/isci/scu_completion_codes.h create mode 100644 drivers/scsi/isci/scu_event_codes.h create mode 100644 drivers/scsi/isci/scu_remote_node_context.h create mode 100644 drivers/scsi/isci/scu_task_context.h create mode 100644 drivers/scsi/isci/task.c create mode 100644 drivers/scsi/isci/task.h create mode 100644 drivers/scsi/isci/unsolicited_frame_control.c create mode 100644 drivers/scsi/isci/unsolicited_frame_control.h create mode 100644 firmware/isci/isci_firmware.bin.ihex ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [GIT PULL] isci: sas controller driver for 3.0 2011-07-03 11:37 ` Dan Williams @ 2011-07-03 19:14 ` James Bottomley 0 siblings, 0 replies; 10+ messages in thread From: James Bottomley @ 2011-07-03 19:14 UTC (permalink / raw) To: Dan Williams Cc: Christoph Hellwig, Linus Torvalds, linux-scsi, Jiang, Dave, Skirvin, Jeffrey D, Ciechanowski, Ed, Nadolski, Edmund, David Milburn, Jeff Garzik, Danecki, Jacek, hare@suse.de On Sun, 2011-07-03 at 04:37 -0700, Dan Williams wrote: > On Sat, 2011-07-02 at 22:46 -0700, Dan Williams wrote: > > > I just stopped at the first failure ... please ensure that there aren't > > > any more ... as in test every bisection point in the tree, don't just > > > squash the commit I've flagged as failing. > > > > > > The fact that there is a bisection failure tends to indicate you haven't > > > been careful to check each commit in the tree ... which does make it > > > suspect and will mean every commit in the reconstituted tree needs > > > checking for bisectability. > > > > > > > Will verify each commit. > > I have pushed out a rebased tree it: > > 1/ discards the history prior to the first public release of the driver. > > 2/ discards merge commits and the cherry-pick backports > > 3/ deletes the reverts, and moves the CONFIG_EFI=n compile fix into the > patch that introduced efi support. No other commit edits were required > after this step. > > 4/ passes a compile test of every commit using a script like: > for p in $(stg series --noprefix | xargs) > do > stg goto $p > if ! make -j 8; then > echo $p >> build-breakers > else > echo $p >> build-clean > fi > done > > 5/ is identical to the previous release Great, thanks. You still have nine legitimate checkpatch.pl errors (all of which were introduced in your series). I applied the following to fix them, but I need future patches to be checkpatch clean as well, please. James --- diff --git a/drivers/scsi/isci/phy.c b/drivers/scsi/isci/phy.c index d8f893e..79313a7 100644 --- a/drivers/scsi/isci/phy.c +++ b/drivers/scsi/isci/phy.c @@ -197,7 +197,7 @@ sci_phy_link_layer_initialization(struct isci_phy *iphy, llctl = SCU_SAS_LLCTL_GEN_VAL(NO_OUTBOUND_TASK_TIMEOUT, (u8)ihost->user_parameters.no_outbound_task_timeout); - switch(phy_user->max_speed_generation) { + switch (phy_user->max_speed_generation) { case SCIC_SDS_PARM_GEN3_SPEED: link_rate = SCU_SAS_LINK_LAYER_CONTROL_MAX_LINK_RATE_GEN3; break; diff --git a/drivers/scsi/isci/probe_roms.c b/drivers/scsi/isci/probe_roms.c index 4b9d813..917d437 100644 --- a/drivers/scsi/isci/probe_roms.c +++ b/drivers/scsi/isci/probe_roms.c @@ -34,8 +34,9 @@ #include "task.h" #include "probe_roms.h" -static efi_char16_t isci_efivar_name[] = - {'R', 's', 't', 'S', 'c', 'u', 'O'}; +static efi_char16_t isci_efivar_name[] = { + 'R', 's', 't', 'S', 'c', 'u', 'O' +}; struct isci_orom *isci_request_oprom(struct pci_dev *pdev) { diff --git a/drivers/scsi/isci/remote_device.c b/drivers/scsi/isci/remote_device.c index 85e54f5..b6e6368 100644 --- a/drivers/scsi/isci/remote_device.c +++ b/drivers/scsi/isci/remote_device.c @@ -73,7 +73,7 @@ static void isci_remote_device_not_ready(struct isci_host *ihost, struct isci_remote_device *idev, u32 reason) { - struct isci_request * ireq; + struct isci_request *ireq; dev_dbg(&ihost->pdev->dev, "%s: isci_device = %p\n", __func__, idev); diff --git a/drivers/scsi/isci/request.h b/drivers/scsi/isci/request.h index 11bc279..7a1d5a9 100644 --- a/drivers/scsi/isci/request.h +++ b/drivers/scsi/isci/request.h @@ -440,8 +440,8 @@ void sci_smp_request_copy_response(struct isci_request *ireq); static inline int isci_task_is_ncq_recovery(struct sas_task *task) { return (sas_protocol_ata(task->task_proto) && - task->ata_task.fis.command == ATA_CMD_READ_LOG_EXT && - task->ata_task.fis.lbal == ATA_LOG_SATA_NCQ); + task->ata_task.fis.command == ATA_CMD_READ_LOG_EXT && + task->ata_task.fis.lbal == ATA_LOG_SATA_NCQ); } diff --git a/drivers/scsi/isci/task.c b/drivers/scsi/isci/task.c index 2df45c5..d6bcdd0 100644 --- a/drivers/scsi/isci/task.c +++ b/drivers/scsi/isci/task.c @@ -88,44 +88,45 @@ static void isci_task_refuse(struct isci_host *ihost, struct sas_task *task, * function should not be completed to the host in the regular path. */ switch (disposition) { - case isci_perform_normal_io_completion: - /* Normal notification (task_done) */ - dev_dbg(&ihost->pdev->dev, - "%s: Normal - task = %p, response=%d, " - "status=%d\n", - __func__, task, response, status); + case isci_perform_normal_io_completion: + /* Normal notification (task_done) */ + dev_dbg(&ihost->pdev->dev, + "%s: Normal - task = %p, response=%d, " + "status=%d\n", + __func__, task, response, status); - task->lldd_task = NULL; + task->lldd_task = NULL; - isci_execpath_callback(ihost, task, task->task_done); - break; + isci_execpath_callback(ihost, task, task->task_done); + break; - case isci_perform_aborted_io_completion: - /* No notification because this request is already in the - * abort path. - */ - dev_dbg(&ihost->pdev->dev, - "%s: Aborted - task = %p, response=%d, " - "status=%d\n", - __func__, task, response, status); - break; + case isci_perform_aborted_io_completion: + /* + * No notification because this request is already in the + * abort path. + */ + dev_dbg(&ihost->pdev->dev, + "%s: Aborted - task = %p, response=%d, " + "status=%d\n", + __func__, task, response, status); + break; - case isci_perform_error_io_completion: - /* Use sas_task_abort */ - dev_dbg(&ihost->pdev->dev, - "%s: Error - task = %p, response=%d, " - "status=%d\n", - __func__, task, response, status); + case isci_perform_error_io_completion: + /* Use sas_task_abort */ + dev_dbg(&ihost->pdev->dev, + "%s: Error - task = %p, response=%d, " + "status=%d\n", + __func__, task, response, status); - isci_execpath_callback(ihost, task, sas_task_abort); - break; + isci_execpath_callback(ihost, task, sas_task_abort); + break; - default: - dev_dbg(&ihost->pdev->dev, - "%s: isci task notification default case!", - __func__); - sas_task_abort(task); - break; + default: + dev_dbg(&ihost->pdev->dev, + "%s: isci task notification default case!", + __func__); + sas_task_abort(task); + break; } } @@ -1056,7 +1057,7 @@ int isci_task_abort_task(struct sas_task *task) dev_dbg(&isci_host->pdev->dev, "%s: old_request == %p\n", __func__, old_request); - any_dev_reset = isci_device_is_reset_pending(isci_host,isci_device); + any_dev_reset = isci_device_is_reset_pending(isci_host, isci_device); spin_lock_irqsave(&task->task_state_lock, flags); @@ -1115,9 +1116,9 @@ int isci_task_abort_task(struct sas_task *task) __func__, task); } goto out; - } - else + } else { spin_unlock_irqrestore(&task->task_state_lock, flags); + } spin_lock_irqsave(&isci_host->scic_lock, flags); ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [GIT PULL] isci: sas controller driver for 3.0 2011-07-01 23:35 [GIT PULL] isci: sas controller driver for 3.0 Dan Williams 2011-07-02 22:45 ` James Bottomley @ 2011-07-04 13:45 ` Christoph Hellwig 2011-07-04 14:07 ` Douglas Gilbert 1 sibling, 1 reply; 10+ messages in thread From: Christoph Hellwig @ 2011-07-04 13:45 UTC (permalink / raw) To: Dan Williams Cc: James Bottomley, Christoph Hellwig, Linus Torvalds, linux-scsi, Dave Jiang, Jeff Skirvin, Ed Ciechanowski, Ed Nadolski, David Milburn, Jeff Garzik, Jacek Danecki, hare On Fri, Jul 01, 2011 at 04:35:48PM -0700, Dan Williams wrote: > James, please pull from: > > git://git.kernel.org/pub/scm/linux/kernel/git/djbw/isci.git master > > ...to receive the isci driver that supports the integrated 6Gb/s SAS > capabilities of the upcoming Intel(R) C600 series chipset family. This > part is targeted at standard servers / workstations and provides > up to 8-ports (2x4-port controllers) of SAS beyond the traditional SATA > ports (surfaced by the ahci driver). The driver looks okay to me. It's not stellar, but so much better than the original. I'll make sure to keep your TODO list long after the merge, though :) ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [GIT PULL] isci: sas controller driver for 3.0 2011-07-04 13:45 ` Christoph Hellwig @ 2011-07-04 14:07 ` Douglas Gilbert 2011-07-04 14:38 ` Matthew Wilcox 0 siblings, 1 reply; 10+ messages in thread From: Douglas Gilbert @ 2011-07-04 14:07 UTC (permalink / raw) To: Christoph Hellwig Cc: Dan Williams, James Bottomley, Linus Torvalds, linux-scsi, Dave Jiang, Jeff Skirvin, Ed Ciechanowski, Ed Nadolski, David Milburn, Jeff Garzik, Jacek Danecki, hare On 11-07-04 03:45 PM, Christoph Hellwig wrote: > On Fri, Jul 01, 2011 at 04:35:48PM -0700, Dan Williams wrote: >> James, please pull from: >> >> git://git.kernel.org/pub/scm/linux/kernel/git/djbw/isci.git master >> >> ...to receive the isci driver that supports the integrated 6Gb/s SAS >> capabilities of the upcoming Intel(R) C600 series chipset family. This >> part is targeted at standard servers / workstations and provides >> up to 8-ports (2x4-port controllers) of SAS beyond the traditional SATA >> ports (surfaced by the ahci driver). s/surfaced/serviced/ > The driver looks okay to me. It's not stellar, but so much better > than the original. I'll make sure to keep your TODO list long after > the merge, though :) ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [GIT PULL] isci: sas controller driver for 3.0 2011-07-04 14:07 ` Douglas Gilbert @ 2011-07-04 14:38 ` Matthew Wilcox 0 siblings, 0 replies; 10+ messages in thread From: Matthew Wilcox @ 2011-07-04 14:38 UTC (permalink / raw) To: Douglas Gilbert Cc: Christoph Hellwig, Dan Williams, James Bottomley, Linus Torvalds, linux-scsi, Dave Jiang, Jeff Skirvin, Ed Ciechanowski, Ed Nadolski, David Milburn, Jeff Garzik, Jacek Danecki, hare On Mon, Jul 04, 2011 at 04:07:04PM +0200, Douglas Gilbert wrote: > On 11-07-04 03:45 PM, Christoph Hellwig wrote: >> On Fri, Jul 01, 2011 at 04:35:48PM -0700, Dan Williams wrote: >>> James, please pull from: >>> >>> git://git.kernel.org/pub/scm/linux/kernel/git/djbw/isci.git master >>> >>> ...to receive the isci driver that supports the integrated 6Gb/s SAS >>> capabilities of the upcoming Intel(R) C600 series chipset family. This >>> part is targeted at standard servers / workstations and provides >>> up to 8-ports (2x4-port controllers) of SAS beyond the traditional SATA >>> ports (surfaced by the ahci driver). > > s/surfaced/serviced/ "surfaced" seems to be a popular term within Intel. I believe it comes from Windows. It means "the ahci driver is responsible for creating the device entries for the SATA ports". -- Matthew Wilcox Intel Open Source Technology Centre "Bill, look, we understand that you're interested in selling us this operating system, but compare it to ours. We can't possibly take such a retrograde step." ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-07-04 14:38 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-07-01 23:35 [GIT PULL] isci: sas controller driver for 3.0 Dan Williams 2011-07-02 22:45 ` James Bottomley 2011-07-03 2:43 ` Dan Williams 2011-07-03 5:16 ` James Bottomley 2011-07-03 5:46 ` Dan Williams 2011-07-03 11:37 ` Dan Williams 2011-07-03 19:14 ` James Bottomley 2011-07-04 13:45 ` Christoph Hellwig 2011-07-04 14:07 ` Douglas Gilbert 2011-07-04 14:38 ` Matthew Wilcox
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox