linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFT] major libata update
@ 2006-05-15 17:00 Jeff Garzik
  2006-05-15 17:18 ` Andrew Morton
                   ` (8 more replies)
  0 siblings, 9 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-15 17:00 UTC (permalink / raw)
  To: linux-ide; +Cc: linux-kernel, akpm, torvalds


After much development and review, I merged a massive pile of libata
patches from Tejun Heo and Albert Lee.  This update contains the
following major libata

CHANGES:
* Rewritten error handling. This is a major piece of work, even
  though it will be rarely seen.  The new libata EH provides the
  foundation for not only improved error handling, but also new features
  such as device hotplug or command queueing. (Tejun Heo)

* PIO-based I/O is now IRQ-driven by default, rather than polled
  in a kernel thread.  The polling path will continue to exist for
  controllers that need it, and other special cases. (Albert Lee)

* Core support for command queueing (Jens Axboe, Tejun Heo)

* Support for NCQ-style command queueing (Jens Axboe, Tejun Heo)

* Increase max-sectors dramatically, for LBA48 devices (Tejun Heo?)

* Other minor changes, from myself and others.

IMPACT:
* If all goes well, this update should improve error handling,
  solve several outstanding, difficult-to-solve bugs, and provide a good
  foundation for adding some nifty features in the future.

TESTING:
* Although most drivers by count received few operational changes, the
common probe path was updated, so all drivers need fresh "yes, it sees
all my disks" regression testing.

* ahci and sata_sil24 were touched a lot, and so need additional
testing.

* sata_sil and ata_piix also need healthy re-testing of all basic
functionality.

FEEDBACK:
* Please CC linux-ide@vger.kernel.org on all emails and bug reports.

MERGE STATUS:
* Barring major problems in testing, will submit during 2.6.18 merge window.


Patch:
http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.6.17-rc4-git2-libata1.patch.bz2
(diff'd against 2.6.17-rc4-git2, but should apply to most recent
2.6.17-rcX[-gitY] kernels)

The 'upstream' branch of

	git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev.git

contains the following updates:

 drivers/scsi/Makefile       |    2 
 drivers/scsi/ahci.c         |  436 ++++---
 drivers/scsi/ata_piix.c     |   16 
 drivers/scsi/libata-bmdma.c |  143 ++
 drivers/scsi/libata-core.c  | 2437 +++++++++++++++++++++++++++++---------------
 drivers/scsi/libata-eh.c    | 1558 ++++++++++++++++++++++++++++
 drivers/scsi/libata-scsi.c  |  423 ++++---
 drivers/scsi/libata.h       |   24 
 drivers/scsi/pdc_adma.c     |   10 
 drivers/scsi/sata_mv.c      |   30 
 drivers/scsi/sata_nv.c      |    6 
 drivers/scsi/sata_promise.c |   18 
 drivers/scsi/sata_qstor.c   |   13 
 drivers/scsi/sata_sil.c     |   65 -
 drivers/scsi/sata_sil24.c   |  615 ++++++-----
 drivers/scsi/sata_sis.c     |    2 
 drivers/scsi/sata_svw.c     |    4 
 drivers/scsi/sata_sx4.c     |   19 
 drivers/scsi/sata_uli.c     |    2 
 drivers/scsi/sata_via.c     |    2 
 drivers/scsi/sata_vsc.c     |   15 
 drivers/scsi/scsi.c         |   18 
 drivers/scsi/scsi_error.c   |    3 
 drivers/scsi/scsi_lib.c     |    2 
 drivers/scsi/scsi_priv.h    |    1 
 include/linux/ata.h         |   34 
 include/linux/libata.h      |  379 ++++--
 include/scsi/scsi_cmnd.h    |    1 
 include/scsi/scsi_eh.h      |    1 
 include/scsi/scsi_host.h    |    1 
 30 files changed, 4634 insertions(+), 1646 deletions(-)

Albert Lee:
      libata: interrupt driven pio for libata-core
      libata: interrupt driven pio for LLD
      libata irq-pio: add comments and cleanup
      libata irq-pio: rename atapi_packet_task() and comments
      libata irq-pio: simplify if condition in ata_dataout_task()
      libata irq-pio: cleanup ata_qc_issue_prot()
      libata: move atapi_send_cdb() and ata_dataout_task()
      [libata irq-pio] reorganize ata_pio_sector() and __atapi_pio_bytes()
      [libata irq-pio] reorganize "buf + offset" in ata_pio_sector()
      [libata irq-pio] use PageHighMem() to optimize the kmap_atomic() usage
      libata irq-pio: misc fixes
      libata irq-pio: merge the ata_dataout_task workqueue with ata_pio_task workqueue
      libata irq-pio: eliminate unnecessary queuing in ata_pio_first_block()
      libata irq-pio: add read/write multiple support
      libata-dev: determine err_mask when error is found
      libata-dev: filter out noisy ATAPI error messages
      libata-dev: Fix array index value in ata_rwcmd_protocol()
      libata-dev: Use new ata_queue_pio_task() for PIO polling task
      libata-dev: Use new AC_ERR_* flags
      libata-dev: Minor comment fix
      libata-dev: recognize WRITE_MULTI_FUA_EXT for r/w multiple
      libata-dev: Remove trailing whitespaces
      libata-dev: Fix merge problem with upstream
      libata-dev: Remove atapi_packet_task()
      libata-dev: Move out the HSM code from ata_host_intr()
      libata-dev: Minor fix for ata_hsm_move() to work with ata_host_intr()
      libata-dev: Let ata_hsm_move() work with both irq-pio and polling pio
      libata-dev: Convert ata_pio_task() to use the new ata_hsm_move()
      libata-dev: Cleanup unused enums/functions
      libata-dev: ata_check_atapi_dma() fix for ATA_FLAG_PIO_POLLING LLDDs
      libata-dev: Make the the in_wq check as an inline function
      libata-dev: irq-pio minor fixes (respin)
      libata-dev: fix the device err check sequence (respin)
      libata-dev: wait idle after reading the last data block
      libata-dev: print out information for ATAPI devices with CDB interrupts
      libata-dev: handle DRQ=1 ERR=1 (revised)
      libata-dev: irq-pio minor fix
      libata-dev: irq-pio minor fix 2
      libata: convert ATAPI_ENABLE_DMADIR to module parameter

Bastiaan Jacques:
      ahci: add support for VIA VT8251

Jeff Garzik:
      [libata irq-pio] build fix
      [libata pdc_adma] update for removal of ATA_FLAG_NOINTR
      [libata pdc_adma] fix for new irq-driven PIO code
      [libata sata_mv] IRQ PIO build fix
      [libata] irq-pio: fix breakage related to err_mask merge
      [libata sata_promise] irq_pio: fix merge bug
      [libata] build fix after merging some pre-packet_task-removal code
      [libata irq-pio] s/assert/WARN_ON/
      [libata] build fix after cdb_len move
      sata_vsc build fix
      libata: irq-pio build fixes
      [libata] irq-pio: fix build breakage
      [libata] irq-pio: Fix merge mistake
      [libata] kill bogus cut-n-pasted comments in three drivers
      [libata] bump versions
      libata: Fix EH merge difference between this branch and upstream.
      libata: Add helper ata_shost_to_port()

Luben Tuikov:
      SCSI: Introduce scsi_req_abort_cmd (REPOST)

Tejun Heo:
      libata: increase LBA48 max sectors to 65535
      libata: fix ata_set_mode() return value
      libata: make ata_bus_probe() return negative errno on failure
      libata: separate out ata_spd_string()
      libata: convert do_probe_reset() to ata_do_reset()
      libata: implement ata_dev_enabled and disabled()
      libata: make ata_set_mode() handle no-device case properly
      libata: reorganize ata_set_mode()
      libata: don't disable devices from ata_set_mode()
      libata: preserve SATA SPD setting over hard resets
      libata: implement ata_dev_absent()
      libata: implement ap->sata_spd_limit and helpers
      libata: use SATA speed down in ata_drive_probe_reset()
      libata: add 5s sleep between resets
      libata: implement ata_down_xfermask_limit()
      libata: improve ata_bus_probe()
      libata: consider disabled devices in ata_dev_xfermask()
      libata: report device number when PIO fails
      libata: ata_dev_revalidate() printk update
      libata: ATA_FLAG_IN_EH is not used, kill it
      libata: clean up constants
      libata: rename ATA_FLAG_PORT_DISABLED to ATA_FLAG_DISABLED
      libata: clear only affected flags during ata_dev_configure()
      libata: clear ATA_DFLAG_PIO before setting it
      libata: add ATA_QCFLAG_IO
      libata: pass qc around intead of ap during PIO
      libata: always generate sense if qc->err_mask is non-zero
      libata: don't read TF directly from sense generation functions
      libata: add @cdb to ata_exec_internal()
      libata: dec scmd->retries for qcs with zero err_mask
      libata: separate out libata-eh.c
      libata: make some libata-core routines extern
      libata: print SControl in SATA link status info message
      ahci: do not fail softreset if PHY reports no device
      libata: set default cbl in probeinit
      libata: kill @verbose from ata_reset_fn_t
      libata: make reset methods complain when they fail
      sata_sil24: fix timeout calculation in sil24_softreset
      sata_sil24: better error message from softreset
      libata: implement ata_wait_register()
      ahci: use ata_wait_register()
      sata_sil24: use ata_wait_register()
      libata: disable failed devices only once in ata_bus_probe()
      libata: cosmetic update to ata_bus_probe()
      libata: export ata_set_sata_spd()
      sata_sil24: typo fix
      sata_sil24: rename PORT_IRQ_SDB_FIS to PORT_IRQ_SDB_NOTIFY
      sata_sil24: add more constants
      sata_sil24: consolidate host flags into SIL24_COMMON_FLAGS
      sata_sil24: implement loss of completion interrupt on PCI-X errta fix
      sata_sil24: implement sil24_init_port()
      sata_sil24: put port into known state before softresetting
      sata_sil24: kill 10ms sleep in softreset
      sata_sil24: reimplement hardreset
      sata_sil24: don't do hardreset during driver initialization
      sata_sil24: fix on-memory structure byteorder
      sata_sil24: enable 64bit
      SCSI: implement shost->host_eh_scheduled
      libata: silly fix in ata_scsi_start_stop_xlat()
      libata: rename ata_down_sata_spd_limit() and friends
      ahci: hardreset classification fix
      libata: unexport ata_scsi_error()
      libata: kill duplicate prototypes
      libata: fix ->phy_reset class code handling in ata_bus_probe()
      libata: clear ap->active_tag atomically w.r.t. command completion
      libata: hold host_set lock while finishing internal qc
      libata: use preallocated buffers
      libata: move ->set_mode() handling into ata_set_mode()
      libata: remove postreset handling from ata_do_reset()
      libata: implement qc->result_tf
      sata_sil24: update TF image only when necessary
      libata: init ap->cbl to ATA_CBL_SATA early
      libata: implement new SCR handling and port on/offline functions
      libata: use new SCR and on/offline functions
      libata: kill old SCR functions and sata_dev_present()
      libata: add dev->ap
      libata: use dev->ap
      libata: implement ATA printk helpers
      libata: use ATA printk helpers
      libata-eh-fw: add flags and operations for new EH
      libata-eh-fw: clear SError in ata_std_postreset()
      libata-eh-fw: use special reserved tag and qc for internal commands
      libata-eh-fw: update ata_qc_from_tag() to enforce normal/EH qc ownership
      libata-eh-fw: implement new EH scheduling via error completion
      libata-eh-fw: implement ata_port_schedule_eh() and ata_port_abort()
      libata-eh-fw: implement freeze/thaw
      libata-eh-fw: implement new EH scheduling from PIO
      libata-eh-fw: update ata_scsi_error() for new EH
      libata-eh-fw: update ata_exec_internal() for new EH
      libata-eh-fw: update SCSI command completion path for new EH
      libata-eh: add ATA and libata flags for new EH
      libata-eh: implement dev->ering
      libata-eh: implement ata_eh_info and ata_eh_context
      libata-eh: implement new EH
      libata-eh: implement BMDMA EH
      ata_piix: convert to new EH
      sata_sil: convert to new EH
      ahci: convert to new EH
      ahci: add PIOS interim interrupt handling
      sata_sil24: convert to new EH
      libata: fix irq-pio merge
      libata-ncq: add NCQ related ATA/libata constants and macros
      libata-ncq: pass ata_scsi_translate() return value to SCSI midlayer
      libata-ncq: rename ap->qactive to ap->qc_allocated
      libata-ncq: implement ap->qc_active, ap->sactive and complete helper
      libata-ncq: implement NCQ command translation and exclusion
      libata-ncq: update EH to handle NCQ
      libata-ncq: implement NCQ device configuration
      ahci: clean up AHCI constants in preparation for NCQ
      ahci: add HOST_CAP_NCQ constant
      ahci: kill pp->cmd_tbl_sg
      ahci: implement NCQ suppport
      sata_sil24: implement NCQ support


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 17:19 ` Alan Cox
@ 2006-05-15 17:13   ` Jeff Garzik
  0 siblings, 0 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-15 17:13 UTC (permalink / raw)
  To: Alan Cox; +Cc: linux-ide, linux-kernel, akpm, torvalds

Alan Cox wrote:
> On Llu, 2006-05-15 at 13:00 -0400, Jeff Garzik wrote:
>> * PIO-based I/O is now IRQ-driven by default, rather than polled
>>   in a kernel thread.  The polling path will continue to exist for
>>   controllers that need it, and other special cases. (Albert Lee)
> 
> How will this be selected ? Passing ->irq = 0 ?

It is selected at runtime by passing a polling flag to ata_taskfile.

That flag, in turn can be set by anything -- driver flags (for 
controllers that always require polling), user variable requested at 
runtime, whatever.


> For ata_piix given you've destabilized it a bit would now be a good time
> to submit the patches to fix the timing, register scribble and incorrect
> ATAPI caching ?

Sure.

	Jeff



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 17:00 [RFT] major libata update Jeff Garzik
@ 2006-05-15 17:18 ` Andrew Morton
  2006-05-15 18:06   ` Jeff Garzik
  2006-05-15 18:15   ` Jeff Garzik
  2006-05-15 17:19 ` Alan Cox
                   ` (7 subsequent siblings)
  8 siblings, 2 replies; 113+ messages in thread
From: Andrew Morton @ 2006-05-15 17:18 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel, torvalds

Jeff Garzik <jeff@garzik.org> wrote:
>
> 
> After much development and review, I merged a massive pile of libata
> patches from Tejun Heo and Albert Lee.  This update contains the
> following major libata
> 
> CHANGES:
> * Rewritten error handling. This is a major piece of work, even
>   though it will be rarely seen.  The new libata EH provides the
>   foundation for not only improved error handling, but also new features
>   such as device hotplug or command queueing. (Tejun Heo)
> 
> * PIO-based I/O is now IRQ-driven by default, rather than polled
>   in a kernel thread.  The polling path will continue to exist for
>   controllers that need it, and other special cases. (Albert Lee)
> 
> * Core support for command queueing (Jens Axboe, Tejun Heo)
> 
> * Support for NCQ-style command queueing (Jens Axboe, Tejun Heo)
> 
> * Increase max-sectors dramatically, for LBA48 devices (Tejun Heo?)
> 
> * Other minor changes, from myself and others.
> 
> IMPACT:
> * If all goes well, this update should improve error handling,
>   solve several outstanding, difficult-to-solve bugs, and provide a good
>   foundation for adding some nifty features in the future.
> 
> TESTING:
> * Although most drivers by count received few operational changes, the
> common probe path was updated, so all drivers need fresh "yes, it sees
> all my disks" regression testing.
> 
> * ahci and sata_sil24 were touched a lot, and so need additional
> testing.
> 
> * sata_sil and ata_piix also need healthy re-testing of all basic
> functionality.

Lots of goodies.

> FEEDBACK:
> * Please CC linux-ide@vger.kernel.org on all emails and bug reports.
> 
> MERGE STATUS:
> * Barring major problems in testing, will submit during 2.6.18 merge window.

I'd be a little concerned with that merge plan at this time - we have a lot
of sata bug reports banked up and afaict a pretty low fixup rate.  Then
again, these patches might fix some of those bugs...

I guess if we can get it all in early (which is only a couple of weeks
away!) and you and Tejun will have time set aside to work on problems then
OK.  But....

http://bugzilla.kernel.org/show_bug.cgi?id=4920
http://bugzilla.kernel.org/show_bug.cgi?id=5533
http://bugzilla.kernel.org/show_bug.cgi?id=5586
http://bugzilla.kernel.org/show_bug.cgi?id=5589
http://bugzilla.kernel.org/show_bug.cgi?id=5798
http://bugzilla.kernel.org/show_bug.cgi?id=5863
http://bugzilla.kernel.org/show_bug.cgi?id=4968
http://bugzilla.kernel.org/show_bug.cgi?id=5047
http://bugzilla.kernel.org/show_bug.cgi?id=5905
http://bugzilla.kernel.org/show_bug.cgi?id=5596
http://bugzilla.kernel.org/show_bug.cgi?id=5654
http://bugzilla.kernel.org/show_bug.cgi?id=5664
http://bugzilla.kernel.org/show_bug.cgi?id=5700
http://bugzilla.kernel.org/show_bug.cgi?id=5709
http://bugzilla.kernel.org/show_bug.cgi?id=5721
http://bugzilla.kernel.org/show_bug.cgi?id=5722
http://bugzilla.kernel.org/show_bug.cgi?id=5922
http://bugzilla.kernel.org/show_bug.cgi?id=5789
http://bugzilla.kernel.org/show_bug.cgi?id=5931
http://bugzilla.kernel.org/show_bug.cgi?id=5969
http://bugzilla.kernel.org/show_bug.cgi?id=5948
http://bugzilla.kernel.org/show_bug.cgi?id=5987
http://bugzilla.kernel.org/show_bug.cgi?id=5995
http://bugzilla.kernel.org/show_bug.cgi?id=6173
http://bugzilla.kernel.org/show_bug.cgi?id=6207
http://bugzilla.kernel.org/show_bug.cgi?id=6240
http://bugzilla.kernel.org/show_bug.cgi?id=6253
http://bugzilla.kernel.org/show_bug.cgi?id=6260
http://bugzilla.kernel.org/show_bug.cgi?id=6272
http://bugzilla.kernel.org/show_bug.cgi?id=6283
http://bugzilla.kernel.org/show_bug.cgi?id=6311
http://bugzilla.kernel.org/show_bug.cgi?id=6317
http://bugzilla.kernel.org/show_bug.cgi?id=6346
http://bugzilla.kernel.org/show_bug.cgi?id=6470
http://bugzilla.kernel.org/show_bug.cgi?id=6056
http://bugzilla.kernel.org/show_bug.cgi?id=6494
http://bugzilla.kernel.org/show_bug.cgi?id=6516
http://bugzilla.kernel.org/show_bug.cgi?id=6521


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 17:00 [RFT] major libata update Jeff Garzik
  2006-05-15 17:18 ` Andrew Morton
@ 2006-05-15 17:19 ` Alan Cox
  2006-05-15 17:13   ` Jeff Garzik
  2006-05-15 18:29 ` Tomasz Torcz
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 113+ messages in thread
From: Alan Cox @ 2006-05-15 17:19 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel, akpm, torvalds

On Llu, 2006-05-15 at 13:00 -0400, Jeff Garzik wrote:
> * PIO-based I/O is now IRQ-driven by default, rather than polled
>   in a kernel thread.  The polling path will continue to exist for
>   controllers that need it, and other special cases. (Albert Lee)

How will this be selected ? Passing ->irq = 0 ?

For ata_piix given you've destabilized it a bit would now be a good time
to submit the patches to fix the timing, register scribble and incorrect
ATAPI caching ?

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 17:18 ` Andrew Morton
@ 2006-05-15 18:06   ` Jeff Garzik
  2006-05-15 19:06     ` Arkadiusz Miskiewicz
  2006-05-15 19:33     ` Mark Lord
  2006-05-15 18:15   ` Jeff Garzik
  1 sibling, 2 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-15 18:06 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-ide, linux-kernel, torvalds

Andrew Morton wrote:

We watch the bug reports, but try to get an overall picture rather than 
being good about updating each bugzilla tracker promptly :/  The 
tracking is quite useful though.


> http://bugzilla.kernel.org/show_bug.cgi?id=4920

not us

> http://bugzilla.kernel.org/show_bug.cgi?id=5533

addressed here

> http://bugzilla.kernel.org/show_bug.cgi?id=5586

sata_mv still considered highly experimental, as noted in Kconfig.  Bugs 
deferred to Mark Lord.

> http://bugzilla.kernel.org/show_bug.cgi?id=5589

funny looking backtrace, according to you

> http://bugzilla.kernel.org/show_bug.cgi?id=5798

worth looking into

> http://bugzilla.kernel.org/show_bug.cgi?id=5863

worth looking into, also worth testing with big update.

probable cause, the most recent ata_piix map value stuff.


> http://bugzilla.kernel.org/show_bug.cgi?id=4968

big update should help diagnose.  might need 'nv-adma' branch to fix.

> http://bugzilla.kernel.org/show_bug.cgi?id=5047

big update should help.

> http://bugzilla.kernel.org/show_bug.cgi?id=5905

big update should help, or at least help diagnose.

> http://bugzilla.kernel.org/show_bug.cgi?id=5596

ditto sata_mv info above.

> http://bugzilla.kernel.org/show_bug.cgi?id=5654

big update should help.

> http://bugzilla.kernel.org/show_bug.cgi?id=5664

should forward to NVIDIA for help debugging.  nv-adma branch may help 
diagnose.

> http://bugzilla.kernel.org/show_bug.cgi?id=5700

big update should help

> http://bugzilla.kernel.org/show_bug.cgi?id=5709

trivial patch submission

> http://bugzilla.kernel.org/show_bug.cgi?id=5721

dont care

> http://bugzilla.kernel.org/show_bug.cgi?id=5722

maybe a bug, probably weird drive or media, worth looking into

> http://bugzilla.kernel.org/show_bug.cgi?id=5922

should be using ahci driver

> http://bugzilla.kernel.org/show_bug.cgi?id=5789

include in the "atapi + via problems" bucket; bucket should be looked 
into... some people it works great, others not.  may need 
motherboard-specific (southbridge) tuning.

> http://bugzilla.kernel.org/show_bug.cgi?id=5931

big update will help

> http://bugzilla.kernel.org/show_bug.cgi?id=5969

probably just needs PCI IDs

> http://bugzilla.kernel.org/show_bug.cgi?id=5948

not libata?

> http://bugzilla.kernel.org/show_bug.cgi?id=5987

not libata

> http://bugzilla.kernel.org/show_bug.cgi?id=5995

big update + upcoming hotplug will fix.  until then, don't expect 
unplugging a drive to DTRT.

> http://bugzilla.kernel.org/show_bug.cgi?id=6173

need NVIDIA help.  maybe nv-adma branch will help diagnose.

> http://bugzilla.kernel.org/show_bug.cgi?id=6207

ditto

> http://bugzilla.kernel.org/show_bug.cgi?id=6240

investigate.  big update will help diagnose.

> http://bugzilla.kernel.org/show_bug.cgi?id=6253

big update should fix.

> http://bugzilla.kernel.org/show_bug.cgi?id=6260

waiting on SATA ACPI merge.

> http://bugzilla.kernel.org/show_bug.cgi?id=6272

big update should fix.

> http://bugzilla.kernel.org/show_bug.cgi?id=6283

investigate.  big update will help.

> http://bugzilla.kernel.org/show_bug.cgi?id=6311

big update should fix.

> http://bugzilla.kernel.org/show_bug.cgi?id=6317

big update may fix.

> http://bugzilla.kernel.org/show_bug.cgi?id=6346

not libata?

> http://bugzilla.kernel.org/show_bug.cgi?id=6470

new hardware, needs driver.

> http://bugzilla.kernel.org/show_bug.cgi?id=6056

bounce to NV

> http://bugzilla.kernel.org/show_bug.cgi?id=6494

waiting on SATA ACPI

> http://bugzilla.kernel.org/show_bug.cgi?id=6516

investigate, low priority

> http://bugzilla.kernel.org/show_bug.cgi?id=6521

big update should fix


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 17:18 ` Andrew Morton
  2006-05-15 18:06   ` Jeff Garzik
@ 2006-05-15 18:15   ` Jeff Garzik
  2006-05-15 18:27     ` Andrew Morton
  2006-05-15 18:37     ` Alan Cox
  1 sibling, 2 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-15 18:15 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-ide, linux-kernel, torvalds

Andrew Morton wrote:
> I'd be a little concerned with that merge plan at this time - we have a lot
> of sata bug reports banked up and afaict a pretty low fixup rate.  Then
> again, these patches might fix some of those bugs...
> 
> I guess if we can get it all in early (which is only a couple of weeks
> away!) and you and Tejun will have time set aside to work on problems then
> OK.  But....


As you can see from the list just sent, the improved error handling will 
give libata much greater ability to diagnose "controller is being weird" 
type situations, which is a lot of what the relevant bug reports need.

After reviewing those bug reports, I see a couple oopses -- caused by 
BUG()-style code, and fixed in this update -- and one data corruption 
which persists on Sil 311x on rare motherboards.  The rest are either 
addressed with the improved error handling, or are ATAPI + VIA AFAICS.

	Jeff



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 18:15   ` Jeff Garzik
@ 2006-05-15 18:27     ` Andrew Morton
  2006-05-15 18:44       ` Jeff Garzik
  2006-05-15 18:37     ` Alan Cox
  1 sibling, 1 reply; 113+ messages in thread
From: Andrew Morton @ 2006-05-15 18:27 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel, torvalds

Jeff Garzik <jeff@garzik.org> wrote:
>
> Andrew Morton wrote:
> > I'd be a little concerned with that merge plan at this time - we have a lot
> > of sata bug reports banked up and afaict a pretty low fixup rate.  Then
> > again, these patches might fix some of those bugs...
> > 
> > I guess if we can get it all in early (which is only a couple of weeks
> > away!) and you and Tejun will have time set aside to work on problems then
> > OK.  But....
> 
> 
> As you can see from the list just sent, the improved error handling will 
> give libata much greater ability to diagnose "controller is being weird" 
> type situations, which is a lot of what the relevant bug reports need.
> 
> After reviewing those bug reports, I see a couple oopses -- caused by 
> BUG()-style code, and fixed in this update -- and one data corruption 
> which persists on Sil 311x on rare motherboards.  The rest are either 
> addressed with the improved error handling, or are ATAPI + VIA AFAICS.
> 

ok, thanks.

Next -mm I'll suck up the libata changes, drop a pile of the hairier stuff
and I'll ask each originator to test that patchset.

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 17:00 [RFT] major libata update Jeff Garzik
  2006-05-15 17:18 ` Andrew Morton
  2006-05-15 17:19 ` Alan Cox
@ 2006-05-15 18:29 ` Tomasz Torcz
  2006-05-15 18:43   ` Jeff Garzik
  2006-05-15 19:15 ` Jeff Garzik
                   ` (5 subsequent siblings)
  8 siblings, 1 reply; 113+ messages in thread
From: Tomasz Torcz @ 2006-05-15 18:29 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 609 bytes --]

On Mon, May 15, 2006 at 01:00:06PM -0400, Jeff Garzik wrote:
> 
> After much development and review, I merged a massive pile of libata
> patches from Tejun Heo and Albert Lee.  This update contains the
> following major libata

  Any plans to merge http://home-tj.org/wiki/index.php/Sil_m15w ? Or
maybe it's merged already?
  Seagate firmware update seems to be available only for OEMs, so this
quirk is pretty helpful for end users.

-- 
Tomasz Torcz                        To co nierealne - tutaj jest normalne.
zdzichu@irc.-nie.spam-.pl          Ziomale na życie mają tu patenty specjalne.


[-- Attachment #2: Type: application/pgp-signature, Size: 229 bytes --]

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 18:15   ` Jeff Garzik
  2006-05-15 18:27     ` Andrew Morton
@ 2006-05-15 18:37     ` Alan Cox
  1 sibling, 0 replies; 113+ messages in thread
From: Alan Cox @ 2006-05-15 18:37 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, linux-ide, linux-kernel, torvalds

On Llu, 2006-05-15 at 14:15 -0400, Jeff Garzik wrote:
> which persists on Sil 311x on rare motherboards.  The rest are either 
> addressed with the improved error handling, or are ATAPI + VIA AFAICS.

ATAPI + VIA to that pattern is also showing up on pata_via cases as
well, but only on via so far. Its as if there is a case where the IRQ of
the first command is lost sometimes.

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 18:29 ` Tomasz Torcz
@ 2006-05-15 18:43   ` Jeff Garzik
  2006-05-15 23:32     ` Tejun Heo
  0 siblings, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-15 18:43 UTC (permalink / raw)
  To: Jeff Garzik, linux-ide, linux-kernel, Andrew Morton

Tomasz Torcz wrote:
> On Mon, May 15, 2006 at 01:00:06PM -0400, Jeff Garzik wrote:
>> After much development and review, I merged a massive pile of libata
>> patches from Tejun Heo and Albert Lee.  This update contains the
>> following major libata
> 
>   Any plans to merge http://home-tj.org/wiki/index.php/Sil_m15w ? Or
> maybe it's merged already?
>   Seagate firmware update seems to be available only for OEMs, so this
> quirk is pretty helpful for end users.

Its a question of staging.  This still lives in the 'sii-m15w' branch of 
libata-dev.git, but if we throw too many _classes_ of changes into the 
same big lump, then it becomes much more difficult to discern which 
changes caused which failures.

Since sata_sil has seen several changes, and since the sii-m15w problems 
are so difficult to diagnose properly, its easier to separate that out.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 18:27     ` Andrew Morton
@ 2006-05-15 18:44       ` Jeff Garzik
  0 siblings, 0 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-15 18:44 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-ide, linux-kernel, torvalds

Andrew Morton wrote:
> ok, thanks.
> 
> Next -mm I'll suck up the libata changes, drop a pile of the hairier stuff
> and I'll ask each originator to test that patchset.

Cool.  FWIW this stuff can be found in libata-dev.git#ALL as usual.

	Jeff



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 18:06   ` Jeff Garzik
@ 2006-05-15 19:06     ` Arkadiusz Miskiewicz
  2006-05-15 20:45       ` Jeff Garzik
  2006-05-15 19:33     ` Mark Lord
  1 sibling, 1 reply; 113+ messages in thread
From: Arkadiusz Miskiewicz @ 2006-05-15 19:06 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, linux-ide, linux-kernel, torvalds

On Monday 15 May 2006 20:06, Jeff Garzik wrote:

> > http://bugzilla.kernel.org/show_bug.cgi?id=6260
>
> waiting on SATA ACPI merge.
Is this really a case?

The one (layering breaking; discussed already) patch cures the problem and 
nothing sata acpi related is needed, so something else is problematic here I 
guess.

--- 2.6.17-rc2/drivers/scsi/libata-core.c       2006-04-19 09:14:11.000000000 
+0100 
+++ linux/drivers/scsi/libata-core.c    2006-04-21 20:55:48.000000000 +0100 
@@ -4288,6 +4288,7 @@ int ata_device_resume(struct ata_port *a 
 { 
        if (ap->flags & ATA_FLAG_SUSPENDED) { 
                ap->flags &= ~ATA_FLAG_SUSPENDED; 
+               ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT); 
                ata_set_mode(ap); 
        } 
        if (!ata_dev_present(dev))

-- 
Arkadiusz Miśkiewicz        PLD/Linux Team
arekm / maven.pl            http://ftp.pld-linux.org/

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 17:00 [RFT] major libata update Jeff Garzik
                   ` (2 preceding siblings ...)
  2006-05-15 18:29 ` Tomasz Torcz
@ 2006-05-15 19:15 ` Jeff Garzik
  2006-05-15 23:02 ` Wakko Warner
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-15 19:15 UTC (permalink / raw)
  To: linux-ide; +Cc: linux-kernel, akpm, torvalds

Also, a re-reminder:

At some convenient point, I'm going to move libata core and drivers to 
new directory drivers/ata.

The other noticeable change coming down the pipe is iomap support, which 
will kill those annoying warnings you see on every build (in addition to 
shrinking the driver a bit).

Speak up now if there are complaints...

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 18:06   ` Jeff Garzik
  2006-05-15 19:06     ` Arkadiusz Miskiewicz
@ 2006-05-15 19:33     ` Mark Lord
  2006-05-15 22:52       ` Tejun Heo
  1 sibling, 1 reply; 113+ messages in thread
From: Mark Lord @ 2006-05-15 19:33 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, linux-ide, linux-kernel, torvalds

Jeff Garzik wrote:
> Andrew Morton wrote:
..
>> http://bugzilla.kernel.org/show_bug.cgi?id=5586
> 
> sata_mv still considered highly experimental, as noted in Kconfig.  Bugs 
> deferred to Mark Lord.
..
I think that particular bug has gone away with my internal sata_mv.c version.
I'm updating it for release on top of Jeff/Tejun's patch set, and will likely
backport the bugfixes to 2.6.16.xx as well.  Timeline, this week or next.

Cheers 

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 19:06     ` Arkadiusz Miskiewicz
@ 2006-05-15 20:45       ` Jeff Garzik
  0 siblings, 0 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-15 20:45 UTC (permalink / raw)
  To: Arkadiusz Miskiewicz; +Cc: Andrew Morton, linux-ide, linux-kernel, torvalds

Arkadiusz Miskiewicz wrote:
> On Monday 15 May 2006 20:06, Jeff Garzik wrote:
> 
>>> http://bugzilla.kernel.org/show_bug.cgi?id=6260
>> waiting on SATA ACPI merge.
> Is this really a case?
> 
> The one (layering breaking; discussed already) patch cures the problem and 
> nothing sata acpi related is needed, so something else is problematic here I 
> guess.
> 
> --- 2.6.17-rc2/drivers/scsi/libata-core.c       2006-04-19 09:14:11.000000000 
> +0100 
> +++ linux/drivers/scsi/libata-core.c    2006-04-21 20:55:48.000000000 +0100 
> @@ -4288,6 +4288,7 @@ int ata_device_resume(struct ata_port *a 
>  { 
>         if (ap->flags & ATA_FLAG_SUSPENDED) { 
>                 ap->flags &= ~ATA_FLAG_SUSPENDED; 
> +               ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT); 
>                 ata_set_mode(ap); 

This libata update should address issues that the above patch also 
addresses.  It will be interesting to hear feedback in the coming days 
on what issues remain after this big lump.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 19:33     ` Mark Lord
@ 2006-05-15 22:52       ` Tejun Heo
  0 siblings, 0 replies; 113+ messages in thread
From: Tejun Heo @ 2006-05-15 22:52 UTC (permalink / raw)
  To: Mark Lord; +Cc: Jeff Garzik, Andrew Morton, linux-ide, linux-kernel, torvalds

Mark Lord wrote:
> Jeff Garzik wrote:
>> Andrew Morton wrote:
> ..
>>> http://bugzilla.kernel.org/show_bug.cgi?id=5586
>>
>> sata_mv still considered highly experimental, as noted in Kconfig.  
>> Bugs deferred to Mark Lord.
> ..
> I think that particular bug has gone away with my internal sata_mv.c 
> version.
> I'm updating it for release on top of Jeff/Tejun's patch set, and will 
> likely
> backport the bugfixes to 2.6.16.xx as well.  Timeline, this week or next.

The hotplug patches will change probing once more.  So, I recommend 
staying with legacy ->phy_reset mechanism for the time being unless you 
are using ->probe_reset() already.  However, converting from 
->probe_reset() to hotplug should be very easy.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 23:02 ` Wakko Warner
@ 2006-05-15 23:00   ` Jeff Garzik
  2006-05-15 23:13     ` Wakko Warner
  2006-05-15 23:40     ` Alan Cox
  2006-05-15 23:38   ` Alan Cox
  1 sibling, 2 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-15 23:00 UTC (permalink / raw)
  To: Jeff Garzik, linux-ide, linux-kernel, Alan Cox

Wakko Warner wrote:
> Jeff Garzik wrote:
>> After much development and review, I merged a massive pile of libata
>> patches from Tejun Heo and Albert Lee.  This update contains the
>> following major libata
>>
>> CHANGES:
>> * Rewritten error handling. This is a major piece of work, even
>>   though it will be rarely seen.  The new libata EH provides the
>>   foundation for not only improved error handling, but also new features
>>   such as device hotplug or command queueing. (Tejun Heo)
>>
>> * PIO-based I/O is now IRQ-driven by default, rather than polled
>>   in a kernel thread.  The polling path will continue to exist for
>>   controllers that need it, and other special cases. (Albert Lee)
>>
>> * Core support for command queueing (Jens Axboe, Tejun Heo)
>>
>> * Support for NCQ-style command queueing (Jens Axboe, Tejun Heo)
>>
>> * Increase max-sectors dramatically, for LBA48 devices (Tejun Heo?)
>>
>> * Other minor changes, from myself and others.
> 
> How about PATA?  Specifically intel's IDE chip.  I have a machine that I can
> blow the hard drive away if I want to.

Always helpful.  ata_piix should support Intel PATA controllers, modulo 
some bugs that Alan is fixing / has fixed.  If your PCI ID isn't listed, 
you will have to add it, and an associated info entry.  Again, take a 
look at Alan's libata PATA patches for guidance.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 17:00 [RFT] major libata update Jeff Garzik
                   ` (3 preceding siblings ...)
  2006-05-15 19:15 ` Jeff Garzik
@ 2006-05-15 23:02 ` Wakko Warner
  2006-05-15 23:00   ` Jeff Garzik
  2006-05-15 23:38   ` Alan Cox
  2006-05-15 23:30 ` Avuton Olrich
                   ` (3 subsequent siblings)
  8 siblings, 2 replies; 113+ messages in thread
From: Wakko Warner @ 2006-05-15 23:02 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel

Jeff Garzik wrote:
> 
> After much development and review, I merged a massive pile of libata
> patches from Tejun Heo and Albert Lee.  This update contains the
> following major libata
> 
> CHANGES:
> * Rewritten error handling. This is a major piece of work, even
>   though it will be rarely seen.  The new libata EH provides the
>   foundation for not only improved error handling, but also new features
>   such as device hotplug or command queueing. (Tejun Heo)
> 
> * PIO-based I/O is now IRQ-driven by default, rather than polled
>   in a kernel thread.  The polling path will continue to exist for
>   controllers that need it, and other special cases. (Albert Lee)
> 
> * Core support for command queueing (Jens Axboe, Tejun Heo)
> 
> * Support for NCQ-style command queueing (Jens Axboe, Tejun Heo)
> 
> * Increase max-sectors dramatically, for LBA48 devices (Tejun Heo?)
> 
> * Other minor changes, from myself and others.

How about PATA?  Specifically intel's IDE chip.  I have a machine that I can
blow the hard drive away if I want to.

-- 
 Lab tests show that use of micro$oft causes cancer in lab animals
 Got Gas???

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 23:00   ` Jeff Garzik
@ 2006-05-15 23:13     ` Wakko Warner
  2006-05-15 23:19       ` Jeff Garzik
  2006-05-15 23:40     ` Alan Cox
  1 sibling, 1 reply; 113+ messages in thread
From: Wakko Warner @ 2006-05-15 23:13 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel, Alan Cox

Jeff Garzik wrote:
> Wakko Warner wrote:
> >How about PATA?  Specifically intel's IDE chip.  I have a machine that I 
> >can
> >blow the hard drive away if I want to.
> 
> Always helpful.  ata_piix should support Intel PATA controllers, modulo 
> some bugs that Alan is fixing / has fixed.  If your PCI ID isn't listed, 
> you will have to add it, and an associated info entry.  Again, take a 
> look at Alan's libata PATA patches for guidance.

Do I need his patches as well?  If so, where do I retrieve them?  I lost the
url for it.

-- 
 Lab tests show that use of micro$oft causes cancer in lab animals
 Got Gas???

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 23:13     ` Wakko Warner
@ 2006-05-15 23:19       ` Jeff Garzik
  0 siblings, 0 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-15 23:19 UTC (permalink / raw)
  To: Jeff Garzik, linux-ide, linux-kernel, Alan Cox

Wakko Warner wrote:
> Jeff Garzik wrote:
>> Wakko Warner wrote:
>>> How about PATA?  Specifically intel's IDE chip.  I have a machine that I 
>>> can
>>> blow the hard drive away if I want to.
>> Always helpful.  ata_piix should support Intel PATA controllers, modulo 
>> some bugs that Alan is fixing / has fixed.  If your PCI ID isn't listed, 
>> you will have to add it, and an associated info entry.  Again, take a 
>> look at Alan's libata PATA patches for guidance.
> 
> Do I need his patches as well?  If so, where do I retrieve them?  I lost the
> url for it.

Me too, hopefully he'll chime in.  In any case, it's highly likely that 
things will work out of the box.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 17:00 [RFT] major libata update Jeff Garzik
                   ` (4 preceding siblings ...)
  2006-05-15 23:02 ` Wakko Warner
@ 2006-05-15 23:30 ` Avuton Olrich
  2006-05-15 23:36   ` Tejun Heo
  2006-05-15 23:54   ` Jeff Garzik
  2006-05-16 11:36 ` Ric Wheeler
                   ` (2 subsequent siblings)
  8 siblings, 2 replies; 113+ messages in thread
From: Avuton Olrich @ 2006-05-15 23:30 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel, akpm, torvalds

On 5/15/06, Jeff Garzik <jeff@garzik.org> wrote:
> * sata_sil and ata_piix also need healthy re-testing of all basic
> functionality.

I'm testing it right now, but with 2.6.17-rc4-git2 I was getting:

May 15 15:42:57 shapeshifter ata2: command 0x25 timeout, stat 0x58 host_stat 0x1
May 15 15:42:57 shapeshifter ata2: translated ATA stat/err 0x58/00 to
SCSI SK/ASC/ASCQ 0xb/47/00
May 15 15:42:57 shapeshifter ata2: status=0x58 { DriveReady
SeekComplete DataRequest }
May 15 15:42:57 shapeshifter sd 1:0:0:0: SCSI error: return code = 0x8000002
May 15 15:42:57 shapeshifter sda: Current: sense key=0xb
May 15 15:42:57 shapeshifter ASC=0x47 ASCQ=0x0
May 15 15:42:57 shapeshifter end_request: I/O error, dev sda, sector 974708575

(sector varies)

After large ssh transfers. I moved to 2.6.17-rc4-git2 because
2.6.16.16 was doing the same. This is a new 500gb sata2 drive on
sata_sil so I guess this could be hardware, but I wanted to make sure
before I go returning this thing. After this obviously I have to sysrq
sync, ro and reboot. This also causes(?) a NETDEV WATCHDOG: eth2:
transmit timed out, sometimes this ata timeout doesn't yet occur and I
just get the netdev watchdog. This has not yet happened with the new
patch, though I'm only 1 hr into testing with it.


If you want to take a peek at my config:
http://olricha.homelinux.net:8080/ss.config
-- 
avuton
--
 Anyone who quotes me in their sig is an idiot. -- Rusty Russell.

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 18:43   ` Jeff Garzik
@ 2006-05-15 23:32     ` Tejun Heo
  2006-05-15 23:49       ` Jeff Garzik
  0 siblings, 1 reply; 113+ messages in thread
From: Tejun Heo @ 2006-05-15 23:32 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel, Andrew Morton

Jeff Garzik wrote:
> Tomasz Torcz wrote:
>> On Mon, May 15, 2006 at 01:00:06PM -0400, Jeff Garzik wrote:
>>> After much development and review, I merged a massive pile of libata
>>> patches from Tejun Heo and Albert Lee.  This update contains the
>>> following major libata
>>
>>   Any plans to merge http://home-tj.org/wiki/index.php/Sil_m15w ? Or
>> maybe it's merged already?
>>   Seagate firmware update seems to be available only for OEMs, so this
>> quirk is pretty helpful for end users.
> 
> Its a question of staging.  This still lives in the 'sii-m15w' branch of 
> libata-dev.git, but if we throw too many _classes_ of changes into the 
> same big lump, then it becomes much more difficult to discern which 
> changes caused which failures.
> 
> Since sata_sil has seen several changes, and since the sii-m15w problems 
> are so difficult to diagnose properly, its easier to separate that out.

Are you planning on merging sil_m15w workaround?

FYI, from the first time it was submitted (last summer) till 2.6.16, it 
took very little effort to maintain it.  The current big update would 
necessitate some changes to it but I don't think it will be too much 
work.  My experience says m15w doesn't add too much maintenance overhead.

Also, what's the merge plan for hotplug/PM?  Together into 2.6.18?  Or 
are we looking further down?

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 23:30 ` Avuton Olrich
@ 2006-05-15 23:36   ` Tejun Heo
  2006-05-15 23:54   ` Jeff Garzik
  1 sibling, 0 replies; 113+ messages in thread
From: Tejun Heo @ 2006-05-15 23:36 UTC (permalink / raw)
  To: Avuton Olrich; +Cc: Jeff Garzik, linux-ide, linux-kernel, akpm, torvalds

Avuton Olrich wrote:
> On 5/15/06, Jeff Garzik <jeff@garzik.org> wrote:
>> * sata_sil and ata_piix also need healthy re-testing of all basic
>> functionality.
> 
> I'm testing it right now, but with 2.6.17-rc4-git2 I was getting:
> 
> May 15 15:42:57 shapeshifter ata2: command 0x25 timeout, stat 0x58 
> host_stat 0x1
> May 15 15:42:57 shapeshifter ata2: translated ATA stat/err 0x58/00 to
> SCSI SK/ASC/ASCQ 0xb/47/00
> May 15 15:42:57 shapeshifter ata2: status=0x58 { DriveReady
> SeekComplete DataRequest }
> May 15 15:42:57 shapeshifter sd 1:0:0:0: SCSI error: return code = 
> 0x8000002
> May 15 15:42:57 shapeshifter sda: Current: sense key=0xb
> May 15 15:42:57 shapeshifter ASC=0x47 ASCQ=0x0
> May 15 15:42:57 shapeshifter end_request: I/O error, dev sda, sector 
> 974708575

2.6.17-rc4-git2 doesn't contain the changes.  You're still using old EH. 
  To test the updates, pull #upstream from libata-dev git tree which can 
be found on http://kernel.org/git.  Otherwise, you can try 
libata-tj-stable patch over 2.6.16.16 located at

http://home-tj.org/wiki/index.php/Libata-tj-stable.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 23:02 ` Wakko Warner
  2006-05-15 23:00   ` Jeff Garzik
@ 2006-05-15 23:38   ` Alan Cox
  2006-05-15 23:47     ` Wakko Warner
  1 sibling, 1 reply; 113+ messages in thread
From: Alan Cox @ 2006-05-15 23:38 UTC (permalink / raw)
  To: Wakko Warner; +Cc: Jeff Garzik, linux-ide, linux-kernel

On Llu, 2006-05-15 at 19:02 -0400, Wakko Warner wrote:
> How about PATA?  Specifically intel's IDE chip.  I have a machine that I can
> blow the hard drive away if I want to.

Give the patch on zeniv.linux.org.uk/~alan/IDE a go in that case and let
me know how it behaves.

Alan


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 23:00   ` Jeff Garzik
  2006-05-15 23:13     ` Wakko Warner
@ 2006-05-15 23:40     ` Alan Cox
  2006-05-15 23:50       ` Wakko Warner
  1 sibling, 1 reply; 113+ messages in thread
From: Alan Cox @ 2006-05-15 23:40 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel

On Llu, 2006-05-15 at 19:00 -0400, Jeff Garzik wrote:
> Always helpful.  ata_piix should support Intel PATA controllers, modulo 
> some bugs that Alan is fixing / has fixed.  If your PCI ID isn't listed, 
> you will have to add it, and an associated info entry.  Again, take a 
> look at Alan's libata PATA patches for guidance.

Without the patches I've got everything non ATAPI should work (ATAPI
will I think 99% work) and anything that is ICH or later (UDMA66 or
higher) should behave correctly.

PIIX/MPIIX won't work with it, and UDMA33 chips may work providing the
scribbles to the wrong register happen to be harmless.

Alan


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 23:47     ` Wakko Warner
@ 2006-05-15 23:45       ` Jeff Garzik
  0 siblings, 0 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-15 23:45 UTC (permalink / raw)
  To: Alan Cox, Jeff Garzik, linux-ide, linux-kernel

Wakko Warner wrote:
> Alan Cox wrote:
>> On Llu, 2006-05-15 at 19:02 -0400, Wakko Warner wrote:
>>> How about PATA?  Specifically intel's IDE chip.  I have a machine that I can
>>> blow the hard drive away if I want to.
>> Give the patch on zeniv.linux.org.uk/~alan/IDE a go in that case and let
>> me know how it behaves.
> 
> I noticed one hunk failed with 2.6.17-rc4 when using
> patch-2.6.17-rc3-ide2.gz
> 
> It was only the version string so I should be ok.  As I said, if it blows up
> on me, that's ok.
> 
> I attempted to patch Jeff's libata1 over top of this, it failed miserably.
> 
> When I patched Jeff's libata1 over 2.6.17-rc4, it was ok, except for 2
> files:

oh, its almost certain the patches will conflict.  My suggestion was 
more of a reference-<here>-if-things-break.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 23:38   ` Alan Cox
@ 2006-05-15 23:47     ` Wakko Warner
  2006-05-15 23:45       ` Jeff Garzik
  0 siblings, 1 reply; 113+ messages in thread
From: Wakko Warner @ 2006-05-15 23:47 UTC (permalink / raw)
  To: Alan Cox; +Cc: Jeff Garzik, linux-ide, linux-kernel

Alan Cox wrote:
> On Llu, 2006-05-15 at 19:02 -0400, Wakko Warner wrote:
> > How about PATA?  Specifically intel's IDE chip.  I have a machine that I can
> > blow the hard drive away if I want to.
> 
> Give the patch on zeniv.linux.org.uk/~alan/IDE a go in that case and let
> me know how it behaves.

I noticed one hunk failed with 2.6.17-rc4 when using
patch-2.6.17-rc3-ide2.gz

It was only the version string so I should be ok.  As I said, if it blows up
on me, that's ok.

I attempted to patch Jeff's libata1 over top of this, it failed miserably.

When I patched Jeff's libata1 over 2.6.17-rc4, it was ok, except for 2
files:
Reversed (or previously applied) patch detected!  Assume -R? [n] 
Apply anyway? [n] 
Skipping patch.
32 out of 32 hunks ignored -- saving rejects to file drivers/scsi/ahci.c.rej
patching file drivers/scsi/ata_piix.c
Reversed (or previously applied) patch detected!  Assume -R? [n] 
Apply anyway? [n] 
Skipping patch.
5 out of 5 hunks ignored -- saving rejects to file
drivers/scsi/ata_piix.c.rej




If you're curious, alan's patch + jeff's patch:
patching file drivers/scsi/Makefile
Hunk #1 succeeded at 201 (offset 37 lines).
patching file drivers/scsi/ahci.c
Reversed (or previously applied) patch detected!  Assume -R? [n] 
Apply anyway? [n] 
Skipping patch.
32 out of 32 hunks ignored -- saving rejects to file drivers/scsi/ahci.c.rej
patching file drivers/scsi/ata_piix.c
Hunk #1 FAILED at 93.
Hunk #2 succeeded at 299 with fuzz 2 (offset 56 lines).
Hunk #3 succeeded at 335 with fuzz 2 (offset 61 lines).
Hunk #4 succeeded at 700 (offset 210 lines).
Hunk #5 succeeded at 805 (offset 234 lines).
1 out of 5 hunks FAILED -- saving rejects to file drivers/scsi/ata_piix.c.rej
patching file drivers/scsi/libata-bmdma.c
patching file drivers/scsi/libata-core.c
Hunk #23 succeeded at 1503 (offset 6 lines).
Hunk #24 succeeded at 1573 (offset 6 lines).
Hunk #25 succeeded at 1587 (offset 6 lines).
Hunk #26 succeeded at 1624 (offset 6 lines).
Hunk #27 succeeded at 1644 (offset 6 lines).
Hunk #28 succeeded at 1674 (offset 6 lines).
Hunk #29 succeeded at 1713 (offset 6 lines).
Hunk #30 succeeded at 1979 (offset 6 lines).
Hunk #31 succeeded at 2218 (offset 6 lines).
Hunk #32 succeeded at 2228 (offset 6 lines).
Hunk #33 succeeded at 2321 (offset 6 lines).
Hunk #34 succeeded at 2348 (offset 6 lines).
Hunk #35 succeeded at 2416 (offset 6 lines).
Hunk #36 succeeded at 2425 (offset 6 lines).
Hunk #37 succeeded at 2463 (offset 6 lines).
Hunk #38 succeeded at 2493 (offset 6 lines).
Hunk #39 succeeded at 2501 (offset 6 lines).
Hunk #40 succeeded at 2519 (offset 6 lines).
Hunk #41 succeeded at 2537 (offset 6 lines).
Hunk #42 succeeded at 2549 (offset 6 lines).
Hunk #43 succeeded at 2628 (offset 6 lines).
Hunk #44 succeeded at 2687 (offset 6 lines).
Hunk #45 succeeded at 2695 (offset 6 lines).
Hunk #46 succeeded at 2720 (offset 6 lines).
Hunk #47 succeeded at 2744 (offset 6 lines).
Hunk #48 succeeded at 2759 (offset 6 lines).
Hunk #49 succeeded at 2830 (offset 6 lines).
Hunk #50 succeeded at 2850 (offset 6 lines).
Hunk #51 succeeded at 2874 (offset 6 lines).
Hunk #52 succeeded at 2886 (offset 6 lines).
Hunk #53 succeeded at 2992 (offset 6 lines).
Hunk #54 FAILED at 3006.
Hunk #55 succeeded at 3068 (offset 1 line).
Hunk #56 succeeded at 3076 (offset 1 line).
Hunk #57 succeeded at 3091 (offset 1 line).
Hunk #58 succeeded at 3101 (offset 1 line).
Hunk #59 succeeded at 3114 (offset 1 line).
Hunk #60 succeeded at 3259 (offset 1 line).
Hunk #61 succeeded at 3496 (offset 1 line).
Hunk #62 succeeded at 3634 (offset -28 lines).
Hunk #63 FAILED at 3659.
Hunk #64 succeeded at 3761 with fuzz 1 (offset -28 lines).
Hunk #65 succeeded at 3786 (offset -28 lines).
Hunk #66 FAILED at 3813.
Hunk #67 FAILED at 3849.
Hunk #68 succeeded at 4207 (offset -27 lines).
Hunk #69 succeeded at 4226 (offset -27 lines).
Hunk #70 succeeded at 4269 (offset -27 lines).
Hunk #71 succeeded at 4450 (offset -27 lines).
Hunk #72 succeeded at 4515 (offset -27 lines).
Hunk #73 succeeded at 4643 (offset -27 lines).
Hunk #74 succeeded at 4711 (offset -27 lines).
Hunk #75 succeeded at 4749 (offset -27 lines).
Hunk #76 succeeded at 4764 (offset -27 lines).
Hunk #77 succeeded at 4937 (offset -27 lines).
Hunk #78 succeeded at 4959 (offset -27 lines).
Hunk #79 succeeded at 5112 (offset -23 lines).
Hunk #80 succeeded at 5126 (offset -23 lines).
Hunk #81 succeeded at 5193 (offset -23 lines).
Hunk #82 succeeded at 5266 (offset -21 lines).
Hunk #83 succeeded at 5318 (offset -15 lines).
Hunk #84 succeeded at 5413 (offset -15 lines).
Hunk #85 succeeded at 5577 (offset -15 lines).
Hunk #86 succeeded at 5636 (offset -15 lines).
Hunk #87 succeeded at 5661 (offset -13 lines).
Hunk #88 succeeded at 5682 (offset -13 lines).
Hunk #89 succeeded at 5721 (offset -13 lines).
4 out of 89 hunks FAILED -- saving rejects to file drivers/scsi/libata-core.c.rej
patching file drivers/scsi/libata-eh.c
patching file drivers/scsi/libata-scsi.c
patching file drivers/scsi/libata.h
patching file drivers/scsi/pdc_adma.c
patching file drivers/scsi/sata_mv.c
Hunk #2 succeeded at 682 (offset 2 lines).
Hunk #3 succeeded at 1311 (offset 2 lines).
Hunk #4 succeeded at 1398 (offset 2 lines).
Hunk #5 succeeded at 1419 (offset 2 lines).
Hunk #6 succeeded at 1936 (offset 2 lines).
Hunk #7 succeeded at 1962 (offset 2 lines).
Hunk #8 succeeded at 1994 (offset 2 lines).
Hunk #9 succeeded at 2025 (offset 2 lines).
patching file drivers/scsi/sata_nv.c
Hunk #2 succeeded at 280 (offset 1 line).
patching file drivers/scsi/sata_promise.c
Hunk #2 succeeded at 438 (offset 2 lines).
Hunk #3 succeeded at 446 (offset 2 lines).
Hunk #4 succeeded at 537 (offset 2 lines).
Hunk #5 succeeded at 680 (offset 2 lines).
patching file drivers/scsi/sata_qstor.c
Hunk #2 succeeded at 176 (offset 1 line).
Hunk #3 succeeded at 395 (offset 1 line).
Hunk #4 succeeded at 428 (offset 1 line).
patching file drivers/scsi/sata_sil.c
Hunk #3 FAILED at 176.
Hunk #4 succeeded at 269 (offset 1 line).
Hunk #5 succeeded at 320 (offset 1 line).
Hunk #6 succeeded at 393 (offset 1 line).
Hunk #7 succeeded at 417 (offset 1 line).
Hunk #8 succeeded at 507 (offset 1 line).
1 out of 8 hunks FAILED -- saving rejects to file drivers/scsi/sata_sil.c.rej
patching file drivers/scsi/sata_sil24.c
Hunk #9 succeeded at 388 with fuzz 2 (offset 1 line).
Hunk #10 succeeded at 415 (offset 1 line).
Hunk #11 succeeded at 425 (offset 1 line).
Hunk #12 succeeded at 434 (offset 1 line).
Hunk #13 succeeded at 442 (offset 1 line).
Hunk #14 succeeded at 510 (offset 1 line).
Hunk #15 succeeded at 580 (offset 1 line).
Hunk #16 succeeded at 661 (offset 1 line).
Hunk #17 succeeded at 687 (offset 1 line).
Hunk #18 succeeded at 699 (offset 1 line).
Hunk #19 succeeded at 709 (offset 1 line).
Hunk #20 succeeded at 729 (offset 1 line).
Hunk #21 succeeded at 890 (offset 1 line).
Hunk #22 succeeded at 903 (offset 1 line).
Hunk #23 succeeded at 940 (offset 1 line).
Hunk #24 succeeded at 1004 (offset 1 line).
Hunk #25 succeeded at 1057 (offset 1 line).
Hunk #26 succeeded at 1115 (offset 1 line).
Hunk #27 succeeded at 1137 (offset 1 line).
patching file drivers/scsi/sata_sis.c
patching file drivers/scsi/sata_svw.c
patching file drivers/scsi/sata_sx4.c
Hunk #2 succeeded at 219 (offset 1 line).
Hunk #3 succeeded at 834 (offset 1 line).
Hunk #4 succeeded at 869 (offset 1 line).
Hunk #5 succeeded at 1377 (offset 1 line).
patching file drivers/scsi/sata_uli.c
patching file drivers/scsi/sata_via.c
patching file drivers/scsi/sata_vsc.c
patching file drivers/scsi/scsi.c
patching file drivers/scsi/scsi_error.c
patching file drivers/scsi/scsi_lib.c
patching file drivers/scsi/scsi_priv.h
patching file include/linux/ata.h
patching file include/linux/libata.h
Hunk #2 succeeded at 45 with fuzz 2.
Hunk #4 FAILED at 123.
Hunk #5 succeeded at 140 (offset 1 line).
Hunk #6 succeeded at 223 (offset 1 line).
Hunk #7 succeeded at 284 (offset 1 line).
Hunk #8 succeeded at 375 (offset 1 line).
Hunk #9 succeeded at 387 (offset 1 line).
Hunk #10 succeeded at 424 (offset 1 line).
Hunk #11 succeeded at 466 (offset 1 line).
Hunk #12 succeeded at 489 (offset 1 line).
Hunk #13 succeeded at 531 (offset 3 lines).
Hunk #14 succeeded at 585 (offset 3 lines).
Hunk #15 succeeded at 610 (offset 3 lines).
Hunk #16 FAILED at 666.
Hunk #17 succeeded at 735 (offset 7 lines).
Hunk #18 succeeded at 821 (offset 7 lines).
Hunk #19 succeeded at 934 (offset 7 lines).
Hunk #20 succeeded at 977 (offset 7 lines).
Hunk #21 succeeded at 1060 (offset 7 lines).
Hunk #22 succeeded at 1097 (offset 7 lines).
2 out of 22 hunks FAILED -- saving rejects to file include/linux/libata.h.rej
patching file include/scsi/scsi_cmnd.h
patching file include/scsi/scsi_eh.h
patching file include/scsi/scsi_host.h


-- 
 Lab tests show that use of micro$oft causes cancer in lab animals
 Got Gas???

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 23:32     ` Tejun Heo
@ 2006-05-15 23:49       ` Jeff Garzik
  2006-05-16  0:04         ` Tejun Heo
  0 siblings, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-15 23:49 UTC (permalink / raw)
  To: Tejun Heo; +Cc: linux-ide, linux-kernel, Andrew Morton

Tejun Heo wrote:
> Jeff Garzik wrote:
>> Tomasz Torcz wrote:
>>> On Mon, May 15, 2006 at 01:00:06PM -0400, Jeff Garzik wrote:
>>>> After much development and review, I merged a massive pile of libata
>>>> patches from Tejun Heo and Albert Lee.  This update contains the
>>>> following major libata
>>>
>>>   Any plans to merge http://home-tj.org/wiki/index.php/Sil_m15w ? Or
>>> maybe it's merged already?
>>>   Seagate firmware update seems to be available only for OEMs, so this
>>> quirk is pretty helpful for end users.
>>
>> Its a question of staging.  This still lives in the 'sii-m15w' branch 
>> of libata-dev.git, but if we throw too many _classes_ of changes into 
>> the same big lump, then it becomes much more difficult to discern 
>> which changes caused which failures.
>>
>> Since sata_sil has seen several changes, and since the sii-m15w 
>> problems are so difficult to diagnose properly, its easier to separate 
>> that out.
> 
> Are you planning on merging sil_m15w workaround?

Yes, but after 2.6.18.


> FYI, from the first time it was submitted (last summer) till 2.6.16, it 
> took very little effort to maintain it.  The current big update would 
> necessitate some changes to it but I don't think it will be too much 
> work.  My experience says m15w doesn't add too much maintenance overhead.

Its actively maintained in the 'sii-m15w' branch of libata-dev.git.


> Also, what's the merge plan for hotplug/PM?  Together into 2.6.18?  Or 
> are we looking further down?

Hotplug is reasonable for 2.6.18, but after that its getting a bit much. 
  We need to have some reasonable testing points in the midst of all 
this development :)  I'm happy to maintain an upstream-2.6.19 branch for 
such things, though.  I use tiered branches anyway.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 23:40     ` Alan Cox
@ 2006-05-15 23:50       ` Wakko Warner
  0 siblings, 0 replies; 113+ messages in thread
From: Wakko Warner @ 2006-05-15 23:50 UTC (permalink / raw)
  To: Alan Cox; +Cc: Jeff Garzik, linux-ide, linux-kernel

Alan Cox wrote:
> On Llu, 2006-05-15 at 19:00 -0400, Jeff Garzik wrote:
> > Always helpful.  ata_piix should support Intel PATA controllers, modulo 
> > some bugs that Alan is fixing / has fixed.  If your PCI ID isn't listed, 
> > you will have to add it, and an associated info entry.  Again, take a 
> > look at Alan's libata PATA patches for guidance.
> 
> Without the patches I've got everything non ATAPI should work (ATAPI
> will I think 99% work) and anything that is ICH or later (UDMA66 or
> higher) should behave correctly.
> 
> PIIX/MPIIX won't work with it, and UDMA33 chips may work providing the
> scribbles to the wrong register happen to be harmless.

The test machine I have is this:
# lspci -v -s 7.1
0000:00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01) (prog-if 80 [Master])
        Flags: bus master, medium devsel, latency 64
        I/O ports at 10a0 [size=16]

# lspci -v -s 7.1 -n
0000:00:07.1 0101: 8086:7111 (rev 01) (prog-if 80 [Master])
        Flags: bus master, medium devsel, latency 64
        I/O ports at 10a0 [size=16]

#

If this won't work, let me know.

-- 
 Lab tests show that use of micro$oft causes cancer in lab animals
 Got Gas???

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 23:30 ` Avuton Olrich
  2006-05-15 23:36   ` Tejun Heo
@ 2006-05-15 23:54   ` Jeff Garzik
  2006-05-16  0:08     ` Avuton Olrich
  2006-05-16  3:36     ` Avuton Olrich
  1 sibling, 2 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-15 23:54 UTC (permalink / raw)
  To: Avuton Olrich; +Cc: linux-ide, linux-kernel, akpm, torvalds

Avuton Olrich wrote:
> On 5/15/06, Jeff Garzik <jeff@garzik.org> wrote:
>> * sata_sil and ata_piix also need healthy re-testing of all basic
>> functionality.
> 
> I'm testing it right now, but with 2.6.17-rc4-git2 I was getting:

Testing what?  sata_sil?  Please provide full dmesg, there's a lot of 
missing information.


> May 15 15:42:57 shapeshifter ata2: command 0x25 timeout, stat 0x58 
> host_stat 0x1
> May 15 15:42:57 shapeshifter ata2: translated ATA stat/err 0x58/00 to
> SCSI SK/ASC/ASCQ 0xb/47/00
> May 15 15:42:57 shapeshifter ata2: status=0x58 { DriveReady
> SeekComplete DataRequest }
> May 15 15:42:57 shapeshifter sd 1:0:0:0: SCSI error: return code = 
> 0x8000002
> May 15 15:42:57 shapeshifter sda: Current: sense key=0xb
> May 15 15:42:57 shapeshifter ASC=0x47 ASCQ=0x0
> May 15 15:42:57 shapeshifter end_request: I/O error, dev sda, sector 
> 974708575
> 
> (sector varies)
> 
> After large ssh transfers. I moved to 2.6.17-rc4-git2 because
> 2.6.16.16 was doing the same. This is a new 500gb sata2 drive on
> sata_sil so I guess this could be hardware, but I wanted to make sure
> before I go returning this thing. After this obviously I have to sysrq
> sync, ro and reboot. This also causes(?) a NETDEV WATCHDOG: eth2:
> transmit timed out, sometimes this ata timeout doesn't yet occur and I
> just get the netdev watchdog. This has not yet happened with the new
> patch, though I'm only 1 hr into testing with it.

Yes, its entirely possible that the new patch will address this.  Please 
do keep us posted.

Thanks,

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 23:49       ` Jeff Garzik
@ 2006-05-16  0:04         ` Tejun Heo
  2006-05-16  2:15           ` Tejun Heo
  0 siblings, 1 reply; 113+ messages in thread
From: Tejun Heo @ 2006-05-16  0:04 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel, Andrew Morton

Jeff Garzik wrote:
> Tejun Heo wrote:
>> Jeff Garzik wrote:
>>> Tomasz Torcz wrote:
>>>> On Mon, May 15, 2006 at 01:00:06PM -0400, Jeff Garzik wrote:
>>>>> After much development and review, I merged a massive pile of libata
>>>>> patches from Tejun Heo and Albert Lee.  This update contains the
>>>>> following major libata
>>>>
>>>>   Any plans to merge http://home-tj.org/wiki/index.php/Sil_m15w ? Or
>>>> maybe it's merged already?
>>>>   Seagate firmware update seems to be available only for OEMs, so this
>>>> quirk is pretty helpful for end users.
>>>
>>> Its a question of staging.  This still lives in the 'sii-m15w' branch 
>>> of libata-dev.git, but if we throw too many _classes_ of changes into 
>>> the same big lump, then it becomes much more difficult to discern 
>>> which changes caused which failures.
>>>
>>> Since sata_sil has seen several changes, and since the sii-m15w 
>>> problems are so difficult to diagnose properly, its easier to 
>>> separate that out.
>>
>> Are you planning on merging sil_m15w workaround?
> 
> Yes, but after 2.6.18.

Cool.

>> FYI, from the first time it was submitted (last summer) till 2.6.16, 
>> it took very little effort to maintain it.  The current big update 
>> would necessitate some changes to it but I don't think it will be too 
>> much work.  My experience says m15w doesn't add too much maintenance 
>> overhead.
> 
> Its actively maintained in the 'sii-m15w' branch of libata-dev.git.
> 

I have been maintaining my own.  :)  BTW, with 2.6.16, m15_cxt has to 
move from qc->private_data to ap->private_data.

> 
>> Also, what's the merge plan for hotplug/PM?  Together into 2.6.18?  Or 
>> are we looking further down?
> 
> Hotplug is reasonable for 2.6.18, but after that its getting a bit much. 
>  We need to have some reasonable testing points in the midst of all this 
> development :)  I'm happy to maintain an upstream-2.6.19 branch for such 
> things, though.  I use tiered branches anyway.

Good enough for me.  I want to see hotplug in 2.6.18 but link/PM stuff 
can definitely wait for 2.6.19.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 23:54   ` Jeff Garzik
@ 2006-05-16  0:08     ` Avuton Olrich
  2006-05-16  3:36     ` Avuton Olrich
  1 sibling, 0 replies; 113+ messages in thread
From: Avuton Olrich @ 2006-05-16  0:08 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel, akpm, torvalds

On 5/15/06, Jeff Garzik <jeff@garzik.org> wrote:
> Avuton Olrich wrote:
> > On 5/15/06, Jeff Garzik <jeff@garzik.org> wrote:
> >> * sata_sil and ata_piix also need healthy re-testing of all basic
> >> functionality.
> >
> > I'm testing it right now, but with 2.6.17-rc4-git2 I was getting:
>
> Testing what?  sata_sil?  Please provide full dmesg, there's a lot of
> missing information.

sata_sil, sorry, I thought I provided a good subset of the timeout message:

May 15 15:41:27 shapeshifter ata2: command 0x25 timeout, stat 0x58 host_stat 0x1
May 15 15:41:27 shapeshifter ata2: translated ATA stat/err 0x58/00 to
SCSI SK/ASC/ASCQ 0xb/47/00
May 15 15:41:27 shapeshifter ata2: status=0x58 { DriveReady
SeekComplete DataRequest }
May 15 15:41:27 shapeshifter sd 1:0:0:0: SCSI error: return code = 0x8000002
May 15 15:41:27 shapeshifter sda: Current: sense key=0xb
May 15 15:41:27 shapeshifter ASC=0x47 ASCQ=0x0
May 15 15:41:27 shapeshifter end_request: I/O error, dev sda, sector 974708551
May 15 15:41:57 shapeshifter ata2: command 0x25 timeout, stat 0x58 host_stat 0x1
May 15 15:41:57 shapeshifter ata2: translated ATA stat/err 0x58/00 to
SCSI SK/ASC/ASCQ 0xb/47/00
May 15 15:41:57 shapeshifter ata2: status=0x58 { DriveReady
SeekComplete DataRequest }
May 15 15:41:57 shapeshifter sd 1:0:0:0: SCSI error: return code = 0x8000002
May 15 15:41:57 shapeshifter sda: Current: sense key=0xb
May 15 15:41:57 shapeshifter ASC=0x47 ASCQ=0x0
May 15 15:41:57 shapeshifter end_request: I/O error, dev sda, sector 974708559
May 15 15:42:27 shapeshifter ata2: command 0x25 timeout, stat 0x58 host_stat 0x1
May 15 15:42:27 shapeshifter ata2: translated ATA stat/err 0x58/00 to
SCSI SK/ASC/ASCQ 0xb/47/00
May 15 15:42:27 shapeshifter ata2: status=0x58 { DriveReady
SeekComplete DataRequest }
May 15 15:42:27 shapeshifter sd 1:0:0:0: SCSI error: return code = 0x8000002
May 15 15:42:27 shapeshifter sda: Current: sense key=0xb
May 15 15:42:27 shapeshifter ASC=0x47 ASCQ=0x0
May 15 15:42:27 shapeshifter end_request: I/O error, dev sda, sector 974708567
May 15 15:42:57 shapeshifter ata2: command 0x25 timeout, stat 0x58 host_stat 0x1
May 15 15:42:57 shapeshifter ata2: translated ATA stat/err 0x58/00 to
SCSI SK/ASC/ASCQ 0xb/47/00
May 15 15:42:57 shapeshifter ata2: status=0x58 { DriveReady
SeekComplete DataRequest }
May 15 15:42:57 shapeshifter sd 1:0:0:0: SCSI error: return code = 0x8000002
May 15 15:42:57 shapeshifter sda: Current: sense key=0xb
May 15 15:42:57 shapeshifter ASC=0x47 ASCQ=0x0
May 15 15:42:57 shapeshifter end_request: I/O error, dev sda, sector 974708575
May 15 15:43:27 shapeshifter ata2: command 0x25 timeout, stat 0x58 host_stat 0x1
May 15 15:43:27 shapeshifter ata2: translated ATA stat/err 0x58/00 to
SCSI SK/ASC/ASCQ 0xb/47/00
May 15 15:43:27 shapeshifter ata2: status=0x58 { DriveReady
SeekComplete DataRequest }
May 15 15:43:27 shapeshifter sd 1:0:0:0: SCSI error: return code = 0x8000002
May 15 15:43:27 shapeshifter sda: Current: sense key=0xb
May 15 15:43:27 shapeshifter ASC=0x47 ASCQ=0x0
May 15 15:43:27 shapeshifter end_request: I/O error, dev sda, sector 974708583
May 15 15:43:57 shapeshifter ata2: command 0x25 timeout, stat 0x58 host_stat 0x1
May 15 15:43:57 shapeshifter ata2: translated ATA stat/err 0x58/00 to
SCSI SK/ASC/ASCQ 0xb/47/00
May 15 15:43:57 shapeshifter ata2: status=0x58 { DriveReady
SeekComplete DataRequest }
May 15 15:43:57 shapeshifter sd 1:0:0:0: SCSI error: return code = 0x8000002
May 15 15:43:57 shapeshifter sda: Current: sense key=0xb
May 15 15:43:57 shapeshifter ASC=0x47 ASCQ=0x0
May 15 15:43:57 shapeshifter end_request: I/O error, dev sda, sector 974708591
May 15 15:44:02 shapeshifter SysRq : Emergency Sync
May 15 15:44:02 shapeshifter Emergency Sync complete
May 15 15:44:27 shapeshifter ata2: command 0x25 timeout, stat 0x58 host_stat 0x1
May 15 15:44:27 shapeshifter ata2: translated ATA stat/err 0x58/00 to
SCSI SK/ASC/ASCQ 0xb/47/00
May 15 15:44:27 shapeshifter ata2: status=0x58 { DriveReady
SeekComplete DataRequest }
May 15 15:44:27 shapeshifter sd 1:0:0:0: SCSI error: return code = 0x8000002
May 15 15:44:27 shapeshifter sda: Current: sense key=0xb
May 15 15:44:27 shapeshifter ASC=0x47 ASCQ=0x0
May 15 15:44:27 shapeshifter end_request: I/O error, dev sda, sector 974708599
May 15 15:44:35 shapeshifter NETDEV WATCHDOG: eth2: transmit timed out

> > After large ssh transfers. I moved to 2.6.17-rc4-git2 because
> > 2.6.16.16 was doing the same. This is a new 500gb sata2 drive on
> > sata_sil so I guess this could be hardware, but I wanted to make sure
> > before I go returning this thing. After this obviously I have to sysrq
> > sync, ro and reboot. This also causes(?) a NETDEV WATCHDOG: eth2:
> > transmit timed out, sometimes this ata timeout doesn't yet occur and I
> > just get the netdev watchdog. This has not yet happened with the new
> > patch, though I'm only 1 hr into testing with it.
>
> Yes, its entirely possible that the new patch will address this.  Please
> do keep us posted.
>
> Thanks,
>
>         Jeff

OK, upon further testing I believe the patch helps out tremendously, I
don't get the timeout message (yet), though I still get a netdev
watchdog. I've gotten this with two different ethernet ports/drivers
so I believe this not to be due to the ethernet driver.

Sample dmesg output:
NETDEV WATCHDOG: eth2: transmit timed out

The time that it actually takes to happen is variable, though it
hasn't happened to me in under 20 minutes yet.

-- 
avuton
--
 Anyone who quotes me in their sig is an idiot. -- Rusty Russell.

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16  0:04         ` Tejun Heo
@ 2006-05-16  2:15           ` Tejun Heo
  0 siblings, 0 replies; 113+ messages in thread
From: Tejun Heo @ 2006-05-16  2:15 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel, Andrew Morton

Tejun Heo wrote:
> Jeff Garzik wrote:
>> Tejun Heo wrote:
>>> Jeff Garzik wrote:
>>>> Tomasz Torcz wrote:
>>>>> On Mon, May 15, 2006 at 01:00:06PM -0400, Jeff Garzik wrote:
>>>>>> After much development and review, I merged a massive pile of libata
>>>>>> patches from Tejun Heo and Albert Lee.  This update contains the
>>>>>> following major libata
>>>>>
>>>>>   Any plans to merge http://home-tj.org/wiki/index.php/Sil_m15w ? Or
>>>>> maybe it's merged already?
>>>>>   Seagate firmware update seems to be available only for OEMs, so this
>>>>> quirk is pretty helpful for end users.
>>>>
>>>> Its a question of staging.  This still lives in the 'sii-m15w' 
>>>> branch of libata-dev.git, but if we throw too many _classes_ of 
>>>> changes into the same big lump, then it becomes much more difficult 
>>>> to discern which changes caused which failures.
>>>>
>>>> Since sata_sil has seen several changes, and since the sii-m15w 
>>>> problems are so difficult to diagnose properly, its easier to 
>>>> separate that out.
>>>
>>> Are you planning on merging sil_m15w workaround?
>>
>> Yes, but after 2.6.18.
> 
> Cool.
> 
>>> FYI, from the first time it was submitted (last summer) till 2.6.16, 
>>> it took very little effort to maintain it.  The current big update 
>>> would necessitate some changes to it but I don't think it will be too 
>>> much work.  My experience says m15w doesn't add too much maintenance 
>>> overhead.
>>
>> Its actively maintained in the 'sii-m15w' branch of libata-dev.git.
>>
> 
> I have been maintaining my own.  :)  BTW, with 2.6.16, m15_cxt has to 
> move from qc->private_data to ap->private_data.

Okay, we've been talking about different things.  You're talking about 
excluding non-affected drives from m15w blacklist while I'm talking 
about the handle-large-writes-by-qc-rewrite m15w workaround.  The URL 
Tomasz Torcz wrote contains the workaround.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 23:54   ` Jeff Garzik
  2006-05-16  0:08     ` Avuton Olrich
@ 2006-05-16  3:36     ` Avuton Olrich
  2006-05-16  3:51       ` Jeff Garzik
  2006-05-16  3:55       ` Tejun Heo
  1 sibling, 2 replies; 113+ messages in thread
From: Avuton Olrich @ 2006-05-16  3:36 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel, akpm, torvalds

On 5/15/06, Jeff Garzik <jeff@garzik.org> wrote:
> Avuton Olrich wrote:
> > On 5/15/06, Jeff Garzik <jeff@garzik.org> wrote:
> >> * sata_sil and ata_piix also need healthy re-testing of all basic
> >> functionality.
> >
> > I'm testing it right now, but with 2.6.17-rc4-git2 I was getting:
>
> Testing what?  sata_sil?  Please provide full dmesg, there's a lot of
> missing information.

More followup, it did finally error out on me:

Not sure if it helps any, but this is a sata2 disk with a sata
interface. This is rc4-git2 with the libata patch from the beginning
of this thread, using sata_sil.

dmesg:
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x3 frozen
ata1.00: (BMDMA stat 0x1)
ata1.00: tag 0 cmd 0x25 Emask 0x4 stat 0x40 err 0x0 (timeout)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata1.00: configured for UDMA/100
ata1: EH complete
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x3 frozen
ata1.00: (BMDMA stat 0x1)
ata1.00: tag 0 cmd 0x25 Emask 0x4 stat 0x40 err 0x0 (timeout)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata1.00: configured for UDMA/100
ata1: EH complete
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x3 frozen
ata1.00: (BMDMA stat 0x1)
ata1.00: tag 0 cmd 0x25 Emask 0x4 stat 0x40 err 0x0 (timeout)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata1.00: configured for UDMA/100
ata1: EH complete
ata1.00: limiting speed to UDMA/66
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x3 frozen
ata1.00: (BMDMA stat 0x1)
ata1.00: tag 0 cmd 0x25 Emask 0x4 stat 0x40 err 0x0 (timeout)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata1.00: configured for UDMA/66
ata1: EH complete
ata1.00: limiting speed to UDMA/44
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x3 frozen
ata1.00: (BMDMA stat 0x1)
ata1.00: tag 0 cmd 0x25 Emask 0x4 stat 0x40 err 0x0 (timeout)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata1.00: configured for UDMA/44
ata1: EH complete
ata1.00: limiting speed to UDMA/33
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x3 frozen
ata1.00: (BMDMA stat 0x1)
ata1.00: tag 0 cmd 0x25 Emask 0x4 stat 0x40 err 0x0 (timeout)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata1.00: configured for UDMA/33
sd 0:0:0:0: SCSI error: return code = 0x8000002
sda: Current: sense key=0xb
    ASC=0x0 ASCQ=0x0
end_request: I/O error, dev sda, sector 703661647
ata1: EH complete
ata1.00: limiting speed to UDMA/25
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x3 frozen
ata1.00: (BMDMA stat 0x1)
ata1.00: tag 0 cmd 0x25 Emask 0x4 stat 0x40 err 0x0 (timeout)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata1.00: configured for UDMA/25
ata1: EH complete
NETDEV WATCHDOG: eth2: transmit timed out
ata1.00: limiting speed to UDMA/16
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x3 frozen
ata1.00: (BMDMA stat 0x1)
ata1.00: tag 0 cmd 0x25 Emask 0x4 stat 0x40 err 0x0 (timeout)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata1.00: configured for UDMA/16
ata1: EH complete
ata1.00: limiting speed to PIO4
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x3 frozen
ata1.00: (BMDMA stat 0x1)
ata1.00: tag 0 cmd 0x25 Emask 0x4 stat 0x40 err 0x0 (timeout)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata1.00: configured for PIO4
ata1: EH complete
NETDEV WATCHDOG: eth0: transmit timed out
eth0: transmit timed out, tx_status 00 status e000.
  diagnostics: net 0cc0 media 8080 dma 000000a0 fifo 8800
  Flags; bus-master 1, dirty 18790(6) current 18806(6)
  Transmit list 37e3c5c0 vs. f7e3c5c0.
  0: @f7e3c200  length 8000002a status 0000002a
  1: @f7e3c2a0  length 8000002a status 0000002a
  2: @f7e3c340  length 8000002a status 0000002a
  3: @f7e3c3e0  length 8000002a status 0000002a
  4: @f7e3c480  length 8000002a status 8000002a
  5: @f7e3c520  length 8000002a status 8000002a
  6: @f7e3c5c0  length 8000005f status 0000005f
  7: @f7e3c660  length 8000005f status 0000005f
  8: @f7e3c700  length 8000002a status 0000002a
  9: @f7e3c7a0  length 8000002a status 0000002a
  10: @f7e3c840  length 8000002a status 0000002a
  11: @f7e3c8e0  length 8000002a status 0000002a
  12: @f7e3c980  length 8000002a status 0000002a
  13: @f7e3ca20  length 8000002a status 0000002a
  14: @f7e3cac0  length 8000002a status 0000002a
  15: @f7e3cb60  length 8000002a status 0000002a
eth0: Resetting the Tx ring pointer.
NETDEV WATCHDOG: eth0: transmit timed out
eth0: transmit timed out, tx_status 00 status e000.
  diagnostics: net 0cc0 media 8080 dma 000000a0 fifo 8800
  Flags; bus-master 1, dirty 18790(6) current 18806(6)
  Transmit list 37e3c5c0 vs. f7e3c5c0.
  0: @f7e3c200  length 8000002a status 0000002a
  1: @f7e3c2a0  length 8000002a status 0000002a
  2: @f7e3c340  length 8000002a status 0000002a
  3: @f7e3c3e0  length 8000002a status 0000002a
  4: @f7e3c480  length 8000002a status 8000002a
  5: @f7e3c520  length 8000002a status 8000002a
  6: @f7e3c5c0  length 8000005f status 0000005f
  7: @f7e3c660  length 8000005f status 0000005f
  8: @f7e3c700  length 8000002a status 0000002a
  9: @f7e3c7a0  length 8000002a status 0000002a
  10: @f7e3c840  length 8000002a status 0000002a
  11: @f7e3c8e0  length 8000002a status 0000002a
  12: @f7e3c980  length 8000002a status 0000002a
  13: @f7e3ca20  length 8000002a status 0000002a
  14: @f7e3cac0  length 8000002a status 0000002a
  15: @f7e3cb60  length 8000002a status 0000002a
eth0: Resetting the Tx ring pointer.
NETDEV WATCHDOG: eth0: transmit timed out
eth0: transmit timed out, tx_status 00 status e000.
  diagnostics: net 0cc0 media 8080 dma 000000a0 fifo 8800
  Flags; bus-master 1, dirty 18790(6) current 18806(6)
  Transmit list 37e3c5c0 vs. f7e3c5c0.
  0: @f7e3c200  length 8000002a status 0000002a
  1: @f7e3c2a0  length 8000002a status 0000002a
  2: @f7e3c340  length 8000002a status 0000002a
  3: @f7e3c3e0  length 8000002a status 0000002a
  4: @f7e3c480  length 8000002a status 8000002a
  5: @f7e3c520  length 8000002a status 8000002a
  6: @f7e3c5c0  length 8000005f status 0000005f
  7: @f7e3c660  length 8000005f status 0000005f
  8: @f7e3c700  length 8000002a status 0000002a
  9: @f7e3c7a0  length 8000002a status 0000002a
  10: @f7e3c840  length 8000002a status 0000002a
  11: @f7e3c8e0  length 8000002a status 0000002a
  12: @f7e3c980  length 8000002a status 0000002a
  13: @f7e3ca20  length 8000002a status 0000002a
  14: @f7e3cac0  length 8000002a status 0000002a
  15: @f7e3cb60  length 8000002a status 0000002a
eth0: Resetting the Tx ring pointer.
NETDEV WATCHDOG: eth0: transmit timed out
eth0: transmit timed out, tx_status 00 status e000.
  diagnostics: net 0cc0 media 8080 dma 000000a0 fifo 8800
  Flags; bus-master 1, dirty 18790(6) current 18806(6)
  Transmit list 37e3c5c0 vs. f7e3c5c0.
  0: @f7e3c200  length 8000002a status 0000002a
  1: @f7e3c2a0  length 8000002a status 0000002a
  2: @f7e3c340  length 8000002a status 0000002a
  3: @f7e3c3e0  length 8000002a status 0000002a
  4: @f7e3c480  length 8000002a status 8000002a
  5: @f7e3c520  length 8000002a status 8000002a
  6: @f7e3c5c0  length 8000005f status 0000005f
  7: @f7e3c660  length 8000005f status 0000005f
  8: @f7e3c700  length 8000002a status 0000002a
  9: @f7e3c7a0  length 8000002a status 0000002a
  10: @f7e3c840  length 8000002a status 0000002a
  11: @f7e3c8e0  length 8000002a status 0000002a
  12: @f7e3c980  length 8000002a status 0000002a
  13: @f7e3ca20  length 8000002a status 0000002a
  14: @f7e3cac0  length 8000002a status 0000002a
  15: @f7e3cb60  length 8000002a status 0000002a
eth0: Resetting the Tx ring pointer.
NETDEV WATCHDOG: eth0: transmit timed out
eth0: transmit timed out, tx_status 00 status e000.
  diagnostics: net 0cc0 media 8080 dma 000000a0 fifo 8800
  Flags; bus-master 1, dirty 18790(6) current 18806(6)
  Transmit list 37e3c5c0 vs. f7e3c5c0.
  0: @f7e3c200  length 8000002a status 0000002a
  1: @f7e3c2a0  length 8000002a status 0000002a
  2: @f7e3c340  length 8000002a status 0000002a
  3: @f7e3c3e0  length 8000002a status 0000002a
  4: @f7e3c480  length 8000002a status 8000002a
  5: @f7e3c520  length 8000002a status 8000002a
  6: @f7e3c5c0  length 8000005f status 0000005f
  7: @f7e3c660  length 8000005f status 0000005f
  8: @f7e3c700  length 8000002a status 0000002a
  9: @f7e3c7a0  length 8000002a status 0000002a
  10: @f7e3c840  length 8000002a status 0000002a
  11: @f7e3c8e0  length 8000002a status 0000002a
  12: @f7e3c980  length 8000002a status 0000002a
  13: @f7e3ca20  length 8000002a status 0000002a
  14: @f7e3cac0  length 8000002a status 0000002a
  15: @f7e3cb60  length 8000002a status 0000002a
eth0: Resetting the Tx ring pointer.
NETDEV WATCHDOG: eth0: transmit timed out
eth0: transmit timed out, tx_status 00 status e000.
  diagnostics: net 0cc0 media 8080 dma 000000a0 fifo 8800
  Flags; bus-master 1, dirty 18790(6) current 18806(6)
  Transmit list 37e3c5c0 vs. f7e3c5c0.
  0: @f7e3c200  length 8000002a status 0000002a
  1: @f7e3c2a0  length 8000002a status 0000002a
  2: @f7e3c340  length 8000002a status 0000002a
  3: @f7e3c3e0  length 8000002a status 0000002a
  4: @f7e3c480  length 8000002a status 8000002a
  5: @f7e3c520  length 8000002a status 8000002a
  6: @f7e3c5c0  length 8000005f status 0000005f
  7: @f7e3c660  length 8000005f status 0000005f
  8: @f7e3c700  length 8000002a status 0000002a
  9: @f7e3c7a0  length 8000002a status 0000002a
  10: @f7e3c840  length 8000002a status 0000002a
  11: @f7e3c8e0  length 8000002a status 0000002a
  12: @f7e3c980  length 8000002a status 0000002a
  13: @f7e3ca20  length 8000002a status 0000002a
  14: @f7e3cac0  length 8000002a status 0000002a
  15: @f7e3cb60  length 8000002a status 0000002a
eth0: Resetting the Tx ring pointer.

lspci -vvv:
01:0b.0 RAID bus controller: Silicon Image, Inc. SiI 3112
[SATALink/SATARaid] Serial ATA Controller (rev 01)
        Subsystem: Silicon Image, Inc. SiI 3112 SATARaid Controller
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32, Cache Line Size 08
        Interrupt: pin A routed to IRQ 19
        Region 0: I/O ports at 9c00 [size=8]
        Region 1: I/O ports at a000 [size=4]
        Region 2: I/O ports at a400 [size=8]
        Region 3: I/O ports at a800 [size=4]
        Region 4: I/O ports at ac00 [size=16]
        Region 5: Memory at e5006000 (32-bit, non-prefetchable)
[size=512]
        [virtual] Expansion ROM at e6800000 [disabled] [size=512K]
        Capabilities: [60] Power Management version 2
                Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=2 PME-

-- 
avuton
--
 Anyone who quotes me in their sig is an idiot. -- Rusty Russell.

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16  3:36     ` Avuton Olrich
@ 2006-05-16  3:51       ` Jeff Garzik
  2006-05-16  4:33         ` Avuton Olrich
  2006-05-16  3:55       ` Tejun Heo
  1 sibling, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-16  3:51 UTC (permalink / raw)
  To: Avuton Olrich; +Cc: linux-ide, linux-kernel, akpm, torvalds

Avuton Olrich wrote:
> On 5/15/06, Jeff Garzik <jeff@garzik.org> wrote:
>> Avuton Olrich wrote:
>> > On 5/15/06, Jeff Garzik <jeff@garzik.org> wrote:
>> >> * sata_sil and ata_piix also need healthy re-testing of all basic
>> >> functionality.
>> >
>> > I'm testing it right now, but with 2.6.17-rc4-git2 I was getting:
>>
>> Testing what?  sata_sil?  Please provide full dmesg, there's a lot of
>> missing information.
> 
> More followup, it did finally error out on me:
> 
> Not sure if it helps any, but this is a sata2 disk with a sata
> interface. This is rc4-git2 with the libata patch from the beginning
> of this thread, using sata_sil.

Can you configure your interrupts so that ethernet and SATA are not on 
the same irq?

Also, please provide _full_ dmesg and _full_ lspci, not just the 
SATA-related stuff.  This looks motherboard- or hardware-related.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16  3:36     ` Avuton Olrich
  2006-05-16  3:51       ` Jeff Garzik
@ 2006-05-16  3:55       ` Tejun Heo
  2006-05-16  4:37         ` Avuton Olrich
  1 sibling, 1 reply; 113+ messages in thread
From: Tejun Heo @ 2006-05-16  3:55 UTC (permalink / raw)
  To: Avuton Olrich; +Cc: Jeff Garzik, linux-ide, linux-kernel, akpm, torvalds

Avuton Olrich wrote:
[--snip--]
> ata1.00: tag 0 cmd 0x25 Emask 0x4 stat 0x40 err 0x0 (timeout)
> ata1: soft resetting port
> ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
> ata1.00: configured for UDMA/25
> ata1: EH complete
> NETDEV WATCHDOG: eth2: transmit timed out
> ata1.00: limiting speed to UDMA/16
> ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x3 frozen
> ata1.00: (BMDMA stat 0x1)
> ata1.00: tag 0 cmd 0x25 Emask 0x4 stat 0x40 err 0x0 (timeout)
> ata1: soft resetting port
> ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
> ata1.00: configured for UDMA/16
> ata1: EH complete
> ata1.00: limiting speed to PIO4
> ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x3 frozen
> ata1.00: (BMDMA stat 0x1)
> ata1.00: tag 0 cmd 0x25 Emask 0x4 stat 0x40 err 0x0 (timeout)
> ata1: soft resetting port
> ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
> ata1.00: configured for PIO4
> ata1: EH complete

Are those timeouts back-to-back?  Can you post dmesg w/ timestamp 
(either turn on kernel message timestamping or simply post relevant part 
from /var/log/kern.log).  The drive thinks the command is complete.  You 
might be losing interrupts (you might want to diddle with acpi/irq 
routing stuff) or it could be some other hardware problem.

Does the drive + controller work okay on Windows?  I know people don't 
like this question so much but it's a great way to isolate hardware 
problems as they use completely different driver stack.

And, as show above, currently implemented speed down is way to 
simplistic.  We need a better speed-down sequence, but I guess that can 
wait for a bit.

> NETDEV WATCHDOG: eth0: transmit timed out
> eth0: transmit timed out, tx_status 00 status e000.
>  diagnostics: net 0cc0 media 8080 dma 000000a0 fifo 8800
>  Flags; bus-master 1, dirty 18790(6) current 18806(6)
>  Transmit list 37e3c5c0 vs. f7e3c5c0.
>  0: @f7e3c200  length 8000002a status 0000002a
>  1: @f7e3c2a0  length 8000002a status 0000002a
>  2: @f7e3c340  length 8000002a status 0000002a
>  3: @f7e3c3e0  length 8000002a status 0000002a
>  4: @f7e3c480  length 8000002a status 8000002a
>  5: @f7e3c520  length 8000002a status 8000002a
>  6: @f7e3c5c0  length 8000005f status 0000005f
>  7: @f7e3c660  length 8000005f status 0000005f
>  8: @f7e3c700  length 8000002a status 0000002a
>  9: @f7e3c7a0  length 8000002a status 0000002a
>  10: @f7e3c840  length 8000002a status 0000002a
>  11: @f7e3c8e0  length 8000002a status 0000002a
>  12: @f7e3c980  length 8000002a status 0000002a
>  13: @f7e3ca20  length 8000002a status 0000002a
>  14: @f7e3cac0  length 8000002a status 0000002a
>  15: @f7e3cb60  length 8000002a status 0000002a
> eth0: Resetting the Tx ring pointer.
> NETDEV WATCHDOG: eth0: transmit timed out

Increased transmit timeout is probably because the CPU is locked up 
performing PIOs.  I worry about this.  With irq-pio, the system stutters 
much more.  It might be better to perform the actual PIO part from a 
workqueue.  But then there are controllers which can't stand when CPU 
leaves it unattended while PIO is in progress...

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16  3:51       ` Jeff Garzik
@ 2006-05-16  4:33         ` Avuton Olrich
  2006-05-16 14:57           ` Linus Torvalds
  2006-05-16 15:02           ` Jeff Garzik
  0 siblings, 2 replies; 113+ messages in thread
From: Avuton Olrich @ 2006-05-16  4:33 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel, akpm, torvalds

On 5/15/06, Jeff Garzik <jeff@garzik.org> wrote:


> Can you configure your interrupts so that ethernet and SATA are not on
> the same irq?

Sorry, need a little hand holding here. I'm unsure how to do such a
thing, and can't really google that.

> Also, please provide _full_ dmesg and _full_ lspci, not just the
> SATA-related stuff.  This looks motherboard- or hardware-related.

kern.log is my last 24 hrs, contains everything that came into the kern.log
http://olricha.homelinux.net:8080/dump/kern.log
http://olricha.homelinux.net:8080/dump/lspci-vvv

If there's anything else I can do please let me know
-- 
avuton
--
 Anyone who quotes me in their sig is an idiot. -- Rusty Russell.

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16  3:55       ` Tejun Heo
@ 2006-05-16  4:37         ` Avuton Olrich
  0 siblings, 0 replies; 113+ messages in thread
From: Avuton Olrich @ 2006-05-16  4:37 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jeff Garzik, linux-ide, linux-kernel, akpm, torvalds

On 5/15/06, Tejun Heo <htejun@gmail.com> wrote:
> Avuton Olrich wrote:

> Are those timeouts back-to-back?  Can you post dmesg w/ timestamp
> (either turn on kernel message timestamping or simply post relevant part
> from /var/log/kern.log).  The drive thinks the command is complete.  You
> might be losing interrupts (you might want to diddle with acpi/irq
> routing stuff) or it could be some other hardware problem.

here's the kern log for the last 24 hours or so:
http://olricha.homelinux.net:8080/dump/kern.log

As I told Jeff, I'm not sure how to diddle with the irq stuff, pointers?

> Does the drive + controller work okay on Windows?  I know people don't
> like this question so much but it's a great way to isolate hardware
> problems as they use completely different driver stack.

Sorry, I haven't owned a copy of Windows in >5 yrs, I would be willing
to try otherwise. This computer worked with a 2 160gb sata drives,
when I traded 2 160gb drives with 2 500gb sata2 drives and started
making heavy use of them this happened, although I haven't had any
issue with the other hard drive yet (I don't think, I need to look
over the logs again to make sure I'm not saying that in err).

...snipped more stuff way above my head...
-- 
avuton
--
 Anyone who quotes me in their sig is an idiot. -- Rusty Russell.

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 17:00 [RFT] major libata update Jeff Garzik
                   ` (5 preceding siblings ...)
  2006-05-15 23:30 ` Avuton Olrich
@ 2006-05-16 11:36 ` Ric Wheeler
  2006-05-16 14:25   ` Jeff Garzik
  2006-05-17  2:05 ` Andrew Morton
  2006-05-21 23:51 ` Michael Sterrett -Mr. Bones.-
  8 siblings, 1 reply; 113+ messages in thread
From: Ric Wheeler @ 2006-05-16 11:36 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, Mark Lord, Jens Axboe, Tejun Heo

[-- Attachment #1: Type: text/plain, Size: 1453 bytes --]


Jeff Garzik wrote:

>TESTING:
>* Although most drivers by count received few operational changes, the
>common probe path was updated, so all drivers need fresh "yes, it sees
>all my disks" regression testing.
>
>* ahci and sata_sil24 were touched a lot, and so need additional
>testing.
>
>* sata_sil and ata_piix also need healthy re-testing of all basic
>functionality.
>
>
>  
>
I have been running a moderate write workload on this (built using 
linux-2.6.17-rc4 with your patch applied on top).  Last night, I ran on 
a set of clean AHCI based boxes (no bad drives) and got a serious of 
occasional spurious interrupts logged:


May 15 21:24:38 centera kernel: ReiserFS: sdd14: Using r5 hash to sort names
May 15 21:52:44 centera kernel: ata1: spurious interrupt (irq_stat 0x8 
active_tag -84148995 sactive 0x800)
May 15 22:00:02 centera run-crons[26837]: logrotate returned 1
May 15 22:16:00 centera kernel: ata1: spurious interrupt (irq_stat 0x8 
active_tag -84148995 sactive 0x4)
May 15 22:29:14 centera kernel: ata1: spurious interrupt (irq_stat 0x8 
active_tag -84148995 sactive 0x7e007fff)
May 15 22:35:04 centera kernel: ata3: spurious interrupt (irq_stat 0x8 
active_tag -84148995 sactive 0x4fffffff)

Full messages file and lspci below, but note that this hardware has been 
running ahci with this config in production for over a year now.

I have some bad disks that I will insert & try to get some testing on 
later today,

ric









[-- Attachment #2: messages --]
[-- Type: text/plain, Size: 15057 bytes --]

May 15 21:23:15 centera xinetd[5484]: xinetd Version 2.3.13 started with libwrap loadavg options compiled in.
May 15 21:23:15 centera xinetd[5484]: Started working: 1 available service
May 15 21:23:19 centera kernel: klogd 1.4.1, log source = /proc/kmsg started.
May 15 21:23:19 centera kernel: 
May 15 21:23:19 centera kernel: program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO
May 15 21:23:19 centera last message repeated 47 times
May 15 21:23:19 centera kernel: ReiserFS: sdb9: found reiserfs format "3.6" with standard journal
May 15 21:23:19 centera kernel: ReiserFS: sdb9: using journaled data mode
May 15 21:23:19 centera kernel: ReiserFS: sdb9: journal params: device sdb9, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:23:19 centera kernel: ReiserFS: sdb9: checking transaction log (sdb9)
May 15 21:23:19 centera kernel: ReiserFS: sdb9: Using r5 hash to sort names
May 15 21:23:19 centera kernel: ReiserFS: sdd9: found reiserfs format "3.6" with standard journal
May 15 21:23:19 centera kernel: ReiserFS: sdd9: using journaled data mode
May 15 21:23:19 centera kernel: ReiserFS: sdd9: journal params: device sdd9, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:23:19 centera kernel: ReiserFS: sdd9: checking transaction log (sdd9)
May 15 21:23:19 centera kernel: ReiserFS: sdd9: Using r5 hash to sort names
May 15 21:23:19 centera kernel: Adding 1004052k swap on /dev/cstardm9.  Priority:1 extents:1 across:1004052k
May 15 21:23:19 centera kernel: Adding 1004052k swap on /dev/cstardo9.  Priority:1 extents:1 across:1004052k
May 15 21:23:19 centera kernel: microcode: CPU0 updated from revision 0x9 to 0x12, date = 11222004 
May 15 21:23:19 centera kernel: e1000: eth0: e1000_set_tso: TSO is Enabled
May 15 21:23:21 centera kernel: e1000: eth0: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex
May 15 21:23:28 centera kernel: e1000: eth1: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex
May 15 21:23:28 centera kernel: NET: Registered protocol family 17
May 15 21:23:32 centera kernel: device eth0 entered promiscuous mode
May 15 21:23:37 centera kernel: device eth0 left promiscuous mode
May 15 21:23:37 centera kernel: e1000: eth1: e1000_set_tso: TSO is Enabled
May 15 21:23:40 centera kernel: e1000: eth1: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex
May 15 21:23:50 centera kernel: device eth0 entered promiscuous mode
May 15 21:23:55 centera kernel: device eth0 left promiscuous mode
May 15 21:23:55 centera ntpd[5715]: ntpd 4.1.1@1.786 Sat Sep 27 05:48:59 UTC 2003 (1)
May 15 21:23:55 centera ntpd[5715]: precision = 11 usec
May 15 21:23:55 centera ntpd[5715]: kernel time discipline status 0040
May 15 21:23:55 centera ntpd[5715]: Can't open /var/lib/ntp/var/run/ntp/ntpd.pid: No such file or directory
May 15 21:23:55 centera ntpd[5715]: Un-parsable frequency in /etc/ntp/drift
May 15 21:24:15 centera kernel: device eth0 entered promiscuous mode
May 15 21:24:20 centera kernel: device eth0 left promiscuous mode
May 15 21:24:22 centera kernel: program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO
May 15 21:24:22 centera last message repeated 47 times
May 15 21:24:22 centera kernel: ReiserFS: sdc10: found reiserfs format "3.6" with standard journal
May 15 21:24:22 centera kernel: ReiserFS: sdb10: found reiserfs format "3.6" with standard journal
May 15 21:24:22 centera kernel: ReiserFS: sdd10: found reiserfs format "3.6" with standard journal
May 15 21:24:22 centera kernel: ReiserFS: sda10: found reiserfs format "3.6" with standard journal
May 15 21:24:25 centera kernel: ReiserFS: sdc10: using ordered data mode
May 15 21:24:25 centera kernel: ReiserFS: sdc10: journal params: device sdc10, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:25 centera kernel: ReiserFS: sdc10: checking transaction log (sdc10)
May 15 21:24:25 centera kernel: ReiserFS: sdc10: Using r5 hash to sort names
May 15 21:24:25 centera kernel: ReiserFS: sdc11: found reiserfs format "3.6" with standard journal
May 15 21:24:27 centera kernel: ReiserFS: sdb10: using ordered data mode
May 15 21:24:27 centera kernel: ReiserFS: sdd10: using ordered data mode
May 15 21:24:27 centera kernel: ReiserFS: sdb10: journal params: device sdb10, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:27 centera kernel: ReiserFS: sdb10: checking transaction log (sdb10)
May 15 21:24:27 centera kernel: ReiserFS: sdd10: journal params: device sdd10, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:27 centera kernel: ReiserFS: sdd10: checking transaction log (sdd10)
May 15 21:24:27 centera kernel: ReiserFS: sdd10: Using r5 hash to sort names
May 15 21:24:27 centera kernel: ReiserFS: sdb10: Using r5 hash to sort names
May 15 21:24:27 centera kernel: ReiserFS: sda10: using ordered data mode
May 15 21:24:27 centera kernel: ReiserFS: sda10: journal params: device sda10, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:27 centera kernel: ReiserFS: sda10: checking transaction log (sda10)
May 15 21:24:27 centera kernel: ReiserFS: sda10: Using r5 hash to sort names
May 15 21:24:27 centera kernel: ReiserFS: sdc11: using ordered data mode
May 15 21:24:27 centera kernel: ReiserFS: sdc11: journal params: device sdc11, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:27 centera kernel: ReiserFS: sdc11: checking transaction log (sdc11)
May 15 21:24:27 centera kernel: ReiserFS: sdc11: Using r5 hash to sort names
May 15 21:24:27 centera kernel: ReiserFS: sdb11: found reiserfs format "3.6" with standard journal
May 15 21:24:27 centera kernel: ReiserFS: sda11: found reiserfs format "3.6" with standard journal
May 15 21:24:27 centera kernel: ReiserFS: sdd11: found reiserfs format "3.6" with standard journal
May 15 21:24:27 centera kernel: ReiserFS: sdc12: found reiserfs format "3.6" with standard journal
May 15 21:24:29 centera kernel: ReiserFS: sdb11: using ordered data mode
May 15 21:24:30 centera kernel: ReiserFS: sdd11: using ordered data mode
May 15 21:24:30 centera kernel: ReiserFS: sdb11: journal params: device sdb11, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:30 centera kernel: ReiserFS: sdb11: checking transaction log (sdb11)
May 15 21:24:30 centera kernel: ReiserFS: sdd11: journal params: device sdd11, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:30 centera kernel: ReiserFS: sdd11: checking transaction log (sdd11)
May 15 21:24:30 centera kernel: ReiserFS: sdd11: Using r5 hash to sort names
May 15 21:24:30 centera kernel: ReiserFS: sdb11: Using r5 hash to sort names
May 15 21:24:30 centera kernel: ReiserFS: sdc12: using ordered data mode
May 15 21:24:30 centera kernel: ReiserFS: sdc12: journal params: device sdc12, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:30 centera kernel: ReiserFS: sdc12: checking transaction log (sdc12)
May 15 21:24:30 centera kernel: ReiserFS: sdc12: Using r5 hash to sort names
May 15 21:24:30 centera kernel: ReiserFS: sda11: using ordered data mode
May 15 21:24:30 centera kernel: ReiserFS: sda11: journal params: device sda11, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:30 centera kernel: ReiserFS: sda11: checking transaction log (sda11)
May 15 21:24:30 centera kernel: ReiserFS: sda11: Using r5 hash to sort names
May 15 21:24:30 centera kernel: ReiserFS: sdb12: found reiserfs format "3.6" with standard journal
May 15 21:24:30 centera kernel: ReiserFS: sda12: found reiserfs format "3.6" with standard journal
May 15 21:24:30 centera kernel: ReiserFS: sdd12: found reiserfs format "3.6" with standard journal
May 15 21:24:30 centera kernel: ReiserFS: sdc13: found reiserfs format "3.6" with standard journal
May 15 21:24:32 centera kernel: ReiserFS: sdb12: using ordered data mode
May 15 21:24:32 centera kernel: ReiserFS: sdb12: journal params: device sdb12, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:32 centera kernel: ReiserFS: sdb12: checking transaction log (sdb12)
May 15 21:24:32 centera kernel: ReiserFS: sdb12: Using r5 hash to sort names
May 15 21:24:32 centera kernel: ReiserFS: sda12: using ordered data mode
May 15 21:24:32 centera kernel: ReiserFS: sda12: journal params: device sda12, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:32 centera kernel: ReiserFS: sda12: checking transaction log (sda12)
May 15 21:24:32 centera kernel: ReiserFS: sdd12: using ordered data mode
May 15 21:24:32 centera kernel: ReiserFS: sdd12: journal params: device sdd12, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:33 centera kernel: ReiserFS: sdd12: checking transaction log (sdd12)
May 15 21:24:33 centera kernel: ReiserFS: sda12: Using r5 hash to sort names
May 15 21:24:33 centera kernel: ReiserFS: sdd12: Using r5 hash to sort names
May 15 21:24:33 centera kernel: ReiserFS: sdc13: using ordered data mode
May 15 21:24:33 centera kernel: ReiserFS: sdc13: journal params: device sdc13, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:33 centera kernel: ReiserFS: sdc13: checking transaction log (sdc13)
May 15 21:24:33 centera kernel: ReiserFS: sdc13: Using r5 hash to sort names
May 15 21:24:33 centera kernel: ReiserFS: sdd13: found reiserfs format "3.6" with standard journal
May 15 21:24:33 centera kernel: ReiserFS: sda13: found reiserfs format "3.6" with standard journal
May 15 21:24:33 centera kernel: ReiserFS: sdc14: found reiserfs format "3.6" with standard journal
May 15 21:24:33 centera kernel: ReiserFS: sdb13: found reiserfs format "3.6" with standard journal
May 15 21:24:35 centera kernel: ReiserFS: sdc14: using ordered data mode
May 15 21:24:35 centera kernel: ReiserFS: sdc14: journal params: device sdc14, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:35 centera kernel: ReiserFS: sdc14: checking transaction log (sdc14)
May 15 21:24:36 centera kernel: ReiserFS: sdb13: using ordered data mode
May 15 21:24:36 centera kernel: ReiserFS: sdc14: Using r5 hash to sort names
May 15 21:24:36 centera kernel: ReiserFS: sdb13: journal params: device sdb13, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:36 centera kernel: ReiserFS: sdb13: checking transaction log (sdb13)
May 15 21:24:36 centera kernel: ReiserFS: sda13: using ordered data mode
May 15 21:24:36 centera kernel: ReiserFS: sdb13: Using r5 hash to sort names
May 15 21:24:36 centera kernel: ReiserFS: sda13: journal params: device sda13, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:36 centera kernel: ReiserFS: sda13: checking transaction log (sda13)
May 15 21:24:36 centera kernel: ReiserFS: sdd13: using ordered data mode
May 15 21:24:36 centera kernel: ReiserFS: sdd13: journal params: device sdd13, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:36 centera kernel: ReiserFS: sdd13: checking transaction log (sdd13)
May 15 21:24:36 centera kernel: ReiserFS: sda13: Using r5 hash to sort names
May 15 21:24:36 centera kernel: ReiserFS: sdd13: Using r5 hash to sort names
May 15 21:24:36 centera kernel: ReiserFS: sda14: found reiserfs format "3.6" with standard journal
May 15 21:24:36 centera kernel: ReiserFS: sdb14: found reiserfs format "3.6" with standard journal
May 15 21:24:36 centera kernel: ReiserFS: sdd14: found reiserfs format "3.6" with standard journal
May 15 21:24:38 centera kernel: ReiserFS: sdb14: using ordered data mode
May 15 21:24:38 centera kernel: ReiserFS: sdb14: journal params: device sdb14, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:38 centera kernel: ReiserFS: sdb14: checking transaction log (sdb14)
May 15 21:24:38 centera kernel: ReiserFS: sdd14: using ordered data mode
May 15 21:24:38 centera kernel: ReiserFS: sda14: using ordered data mode
May 15 21:24:38 centera kernel: ReiserFS: sdb14: Using r5 hash to sort names
May 15 21:24:38 centera kernel: ReiserFS: sda14: journal params: device sda14, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:38 centera kernel: ReiserFS: sda14: checking transaction log (sda14)
May 15 21:24:38 centera kernel: ReiserFS: sdd14: journal params: device sdd14, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 15 21:24:38 centera kernel: ReiserFS: sdd14: checking transaction log (sdd14)
May 15 21:24:38 centera kernel: ReiserFS: sda14: Using r5 hash to sort names
May 15 21:24:38 centera kernel: ReiserFS: sdd14: Using r5 hash to sort names
May 15 21:52:44 centera kernel: ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x800)
May 15 22:00:02 centera run-crons[26837]: logrotate returned 1
May 15 22:16:00 centera kernel: ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x4)
May 15 22:29:14 centera kernel: ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x7e007fff)
May 15 22:35:04 centera kernel: ata3: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x4fffffff)
May 15 23:00:01 centera run-crons[18123]: logrotate returned 1
May 16 00:00:01 centera run-crons[12217]: logrotate returned 1
May 16 01:00:01 centera run-crons[6356]: logrotate returned 1
May 16 02:00:02 centera run-crons[487]: logrotate returned 1
May 16 03:00:01 centera run-crons[27086]: logrotate returned 1
May 16 04:00:01 centera run-crons[21110]: logrotate returned 1
May 16 04:15:05 centera logrotate: ALERT exited abnormally with [1]
May 16 05:00:01 centera run-crons[15671]: logrotate returned 1
May 16 06:00:01 centera run-crons[9783]: logrotate returned 1
May 16 07:00:01 centera run-crons[3913]: logrotate returned 1
May 16 08:00:02 centera run-crons[30486]: logrotate returned 1
May 16 09:00:01 centera run-crons[24591]: logrotate returned 1
May 16 10:00:01 centera run-crons[18768]: logrotate returned 1
May 16 11:00:01 centera run-crons[12894]: logrotate returned 1
May 16 12:00:01 centera run-crons[6992]: logrotate returned 1

[-- Attachment #3: lspci.txt --]
[-- Type: text/plain, Size: 7225 bytes --]

0000:00:00.0 Host bridge: Intel Corporation E7220/E7221 Memory Controller Hub (rev 05)
	Subsystem: Intel Corporation E7220/E7221 Memory Controller Hub
	Flags: bus master, fast devsel, latency 0
	Capabilities: [e0] #09 [2109]

0000:00:01.0 PCI bridge: Intel Corporation E7220/E7221 PCI Express Root Port (rev 05) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=01, subordinate=03, sec-latency=0
	I/O behind bridge: 0000c000-0000dfff
	Memory behind bridge: d0000000-d02fffff
	Capabilities: [88] #0d [0000]
	Capabilities: [80] Power Management version 2
	Capabilities: [90] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-
	Capabilities: [a0] #10 [0141]

0000:00:02.0 VGA compatible controller: Intel Corporation E7221 Integrated Graphics Controller (rev 05) (prog-if 00 [VGA])
	Subsystem: Tyan Computer: Unknown device 5150
	Flags: bus master, fast devsel, latency 0, IRQ 12
	Memory at d0300000 (32-bit, non-prefetchable) [size=512K]
	I/O ports at e000 [size=8]
	Memory at c0000000 (32-bit, prefetchable) [size=256M]
	Memory at d0380000 (32-bit, non-prefetchable) [size=256K]
	Capabilities: [d0] Power Management version 2

0000:00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03) (prog-if 00 [UHCI])
	Subsystem: Tyan Computer: Unknown device 5150
	Flags: bus master, medium devsel, latency 0, IRQ 3
	I/O ports at e100 [size=32]

0000:00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 03) (prog-if 00 [UHCI])
	Subsystem: Tyan Computer: Unknown device 5150
	Flags: bus master, medium devsel, latency 0, IRQ 10
	I/O ports at e200 [size=32]

0000:00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 03) (prog-if 00 [UHCI])
	Subsystem: Tyan Computer: Unknown device 5150
	Flags: bus master, medium devsel, latency 0, IRQ 7
	I/O ports at e300 [size=32]

0000:00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 03) (prog-if 00 [UHCI])
	Subsystem: Tyan Computer: Unknown device 5150
	Flags: bus master, medium devsel, latency 0, IRQ 12
	I/O ports at e400 [size=32]

0000:00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03) (prog-if 20 [EHCI])
	Subsystem: Tyan Computer: Unknown device 5150
	Flags: bus master, medium devsel, latency 0, IRQ 3
	Memory at d03c0000 (32-bit, non-prefetchable) [size=1K]
	Capabilities: [50] Power Management version 2

0000:00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev d3) (prog-if 01 [Subtractive decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=04, subordinate=04, sec-latency=32
	Capabilities: [50] #0d [0000]

0000:00:1f.0 ISA bridge: Intel Corporation 82801FB/FR (ICH6/ICH6R) LPC Interface Bridge (rev 03)
	Subsystem: Intel Corporation 82801FB/FR (ICH6/ICH6R) LPC Interface Bridge
	Flags: bus master, medium devsel, latency 0

0000:00:1f.2 IDE interface: Intel Corporation 82801FR/FRW (ICH6R/ICH6RW) SATA Controller (rev 03) (prog-if 8f [Master SecP SecO PriP PriO])
	Subsystem: Tyan Computer: Unknown device 5150
	Flags: bus master, 66Mhz, medium devsel, latency 0, IRQ 17
	I/O ports at e900 [size=8]
	I/O ports at ea00 [size=4]
	I/O ports at eb00 [size=8]
	I/O ports at ec00 [size=4]
	I/O ports at ed00 [size=16]
	Memory at d03c3000 (32-bit, non-prefetchable) [size=1K]
	Capabilities: [70] Power Management version 2

0000:00:1f.3 SMBus: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (rev 03)
	Subsystem: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller
	Flags: medium devsel, IRQ 10
	I/O ports at 0500 [size=32]

0000:01:00.0 PCI bridge: Intel Corporation 6700PXH PCI Express-to-PCI Bridge A (rev 09) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=01, secondary=02, subordinate=02, sec-latency=64
	I/O behind bridge: 0000c000-0000cfff
	Memory behind bridge: d0000000-d00fffff
	Capabilities: [44] #10 [0071]
	Capabilities: [5c] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-
	Capabilities: [6c] Power Management version 2
	Capabilities: [d8] PCI-X bridge device.

0000:01:00.1 PIC: Intel Corporation 6700/6702PXH I/OxAPIC Interrupt Controller A (rev 09) (prog-if 20 [IO(X)-APIC])
	Flags: bus master, fast devsel, latency 0
	Memory at d0200000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [44] #10 [0001]
	Capabilities: [6c] Power Management version 2

0000:01:00.2 PCI bridge: Intel Corporation 6700PXH PCI Express-to-PCI Bridge B (rev 09) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=01, secondary=03, subordinate=03, sec-latency=64
	I/O behind bridge: 0000d000-0000dfff
	Memory behind bridge: d0100000-d01fffff
	Capabilities: [44] #10 [0071]
	Capabilities: [5c] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-
	Capabilities: [6c] Power Management version 2
	Capabilities: [d8] PCI-X bridge device.

0000:01:00.3 PIC: Intel Corporation 6700PXH I/OxAPIC Interrupt Controller B (rev 09) (prog-if 20 [IO(X)-APIC])
	Flags: bus master, fast devsel, latency 0
	Memory at d0201000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [44] #10 [0001]
	Capabilities: [6c] Power Management version 2

0000:02:06.0 Ethernet controller: Intel Corporation 82546GB Gigabit Ethernet Controller (rev 03)
	Subsystem: Intel Corporation PRO/1000 MT Dual Port Network Connection
	Flags: bus master, 66Mhz, medium devsel, latency 32, IRQ 17
	Memory at d0000000 (64-bit, non-prefetchable) [size=128K]
	I/O ports at c000 [size=64]
	Capabilities: [dc] Power Management version 2
	Capabilities: [e4] PCI-X non-bridge device.
	Capabilities: [f0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-

0000:02:06.1 Ethernet controller: Intel Corporation 82546GB Gigabit Ethernet Controller (rev 03)
	Subsystem: Intel Corporation: Unknown device 1179
	Flags: bus master, 66Mhz, medium devsel, latency 32, IRQ 18
	Memory at d0020000 (64-bit, non-prefetchable) [size=128K]
	I/O ports at c100 [size=64]
	Capabilities: [dc] Power Management version 2
	Capabilities: [e4] PCI-X non-bridge device.
	Capabilities: [f0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-

0000:03:07.0 Ethernet controller: Intel Corporation 82546GB Gigabit Ethernet Controller (rev 03)
	Subsystem: Intel Corporation PRO/1000 MT Dual Port Network Connection
	Flags: bus master, 66Mhz, medium devsel, latency 32, IRQ 19
	Memory at d0100000 (64-bit, non-prefetchable) [size=128K]
	I/O ports at d000 [size=64]
	Capabilities: [dc] Power Management version 2
	Capabilities: [e4] PCI-X non-bridge device.
	Capabilities: [f0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-

0000:03:07.1 Ethernet controller: Intel Corporation 82546GB Gigabit Ethernet Controller (rev 03)
	Subsystem: Intel Corporation PRO/1000 MT Dual Port Network Connection
	Flags: bus master, 66Mhz, medium devsel, latency 32, IRQ 16
	Memory at d0120000 (64-bit, non-prefetchable) [size=128K]
	I/O ports at d100 [size=64]
	Capabilities: [dc] Power Management version 2
	Capabilities: [e4] PCI-X non-bridge device.
	Capabilities: [f0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 11:36 ` Ric Wheeler
@ 2006-05-16 14:25   ` Jeff Garzik
  2006-05-16 15:24     ` Tejun Heo
  0 siblings, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-16 14:25 UTC (permalink / raw)
  To: Ric Wheeler; +Cc: linux-ide, Mark Lord, Jens Axboe, Tejun Heo

Ric Wheeler wrote:
> 
> Jeff Garzik wrote:
> 
>> TESTING:
>> * Although most drivers by count received few operational changes, the
>> common probe path was updated, so all drivers need fresh "yes, it sees
>> all my disks" regression testing.
>>
>> * ahci and sata_sil24 were touched a lot, and so need additional
>> testing.
>>
>> * sata_sil and ata_piix also need healthy re-testing of all basic
>> functionality.
>>
>>
>>  
>>
> I have been running a moderate write workload on this (built using 
> linux-2.6.17-rc4 with your patch applied on top).  Last night, I ran on 
> a set of clean AHCI based boxes (no bad drives) and got a serious of 
> occasional spurious interrupts logged:
> 
> 
> May 15 21:24:38 centera kernel: ReiserFS: sdd14: Using r5 hash to sort 
> names
> May 15 21:52:44 centera kernel: ata1: spurious interrupt (irq_stat 0x8 
> active_tag -84148995 sactive 0x800)
> May 15 22:00:02 centera run-crons[26837]: logrotate returned 1
> May 15 22:16:00 centera kernel: ata1: spurious interrupt (irq_stat 0x8 
> active_tag -84148995 sactive 0x4)
> May 15 22:29:14 centera kernel: ata1: spurious interrupt (irq_stat 0x8 
> active_tag -84148995 sactive 0x7e007fff)
> May 15 22:35:04 centera kernel: ata3: spurious interrupt (irq_stat 0x8 
> active_tag -84148995 sactive 0x4fffffff)
> 
> Full messages file and lspci below, but note that this hardware has been 
> running ahci with this config in production for over a year now.

Definitely new behavior.  In each case you have irq_stat == 0x8, which 
indicates a Set Device Bits FIS has been received.

	Jeff



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16  4:33         ` Avuton Olrich
@ 2006-05-16 14:57           ` Linus Torvalds
  2006-05-17 15:25             ` OGAWA Hirofumi
  2006-05-16 15:02           ` Jeff Garzik
  1 sibling, 1 reply; 113+ messages in thread
From: Linus Torvalds @ 2006-05-16 14:57 UTC (permalink / raw)
  To: Avuton Olrich; +Cc: Jeff Garzik, linux-ide, linux-kernel, akpm



On Mon, 15 May 2006, Avuton Olrich wrote:
> On 5/15/06, Jeff Garzik <jeff@garzik.org> wrote:
>
> > Can you configure your interrupts so that ethernet and SATA are not on
> > the same irq?
> 
> Sorry, need a little hand holding here. I'm unsure how to do such a
> thing, and can't really google that.

Before you do that, try this patch (that I suggested to Neil Brown in a 
totally unrelated thread) just for fun.

		Linus

----
diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c
index 06dab00..49b9fea 100644
--- a/arch/i386/pci/irq.c
+++ b/arch/i386/pci/irq.c
@@ -880,6 +880,7 @@ static int pcibios_lookup_irq(struct pci
 	((!(pci_probe & PCI_USE_PIRQ_MASK)) || ((1 << irq) & mask)) ) {
 		DBG(" -> got IRQ %d\n", irq);
 		msg = "Found";
+		eisa_set_level_irq(irq);
 	} else if (newirq && r->set && (dev->class >> 8) != PCI_CLASS_DISPLAY_VGA) {
 		DBG(" -> assigning IRQ %d", newirq);
 		if (r->set(pirq_router_dev, dev, pirq, newirq)) {

^ permalink raw reply related	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16  4:33         ` Avuton Olrich
  2006-05-16 14:57           ` Linus Torvalds
@ 2006-05-16 15:02           ` Jeff Garzik
  1 sibling, 0 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-16 15:02 UTC (permalink / raw)
  To: Avuton Olrich; +Cc: linux-ide, linux-kernel, akpm, torvalds

Avuton Olrich wrote:
> On 5/15/06, Jeff Garzik <jeff@garzik.org> wrote:
> 
> 
>> Can you configure your interrupts so that ethernet and SATA are not on
>> the same irq?
> 
> Sorry, need a little hand holding here. I'm unsure how to do such a
> thing, and can't really google that.

It will be in your BIOS setup somewhere.  Hopefully.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 14:25   ` Jeff Garzik
@ 2006-05-16 15:24     ` Tejun Heo
  2006-05-16 18:29       ` Ric Wheeler
  2006-05-16 23:34       ` Jeff Garzik
  0 siblings, 2 replies; 113+ messages in thread
From: Tejun Heo @ 2006-05-16 15:24 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Ric Wheeler, linux-ide, Mark Lord, Jens Axboe

[-- Attachment #1: Type: text/plain, Size: 2844 bytes --]

Jeff Garzik wrote:
> Ric Wheeler wrote:
>>
>> Jeff Garzik wrote:
>>
>>> TESTING:
>>> * Although most drivers by count received few operational changes, the
>>> common probe path was updated, so all drivers need fresh "yes, it sees
>>> all my disks" regression testing.
>>>
>>> * ahci and sata_sil24 were touched a lot, and so need additional
>>> testing.
>>>
>>> * sata_sil and ata_piix also need healthy re-testing of all basic
>>> functionality.
>>>
>>>
>>>  
>>>
>> I have been running a moderate write workload on this (built using 
>> linux-2.6.17-rc4 with your patch applied on top).  Last night, I ran 
>> on a set of clean AHCI based boxes (no bad drives) and got a serious 
>> of occasional spurious interrupts logged:
>>
>>
>> May 15 21:24:38 centera kernel: ReiserFS: sdd14: Using r5 hash to sort 
>> names
>> May 15 21:52:44 centera kernel: ata1: spurious interrupt (irq_stat 0x8 
>> active_tag -84148995 sactive 0x800)
>> May 15 22:00:02 centera run-crons[26837]: logrotate returned 1
>> May 15 22:16:00 centera kernel: ata1: spurious interrupt (irq_stat 0x8 
>> active_tag -84148995 sactive 0x4)
>> May 15 22:29:14 centera kernel: ata1: spurious interrupt (irq_stat 0x8 
>> active_tag -84148995 sactive 0x7e007fff)
>> May 15 22:35:04 centera kernel: ata3: spurious interrupt (irq_stat 0x8 
>> active_tag -84148995 sactive 0x4fffffff)
>>
>> Full messages file and lspci below, but note that this hardware has 
>> been running ahci with this config in production for over a year now.
> 
> Definitely new behavior.  In each case you have irq_stat == 0x8, which 
> indicates a Set Device Bits FIS has been received.
> 

Yeap, new behavior.  Though, one thing to note is that the original 
ahci_host_intr() never bothered to report spurious interrupt.  It always 
returned 1 telling ahci_interrupt() that the interrupt is handled.  But 
as this is SDB instead of D2H, my guess is that the drive is sending 
spurious NCQ completions with no new command completed.

Hmm.. Can you try the attached patch and report what the kernel says?

The message reminds me of several things...

* can we make tags int and use -1 for invalid tag?  ATA_TAG_POISON looks 
horrible when printed.

* it would be nice to have some framework to determine whether the 
controller is receiving too many consecutive spurious interrupts.  Say, 
32 irqs in a row without intervening valid interrupts is a good reason 
to be suspicious about stuck IRQ.  Freezing & resetting will resolve the 
situation in most cases.

* With NCQ, some drives generate spurious D2H FISes with I bit set as if 
it were executing non-NCQ commands.  So, regardless of controller, we're 
likely to see similar problems (but sil24 does all the protocol handling 
and ignores such FISes by itself).  This can be combined with the above 
freeze on too many spurious, I guess.

-- 
tejun

[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 772 bytes --]

diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c
index 45fd71d..506f0df 100644
--- a/drivers/scsi/ahci.c
+++ b/drivers/scsi/ahci.c
@@ -916,10 +916,19 @@ static void ahci_host_intr(struct ata_po
 			return;
 	}
 
-	if (ata_ratelimit())
+	if (ata_ratelimit()) {
 		ata_port_printk(ap, KERN_INFO, "spurious interrupt "
 				"(irq_stat 0x%x active_tag %d sactive 0x%x)\n",
 				status, ap->active_tag, ap->sactive);
+		if (status & PORT_IRQ_SDB_FIS) {
+			struct ahci_port_priv *pp = ap->private_data;
+			u32 *sdb_fis = pp->rx_fis + 0x58;
+
+			ata_port_printk(ap, KERN_INFO, "spurious SDB FIS "
+				"%08x:%08x ap->qc_active=%08x qc_active=%08x\n",
+				sdb_fis[0], sdb_fis[1], ap->qc_active, qc_active);
+		}
+	}
 }
 
 static void ahci_irq_clear(struct ata_port *ap)

^ permalink raw reply related	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 15:24     ` Tejun Heo
@ 2006-05-16 18:29       ` Ric Wheeler
  2006-05-16 21:41         ` Ric Wheeler
  2006-05-16 23:44         ` Tejun Heo
  2006-05-16 23:34       ` Jeff Garzik
  1 sibling, 2 replies; 113+ messages in thread
From: Ric Wheeler @ 2006-05-16 18:29 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jeff Garzik, linux-ide, Mark Lord, Jens Axboe

[-- Attachment #1: Type: text/plain, Size: 3148 bytes --]

Tejun Heo wrote:

> J
>
>>
>> Definitely new behavior.  In each case you have irq_stat == 0x8, 
>> which indicates a Set Device Bits FIS has been received.
>>
>
> Yeap, new behavior.  Though, one thing to note is that the original 
> ahci_host_intr() never bothered to report spurious interrupt.  It 
> always returned 1 telling ahci_interrupt() that the interrupt is 
> handled.  But as this is SDB instead of D2H, my guess is that the 
> drive is sending spurious NCQ completions with no new command completed.
>
> Hmm.. Can you try the attached patch and report what the kernel says?
>
> The message reminds me of several things...
>
> * can we make tags int and use -1 for invalid tag?  ATA_TAG_POISON 
> looks horrible when printed.
>
> * it would be nice to have some framework to determine whether the 
> controller is receiving too many consecutive spurious interrupts.  
> Say, 32 irqs in a row without intervening valid interrupts is a good 
> reason to be suspicious about stuck IRQ.  Freezing & resetting will 
> resolve the situation in most cases.
>
> * With NCQ, some drives generate spurious D2H FISes with I bit set as 
> if it were executing non-NCQ commands.  So, regardless of controller, 
> we're likely to see similar problems (but sil24 does all the protocol 
> handling and ignores such FISes by itself).  This can be combined with 
> the above freeze on too many spurious, I guess.

Here is the result of running with your patch applied (on a set of nodes):

c001n01: 0: [  OK  ]
ata3: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
0x2000000f)
ata3: spurious SDB FIS 004040a1:10000000 ap->qc_active=2000000f 
qc_active=2000000f
ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0xfffc0)
ata1: spurious SDB FIS 004040a1:00000020 ap->qc_active=000fffc0 
qc_active=000fffc0
ata2: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
0x7fffff3f)
ata2: spurious SDB FIS 004040a1:00000080 ap->qc_active=7fffff3f 
qc_active=7fffff3f
ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
0x7fffff9f)
ata1: spurious SDB FIS 004040a1:00000040 ap->qc_active=7fffff9f 
qc_active=7fffff9f
c001n03: 0: [  OK  ]
ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
0x7ffe7fff)
ata1: spurious SDB FIS 004040a1:00010000 ap->qc_active=7ffe7fff 
qc_active=7ffe7fff
c001n04: 0: [  OK  ]
ata3: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x31)
ata3: spurious SDB FIS 004040a1:00000008 ap->qc_active=00000031 
qc_active=00000031
ata3: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
0x7fff800f)
ata3: spurious SDB FIS 004040a1:00004000 ap->qc_active=7fff800f 
qc_active=7fff800f
c001n06: 1: [ FAIL ]
c001n07: 0: [  OK  ]
ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
0x7ffffcff)
ata1: spurious SDB FIS 004040a1:00000200 ap->qc_active=7ffffcff 
qc_active=7ffffcff
c001n08: 0: [  OK  ]
ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
0x4fffffff)
ata1: spurious SDB FIS 004040a1:20000000 ap->qc_active=4fffffff 
qc_active=4fffffff


Attached is one (pretty uninteresting) whole log,

ric








[-- Attachment #2: messages --]
[-- Type: text/plain, Size: 14818 bytes --]

May 16 16:27:10 centera exiting on signal 15
May 16 16:28:55 centera syslogd 1.4.1: restart.
May 16 16:28:55 centera xinetd[5605]: xinetd Version 2.3.13 started with libwrap loadavg options compiled in.
May 16 16:28:55 centera xinetd[5605]: Started working: 1 available service
May 16 16:29:00 centera kernel: klogd 1.4.1, log source = /proc/kmsg started.
May 16 16:29:00 centera kernel: 
May 16 16:29:00 centera kernel: program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO
May 16 16:29:00 centera last message repeated 47 times
May 16 16:29:00 centera kernel: ReiserFS: sdb9: found reiserfs format "3.6" with standard journal
May 16 16:29:00 centera kernel: ReiserFS: sdb9: using journaled data mode
May 16 16:29:00 centera kernel: ReiserFS: sdb9: journal params: device sdb9, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:29:00 centera kernel: ReiserFS: sdb9: checking transaction log (sdb9)
May 16 16:29:00 centera kernel: ReiserFS: sdb9: Using r5 hash to sort names
May 16 16:29:00 centera kernel: ReiserFS: sdd9: found reiserfs format "3.6" with standard journal
May 16 16:29:00 centera kernel: ReiserFS: sdd9: using journaled data mode
May 16 16:29:00 centera kernel: ReiserFS: sdd9: journal params: device sdd9, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:29:00 centera kernel: ReiserFS: sdd9: checking transaction log (sdd9)
May 16 16:29:00 centera kernel: ReiserFS: sdd9: Using r5 hash to sort names
May 16 16:29:00 centera kernel: Adding 1004052k swap on /dev/cstardm9.  Priority:1 extents:1 across:1004052k
May 16 16:29:00 centera kernel: Adding 1004052k swap on /dev/cstardo9.  Priority:1 extents:1 across:1004052k
May 16 16:29:00 centera kernel: e1000: eth2: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex
May 16 16:29:00 centera kernel: e1000: eth2: e1000_set_tso: TSO is Enabled
May 16 16:29:00 centera kernel: microcode: CPU0 updated from revision 0x9 to 0x12, date = 11222004 
May 16 16:29:00 centera kernel: e1000: eth2: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex
May 16 16:29:00 centera kernel: e1000: eth0: e1000_set_tso: TSO is Enabled
May 16 16:29:01 centera kernel: e1000: eth0: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex
May 16 16:29:08 centera kernel: e1000: eth1: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex
May 16 16:29:08 centera kernel: NET: Registered protocol family 17
May 16 16:29:11 centera kernel: device eth0 entered promiscuous mode
May 16 16:29:16 centera kernel: device eth0 left promiscuous mode
May 16 16:29:16 centera kernel: e1000: eth1: e1000_set_tso: TSO is Enabled
May 16 16:29:19 centera kernel: e1000: eth1: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex
May 16 16:29:30 centera ntpd[5859]: ntpd 4.1.1@1.786 Sat Sep 27 05:48:59 UTC 2003 (1)
May 16 16:29:30 centera ntpd[5859]: precision = 8 usec
May 16 16:29:30 centera ntpd[5859]: kernel time discipline status 0040
May 16 16:29:30 centera ntpd[5859]: Can't open /var/lib/ntp/var/run/ntp/ntpd.pid: No such file or directory
May 16 16:29:30 centera ntpd[5859]: frequency initialized 2.597 from /etc/ntp/drift
May 16 16:30:01 centera kernel: program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO
May 16 16:30:01 centera last message repeated 47 times
May 16 16:30:01 centera kernel: ReiserFS: sdb10: found reiserfs format "3.6" with standard journal
May 16 16:30:01 centera kernel: ReiserFS: sdc10: found reiserfs format "3.6" with standard journal
May 16 16:30:01 centera kernel: ReiserFS: sdd10: found reiserfs format "3.6" with standard journal
May 16 16:30:01 centera kernel: ReiserFS: sda10: found reiserfs format "3.6" with standard journal
May 16 16:30:03 centera kernel: ReiserFS: sdd10: using ordered data mode
May 16 16:30:03 centera kernel: ReiserFS: sdd10: journal params: device sdd10, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:03 centera kernel: ReiserFS: sdd10: checking transaction log (sdd10)
May 16 16:30:03 centera kernel: ReiserFS: sdd10: Using r5 hash to sort names
May 16 16:30:03 centera kernel: ReiserFS: sda10: using ordered data mode
May 16 16:30:04 centera kernel: ReiserFS: sda10: journal params: device sda10, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:04 centera kernel: ReiserFS: sda10: checking transaction log (sda10)
May 16 16:30:04 centera kernel: ReiserFS: sda10: Using r5 hash to sort names
May 16 16:30:04 centera kernel: ReiserFS: sdb10: using ordered data mode
May 16 16:30:04 centera kernel: ReiserFS: sdb10: journal params: device sdb10, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:04 centera kernel: ReiserFS: sdb10: checking transaction log (sdb10)
May 16 16:30:04 centera kernel: ReiserFS: sdb10: Using r5 hash to sort names
May 16 16:30:04 centera kernel: ReiserFS: sdc10: using ordered data mode
May 16 16:30:04 centera kernel: ReiserFS: sdc10: journal params: device sdc10, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:04 centera kernel: ReiserFS: sdc10: checking transaction log (sdc10)
May 16 16:30:04 centera kernel: ReiserFS: sdc10: Using r5 hash to sort names
May 16 16:30:04 centera kernel: ReiserFS: sda11: found reiserfs format "3.6" with standard journal
May 16 16:30:04 centera kernel: ReiserFS: sdb11: found reiserfs format "3.6" with standard journal
May 16 16:30:04 centera kernel: ReiserFS: sdc11: found reiserfs format "3.6" with standard journal
May 16 16:30:04 centera kernel: ReiserFS: sdd11: found reiserfs format "3.6" with standard journal
May 16 16:30:06 centera kernel: ReiserFS: sda11: using ordered data mode
May 16 16:30:06 centera kernel: ReiserFS: sda11: journal params: device sda11, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:06 centera kernel: ReiserFS: sda11: checking transaction log (sda11)
May 16 16:30:06 centera kernel: ReiserFS: sdc11: using ordered data mode
May 16 16:30:06 centera kernel: ReiserFS: sda11: Using r5 hash to sort names
May 16 16:30:06 centera kernel: ReiserFS: sdc11: journal params: device sdc11, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:06 centera kernel: ReiserFS: sdc11: checking transaction log (sdc11)
May 16 16:30:06 centera kernel: ReiserFS: sdb11: using ordered data mode
May 16 16:30:06 centera kernel: ReiserFS: sdc11: Using r5 hash to sort names
May 16 16:30:06 centera kernel: ReiserFS: sdb11: journal params: device sdb11, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:06 centera kernel: ReiserFS: sdb11: checking transaction log (sdb11)
May 16 16:30:06 centera kernel: ReiserFS: sdb11: Using r5 hash to sort names
May 16 16:30:06 centera kernel: ReiserFS: sdd11: using ordered data mode
May 16 16:30:06 centera kernel: ReiserFS: sdd11: journal params: device sdd11, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:06 centera kernel: ReiserFS: sdd11: checking transaction log (sdd11)
May 16 16:30:07 centera kernel: ReiserFS: sdc12: found reiserfs format "3.6" with standard journal
May 16 16:30:07 centera kernel: ReiserFS: sdb12: found reiserfs format "3.6" with standard journal
May 16 16:30:07 centera kernel: ReiserFS: sda12: found reiserfs format "3.6" with standard journal
May 16 16:30:07 centera kernel: ReiserFS: sdd11: Using r5 hash to sort names
May 16 16:30:09 centera kernel: ReiserFS: sda12: using ordered data mode
May 16 16:30:09 centera kernel: ReiserFS: sda12: journal params: device sda12, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:09 centera kernel: ReiserFS: sda12: checking transaction log (sda12)
May 16 16:30:09 centera kernel: ReiserFS: sda12: Using r5 hash to sort names
May 16 16:30:09 centera kernel: ReiserFS: sdb12: using ordered data mode
May 16 16:30:09 centera kernel: ReiserFS: sdb12: journal params: device sdb12, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:09 centera kernel: ReiserFS: sdb12: checking transaction log (sdb12)
May 16 16:30:09 centera kernel: ReiserFS: sdc12: using ordered data mode
May 16 16:30:09 centera kernel: ReiserFS: sdc12: journal params: device sdc12, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:09 centera kernel: ReiserFS: sdc12: checking transaction log (sdc12)
May 16 16:30:09 centera kernel: ReiserFS: sdb12: Using r5 hash to sort names
May 16 16:30:09 centera kernel: ReiserFS: sdc12: Using r5 hash to sort names
May 16 16:30:09 centera kernel: ReiserFS: sdd12: found reiserfs format "3.6" with standard journal
May 16 16:30:09 centera kernel: ReiserFS: sda13: found reiserfs format "3.6" with standard journal
May 16 16:30:09 centera kernel: ReiserFS: sdc13: found reiserfs format "3.6" with standard journal
May 16 16:30:09 centera kernel: ReiserFS: sdb13: found reiserfs format "3.6" with standard journal
May 16 16:30:11 centera kernel: ReiserFS: sdd12: using ordered data mode
May 16 16:30:11 centera kernel: ReiserFS: sdd12: journal params: device sdd12, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:11 centera kernel: ReiserFS: sdd12: checking transaction log (sdd12)
May 16 16:30:11 centera kernel: ReiserFS: sdd12: Using r5 hash to sort names
May 16 16:30:11 centera kernel: ReiserFS: sdb13: using ordered data mode
May 16 16:30:12 centera kernel: ReiserFS: sdb13: journal params: device sdb13, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:12 centera kernel: ReiserFS: sdb13: checking transaction log (sdb13)
May 16 16:30:12 centera kernel: ReiserFS: sdb13: Using r5 hash to sort names
May 16 16:30:12 centera kernel: ReiserFS: sda13: using ordered data mode
May 16 16:30:12 centera kernel: ReiserFS: sda13: journal params: device sda13, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:12 centera kernel: ReiserFS: sda13: checking transaction log (sda13)
May 16 16:30:12 centera kernel: ReiserFS: sda13: Using r5 hash to sort names
May 16 16:30:12 centera kernel: ReiserFS: sdc13: using ordered data mode
May 16 16:30:12 centera kernel: ReiserFS: sdc13: journal params: device sdc13, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:12 centera kernel: ReiserFS: sdc13: checking transaction log (sdc13)
May 16 16:30:12 centera kernel: ReiserFS: sdc13: Using r5 hash to sort names
May 16 16:30:12 centera kernel: ReiserFS: sdd13: found reiserfs format "3.6" with standard journal
May 16 16:30:12 centera kernel: ReiserFS: sdb14: found reiserfs format "3.6" with standard journal
May 16 16:30:12 centera kernel: ReiserFS: sda14: found reiserfs format "3.6" with standard journal
May 16 16:30:12 centera kernel: ReiserFS: sdc14: found reiserfs format "3.6" with standard journal
May 16 16:30:15 centera kernel: ReiserFS: sdb14: using ordered data mode
May 16 16:30:15 centera kernel: ReiserFS: sdd13: using ordered data mode
May 16 16:30:15 centera kernel: ReiserFS: sdd13: journal params: device sdd13, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:15 centera kernel: ReiserFS: sdd13: checking transaction log (sdd13)
May 16 16:30:15 centera kernel: ReiserFS: sdb14: journal params: device sdb14, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:15 centera kernel: ReiserFS: sdb14: checking transaction log (sdb14)
May 16 16:30:15 centera kernel: ReiserFS: sdd13: Using r5 hash to sort names
May 16 16:30:15 centera kernel: ReiserFS: sdb14: Using r5 hash to sort names
May 16 16:30:15 centera kernel: ReiserFS: sda14: using ordered data mode
May 16 16:30:15 centera kernel: ReiserFS: sda14: journal params: device sda14, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:15 centera kernel: ReiserFS: sda14: checking transaction log (sda14)
May 16 16:30:15 centera kernel: ReiserFS: sda14: Using r5 hash to sort names
May 16 16:30:15 centera kernel: ReiserFS: sdc14: using ordered data mode
May 16 16:30:15 centera kernel: ReiserFS: sdc14: journal params: device sdc14, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:15 centera kernel: ReiserFS: sdc14: checking transaction log (sdc14)
May 16 16:30:15 centera kernel: ReiserFS: sdc14: Using r5 hash to sort names
May 16 16:30:15 centera kernel: ReiserFS: sdd14: found reiserfs format "3.6" with standard journal
May 16 16:30:17 centera kernel: ReiserFS: sdd14: using ordered data mode
May 16 16:30:17 centera kernel: ReiserFS: sdd14: journal params: device sdd14, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
May 16 16:30:17 centera kernel: ReiserFS: sdd14: checking transaction log (sdd14)
May 16 16:30:17 centera kernel: ReiserFS: sdd14: Using r5 hash to sort names
May 16 17:00:02 centera run-crons[19634]: logrotate returned 1
May 16 17:16:57 centera kernel: ata3: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x2000000f)
May 16 17:16:57 centera kernel: ata3: spurious SDB FIS 004040a1:10000000 ap->qc_active=2000000f qc_active=2000000f
May 16 17:21:36 centera kernel: ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0xfffc0)
May 16 17:21:36 centera kernel: ata1: spurious SDB FIS 004040a1:00000020 ap->qc_active=000fffc0 qc_active=000fffc0
May 16 17:38:45 centera kernel: ata2: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x7fffff3f)
May 16 17:38:45 centera kernel: ata2: spurious SDB FIS 004040a1:00000080 ap->qc_active=7fffff3f qc_active=7fffff3f
May 16 17:59:52 centera kernel: ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x7fffff9f)
May 16 17:59:52 centera kernel: ata1: spurious SDB FIS 004040a1:00000040 ap->qc_active=7fffff9f qc_active=7fffff9f
May 16 18:00:04 centera run-crons[10734]: logrotate returned 1
May 16 19:00:02 centera run-crons[5306]: logrotate returned 1

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 18:29       ` Ric Wheeler
@ 2006-05-16 21:41         ` Ric Wheeler
  2006-05-16 22:02           ` Jeff Garzik
  2006-05-16 23:44         ` Tejun Heo
  1 sibling, 1 reply; 113+ messages in thread
From: Ric Wheeler @ 2006-05-16 21:41 UTC (permalink / raw)
  To: ric; +Cc: Tejun Heo, Jeff Garzik, linux-ide, Mark Lord, Jens Axboe


One other note, it seems like this patch set has broken the write 
barrier support - is that a side effect of enabling NCQ still?

I see messages that claim flush barriers are enabled:

[root@c001n01 root]# mount -o 
barrier=flush,rw,noatime,nodiratime,data=ordered,notail /dev/sda10 /mnt/1
May 16 22:21:56 centera kernel: ReiserFS: sda10: found reiserfs format 
"3.6" with standard journal
[root@c001n01 root]# May 16 22:21:58 centera kernel: ReiserFS: sda10: 
using ordered data mode
May 16 22:21:58 centera kernel: reiserfs: using flush barriers
May 16 22:21:58 centera kernel: ReiserFS: sda10: journal params: device 
sda10, size 8192, journal first block 18, max trans len 1024, max batch 
900, max commit age 30, max trans age 30
May 16 22:21:58 centera kernel: ReiserFS: sda10: checking transaction 
log (sda10)
May 16 22:21:58 centera kernel: ReiserFS: sda10: Using r5 hash to sort names

But when I test with my synchronous write load, I am going at 6 times 
the normal rate (i.e., the rate I see with barriers disabled) ;-)

ric



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 21:41         ` Ric Wheeler
@ 2006-05-16 22:02           ` Jeff Garzik
  2006-05-16 23:11             ` Eric D. Mudama
  2006-05-16 23:23             ` Tejun Heo
  0 siblings, 2 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-16 22:02 UTC (permalink / raw)
  To: ric; +Cc: Tejun Heo, linux-ide, Mark Lord, Jens Axboe

Ric Wheeler wrote:
> 
> One other note, it seems like this patch set has broken the write 
> barrier support - is that a side effect of enabling NCQ still?
> 
> I see messages that claim flush barriers are enabled:
> 
> [root@c001n01 root]# mount -o 
> barrier=flush,rw,noatime,nodiratime,data=ordered,notail /dev/sda10 /mnt/1
> May 16 22:21:56 centera kernel: ReiserFS: sda10: found reiserfs format 
> "3.6" with standard journal
> [root@c001n01 root]# May 16 22:21:58 centera kernel: ReiserFS: sda10: 
> using ordered data mode
> May 16 22:21:58 centera kernel: reiserfs: using flush barriers
> May 16 22:21:58 centera kernel: ReiserFS: sda10: journal params: device 
> sda10, size 8192, journal first block 18, max trans len 1024, max batch 
> 900, max commit age 30, max trans age 30
> May 16 22:21:58 centera kernel: ReiserFS: sda10: checking transaction 
> log (sda10)
> May 16 22:21:58 centera kernel: ReiserFS: sda10: Using r5 hash to sort 
> names
> 
> But when I test with my synchronous write load, I am going at 6 times 
> the normal rate (i.e., the rate I see with barriers disabled) ;-)

Well, NCQ read/write commands have a 'FUA' bit...  though maybe the NCQ 
code forgot to check the global libata_fua.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 22:02           ` Jeff Garzik
@ 2006-05-16 23:11             ` Eric D. Mudama
  2006-05-17  2:13               ` Ric Wheeler
  2006-05-16 23:23             ` Tejun Heo
  1 sibling, 1 reply; 113+ messages in thread
From: Eric D. Mudama @ 2006-05-16 23:11 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: ric, Tejun Heo, linux-ide, Mark Lord, Jens Axboe

On 5/16/06, Jeff Garzik <jeff@garzik.org> wrote:
> Ric Wheeler wrote:
> > But when I test with my synchronous write load, I am going at 6 times
> > the normal rate (i.e., the rate I see with barriers disabled) ;-)
>
> Well, NCQ read/write commands have a 'FUA' bit...  though maybe the NCQ
> code forgot to check the global libata_fua.
>
>         Jeff

Is the workload a sequential write?  SATA drives should be able to
keep up with the media if they use FUA for their consistency when
using NCQ.

Flush cache as a barrier mechanism will blow revs in sequential
workloads, especially using a write/flush write/flush technique.

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 22:02           ` Jeff Garzik
  2006-05-16 23:11             ` Eric D. Mudama
@ 2006-05-16 23:23             ` Tejun Heo
  2006-05-17  2:09               ` Ric Wheeler
  1 sibling, 1 reply; 113+ messages in thread
From: Tejun Heo @ 2006-05-16 23:23 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: ric, linux-ide, Mark Lord, Jens Axboe

[-- Attachment #1: Type: text/plain, Size: 2072 bytes --]

Jeff Garzik wrote:
> Ric Wheeler wrote:
>>
>> One other note, it seems like this patch set has broken the write 
>> barrier support - is that a side effect of enabling NCQ still?
>>
>> I see messages that claim flush barriers are enabled:
>>
>> [root@c001n01 root]# mount -o 
>> barrier=flush,rw,noatime,nodiratime,data=ordered,notail /dev/sda10 /mnt/1
>> May 16 22:21:56 centera kernel: ReiserFS: sda10: found reiserfs format 
>> "3.6" with standard journal
>> [root@c001n01 root]# May 16 22:21:58 centera kernel: ReiserFS: sda10: 
>> using ordered data mode
>> May 16 22:21:58 centera kernel: reiserfs: using flush barriers
>> May 16 22:21:58 centera kernel: ReiserFS: sda10: journal params: 
>> device sda10, size 8192, journal first block 18, max trans len 1024, 
>> max batch 900, max commit age 30, max trans age 30
>> May 16 22:21:58 centera kernel: ReiserFS: sda10: checking transaction 
>> log (sda10)
>> May 16 22:21:58 centera kernel: ReiserFS: sda10: Using r5 hash to sort 
>> names
>>
>> But when I test with my synchronous write load, I am going at 6 times 
>> the normal rate (i.e., the rate I see with barriers disabled) ;-)
> 
> Well, NCQ read/write commands have a 'FUA' bit...  though maybe the NCQ 
> code forgot to check the global libata_fua.
> 

Hmmm.. The only place FUA is checked is ata_dev_supports_fua() 
regardless of NCQ, but I've seen FUA enabled with NCQ in another bug 
report, so I might have screwed up.  Ric, can you post the boot dmesg 
such that we know whether FUA is enabled or not?

I'm attaching a patch to print the progress of ordered sequence.  I've 
just tested with a NCQ drive loaded with 20 IO requests and it works. 
All requests are drained, preflush, barrier, then postflush.  Running 
the same test with the attached patch will tell us how barrier is working.

@ I can't believe this.  Last night two disks failed - one testing, one 
production.  Man, my harddrives are falling like flies.  Four test 
drives and one production drive failed during last two months.  Maybe 
they are striking back at me.  :-(

-- 
tejun

[-- Attachment #2: ordered_debug.patch --]
[-- Type: text/x-patch, Size: 3643 bytes --]

diff --git a/block/elevator.c b/block/elevator.c
index 8768a36..5cbd2b3 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -40,6 +40,8 @@ #include <asm/uaccess.h>
 static DEFINE_SPINLOCK(elv_list_lock);
 static LIST_HEAD(elv_list);
 
+#define pd(fmt, args...) 	printk("[%-24s]: " fmt, __FUNCTION__ , ##args);
+
 /*
  * can we safely merge with this request?
  */
@@ -548,6 +550,11 @@ struct request *elv_next_request(request
 		}
 	}
 
+	if (rq && (rq == &q->pre_flush_rq || rq == &q->post_flush_rq ||
+		   rq == &q->bar_rq))
+		pd("%p (%s)\n", rq,
+		   rq == &q->pre_flush_rq ?
+			"pre" : (rq == &q->post_flush_rq ? "post" : "bar"));
 	return rq;
 }
 
diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c
index eac48be..eb1325c 100644
--- a/block/ll_rw_blk.c
+++ b/block/ll_rw_blk.c
@@ -30,6 +30,8 @@ #include <linux/interrupt.h>
 #include <linux/cpu.h>
 #include <linux/blktrace_api.h>
 
+#define pd(fmt, args...) 	printk("[%-24s]: " fmt, __FUNCTION__ , ##args);
+
 /*
  * for max sense size
  */
@@ -395,6 +397,9 @@ void blk_ordered_complete_seq(request_qu
 	struct request *rq;
 	int uptodate;
 
+	pd("ordseq=%02x seq=%02x orderr=%d error=%d\n",
+	   q->ordseq, seq, q->orderr, error);
+
 	if (error && !q->orderr)
 		q->orderr = error;
 
@@ -407,6 +412,7 @@ void blk_ordered_complete_seq(request_qu
 	/*
 	 * Okay, sequence complete.
 	 */
+	pd("sequence complete\n");
 	rq = q->orig_bar_rq;
 	uptodate = q->orderr ? q->orderr : 1;
 
@@ -461,6 +467,17 @@ static void queue_flush(request_queue_t 
 static inline struct request *start_ordered(request_queue_t *q,
 					    struct request *rq)
 {
+	struct bio *bio;
+	pd("%p -> %p,%p,%p infl=%u\n",
+	   rq, &q->pre_flush_rq, &q->bar_rq, &q->post_flush_rq, q->in_flight);
+	pd("%p %d %llu %lu %u %u %u %p\n", rq->bio, rq->errors,
+	   (unsigned long long)rq->hard_sector, rq->hard_nr_sectors,
+	   rq->current_nr_sectors, rq->nr_phys_segments, rq->nr_hw_segments,
+	   rq->buffer);
+	for (bio = rq->bio; bio; bio = bio->bi_next)
+		pd("BIO %p %llu %u\n",
+		   bio, (unsigned long long)bio->bi_sector, bio->bi_size);
+
 	q->bi_size = 0;
 	q->orderr = 0;
 	q->ordered = q->next_ordered;
@@ -499,6 +516,7 @@ static inline struct request *start_orde
 	} else
 		q->ordseq |= QUEUE_ORDSEQ_PREFLUSH;
 
+	pd("ordered=%x in_flight=%u\n", q->ordered, q->in_flight);
 	if ((q->ordered & QUEUE_ORDERED_TAG) || q->in_flight == 0)
 		q->ordseq |= QUEUE_ORDSEQ_DRAIN;
 	else
@@ -518,8 +536,10 @@ int blk_do_ordered(request_queue_t *q, s
 
 		if (q->next_ordered != QUEUE_ORDERED_NONE) {
 			*rqp = start_ordered(q, rq);
+			pd("start_ordered %p->%p\n", rq, *rqp);
 			return 1;
 		} else {
+			pd("ORDERED_NONE, seen barrier\n");
 			/*
 			 * This can happen when the queue switches to
 			 * ORDERED_NONE while this request is on it.
@@ -553,6 +573,7 @@ int blk_do_ordered(request_queue_t *q, s
 			*rqp = NULL;
 	}
 
+	pd("seq=%02x %p->%p\n", blk_ordered_cur_seq(q), rq, *rqp);
 	return 1;
 }
 
@@ -585,6 +606,9 @@ static int flush_dry_bio_endio(struct bi
 	bio->bi_sector -= (q->bi_size >> 9);
 	q->bi_size = 0;
 
+	pd("BIO %p %llu %u\n",
+	   bio, (unsigned long long)bio->bi_sector, bio->bi_size);
+
 	return 0;
 }
 
@@ -598,6 +622,7 @@ static inline int ordered_bio_endio(stru
 	if (&q->bar_rq != rq)
 		return 0;
 
+	pd("q->orderr=%d error=%d\n", q->orderr, error);
 	/*
 	 * Okay, this is the barrier request in progress, dry finish it.
 	 */
@@ -2864,6 +2889,7 @@ static int __make_request(request_queue_
 
 	barrier = bio_barrier(bio);
 	if (unlikely(barrier) && (q->next_ordered == QUEUE_ORDERED_NONE)) {
+		pd("ORDERED_NONE, seen barrier\n");
 		err = -EOPNOTSUPP;
 		goto end_io;
 	}

^ permalink raw reply related	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 15:24     ` Tejun Heo
  2006-05-16 18:29       ` Ric Wheeler
@ 2006-05-16 23:34       ` Jeff Garzik
  2006-05-16 23:53         ` Tejun Heo
  1 sibling, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-16 23:34 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Ric Wheeler, linux-ide, Mark Lord, Jens Axboe

Tejun Heo wrote:
> * can we make tags int and use -1 for invalid tag?  ATA_TAG_POISON looks 
> horrible when printed.

print with %x :)


> * it would be nice to have some framework to determine whether the 
> controller is receiving too many consecutive spurious interrupts.  Say, 
> 32 irqs in a row without intervening valid interrupts is a good reason 
> to be suspicious about stuck IRQ.  Freezing & resetting will resolve the 
> situation in most cases.

well, there is a screaming interrupt detector in the kernel...  Ideally 
  we should strive to make sure that only happens in debug scenarios :)


> * With NCQ, some drives generate spurious D2H FISes with I bit set as if 
> it were executing non-NCQ commands.  So, regardless of controller, we're 
> likely to see similar problems (but sil24 does all the protocol handling 
> and ignores such FISes by itself).  This can be combined with the above 
> freeze on too many spurious, I guess.

Interesting

	Jeff



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 18:29       ` Ric Wheeler
  2006-05-16 21:41         ` Ric Wheeler
@ 2006-05-16 23:44         ` Tejun Heo
  2006-05-16 23:53           ` Jeff Garzik
  2006-05-17  2:16           ` Ric Wheeler
  1 sibling, 2 replies; 113+ messages in thread
From: Tejun Heo @ 2006-05-16 23:44 UTC (permalink / raw)
  To: ric; +Cc: Jeff Garzik, linux-ide, Mark Lord, Jens Axboe

[-- Attachment #1: Type: text/plain, Size: 2137 bytes --]

Ric Wheeler wrote:
> c001n01: 0: [  OK  ]
> ata3: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
> 0x2000000f)
> ata3: spurious SDB FIS 004040a1:10000000 ap->qc_active=2000000f 
> qc_active=2000000f
> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
> 0xfffc0)
> ata1: spurious SDB FIS 004040a1:00000020 ap->qc_active=000fffc0 
> qc_active=000fffc0
> ata2: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
> 0x7fffff3f)
> ata2: spurious SDB FIS 004040a1:00000080 ap->qc_active=7fffff3f 
> qc_active=7fffff3f
> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
> 0x7fffff9f)
> ata1: spurious SDB FIS 004040a1:00000040 ap->qc_active=7fffff9f 
> qc_active=7fffff9f
> c001n03: 0: [  OK  ]
> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
> 0x7ffe7fff)
> ata1: spurious SDB FIS 004040a1:00010000 ap->qc_active=7ffe7fff 
> qc_active=7ffe7fff
> c001n04: 0: [  OK  ]
> ata3: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x31)
> ata3: spurious SDB FIS 004040a1:00000008 ap->qc_active=00000031 
> qc_active=00000031
> ata3: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
> 0x7fff800f)
> ata3: spurious SDB FIS 004040a1:00004000 ap->qc_active=7fff800f 
> qc_active=7fff800f
> c001n06: 1: [ FAIL ]
> c001n07: 0: [  OK  ]
> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
> 0x7ffffcff)
> ata1: spurious SDB FIS 004040a1:00000200 ap->qc_active=7ffffcff 
> qc_active=7ffffcff
> c001n08: 0: [  OK  ]
> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
> 0x4fffffff)
> ata1: spurious SDB FIS 004040a1:20000000 ap->qc_active=4fffffff 
> qc_active=4fffffff

Hmmm.. The drive is issuing SDB FIS which completes already completed 
tags.  This could be dangerous.  Depending on timing, it might end up 
finishing a command which occupied the slot which hasn't been processed 
yet.  If a drive does this, NCQ shouldn't be enabled for it.  Can you 
post full boot dmesg?

I'm attaching slightly modified version of the debug patch just in case. 
  It will probably show the same thing.

-- 
tejun

[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 1042 bytes --]

diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c
index 45fd71d..f9eeb15 100644
--- a/drivers/scsi/ahci.c
+++ b/drivers/scsi/ahci.c
@@ -876,6 +876,7 @@ static void ahci_host_intr(struct ata_po
 	struct ata_eh_info *ehi = &ap->eh_info;
 	u32 status, qc_active;
 	int rc;
+	u32 orig_qc_active = ap->qc_active;
 
 	status = readl(port_mmio + PORT_IRQ_STAT);
 	writel(status, port_mmio + PORT_IRQ_STAT);
@@ -916,10 +917,19 @@ static void ahci_host_intr(struct ata_po
 			return;
 	}
 
-	if (ata_ratelimit())
+	if (ata_ratelimit()) {
 		ata_port_printk(ap, KERN_INFO, "spurious interrupt "
 				"(irq_stat 0x%x active_tag %d sactive 0x%x)\n",
 				status, ap->active_tag, ap->sactive);
+		if (status & PORT_IRQ_SDB_FIS) {
+			struct ahci_port_priv *pp = ap->private_data;
+			u32 *sdb_fis = pp->rx_fis + 0x58;
+
+			ata_port_printk(ap, KERN_INFO, "spurious SDB FIS "
+				"%08x:%08x orig_qc_active=%08x qc_active=%08x\n",
+				sdb_fis[0], sdb_fis[1], orig_qc_active, qc_active);
+		}
+	}
 }
 
 static void ahci_irq_clear(struct ata_port *ap)

^ permalink raw reply related	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 23:34       ` Jeff Garzik
@ 2006-05-16 23:53         ` Tejun Heo
  0 siblings, 0 replies; 113+ messages in thread
From: Tejun Heo @ 2006-05-16 23:53 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Ric Wheeler, linux-ide, Mark Lord, Jens Axboe

Jeff Garzik wrote:
> Tejun Heo wrote:
>> * can we make tags int and use -1 for invalid tag?  ATA_TAG_POISON 
>> looks horrible when printed.
> 
> print with %x :)
> 
> 
>> * it would be nice to have some framework to determine whether the 
>> controller is receiving too many consecutive spurious interrupts.  
>> Say, 32 irqs in a row without intervening valid interrupts is a good 
>> reason to be suspicious about stuck IRQ.  Freezing & resetting will 
>> resolve the situation in most cases.
> 
> well, there is a screaming interrupt detector in the kernel...  Ideally 
>  we should strive to make sure that only happens in debug scenarios :)

AFAIK, it disables the IRQ when triggered.  As stuck IRQ is something we 
see not so rarely with ATA devices, it would be better to deal with them 
more intelligently in libata, IMHO.  libata has ways to recover from 
most of those situations.

>> * With NCQ, some drives generate spurious D2H FISes with I bit set as 
>> if it were executing non-NCQ commands.  So, regardless of controller, 
>> we're likely to see similar problems (but sil24 does all the protocol 
>> handling and ignores such FISes by itself).  This can be combined with 
>> the above freeze on too many spurious, I guess.
> 
> Interesting

D2H is interesting but the spurious SDB FIS Ric is reporting is scary. 
I hope something else is wrong.  :(

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 23:44         ` Tejun Heo
@ 2006-05-16 23:53           ` Jeff Garzik
  2006-05-17  0:00             ` Jeff Garzik
  2006-05-17  2:16           ` Ric Wheeler
  1 sibling, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-16 23:53 UTC (permalink / raw)
  To: Tejun Heo; +Cc: ric, linux-ide, Mark Lord, Jens Axboe

Tejun Heo wrote:
> Hmmm.. The drive is issuing SDB FIS which completes already completed 
> tags.  This could be dangerous.  Depending on timing, it might end up 
> finishing a command which occupied the slot which hasn't been processed 
> yet.  If a drive does this, NCQ shouldn't be enabled for it.  Can you 
> post full boot dmesg?

I'm not sure the data supports that conclusion?  PORT_IRQ_SDB_FIS is 
quite normal and expected during NCQ operation, if that interrupt is 
enabled.  Just normal SDB:Entry and SDB:SetIntr states.

Side note:  looking at those states reminds me that ATAPI devices that 
support Asynchronous Notification (an end to CD-ROM polling) will soon 
be appearing on the market.  We'll need to make note of the Notification 
bit, if present...

	Jeff



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 23:53           ` Jeff Garzik
@ 2006-05-17  0:00             ` Jeff Garzik
  2006-05-17  0:29               ` Tejun Heo
  2006-05-17  0:31               ` Jeff Garzik
  0 siblings, 2 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-17  0:00 UTC (permalink / raw)
  To: Tejun Heo; +Cc: ric, linux-ide, Mark Lord, Jens Axboe

Jeff Garzik wrote:
> Tejun Heo wrote:
>> Hmmm.. The drive is issuing SDB FIS which completes already completed 
>> tags.  This could be dangerous.  Depending on timing, it might end up 
>> finishing a command which occupied the slot which hasn't been 
>> processed yet.  If a drive does this, NCQ shouldn't be enabled for 
>> it.  Can you post full boot dmesg?
> 
> I'm not sure the data supports that conclusion?  PORT_IRQ_SDB_FIS is 
> quite normal and expected during NCQ operation, if that interrupt is 
> enabled.  Just normal SDB:Entry and SDB:SetIntr states.

Strike that last part:  PORT_IRQ_SDB_FIS will appear, as with other 
status bits, even if the enable bit is not set.

So, you'll see that whenever you get an SDB FIS during normal operation.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  0:00             ` Jeff Garzik
@ 2006-05-17  0:29               ` Tejun Heo
  2006-05-17  1:08                 ` Jeff Garzik
  2006-05-17  0:31               ` Jeff Garzik
  1 sibling, 1 reply; 113+ messages in thread
From: Tejun Heo @ 2006-05-17  0:29 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: ric, linux-ide, Mark Lord, Jens Axboe

Jeff Garzik wrote:
> Jeff Garzik wrote:
>> Tejun Heo wrote:
>>> Hmmm.. The drive is issuing SDB FIS which completes already completed 
>>> tags.  This could be dangerous.  Depending on timing, it might end up 
>>> finishing a command which occupied the slot which hasn't been 
>>> processed yet.  If a drive does this, NCQ shouldn't be enabled for 
>>> it.  Can you post full boot dmesg?
>>
>> I'm not sure the data supports that conclusion?  PORT_IRQ_SDB_FIS is 
>> quite normal and expected during NCQ operation, if that interrupt is 
>> enabled.  Just normal SDB:Entry and SDB:SetIntr states.
> 
> Strike that last part:  PORT_IRQ_SDB_FIS will appear, as with other 
> status bits, even if the enable bit is not set.
> 
> So, you'll see that whenever you get an SDB FIS during normal operation.

The problem is with the second dword.  Here are some of spurious SDB 
FISes Ric's AHCI was receiving.

004040a1:10000000
004040a1:00000020
004040a1:00000080

If the second dword were all zero, it's simply SDB FIS turning on IRQ 
(bit 14 of the first dword) and there's nothing to worry about. 
However, all those spurious SDBs have one bit set in the second dword - 
meaning the SDB completes the corresponding tag, but the tag isn't 
active when those SDBs are received.

This is okay as long as the controller thinks the tags are unoccupied 
when those SDBs are received, but it's not something which can be 
guaranteed.  NCQ command synchronization depends on devices not 
completing the same commands more than once.

The duplicate completions might be okay if the drive guarantees it 
doesn't send it if it loses to command issuance.  e.g.

1. drive sends completion for tag x
2. drive shortly schedules another completion for tag x (spurious)
3. ahci/driver complete tag x
4. ahci/driver issues tag x
5. drive receives command for tag x before sending the spurious 
completion and determines not to send the spurious completion. (not very 
likely)

If above is true, the drive might be okay, but nobody can guarantee how 
  various controllers react.  It depends on how controllers manage 
SActive (when to turn bits on).  At any rate, it's dangerous IMHO.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  0:00             ` Jeff Garzik
  2006-05-17  0:29               ` Tejun Heo
@ 2006-05-17  0:31               ` Jeff Garzik
  2006-05-17  0:50                 ` Tejun Heo
  1 sibling, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-17  0:31 UTC (permalink / raw)
  To: Tejun Heo; +Cc: ric, linux-ide, Mark Lord, Jens Axboe

Actually, looking even more at the code, I think the entire "spurious 
interrupt" code block is bogus.

The device is free to send D2H or SDB FIS to clear Status bits, as well 
as SDB FIS's to update SActive.  The ata_qc_complete_multiple() call 
will do the right thing, even if there is no work to do.

As another side note, command coalescing is worth experimenting with.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  0:31               ` Jeff Garzik
@ 2006-05-17  0:50                 ` Tejun Heo
  2006-05-17  0:57                   ` Tejun Heo
                                     ` (2 more replies)
  0 siblings, 3 replies; 113+ messages in thread
From: Tejun Heo @ 2006-05-17  0:50 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: ric, linux-ide, Mark Lord, Jens Axboe

Jeff Garzik wrote:
> Actually, looking even more at the code, I think the entire "spurious 
> interrupt" code block is bogus.
> 
> The device is free to send D2H or SDB FIS to clear Status bits, as well 
> as SDB FIS's to update SActive.  The ata_qc_complete_multiple() call 
> will do the right thing, even if there is no work to do.

Yes, they are, but...

* Please note that SActive update via SDB FIS is edge-triggered.  It 
doesn't send the whole image of the register.  The SActive bits in SDB 
FIS indicate W1C (this is inevitable because controller and device 
cannot be in full synchronization regarding SActive).  So, they have can 
have dangerous side effects.

* Those spurious FISes are actively setting the I bit requesting 
interrupt explicitly.  Those are not innocent status update FISes.  And 
the spec state machines don't allow D2H FISes during NCQ command phase. 
  I seem to recollect it's actually forbidden explicitly but currently 
cannot find where.  I'll keep looking.

> As another side note, command coalescing is worth experimenting with.

Might be, but I'm a bit skeptical.  We might lose more to added latency.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  0:50                 ` Tejun Heo
@ 2006-05-17  0:57                   ` Tejun Heo
  2006-05-17  2:22                     ` Ric Wheeler
  2006-05-17  1:13                   ` Jeff Garzik
  2006-05-17  1:14                   ` Jeff Garzik
  2 siblings, 1 reply; 113+ messages in thread
From: Tejun Heo @ 2006-05-17  0:57 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jeff Garzik, ric, linux-ide, Mark Lord, Jens Axboe

Tejun Heo wrote:
> Jeff Garzik wrote:
>> Actually, looking even more at the code, I think the entire "spurious 
>> interrupt" code block is bogus.
>>
>> The device is free to send D2H or SDB FIS to clear Status bits, as 
>> well as SDB FIS's to update SActive.  The ata_qc_complete_multiple() 
>> call will do the right thing, even if there is no work to do.
> 
> Yes, they are, but...
> 
> * Please note that SActive update via SDB FIS is edge-triggered.  It 
> doesn't send the whole image of the register.  The SActive bits in SDB 
> FIS indicate W1C (this is inevitable because controller and device 
> cannot be in full synchronization regarding SActive).  So, they have can 
> have dangerous side effects.
> 
> * Those spurious FISes are actively setting the I bit requesting 
> interrupt explicitly.  Those are not innocent status update FISes.  And 
> the spec state machines don't allow D2H FISes during NCQ command phase. 
>  I seem to recollect it's actually forbidden explicitly but currently 
> cannot find where.  I'll keep looking.

Oops, strike out the part about D2H not allowed.  It certainly is 
allowed to clear BSY.  Sorry.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  0:29               ` Tejun Heo
@ 2006-05-17  1:08                 ` Jeff Garzik
  2006-05-17  1:27                   ` Tejun Heo
  0 siblings, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-17  1:08 UTC (permalink / raw)
  To: Tejun Heo; +Cc: ric, linux-ide, Mark Lord, Jens Axboe

Tejun Heo wrote:
> Jeff Garzik wrote:
>> Jeff Garzik wrote:
>>> Tejun Heo wrote:
>>>> Hmmm.. The drive is issuing SDB FIS which completes already 
>>>> completed tags.  This could be dangerous.  Depending on timing, it 
>>>> might end up finishing a command which occupied the slot which 
>>>> hasn't been processed yet.  If a drive does this, NCQ shouldn't be 
>>>> enabled for it.  Can you post full boot dmesg?
>>>
>>> I'm not sure the data supports that conclusion?  PORT_IRQ_SDB_FIS is 
>>> quite normal and expected during NCQ operation, if that interrupt is 
>>> enabled.  Just normal SDB:Entry and SDB:SetIntr states.
>>
>> Strike that last part:  PORT_IRQ_SDB_FIS will appear, as with other 
>> status bits, even if the enable bit is not set.
>>
>> So, you'll see that whenever you get an SDB FIS during normal operation.
> 
> The problem is with the second dword.  Here are some of spurious SDB 
> FISes Ric's AHCI was receiving.
> 
> 004040a1:10000000
> 004040a1:00000020
> 004040a1:00000080
> 
> If the second dword were all zero, it's simply SDB FIS turning on IRQ 
> (bit 14 of the first dword) and there's nothing to worry about. However, 
> all those spurious SDBs have one bit set in the second dword - meaning 
> the SDB completes the corresponding tag, but the tag isn't active when 
> those SDBs are received.
> 
> This is okay as long as the controller thinks the tags are unoccupied 
> when those SDBs are received, but it's not something which can be 
> guaranteed.  NCQ command synchronization depends on devices not 
> completing the same commands more than once.
> 
> The duplicate completions might be okay if the drive guarantees it 
> doesn't send it if it loses to command issuance.  e.g.
> 
> 1. drive sends completion for tag x
> 2. drive shortly schedules another completion for tag x (spurious)
> 3. ahci/driver complete tag x
> 4. ahci/driver issues tag x
> 5. drive receives command for tag x before sending the spurious 
> completion and determines not to send the spurious completion. (not very 
> likely)
> 
> If above is true, the drive might be okay, but nobody can guarantee how 
>  various controllers react.  It depends on how controllers manage 
> SActive (when to turn bits on).  At any rate, it's dangerous IMHO.

If the silicon is screwing up SActive bits, then we have bigger problems 
than spurious interrupts.

So, the typical policy of Internet servers applies here:  "be liberal in 
what you accept."  For smart controllers like AHCI, we will simply set 
the desired IRQ mask, then happily receive and ack events anytime the 
controller decides to raise them.  If the controller decides to send us 
a no-op, don't worry about it.  This is particularly true when we turn 
on Command Coalescing, where we'll have a run of work initiated 
[sometimes] by an internal timer, rather than an actual FIS reception.

Side note:  remember that !BSY denotes that the device may accept 
another [NCQ] command (something AHCI doesn't appear to check...).  The 
device is free within NCQ rules to give itself some breathing room, and 
not indicate its ready for new commands immediately.

Currently it appears to be a bug in ahci that we do not check for !BSY, 
but simply assume the device is ready if queue is not full.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  0:50                 ` Tejun Heo
  2006-05-17  0:57                   ` Tejun Heo
@ 2006-05-17  1:13                   ` Jeff Garzik
  2006-05-17  1:14                   ` Jeff Garzik
  2 siblings, 0 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-17  1:13 UTC (permalink / raw)
  To: Tejun Heo; +Cc: ric, linux-ide, Mark Lord, Jens Axboe

Tejun Heo wrote:
> * Those spurious FISes are actively setting the I bit requesting 
> interrupt explicitly.  Those are not innocent status update FISes.  And 

FWIW, most firmwares probably derive the value of 'I' directly from the 
nIEN bit.  In our situation, it would be unusual for 'I' to be cleared. 
  'I' is really irrelevant for advanced, FIS-based controllers in any case.

	Jeff



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  0:50                 ` Tejun Heo
  2006-05-17  0:57                   ` Tejun Heo
  2006-05-17  1:13                   ` Jeff Garzik
@ 2006-05-17  1:14                   ` Jeff Garzik
  2 siblings, 0 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-17  1:14 UTC (permalink / raw)
  To: Tejun Heo; +Cc: ric, linux-ide, Mark Lord, Jens Axboe

Tejun Heo wrote:
> Jeff Garzik wrote:
>> As another side note, command coalescing is worth experimenting with.
> 
> Might be, but I'm a bit skeptical.  We might lose more to added latency.

Yes, that's the biggest item of note.

Still, it would be worth turning on if interrupts exceed a certain 
threshold, such as 1000/second.  Each interrupt handler setup and call, 
even with PCI MSI, has a certain fixed amount overhead.  Command 
coalescing can mitigate that overhead.

	Jeff



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  1:08                 ` Jeff Garzik
@ 2006-05-17  1:27                   ` Tejun Heo
  2006-05-17  2:26                     ` Jeff Garzik
  2006-05-22  7:19                     ` Jeff Garzik
  0 siblings, 2 replies; 113+ messages in thread
From: Tejun Heo @ 2006-05-17  1:27 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: ric, linux-ide, Mark Lord, Jens Axboe

Jeff Garzik wrote:
> Tejun Heo wrote:
>> Jeff Garzik wrote:
>>> Jeff Garzik wrote:
>>>> Tejun Heo wrote:
>>>>> Hmmm.. The drive is issuing SDB FIS which completes already 
>>>>> completed tags.  This could be dangerous.  Depending on timing, it 
>>>>> might end up finishing a command which occupied the slot which 
>>>>> hasn't been processed yet.  If a drive does this, NCQ shouldn't be 
>>>>> enabled for it.  Can you post full boot dmesg?
>>>>
>>>> I'm not sure the data supports that conclusion?  PORT_IRQ_SDB_FIS is 
>>>> quite normal and expected during NCQ operation, if that interrupt is 
>>>> enabled.  Just normal SDB:Entry and SDB:SetIntr states.
>>>
>>> Strike that last part:  PORT_IRQ_SDB_FIS will appear, as with other 
>>> status bits, even if the enable bit is not set.
>>>
>>> So, you'll see that whenever you get an SDB FIS during normal operation.
>>
>> The problem is with the second dword.  Here are some of spurious SDB 
>> FISes Ric's AHCI was receiving.
>>
>> 004040a1:10000000
>> 004040a1:00000020
>> 004040a1:00000080
>>
>> If the second dword were all zero, it's simply SDB FIS turning on IRQ 
>> (bit 14 of the first dword) and there's nothing to worry about. 
>> However, all those spurious SDBs have one bit set in the second dword 
>> - meaning the SDB completes the corresponding tag, but the tag isn't 
>> active when those SDBs are received.
>>
>> This is okay as long as the controller thinks the tags are unoccupied 
>> when those SDBs are received, but it's not something which can be 
>> guaranteed.  NCQ command synchronization depends on devices not 
>> completing the same commands more than once.
>>
>> The duplicate completions might be okay if the drive guarantees it 
>> doesn't send it if it loses to command issuance.  e.g.
>>
>> 1. drive sends completion for tag x
>> 2. drive shortly schedules another completion for tag x (spurious)
>> 3. ahci/driver complete tag x
>> 4. ahci/driver issues tag x
>> 5. drive receives command for tag x before sending the spurious 
>> completion and determines not to send the spurious completion. (not 
>> very likely)
>>
>> If above is true, the drive might be okay, but nobody can guarantee 
>> how  various controllers react.  It depends on how controllers manage 
>> SActive (when to turn bits on).  At any rate, it's dangerous IMHO.
> 
> If the silicon is screwing up SActive bits, then we have bigger problems 
> than spurious interrupts.
> 
> So, the typical policy of Internet servers applies here:  "be liberal in 
> what you accept."  For smart controllers like AHCI, we will simply set 
> the desired IRQ mask, then happily receive and ack events anytime the 
> controller decides to raise them.  If the controller decides to send us 
> a no-op, don't worry about it.  This is particularly true when we turn 
> on Command Coalescing, where we'll have a run of work initiated 
> [sometimes] by an internal timer, rather than an actual FIS reception.

I wish I could explain it better.  This is a clear protocol violation 
from the drive.  Depending on specific implementation of the drive and 
the controller, it can result in completion of command which is not 
processed yet (data corruption!).

If I'm misunderstanding something, please point out.

> Side note:  remember that !BSY denotes that the device may accept 
> another [NCQ] command (something AHCI doesn't appear to check...).  The 
> device is free within NCQ rules to give itself some breathing room, and 
> not indicate its ready for new commands immediately.
> 
> Currently it appears to be a bug in ahci that we do not check for !BSY, 
> but simply assume the device is ready if queue is not full.

AFAIK, unless we do CLO explicitly, AHCI takes care of BSY waiting, NCQ 
or not.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  2:22                     ` Ric Wheeler
@ 2006-05-17  1:37                       ` Tejun Heo
  2006-05-17  3:57                         ` Ric Wheeler
  0 siblings, 1 reply; 113+ messages in thread
From: Tejun Heo @ 2006-05-17  1:37 UTC (permalink / raw)
  To: Ric Wheeler; +Cc: Jeff Garzik, linux-ide, Mark Lord, Jens Axboe

Ric Wheeler wrote:
> 
> (Trying to keep up ;-))
> 
> Is there still value in testing your last patch?
> 

The result should be the same, so it's not really necessary.  But, just 
in case, sticking that patch when you test the barrier would be nice so 
that things can be verified again.

Thanks for testing.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 17:00 [RFT] major libata update Jeff Garzik
                   ` (6 preceding siblings ...)
  2006-05-16 11:36 ` Ric Wheeler
@ 2006-05-17  2:05 ` Andrew Morton
  2006-05-17  4:49   ` Tejun Heo
  2006-05-21 23:51 ` Michael Sterrett -Mr. Bones.-
  8 siblings, 1 reply; 113+ messages in thread
From: Andrew Morton @ 2006-05-17  2:05 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, linux-kernel, torvalds, Tejun Heo

Jeff Garzik <jeff@garzik.org> wrote:
>
>  	git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev.git

This adds a minute and a half to my bootup times :(


[   43.275044] SCSI subsystem initialized
[   43.335092] libata version 1.30 loaded.
[   43.336142] ata_piix 0000:00:1f.2: version 1.10
[   43.336146] ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
[   43.426691] ACPI (acpi_bus-0191): Device is not power manageable [20060310]
[   43.559872] ACPI: PCI Interrupt 0000:00:1f.2[A] -> GSI 19 (level, low) -> IRQ 19
[   43.681530] PCI: Setting latency timer of device 0000:00:1f.2 to 64
[   43.681564] ata1: SATA max UDMA/133 cmd 0x2148 ctl 0x217E bmdma 0x2110 irq 19
[   43.777123] ata2: SATA max UDMA/133 cmd 0x2140 ctl 0x217A bmdma 0x2118 irq 19
[   44.123919] ata1.00: cfg 49:2f00 82:346b 83:7fe9 84:4773 85:3469 86:3c01 87:4763 88:407f
[   44.123924] ata1.00: ATA-7, max UDMA/133, 321672960 sectors: LBA48 NCQ (depth 0/32)
[   44.216325] ata1.00: configured for UDMA/133
[   44.267296] scsi0 : ata_piix
[   44.301660] PM: Adding info for No Bus:host0
[   44.719422] ata2.00: cfg 49:0f00 82:0000 83:0000 84:0000 85:0000 86:0000 87:0000 88:101f
[   44.719425] ata2.00: ATAPI, max UDMA/66
[   44.765263] ata2.00: applying bridge limits
[   74.928836] ata2.01: qc timeout (cmd 0xa1)
[   74.977811] ata2.01: failed to IDENTIFY (I/O error, err_mask=0x4)
[   75.468853] ata2.00: cfg 49:0f00 82:0000 83:0000 84:0000 85:0000 86:0000 87:0000 88:101f
[   75.468856] ata2.00: ATAPI, max UDMA/66
[   75.514678] ata2.00: applying bridge limits
[  105.674130] ata2.01: qc timeout (cmd 0xa1)
[  105.723044] ata2.01: failed to IDENTIFY (I/O error, err_mask=0x4)
[  106.210113] ata2.00: cfg 49:0f00 82:0000 83:0000 84:0000 85:0000 86:0000 87:0000 88:101f
[  106.210117] ata2.00: ATAPI, max UDMA/66
[  106.255906] ata2.00: applying bridge limits
[  136.415532] ata2.01: qc timeout (cmd 0xa1)
[  136.464452] ata2.01: failed to IDENTIFY (I/O error, err_mask=0x4)
[  136.537214] ata2.01: limiting speed to PIO0
[  136.587141] ata2.01: disabled
[  137.039723] ata2.00: cfg 49:0f00 82:0000 83:0000 84:0000 85:0000 86:0000 87:0000 88:101f
[  137.039726] ata2.00: ATAPI, max UDMA/66
[  137.085492] ata2.00: applying bridge limits
[  137.292543] ata2.00: configured for UDMA/66
[  137.342488] scsi1 : ata_piix
[  137.376847] PM: Adding info for No Bus:host1
[  137.376892] PM: Adding info for No Bus:target0:0:0
[  137.376948]   Vendor: ATA       Model: HDT722516DLA380   Rev: V43O
[  137.453962]   Type:   Direct-Access                      ANSI SCSI revision: 05
[  137.541468] PM: Adding info for scsi:0:0:0:0
[  137.541547] SCSI device sda: 321672960 512-byte hdwr sectors (164697 MB)
[  137.621598] sda: Write Protect is off
[  137.665289] sda: Mode Sense: 00 3a 00 00
[  137.665306] SCSI device sda: drive cache: write back
[  137.724592] SCSI device sda: 321672960 512-byte hdwr sectors (164697 MB)
[  137.804697] sda: Write Protect is off
[  137.848386] sda: Mode Sense: 00 3a 00 00
[  137.848398] SCSI device sda: drive cache: write back
[  137.907659]  sda: sda1 sda2 sda3
[  137.957184] sd 0:0:0:0: Attached scsi disk sda
[  138.010252] PM: Adding info for No Bus:target1:0:0
[  138.010869]   Vendor: PLEXTOR   Model: DVDR   PX-716A    Rev: 1.09
[  138.087949]   Type:   CD-ROM                             ANSI SCSI revision: 05
[  138.175466] PM: Adding info for scsi:1:0:0:0
[  138.175531] ata_piix 0000:00:1f.5: MAP [ P0 P2 P1 P3 ]
[  138.237446] ACPI (acpi_bus-0191): Device is not power manageable [20060310]
[  138.320799] ACPI: PCI Interrupt 0000:00:1f.5[A] -> GSI 19 (level, low) -> IRQ 19
[  138.409254] PCI: Setting latency timer of device 0000:00:1f.5 to 64
[  138.409276] ata3: SATA max UDMA/133 cmd 0x2138 ctl 0x2176 bmdma 0x20F0 irq 19
[  138.494586] ata4: SATA max UDMA/133 cmd 0x2130 ctl 0x2172 bmdma 0x20F8 irq 19
[  139.899612] scsi2 : ata_piix
[  139.933979] PM: Adding info for No Bus:host2
[  141.251424] scsi3 : ata_piix
[  141.285781] PM: Adding info for No Bus:host3
[  141.366280] EXT3-fs: INFO: recovery required on readonly filesystem.


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 23:23             ` Tejun Heo
@ 2006-05-17  2:09               ` Ric Wheeler
  0 siblings, 0 replies; 113+ messages in thread
From: Ric Wheeler @ 2006-05-17  2:09 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jeff Garzik, linux-ide, Mark Lord, Jens Axboe

[-- Attachment #1: Type: text/plain, Size: 2499 bytes --]


Tejun Heo wrote:

> Jeff Garzik wrote:
>
>> Ric Wheeler wrote:
>>
>>>
>>> One other note, it seems like this patch set has broken the write 
>>> barrier support - is that a side effect of enabling NCQ still?
>>>
>>> I see messages that claim flush barriers are enabled:
>>>
>>> [root@c001n01 root]# mount -o 
>>> barrier=flush,rw,noatime,nodiratime,data=ordered,notail /dev/sda10 
>>> /mnt/1
>>> May 16 22:21:56 centera kernel: ReiserFS: sda10: found reiserfs 
>>> format "3.6" with standard journal
>>> [root@c001n01 root]# May 16 22:21:58 centera kernel: ReiserFS: 
>>> sda10: using ordered data mode
>>> May 16 22:21:58 centera kernel: reiserfs: using flush barriers
>>> May 16 22:21:58 centera kernel: ReiserFS: sda10: journal params: 
>>> device sda10, size 8192, journal first block 18, max trans len 1024, 
>>> max batch 900, max commit age 30, max trans age 30
>>> May 16 22:21:58 centera kernel: ReiserFS: sda10: checking 
>>> transaction log (sda10)
>>> May 16 22:21:58 centera kernel: ReiserFS: sda10: Using r5 hash to 
>>> sort names
>>>
>>> But when I test with my synchronous write load, I am going at 6 
>>> times the normal rate (i.e., the rate I see with barriers disabled) ;-)
>>
>>
>> Well, NCQ read/write commands have a 'FUA' bit...  though maybe the 
>> NCQ code forgot to check the global libata_fua.
>>
>
> Hmmm.. The only place FUA is checked is ata_dev_supports_fua() 
> regardless of NCQ, but I've seen FUA enabled with NCQ in another bug 
> report, so I might have screwed up.  Ric, can you post the boot dmesg 
> such that we know whether FUA is enabled or not?
>
> I'm attaching a patch to print the progress of ordered sequence.  I've 
> just tested with a NCQ drive loaded with 20 IO requests and it works. 
> All requests are drained, preflush, barrier, then postflush.  Running 
> the same test with the attached patch will tell us how barrier is 
> working.
>
> @ I can't believe this.  Last night two disks failed - one testing, 
> one production.  Man, my harddrives are falling like flies.  Four test 
> drives and one production drive failed during last two months.  Maybe 
> they are striking back at me.  :-(
>
Attached is the boot.msg file - one important note is that we (EMC) have 
the unusual habit of using drives with write cache off & turning them on 
during boot up.  Could be that the answer is a simple enabling write 
cache does not properly toggle the barrier support (although I thought 
that we had patches from Jens ? that fixed this).

ric


[-- Attachment #2: boot.msg --]
[-- Type: text/plain, Size: 52682 bytes --]

Cannot find map file.
No module symbols loaded - kernel modules not enabled.

Cannot build symbol table - disabling symbol lookups
klogd 1.4.1, log source = ksyslog started.
00000, GSI 0-23
<6>ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
<6>ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
<7>ACPI: IRQ0 used by override.
<7>ACPI: IRQ2 used by override.
<7>ACPI: IRQ9 used by override.
<4>Enabling APIC mode:  Flat.  Using 1 I/O APICs
<6>Using ACPI (MADT) for SMP configuration information
<4>Allocating PCI resources starting at 40000000 (gap: 3f700000:a0900000)
<4>Built 1 zonelists
<5>Kernel command line: root=/dev/md3 elevator=as console=ttyS0,9600,8n1 console=tty0 apic BOOT_IMAGE=production-m
<7>mapped APIC to ffffd000 (fee00000)
<7>mapped IOAPIC to ffffc000 (fec00000)
<6>Enabling fast FPU save and restore... done.
<6>Enabling unmasked SIMD FPU exception support... done.
<6>Initializing CPU#0
<4>PID hash table entries: 4096 (order: 12, 16384 bytes)
<4>Detected 2800.792 MHz processor.
<6>Using pmtmr for high-res timesource
<4>Console: colour VGA+ 80x25
<4>Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
<4>Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
<6>Memory: 898240k/917504k available (2014k kernel code, 18720k reserved, 632k data, 184k init, 0k highmem)
<4>Checking if this processor honours the WP bit even in supervisor mode... Ok.
<4>Calibrating delay using timer specific routine.. 5607.13 BogoMIPS (lpj=11214265)
<4>Mount-cache hash table entries: 512
<7>CPU: After generic identify, caps: bfebfbff 00100000 00000000 00000000 0000441d 00000000 00000000
<7>CPU: After vendor identify, caps: bfebfbff 00100000 00000000 00000000 0000441d 00000000 00000000
<4>monitor/mwait feature present.
<4>using mwait in idle threads.
<6>CPU: Trace cache: 12K uops, L1 D cache: 16K
<6>CPU: L2 cache: 1024K
<7>CPU: After all inits, caps: bfebfbff 00100000 00000000 00000180 0000441d 00000000 00000000
<4>CPU: Intel(R) Pentium(R) 4 CPU 2.80GHz stepping 01
<6>Checking 'hlt' instruction... OK.
<6>SMP alternatives: switching to UP code
<6>Freeing SMP alternatives: 0k freed
<4>ENABLING IO-APIC IRQs
<6>..TIMER: vector=0x31 apic1=0 pin1=2 apic2=-1 pin2=-1
<6>checking if image is initramfs...it isn't (no cpio magic); looks like an initrd
<6>Freeing initrd memory: 7738k freed
<6>NET: Registered protocol family 16
<6>ACPI: bus type pci registered
<6>PCI: Using MMCONFIG
<4>Setting up standard PCI resources
<6>ACPI: Subsystem revision 20060127
<6>ACPI: Interpreter enabled
<6>ACPI: Using IOAPIC for interrupt routing
<6>ACPI: PCI Root Bridge [PCI0] (0000:00)
<7>PCI: Probing PCI hardware (bus 00)
<7>Boot video device is 0000:00:02.0
<4>PCI: PXH quirk detected, disabling MSI for SHPC device
<4>PCI: PXH quirk detected, disabling MSI for SHPC device
<6>PCI: Transparent bridge - 0000:00:1e.0
<7>ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
<7>ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.HUB0._PRT]
<7>ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P1AB.PXHA._PRT]
<7>ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P1AB.PXHB._PRT]
<4>ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 9 10 *12 14 15)
<4>ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 *5 7 9 10 12 14 15)
<4>ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 *7 9 10 12 14 15)
<4>ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 7 9 *10 12 14 15)
<4>ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 9 10 12 14 15) *0, disabled.
<4>ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 9 10 12 14 15) *0, disabled.
<4>ACPI: PCI Interrupt Link [LNK0] (IRQs 3 4 5 7 9 10 12 14 15) *0, disabled.
<4>ACPI: PCI Interrupt Link [LNK1] (IRQs *3 4 5 7 9 10 12 14 15)
<5>SCSI subsystem initialized
<6>PCI: Using ACPI for IRQ routing
<6>PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a report
<4>PCI: Ignore bogus resource 6 [0:0] of 0000:00:02.0
<6>PCI: Bridge: 0000:01:00.0
<6>  IO window: c000-cfff
<6>  MEM window: d0000000-d00fffff
<6>  PREFETCH window: disabled.
<6>PCI: Bridge: 0000:01:00.2
<6>  IO window: d000-dfff
<6>  MEM window: d0100000-d01fffff
<6>  PREFETCH window: disabled.
<6>PCI: Bridge: 0000:00:01.0
<6>  IO window: c000-dfff
<6>  MEM window: d0000000-d02fffff
<6>  PREFETCH window: disabled.
<6>PCI: Bridge: 0000:00:1e.0
<6>  IO window: disabled.
<6>  MEM window: disabled.
<6>  PREFETCH window: disabled.
<6>ACPI: PCI Interrupt 0000:00:01.0[A] -> GSI 16 (level, low) -> IRQ 16
<7>PCI: Setting latency timer of device 0000:00:01.0 to 64
<7>PCI: Setting latency timer of device 0000:01:00.0 to 64
<7>PCI: Setting latency timer of device 0000:01:00.2 to 64
<7>PCI: Setting latency timer of device 0000:00:1e.0 to 64
<6>NET: Registered protocol family 2
<4>IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
<4>TCP established hash table entries: 131072 (order: 7, 524288 bytes)
<4>TCP bind hash table entries: 65536 (order: 6, 262144 bytes)
<6>TCP: Hash tables configured (established 131072 bind 65536)
<6>TCP reno registered
<6>IA-32 Microcode Update Driver: v1.14 <tigran@veritas.com>
<6>io scheduler noop registered
<6>io scheduler anticipatory registered (default)
<6>io scheduler deadline registered
<6>io scheduler cfq registered
<6>Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
<6>serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
<4>RAMDISK driver initialized: 16 RAM disks of 32768K size 1024 blocksize
<6>Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
<6>ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
<7>Probing IDE interface ide0...
<7>Probing IDE interface ide1...
<7>libata version 1.30 loaded.
<7>ahci 0000:00:1f.2: version 1.3
<6>ACPI: PCI Interrupt 0000:00:1f.2[B] -> GSI 19 (level, low) -> IRQ 17
<7>PCI: Setting latency timer of device 0000:00:1f.2 to 64
<6>ahci 0000:00:1f.2: AHCI 0001.0000 32 slots 4 ports 1.5 Gbps 0xf impl IDE mode
<6>ahci 0000:00:1f.2: flags: 64bit ncq pm led 
<6>ata1: SATA max UDMA/133 cmd 0xF8802100 ctl 0x0 bmdma 0x0 irq 17
<6>ata2: SATA max UDMA/133 cmd 0xF8802180 ctl 0x0 bmdma 0x0 irq 17
<6>ata3: SATA max UDMA/133 cmd 0xF8802200 ctl 0x0 bmdma 0x0 irq 17
<6>ata4: SATA max UDMA/133 cmd 0xF8802280 ctl 0x0 bmdma 0x0 irq 17
<6>ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
<7>ata1.00: cfg 49:2f00 82:7c6b 83:7f09 84:4063 85:7c49 86:3e01 87:4063 88:007f
<6>ata1.00: ATA-7, max UDMA/133, 625142448 sectors: LBA48 NCQ (depth 31/32)
<6>ata1.00: configured for UDMA/133
<6>scsi0 : ahci
<6>ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
<7>ata2.00: cfg 49:2f00 82:7c6b 83:7f09 84:4063 85:7c49 86:3e01 87:4063 88:007f
<6>ata2.00: ATA-7, max UDMA/133, 625142448 sectors: LBA48 NCQ (depth 31/32)
<6>ata2.00: configured for UDMA/133
<6>scsi1 : ahci
<6>ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
<7>ata3.00: cfg 49:2f00 82:7c6b 83:7f09 84:4063 85:7c49 86:3e01 87:4063 88:007f
<6>ata3.00: ATA-7, max UDMA/133, 625142448 sectors: LBA48 NCQ (depth 31/32)
<6>ata3.00: configured for UDMA/133
<6>scsi2 : ahci
<6>ata4: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
<7>ata4.00: cfg 49:2f00 82:7c6b 83:7f09 84:4063 85:7c49 86:3e01 87:4063 88:007f
<6>ata4.00: ATA-7, max UDMA/133, 625142448 sectors: LBA48 NCQ (depth 31/32)
<6>ata4.00: configured for UDMA/133
<6>scsi3 : ahci
<5>  Vendor: ATA       Model: Maxtor 7B320S0    Rev: BANC
<5>  Type:   Direct-Access                      ANSI SCSI revision: 05
<5>  Vendor: ATA       Model: Maxtor 7B320S0    Rev: BANC
<5>  Type:   Direct-Access                      ANSI SCSI revision: 05
<5>  Vendor: ATA       Model: Maxtor 7B320S0    Rev: BANC
<5>  Type:   Direct-Access                      ANSI SCSI revision: 05
<5>  Vendor: ATA       Model: Maxtor 7B320S0    Rev: BANC
<5>  Type:   Direct-Access                      ANSI SCSI revision: 05
<5>SCSI device sda: 625142448 512-byte hdwr sectors (320073 MB)
<5>sda: Write Protect is off
<7>sda: Mode Sense: 00 3a 00 00
<5>SCSI device sda: drive cache: write through
<5>SCSI device sda: 625142448 512-byte hdwr sectors (320073 MB)
<5>sda: Write Protect is off
<7>sda: Mode Sense: 00 3a 00 00
<5>SCSI device sda: drive cache: write through
<6> sda: sda1 sda2 sda3 sda4 < sda5 sda6 sda7 sda8 sda9 sda10 sda11 sda12 sda13 sda14 >
<5>sd 0:0:0:0: Attached scsi disk sda
<5>SCSI device sdb: 625142448 512-byte hdwr sectors (320073 MB)
<5>sdb: Write Protect is off
<7>sdb: Mode Sense: 00 3a 00 00
<5>SCSI device sdb: drive cache: write through
<5>SCSI device sdb: 625142448 512-byte hdwr sectors (320073 MB)
<5>sdb: Write Protect is off
<7>sdb: Mode Sense: 00 3a 00 00
<5>SCSI device sdb: drive cache: write through
<6> sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 sdb6 sdb7 sdb8 sdb9 sdb10 sdb11 sdb12 sdb13 sdb14 >
<5>sd 1:0:0:0: Attached scsi disk sdb
<5>SCSI device sdc: 625142448 512-byte hdwr sectors (320073 MB)
<5>sdc: Write Protect is off
<7>sdc: Mode Sense: 00 3a 00 00
<5>SCSI device sdc: drive cache: write through
<5>SCSI device sdc: 625142448 512-byte hdwr sectors (320073 MB)
<5>sdc: Write Protect is off
<7>sdc: Mode Sense: 00 3a 00 00
<5>SCSI device sdc: drive cache: write through
<6> sdc: sdc1 sdc2 sdc3 sdc4 < sdc5 sdc6 sdc7 sdc8 sdc9 sdc10 sdc11 sdc12 sdc13 sdc14 >
<5>sd 2:0:0:0: Attached scsi disk sdc
<5>SCSI device sdd: 625142448 512-byte hdwr sectors (320073 MB)
<5>sdd: Write Protect is off
<7>sdd: Mode Sense: 00 3a 00 00
<5>SCSI device sdd: drive cache: write through
<5>SCSI device sdd: 625142448 512-byte hdwr sectors (320073 MB)
<5>sdd: Write Protect is off
<7>sdd: Mode Sense: 00 3a 00 00
<5>SCSI device sdd: drive cache: write through
<6> sdd: sdd1 sdd2 sdd3 sdd4 < sdd5 sdd6 sdd7 sdd8 sdd9 sdd10 sdd11 sdd12 sdd13 sdd14 >
<5>sd 3:0:0:0: Attached scsi disk sdd
<6>serio: i8042 AUX port at 0x60,0x64 irq 12
<6>serio: i8042 KBD port at 0x60,0x64 irq 1
<6>mice: PS/2 mouse device common for all mice
<6>i2c /dev entries driver
<6>md: raid1 personality registered for level 1
<6>md: md driver 0.90.3 MAX_MD_DEVS=256, MD_SB_DISKS=27
<6>md: bitmap version 4.39
<6>TCP bic registered
<6>NET: Registered protocol family 1
<4>Using IPI Shortcut mode
<4>ACPI wakeup devices: 
<4>PCI0 PEX0 PEX1 PEX2 PEX3 HUB0 PXHA PXHB UAR1 USB0 USB1 USB2 USB3 USBE AC97 AZAL 
<6>ACPI: (supports S0 S1 S4 S5)
<6>md: Autodetecting RAID arrays.
<6>md: autorun ...
<6>md: considering sdd8 ...
<6>md:  adding sdd8 ...
<4>md: sdd7 has different UUID to sdd8
<4>md: sdd6 has different UUID to sdd8
<4>md: sdd5 has different UUID to sdd8
<4>md: sdd3 has different UUID to sdd8
<6>md:  adding sdc8 ...
<4>md: sdc7 has different UUID to sdd8
<4>md: sdc6 has different UUID to sdd8
<4>md: sdc5 has different UUID to sdd8
<4>md: sdc3 has different UUID to sdd8
<6>md:  adding sdb8 ...
<4>md: sdb7 has different UUID to sdd8
<4>md: sdb6 has different UUID to sdd8
<4>md: sdb5 has different UUID to sdd8
<4>md: sdb3 has different UUID to sdd8
<6>md:  adding sda8 ...
<4>md: sda7 has different UUID to sdd8
<4>md: sda6 has different UUID to sdd8
<4>md: sda5 has different UUID to sdd8
<4>md: sda3 has different UUID to sdd8
<6>md: created md8
<6>md: bind<sda8>
<6>md: bind<sdb8>
<6>md: bind<sdc8>
<6>md: bind<sdd8>
<6>md: running: <sdd8><sdc8><sdb8><sda8>
<6>raid1: raid set md8 active with 4 out of 4 mirrors
<6>md: considering sdd7 ...
<6>md:  adding sdd7 ...
<4>md: sdd6 has different UUID to sdd7
<4>md: sdd5 has different UUID to sdd7
<4>md: sdd3 has different UUID to sdd7
<6>md:  adding sdc7 ...
<4>md: sdc6 has different UUID to sdd7
<4>md: sdc5 has different UUID to sdd7
<4>md: sdc3 has different UUID to sdd7
<6>md:  adding sdb7 ...
<4>md: sdb6 has different UUID to sdd7
<4>md: sdb5 has different UUID to sdd7
<4>md: sdb3 has different UUID to sdd7
<6>md:  adding sda7 ...
<4>md: sda6 has different UUID to sdd7
<4>md: sda5 has different UUID to sdd7
<4>md: sda3 has different UUID to sdd7
<6>md: created md7
<6>md: bind<sda7>
<6>md: bind<sdb7>
<6>md: bind<sdc7>
<6>md: bind<sdd7>
<6>md: running: <sdd7><sdc7><sdb7><sda7>
<6>raid1: raid set md7 active with 4 out of 4 mirrors
<6>md: considering sdd6 ...
<6>md:  adding sdd6 ...
<4>md: sdd5 has different UUID to sdd6
<4>md: sdd3 has different UUID to sdd6
<6>md:  adding sdc6 ...
<4>md: sdc5 has different UUID to sdd6
<4>md: sdc3 has different UUID to sdd6
<6>md:  adding sdb6 ...
<4>md: sdb5 has different UUID to sdd6
<4>md: sdb3 has different UUID to sdd6
<6>md:  adding sda6 ...
<4>md: sda5 has different UUID to sdd6
<4>md: sda3 has different UUID to sdd6
<6>md: created md6
<6>md: bind<sda6>
<6>md: bind<sdb6>
<6>md: bind<sdc6>
<6>md: bind<sdd6>
<6>md: running: <sdd6><sdc6><sdb6><sda6>
<6>raid1: raid set md6 active with 4 out of 4 mirrors
<6>md: considering sdd5 ...
<6>md:  adding sdd5 ...
<4>md: sdd3 has different UUID to sdd5
<6>md:  adding sdc5 ...
<4>md: sdc3 has different UUID to sdd5
<6>md:  adding sdb5 ...
<4>md: sdb3 has different UUID to sdd5
<6>md:  adding sda5 ...
<4>md: sda3 has different UUID to sdd5
<6>md: created md5
<6>md: bind<sda5>
<6>md: bind<sdb5>
<6>md: bind<sdc5>
<6>md: bind<sdd5>
<6>md: running: <sdd5><sdc5><sdb5><sda5>
<6>raid1: raid set md5 active with 4 out of 4 mirrors
<6>md: considering sdd3 ...
<6>md:  adding sdd3 ...
<6>md:  adding sdc3 ...
<6>md:  adding sdb3 ...
<6>md:  adding sda3 ...
<6>md: created md3
<6>md: bind<sda3>
<6>md: bind<sdb3>
<6>md: bind<sdc3>
<6>md: bind<sdd3>
<6>md: running: <sdd3><sdc3><sdb3><sda3>
<6>raid1: raid set md3 active with 4 out of 4 mirrors
<6>md: ... autorun DONE.
<5>RAMDISK: Compressed image found at block 0
<4>VFS: Mounted root (ext2 filesystem).
<6>ipmi message handler version 39.0
<6>IPMI System Interface driver.
<6>ipmi: Found new BMC (man_id: 0x0019fd,  prod_id: 0x1426, dev_id: 0x00)
<4> IPMI KCS interface initialized
<6>ipmi_si: Found default KCS state machine at I/O address 0xca2
<6>ipmi device interface
<6>e100: Intel(R) PRO/100 Network Driver, 3.5.10-k2-NAPI
<6>e100: Copyright(c) 1999-2005 Intel Corporation
<6>Intel(R) PRO/1000 Network Driver - version 7.0.33-k2
<6>Copyright (c) 1999-2005 Intel Corporation.
<6>ACPI: PCI Interrupt 0000:02:06.0[A] -> GSI 19 (level, low) -> IRQ 17
<6>e1000: 0000:02:06.0: e1000_probe: (PCI-X:133MHz:64-bit) 00:e0:81:64:5f:de
<6>e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
<6>ACPI: PCI Interrupt 0000:02:06.1[B] -> GSI 18 (level, low) -> IRQ 18
<6>e1000: 0000:02:06.1: e1000_probe: (PCI-X:133MHz:64-bit) 00:e0:81:64:5f:df
<6>e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection
<6>ACPI: PCI Interrupt 0000:03:07.0[A] -> GSI 17 (level, low) -> IRQ 19
<6>e1000: 0000:03:07.0: e1000_probe: (PCI-X:133MHz:64-bit) 00:e0:81:64:5f:e0
<6>e1000: eth2: e1000_probe: Intel(R) PRO/1000 Network Connection
<6>ACPI: PCI Interrupt 0000:03:07.1[B] -> GSI 16 (level, low) -> IRQ 16
<6>e1000: 0000:03:07.1: e1000_probe: (PCI-X:133MHz:64-bit) 00:e0:81:64:5f:e1
<6>e1000: eth3: e1000_probe: Intel(R) PRO/1000 Network Connection
<5>ReiserFS: md8: found reiserfs format "3.6" with standard journal
<5>ReiserFS: md8: using ordered data mode
<5>ReiserFS: md8: journal params: device md8, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
<5>ReiserFS: md8: checking transaction log (md8)
<5>ReiserFS: md8: Using r5 hash to sort names
<5>ReiserFS: md3: found reiserfs format "3.6" with standard journal
<5>ReiserFS: md3: using ordered data mode
<5>ReiserFS: md3: journal params: device md3, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
<5>ReiserFS: md3: checking transaction log (md3)
<5>ReiserFS: md3: Using r5 hash to sort names
<4>VFS: Mounted root (reiserfs filesystem) readonly.
<5>Trying to move old root to /initrd ... /initrd does not exist. Ignored.
<5>Unmounting old root
<5>Trying to free ramdisk memory ... okay
<6>Freeing unused kernel memory: 184k freed
<6>md: Autodetecting RAID arrays.
<6>md: autorun ...
<6>md: ... autorun DONE.
<5>ReiserFS: md7: found reiserfs format "3.6" with standard journal
<5>ReiserFS: md7: using ordered data mode
<5>ReiserFS: md7: journal params: device md7, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
<5>ReiserFS: md7: checking transaction log (md7)
<5>ReiserFS: md7: Using r5 hash to sort names
<5>ReiserFS: md8: found reiserfs format "3.6" with standard journal
<5>ReiserFS: md8: using ordered data mode
<5>ReiserFS: md8: journal params: device md8, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
<5>ReiserFS: md8: checking transaction log (md8)
<5>ReiserFS: md8: Using r5 hash to sort names
Kernel logging (ksyslog) stopped.
Kernel log daemon terminating.

Boot logging started on /dev/tty1(/dev/console) at Tue May 16 16:28:51 2006

Master Resource Control: previous runlevel: N, switching to runlevel: 3
<notice>start services (starting_services random iterator firewall)
Logging the start of the bootdone
Initializing random number generatordone
<notice>startproc: execve (/usr/bin/IterServ) [ /usr/bin/IterServ ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=20 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=2 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/usr/bin/IterServ ]
Starting iterator daemondone
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
<notice>exit status of (starting_services random iterator firewall) is (0 0 0 0)
<notice>start services (network)
Setting up network interfaces:
    lo       
    lo        IP address: 127.0.0.1/8   
done    eth0      device: Intel Corporation 82546GB Gigabit Ethernet Controller (rev 03)
    eth0      Startmode is 'manual'
skipped    eth1      device: Intel Corporation 82546GB Gigabit Ethernet Controller (rev 03)
    eth1      Startmode is 'manual'
skipped    eth2      device: Intel Corporation 82546GB Gigabit Ethernet Controller (rev 03)
    eth2      IP address: 10.241.28.82/29   
Shutting down external SSH daemondone
Starting external SSH daemon<notice>startproc: execve (/usr/sbin/sshd_external) [ /usr/sbin/sshd_external -f /etc/ssh/sshd_config_external -o PidFile=/var/run/sshd_external.init.pid ], [ HWD_INTERFACE_0=eth2 CONSOLE=/dev/console HWD_HWDESC=eth2 TERM=linux SHELL=/bin/sh HWD_BUSID_0=0000:00:01.0 HWD_BUSNAME_2=pci HWD_BUSID_1=0000:01:00.0 HWD_BUSNAME_0=pci HWD_BUSID_2=0000:02:06.0 HWD_BUSNAME_1=pci HWD_VENDORID=0x8086 HWD_BUSID=0000:02:06.0 HWD_PRODUCTSUBID=0x1179 progress=24 HWD_CONFIG_N=1 INIT_VERSION=sysvinit-2.85 RUN_FROM_RC=yes REDIRECT=/dev/tty1 HWD_INTERFACEPATH=/sys/class/net/eth2 COLUMNS=80 HWD_DEVTYPE=eth HWD_ID=00:e0:81:64:5f:de HWD_BUSNAME=pci PATH=/sbin:/usr/sbin:/bin:/usr/bin:/etc/sysconfig/network/scripts RUNLEVEL=3 PWD=/etc/sysconfig/network PREVLEVEL=N LINES=25 HWD_HWDESCTYPE=interface HOME=/ SHLVL=6 BOOT_IMAGE=production-m HWD_CONFIG_0=eth2 HWD_BUS_N=3 sscripts=38 HWD_VENDORSUBID=0x8086 HWD_PRODUCTID=0x1079 HWD_INTERFACE_N=1 HWD_DEVICEPATH=/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:06.0 _=/sbin/startproc DAEMON=/usr/sbin/sshd_external ]
done
Shutting down external SSH daemon<notice>killproc: kill(5452,15)
done
Starting external SSH daemon<notice>startproc: execve (/usr/sbin/sshd_external) [ /usr/sbin/sshd_external -f /etc/ssh/sshd_config_external -o PidFile=/var/run/sshd_external.init.pid ], [ HWD_INTERFACE_0=eth2 CONSOLE=/dev/console HWD_HWDESC=eth2 TERM=linux SHELL=/bin/sh HWD_BUSID_0=0000:00:01.0 HWD_BUSNAME_2=pci HWD_BUSID_1=0000:01:00.0 HWD_BUSNAME_0=pci HWD_BUSID_2=0000:02:06.0 HWD_BUSNAME_1=pci HWD_VENDORID=0x8086 HWD_BUSID=0000:02:06.0 HWD_PRODUCTSUBID=0x1179 progress=24 HWD_CONFIG_N=1 INIT_VERSION=sysvinit-2.85 RUN_FROM_RC=yes REDIRECT=/dev/tty1 HWD_INTERFACEPATH=/sys/class/net/eth2 COLUMNS=80 HWD_DEVTYPE=eth HWD_ID=00:e0:81:64:5f:de HWD_BUSNAME=pci PATH=/sbin:/usr/sbin:/bin:/usr/bin:/etc/sysconfig/network/scripts RUNLEVEL=3 PWD=/etc/sysconfig/network PREVLEVEL=N LINES=25 HWD_HWDESCTYPE=interface HOME=/ SHLVL=6 BOOT_IMAGE=production-m HWD_CONFIG_0=eth2 HWD_BUS_N=3 sscripts=38 HWD_VENDORSUBID=0x8086 HWD_PRODUCTID=0x1079 HWD_INTERFACE_N=1 HWD_DEVICEPATH=/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:06.0 _=/sbin/startproc DAEMON=/usr/sbin/sshd_external ]
done
WARNING: pinging broadcast address
PING 10.241.28.87 (10.241.28.87) from 10.241.28.82 eth2: 56(84) bytes of data.

--- 10.241.28.87 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

grep: /etc/resolv.conf: No such file or directory
unix dgram connect: No such file or directory at /usr/lib/perl5/site_perl/5.8.3/Log/Agent/Channel/Syslog.pm line 119
no connection to syslog available at /usr/lib/perl5/site_perl/5.8.3/Log/Agent/Channel/Syslog.pm line 119
done    eth3      device: Intel Corporation 82546GB Gigabit Ethernet Controller (rev 03)
    eth3      No configuration found for eth3
unusedSetting up service network  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .done
<notice>exit status of (network) is (0)
<notice>start services (syslog)
Starting syslog services<notice>startproc: execve (/sbin/syslogd) [ /sbin/syslogd -a /var/lib/dhcp/dev/log ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=25 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=2 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/sbin/syslogd ]
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@  syslogd: Can't bind unix unix socket to name: Address already in use

<notice>startproc: execve (/sbin/klogd) [ /sbin/klogd -c 1 -2 -x ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=25 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=2 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/sbin/klogd ]
done
<notice>exit status of (syslog) is (0)
<notice>start services (smartd)
Generating /etc/smartd.conf: Disabling SMART on this node.
done<notice>exit status of (smartd) is (0)
<notice>start services (xinetd microcode_ctl microcode)
<notice>startproc: execve (/usr/sbin/xinetd) [ /usr/sbin/xinetd ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=27 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=2 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/usr/sbin/xinetd ]
Checking/updating CPU microcodedone
Applying Intel IA32 Microcode update... 
done

Starting INET services. (xinetd)done
<notice>exit status of (xinetd microcode_ctl microcode) is (0 0 0)
<notice>start services (clusternet)
Starting cluster networking backgrounding
<notice>exit status of (clusternet) is (0)
<notice>start services (clusternetwait)
Waiting for clusternet IP detection to finish: waiting 1swaiting 2swaiting 3swaiting 4swaiting 5swaiting 6swaiting 7swaiting 8swaiting 9swaiting 10swaiting 11swaiting 12swaiting 13swaiting 14swaiting 15swaiting 16swaiting 17swaiting 18swaiting 19swaiting 20swaiting 21swaiting 22swaiting 23swaiting 24swaiting 25swaiting 26swaiting 27swaiting 28swaiting 29swaiting 30swaiting 31swaiting 32swaiting 33s<notice>startproc: execve (/usr/sbin/sshd) [ /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=30 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=4 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/usr/sbin/sshd ]
<notice>startproc: execve (/usr/sbin/ntpd) [ /usr/sbin/ntpd -p /var/lib/ntp/var/run/ntp/ntpd.pid -U ntp ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=30 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=4 BOOT_IMAGE=production-m sscripts=38 OLDPWD=/var/local/bootstat _=/sbin/startproc DAEMON=/usr/sbin/ntpd ]
<notice>checkproc: /usr/sbin/ntpd 5859
waiting 34swaiting 35swaiting 36swaiting 37swaiting 38swaiting 39swaiting 40swaiting 41swaiting 42swaiting 43swaiting 44swaiting 45swaiting 46swaiting 47swaiting 48swaiting 49swaiting 50swaiting 51swaiting 52swaiting 53swaiting 54swaiting 55swaiting 56swaiting 57swaiting 58swaiting 59swaiting 60swaiting 61swaiting 62s<notice>killproc: kill(5813,15)
waiting 63s<notice>startproc: execve (/usr/sbin/sshd) [ /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=30 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=4 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/usr/sbin/sshd ]
Started cluster networking done
waiting 64s                               done
Change hostname to c001n01 done
<notice>exit status of (clusternetwait) is (0)
<notice>start services (connectemc)
Starting ConnectEMC <notice>startproc: execve (/opt/connectemc/connectemc) [ /opt/connectemc/connectemc ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=32 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=2 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/opt/connectemc/connectemc ]
done
<notice>exit status of (connectemc) is (0)
<notice>start services (cron blobpartitions)
<notice>startproc: execve (/usr/sbin/cron) [ /usr/sbin/cron ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=33 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=2 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/usr/sbin/cron ]
Starting CRON daemondone
Start activating blob partition /dev/cstardn10
Start activating blob partition /dev/cstardo10
Start activating blob partition /dev/cstardp10
Start activating blob partition /dev/cstardm10
Finish mounting blob partition /dev/cstardp10:done
Finish mounting blob partition /dev/cstardm10:done
Start activating blob partition /dev/cstardm11
Finish mounting blob partition /dev/cstardn10:done
Start activating blob partition /dev/cstardn11
Finish mounting blob partition /dev/cstardo10:done
Start activating blob partition /dev/cstardo11
Start activating blob partition /dev/cstardp11
Finish mounting blob partition /dev/cstardm11:done
Start activating blob partition /dev/cstardm12
Finish mounting blob partition /dev/cstardo11:done
Start activating blob partition /dev/cstardo12
Finish mounting blob partition /dev/cstardn11:done
Start activating blob partition /dev/cstardn12
Finish mounting blob partition /dev/cstardp11:done
Finish mounting blob partition /dev/cstardm12:done
Finish mounting blob partition /dev/cstardo12:done
Start activating blob partition /dev/cstardo13
Finish mounting blob partition /dev/cstardn12:done
Start activating blob partition /dev/cstardn13
Start activating blob partition /dev/cstardp12
Start activating blob partition /dev/cstardm13
Finish mounting blob partition /dev/cstardn13:done
Start activating blob partition /dev/cstardn14
Finish mounting blob partition /dev/cstardp12:done
Start activating blob partition /dev/cstardp13
Finish mounting blob partition /dev/cstardm13:done
Start activating blob partition /dev/cstardm14
Finish mounting blob partition /dev/cstardo13:done
Start activating blob partition /dev/cstardo14
Finish mounting blob partition /dev/cstardp13:done
Start activating blob partition /dev/cstardp14
Finish mounting blob partition /dev/cstardm14:done
Finish mounting blob partition /dev/cstardn14:done
Finish mounting blob partition /dev/cstardo14:done
Finish mounting blob partition /dev/cstardp14:done
<notice>exit status of (cron blobpartitions) is (0 0)
<notice>start services (inventory fragmentcounter)
Removing old imagesStarting fragment counter: done
<notice>exit status of (inventory fragmentcounter) is (0 0)
<notice>start services (filepool)
Starting FilePool software FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
done
<notice>exit status of (filepool) is (0)
<notice>start services (successful_boot)
Setting GRUB for a production boot on disks:
    /dev/cstardm;/dev/cstardn;/dev/cstardo;/dev/cstardpdone
<notice>exit status of (successful_boot) is (0)
Master Resource Control: runlevel 3 has been reached
<notice>killproc: kill(4858,3)

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 23:11             ` Eric D. Mudama
@ 2006-05-17  2:13               ` Ric Wheeler
  0 siblings, 0 replies; 113+ messages in thread
From: Ric Wheeler @ 2006-05-17  2:13 UTC (permalink / raw)
  To: Eric D. Mudama; +Cc: Jeff Garzik, Tejun Heo, linux-ide, Mark Lord, Jens Axboe


Eric D. Mudama wrote:

> On 5/16/06, Jeff Garzik <jeff@garzik.org> wrote:
>
>> Ric Wheeler wrote:
>> > But when I test with my synchronous write load, I am going at 6 times
>> > the normal rate (i.e., the rate I see with barriers disabled) ;-)
>>
>> Well, NCQ read/write commands have a 'FUA' bit...  though maybe the NCQ
>> code forgot to check the global libata_fua.
>>
>>         Jeff
>
>
> Is the workload a sequential write?  SATA drives should be able to
> keep up with the media if they use FUA for their consistency when
> using NCQ.
>
> Flush cache as a barrier mechanism will blow revs in sequential
> workloads, especially using a write/flush write/flush technique.


That would be a huge win for us, but this instance I mounted with 
barrier=flush (and that is the logged message in messages).  I suspect 
that our boot with write cache disabled + flip of the write cache to on 
during boot is the culprit...

Once we get past the basic working/not working barriers, I will retest 
the FUA vs flush barriers and post some results ;-)

ric


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 23:44         ` Tejun Heo
  2006-05-16 23:53           ` Jeff Garzik
@ 2006-05-17  2:16           ` Ric Wheeler
  1 sibling, 0 replies; 113+ messages in thread
From: Ric Wheeler @ 2006-05-17  2:16 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jeff Garzik, linux-ide, Mark Lord, Jens Axboe

[-- Attachment #1: Type: text/plain, Size: 2358 bytes --]



Tejun Heo wrote:

> Ric Wheeler wrote:
>
>> c001n01: 0: [  OK  ]
>> ata3: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
>> 0x2000000f)
>> ata3: spurious SDB FIS 004040a1:10000000 ap->qc_active=2000000f 
>> qc_active=2000000f
>> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
>> 0xfffc0)
>> ata1: spurious SDB FIS 004040a1:00000020 ap->qc_active=000fffc0 
>> qc_active=000fffc0
>> ata2: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
>> 0x7fffff3f)
>> ata2: spurious SDB FIS 004040a1:00000080 ap->qc_active=7fffff3f 
>> qc_active=7fffff3f
>> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
>> 0x7fffff9f)
>> ata1: spurious SDB FIS 004040a1:00000040 ap->qc_active=7fffff9f 
>> qc_active=7fffff9f
>> c001n03: 0: [  OK  ]
>> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
>> 0x7ffe7fff)
>> ata1: spurious SDB FIS 004040a1:00010000 ap->qc_active=7ffe7fff 
>> qc_active=7ffe7fff
>> c001n04: 0: [  OK  ]
>> ata3: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
>> 0x31)
>> ata3: spurious SDB FIS 004040a1:00000008 ap->qc_active=00000031 
>> qc_active=00000031
>> ata3: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
>> 0x7fff800f)
>> ata3: spurious SDB FIS 004040a1:00004000 ap->qc_active=7fff800f 
>> qc_active=7fff800f
>> c001n06: 1: [ FAIL ]
>> c001n07: 0: [  OK  ]
>> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
>> 0x7ffffcff)
>> ata1: spurious SDB FIS 004040a1:00000200 ap->qc_active=7ffffcff 
>> qc_active=7ffffcff
>> c001n08: 0: [  OK  ]
>> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 
>> 0x4fffffff)
>> ata1: spurious SDB FIS 004040a1:20000000 ap->qc_active=4fffffff 
>> qc_active=4fffffff
>
>
> Hmmm.. The drive is issuing SDB FIS which completes already completed 
> tags.  This could be dangerous.  Depending on timing, it might end up 
> finishing a command which occupied the slot which hasn't been 
> processed yet.  If a drive does this, NCQ shouldn't be enabled for 
> it.  Can you post full boot dmesg?
>
> I'm attaching slightly modified version of the debug patch just in 
> case.  It will probably show the same thing.
>
>  
>
This is the same box that had the barrier issue, but I will repost the 
boot.msg for anyone paying attention just to one thread ;-)

ric


[-- Attachment #2: boot.msg --]
[-- Type: text/plain, Size: 52682 bytes --]

Cannot find map file.
No module symbols loaded - kernel modules not enabled.

Cannot build symbol table - disabling symbol lookups
klogd 1.4.1, log source = ksyslog started.
00000, GSI 0-23
<6>ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
<6>ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
<7>ACPI: IRQ0 used by override.
<7>ACPI: IRQ2 used by override.
<7>ACPI: IRQ9 used by override.
<4>Enabling APIC mode:  Flat.  Using 1 I/O APICs
<6>Using ACPI (MADT) for SMP configuration information
<4>Allocating PCI resources starting at 40000000 (gap: 3f700000:a0900000)
<4>Built 1 zonelists
<5>Kernel command line: root=/dev/md3 elevator=as console=ttyS0,9600,8n1 console=tty0 apic BOOT_IMAGE=production-m
<7>mapped APIC to ffffd000 (fee00000)
<7>mapped IOAPIC to ffffc000 (fec00000)
<6>Enabling fast FPU save and restore... done.
<6>Enabling unmasked SIMD FPU exception support... done.
<6>Initializing CPU#0
<4>PID hash table entries: 4096 (order: 12, 16384 bytes)
<4>Detected 2800.792 MHz processor.
<6>Using pmtmr for high-res timesource
<4>Console: colour VGA+ 80x25
<4>Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
<4>Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
<6>Memory: 898240k/917504k available (2014k kernel code, 18720k reserved, 632k data, 184k init, 0k highmem)
<4>Checking if this processor honours the WP bit even in supervisor mode... Ok.
<4>Calibrating delay using timer specific routine.. 5607.13 BogoMIPS (lpj=11214265)
<4>Mount-cache hash table entries: 512
<7>CPU: After generic identify, caps: bfebfbff 00100000 00000000 00000000 0000441d 00000000 00000000
<7>CPU: After vendor identify, caps: bfebfbff 00100000 00000000 00000000 0000441d 00000000 00000000
<4>monitor/mwait feature present.
<4>using mwait in idle threads.
<6>CPU: Trace cache: 12K uops, L1 D cache: 16K
<6>CPU: L2 cache: 1024K
<7>CPU: After all inits, caps: bfebfbff 00100000 00000000 00000180 0000441d 00000000 00000000
<4>CPU: Intel(R) Pentium(R) 4 CPU 2.80GHz stepping 01
<6>Checking 'hlt' instruction... OK.
<6>SMP alternatives: switching to UP code
<6>Freeing SMP alternatives: 0k freed
<4>ENABLING IO-APIC IRQs
<6>..TIMER: vector=0x31 apic1=0 pin1=2 apic2=-1 pin2=-1
<6>checking if image is initramfs...it isn't (no cpio magic); looks like an initrd
<6>Freeing initrd memory: 7738k freed
<6>NET: Registered protocol family 16
<6>ACPI: bus type pci registered
<6>PCI: Using MMCONFIG
<4>Setting up standard PCI resources
<6>ACPI: Subsystem revision 20060127
<6>ACPI: Interpreter enabled
<6>ACPI: Using IOAPIC for interrupt routing
<6>ACPI: PCI Root Bridge [PCI0] (0000:00)
<7>PCI: Probing PCI hardware (bus 00)
<7>Boot video device is 0000:00:02.0
<4>PCI: PXH quirk detected, disabling MSI for SHPC device
<4>PCI: PXH quirk detected, disabling MSI for SHPC device
<6>PCI: Transparent bridge - 0000:00:1e.0
<7>ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
<7>ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.HUB0._PRT]
<7>ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P1AB.PXHA._PRT]
<7>ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P1AB.PXHB._PRT]
<4>ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 9 10 *12 14 15)
<4>ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 *5 7 9 10 12 14 15)
<4>ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 *7 9 10 12 14 15)
<4>ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 7 9 *10 12 14 15)
<4>ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 9 10 12 14 15) *0, disabled.
<4>ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 9 10 12 14 15) *0, disabled.
<4>ACPI: PCI Interrupt Link [LNK0] (IRQs 3 4 5 7 9 10 12 14 15) *0, disabled.
<4>ACPI: PCI Interrupt Link [LNK1] (IRQs *3 4 5 7 9 10 12 14 15)
<5>SCSI subsystem initialized
<6>PCI: Using ACPI for IRQ routing
<6>PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a report
<4>PCI: Ignore bogus resource 6 [0:0] of 0000:00:02.0
<6>PCI: Bridge: 0000:01:00.0
<6>  IO window: c000-cfff
<6>  MEM window: d0000000-d00fffff
<6>  PREFETCH window: disabled.
<6>PCI: Bridge: 0000:01:00.2
<6>  IO window: d000-dfff
<6>  MEM window: d0100000-d01fffff
<6>  PREFETCH window: disabled.
<6>PCI: Bridge: 0000:00:01.0
<6>  IO window: c000-dfff
<6>  MEM window: d0000000-d02fffff
<6>  PREFETCH window: disabled.
<6>PCI: Bridge: 0000:00:1e.0
<6>  IO window: disabled.
<6>  MEM window: disabled.
<6>  PREFETCH window: disabled.
<6>ACPI: PCI Interrupt 0000:00:01.0[A] -> GSI 16 (level, low) -> IRQ 16
<7>PCI: Setting latency timer of device 0000:00:01.0 to 64
<7>PCI: Setting latency timer of device 0000:01:00.0 to 64
<7>PCI: Setting latency timer of device 0000:01:00.2 to 64
<7>PCI: Setting latency timer of device 0000:00:1e.0 to 64
<6>NET: Registered protocol family 2
<4>IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
<4>TCP established hash table entries: 131072 (order: 7, 524288 bytes)
<4>TCP bind hash table entries: 65536 (order: 6, 262144 bytes)
<6>TCP: Hash tables configured (established 131072 bind 65536)
<6>TCP reno registered
<6>IA-32 Microcode Update Driver: v1.14 <tigran@veritas.com>
<6>io scheduler noop registered
<6>io scheduler anticipatory registered (default)
<6>io scheduler deadline registered
<6>io scheduler cfq registered
<6>Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
<6>serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
<4>RAMDISK driver initialized: 16 RAM disks of 32768K size 1024 blocksize
<6>Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
<6>ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
<7>Probing IDE interface ide0...
<7>Probing IDE interface ide1...
<7>libata version 1.30 loaded.
<7>ahci 0000:00:1f.2: version 1.3
<6>ACPI: PCI Interrupt 0000:00:1f.2[B] -> GSI 19 (level, low) -> IRQ 17
<7>PCI: Setting latency timer of device 0000:00:1f.2 to 64
<6>ahci 0000:00:1f.2: AHCI 0001.0000 32 slots 4 ports 1.5 Gbps 0xf impl IDE mode
<6>ahci 0000:00:1f.2: flags: 64bit ncq pm led 
<6>ata1: SATA max UDMA/133 cmd 0xF8802100 ctl 0x0 bmdma 0x0 irq 17
<6>ata2: SATA max UDMA/133 cmd 0xF8802180 ctl 0x0 bmdma 0x0 irq 17
<6>ata3: SATA max UDMA/133 cmd 0xF8802200 ctl 0x0 bmdma 0x0 irq 17
<6>ata4: SATA max UDMA/133 cmd 0xF8802280 ctl 0x0 bmdma 0x0 irq 17
<6>ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
<7>ata1.00: cfg 49:2f00 82:7c6b 83:7f09 84:4063 85:7c49 86:3e01 87:4063 88:007f
<6>ata1.00: ATA-7, max UDMA/133, 625142448 sectors: LBA48 NCQ (depth 31/32)
<6>ata1.00: configured for UDMA/133
<6>scsi0 : ahci
<6>ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
<7>ata2.00: cfg 49:2f00 82:7c6b 83:7f09 84:4063 85:7c49 86:3e01 87:4063 88:007f
<6>ata2.00: ATA-7, max UDMA/133, 625142448 sectors: LBA48 NCQ (depth 31/32)
<6>ata2.00: configured for UDMA/133
<6>scsi1 : ahci
<6>ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
<7>ata3.00: cfg 49:2f00 82:7c6b 83:7f09 84:4063 85:7c49 86:3e01 87:4063 88:007f
<6>ata3.00: ATA-7, max UDMA/133, 625142448 sectors: LBA48 NCQ (depth 31/32)
<6>ata3.00: configured for UDMA/133
<6>scsi2 : ahci
<6>ata4: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
<7>ata4.00: cfg 49:2f00 82:7c6b 83:7f09 84:4063 85:7c49 86:3e01 87:4063 88:007f
<6>ata4.00: ATA-7, max UDMA/133, 625142448 sectors: LBA48 NCQ (depth 31/32)
<6>ata4.00: configured for UDMA/133
<6>scsi3 : ahci
<5>  Vendor: ATA       Model: Maxtor 7B320S0    Rev: BANC
<5>  Type:   Direct-Access                      ANSI SCSI revision: 05
<5>  Vendor: ATA       Model: Maxtor 7B320S0    Rev: BANC
<5>  Type:   Direct-Access                      ANSI SCSI revision: 05
<5>  Vendor: ATA       Model: Maxtor 7B320S0    Rev: BANC
<5>  Type:   Direct-Access                      ANSI SCSI revision: 05
<5>  Vendor: ATA       Model: Maxtor 7B320S0    Rev: BANC
<5>  Type:   Direct-Access                      ANSI SCSI revision: 05
<5>SCSI device sda: 625142448 512-byte hdwr sectors (320073 MB)
<5>sda: Write Protect is off
<7>sda: Mode Sense: 00 3a 00 00
<5>SCSI device sda: drive cache: write through
<5>SCSI device sda: 625142448 512-byte hdwr sectors (320073 MB)
<5>sda: Write Protect is off
<7>sda: Mode Sense: 00 3a 00 00
<5>SCSI device sda: drive cache: write through
<6> sda: sda1 sda2 sda3 sda4 < sda5 sda6 sda7 sda8 sda9 sda10 sda11 sda12 sda13 sda14 >
<5>sd 0:0:0:0: Attached scsi disk sda
<5>SCSI device sdb: 625142448 512-byte hdwr sectors (320073 MB)
<5>sdb: Write Protect is off
<7>sdb: Mode Sense: 00 3a 00 00
<5>SCSI device sdb: drive cache: write through
<5>SCSI device sdb: 625142448 512-byte hdwr sectors (320073 MB)
<5>sdb: Write Protect is off
<7>sdb: Mode Sense: 00 3a 00 00
<5>SCSI device sdb: drive cache: write through
<6> sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 sdb6 sdb7 sdb8 sdb9 sdb10 sdb11 sdb12 sdb13 sdb14 >
<5>sd 1:0:0:0: Attached scsi disk sdb
<5>SCSI device sdc: 625142448 512-byte hdwr sectors (320073 MB)
<5>sdc: Write Protect is off
<7>sdc: Mode Sense: 00 3a 00 00
<5>SCSI device sdc: drive cache: write through
<5>SCSI device sdc: 625142448 512-byte hdwr sectors (320073 MB)
<5>sdc: Write Protect is off
<7>sdc: Mode Sense: 00 3a 00 00
<5>SCSI device sdc: drive cache: write through
<6> sdc: sdc1 sdc2 sdc3 sdc4 < sdc5 sdc6 sdc7 sdc8 sdc9 sdc10 sdc11 sdc12 sdc13 sdc14 >
<5>sd 2:0:0:0: Attached scsi disk sdc
<5>SCSI device sdd: 625142448 512-byte hdwr sectors (320073 MB)
<5>sdd: Write Protect is off
<7>sdd: Mode Sense: 00 3a 00 00
<5>SCSI device sdd: drive cache: write through
<5>SCSI device sdd: 625142448 512-byte hdwr sectors (320073 MB)
<5>sdd: Write Protect is off
<7>sdd: Mode Sense: 00 3a 00 00
<5>SCSI device sdd: drive cache: write through
<6> sdd: sdd1 sdd2 sdd3 sdd4 < sdd5 sdd6 sdd7 sdd8 sdd9 sdd10 sdd11 sdd12 sdd13 sdd14 >
<5>sd 3:0:0:0: Attached scsi disk sdd
<6>serio: i8042 AUX port at 0x60,0x64 irq 12
<6>serio: i8042 KBD port at 0x60,0x64 irq 1
<6>mice: PS/2 mouse device common for all mice
<6>i2c /dev entries driver
<6>md: raid1 personality registered for level 1
<6>md: md driver 0.90.3 MAX_MD_DEVS=256, MD_SB_DISKS=27
<6>md: bitmap version 4.39
<6>TCP bic registered
<6>NET: Registered protocol family 1
<4>Using IPI Shortcut mode
<4>ACPI wakeup devices: 
<4>PCI0 PEX0 PEX1 PEX2 PEX3 HUB0 PXHA PXHB UAR1 USB0 USB1 USB2 USB3 USBE AC97 AZAL 
<6>ACPI: (supports S0 S1 S4 S5)
<6>md: Autodetecting RAID arrays.
<6>md: autorun ...
<6>md: considering sdd8 ...
<6>md:  adding sdd8 ...
<4>md: sdd7 has different UUID to sdd8
<4>md: sdd6 has different UUID to sdd8
<4>md: sdd5 has different UUID to sdd8
<4>md: sdd3 has different UUID to sdd8
<6>md:  adding sdc8 ...
<4>md: sdc7 has different UUID to sdd8
<4>md: sdc6 has different UUID to sdd8
<4>md: sdc5 has different UUID to sdd8
<4>md: sdc3 has different UUID to sdd8
<6>md:  adding sdb8 ...
<4>md: sdb7 has different UUID to sdd8
<4>md: sdb6 has different UUID to sdd8
<4>md: sdb5 has different UUID to sdd8
<4>md: sdb3 has different UUID to sdd8
<6>md:  adding sda8 ...
<4>md: sda7 has different UUID to sdd8
<4>md: sda6 has different UUID to sdd8
<4>md: sda5 has different UUID to sdd8
<4>md: sda3 has different UUID to sdd8
<6>md: created md8
<6>md: bind<sda8>
<6>md: bind<sdb8>
<6>md: bind<sdc8>
<6>md: bind<sdd8>
<6>md: running: <sdd8><sdc8><sdb8><sda8>
<6>raid1: raid set md8 active with 4 out of 4 mirrors
<6>md: considering sdd7 ...
<6>md:  adding sdd7 ...
<4>md: sdd6 has different UUID to sdd7
<4>md: sdd5 has different UUID to sdd7
<4>md: sdd3 has different UUID to sdd7
<6>md:  adding sdc7 ...
<4>md: sdc6 has different UUID to sdd7
<4>md: sdc5 has different UUID to sdd7
<4>md: sdc3 has different UUID to sdd7
<6>md:  adding sdb7 ...
<4>md: sdb6 has different UUID to sdd7
<4>md: sdb5 has different UUID to sdd7
<4>md: sdb3 has different UUID to sdd7
<6>md:  adding sda7 ...
<4>md: sda6 has different UUID to sdd7
<4>md: sda5 has different UUID to sdd7
<4>md: sda3 has different UUID to sdd7
<6>md: created md7
<6>md: bind<sda7>
<6>md: bind<sdb7>
<6>md: bind<sdc7>
<6>md: bind<sdd7>
<6>md: running: <sdd7><sdc7><sdb7><sda7>
<6>raid1: raid set md7 active with 4 out of 4 mirrors
<6>md: considering sdd6 ...
<6>md:  adding sdd6 ...
<4>md: sdd5 has different UUID to sdd6
<4>md: sdd3 has different UUID to sdd6
<6>md:  adding sdc6 ...
<4>md: sdc5 has different UUID to sdd6
<4>md: sdc3 has different UUID to sdd6
<6>md:  adding sdb6 ...
<4>md: sdb5 has different UUID to sdd6
<4>md: sdb3 has different UUID to sdd6
<6>md:  adding sda6 ...
<4>md: sda5 has different UUID to sdd6
<4>md: sda3 has different UUID to sdd6
<6>md: created md6
<6>md: bind<sda6>
<6>md: bind<sdb6>
<6>md: bind<sdc6>
<6>md: bind<sdd6>
<6>md: running: <sdd6><sdc6><sdb6><sda6>
<6>raid1: raid set md6 active with 4 out of 4 mirrors
<6>md: considering sdd5 ...
<6>md:  adding sdd5 ...
<4>md: sdd3 has different UUID to sdd5
<6>md:  adding sdc5 ...
<4>md: sdc3 has different UUID to sdd5
<6>md:  adding sdb5 ...
<4>md: sdb3 has different UUID to sdd5
<6>md:  adding sda5 ...
<4>md: sda3 has different UUID to sdd5
<6>md: created md5
<6>md: bind<sda5>
<6>md: bind<sdb5>
<6>md: bind<sdc5>
<6>md: bind<sdd5>
<6>md: running: <sdd5><sdc5><sdb5><sda5>
<6>raid1: raid set md5 active with 4 out of 4 mirrors
<6>md: considering sdd3 ...
<6>md:  adding sdd3 ...
<6>md:  adding sdc3 ...
<6>md:  adding sdb3 ...
<6>md:  adding sda3 ...
<6>md: created md3
<6>md: bind<sda3>
<6>md: bind<sdb3>
<6>md: bind<sdc3>
<6>md: bind<sdd3>
<6>md: running: <sdd3><sdc3><sdb3><sda3>
<6>raid1: raid set md3 active with 4 out of 4 mirrors
<6>md: ... autorun DONE.
<5>RAMDISK: Compressed image found at block 0
<4>VFS: Mounted root (ext2 filesystem).
<6>ipmi message handler version 39.0
<6>IPMI System Interface driver.
<6>ipmi: Found new BMC (man_id: 0x0019fd,  prod_id: 0x1426, dev_id: 0x00)
<4> IPMI KCS interface initialized
<6>ipmi_si: Found default KCS state machine at I/O address 0xca2
<6>ipmi device interface
<6>e100: Intel(R) PRO/100 Network Driver, 3.5.10-k2-NAPI
<6>e100: Copyright(c) 1999-2005 Intel Corporation
<6>Intel(R) PRO/1000 Network Driver - version 7.0.33-k2
<6>Copyright (c) 1999-2005 Intel Corporation.
<6>ACPI: PCI Interrupt 0000:02:06.0[A] -> GSI 19 (level, low) -> IRQ 17
<6>e1000: 0000:02:06.0: e1000_probe: (PCI-X:133MHz:64-bit) 00:e0:81:64:5f:de
<6>e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
<6>ACPI: PCI Interrupt 0000:02:06.1[B] -> GSI 18 (level, low) -> IRQ 18
<6>e1000: 0000:02:06.1: e1000_probe: (PCI-X:133MHz:64-bit) 00:e0:81:64:5f:df
<6>e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection
<6>ACPI: PCI Interrupt 0000:03:07.0[A] -> GSI 17 (level, low) -> IRQ 19
<6>e1000: 0000:03:07.0: e1000_probe: (PCI-X:133MHz:64-bit) 00:e0:81:64:5f:e0
<6>e1000: eth2: e1000_probe: Intel(R) PRO/1000 Network Connection
<6>ACPI: PCI Interrupt 0000:03:07.1[B] -> GSI 16 (level, low) -> IRQ 16
<6>e1000: 0000:03:07.1: e1000_probe: (PCI-X:133MHz:64-bit) 00:e0:81:64:5f:e1
<6>e1000: eth3: e1000_probe: Intel(R) PRO/1000 Network Connection
<5>ReiserFS: md8: found reiserfs format "3.6" with standard journal
<5>ReiserFS: md8: using ordered data mode
<5>ReiserFS: md8: journal params: device md8, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
<5>ReiserFS: md8: checking transaction log (md8)
<5>ReiserFS: md8: Using r5 hash to sort names
<5>ReiserFS: md3: found reiserfs format "3.6" with standard journal
<5>ReiserFS: md3: using ordered data mode
<5>ReiserFS: md3: journal params: device md3, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
<5>ReiserFS: md3: checking transaction log (md3)
<5>ReiserFS: md3: Using r5 hash to sort names
<4>VFS: Mounted root (reiserfs filesystem) readonly.
<5>Trying to move old root to /initrd ... /initrd does not exist. Ignored.
<5>Unmounting old root
<5>Trying to free ramdisk memory ... okay
<6>Freeing unused kernel memory: 184k freed
<6>md: Autodetecting RAID arrays.
<6>md: autorun ...
<6>md: ... autorun DONE.
<5>ReiserFS: md7: found reiserfs format "3.6" with standard journal
<5>ReiserFS: md7: using ordered data mode
<5>ReiserFS: md7: journal params: device md7, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
<5>ReiserFS: md7: checking transaction log (md7)
<5>ReiserFS: md7: Using r5 hash to sort names
<5>ReiserFS: md8: found reiserfs format "3.6" with standard journal
<5>ReiserFS: md8: using ordered data mode
<5>ReiserFS: md8: journal params: device md8, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
<5>ReiserFS: md8: checking transaction log (md8)
<5>ReiserFS: md8: Using r5 hash to sort names
Kernel logging (ksyslog) stopped.
Kernel log daemon terminating.

Boot logging started on /dev/tty1(/dev/console) at Tue May 16 16:28:51 2006

Master Resource Control: previous runlevel: N, switching to runlevel: 3
<notice>start services (starting_services random iterator firewall)
Logging the start of the bootdone
Initializing random number generatordone
<notice>startproc: execve (/usr/bin/IterServ) [ /usr/bin/IterServ ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=20 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=2 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/usr/bin/IterServ ]
Starting iterator daemondone
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
<notice>exit status of (starting_services random iterator firewall) is (0 0 0 0)
<notice>start services (network)
Setting up network interfaces:
    lo       
    lo        IP address: 127.0.0.1/8   
done    eth0      device: Intel Corporation 82546GB Gigabit Ethernet Controller (rev 03)
    eth0      Startmode is 'manual'
skipped    eth1      device: Intel Corporation 82546GB Gigabit Ethernet Controller (rev 03)
    eth1      Startmode is 'manual'
skipped    eth2      device: Intel Corporation 82546GB Gigabit Ethernet Controller (rev 03)
    eth2      IP address: 10.241.28.82/29   
Shutting down external SSH daemondone
Starting external SSH daemon<notice>startproc: execve (/usr/sbin/sshd_external) [ /usr/sbin/sshd_external -f /etc/ssh/sshd_config_external -o PidFile=/var/run/sshd_external.init.pid ], [ HWD_INTERFACE_0=eth2 CONSOLE=/dev/console HWD_HWDESC=eth2 TERM=linux SHELL=/bin/sh HWD_BUSID_0=0000:00:01.0 HWD_BUSNAME_2=pci HWD_BUSID_1=0000:01:00.0 HWD_BUSNAME_0=pci HWD_BUSID_2=0000:02:06.0 HWD_BUSNAME_1=pci HWD_VENDORID=0x8086 HWD_BUSID=0000:02:06.0 HWD_PRODUCTSUBID=0x1179 progress=24 HWD_CONFIG_N=1 INIT_VERSION=sysvinit-2.85 RUN_FROM_RC=yes REDIRECT=/dev/tty1 HWD_INTERFACEPATH=/sys/class/net/eth2 COLUMNS=80 HWD_DEVTYPE=eth HWD_ID=00:e0:81:64:5f:de HWD_BUSNAME=pci PATH=/sbin:/usr/sbin:/bin:/usr/bin:/etc/sysconfig/network/scripts RUNLEVEL=3 PWD=/etc/sysconfig/network PREVLEVEL=N LINES=25 HWD_HWDESCTYPE=interface HOME=/ SHLVL=6 BOOT_IMAGE=production-m HWD_CONFIG_0=eth2 HWD_BUS_N=3 sscripts=38 HWD_VENDORSUBID=0x8086 HWD_PRODUCTID=0x1079 HWD_INTERFACE_N=1 HWD_DEVICEPATH=/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:06.0 _=/sbin/startproc DAEMON=/usr/sbin/sshd_external ]
done
Shutting down external SSH daemon<notice>killproc: kill(5452,15)
done
Starting external SSH daemon<notice>startproc: execve (/usr/sbin/sshd_external) [ /usr/sbin/sshd_external -f /etc/ssh/sshd_config_external -o PidFile=/var/run/sshd_external.init.pid ], [ HWD_INTERFACE_0=eth2 CONSOLE=/dev/console HWD_HWDESC=eth2 TERM=linux SHELL=/bin/sh HWD_BUSID_0=0000:00:01.0 HWD_BUSNAME_2=pci HWD_BUSID_1=0000:01:00.0 HWD_BUSNAME_0=pci HWD_BUSID_2=0000:02:06.0 HWD_BUSNAME_1=pci HWD_VENDORID=0x8086 HWD_BUSID=0000:02:06.0 HWD_PRODUCTSUBID=0x1179 progress=24 HWD_CONFIG_N=1 INIT_VERSION=sysvinit-2.85 RUN_FROM_RC=yes REDIRECT=/dev/tty1 HWD_INTERFACEPATH=/sys/class/net/eth2 COLUMNS=80 HWD_DEVTYPE=eth HWD_ID=00:e0:81:64:5f:de HWD_BUSNAME=pci PATH=/sbin:/usr/sbin:/bin:/usr/bin:/etc/sysconfig/network/scripts RUNLEVEL=3 PWD=/etc/sysconfig/network PREVLEVEL=N LINES=25 HWD_HWDESCTYPE=interface HOME=/ SHLVL=6 BOOT_IMAGE=production-m HWD_CONFIG_0=eth2 HWD_BUS_N=3 sscripts=38 HWD_VENDORSUBID=0x8086 HWD_PRODUCTID=0x1079 HWD_INTERFACE_N=1 HWD_DEVICEPATH=/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:06.0 _=/sbin/startproc DAEMON=/usr/sbin/sshd_external ]
done
WARNING: pinging broadcast address
PING 10.241.28.87 (10.241.28.87) from 10.241.28.82 eth2: 56(84) bytes of data.

--- 10.241.28.87 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

grep: /etc/resolv.conf: No such file or directory
unix dgram connect: No such file or directory at /usr/lib/perl5/site_perl/5.8.3/Log/Agent/Channel/Syslog.pm line 119
no connection to syslog available at /usr/lib/perl5/site_perl/5.8.3/Log/Agent/Channel/Syslog.pm line 119
done    eth3      device: Intel Corporation 82546GB Gigabit Ethernet Controller (rev 03)
    eth3      No configuration found for eth3
unusedSetting up service network  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .done
<notice>exit status of (network) is (0)
<notice>start services (syslog)
Starting syslog services<notice>startproc: execve (/sbin/syslogd) [ /sbin/syslogd -a /var/lib/dhcp/dev/log ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=25 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=2 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/sbin/syslogd ]
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@  syslogd: Can't bind unix unix socket to name: Address already in use

<notice>startproc: execve (/sbin/klogd) [ /sbin/klogd -c 1 -2 -x ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=25 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=2 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/sbin/klogd ]
done
<notice>exit status of (syslog) is (0)
<notice>start services (smartd)
Generating /etc/smartd.conf: Disabling SMART on this node.
done<notice>exit status of (smartd) is (0)
<notice>start services (xinetd microcode_ctl microcode)
<notice>startproc: execve (/usr/sbin/xinetd) [ /usr/sbin/xinetd ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=27 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=2 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/usr/sbin/xinetd ]
Checking/updating CPU microcodedone
Applying Intel IA32 Microcode update... 
done

Starting INET services. (xinetd)done
<notice>exit status of (xinetd microcode_ctl microcode) is (0 0 0)
<notice>start services (clusternet)
Starting cluster networking backgrounding
<notice>exit status of (clusternet) is (0)
<notice>start services (clusternetwait)
Waiting for clusternet IP detection to finish: waiting 1swaiting 2swaiting 3swaiting 4swaiting 5swaiting 6swaiting 7swaiting 8swaiting 9swaiting 10swaiting 11swaiting 12swaiting 13swaiting 14swaiting 15swaiting 16swaiting 17swaiting 18swaiting 19swaiting 20swaiting 21swaiting 22swaiting 23swaiting 24swaiting 25swaiting 26swaiting 27swaiting 28swaiting 29swaiting 30swaiting 31swaiting 32swaiting 33s<notice>startproc: execve (/usr/sbin/sshd) [ /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=30 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=4 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/usr/sbin/sshd ]
<notice>startproc: execve (/usr/sbin/ntpd) [ /usr/sbin/ntpd -p /var/lib/ntp/var/run/ntp/ntpd.pid -U ntp ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=30 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=4 BOOT_IMAGE=production-m sscripts=38 OLDPWD=/var/local/bootstat _=/sbin/startproc DAEMON=/usr/sbin/ntpd ]
<notice>checkproc: /usr/sbin/ntpd 5859
waiting 34swaiting 35swaiting 36swaiting 37swaiting 38swaiting 39swaiting 40swaiting 41swaiting 42swaiting 43swaiting 44swaiting 45swaiting 46swaiting 47swaiting 48swaiting 49swaiting 50swaiting 51swaiting 52swaiting 53swaiting 54swaiting 55swaiting 56swaiting 57swaiting 58swaiting 59swaiting 60swaiting 61swaiting 62s<notice>killproc: kill(5813,15)
waiting 63s<notice>startproc: execve (/usr/sbin/sshd) [ /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=30 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=4 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/usr/sbin/sshd ]
Started cluster networking done
waiting 64s                               done
Change hostname to c001n01 done
<notice>exit status of (clusternetwait) is (0)
<notice>start services (connectemc)
Starting ConnectEMC <notice>startproc: execve (/opt/connectemc/connectemc) [ /opt/connectemc/connectemc ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=32 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=2 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/opt/connectemc/connectemc ]
done
<notice>exit status of (connectemc) is (0)
<notice>start services (cron blobpartitions)
<notice>startproc: execve (/usr/sbin/cron) [ /usr/sbin/cron ], [ CONSOLE=/dev/console TERM=linux SHELL=/bin/sh progress=33 INIT_VERSION=sysvinit-2.85 REDIRECT=/dev/tty1 COLUMNS=80 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin RUNLEVEL=3 PWD=/ PREVLEVEL=N LINES=25 HOME=/ SHLVL=2 BOOT_IMAGE=production-m sscripts=38 _=/sbin/startproc DAEMON=/usr/sbin/cron ]
Starting CRON daemondone
Start activating blob partition /dev/cstardn10
Start activating blob partition /dev/cstardo10
Start activating blob partition /dev/cstardp10
Start activating blob partition /dev/cstardm10
Finish mounting blob partition /dev/cstardp10:done
Finish mounting blob partition /dev/cstardm10:done
Start activating blob partition /dev/cstardm11
Finish mounting blob partition /dev/cstardn10:done
Start activating blob partition /dev/cstardn11
Finish mounting blob partition /dev/cstardo10:done
Start activating blob partition /dev/cstardo11
Start activating blob partition /dev/cstardp11
Finish mounting blob partition /dev/cstardm11:done
Start activating blob partition /dev/cstardm12
Finish mounting blob partition /dev/cstardo11:done
Start activating blob partition /dev/cstardo12
Finish mounting blob partition /dev/cstardn11:done
Start activating blob partition /dev/cstardn12
Finish mounting blob partition /dev/cstardp11:done
Finish mounting blob partition /dev/cstardm12:done
Finish mounting blob partition /dev/cstardo12:done
Start activating blob partition /dev/cstardo13
Finish mounting blob partition /dev/cstardn12:done
Start activating blob partition /dev/cstardn13
Start activating blob partition /dev/cstardp12
Start activating blob partition /dev/cstardm13
Finish mounting blob partition /dev/cstardn13:done
Start activating blob partition /dev/cstardn14
Finish mounting blob partition /dev/cstardp12:done
Start activating blob partition /dev/cstardp13
Finish mounting blob partition /dev/cstardm13:done
Start activating blob partition /dev/cstardm14
Finish mounting blob partition /dev/cstardo13:done
Start activating blob partition /dev/cstardo14
Finish mounting blob partition /dev/cstardp13:done
Start activating blob partition /dev/cstardp14
Finish mounting blob partition /dev/cstardm14:done
Finish mounting blob partition /dev/cstardn14:done
Finish mounting blob partition /dev/cstardo14:done
Finish mounting blob partition /dev/cstardp14:done
<notice>exit status of (cron blobpartitions) is (0 0)
<notice>start services (inventory fragmentcounter)
Removing old imagesStarting fragment counter: done
<notice>exit status of (inventory fragmentcounter) is (0 0)
<notice>start services (filepool)
Starting FilePool software FATAL: Module ip_tables not found.
iptables v1.2.9: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
done
<notice>exit status of (filepool) is (0)
<notice>start services (successful_boot)
Setting GRUB for a production boot on disks:
    /dev/cstardm;/dev/cstardn;/dev/cstardo;/dev/cstardpdone
<notice>exit status of (successful_boot) is (0)
Master Resource Control: runlevel 3 has been reached
<notice>killproc: kill(4858,3)

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  0:57                   ` Tejun Heo
@ 2006-05-17  2:22                     ` Ric Wheeler
  2006-05-17  1:37                       ` Tejun Heo
  0 siblings, 1 reply; 113+ messages in thread
From: Ric Wheeler @ 2006-05-17  2:22 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jeff Garzik, linux-ide, Mark Lord, Jens Axboe



Tejun Heo wrote:

> Tejun Heo wrote:
>
>> Jeff Garzik wrote:
>>
>>> Actually, looking even more at the code, I think the entire 
>>> "spurious interrupt" code block is bogus.
>>>
>>> The device is free to send D2H or SDB FIS to clear Status bits, as 
>>> well as SDB FIS's to update SActive.  The ata_qc_complete_multiple() 
>>> call will do the right thing, even if there is no work to do.
>>
>>
>> Yes, they are, but...
>>
>> * Please note that SActive update via SDB FIS is edge-triggered.  It 
>> doesn't send the whole image of the register.  The SActive bits in 
>> SDB FIS indicate W1C (this is inevitable because controller and 
>> device cannot be in full synchronization regarding SActive).  So, 
>> they have can have dangerous side effects.
>>
>> * Those spurious FISes are actively setting the I bit requesting 
>> interrupt explicitly.  Those are not innocent status update FISes.  
>> And the spec state machines don't allow D2H FISes during NCQ command 
>> phase.  I seem to recollect it's actually forbidden explicitly but 
>> currently cannot find where.  I'll keep looking.
>
>
> Oops, strike out the part about D2H not allowed.  It certainly is 
> allowed to clear BSY.  Sorry.

(Trying to keep up ;-))

Is there still value in testing your last patch?

ric


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  1:27                   ` Tejun Heo
@ 2006-05-17  2:26                     ` Jeff Garzik
  2006-05-17  3:05                       ` Tejun Heo
  2006-05-22  7:19                     ` Jeff Garzik
  1 sibling, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-17  2:26 UTC (permalink / raw)
  To: Tejun Heo; +Cc: ric, linux-ide, Mark Lord, Jens Axboe

Tejun Heo wrote:
> Jeff Garzik wrote:
>> Tejun Heo wrote:
>>> Jeff Garzik wrote:
>>>> Jeff Garzik wrote:
>>>>> Tejun Heo wrote:
>>>>>> Hmmm.. The drive is issuing SDB FIS which completes already 
>>>>>> completed tags.  This could be dangerous.  Depending on timing, it 
>>>>>> might end up finishing a command which occupied the slot which 
>>>>>> hasn't been processed yet.  If a drive does this, NCQ shouldn't be 
>>>>>> enabled for it.  Can you post full boot dmesg?
>>>>>
>>>>> I'm not sure the data supports that conclusion?  PORT_IRQ_SDB_FIS 
>>>>> is quite normal and expected during NCQ operation, if that 
>>>>> interrupt is enabled.  Just normal SDB:Entry and SDB:SetIntr states.
>>>>
>>>> Strike that last part:  PORT_IRQ_SDB_FIS will appear, as with other 
>>>> status bits, even if the enable bit is not set.
>>>>
>>>> So, you'll see that whenever you get an SDB FIS during normal 
>>>> operation.
>>>
>>> The problem is with the second dword.  Here are some of spurious SDB 
>>> FISes Ric's AHCI was receiving.
>>>
>>> 004040a1:10000000
>>> 004040a1:00000020
>>> 004040a1:00000080
>>>
>>> If the second dword were all zero, it's simply SDB FIS turning on IRQ 
>>> (bit 14 of the first dword) and there's nothing to worry about. 
>>> However, all those spurious SDBs have one bit set in the second dword 
>>> - meaning the SDB completes the corresponding tag, but the tag isn't 
>>> active when those SDBs are received.
>>>
>>> This is okay as long as the controller thinks the tags are unoccupied 
>>> when those SDBs are received, but it's not something which can be 
>>> guaranteed.  NCQ command synchronization depends on devices not 
>>> completing the same commands more than once.
>>>
>>> The duplicate completions might be okay if the drive guarantees it 
>>> doesn't send it if it loses to command issuance.  e.g.
>>>
>>> 1. drive sends completion for tag x
>>> 2. drive shortly schedules another completion for tag x (spurious)
>>> 3. ahci/driver complete tag x
>>> 4. ahci/driver issues tag x
>>> 5. drive receives command for tag x before sending the spurious 
>>> completion and determines not to send the spurious completion. (not 
>>> very likely)
>>>
>>> If above is true, the drive might be okay, but nobody can guarantee 
>>> how  various controllers react.  It depends on how controllers manage 
>>> SActive (when to turn bits on).  At any rate, it's dangerous IMHO.
>>
>> If the silicon is screwing up SActive bits, then we have bigger 
>> problems than spurious interrupts.
>>
>> So, the typical policy of Internet servers applies here:  "be liberal 
>> in what you accept."  For smart controllers like AHCI, we will simply 
>> set the desired IRQ mask, then happily receive and ack events anytime 
>> the controller decides to raise them.  If the controller decides to 
>> send us a no-op, don't worry about it.  This is particularly true when 
>> we turn on Command Coalescing, where we'll have a run of work 
>> initiated [sometimes] by an internal timer, rather than an actual FIS 
>> reception.
> 
> I wish I could explain it better.  This is a clear protocol violation 
> from the drive.  Depending on specific implementation of the drive and 
> the controller, it can result in completion of command which is not 
> processed yet (data corruption!).

A spurious SDB FIS updating SActive is bad news, yes.  But with a busy 
AHCI controller, perhaps sharing PCI interrupts, I think there is 
distinct potential to be flagged as a spurious interrupt, when not.

But I'm taking a higher level view than that, from two angles:

1) I think its a waste of time to even worry about this.  We should just 
program AHCI to spec, and  let the controller and devices talk to each 
other as they will.  If there are spurious completions, that should show 
up elsewhere via tag poisoning and/or tag rotation.  Or data corruption, 
if nothing else.  We'll know, even without the potentially-questionable 
spurious interrupt detection code.

2) Given the factors mentioned above -- shared irq and busy 
multi-controller controller -- highly asynchronous conditions combine to 
create a higher probability of seeing events arrive while you're 
processing other events.  Overall, I feel that trying to accurately 
account for everything going on in silicon leads to madness and 
complexity :)  Just hand things to silicon, and trust that it either 
accurately accounts SDB FISs, or will be quite obviously broken under 
stress.


>> Side note:  remember that !BSY denotes that the device may accept 
>> another [NCQ] command (something AHCI doesn't appear to check...).  
>> The device is free within NCQ rules to give itself some breathing 
>> room, and not indicate its ready for new commands immediately.
>>
>> Currently it appears to be a bug in ahci that we do not check for 
>> !BSY, but simply assume the device is ready if queue is not full.
> 
> AFAIK, unless we do CLO explicitly, AHCI takes care of BSY waiting, NCQ 
> or not.

True, indeed.

	Jeff



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  2:26                     ` Jeff Garzik
@ 2006-05-17  3:05                       ` Tejun Heo
  0 siblings, 0 replies; 113+ messages in thread
From: Tejun Heo @ 2006-05-17  3:05 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: ric, linux-ide, Mark Lord, Jens Axboe

Jeff Garzik wrote:
> A spurious SDB FIS updating SActive is bad news, yes.  But with a busy 
> AHCI controller, perhaps sharing PCI interrupts, I think there is 
> distinct potential to be flagged as a spurious interrupt, when not.

You are talking about cases where the controller raises SDB IRQ without 
actually receiving one, right?  That is certainly possible and if this 
is the case, I'm very okay with eating the IRQ.

> But I'm taking a higher level view than that, from two angles:
> 
> 1) I think its a waste of time to even worry about this.  We should just 
> program AHCI to spec, and  let the controller and devices talk to each 
> other as they will.  If there are spurious completions, that should show 
> up elsewhere via tag poisoning and/or tag rotation.  Or data corruption, 
> if nothing else.  We'll know, even without the potentially-questionable 
> spurious interrupt detection code.
> 
> 2) Given the factors mentioned above -- shared irq and busy 
> multi-controller controller -- highly asynchronous conditions combine to 
> create a higher probability of seeing events arrive while you're 
> processing other events.  Overall, I feel that trying to accurately 
> account for everything going on in silicon leads to madness and 
> complexity :)  Just hand things to silicon, and trust that it either 
> accurately accounts SDB FISs, or will be quite obviously broken under 
> stress.

I see your point.  But I'm quite worried about this one, because

* This won't occur often and even when it occurs at the hardware level, 
it might be masked by processing delays in the kernel.  But when it 
blows, it will corrupt data silently.  We might not see such a report 
for months and even when it strikes pinpointing the origin will be 
extremely difficult.

* The danger of the race condition is not theoretical.  I think I can 
trigger it with AHCI.  AHCI delegates management of SActive register to 
the driver.

Remember the lost command completion bug in very early AHCI NCQ 
implementation?  It was caused by setting SActive after issuing the 
command.  Command completion SDB was received before SActive was cleared 
and when the IRQ handler kicks in afterward, it saw the bit which was 
set after completion and thus couldn't complete the command resulting in 
timeout.

This problem is similar except that it's the other way around.  From 
ahci_qc_issue()...

	if (qc->tf.protocol == ATA_PROT_NCQ)
		writel(1 << qc->tag, port_mmio + PORT_SCR_ACT);
	writel(1 << qc->tag, port_mmio + PORT_CMD_ISSUE);

Let's say we insert mdelay(10) between SActive setting and actual 
command issuance.  It will drastically increase the chance of receiving 
the spurious SDB FISes inbetween.  The following sequence is likely when 
such event occurs.

1. driver sets SActive bit for tag x
2. disk issues spurious SDB completion for tag x
3. ahci receives the SDB FIS, clears the corresponding SActive bit and 
raises interrupt
4. driver issues command for tag x and complete command issuance
5. IRQ handler kicks in sees that SActive for tag x is clear and 
completes the corresponding qc.
6. we now have data corruption.

I want to emphasize that SActive manipulation correctness is highly 
critical for NCQ integrity.  It's the thin thread the whole NCQ protocol 
hangs on.  Spurious SDB FIS amounts to random command completion without 
synchronization.  This is a serious problem which requires handling and 
I'm pretty sure I'm not being paranoid here.

I think detection of this problem proves the necessity for spurious 
interrupt reporting, at least until NCQ driver and hardware mature.  We 
still don't know how drives act with NCQ commands and definitely need to 
learn what sorts of culprits they have and how to work around them.  The 
spurious interrupt handling allows us to detect and diagnose such 
problems much better.

Am I making any sense?  I really wish I could write better.  Please give 
it some thoughts even if my writing sucks.  :-)

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  1:37                       ` Tejun Heo
@ 2006-05-17  3:57                         ` Ric Wheeler
  2006-05-17  4:44                           ` Tejun Heo
  0 siblings, 1 reply; 113+ messages in thread
From: Ric Wheeler @ 2006-05-17  3:57 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jeff Garzik, linux-ide, Mark Lord, Jens Axboe

[-- Attachment #1: Type: text/plain, Size: 572 bytes --]


Tejun Heo wrote:

> Ric Wheeler wrote:
>
>>
>> (Trying to keep up ;-))
>>
>> Is there still value in testing your last patch?
>>
>
> The result should be the same, so it's not really necessary.  But, 
> just in case, sticking that patch when you test the barrier would be 
> nice so that things can be verified again.

I applied both patches and rebooted - many minutes later & 94MB of log 
file, I ran my synchronous file write test (the last 200 lines of the 
log file is attached). Is more useful?

>
> Thanks for testing.
>
thanks for the code - this is great!

ric


[-- Attachment #2: messages_tail --]
[-- Type: text/plain, Size: 8696 bytes --]

May 17 03:30:54 centera kernel: [start_ordered           ]: BIO d08998c0 3357330 4096
May 17 03:30:54 centera kernel: [start_ordered           ]: ordered=1 in_flight=0
May 17 03:30:54 centera kernel: [blk_do_ordered          ]: start_ordered ed3553c0->dfe2bd28
May 17 03:30:54 centera kernel: [elv_next_request        ]: dfe2bd28 (bar)
May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: q->orderr=0 error=0
May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO f18ffa00 3357330 4096
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 seq=08 orderr=0 error=0
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence complete
May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: q->orderr=0 error=0
May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO f18ff300 3357330 4096
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 seq=08 orderr=0 error=0
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence complete
May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: q->orderr=0 error=0
May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO d0899600 3357330 4096
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 seq=08 orderr=0 error=0
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence complete
May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: q->orderr=0 error=0
May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO d08998c0 3357330 4096
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 seq=08 orderr=0 error=0
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence complete
May 17 03:30:54 centera kernel: [start_ordered           ]: ed3551c8 -> dfe2b1b8,dfe2b260,dfe2b308 infl=0
May 17 03:30:54 centera kernel: [start_ordered           ]: f18ff4c0 0 3357330 8 8 1 1 dfdd9000
May 17 03:30:54 centera kernel: [start_ordered           ]: BIO f18ff4c0 3357330 4096
May 17 03:30:54 centera kernel: [start_ordered           ]: ordered=1 in_flight=0
May 17 03:30:54 centera kernel: [blk_do_ordered          ]: start_ordered ed3551c8->dfe2b260
May 17 03:30:54 centera kernel: [elv_next_request        ]: dfe2b260 (bar)
May 17 03:30:54 centera kernel: [start_ordered           ]: ed355ba0 -> dfe2b550,dfe2b5f8,dfe2b6a0 infl=0
May 17 03:30:54 centera kernel: [start_ordered           ]: f18ffcc0 0 3357330 8 8 1 1 dff0b000
May 17 03:30:54 centera kernel: [start_ordered           ]: BIO f18ffcc0 3357330 4096
May 17 03:30:54 centera kernel: [start_ordered           ]: ordered=1 in_flight=0
May 17 03:30:54 centera kernel: [blk_do_ordered          ]: start_ordered ed355ba0->dfe2b5f8
May 17 03:30:54 centera kernel: [elv_next_request        ]: dfe2b5f8 (bar)
May 17 03:30:54 centera kernel: [start_ordered           ]: ed341318 -> dfe2b8e8,dfe2b990,dfe2ba38 infl=0
May 17 03:30:54 centera kernel: [start_ordered           ]: e413bf00 0 3357330 8 8 1 1 f7b57000
May 17 03:30:54 centera kernel: [start_ordered           ]: BIO e413bf00 3357330 4096
May 17 03:30:54 centera kernel: [start_ordered           ]: ordered=1 in_flight=0
May 17 03:30:54 centera kernel: [blk_do_ordered          ]: start_ordered ed341318->dfe2b990
May 17 03:30:54 centera kernel: [elv_next_request        ]: dfe2b990 (bar)
May 17 03:30:54 centera kernel: [start_ordered           ]: ed3553c0 -> dfe2bc80,dfe2bd28,dfe2bdd0 infl=0
May 17 03:30:54 centera kernel: [start_ordered           ]: d08993c0 0 3357330 8 8 1 1 df937000
May 17 03:30:54 centera kernel: [start_ordered           ]: BIO d08993c0 3357330 4096
May 17 03:30:54 centera kernel: [start_ordered           ]: ordered=1 in_flight=0
May 17 03:30:54 centera kernel: [blk_do_ordered          ]: start_ordered ed3553c0->dfe2bd28
May 17 03:30:54 centera kernel: [elv_next_request        ]: dfe2bd28 (bar)
May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: q->orderr=0 error=0
May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO f18ff4c0 3357330 4096
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 seq=08 orderr=0 error=0
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence complete
May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: q->orderr=0 error=0
May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO f18ffcc0 3357330 4096
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 seq=08 orderr=0 error=0
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence complete
May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: q->orderr=0 error=0
May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO e413bf00 3357330 4096
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 seq=08 orderr=0 error=0
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence complete
May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: q->orderr=0 error=0
May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO d08993c0 3357330 4096
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 seq=08 orderr=0 error=0
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence complete
May 17 03:30:54 centera kernel: [start_ordered           ]: ed3553c0 -> dfe2b1b8,dfe2b260,dfe2b308 infl=0
May 17 03:30:54 centera kernel: [start_ordered           ]: e413bf00 0 3357330 8 8 1 1 dfdd9000
May 17 03:30:54 centera kernel: [start_ordered           ]: BIO e413bf00 3357330 4096
May 17 03:30:54 centera kernel: [start_ordered           ]: ordered=1 in_flight=0
May 17 03:30:54 centera kernel: [blk_do_ordered          ]: start_ordered ed3553c0->dfe2b260
May 17 03:30:54 centera kernel: [elv_next_request        ]: dfe2b260 (bar)
May 17 03:30:54 centera kernel: [start_ordered           ]: ed341318 -> dfe2b550,dfe2b5f8,dfe2b6a0 infl=0
May 17 03:30:54 centera kernel: [start_ordered           ]: f18ffcc0 0 3357330 8 8 1 1 dff0b000
May 17 03:30:54 centera kernel: [start_ordered           ]: BIO f18ffcc0 3357330 4096
May 17 03:30:54 centera kernel: [start_ordered           ]: ordered=1 in_flight=0
May 17 03:30:54 centera kernel: [blk_do_ordered          ]: start_ordered ed341318->dfe2b5f8
May 17 03:30:54 centera kernel: [elv_next_request        ]: dfe2b5f8 (bar)
May 17 03:30:54 centera kernel: [start_ordered           ]: ed355ba0 -> dfe2b8e8,dfe2b990,dfe2ba38 infl=0
May 17 03:30:54 centera kernel: [start_ordered           ]: f18ff4c0 0 3357330 8 8 1 1 f7b57000
May 17 03:30:54 centera kernel: [start_ordered           ]: BIO f18ff4c0 3357330 4096
May 17 03:30:54 centera kernel: [start_ordered           ]: ordered=1 in_flight=0
May 17 03:30:54 centera kernel: [blk_do_ordered          ]: start_ordered ed355ba0->dfe2b990
May 17 03:30:54 centera kernel: [elv_next_request        ]: dfe2b990 (bar)
May 17 03:30:54 centera kernel: [start_ordered           ]: ed3551c8 -> dfe2bc80,dfe2bd28,dfe2bdd0 infl=0
May 17 03:30:54 centera kernel: [start_ordered           ]: d0899800 0 3357330 8 8 1 1 df937000
May 17 03:30:54 centera kernel: [start_ordered           ]: BIO d0899800 3357330 4096
May 17 03:30:54 centera kernel: [start_ordered           ]: ordered=1 in_flight=0
May 17 03:30:54 centera kernel: [blk_do_ordered          ]: start_ordered ed3551c8->dfe2bd28
May 17 03:30:54 centera kernel: [elv_next_request        ]: dfe2bd28 (bar)
May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: q->orderr=0 error=0
May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO e413bf00 3357330 4096
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 seq=08 orderr=0 error=0
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence complete
May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: q->orderr=0 error=0
May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO f18ffcc0 3357330 4096
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 seq=08 orderr=0 error=0
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence complete
May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: q->orderr=0 error=0
May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO f18ff4c0 3357330 4096
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 seq=08 orderr=0 error=0
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence complete
May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: q->orderr=0 error=0
May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO d0899800 3357330 4096
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 seq=08 orderr=0 error=0
May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence complete

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  3:57                         ` Ric Wheeler
@ 2006-05-17  4:44                           ` Tejun Heo
  2006-05-17 11:30                             ` Ric Wheeler
                                               ` (2 more replies)
  0 siblings, 3 replies; 113+ messages in thread
From: Tejun Heo @ 2006-05-17  4:44 UTC (permalink / raw)
  To: Ric Wheeler; +Cc: Jeff Garzik, linux-ide, Mark Lord, Jens Axboe

Ric Wheeler wrote:
> May 17 03:30:54 centera kernel: [start_ordered           ]: BIO d08998c0 3357330 4096
> May 17 03:30:54 centera kernel: [start_ordered           ]: ordered=1 in_flight=0
> May 17 03:30:54 centera kernel: [blk_do_ordered          ]: start_ordered ed3553c0->dfe2bd28
> May 17 03:30:54 centera kernel: [elv_next_request        ]: dfe2bd28 (bar)
> May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: q->orderr=0 error=0
> May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO f18ffa00 3357330 4096
> May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 seq=08 orderr=0 error=0
> May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence complete
> May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: q->orderr=0 error=0
> May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO f18ff300 3357330 4096
> May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 seq=08 orderr=0 error=0
> May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence complete
[--snip--]

Combined with your boot log, everything seems as expected.  Write cache 
is disabled, so the chosen ordered mode is 0x1 - DRAIN only.  In the log 
you've posted, there are no pending IOs on barrier issue, so the barrier 
is executed directly and then the sequence is complete.  If there were 
other requests pending, all that happens would be waiting for them to 
finish before issuing the barrier.

If you turned on write cache after the machine booted, what method did 
you use to turn on write cache?  If you issued the command directly 
using sg to an active device (usage count >= 1), SCSI doesn't snoop such 
commands and thus it won't adjust ordered mode automatically.  However, 
sd forces disk revalidation (and thus ordered reconfiguration) if you 
change cache mode via /sys/class/scsi_disk/X\:0\:0\:0/cache_type.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  2:05 ` Andrew Morton
@ 2006-05-17  4:49   ` Tejun Heo
  2006-05-17  4:56     ` Andrew Morton
  0 siblings, 1 reply; 113+ messages in thread
From: Tejun Heo @ 2006-05-17  4:49 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Jeff Garzik, linux-ide, linux-kernel, torvalds

Hello, Andrew.

Andrew Morton wrote:
[--snip--]
> [   44.719422] ata2.00: cfg 49:0f00 82:0000 83:0000 84:0000 85:0000 86:0000 87:0000 88:101f
> [   44.719425] ata2.00: ATAPI, max UDMA/66
> [   44.765263] ata2.00: applying bridge limits
> [   74.928836] ata2.01: qc timeout (cmd 0xa1)
> [   74.977811] ata2.01: failed to IDENTIFY (I/O error, err_mask=0x4)
> [   75.468853] ata2.00: cfg 49:0f00 82:0000 83:0000 84:0000 85:0000 86:0000 87:0000 88:101f
> [   75.468856] ata2.00: ATAPI, max UDMA/66
> [   75.514678] ata2.00: applying bridge limits
> [  105.674130] ata2.01: qc timeout (cmd 0xa1)

Did this device work with previous versions of kernel?

libata used to give up on the first failure during probe, so the boot 
time would have been shorter in failure cases.  I think controlled 
retries during boot probe is a good thing, but the timeout of 30s for 
IDENTIFY commands can be shortened, I guess.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  4:49   ` Tejun Heo
@ 2006-05-17  4:56     ` Andrew Morton
  2006-05-17  5:14       ` Tejun Heo
  0 siblings, 1 reply; 113+ messages in thread
From: Andrew Morton @ 2006-05-17  4:56 UTC (permalink / raw)
  To: Tejun Heo; +Cc: jeff, linux-ide, linux-kernel, torvalds

Tejun Heo <htejun@gmail.com> wrote:
>
> Hello, Andrew.
> 
> Andrew Morton wrote:
> [--snip--]
> > [   44.719422] ata2.00: cfg 49:0f00 82:0000 83:0000 84:0000 85:0000 86:0000 87:0000 88:101f
> > [   44.719425] ata2.00: ATAPI, max UDMA/66
> > [   44.765263] ata2.00: applying bridge limits
> > [   74.928836] ata2.01: qc timeout (cmd 0xa1)
> > [   74.977811] ata2.01: failed to IDENTIFY (I/O error, err_mask=0x4)
> > [   75.468853] ata2.00: cfg 49:0f00 82:0000 83:0000 84:0000 85:0000 86:0000 87:0000 88:101f
> > [   75.468856] ata2.00: ATAPI, max UDMA/66
> > [   75.514678] ata2.00: applying bridge limits
> > [  105.674130] ata2.01: qc timeout (cmd 0xa1)
> 
> Did this device work with previous versions of kernel?

No.  In fact, it doesn't even work with the 2.6.17-rc4-mm1 lineup plus the
latest git-libata-all.  It needs this tweak:

--- devel/drivers/scsi/ata_piix.c~2.6.17-rc4-mm1-ich8-fix	2006-05-16 18:36:12.000000000 -0700
+++ devel-akpm/drivers/scsi/ata_piix.c	2006-05-16 18:36:12.000000000 -0700
@@ -542,6 +542,14 @@ static unsigned int piix_sata_probe (str
 		port = map[base + i];
 		if (port < 0)
 			continue;
+		if (ap->flags & PIIX_FLAG_AHCI) {
+			/* FIXME: Port status of AHCI controllers
+			 * should be accessed in AHCI memory space.  */
+			if (pcs & 1 << port)
+				present_mask |= 1 << i;
+			else
+				pcs &= ~(1 << port);
+		}
 		if (ap->flags & PIIX_FLAG_IGNORE_PCS || pcs & 1 << (4 + port))
 			present_mask |= 1 << i;
 		else
_


> libata used to give up on the first failure during probe, so the boot 
> time would have been shorter in failure cases.

I don't recall anyone complaining?

>  I think controlled 
> retries during boot probe is a good thing, but the timeout of 30s for 
> IDENTIFY commands can be shortened, I guess.

We should do something, please.  It'll hurt kernel developers the most.

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  4:56     ` Andrew Morton
@ 2006-05-17  5:14       ` Tejun Heo
  2006-05-17  6:35         ` Tejun Heo
  0 siblings, 1 reply; 113+ messages in thread
From: Tejun Heo @ 2006-05-17  5:14 UTC (permalink / raw)
  To: Andrew Morton; +Cc: jeff, linux-ide, linux-kernel, torvalds

Andrew Morton wrote:
> Tejun Heo <htejun@gmail.com> wrote:
>> Hello, Andrew.
>>
>> Andrew Morton wrote:
>> [--snip--]
>>> [   44.719422] ata2.00: cfg 49:0f00 82:0000 83:0000 84:0000 85:0000 86:0000 87:0000 88:101f
>>> [   44.719425] ata2.00: ATAPI, max UDMA/66
>>> [   44.765263] ata2.00: applying bridge limits
>>> [   74.928836] ata2.01: qc timeout (cmd 0xa1)
>>> [   74.977811] ata2.01: failed to IDENTIFY (I/O error, err_mask=0x4)
>>> [   75.468853] ata2.00: cfg 49:0f00 82:0000 83:0000 84:0000 85:0000 86:0000 87:0000 88:101f
>>> [   75.468856] ata2.00: ATAPI, max UDMA/66
>>> [   75.514678] ata2.00: applying bridge limits
>>> [  105.674130] ata2.01: qc timeout (cmd 0xa1)
>> Did this device work with previous versions of kernel?
> 
> No.  In fact, it doesn't even work with the 2.6.17-rc4-mm1 lineup plus the
> latest git-libata-all.  It needs this tweak:
> 
> --- devel/drivers/scsi/ata_piix.c~2.6.17-rc4-mm1-ich8-fix	2006-05-16 18:36:12.000000000 -0700
> +++ devel-akpm/drivers/scsi/ata_piix.c	2006-05-16 18:36:12.000000000 -0700
> @@ -542,6 +542,14 @@ static unsigned int piix_sata_probe (str
>  		port = map[base + i];
>  		if (port < 0)
>  			continue;
> +		if (ap->flags & PIIX_FLAG_AHCI) {
> +			/* FIXME: Port status of AHCI controllers
> +			 * should be accessed in AHCI memory space.  */
> +			if (pcs & 1 << port)
> +				present_mask |= 1 << i;
> +			else
> +				pcs &= ~(1 << port);
> +		}
>  		if (ap->flags & PIIX_FLAG_IGNORE_PCS || pcs & 1 << (4 + port))
>  			present_mask |= 1 << i;
>  		else
> _

Ah.. I see.  This is the ata_piix ghosting problem where signature of 
the first device is duplicated in the second device causing libata to 
probe the second non-existent device.

>> libata used to give up on the first failure during probe, so the boot 
>> time would have been shorter in failure cases.
> 
> I don't recall anyone complaining?

One of sata_via + ATAPI probing problem might have been fixed by this. 
It still needs to be investigated further though.

>>  I think controlled 
>> retries during boot probe is a good thing, but the timeout of 30s for 
>> IDENTIFY commands can be shortened, I guess.
> 
> We should do something, please.  It'll hurt kernel developers the most.

I think the correct solution would be fixing the ghosting problem of the 
controller.  I'll look into it.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  5:14       ` Tejun Heo
@ 2006-05-17  6:35         ` Tejun Heo
  2006-05-18 11:24           ` Albert Lee
                             ` (2 more replies)
  0 siblings, 3 replies; 113+ messages in thread
From: Tejun Heo @ 2006-05-17  6:35 UTC (permalink / raw)
  To: Andrew Morton; +Cc: jeff, linux-ide, linux-kernel, torvalds

Tejun Heo wrote:
> Andrew Morton wrote:
>> No.  In fact, it doesn't even work with the 2.6.17-rc4-mm1 lineup plus 
>> the
>> latest git-libata-all.  It needs this tweak:
>>
>> --- devel/drivers/scsi/ata_piix.c~2.6.17-rc4-mm1-ich8-fix    
>> 2006-05-16 18:36:12.000000000 -0700
>> +++ devel-akpm/drivers/scsi/ata_piix.c    2006-05-16 
>> 18:36:12.000000000 -0700
>> @@ -542,6 +542,14 @@ static unsigned int piix_sata_probe (str
>>          port = map[base + i];
>>          if (port < 0)
>>              continue;
>> +        if (ap->flags & PIIX_FLAG_AHCI) {
>> +            /* FIXME: Port status of AHCI controllers
>> +             * should be accessed in AHCI memory space.  */
>> +            if (pcs & 1 << port)
>> +                present_mask |= 1 << i;
>> +            else
>> +                pcs &= ~(1 << port);
>> +        }
>>          if (ap->flags & PIIX_FLAG_IGNORE_PCS || pcs & 1 << (4 + port))
>>              present_mask |= 1 << i;
>>          else

The above patch doesn't do anything.  The only effect it has is setting 
present_mask according to enabled bits instead of present bits.  I think 
this patch might have helped with probing before the MAP tables for 
ICH6/7 are fixed.

I've done further testing.

* Symptom

ata_piix tries to probe non-existing slave device resulting in timeouts 
during boot probing.  This problem is aggravated by new probing updates 
as it retries two more times before giving up.

* Test results

PATA never has any problem with device detection via signature.  Only 
SATA is affected and interestingly only ATAPI device.  The following is 
the test result on my machine (ICH7R + PX716SA).

   1. combined mode : MAP [IDE IDE P1 P3]

	P1		P3
	-----------------------------
	PX716-SA	empty		P3 ghosted as ATAPI device
	empty		PX716-SA	okay
	PX716-SA	HDD		okay
	HDD		PX716-SA	okay

   2. SATA-only mode : MAP [P0 P2 P1 P3]

	P0		P2
	-----------------------------
	PX716-SA	empty		P2 ghosted as ATAPI device
	empty		PX716-SA	okay
	PX716-SA	HDD		okay
	HDD		PX716-SA	okay

	P1		P3
	-----------------------------
	Identical to #1.

To sum up, it happens when the master slot is occupied by an ATAPI 
device and the corresponding slave slot is empty.  The slave slot 
reports ATAPI signature (probably duplicated from the master) and passes 
all legacy presence test thus resulting in timeout on IDENTIFY.

In all above cases, the PCS register reported correct presence masks.

* Proposed solution

It seems that the only solution is to make use of the PCS presence bits 
somehow.  It is know that 6300ESB family of controllers have flaky 
presence bits (ata_piix marks them with PIIX_FLAG_IGNORE_PCS), but I 
couldn't find any document/errata for PCS bits for any other 
controllers.  So, we can use PCS for all !PIIX_FLAG_IGNORE_PCS 
controllers or take a conservative approach and make use of it only on 
cases where ghosting problem is reported (ICH7 and 8, I guess.  Can 
anyone test 6?).

Please note that we already use some use of the PCS value when probing 
SATA port.  If its value is zero, we skip the port.  It's done this way 
mainly due to historical reasons - until recently ata_piix didn't have 
MAP tables to map PM/PS/SM/SS to specific ports thus used the PCS values 
in rougher form.

Jeff, what do you think?

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  4:44                           ` Tejun Heo
@ 2006-05-17 11:30                             ` Ric Wheeler
  2006-05-17 20:45                             ` Ric Wheeler
  2006-05-17 21:01                             ` Mark Lord
  2 siblings, 0 replies; 113+ messages in thread
From: Ric Wheeler @ 2006-05-17 11:30 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jeff Garzik, linux-ide, Mark Lord, Jens Axboe


Tejun Heo wrote:

> Ric Wheeler wrote:
>
>> May 17 03:30:54 centera kernel: [start_ordered           ]: BIO 
>> d08998c0 3357330 4096
>> May 17 03:30:54 centera kernel: [start_ordered           ]: ordered=1 
>> in_flight=0
>> May 17 03:30:54 centera kernel: [blk_do_ordered          ]: 
>> start_ordered ed3553c0->dfe2bd28
>> May 17 03:30:54 centera kernel: [elv_next_request        ]: dfe2bd28 
>> (bar)
>> May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: 
>> q->orderr=0 error=0
>> May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO 
>> f18ffa00 3357330 4096
>> May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 
>> seq=08 orderr=0 error=0
>> May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence 
>> complete
>> May 17 03:30:54 centera kernel: [ordered_bio_endio       ]: 
>> q->orderr=0 error=0
>> May 17 03:30:54 centera kernel: [flush_dry_bio_endio     ]: BIO 
>> f18ff300 3357330 4096
>> May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: ordseq=17 
>> seq=08 orderr=0 error=0
>> May 17 03:30:54 centera kernel: [blk_ordered_complete_seq]: sequence 
>> complete
>
> [--snip--]
>
> Combined with your boot log, everything seems as expected.  Write 
> cache is disabled, so the chosen ordered mode is 0x1 - DRAIN only.  In 
> the log you've posted, there are no pending IOs on barrier issue, so 
> the barrier is executed directly and then the sequence is complete.  
> If there were other requests pending, all that happens would be 
> waiting for them to finish before issuing the barrier.
>
> If you turned on write cache after the machine booted, what method did 
> you use to turn on write cache?  If you issued the command directly 
> using sg to an active device (usage count >= 1), SCSI doesn't snoop 
> such commands and thus it won't adjust ordered mode automatically.  
> However, sd forces disk revalidation (and thus ordered 
> reconfiguration) if you change cache mode via 
> /sys/class/scsi_disk/X\:0\:0\:0/cache_type.
>
That is what I suspected...

The write cache gets set via hdparm (in the previous kernel we had just 
hacked the sd code to always assume write back/barriers until this /sys 
control came along ;-)).

What is the magic sequence to get the cache type to flip? My first tries 
to poke cache type leave it firmly in write through...

ric


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-16 14:57           ` Linus Torvalds
@ 2006-05-17 15:25             ` OGAWA Hirofumi
  2006-05-17 23:40               ` Linus Torvalds
  0 siblings, 1 reply; 113+ messages in thread
From: OGAWA Hirofumi @ 2006-05-17 15:25 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Avuton Olrich, Jeff Garzik, linux-ide, linux-kernel, akpm

Linus Torvalds <torvalds@osdl.org> writes:

> On Mon, 15 May 2006, Avuton Olrich wrote:
>
> diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c
> index 06dab00..49b9fea 100644
> --- a/arch/i386/pci/irq.c
> +++ b/arch/i386/pci/irq.c
> @@ -880,6 +880,7 @@ static int pcibios_lookup_irq(struct pci
>  	((!(pci_probe & PCI_USE_PIRQ_MASK)) || ((1 << irq) & mask)) ) {
>  		DBG(" -> got IRQ %d\n", irq);
>  		msg = "Found";
> +		eisa_set_level_irq(irq);
>  	} else if (newirq && r->set && (dev->class >> 8) != PCI_CLASS_DISPLAY_VGA) {
>  		DBG(" -> assigning IRQ %d", newirq);
>  		if (r->set(pirq_router_dev, dev, pirq, newirq)) {

I like it. I'd like to put this type stuff (fixes setting of 8259,
APIC, chipset, etc.) into pci...
-- 
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  4:44                           ` Tejun Heo
  2006-05-17 11:30                             ` Ric Wheeler
@ 2006-05-17 20:45                             ` Ric Wheeler
  2006-05-17 21:01                             ` Mark Lord
  2 siblings, 0 replies; 113+ messages in thread
From: Ric Wheeler @ 2006-05-17 20:45 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jeff Garzik, linux-ide, Mark Lord, Jens Axboe


One other area that I would be interested in helping to test is the 
hotplug support (for ahci or Marvell when Mark adds it to sata_mv). 

Any pending patches based on Jeff's update for hotplug ;-) ?

ric


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  4:44                           ` Tejun Heo
  2006-05-17 11:30                             ` Ric Wheeler
  2006-05-17 20:45                             ` Ric Wheeler
@ 2006-05-17 21:01                             ` Mark Lord
  2006-05-17 21:04                               ` Jeff Garzik
  2 siblings, 1 reply; 113+ messages in thread
From: Mark Lord @ 2006-05-17 21:01 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Ric Wheeler, Jeff Garzik, linux-ide, Jens Axboe

Tejun Heo wrote:
..
> sd forces disk revalidation (and thus ordered reconfiguration) if you 
> change cache mode via /sys/class/scsi_disk/X\:0\:0\:0/cache_type.

That's not implemented for libata --> the emulation in libata-scsi
rejects any attempt at a MODE_SELECT command, which is what the sysfs
attr triggers.

Wasn't there a patch to implement MODE_SELECT in libata once upon a time?

Cheers
-- 
Mark Lord
Real-Time Remedies Inc.
mlord@pobox.com

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17 21:01                             ` Mark Lord
@ 2006-05-17 21:04                               ` Jeff Garzik
  2006-05-17 21:50                                 ` Tejun Heo
  0 siblings, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-17 21:04 UTC (permalink / raw)
  To: Mark Lord; +Cc: Tejun Heo, Ric Wheeler, linux-ide, Jens Axboe

Mark Lord wrote:
> Tejun Heo wrote:
> ..
>> sd forces disk revalidation (and thus ordered reconfiguration) if you 
>> change cache mode via /sys/class/scsi_disk/X\:0\:0\:0/cache_type.
> 
> That's not implemented for libata --> the emulation in libata-scsi
> rejects any attempt at a MODE_SELECT command, which is what the sysfs
> attr triggers.
> 
> Wasn't there a patch to implement MODE_SELECT in libata once upon a time?

A couple iterations from Douglas Gilbert, probably in linux-scsi archives...

BTW, libata needs to trap IDENTIFY*DEVICE and update its cached copy of 
the identify page, whenever MODE SELECT or another independent entity 
issues IDENTIFY*DEVICE.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17 21:04                               ` Jeff Garzik
@ 2006-05-17 21:50                                 ` Tejun Heo
  2006-05-17 21:56                                   ` Mark Lord
  0 siblings, 1 reply; 113+ messages in thread
From: Tejun Heo @ 2006-05-17 21:50 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Mark Lord, Ric Wheeler, linux-ide, Jens Axboe

Jeff Garzik wrote:
> Mark Lord wrote:
>> Tejun Heo wrote:
>> ..
>>> sd forces disk revalidation (and thus ordered reconfiguration) if you 
>>> change cache mode via /sys/class/scsi_disk/X\:0\:0\:0/cache_type.
>>
>> That's not implemented for libata --> the emulation in libata-scsi
>> rejects any attempt at a MODE_SELECT command, which is what the sysfs
>> attr triggers.

I see.  I was just grepping for revalidation call.  It seems we're stuck 
then.

>> Wasn't there a patch to implement MODE_SELECT in libata once upon a time?
> 
> A couple iterations from Douglas Gilbert, probably in linux-scsi 
> archives...
> 
> BTW, libata needs to trap IDENTIFY*DEVICE and update its cached copy of 
> the identify page, whenever MODE SELECT or another independent entity 
> issues IDENTIFY*DEVICE.

Right.  Also, we need to snoop some passthrough commands and 
revalidate/reconfigure when configuration is explicitly changed.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17 21:50                                 ` Tejun Heo
@ 2006-05-17 21:56                                   ` Mark Lord
  2006-05-17 22:00                                     ` Jeff Garzik
  2006-05-18  3:33                                     ` Ric Wheeler
  0 siblings, 2 replies; 113+ messages in thread
From: Mark Lord @ 2006-05-17 21:56 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jeff Garzik, Mark Lord, Ric Wheeler, linux-ide, Jens Axboe

[-- Attachment #1: Type: text/plain, Size: 443 bytes --]

Tejun Heo wrote:
> ..
> Right.  Also, we need to snoop some passthrough commands and 
> revalidate/reconfigure when configuration is explicitly changed.

Once the sysfs attr's actually work, I'll probably re-do my hdparm
stuff to detect use them when available, avoiding the need for libata
to snoop passthrough commands.  But Jeff may (or not) want to snoop anyway.

As a workaround for now, Ric is using the ugly hack attached here.

Cheers

[-- Attachment #2: wce_change_detect.patch --]
[-- Type: text/x-patch, Size: 1147 bytes --]

--- linux/drivers/scsi/libata-scsi.c.orig	2006-05-15 14:20:27.000000000 -0400
+++ linux/drivers/scsi/libata-scsi.c	2006-05-17 17:50:11.000000000 -0400
@@ -2479,6 +2479,18 @@
 		goto invalid_fld;
 
 	/*
+	 * Filter: detect changes to WCE on the drive
+	 */
+	if (tf->command == ATA_CMD_SET_FEATURES && (tf->feature & 0x7f) == 2) {
+		extern void sd_set_WCE(struct device *, int);
+		struct scsi_device *sdev = qc->scsicmd->device;
+		struct device *dev = &sdev->sdev_gendev;
+		unsigned int wce = tf->feature == 2 ? 1 : 0;
+		qc->dev->id[85] = (qc->dev->id[85] & ~(1 << 5)) | (wce << 5);
+		sd_set_WCE(dev, wce);
+	}
+
+	/*
 	 * Set flags so that all registers will be written,
 	 * and pass on write indication (used for PIO/DMA
 	 * setup.)
--- linux/drivers/scsi/sd.c.orig	2005-12-12 18:50:34.000000000 -0500
+++ linux/drivers/scsi/sd.c	2006-03-06 15:09:44.000000000 -0500
@@ -1828,5 +1828,12 @@
 		unregister_blkdev(sd_major(i), "sd");
 }
 
+void sd_set_WCE (struct device *dev, int off_on)
+{
+	struct scsi_disk *sdkp = dev_get_drvdata(dev);
+	sdkp->WCE = off_on;
+}
+EXPORT_SYMBOL(sd_set_WCE);
+
 module_init(init_sd);
 module_exit(exit_sd);

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17 21:56                                   ` Mark Lord
@ 2006-05-17 22:00                                     ` Jeff Garzik
  2006-05-17 22:03                                       ` Mark Lord
  2006-05-18  3:33                                     ` Ric Wheeler
  1 sibling, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-17 22:00 UTC (permalink / raw)
  To: Mark Lord; +Cc: Tejun Heo, Mark Lord, Ric Wheeler, linux-ide, Jens Axboe

Mark Lord wrote:
> Tejun Heo wrote:
>> ..
>> Right.  Also, we need to snoop some passthrough commands and 
>> revalidate/reconfigure when configuration is explicitly changed.
> 
> Once the sysfs attr's actually work, I'll probably re-do my hdparm
> stuff to detect use them when available, avoiding the need for libata
> to snoop passthrough commands.  But Jeff may (or not) want to snoop anyway.

We _have_ to snoop some commands, like SET FEATURES - XFER MODE.

Its just a given... you gotta either maintain cached state, or you gotta 
notice when its stale.

	Jeff



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17 22:00                                     ` Jeff Garzik
@ 2006-05-17 22:03                                       ` Mark Lord
  2006-05-17 22:13                                         ` Jeff Garzik
  0 siblings, 1 reply; 113+ messages in thread
From: Mark Lord @ 2006-05-17 22:03 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Tejun Heo, Ric Wheeler, linux-ide, Jens Axboe

Jeff Garzik wrote:
>
>> Once the sysfs attr's actually work, I'll probably re-do my hdparm
>> stuff to detect use them when available, avoiding the need for libata
>> to snoop passthrough commands.  But Jeff may (or not) want to snoop 
>> anyway.
> 
> We _have_ to snoop some commands, like SET FEATURES - XFER MODE.
> 
> Its just a given... you gotta either maintain cached state, or you gotta 
> notice when its stale.

Ah then, I suppose libata might as well snoop the write-cache on/off
(SET FEATURES) command as well.  We need some kind of API or something
to avoid the nasty layering violation that my hack uses.. I wonder if
we can just do a revalidate disk or something?

Cheers

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17 22:03                                       ` Mark Lord
@ 2006-05-17 22:13                                         ` Jeff Garzik
  0 siblings, 0 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-17 22:13 UTC (permalink / raw)
  To: Mark Lord; +Cc: Tejun Heo, Ric Wheeler, linux-ide, Jens Axboe

Mark Lord wrote:
> Jeff Garzik wrote:
>>
>>> Once the sysfs attr's actually work, I'll probably re-do my hdparm
>>> stuff to detect use them when available, avoiding the need for libata
>>> to snoop passthrough commands.  But Jeff may (or not) want to snoop 
>>> anyway.
>>
>> We _have_ to snoop some commands, like SET FEATURES - XFER MODE.
>>
>> Its just a given... you gotta either maintain cached state, or you 
>> gotta notice when its stale.
> 
> Ah then, I suppose libata might as well snoop the write-cache on/off
> (SET FEATURES) command as well.  We need some kind of API or something
> to avoid the nasty layering violation that my hack uses.. I wonder if
> we can just do a revalidate disk or something?

Either way.  Revalidation falls under the "notice when its stale" 
category above, certainly a viable solution.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17 15:25             ` OGAWA Hirofumi
@ 2006-05-17 23:40               ` Linus Torvalds
  2006-05-17 23:48                 ` Jeff Garzik
  2006-05-17 23:49                 ` Linus Torvalds
  0 siblings, 2 replies; 113+ messages in thread
From: Linus Torvalds @ 2006-05-17 23:40 UTC (permalink / raw)
  To: OGAWA Hirofumi; +Cc: Avuton Olrich, Jeff Garzik, linux-ide, linux-kernel, akpm



On Thu, 18 May 2006, OGAWA Hirofumi wrote:

> Linus Torvalds <torvalds@osdl.org> writes:
> 
> > On Mon, 15 May 2006, Avuton Olrich wrote:
> >
> > diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c
> > index 06dab00..49b9fea 100644
> > --- a/arch/i386/pci/irq.c
> > +++ b/arch/i386/pci/irq.c
> > @@ -880,6 +880,7 @@ static int pcibios_lookup_irq(struct pci
> >  	((!(pci_probe & PCI_USE_PIRQ_MASK)) || ((1 << irq) & mask)) ) {
> >  		DBG(" -> got IRQ %d\n", irq);
> >  		msg = "Found";
> > +		eisa_set_level_irq(irq);
> >  	} else if (newirq && r->set && (dev->class >> 8) != PCI_CLASS_DISPLAY_VGA) {
> >  		DBG(" -> assigning IRQ %d", newirq);
> >  		if (r->set(pirq_router_dev, dev, pirq, newirq)) {
> 
> I like it. I'd like to put this type stuff (fixes setting of 8259,
> APIC, chipset, etc.) into pci...

Andrew, can you put the one-liner into -mm and see if it gathers any 
reports? 

I think Neil already reported that it fixed a lost interrupt problem for 
him, but I'm worried that it might result in interrupt storms for others. 

In particular, I have this pretty strong memory that we tried to do 
something like this a long time ago, and it caused problems at least 
with the legacy ISA/ATA interrupts (irq 14/15).

On the other hand, my memory is pretty damn bad at times, and besides, I 
hope that that "hardcoded" case just above it is the one that takes care 
of the old ATA interrupts. This is one of those times when the only 
guaranteed right thing to do would be to be bug-for-bug compatible with 
whatever crud MS-Win does..

		Linus

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17 23:40               ` Linus Torvalds
@ 2006-05-17 23:48                 ` Jeff Garzik
  2006-05-18  1:48                   ` Alan Cox
  2006-05-17 23:49                 ` Linus Torvalds
  1 sibling, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-17 23:48 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: OGAWA Hirofumi, Avuton Olrich, linux-ide, linux-kernel, akpm

Linus Torvalds wrote:
> In particular, I have this pretty strong memory that we tried to do 
> something like this a long time ago, and it caused problems at least 
> with the legacy ISA/ATA interrupts (irq 14/15).
> 
> On the other hand, my memory is pretty damn bad at times, and besides, I 
> hope that that "hardcoded" case just above it is the one that takes care 
> of the old ATA interrupts. This is one of those times when the only 
> guaranteed right thing to do would be to be bug-for-bug compatible with 
> whatever crud MS-Win does..

Many BIOS ACPI tables from years ago simply _assumed_ that you have 
hardcoded irq 14/15, even...  Their irq descriptors for 14/15 would be 
absent or completely non-functional.

Or maybe its the $pirq table I'm recalling.  One of the two, anyway.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17 23:40               ` Linus Torvalds
  2006-05-17 23:48                 ` Jeff Garzik
@ 2006-05-17 23:49                 ` Linus Torvalds
  1 sibling, 0 replies; 113+ messages in thread
From: Linus Torvalds @ 2006-05-17 23:49 UTC (permalink / raw)
  To: OGAWA Hirofumi; +Cc: Avuton Olrich, Jeff Garzik, linux-ide, linux-kernel, akpm



On Wed, 17 May 2006, Linus Torvalds wrote:
> 
> I think Neil already reported that it fixed a lost interrupt problem for 
> him, but I'm worried that it might result in interrupt storms for others. 

Of course, we could just decide to try to switch from level to 
edge-triggered if the irq storm thing ever triggers. Right now we disable 
the irq entirely, which means that _if_ it was just due to a polarity 
error, we're screwed even if it should have been easy to fix by just 
turning it into edge-high.

The code to do that should be trivial: make __report_bad_irq() try to 
switch to edge mode if it's not edge already. Hmm?

		Linus

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17 23:48                 ` Jeff Garzik
@ 2006-05-18  1:48                   ` Alan Cox
  0 siblings, 0 replies; 113+ messages in thread
From: Alan Cox @ 2006-05-18  1:48 UTC (permalink / raw)
  To: Jeff Garzik
  Cc: Linus Torvalds, OGAWA Hirofumi, Avuton Olrich, linux-ide,
	linux-kernel, akpm

On Mer, 2006-05-17 at 19:48 -0400, Jeff Garzik wrote:
> Many BIOS ACPI tables from years ago simply _assumed_ that you have 
> hardcoded irq 14/15, even...  Their irq descriptors for 14/15 would be 
> absent or completely non-functional.

For $PIR this is correct the IRQ 14/15 from the IDE controllers in
legacy mode is an ISA IRQ not a PCI one. Welcome to the happy fun
compatibility factory.


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-18  3:33                                     ` Ric Wheeler
@ 2006-05-18  3:26                                       ` Tejun Heo
  2006-05-18 11:58                                         ` Ric Wheeler
  0 siblings, 1 reply; 113+ messages in thread
From: Tejun Heo @ 2006-05-18  3:26 UTC (permalink / raw)
  To: Ric Wheeler; +Cc: Mark Lord, Jeff Garzik, Mark Lord, linux-ide, Jens Axboe

Ric Wheeler wrote:
> 
> Mark Lord wrote:
> 
>> Tejun Heo wrote:
>>
>>> ..
>>> Right.  Also, we need to snoop some passthrough commands and 
>>> revalidate/reconfigure when configuration is explicitly changed.
>>
>>
>> Once the sysfs attr's actually work, I'll probably re-do my hdparm
>> stuff to detect use them when available, avoiding the need for libata
>> to snoop passthrough commands.  But Jeff may (or not) want to snoop 
>> anyway.
>>
>> As a workaround for now, Ric is using the ugly hack attached here.
>>
>> Cheers
> 
> 
> With this patch, I can get the write cache to change properly, but I 
> still see rates that are "too fast" until I disable the queuing as 
> well.  I think that the barriers are supposed to work with NCQ enabled, 
> but might there be a trace of the old "disable" barrier support if 
> queuing is on left somewhere?

I think the easiest way to verify basic things are working is by booting 
the machine with write cache enabled.

> Also, disabling the queue via setting 
> /sys/class/scsi_disk/4\:0\:0\:0/device/queue_depth does not seem to take 
> effect unless I unmount the file system & remount.  I will  poke around 
> to see if reiserfs is disabling with queuing enabled & only reenables on 
> a fresh mount...

I don't think you're supposed to change cache setting underneath a live FS.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17 21:56                                   ` Mark Lord
  2006-05-17 22:00                                     ` Jeff Garzik
@ 2006-05-18  3:33                                     ` Ric Wheeler
  2006-05-18  3:26                                       ` Tejun Heo
  1 sibling, 1 reply; 113+ messages in thread
From: Ric Wheeler @ 2006-05-18  3:33 UTC (permalink / raw)
  To: Mark Lord; +Cc: Tejun Heo, Jeff Garzik, Mark Lord, linux-ide, Jens Axboe


Mark Lord wrote:

> Tejun Heo wrote:
>
>> ..
>> Right.  Also, we need to snoop some passthrough commands and 
>> revalidate/reconfigure when configuration is explicitly changed.
>
>
> Once the sysfs attr's actually work, I'll probably re-do my hdparm
> stuff to detect use them when available, avoiding the need for libata
> to snoop passthrough commands.  But Jeff may (or not) want to snoop 
> anyway.
>
> As a workaround for now, Ric is using the ugly hack attached here.
>
> Cheers


With this patch, I can get the write cache to change properly, but I 
still see rates that are "too fast" until I disable the queuing as 
well.  I think that the barriers are supposed to work with NCQ enabled, 
but might there be a trace of the old "disable" barrier support if 
queuing is on left somewhere?

Also, disabling the queue via setting 
/sys/class/scsi_disk/4\:0\:0\:0/device/queue_depth does not seem to take 
effect unless I unmount the file system & remount.  I will  poke around 
to see if reiserfs is disabling with queuing enabled & only reenables on 
a fresh mount...

ric



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  6:35         ` Tejun Heo
@ 2006-05-18 11:24           ` Albert Lee
  2006-05-18 11:33             ` Tejun Heo
  2006-05-18 23:07           ` [RFT] major libata update Andrew Morton
  2006-05-22  7:22           ` Jeff Garzik
  2 siblings, 1 reply; 113+ messages in thread
From: Albert Lee @ 2006-05-18 11:24 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Andrew Morton, jeff, linux-ide, linux-kernel, torvalds

Tejun Heo wrote:
> Tejun Heo wrote:
> 
>> Andrew Morton wrote:
>>
>>> No.  In fact, it doesn't even work with the 2.6.17-rc4-mm1 lineup
>>> plus the
>>> latest git-libata-all.  It needs this tweak:
>>>
>>> --- devel/drivers/scsi/ata_piix.c~2.6.17-rc4-mm1-ich8-fix   
>>> 2006-05-16 18:36:12.000000000 -0700
>>> +++ devel-akpm/drivers/scsi/ata_piix.c    2006-05-16
>>> 18:36:12.000000000 -0700
>>> @@ -542,6 +542,14 @@ static unsigned int piix_sata_probe (str
>>>          port = map[base + i];
>>>          if (port < 0)
>>>              continue;
>>> +        if (ap->flags & PIIX_FLAG_AHCI) {
>>> +            /* FIXME: Port status of AHCI controllers
>>> +             * should be accessed in AHCI memory space.  */
>>> +            if (pcs & 1 << port)
>>> +                present_mask |= 1 << i;
>>> +            else
>>> +                pcs &= ~(1 << port);
>>> +        }
>>>          if (ap->flags & PIIX_FLAG_IGNORE_PCS || pcs & 1 << (4 + port))
>>>              present_mask |= 1 << i;
>>>          else
> 
> 
> The above patch doesn't do anything.  The only effect it has is setting
> present_mask according to enabled bits instead of present bits.  I think
> this patch might have helped with probing before the MAP tables for
> ICH6/7 are fixed.
> 
> I've done further testing.
> 
> * Symptom
> 
> ata_piix tries to probe non-existing slave device resulting in timeouts
> during boot probing.  This problem is aggravated by new probing updates
> as it retries two more times before giving up.
> 
> * Test results
> 
> PATA never has any problem with device detection via signature.  Only
> SATA is affected and interestingly only ATAPI device.  The following is
> the test result on my machine (ICH7R + PX716SA).
> 
>   1. combined mode : MAP [IDE IDE P1 P3]
> 
>     P1        P3
>     -----------------------------
>     PX716-SA    empty        P3 ghosted as ATAPI device
>     empty        PX716-SA    okay
>     PX716-SA    HDD        okay
>     HDD        PX716-SA    okay
> 
>   2. SATA-only mode : MAP [P0 P2 P1 P3]
> 
>     P0        P2
>     -----------------------------
>     PX716-SA    empty        P2 ghosted as ATAPI device
>     empty        PX716-SA    okay
>     PX716-SA    HDD        okay
>     HDD        PX716-SA    okay
> 
>     P1        P3
>     -----------------------------
>     Identical to #1.
> 
> To sum up, it happens when the master slot is occupied by an ATAPI
> device and the corresponding slave slot is empty.  The slave slot
> reports ATAPI signature (probably duplicated from the master) and passes
> all legacy presence test thus resulting in timeout on IDENTIFY.
> 

This problem was seen with PATA Promise 20275 adapter + IBM DVD-RAM drive.
Single master device configuration, no slave device.
The master device acts as slave and creates a phantom slave device.
(http://marc.theaimsgroup.com/?l=linux-ide&m=113151315602979&w=2)

The problem was later fixed by Tejun's ata_exec_internal() patch:
(http://marc.theaimsgroup.com/?l=linux-ide&m=113455450809405&w=2)
After the patch, the phantom device is finally detected by ata_dev_identify().

Libata uses polling PIO for IDENTIFY DEVICE before this major update.
The polling PIO finds something wrong when it reads a 0x00 device status.
So, the phantom device is detected quite quickly.

With irq-driven PIO, maybe the phantom device is only detected after time-out.
So it takes longer (30 secs) to detect the phantom device.

No good idea how to fix this. Maybe read more registers to see whether the
phantom device can be detected early before the IDENTIFY DEVICE.

--
albert


> In all above cases, the PCS register reported correct presence masks.
> 
> * Proposed solution
> 
> It seems that the only solution is to make use of the PCS presence bits
> somehow.  It is know that 6300ESB family of controllers have flaky
> presence bits (ata_piix marks them with PIIX_FLAG_IGNORE_PCS), but I
> couldn't find any document/errata for PCS bits for any other
> controllers.  So, we can use PCS for all !PIIX_FLAG_IGNORE_PCS
> controllers or take a conservative approach and make use of it only on
> cases where ghosting problem is reported (ICH7 and 8, I guess.  Can
> anyone test 6?).
> 
> Please note that we already use some use of the PCS value when probing
> SATA port.  If its value is zero, we skip the port.  It's done this way
> mainly due to historical reasons - until recently ata_piix didn't have
> MAP tables to map PM/PS/SM/SS to specific ports thus used the PCS values
> in rougher form.
> 
> Jeff, what do you think?
> 



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-18 11:24           ` Albert Lee
@ 2006-05-18 11:33             ` Tejun Heo
  2006-05-19 10:37               ` Albert Lee
  0 siblings, 1 reply; 113+ messages in thread
From: Tejun Heo @ 2006-05-18 11:33 UTC (permalink / raw)
  To: albertl; +Cc: Andrew Morton, jeff, linux-ide, linux-kernel, torvalds

Albert Lee wrote:
>> To sum up, it happens when the master slot is occupied by an ATAPI
>> device and the corresponding slave slot is empty.  The slave slot
>> reports ATAPI signature (probably duplicated from the master) and passes
>> all legacy presence test thus resulting in timeout on IDENTIFY.
>>
> 
> This problem was seen with PATA Promise 20275 adapter + IBM DVD-RAM drive.
> Single master device configuration, no slave device.
> The master device acts as slave and creates a phantom slave device.
> (http://marc.theaimsgroup.com/?l=linux-ide&m=113151315602979&w=2)
> 
> The problem was later fixed by Tejun's ata_exec_internal() patch:
> (http://marc.theaimsgroup.com/?l=linux-ide&m=113455450809405&w=2)
> After the patch, the phantom device is finally detected by ata_dev_identify().
> 
> Libata uses polling PIO for IDENTIFY DEVICE before this major update.
> The polling PIO finds something wrong when it reads a 0x00 device status.
> So, the phantom device is detected quite quickly.
> 
> With irq-driven PIO, maybe the phantom device is only detected after time-out.
> So it takes longer (30 secs) to detect the phantom device.
> 
> No good idea how to fix this. Maybe read more registers to see whether the
> phantom device can be detected early before the IDENTIFY DEVICE.
> 

Does the Promise controller show the ghosting problem again with the 
recent updates?  ata_piix can be fixed by using PCS present bits.  I 
don't know about Promise though.

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-18  3:26                                       ` Tejun Heo
@ 2006-05-18 11:58                                         ` Ric Wheeler
  2006-05-18 12:52                                           ` Mark Lord
  0 siblings, 1 reply; 113+ messages in thread
From: Ric Wheeler @ 2006-05-18 11:58 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Mark Lord, Jeff Garzik, Mark Lord, linux-ide, Jens Axboe



Tejun Heo wrote:

>>> Once the sysfs attr's actually work, I'll probably re-do my hdparm
>>> stuff to detect use them when available, avoiding the need for libata
>>> to snoop passthrough commands.  But Jeff may (or not) want to snoop 
>>> anyway.
>>>
>>> As a workaround for now, Ric is using the ugly hack attached here.
>>>
>>> Cheers
>>
>>
>>
>> With this patch, I can get the write cache to change properly, but I 
>> still see rates that are "too fast" until I disable the queuing as 
>> well.  I think that the barriers are supposed to work with NCQ 
>> enabled, but might there be a trace of the old "disable" barrier 
>> support if queuing is on left somewhere?
>
>
> I think the easiest way to verify basic things are working is by 
> booting the machine with write cache enabled.

You can measure the rate with barriers enabled or not on a per file 
system instance (ie, mount barrier=none) to get a quick baseline. This 
rate has been an extremely accurate way for us to diagnose big issues 
(like the barrier is just not working - you get hundreds of files/sec 
instead of tens of files/sec ;-)) or subtle ones like regressions in 
disk firmware.

For us, the broader issue is that the rest of the company only uses 
drives with write cache disabled & as the small group, we have to dip 
into their manufacturing stream and use the parts as the rest of the 
company dictates.  Being able to toggle the write cache (before mounting 
a file system) is one of the weird edge cases that few others care about ;-)

>
>> Also, disabling the queue via setting 
>> /sys/class/scsi_disk/4\:0\:0\:0/device/queue_depth does not seem to 
>> take effect unless I unmount the file system & remount.  I will  poke 
>> around to see if reiserfs is disabling with queuing enabled & only 
>> reenables on a fresh mount...
>
>
> I don't think you're supposed to change cache setting underneath a 
> live FS.


Makes sense - I don't see logic in reiserfs at least that looks at (or 
knows) about anything other than "did my barrier op" fail.  When that 
happens, it should log a "disabling barriers for /dev/sdX" and leave 
them disabled.  I did not see that message so I suspect that we still 
have some lower level mechanism. 

A different discussion is what we should do or log when we detect this - 
i.e., write cache enabled and barrier ops not supported (disable write 
cache?  log a scarier message? ignore it?).  Today's behavior is 
probably what most home users want (run as fast as I can, absolute data 
integrity over power failures not a big deal) but not the right behavior 
for critical data (i.e., forget performance, make sure my data is always 
safe ).

I will keep poking at this today to try and clarify things.


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-18 11:58                                         ` Ric Wheeler
@ 2006-05-18 12:52                                           ` Mark Lord
  2006-05-18 13:22                                             ` Ric Wheeler
  0 siblings, 1 reply; 113+ messages in thread
From: Mark Lord @ 2006-05-18 12:52 UTC (permalink / raw)
  To: Ric Wheeler; +Cc: Tejun Heo, Mark Lord, Jeff Garzik, linux-ide, Jens Axboe

> 
> A different discussion is what we should do or log when we detect this - i.e., write cache enabled and barrier ops not supported (disable write cache?  log a scarier message? ignore it?).  Today's behavior is probably what most home users want (run as fast as I can, absolute data integrity over power failures not a big deal) but not the right behavior for critical data (i.e., forget performance, make sure my data is always safe ). 

Yes, 99.99% of Linux users would really complain like mad
if the *kernel* took over the *policy* decision of disabling
write-caching.  The long-term kernel rule has always been,
leave *policy* to user-space.

Cheers
-- 
Mark Lord
Real-Time Remedies Inc.
mlord@pobox.com

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-18 12:52                                           ` Mark Lord
@ 2006-05-18 13:22                                             ` Ric Wheeler
  2006-05-18 13:37                                               ` Jens Axboe
  0 siblings, 1 reply; 113+ messages in thread
From: Ric Wheeler @ 2006-05-18 13:22 UTC (permalink / raw)
  To: Mark Lord; +Cc: Tejun Heo, Mark Lord, Jeff Garzik, linux-ide, Jens Axboe


Mark Lord wrote:
>>
>> A different discussion is what we should do or log when we detect this 
>> - i.e., write cache enabled and barrier ops not supported (disable 
>> write cache?  log a scarier message? ignore it?).  Today's behavior is 
>> probably what most home users want (run as fast as I can, absolute 
>> data integrity over power failures not a big deal) but not the right 
>> behavior for critical data (i.e., forget performance, make sure my 
>> data is always safe ). 
> 
> Yes, 99.99% of Linux users would really complain like mad
> if the *kernel* took over the *policy* decision of disabling
> write-caching.  The long-term kernel rule has always been,
> leave *policy* to user-space.
> 
> Cheers

Agreed - I think that only challenge is for us to make sure that the messages in 
the upstream kernel are informative enough to let people know what this means 
and some level of their exposure.

Maybe the "enterprise" distro install programs would want to treat write barrier 
  like we do support for 3D video card acceleration with a good overview & let 
the user configure the system as best suits their needs.  I think that it is 
still quite difficult to get right today for most casual users...

ric


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-18 13:22                                             ` Ric Wheeler
@ 2006-05-18 13:37                                               ` Jens Axboe
  0 siblings, 0 replies; 113+ messages in thread
From: Jens Axboe @ 2006-05-18 13:37 UTC (permalink / raw)
  To: Ric Wheeler; +Cc: Mark Lord, Tejun Heo, Mark Lord, Jeff Garzik, linux-ide

On Thu, May 18 2006, Ric Wheeler wrote:
> 
> Mark Lord wrote:
> >>
> >>A different discussion is what we should do or log when we detect this 
> >>- i.e., write cache enabled and barrier ops not supported (disable 
> >>write cache?  log a scarier message? ignore it?).  Today's behavior is 
> >>probably what most home users want (run as fast as I can, absolute 
> >>data integrity over power failures not a big deal) but not the right 
> >>behavior for critical data (i.e., forget performance, make sure my 
> >>data is always safe ). 
> >
> >Yes, 99.99% of Linux users would really complain like mad
> >if the *kernel* took over the *policy* decision of disabling
> >write-caching.  The long-term kernel rule has always been,
> >leave *policy* to user-space.
> >
> >Cheers
> 
> Agreed - I think that only challenge is for us to make sure that the 
> messages in the upstream kernel are informative enough to let people know 
> what this means and some level of their exposure.
> 
> Maybe the "enterprise" distro install programs would want to treat write 
> barrier like we do support for 3D video card acceleration with a good 
>  overview & let the user configure the system as best suits their needs.  I 
> think that it is still quite difficult to get right today for most casual 
> users...

Yep certainly something needs to be done, it's currently far too
unlikely that:

a) the user even sees the barrier message from the file system, telling
   them that the fs turned it off

and

b) he/she knows the implications of such a message.

This is data integrity after all, we probably should be a little more
careful.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  6:35         ` Tejun Heo
  2006-05-18 11:24           ` Albert Lee
@ 2006-05-18 23:07           ` Andrew Morton
  2006-05-19  1:14             ` Tejun Heo
  2006-05-22  7:22           ` Jeff Garzik
  2 siblings, 1 reply; 113+ messages in thread
From: Andrew Morton @ 2006-05-18 23:07 UTC (permalink / raw)
  To: Tejun Heo; +Cc: jeff, linux-ide, linux-kernel, torvalds

Tejun Heo <htejun@gmail.com> wrote:
>
> Tejun Heo wrote:
>  > Andrew Morton wrote:
>  >> No.  In fact, it doesn't even work with the 2.6.17-rc4-mm1 lineup plus 
>  >> the
>  >> latest git-libata-all.  It needs this tweak:
>  >>
>  >> --- devel/drivers/scsi/ata_piix.c~2.6.17-rc4-mm1-ich8-fix    
>  >> 2006-05-16 18:36:12.000000000 -0700
>  >> +++ devel-akpm/drivers/scsi/ata_piix.c    2006-05-16 
>  >> 18:36:12.000000000 -0700
>  >> @@ -542,6 +542,14 @@ static unsigned int piix_sata_probe (str
>  >>          port = map[base + i];
>  >>          if (port < 0)
>  >>              continue;
>  >> +        if (ap->flags & PIIX_FLAG_AHCI) {
>  >> +            /* FIXME: Port status of AHCI controllers
>  >> +             * should be accessed in AHCI memory space.  */
>  >> +            if (pcs & 1 << port)
>  >> +                present_mask |= 1 << i;
>  >> +            else
>  >> +                pcs &= ~(1 << port);
>  >> +        }
>  >>          if (ap->flags & PIIX_FLAG_IGNORE_PCS || pcs & 1 << (4 + port))
>  >>              present_mask |= 1 << i;
>  >>          else
> 
>  The above patch doesn't do anything.

Yes it does.  I dropped it and got

SCSI subsystem initialized
ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
ACPI (acpi_bus-0191): Device is not power manageable [20060310]
ACPI: PCI Interrupt 0000:00:1f.2[A] -> GSI 19 (level, low) -> IRQ 19
ata1: SATA max UDMA/133 cmd 0x2148 ctl 0x217E bmdma 0x2110 irq 19
ata2: SATA max UDMA/133 cmd 0x2140 ctl 0x217A bmdma 0x2118 irq 19
ata1: SATA port has no device.

Then I undropped it and got

SCSI subsystem initialized
ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
ACPI (acpi_bus-0191): Device is not power manageable [20060310]
ACPI: PCI Interrupt 0000:00:1f.2[A] -> GSI 19 (level, low) -> IRQ 19
ata1: SATA max UDMA/133 cmd 0x2148 ctl 0x217E bmdma 0x2110 irq 19
ata2: SATA max UDMA/133 cmd 0x2140 ctl 0x217A bmdma 0x2118 irq 19
ata1.00: ATA-7, max UDMA/133, 321672960 sectors: LBA48 NCQ (depth 0/32)
ata1.00: configured for UDMA/133
scsi0 : ata_piix

and a computer which boots.

Look closer, please ;)

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-18 23:07           ` [RFT] major libata update Andrew Morton
@ 2006-05-19  1:14             ` Tejun Heo
  2006-05-19  2:06               ` Jeff Garzik
  0 siblings, 1 reply; 113+ messages in thread
From: Tejun Heo @ 2006-05-19  1:14 UTC (permalink / raw)
  To: Andrew Morton; +Cc: jeff, linux-ide, linux-kernel, torvalds

On Thu, May 18, 2006 at 04:07:58PM -0700, Andrew Morton wrote:
> 
> Yes it does.  I dropped it and got
> 
> SCSI subsystem initialized
> ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
> ACPI (acpi_bus-0191): Device is not power manageable [20060310]
> ACPI: PCI Interrupt 0000:00:1f.2[A] -> GSI 19 (level, low) -> IRQ 19
> ata1: SATA max UDMA/133 cmd 0x2148 ctl 0x217E bmdma 0x2110 irq 19
> ata2: SATA max UDMA/133 cmd 0x2140 ctl 0x217A bmdma 0x2118 irq 19
> ata1: SATA port has no device.
> 
> Then I undropped it and got
> 
> SCSI subsystem initialized
> ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
> ACPI (acpi_bus-0191): Device is not power manageable [20060310]
> ACPI: PCI Interrupt 0000:00:1f.2[A] -> GSI 19 (level, low) -> IRQ 19
> ata1: SATA max UDMA/133 cmd 0x2148 ctl 0x217E bmdma 0x2110 irq 19
> ata2: SATA max UDMA/133 cmd 0x2140 ctl 0x217A bmdma 0x2118 irq 19
> ata1.00: ATA-7, max UDMA/133, 321672960 sectors: LBA48 NCQ (depth 0/32)
> ata1.00: configured for UDMA/133
> scsi0 : ata_piix
> 
> and a computer which boots.
> 
> Look closer, please ;)

Hello, Andrew.

I see.  It seems that you're reporting two separate problems - your
PCS register doesn't report presence properly && the TF registers
report ghost device if the first device is ATAPI.  I can reproduce the
second here, but AFAIK the only controller which had problem with PCS
persence bits was ESB6300 until now.

Can you post the result of 'lspci -n' and ata_piix boot probing
messages with the following patch applied?  It would be helpful if you
tell us how devices are actually connected.  Also, where did the patch
come from?  With what comment?

Thanks.

diff --git a/drivers/scsi/ata_piix.c b/drivers/scsi/ata_piix.c
index e3184a7..4ba943e 100644
--- a/drivers/scsi/ata_piix.c
+++ b/drivers/scsi/ata_piix.c
@@ -523,7 +523,7 @@ static unsigned int piix_sata_probe (str
 	u8 pcs;
 
 	pci_read_config_byte(pdev, ICH5_PCS, &pcs);
-	DPRINTK("ata%u: ENTER, pcs=0x%x base=%d\n", ap->id, pcs, base);
+	printk("ata%u: ENTER, pcs=0x%x base=%d\n", ap->id, pcs, base);
 
 	/* enable all ports on this ap and wait for them to settle */
 	for (i = 0; i < 2; i++) {
@@ -552,7 +552,7 @@ static unsigned int piix_sata_probe (str
 	if (!(ap->flags & PIIX_FLAG_AHCI))
 		pci_write_config_byte(pdev, ICH5_PCS, pcs);
 
-	DPRINTK("ata%u: LEAVE, pcs=0x%x present_mask=0x%x\n",
+	printk("ata%u: LEAVE, pcs=0x%x present_mask=0x%x\n",
 		ap->id, pcs, present_mask);
 
 	return present_mask;

^ permalink raw reply related	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-19  1:14             ` Tejun Heo
@ 2006-05-19  2:06               ` Jeff Garzik
  2006-05-19  2:16                 ` Tejun Heo
  0 siblings, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-19  2:06 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Andrew Morton, linux-ide, linux-kernel, torvalds

Tejun Heo wrote:
> On Thu, May 18, 2006 at 04:07:58PM -0700, Andrew Morton wrote:
>> Yes it does.  I dropped it and got
>>
>> SCSI subsystem initialized
>> ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
>> ACPI (acpi_bus-0191): Device is not power manageable [20060310]
>> ACPI: PCI Interrupt 0000:00:1f.2[A] -> GSI 19 (level, low) -> IRQ 19
>> ata1: SATA max UDMA/133 cmd 0x2148 ctl 0x217E bmdma 0x2110 irq 19
>> ata2: SATA max UDMA/133 cmd 0x2140 ctl 0x217A bmdma 0x2118 irq 19
>> ata1: SATA port has no device.
>>
>> Then I undropped it and got
>>
>> SCSI subsystem initialized
>> ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
>> ACPI (acpi_bus-0191): Device is not power manageable [20060310]
>> ACPI: PCI Interrupt 0000:00:1f.2[A] -> GSI 19 (level, low) -> IRQ 19
>> ata1: SATA max UDMA/133 cmd 0x2148 ctl 0x217E bmdma 0x2110 irq 19
>> ata2: SATA max UDMA/133 cmd 0x2140 ctl 0x217A bmdma 0x2118 irq 19
>> ata1.00: ATA-7, max UDMA/133, 321672960 sectors: LBA48 NCQ (depth 0/32)
>> ata1.00: configured for UDMA/133
>> scsi0 : ata_piix
>>
>> and a computer which boots.
>>
>> Look closer, please ;)
> 
> Hello, Andrew.
> 
> I see.  It seems that you're reporting two separate problems - your
> PCS register doesn't report presence properly && the TF registers
> report ghost device if the first device is ATAPI.  I can reproduce the
> second here, but AFAIK the only controller which had problem with PCS
> persence bits was ESB6300 until now.
> 
> Can you post the result of 'lspci -n' and ata_piix boot probing
> messages with the following patch applied?  It would be helpful if you
> tell us how devices are actually connected.  Also, where did the patch
> come from?  With what comment?

At this point it may be relevant to note that Intel tells me that PCS 
has changed on -every- chip.  So, ICH8 PCS register behaves differently 
from ICH7 and prior.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-19  2:06               ` Jeff Garzik
@ 2006-05-19  2:16                 ` Tejun Heo
  0 siblings, 0 replies; 113+ messages in thread
From: Tejun Heo @ 2006-05-19  2:16 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, linux-ide, linux-kernel, torvalds

Jeff Garzik wrote:
> Tejun Heo wrote:
>> On Thu, May 18, 2006 at 04:07:58PM -0700, Andrew Morton wrote:
>>> Yes it does.  I dropped it and got
>>>
>>> SCSI subsystem initialized
>>> ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
>>> ACPI (acpi_bus-0191): Device is not power manageable [20060310]
>>> ACPI: PCI Interrupt 0000:00:1f.2[A] -> GSI 19 (level, low) -> IRQ 19
>>> ata1: SATA max UDMA/133 cmd 0x2148 ctl 0x217E bmdma 0x2110 irq 19
>>> ata2: SATA max UDMA/133 cmd 0x2140 ctl 0x217A bmdma 0x2118 irq 19
>>> ata1: SATA port has no device.
>>>
>>> Then I undropped it and got
>>>
>>> SCSI subsystem initialized
>>> ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
>>> ACPI (acpi_bus-0191): Device is not power manageable [20060310]
>>> ACPI: PCI Interrupt 0000:00:1f.2[A] -> GSI 19 (level, low) -> IRQ 19
>>> ata1: SATA max UDMA/133 cmd 0x2148 ctl 0x217E bmdma 0x2110 irq 19
>>> ata2: SATA max UDMA/133 cmd 0x2140 ctl 0x217A bmdma 0x2118 irq 19
>>> ata1.00: ATA-7, max UDMA/133, 321672960 sectors: LBA48 NCQ (depth 0/32)
>>> ata1.00: configured for UDMA/133
>>> scsi0 : ata_piix
>>>
>>> and a computer which boots.
>>>
>>> Look closer, please ;)
>>
>> Hello, Andrew.
>>
>> I see.  It seems that you're reporting two separate problems - your
>> PCS register doesn't report presence properly && the TF registers
>> report ghost device if the first device is ATAPI.  I can reproduce the
>> second here, but AFAIK the only controller which had problem with PCS
>> persence bits was ESB6300 until now.
>>
>> Can you post the result of 'lspci -n' and ata_piix boot probing
>> messages with the following patch applied?  It would be helpful if you
>> tell us how devices are actually connected.  Also, where did the patch
>> come from?  With what comment?
> 
> At this point it may be relevant to note that Intel tells me that PCS 
> has changed on -every- chip.  So, ICH8 PCS register behaves differently 
> from ICH7 and prior.

Yeah, the PCS bit is sad to look at.  From ICH6, the docs say that the 
AHCI SStatus should be used for presence detection but that cannot be 
done without AHCI BAR mapped.

ICH7 (or 6 was it?) added a window register into AHCI area, which 
weirdly cannot be used without actually enabling AHCI BAR - what's the 
point?  My suspicion is that they designed it to work without AHCI BAR 
enabled but maybe some revisions screwed up and ICH7 still had PCS 
presence bits working, so the weird result.

I don't have ICH8 docs but, again, my guess is that they've got the 
window register correct this time and determined to screw PCS presence 
bits.  All these suspicions and guesses need verification, but if my 
guesses are right, the solution would be...

* leave anything order than ICH6 as it is now
* trust PCS presence bits for ICH6/7
* use AHCI window register to access SStatus on ICH8

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-18 11:33             ` Tejun Heo
@ 2006-05-19 10:37               ` Albert Lee
  2006-05-19 11:03                 ` Tejun Heo
  0 siblings, 1 reply; 113+ messages in thread
From: Albert Lee @ 2006-05-19 10:37 UTC (permalink / raw)
  To: Tejun Heo
  Cc: albertl, Andrew Morton, jeff, linux-ide, linux-kernel, torvalds,
	Doug Maxey

Tejun Heo wrote:
> Albert Lee wrote:
> 
>>> To sum up, it happens when the master slot is occupied by an ATAPI
>>> device and the corresponding slave slot is empty.  The slave slot
>>> reports ATAPI signature (probably duplicated from the master) and passes
>>> all legacy presence test thus resulting in timeout on IDENTIFY.
>>>
>>
>> This problem was seen with PATA Promise 20275 adapter + IBM DVD-RAM
>> drive.
>> Single master device configuration, no slave device.
>> The master device acts as slave and creates a phantom slave device.
>> (http://marc.theaimsgroup.com/?l=linux-ide&m=113151315602979&w=2)
>>
>> The problem was later fixed by Tejun's ata_exec_internal() patch:
>> (http://marc.theaimsgroup.com/?l=linux-ide&m=113455450809405&w=2)
>> After the patch, the phantom device is finally detected by
>> ata_dev_identify().
>>
>> Libata uses polling PIO for IDENTIFY DEVICE before this major update.
>> The polling PIO finds something wrong when it reads a 0x00 device status.
>> So, the phantom device is detected quite quickly.
>>
>> With irq-driven PIO, maybe the phantom device is only detected after
>> time-out.
>> So it takes longer (30 secs) to detect the phantom device.
>>
>> No good idea how to fix this. Maybe read more registers to see whether
>> the
>> phantom device can be detected early before the IDENTIFY DEVICE.
>>
> 
> Does the Promise controller show the ghosting problem again with the
> recent updates?  ata_piix can be fixed by using PCS present bits.  I
> don't know about Promise though.
> 

Checked the Promise 20275 manual, no device present bits.

It seems we still need IDENTIFY DEVICE to identify the phantom slave.
The IDE code uses polling for IDENTIFY DEVICE. (libata did the same.)
Maybe we can also use polling for IDENTIFY DEVICE?

Could you try the attached patch to see if polling helps
to reduce the boot time? Thanks.

--
albert
(Need some time to find the specific IBM DVD-RAM drive for bug verification...)

--- upstream0/drivers/scsi/libata-core.c	2006-05-16 11:08:49.000000000 +0800
+++ 300_phantom_device/drivers/scsi/libata-core.c	2006-05-19 17:37:23.000000000 +0800
@@ -1194,6 +1194,9 @@ static int ata_dev_read_id(struct ata_de
 
 	tf.protocol = ATA_PROT_PIO;
 
+	/* Use polling for early detection of phantom device 1 */
+	tf.flags |= ATA_TFLAG_POLLING;
+
 	err_mask = ata_exec_internal(dev, &tf, NULL, DMA_FROM_DEVICE,
 				     id, sizeof(id[0]) * ATA_ID_WORDS);
 	if (err_mask) {


^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-19 10:37               ` Albert Lee
@ 2006-05-19 11:03                 ` Tejun Heo
  2006-05-22  3:51                   ` [PATCH 1/1] libata: use polling pio for identify device Albert Lee
  0 siblings, 1 reply; 113+ messages in thread
From: Tejun Heo @ 2006-05-19 11:03 UTC (permalink / raw)
  To: albertl; +Cc: Andrew Morton, jeff, linux-ide, linux-kernel, torvalds,
	Doug Maxey

Albert Lee wrote:
> Checked the Promise 20275 manual, no device present bits.
> 
> It seems we still need IDENTIFY DEVICE to identify the phantom slave.
> The IDE code uses polling for IDENTIFY DEVICE. (libata did the same.)
> Maybe we can also use polling for IDENTIFY DEVICE?
> 
> Could you try the attached patch to see if polling helps
> to reduce the boot time? Thanks.
> 
> --
> albert
> (Need some time to find the specific IBM DVD-RAM drive for bug verification...)
> 
> --- upstream0/drivers/scsi/libata-core.c	2006-05-16 11:08:49.000000000 +0800
> +++ 300_phantom_device/drivers/scsi/libata-core.c	2006-05-19 17:37:23.000000000 +0800
> @@ -1194,6 +1194,9 @@ static int ata_dev_read_id(struct ata_de
>  
>  	tf.protocol = ATA_PROT_PIO;
>  
> +	/* Use polling for early detection of phantom device 1 */
> +	tf.flags |= ATA_TFLAG_POLLING;
> +
>  	err_mask = ata_exec_internal(dev, &tf, NULL, DMA_FROM_DEVICE,
>  				     id, sizeof(id[0]) * ATA_ID_WORDS);
>  	if (err_mask) {
> 

Great, it worked.  Here's the relevant part of log w/ both ATA_DEBUG and 
ATA_VERBOSE_DEBUG on.  Although it tries several times but all those are 
slightly over 15secs, so it's quite usable.

[ata_eh_recover      ] ENTER
[__ata_port_freeze   ] ata1 port frozen
[piix_sata_prereset  ] ata1: ENTER, pcs=0x1f base=0
[piix_sata_prereset  ] ata1: LEAVE, pcs=0x1b present_mask=0x1
[ata_std_softreset   ] ENTER
[ata_std_softreset   ] about to softreset, devmask=3
[ata_bus_softreset   ] ata1: bus reset via SRST
[ata_dev_classify    ] found ATAPI device by sig
[ata_dev_classify    ] found ATAPI device by sig
[ata_std_softreset   ] EXIT, classes[0]=3 [1]=3
[ata_std_postreset   ] ENTER
[ata_std_postreset   ] EXIT
[ata_eh_thaw_port    ] ata1 port thawed
[ata_eh_revalidate_and_attach] ENTER
[ata_dev_read_id     ] ENTER, host 1, dev 0
[ata_dev_select      ] ENTER, ata1: device 0, wait 1
[ata_dev_select      ] ENTER, ata1: device 0, wait 1
[ata_exec_command_pio] ata1: cmd 0xA1
[ata_hsm_move        ] ata1: protocol 2 task_state 2 (dev_stat 0x5A)
[ata_pio_sector      ] data read
[ata_hsm_move        ] ata1: protocol 2 task_state 3 (dev_stat 0x50)
[ata_hsm_move        ] ata1: dev 0 command complete, drv_stat 0x50
[ata_port_flush_task ] ENTER
[ata_port_flush_task ] flush #1
[ata_port_flush_task ] flush #2
[ata_port_flush_task ] EXIT
[ata_dev_configure   ] ENTER, host 1, dev 0
[ata_dump_id         ] 49==0x0f00  53==0x0006  63==0x0007  64==0x0003 
75==0x0000
[ata_dump_id         ] 80==0x0078  81==0x0000  82==0x0000  83==0x0000 
84==0x0000
[ata_dump_id         ] 88==0x101f  93==0x4101
ata1.00: ATAPI, max UDMA/66
ata1.00: applying bridge limits
[ata_dev_configure   ] EXIT, drv_stat = 0x50
[ata_dev_read_id     ] ENTER, host 1, dev 1
[ata_dev_select      ] ENTER, ata1: device 1, wait 1
[ata_dev_select      ] ENTER, ata1: device 1, wait 1
[ata_exec_command_pio] ata1: cmd 0xA1
[ata_hsm_move        ] ata1: protocol 2 task_state 2 (dev_stat 0x0)
[ata_hsm_move        ] ata1: protocol 2 task_state 4 (dev_stat 0x0)
[__ata_port_freeze   ] ata1 port frozen
[ata_port_flush_task ] ENTER
[ata_port_flush_task ] flush #1
[ata_port_flush_task ] flush #2
[ata_port_flush_task ] EXIT
ata1.01: failed to IDENTIFY (I/O error, err_mask=0x2)
[ata_eh_revalidate_and_attach] EXIT
ata1: failed to recover some devices, retrying in 5 secs

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-15 17:00 [RFT] major libata update Jeff Garzik
                   ` (7 preceding siblings ...)
  2006-05-17  2:05 ` Andrew Morton
@ 2006-05-21 23:51 ` Michael Sterrett -Mr. Bones.-
  2006-05-22  2:42   ` Tejun Heo
  8 siblings, 1 reply; 113+ messages in thread
From: Michael Sterrett -Mr. Bones.- @ 2006-05-21 23:51 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide

Was having trouble getting a new Seagate drive to show up at all with
2.6.16.* so I went ahead and stepped up to .17_rc4 with this patch.
Still no go.  It looks like it's not even seeing the drive at all.
I hope I'm just missing something obvious.

dmesg after boot at:

http://dev.gentoo.org/~mr_bones_/

There's one with routeirq and one without.  The config file is there as
well as 2.6.17-rc4-dot-config.gz (from /proc/config.gz). lspci -v output is
in lspci-dash-v.  You can see that system is really (ab)using the pci bus.

This is the drive:
http://www.newegg.com/Product/Product.asp?Item=N82E16822148131

I don't think it's in sil_blacklist but I don't think it's even getting
that far.  Any tips on what to try next would be great.

Michael Sterrett
   -Mr. Bones.-
michael.sterrett@coat.com

On Mon, 15 May 2006, Jeff Garzik wrote:

>
> After much development and review, I merged a massive pile of libata
> patches from Tejun Heo and Albert Lee.  This update contains the
> following major libata

<chop>

> * sata_sil and ata_piix also need healthy re-testing of all basic
> functionality.
>
> FEEDBACK:
> * Please CC linux-ide@vger.kernel.org on all emails and bug reports.
>
> MERGE STATUS:
> * Barring major problems in testing, will submit during 2.6.18 merge window.
>
>
> Patch:
> http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.6.17-rc4-git2-libata1.patch.bz2
> (diff'd against 2.6.17-rc4-git2, but should apply to most recent
> 2.6.17-rcX[-gitY] kernels)

<chop>

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-21 23:51 ` Michael Sterrett -Mr. Bones.-
@ 2006-05-22  2:42   ` Tejun Heo
  2006-05-22  3:42     ` Michael Sterrett -Mr. Bones.-
  2006-05-22  6:23     ` Michael Sterrett -Mr. Bones.-
  0 siblings, 2 replies; 113+ messages in thread
From: Tejun Heo @ 2006-05-22  2:42 UTC (permalink / raw)
  To: Michael Sterrett -Mr. Bones.-; +Cc: Jeff Garzik, linux-ide

Michael Sterrett -Mr. Bones.- wrote:
> Was having trouble getting a new Seagate drive to show up at all with
> 2.6.16.* so I went ahead and stepped up to .17_rc4 with this patch.
> Still no go.  It looks like it's not even seeing the drive at all.
> I hope I'm just missing something obvious.
> 
> dmesg after boot at:
> 
> http://dev.gentoo.org/~mr_bones_/
> 
> There's one with routeirq and one without.  The config file is there as
> well as 2.6.17-rc4-dot-config.gz (from /proc/config.gz). lspci -v output is
> in lspci-dash-v.  You can see that system is really (ab)using the pci bus.
> 
> This is the drive:
> http://www.newegg.com/Product/Product.asp?Item=N82E16822148131
> 
> I don't think it's in sil_blacklist but I don't think it's even getting
> that far.  Any tips on what to try next would be great.
> 

At the first glance, it seems like a faulty drive.  Have you tried the 
drive on different hardware?  Has it ever worked?

-- 
tejun

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-22  2:42   ` Tejun Heo
@ 2006-05-22  3:42     ` Michael Sterrett -Mr. Bones.-
  2006-05-22  6:23     ` Michael Sterrett -Mr. Bones.-
  1 sibling, 0 replies; 113+ messages in thread
From: Michael Sterrett -Mr. Bones.- @ 2006-05-22  3:42 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jeff Garzik, linux-ide

On Mon, 22 May 2006, Tejun Heo wrote:

> At the first glance, it seems like a faulty drive.  Have you tried the drive 
> on different hardware?  Has it ever worked?

No, I don't have any other SATA hardware to try it with.  It is a new
drive so I suppose it's possible it's just DOA.  I'll see if I can work
out a way to try it on a friend's hardware or something.

Michael Sterrett
   -Mr. Bones.-
michael.sterrett@coat.com

^ permalink raw reply	[flat|nested] 113+ messages in thread

* [PATCH 1/1] libata: use polling pio for identify device
  2006-05-19 11:03                 ` Tejun Heo
@ 2006-05-22  3:51                   ` Albert Lee
  2006-05-22  6:24                     ` Jeff Garzik
  0 siblings, 1 reply; 113+ messages in thread
From: Albert Lee @ 2006-05-22  3:51 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Tejun Heo, linux-ide, Doug Maxey

Use polling pio for identify device.
This can save some time to detect the phantom device 1 during boot.

Signed-off-by: Albert Lee <albertcc@tw.ibm.com>
---
For the phantom slave device (found with some IBM DVD-RAM drive and
Intel ICHx chip), irq-pio has to wait 30 seconds timeout to detect them.

Use polling pio can detect the phantom slave quicker. (Verified ok by Tejun.)

Patch again the current upstream branch (b74ba22f030eb7ab88f7d8954ad18ecc0ac5ce3c).
For your review, thanks.

--- upstream/drivers/scsi/libata-core.c	2006-05-22 10:04:12.000000000 +0800
+++ polling_identify/drivers/scsi/libata-core.c	2006-05-22 11:07:02.000000000 +0800
@@ -1196,6 +1196,8 @@ static int ata_dev_read_id(struct ata_de
 	}
 
 	tf.protocol = ATA_PROT_PIO;
+	/* Use polling for early detection of phantom dev 1 */
+	tf.flags |= ATA_TFLAG_POLLING;
 
 	err_mask = ata_exec_internal(dev, &tf, NULL, DMA_FROM_DEVICE,
 				     id, sizeof(id[0]) * ATA_ID_WORDS);



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-22  2:42   ` Tejun Heo
  2006-05-22  3:42     ` Michael Sterrett -Mr. Bones.-
@ 2006-05-22  6:23     ` Michael Sterrett -Mr. Bones.-
  1 sibling, 0 replies; 113+ messages in thread
From: Michael Sterrett -Mr. Bones.- @ 2006-05-22  6:23 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jeff Garzik, linux-ide

On Mon, 22 May 2006, Tejun Heo wrote:

> At the first glance, it seems like a faulty drive.  Have you tried the drive 
> on different hardware?  Has it ever worked?

Yep, it's a brick.  Was able to try it on a friend's box with different
controller and cable and still a no-go.  It's going back to newegg.
Sorry for the noise.

Michael Sterrett
   -Mr. Bones.-
mr_bones_@gentoo.org

^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [PATCH 1/1] libata: use polling pio for identify device
  2006-05-22  3:51                   ` [PATCH 1/1] libata: use polling pio for identify device Albert Lee
@ 2006-05-22  6:24                     ` Jeff Garzik
  2006-05-23  2:27                       ` Albert Lee
  0 siblings, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-22  6:24 UTC (permalink / raw)
  To: albertl; +Cc: Tejun Heo, linux-ide, Doug Maxey

Albert Lee wrote:
> Use polling pio for identify device.
> This can save some time to detect the phantom device 1 during boot.
> 
> Signed-off-by: Albert Lee <albertcc@tw.ibm.com>
> ---
> For the phantom slave device (found with some IBM DVD-RAM drive and
> Intel ICHx chip), irq-pio has to wait 30 seconds timeout to detect them.
> 
> Use polling pio can detect the phantom slave quicker. (Verified ok by Tejun.)
> 
> Patch again the current upstream branch (b74ba22f030eb7ab88f7d8954ad18ecc0ac5ce3c).
> For your review, thanks.
> 
> --- upstream/drivers/scsi/libata-core.c	2006-05-22 10:04:12.000000000 +0800
> +++ polling_identify/drivers/scsi/libata-core.c	2006-05-22 11:07:02.000000000 +0800
> @@ -1196,6 +1196,8 @@ static int ata_dev_read_id(struct ata_de
>  	}
>  
>  	tf.protocol = ATA_PROT_PIO;
> +	/* Use polling for early detection of phantom dev 1 */
> +	tf.flags |= ATA_TFLAG_POLLING;

Sorry I didn't jump into the thread earlier.  I'm trying out this new 
no-work-on-weekends thing, which is a change from my usual 
working-7-days-a-week thing.  :)

NAK.  The above change is going backwards from the direction we took by 
merging irq-pio, and it reintroduces problems that irq-pio solved. 
Additionally, for irq problems unrelated to libata (we will continue to 
see such problems FOREVER), this simply shifts the I-notice-a-problem 
moment from IDENTIFY DEVICE to SET FEATURES, or perhaps the first READ 
or WRITE.

SATA is inherently event driven (read: irq-driven), and PATA has 
traditionally been irq-driven in the Linux drivers/ide code.  Using 
polling for solving this specific problem just isn't enough 
justification.  We should be able to fix this elsewhere.  Take a look at 
the drivers/ide "bang at the door w/ IDENTIFY" probing method.  We took 
a different approach (device signature, etc.) but its still a useful 
working case to examine.

As an aside, phantom devices make me think that somewhere we might be 
getting device-select wrong, or accidentally skipping it entirely.

	Jeff




^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  1:27                   ` Tejun Heo
  2006-05-17  2:26                     ` Jeff Garzik
@ 2006-05-22  7:19                     ` Jeff Garzik
  2006-05-23 13:59                       ` Tejun Heo
  1 sibling, 1 reply; 113+ messages in thread
From: Jeff Garzik @ 2006-05-22  7:19 UTC (permalink / raw)
  To: Tejun Heo; +Cc: ric, linux-ide, Mark Lord, Jens Axboe

Tejun Heo wrote:
> Jeff Garzik wrote:
>> Tejun Heo wrote:
>>> Jeff Garzik wrote:
>>>> Jeff Garzik wrote:
>>>>> Tejun Heo wrote:
>>>>>> Hmmm.. The drive is issuing SDB FIS which completes already 
>>>>>> completed tags.  This could be dangerous.  Depending on timing, it 
>>>>>> might end up finishing a command which occupied the slot which 
>>>>>> hasn't been processed yet.  If a drive does this, NCQ shouldn't be 
>>>>>> enabled for it.  Can you post full boot dmesg?
>>>>>
>>>>> I'm not sure the data supports that conclusion?  PORT_IRQ_SDB_FIS 
>>>>> is quite normal and expected during NCQ operation, if that 
>>>>> interrupt is enabled.  Just normal SDB:Entry and SDB:SetIntr states.
>>>>
>>>> Strike that last part:  PORT_IRQ_SDB_FIS will appear, as with other 
>>>> status bits, even if the enable bit is not set.
>>>>
>>>> So, you'll see that whenever you get an SDB FIS during normal 
>>>> operation.
>>>
>>> The problem is with the second dword.  Here are some of spurious SDB 
>>> FISes Ric's AHCI was receiving.
>>>
>>> 004040a1:10000000
>>> 004040a1:00000020
>>> 004040a1:00000080
>>>
>>> If the second dword were all zero, it's simply SDB FIS turning on IRQ 
>>> (bit 14 of the first dword) and there's nothing to worry about. 
>>> However, all those spurious SDBs have one bit set in the second dword 
>>> - meaning the SDB completes the corresponding tag, but the tag isn't 
>>> active when those SDBs are received.
>>>
>>> This is okay as long as the controller thinks the tags are unoccupied 
>>> when those SDBs are received, but it's not something which can be 
>>> guaranteed.  NCQ command synchronization depends on devices not 
>>> completing the same commands more than once.
>>>
>>> The duplicate completions might be okay if the drive guarantees it 
>>> doesn't send it if it loses to command issuance.  e.g.
>>>
>>> 1. drive sends completion for tag x
>>> 2. drive shortly schedules another completion for tag x (spurious)
>>> 3. ahci/driver complete tag x
>>> 4. ahci/driver issues tag x
>>> 5. drive receives command for tag x before sending the spurious 
>>> completion and determines not to send the spurious completion. (not 
>>> very likely)
>>>
>>> If above is true, the drive might be okay, but nobody can guarantee 
>>> how  various controllers react.  It depends on how controllers manage 
>>> SActive (when to turn bits on).  At any rate, it's dangerous IMHO.
>>
>> If the silicon is screwing up SActive bits, then we have bigger 
>> problems than spurious interrupts.
>>
>> So, the typical policy of Internet servers applies here:  "be liberal 
>> in what you accept."  For smart controllers like AHCI, we will simply 
>> set the desired IRQ mask, then happily receive and ack events anytime 
>> the controller decides to raise them.  If the controller decides to 
>> send us a no-op, don't worry about it.  This is particularly true when 
>> we turn on Command Coalescing, where we'll have a run of work 
>> initiated [sometimes] by an internal timer, rather than an actual FIS 
>> reception.
> 
> I wish I could explain it better.  This is a clear protocol violation 
> from the drive.  Depending on specific implementation of the drive and 
> the controller, it can result in completion of command which is not 
> processed yet (data corruption!).

I quite understand the implications.  My argument comes from a different 
angle:  I don't feel we should be adding tons of code that essentially 
validates the silicon.  There are plenty of chances for the hardware to 
fuck up in a way that corrupts data, and is also difficult to detect. 
Pre-production BIOS have even done silly things like turn off data 
verification (checksum) by default.  Talk about subtle corruption...

So I feel the best path is to use the hardware programming sequences 
described in the spec, because that's what the chip designers and Q/A 
engineers validate with (read: the Windows driver).

Once we have deployed drivers with the standard programming sequences, 
_then_ we can consider looking into proper spurious interrupt 
accounting.  The current AHCI interrupt accounting stuff is not nearly 
as accurate as it should be, which implies that the code simply should 
not exist at the present time.

	Jeff



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-17  6:35         ` Tejun Heo
  2006-05-18 11:24           ` Albert Lee
  2006-05-18 23:07           ` [RFT] major libata update Andrew Morton
@ 2006-05-22  7:22           ` Jeff Garzik
  2 siblings, 0 replies; 113+ messages in thread
From: Jeff Garzik @ 2006-05-22  7:22 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Andrew Morton, linux-ide, linux-kernel, torvalds

Tejun Heo wrote:
> * Proposed solution
> 
> It seems that the only solution is to make use of the PCS presence bits 
> somehow.  It is know that 6300ESB family of controllers have flaky 
> presence bits (ata_piix marks them with PIIX_FLAG_IGNORE_PCS), but I 
> couldn't find any document/errata for PCS bits for any other 
> controllers.  So, we can use PCS for all !PIIX_FLAG_IGNORE_PCS 
> controllers or take a conservative approach and make use of it only on 
> cases where ghosting problem is reported (ICH7 and 8, I guess.  Can 
> anyone test 6?).
> 
> Please note that we already use some use of the PCS value when probing 
> SATA port.  If its value is zero, we skip the port.  It's done this way 
> mainly due to historical reasons - until recently ata_piix didn't have 
> MAP tables to map PM/PS/SM/SS to specific ports thus used the PCS values 
> in rougher form.
> 
> Jeff, what do you think?


Sounds sane...

	Jeff



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [PATCH 1/1] libata: use polling pio for identify device
  2006-05-22  6:24                     ` Jeff Garzik
@ 2006-05-23  2:27                       ` Albert Lee
  0 siblings, 0 replies; 113+ messages in thread
From: Albert Lee @ 2006-05-23  2:27 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: albertl, Tejun Heo, linux-ide, Doug Maxey

Jeff Garzik wrote:
> Albert Lee wrote:
> 
>> Use polling pio for identify device.
>> This can save some time to detect the phantom device 1 during boot.
>>
>> Signed-off-by: Albert Lee <albertcc@tw.ibm.com>
>> ---
>> For the phantom slave device (found with some IBM DVD-RAM drive and
>> Intel ICHx chip), irq-pio has to wait 30 seconds timeout to detect them.
>>
>> Use polling pio can detect the phantom slave quicker. (Verified ok by
>> Tejun.)
>>
>> Patch again the current upstream branch
>> (b74ba22f030eb7ab88f7d8954ad18ecc0ac5ce3c).
>> For your review, thanks.
>>
>> --- upstream/drivers/scsi/libata-core.c    2006-05-22
>> 10:04:12.000000000 +0800
>> +++ polling_identify/drivers/scsi/libata-core.c    2006-05-22
>> 11:07:02.000000000 +0800
>> @@ -1196,6 +1196,8 @@ static int ata_dev_read_id(struct ata_de
>>      }
>>  
>>      tf.protocol = ATA_PROT_PIO;
>> +    /* Use polling for early detection of phantom dev 1 */
>> +    tf.flags |= ATA_TFLAG_POLLING;
> 
> 
> Sorry I didn't jump into the thread earlier.  I'm trying out this new
> no-work-on-weekends thing, which is a change from my usual
> working-7-days-a-week thing.  :)
> 
> NAK.  The above change is going backwards from the direction we took by
> merging irq-pio, and it reintroduces problems that irq-pio solved.
> Additionally, for irq problems unrelated to libata (we will continue to
> see such problems FOREVER), this simply shifts the I-notice-a-problem
> moment from IDENTIFY DEVICE to SET FEATURES, or perhaps the first READ
> or WRITE.

Currently if the device fails to IDENTIFY DEVICE, new EH will retry
for 3 times and offline it. So, the faulty/phantom device won't
cause trouble to SET FEATURES and normal operation of libata.

(The impact is, 90 seconds boot time for irq-pio and 15 seconds
boot time for polling-pio to IDENTIFY DEVICE and EH recovery.)

> 
> SATA is inherently event driven (read: irq-driven), and PATA has
> traditionally been irq-driven in the Linux drivers/ide code.  Using
> polling for solving this specific problem just isn't enough
> justification.  We should be able to fix this elsewhere.  Take a look at
> the drivers/ide "bang at the door w/ IDENTIFY" probing method.  We took
> a different approach (device signature, etc.) but its still a useful
> working case to examine.

Agree. We need better way to identify the phantom slave.
Will check if any clue we can use, before banging the door by IDENTIFY.

--
albert

> 
> As an aside, phantom devices make me think that somewhere we might be
> getting device-select wrong, or accidentally skipping it entirely.
> 
>     Jeff
> 



^ permalink raw reply	[flat|nested] 113+ messages in thread

* Re: [RFT] major libata update
  2006-05-22  7:19                     ` Jeff Garzik
@ 2006-05-23 13:59                       ` Tejun Heo
  0 siblings, 0 replies; 113+ messages in thread
From: Tejun Heo @ 2006-05-23 13:59 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: ric, linux-ide, Mark Lord, Jens Axboe

Jeff Garzik wrote:
> I quite understand the implications.  My argument comes from a different 
> angle:  I don't feel we should be adding tons of code that essentially 
> validates the silicon.

Actually, I think libata-core can/should implement helper function to 
handle ATA device malfunctions in controller-independent way.  Most 
FIS-based controllers provide some level of information about the most 
recent FIS.  The helper function can figure out what's going on and 
required action with info available in the libata-core level and the FIS 
info from LLD irq handler.

> There are plenty of chances for the hardware to 
> fuck up in a way that corrupts data, and is also difficult to detect. 
> Pre-production BIOS have even done silly things like turn off data 
> verification (checksum) by default.  Talk about subtle corruption...
> 
> So I feel the best path is to use the hardware programming sequences 
> described in the spec, because that's what the chip designers and Q/A 
> engineers validate with (read: the Windows driver).

I understand your concern about bloating LLDs with special case handling 
coes but I don't really follow the above logic.  Vendors include every 
possible workaround in their proprietary drivers to make things work 
smoothly.  They don't stick to datasheets in the face existing problems.

> Once we have deployed drivers with the standard programming sequences, 
> _then_ we can consider looking into proper spurious interrupt 
> accounting.  The current AHCI interrupt accounting stuff is not nearly 
> as accurate as it should be, which implies that the code simply should 
> not exist at the present time.

I think it's okay to remove spurious interrupt accounting until AHCI irq 
handling is in better shape as long as we plan to implement proper 
handling in not too distant future.  Also, please note that without code 
that reporting such events, it would be difficult to learn what kind of 
weird things happen.

Thanks.

-- 
tejun


^ permalink raw reply	[flat|nested] 113+ messages in thread

end of thread, other threads:[~2006-05-23 21:55 UTC | newest]

Thread overview: 113+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-15 17:00 [RFT] major libata update Jeff Garzik
2006-05-15 17:18 ` Andrew Morton
2006-05-15 18:06   ` Jeff Garzik
2006-05-15 19:06     ` Arkadiusz Miskiewicz
2006-05-15 20:45       ` Jeff Garzik
2006-05-15 19:33     ` Mark Lord
2006-05-15 22:52       ` Tejun Heo
2006-05-15 18:15   ` Jeff Garzik
2006-05-15 18:27     ` Andrew Morton
2006-05-15 18:44       ` Jeff Garzik
2006-05-15 18:37     ` Alan Cox
2006-05-15 17:19 ` Alan Cox
2006-05-15 17:13   ` Jeff Garzik
2006-05-15 18:29 ` Tomasz Torcz
2006-05-15 18:43   ` Jeff Garzik
2006-05-15 23:32     ` Tejun Heo
2006-05-15 23:49       ` Jeff Garzik
2006-05-16  0:04         ` Tejun Heo
2006-05-16  2:15           ` Tejun Heo
2006-05-15 19:15 ` Jeff Garzik
2006-05-15 23:02 ` Wakko Warner
2006-05-15 23:00   ` Jeff Garzik
2006-05-15 23:13     ` Wakko Warner
2006-05-15 23:19       ` Jeff Garzik
2006-05-15 23:40     ` Alan Cox
2006-05-15 23:50       ` Wakko Warner
2006-05-15 23:38   ` Alan Cox
2006-05-15 23:47     ` Wakko Warner
2006-05-15 23:45       ` Jeff Garzik
2006-05-15 23:30 ` Avuton Olrich
2006-05-15 23:36   ` Tejun Heo
2006-05-15 23:54   ` Jeff Garzik
2006-05-16  0:08     ` Avuton Olrich
2006-05-16  3:36     ` Avuton Olrich
2006-05-16  3:51       ` Jeff Garzik
2006-05-16  4:33         ` Avuton Olrich
2006-05-16 14:57           ` Linus Torvalds
2006-05-17 15:25             ` OGAWA Hirofumi
2006-05-17 23:40               ` Linus Torvalds
2006-05-17 23:48                 ` Jeff Garzik
2006-05-18  1:48                   ` Alan Cox
2006-05-17 23:49                 ` Linus Torvalds
2006-05-16 15:02           ` Jeff Garzik
2006-05-16  3:55       ` Tejun Heo
2006-05-16  4:37         ` Avuton Olrich
2006-05-16 11:36 ` Ric Wheeler
2006-05-16 14:25   ` Jeff Garzik
2006-05-16 15:24     ` Tejun Heo
2006-05-16 18:29       ` Ric Wheeler
2006-05-16 21:41         ` Ric Wheeler
2006-05-16 22:02           ` Jeff Garzik
2006-05-16 23:11             ` Eric D. Mudama
2006-05-17  2:13               ` Ric Wheeler
2006-05-16 23:23             ` Tejun Heo
2006-05-17  2:09               ` Ric Wheeler
2006-05-16 23:44         ` Tejun Heo
2006-05-16 23:53           ` Jeff Garzik
2006-05-17  0:00             ` Jeff Garzik
2006-05-17  0:29               ` Tejun Heo
2006-05-17  1:08                 ` Jeff Garzik
2006-05-17  1:27                   ` Tejun Heo
2006-05-17  2:26                     ` Jeff Garzik
2006-05-17  3:05                       ` Tejun Heo
2006-05-22  7:19                     ` Jeff Garzik
2006-05-23 13:59                       ` Tejun Heo
2006-05-17  0:31               ` Jeff Garzik
2006-05-17  0:50                 ` Tejun Heo
2006-05-17  0:57                   ` Tejun Heo
2006-05-17  2:22                     ` Ric Wheeler
2006-05-17  1:37                       ` Tejun Heo
2006-05-17  3:57                         ` Ric Wheeler
2006-05-17  4:44                           ` Tejun Heo
2006-05-17 11:30                             ` Ric Wheeler
2006-05-17 20:45                             ` Ric Wheeler
2006-05-17 21:01                             ` Mark Lord
2006-05-17 21:04                               ` Jeff Garzik
2006-05-17 21:50                                 ` Tejun Heo
2006-05-17 21:56                                   ` Mark Lord
2006-05-17 22:00                                     ` Jeff Garzik
2006-05-17 22:03                                       ` Mark Lord
2006-05-17 22:13                                         ` Jeff Garzik
2006-05-18  3:33                                     ` Ric Wheeler
2006-05-18  3:26                                       ` Tejun Heo
2006-05-18 11:58                                         ` Ric Wheeler
2006-05-18 12:52                                           ` Mark Lord
2006-05-18 13:22                                             ` Ric Wheeler
2006-05-18 13:37                                               ` Jens Axboe
2006-05-17  1:13                   ` Jeff Garzik
2006-05-17  1:14                   ` Jeff Garzik
2006-05-17  2:16           ` Ric Wheeler
2006-05-16 23:34       ` Jeff Garzik
2006-05-16 23:53         ` Tejun Heo
2006-05-17  2:05 ` Andrew Morton
2006-05-17  4:49   ` Tejun Heo
2006-05-17  4:56     ` Andrew Morton
2006-05-17  5:14       ` Tejun Heo
2006-05-17  6:35         ` Tejun Heo
2006-05-18 11:24           ` Albert Lee
2006-05-18 11:33             ` Tejun Heo
2006-05-19 10:37               ` Albert Lee
2006-05-19 11:03                 ` Tejun Heo
2006-05-22  3:51                   ` [PATCH 1/1] libata: use polling pio for identify device Albert Lee
2006-05-22  6:24                     ` Jeff Garzik
2006-05-23  2:27                       ` Albert Lee
2006-05-18 23:07           ` [RFT] major libata update Andrew Morton
2006-05-19  1:14             ` Tejun Heo
2006-05-19  2:06               ` Jeff Garzik
2006-05-19  2:16                 ` Tejun Heo
2006-05-22  7:22           ` Jeff Garzik
2006-05-21 23:51 ` Michael Sterrett -Mr. Bones.-
2006-05-22  2:42   ` Tejun Heo
2006-05-22  3:42     ` Michael Sterrett -Mr. Bones.-
2006-05-22  6:23     ` Michael Sterrett -Mr. Bones.-

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