pandora-kernel.git
17 years ago[PATCH] libata-ncq: implement NCQ command translation and exclusion
Tejun Heo [Mon, 15 May 2006 12:03:45 +0000 (21:03 +0900)]
[PATCH] libata-ncq: implement NCQ command translation and exclusion

This patch implements NCQ command translation and exclusion.  Note
that NCQ commands don't use ata_rwcmd_protocol() to choose ATA
command.  This is because, unlike non-NCQ RW commands, NCQ commands
can only be used for NCQ protocol and FUA handling is done with a flag
rather than separate command.

NCQ enabled device will have queue depth larger than one but no two
non-NCQ commands can be issued simultaneously, neither can a non-NCQ
command and NCQ commands.  This patch makes ata_scsi_translate()
return SCSI_MLQUEUE_DEVICE_BUSY if such exclusion is necessary.  SCSI
midlayer will retry the command later.

As SCSI midlayer always retries once a command completes, this doesn't
incur unnecessary delays and as most commands will be NCQ ones for NCQ
device, so the overhead should be negligible.

Initial implementation is from Jens Axboe and using
SCSI_MLQUEUE_DEVICE_BUSY for exclusion is suggested by Jeff Garzik.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-ncq: implement ap->qc_active, ap->sactive and complete helper
Tejun Heo [Mon, 15 May 2006 12:03:43 +0000 (21:03 +0900)]
[PATCH] libata-ncq: implement ap->qc_active, ap->sactive and complete helper

Add ap->qc_active and ap->sactive, mask of all active qcs and libata's
view of the SActive register, respectively.  Also, implement
ata_qc_complete_multiple() which takes new qc_active mask and complete
multiple qcs according to the mask.

These will be used to track NCQ commands and complete them.  The
distinction between ap->qc_active and ap->sactive is also useful for
later PM implementation.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-ncq: rename ap->qactive to ap->qc_allocated
Tejun Heo [Mon, 15 May 2006 12:03:41 +0000 (21:03 +0900)]
[PATCH] libata-ncq: rename ap->qactive to ap->qc_allocated

Rename ap->qactive to ap->qc_allocated.  This is to accomodate
addition of ap->qc_active, mask of active qcs.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-ncq: pass ata_scsi_translate() return value to SCSI midlayer
Tejun Heo [Mon, 15 May 2006 12:03:39 +0000 (21:03 +0900)]
[PATCH] libata-ncq: pass ata_scsi_translate() return value to SCSI midlayer

ata_scsi_translate() will need to return SCSI_ML_QUEUE_DEVICE_BUSY to
achieve exlusion between NCQ and non-NCQ commands or among non-NCQ
commands.  Pass its return value upward to SCSI midlayer.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-ncq: add NCQ related ATA/libata constants and macros
Tejun Heo [Mon, 15 May 2006 12:03:38 +0000 (21:03 +0900)]
[PATCH] libata-ncq: add NCQ related ATA/libata constants and macros

Add NCQ related ATA/libata constants and macros.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: fix irq-pio merge
Tejun Heo [Mon, 15 May 2006 11:59:29 +0000 (20:59 +0900)]
[PATCH] libata: fix irq-pio merge

* kill ata_poll_qc_complete() and implement/use ata_hsm_qc_complete()
  which completes qcs in new EH compliant manner from HSM

* don't print error message from ata_hsm_move().  it's responsibility
  of EH.

* kill ATA_FLAG_NOINTR usage in bmdma EH

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years agoMerge branch 'irq-pio'
Tejun Heo [Mon, 15 May 2006 11:59:15 +0000 (20:59 +0900)]
Merge branch 'irq-pio'

Conflicts:

drivers/scsi/libata-core.c
include/linux/libata.h

17 years ago[PATCH] sata_sil24: convert to new EH
Tejun Heo [Mon, 15 May 2006 11:58:32 +0000 (20:58 +0900)]
[PATCH] sata_sil24: convert to new EH

Convert sata_sil24 to new EH.

* When port is frozen, IRQ for the port is masked.

* sil24_softreset() doesn't need to mangle with IRQ mask anymore.
  libata ensures that the port is frozen during reset.

* Only turn on interrupts which are handled by interrupt handler and
  EH.  As we don't handle SDB notify yet, turn it off. DEV_XCHG and
  UNK_FIS are handled by EH and thus turned on.

* sil24_softreset() usually fails to recover the port after DEV_XCHG.
  ATA_PORT_HARDRESET is used as recovery action for DEV_XCHG.

* sil24 may be invoked without any active command.  e.g. DEV_XCHG irq
  occuring while no qc in progress still triggers EH and will reset
  the port and revalidate attached device.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] ahci: add PIOS interim interrupt handling
Tejun Heo [Mon, 15 May 2006 11:58:30 +0000 (20:58 +0900)]
[PATCH] ahci: add PIOS interim interrupt handling

During multiblock PIO, multiple PIOS interrupts are generated before
qc compltion.  Current code prints unnecessary message for such cases.
This is exposed when new EH slows down attached device into PIO mode.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] ahci: convert to new EH
Tejun Heo [Mon, 15 May 2006 11:58:29 +0000 (20:58 +0900)]
[PATCH] ahci: convert to new EH

Convert AHCI to new EH.  Unfortunately, ICH7 AHCI reacts badly if IRQ
mask is diddled during operation.  So, freezing is implemented by
unconditionally clearing interrupt conditions while frozen.

* Interrupts are categorized according to required action.
  e.g. Connection status or unknown FIS error requires freezing the
  port while TF or HBUS_DATA don't.

* Only CONNECT (reflects SErr.X) interrupt is taken into account not
  PHYRDY (SErr.N), as CONNECT is better cue for starting EH.

* AHCI may be invoked without any active command.  e.g. CONNECT irq
  occuring while no qc in progress still triggers EH and will reset
  the port and revalidate attached device.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] sata_sil: convert to new EH
Tejun Heo [Mon, 15 May 2006 11:58:27 +0000 (20:58 +0900)]
[PATCH] sata_sil: convert to new EH

Convert sata_sil to new EH.  As these controllers have hardware
interrupt mask and are known to have screaming interrupts issues, use
hardware IRQ masking for freezing.  sil_freeze() masks interrupts for
the port and sil_thaw() unmasks them.  As ports are automatically
frozen before probing reset, there is no need to initialize interrupt
masks sil_init_onde().  Remove related code.

Other than freezing, sata_sil uses stock BMDMA EH routines.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] ata_piix: convert to new EH
Tejun Heo [Mon, 15 May 2006 11:58:25 +0000 (20:58 +0900)]
[PATCH] ata_piix: convert to new EH

ata_piix can use stock BMDMA EH routines.  Convert to new EH.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh: implement BMDMA EH
Tejun Heo [Mon, 15 May 2006 11:58:24 +0000 (20:58 +0900)]
[PATCH] libata-eh: implement BMDMA EH

Implement stock BMDMA error handling methods.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh: implement new EH
Tejun Heo [Mon, 15 May 2006 11:58:22 +0000 (20:58 +0900)]
[PATCH] libata-eh: implement new EH

Implement new EH.  The exported interface is ata_do_eh() which is to
be called from ->error_handler and performs the following steps to
recover the failed port.

ata_eh_autopsy() : analyze SError/TF, determine the cause of failure
   and required recovery actions and record it in
   ap->eh_context
ata_eh_report()  : report the failure to user
ata_eh_recover() : perform recovery actions described in ap->eh_context
ata_eh_finish()  : finish failed qcs

LLDDs can customize error handling by modifying eh_context before
calling ata_do_eh() or, if necessary, doing so inbetween each major
steps by calling each step explicitly.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh: implement ata_eh_info and ata_eh_context
Tejun Heo [Mon, 15 May 2006 11:58:21 +0000 (20:58 +0900)]
[PATCH] libata-eh: implement ata_eh_info and ata_eh_context

struct ata_eh_info serves as the communication channel between
execution path and EH.  Execution path describes detected error
condition in ap->eh_info and EH recovers the port using it.  To avoid
missing error conditions detected during EH, EH makes its own copy of
eh_info and clears it on entry allowing error info to accumulate
during EH.

Most EH states including EH's copy of eh_info are stored in
ap->eh_context (struct ata_eh_context) which is owned by EH and thus
doesn't require any synchronization to access and alter.  This
standardized context makes it easy to integrate various parts of EH
and extend EH to handle multiple links (for PM).

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh: implement dev->ering
Tejun Heo [Mon, 15 May 2006 11:58:19 +0000 (20:58 +0900)]
[PATCH] libata-eh: implement dev->ering

This patch implements ata_ering and uses it to define dev->ering.

ata_ering is a ring buffer which records libata errors - whether a
command was for normar IO request, err_mask and timestamp.  Errors are
recorded per-device in dev->ering.  This will be used by EH to
determine recovery actions.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh: add ATA and libata flags for new EH
Tejun Heo [Mon, 15 May 2006 11:58:17 +0000 (20:58 +0900)]
[PATCH] libata-eh: add ATA and libata flags for new EH

Add ATA and libata flags to be used by new EH.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh-fw: update SCSI command completion path for new EH
Tejun Heo [Mon, 15 May 2006 11:58:16 +0000 (20:58 +0900)]
[PATCH] libata-eh-fw: update SCSI command completion path for new EH

SCSI command completion path used to do some part of EH including
printing messages and obtaining sense data.  With new EH, all these
are responsibilities of the EH, update SCSI command completion path to
reflect this.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh-fw: update ata_exec_internal() for new EH
Tejun Heo [Mon, 15 May 2006 11:58:14 +0000 (20:58 +0900)]
[PATCH] libata-eh-fw: update ata_exec_internal() for new EH

Update ata_exec_internal() such that it uses new EH framework.
->post_internal_cmd() is always invoked regardless of completion
status.  Also, when ata_exec_internal() detects a timeout condition
and new EH is in place, it freezes the port as timeout for normal
commands would do.

Note that ata_port_flush_task() is called regardless of
wait_for_completion status.  This is necessary as exceptions unrelated
to the qc can abort the qc, in which case PIO task could still be
running after the wait for completion returns.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh-fw: update ata_scsi_error() for new EH
Tejun Heo [Mon, 15 May 2006 11:58:12 +0000 (20:58 +0900)]
[PATCH] libata-eh-fw: update ata_scsi_error() for new EH

Update ata_scsi_error() for new EH.  ata_scsi_error() is responsible
for claiming timed out qcs and invoking ->error_handler in safe and
synchronized manner.  As the state of the controller is unknown if a
qc has timed out, the port is frozen in such cases.

Note that ata_scsi_timed_out() isn't used for new EH.  This is because
a timed out qc cannot be claimed by EH without freezing the port and
freezing the port in ata_scsi_timed_out() results in unnecessary
abortion of other active qcs.  ata_scsi_timed_out() can be removed
once all drivers are converted to new EH.

While at it, add 'TODO: kill' comments to old EH functions.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh-fw: implement new EH scheduling from PIO
Tejun Heo [Mon, 15 May 2006 11:58:11 +0000 (20:58 +0900)]
[PATCH] libata-eh-fw: implement new EH scheduling from PIO

PIO executes without holding host_set lock, so it cannot be
synchronized using the same mechanism as interrupt driven execution.
port_task framework makes sure that EH is not entered until PIO task
is flushed, so PIO task can be sure the qc in progress won't go away
underneath it.  One thing it cannot be sure of is whether the qc has
already been scheduled for EH by another exception condition while
host_set lock was released.

This patch makes ata_poll_qc-complete() handle such conditions
properly and make it freeze the port if HSM violation is detected
during PIO execution.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh-fw: implement freeze/thaw
Tejun Heo [Mon, 15 May 2006 11:58:09 +0000 (20:58 +0900)]
[PATCH] libata-eh-fw: implement freeze/thaw

Freezing is performed atomic w.r.t. host_set->lock and once frozen
LLDD is not allowed to access the port or any qc on it.  Also, libata
makes sure that no new qc gets issued to a frozen port.

A frozen port is thawed after a reset operation completes
successfully, so reset methods must do its job while the port is
frozen.  During initialization all ports get frozen before requesting
IRQ, so reset methods are always invoked on a frozen port.

Optional ->freeze and ->thaw operations notify LLDD that the port is
being frozen and thawed, respectively.  LLDD can disable/enable
hardware interrupt in these callbacks if the controller's IRQ mask can
be changed dynamically.  If the controller doesn't allow such
operation, LLDD can check for frozen state in the interrupt handler
and ack/clear interrupts unconditionally while frozen.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh-fw: implement ata_port_schedule_eh() and ata_port_abort()
Tejun Heo [Mon, 15 May 2006 11:58:07 +0000 (20:58 +0900)]
[PATCH] libata-eh-fw: implement ata_port_schedule_eh() and ata_port_abort()

ata_port_schedule_eh() directly schedules EH for @ap without
associated qc.  Once EH scheduled, no further qc is allowed and EH
kicks in as soon as all currently active qc's are drained.

ata_port_abort() schedules all currently active commands for EH by
qc_completing them with ATA_QCFLAG_FAILED set.  If ata_port_abort()
doesn't find any qc to abort, it directly schedule EH using
ata_port_schedule_eh().

These two functions provide ways to invoke EH for conditions which
aren't directly related to any specfic qc.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh-fw: implement new EH scheduling via error completion
Tejun Heo [Mon, 15 May 2006 11:58:05 +0000 (20:58 +0900)]
[PATCH] libata-eh-fw: implement new EH scheduling via error completion

There are several ways a qc can get schedule for EH in new EH.  This
patch implements one of them - completing a qc with ATA_QCFLAG_FAILED
set or with non-zero qc->err_mask.  ALL such qc's are examined by EH.

New EH schedules a qc for EH from completion iff ->error_handler is
implemented, qc is marked as failed or qc->err_mask is non-zero and
the command is not an internal command (internal cmd is handled via
->post_internal_cmd).  The EH scheduling itself is performed by asking
SCSI midlayer to schedule EH for the specified scmd.

For drivers implementing old-EH, nothing changes.  As this change
makes ata_qc_complete() rather large, it's not inlined anymore and
__ata_qc_complete() is exported to other parts of libata for later
use.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh-fw: update ata_qc_from_tag() to enforce normal/EH qc ownership
Tejun Heo [Mon, 15 May 2006 11:58:03 +0000 (20:58 +0900)]
[PATCH] libata-eh-fw: update ata_qc_from_tag() to enforce normal/EH qc ownership

New EH framework has clear distinction about who owns a qc.  Every qc
starts owned by normal execution path - PIO, interrupt or whatever.
When an exception condition occurs which affects the qc, the qc gets
scheduled for EH.  Note that some events (say, link lost and regained,
command timeout) may schedule qc's which are not directly related but
could have been affected for EH too.  Scheduling for EH is atomic
w.r.t. ap->host_set->lock and once schedule for EH, normal execution
path is not allowed to access the qc in whatever way.  (PIO
synchronization acts a bit different and will be dealt with later)

This patch make ata_qc_from_tag() check whether a qc is active and
owned by normal path before returning it.  If conditions don't match,
NULL is returned and thus access to the qc is denied.
__ata_qc_from_tag() is the original ata_qc_from_tag() and is used by
libata core/EH layers to access inactive/failed qc's.

This change is applied only if the associated LLDD implements new EH
as indicated by non-NULL ->error_handler

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh-fw: use special reserved tag and qc for internal commands
Tejun Heo [Mon, 15 May 2006 11:58:02 +0000 (20:58 +0900)]
[PATCH] libata-eh-fw: use special reserved tag and qc for internal commands

New EH may issue internal commands to recover from error while failed
qc's are still hanging around.  To allow such usage, reserve tag
ATA_MAX_QUEUE-1 for internal command.  This also makes it easy to tell
whether a qc is for internal command or not.  ata_tag_internal() test
implements this test.

To avoid breaking existing drivers, ata_exec_internal() uses
ATA_TAG_INTERNAL only for drivers which implement ->error_handler.
For drivers using old EH, tag 0 is used.  Note that this makes
ata_tag_internal() test valid only when ->error_handler is
implemented.  This is okay as drivers on old EH should not and does
not have any reason to use ata_tag_internal().

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh-fw: clear SError in ata_std_postreset()
Tejun Heo [Mon, 15 May 2006 11:58:00 +0000 (20:58 +0900)]
[PATCH] libata-eh-fw: clear SError in ata_std_postreset()

Clear SError in ata_std_postreset().  This is to clear SError bits
which get set during reset.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata-eh-fw: add flags and operations for new EH
Tejun Heo [Mon, 15 May 2006 11:57:58 +0000 (20:57 +0900)]
[PATCH] libata-eh-fw: add flags and operations for new EH

Add ATA_FLAG_EH_{PENDING|FROZEN}, ATA_ATA_QCFLAG_{FAILED|SENSE_VALID}
and ops->freeze, thaw, error_handler, post_internal_cmd() for new EH.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: use ATA printk helpers
Tejun Heo [Mon, 15 May 2006 11:57:56 +0000 (20:57 +0900)]
[PATCH] libata: use ATA printk helpers

Use ATA printk helpers.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: implement ATA printk helpers
Tejun Heo [Mon, 15 May 2006 11:57:55 +0000 (20:57 +0900)]
[PATCH] libata: implement ATA printk helpers

Implement ata_{port|dev}_printk() which prefixes the message with
proper identification string.  This change is necessary for later PM
support because devices and links should be identified differently
depending on how they are attached.

This also helps unifying device id strings.  Currently, there are two
forms in use (P is the port number D device number) - 'ataP(D):', and
'ataP: dev D '.  These macros also make it harder to forget proper ID
string (e.g. printing only port number when a device is in question).

Debug message handling can be integrated into these printk macros by
passing debug type and level via @lv.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: use dev->ap
Tejun Heo [Mon, 15 May 2006 11:57:53 +0000 (20:57 +0900)]
[PATCH] libata: use dev->ap

Use dev->ap where possible and eliminate superflous @ap from functions
and structures.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: add dev->ap
Tejun Heo [Mon, 15 May 2006 11:57:51 +0000 (20:57 +0900)]
[PATCH] libata: add dev->ap

Add dev->ap which points back to the port the device belongs to.  This
makes it unnecessary to pass @ap for silly reasons (e.g. printks).
Also, this change is necessary to accomodate later PM support which
will introduce ATA link inbetween port and device.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: kill old SCR functions and sata_dev_present()
Tejun Heo [Mon, 15 May 2006 11:57:49 +0000 (20:57 +0900)]
[PATCH] libata: kill old SCR functions and sata_dev_present()

Kill now unused scr_{read|write|write_flush}() and sata_dev_present().

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: use new SCR and on/offline functions
Tejun Heo [Mon, 15 May 2006 11:57:47 +0000 (20:57 +0900)]
[PATCH] libata: use new SCR and on/offline functions

Use new SCR and on/offline functions.  Note that for LLDD which know
it implements SCR callbacks, SCR functions are guaranteed to succeed
and ata_port_online() == !ata_port_offline().

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: implement new SCR handling and port on/offline functions
Tejun Heo [Mon, 15 May 2006 11:57:46 +0000 (20:57 +0900)]
[PATCH] libata: implement new SCR handling and port on/offline functions

Implement ata_scr_{valid|read|write|write_flush}() and
ata_port_{online|offline}().  These functions replace
scr_{read|write}() and sata_dev_present().

Major difference between between the new SCR functions and the old
ones is that the new ones have a way to signal error to the caller.
This makes handling SCR-available and SCR-unavailable cases in the
same path easier.  Also, it eases later PM implementation where SCR
access can fail due to various reasons.

ata_port_{online|offline}() functions return 1 only when they are
affirmitive of the condition.  e.g.  if SCR is unaccessible or
presence cannot be determined for other reasons, these functions
return 0.  So, ata_port_online() != !ata_port_offline().  This
distinction is useful in many exception handling cases.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: init ap->cbl to ATA_CBL_SATA early
Tejun Heo [Mon, 15 May 2006 11:57:44 +0000 (20:57 +0900)]
[PATCH] libata: init ap->cbl to ATA_CBL_SATA early

Init ap->cbl to ATA_CBL_SATA in ata_host_init().  This is necessary
for soon-to-follow SCR handling function changes.  LLDDs are free to
change ap->cbl during probing.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] sata_sil24: update TF image only when necessary
Tejun Heo [Mon, 15 May 2006 11:57:42 +0000 (20:57 +0900)]
[PATCH] sata_sil24: update TF image only when necessary

Update TF image (pp->tf) only when necessary.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: implement qc->result_tf
Tejun Heo [Mon, 15 May 2006 11:57:40 +0000 (20:57 +0900)]
[PATCH] libata: implement qc->result_tf

Add qc->result_tf and ATA_QCFLAG_RESULT_TF.  This moves the
responsibility of loading result TF from post-compltion path to qc
execution path.  qc->result_tf is loaded if explicitly requested or
the qc failsa.  This allows more efficient completion implementation
and correct handling of result TF for controllers which don't have
global TF representation such as sil3124/32.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: remove postreset handling from ata_do_reset()
Tejun Heo [Mon, 15 May 2006 11:57:38 +0000 (20:57 +0900)]
[PATCH] libata: remove postreset handling from ata_do_reset()

Make ata_do_reset() deal only with reset.  postreset is now the
responsibility of the caller.  This is simpler and eases later
prereset addition.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: move ->set_mode() handling into ata_set_mode()
Tejun Heo [Mon, 15 May 2006 11:57:37 +0000 (20:57 +0900)]
[PATCH] libata: move ->set_mode() handling into ata_set_mode()

Move ->set_mode() handlng into ata_set_mode().

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: use preallocated buffers
Tejun Heo [Mon, 15 May 2006 11:57:35 +0000 (20:57 +0900)]
[PATCH] libata: use preallocated buffers

It's not a very good idea to allocate memory during EH.  Use
statically allocated buffer for dev->id[] and add 512byte buffer
ap->sector_buf.  This buffer is owned by EH (or probing) and to be
used as temporary buffer for various purposes (IDENTIFY, NCQ log page
10h, PM GSCR block).

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: hold host_set lock while finishing internal qc
Tejun Heo [Mon, 15 May 2006 11:57:33 +0000 (20:57 +0900)]
[PATCH] libata: hold host_set lock while finishing internal qc

Hold host_set lock while finishing internal qc.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: clear ap->active_tag atomically w.r.t. command completion
Tejun Heo [Mon, 15 May 2006 11:57:32 +0000 (20:57 +0900)]
[PATCH] libata: clear ap->active_tag atomically w.r.t. command completion

ap->active_tag was cleared in ata_qc_free().  This left ap->active_tag
dangling after ata_qc_complete().  Spurious interrupts inbetween could
incorrectly access the qc.  Clear active_tag in ata_qc_complete().
This change is necessary for later EH changes.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: fix ->phy_reset class code handling in ata_bus_probe()
Tejun Heo [Mon, 15 May 2006 11:57:30 +0000 (20:57 +0900)]
[PATCH] libata: fix ->phy_reset class code handling in ata_bus_probe()

ata_bus_probe() doesn't clear dev->class after ->phy_reset().  This
can result in falsely enabled devices if probing fails.  Clear
dev->class to ATA_DEV_UNKNOWN after fetching it.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: kill duplicate prototypes
Tejun Heo [Mon, 15 May 2006 11:57:28 +0000 (20:57 +0900)]
[PATCH] libata: kill duplicate prototypes

Kill duplicate prototypes for ata_eh_qc_complete/retry() in libata.h.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: unexport ata_scsi_error()
Tejun Heo [Mon, 15 May 2006 11:57:27 +0000 (20:57 +0900)]
[PATCH] libata: unexport ata_scsi_error()

While moving ata_scsi_error() from LLDD sht to libata transportt,
EXPORT_SYMBOL_GPL() entry was left out.  Kill it.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] ahci: hardreset classification fix
Tejun Heo [Mon, 15 May 2006 11:57:25 +0000 (20:57 +0900)]
[PATCH] ahci: hardreset classification fix

AHCI calls ata_dev_classify() even when no device is attached which
results in false class code.  Fix it.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: rename ata_down_sata_spd_limit() and friends
Tejun Heo [Mon, 15 May 2006 11:57:23 +0000 (20:57 +0900)]
[PATCH] libata: rename ata_down_sata_spd_limit() and friends

Rename ata_down_sata_spd_limit() and friends to sata_down_spd_limit()
and likewise for simplicity & consistency.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] libata: silly fix in ata_scsi_start_stop_xlat()
Tejun Heo [Mon, 15 May 2006 11:57:21 +0000 (20:57 +0900)]
[PATCH] libata: silly fix in ata_scsi_start_stop_xlat()

Don't directly access &qc->tf when tf == &qc->tf.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] SCSI: implement shost->host_eh_scheduled
Tejun Heo [Mon, 15 May 2006 11:57:20 +0000 (20:57 +0900)]
[PATCH] SCSI: implement shost->host_eh_scheduled

libata needs to invoke EH without scmd.  This patch adds
shost->host_eh_scheduled to implement such behavior.

Currently the only user of this feature is libata and no general
interface is defined.  This patch simply adds handling for
host_eh_scheduled where needed and exports scsi_eh_wakeup() to
modules.  The rest is upto libata.  This is the result of the
following discussion.

http://thread.gmane.org/gmane.linux.scsi/23853/focus=9760

In short, SCSI host is not supposed to know about exceptions unrelated
to specific device or command.  Such exceptions should be handled by
transport layer proper.  However, the distinction is not essential to
ATA and libata is planning to depart from SCSI, so, for the time
being, libata will be using SCSI EH to handle such exceptions.

Signed-off-by: Tejun Heo <htejun@gmail.com>
17 years ago[PATCH] SCSI: Introduce scsi_req_abort_cmd (REPOST)
Luben Tuikov [Mon, 15 May 2006 11:57:18 +0000 (20:57 +0900)]
[PATCH] SCSI: Introduce scsi_req_abort_cmd (REPOST)

Introduce scsi_req_abort_cmd(struct scsi_cmnd *).
This function requests that SCSI Core start recovery for the
command by deleting the timer and adding the command to the eh
queue.  It can be called by either LLDDs or SCSI Core.  LLDDs who
implement their own error recovery MAY ignore the timeout event if
they generated scsi_req_abort_cmd.

First post:
http://marc.theaimsgroup.com/?l=linux-scsi&m=113833937421677&w=2

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Tejun Heo <htejun@gmail.com>
18 years agoMerge branch 'upstream' into irq-pio
Jeff Garzik [Thu, 27 Apr 2006 08:55:53 +0000 (04:55 -0400)]
Merge branch 'upstream' into irq-pio

18 years agoMerge branch 'master' into upstream
Jeff Garzik [Thu, 27 Apr 2006 08:53:34 +0000 (04:53 -0400)]
Merge branch 'master' into upstream

18 years agoLinux v2.6.17-rc3 v2.6.17-rc3
Linus Torvalds [Thu, 27 Apr 2006 02:19:25 +0000 (19:19 -0700)]
Linux v2.6.17-rc3

18 years agoMerge master.kernel.org:/home/rmk/linux-2.6-mmc
Linus Torvalds [Wed, 26 Apr 2006 22:45:27 +0000 (15:45 -0700)]
Merge master.kernel.org:/home/rmk/linux-2.6-mmc

* master.kernel.org:/home/rmk/linux-2.6-mmc:
  [MMC] pxamci: fix data timeout calculation

18 years agoMerge master.kernel.org:/home/rmk/linux-2.6-arm
Linus Torvalds [Wed, 26 Apr 2006 22:45:02 +0000 (15:45 -0700)]
Merge master.kernel.org:/home/rmk/linux-2.6-arm

* master.kernel.org:/home/rmk/linux-2.6-arm:
  [ARM] nommu: trivial fixups for head-nommu.S and the Makefile
  [ARM] vfp: fix leak of VFP_NAN_FLAG into FPSCR
  [ARM] 3484/1: Correct AEABI CFLAGS for correct enum handling

18 years agoMerge nommu tree
Russell King [Wed, 26 Apr 2006 20:18:45 +0000 (21:18 +0100)]
Merge nommu tree

18 years ago[PATCH] Remove __devinit and __cpuinit from notifier_call definitions
Chandra Seetharaman [Tue, 25 Apr 2006 02:35:21 +0000 (19:35 -0700)]
[PATCH] Remove __devinit and __cpuinit from notifier_call definitions

Few of the notifier_chain_register() callers use __init in the definition
of notifier_call.  It is incorrect as the function definition should be
available after the initializations (they do not unregister them during
initializations).

This patch fixes all such usages to _not_ have the notifier_call __init
section.

Signed-off-by: Chandra Seetharaman <sekharan@us.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] Remove __devinitdata from notifier block definitions
Chandra Seetharaman [Tue, 25 Apr 2006 02:35:15 +0000 (19:35 -0700)]
[PATCH] Remove __devinitdata from notifier block definitions

Few of the notifier_chain_register() callers use __devinitdata in the
definition of notifier_block data structure.  It is incorrect as the
data structure should be available after the initializations (they do
not unregister them during initializations).

This was leading to an oops when notifier_chain_register() call is
invoked for those callback chains after initialization.

This patch fixes all such usages to _not_ have the notifier_block data
structure in the init data section.

Signed-off-by: Chandra Seetharaman <sekharan@us.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] LSM: add missing hook to do_compat_readv_writev()
James Morris [Wed, 26 Apr 2006 06:45:03 +0000 (02:45 -0400)]
[PATCH] LSM: add missing hook to do_compat_readv_writev()

This patch addresses a flaw in LSM, where there is no mediation of readv()
and writev() in for 32-bit compatible apps using a 64-bit kernel.

This bug was discovered and fixed initially in the native readv/writev
code [1], but was not fixed in the compat code.  Thanks to Al for spotting
this one.

  [1] http://lwn.net/Articles/154282/

Signed-off-by: James Morris <jmorris@namei.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] protect ext3 ioctl modifying append_only, immutable, etc. with i_mutex
Al Viro [Wed, 26 Apr 2006 06:32:40 +0000 (07:32 +0100)]
[PATCH] protect ext3 ioctl modifying append_only, immutable, etc. with i_mutex

All modifications of ->i_flags in inodes that might be visible to
somebody else must be under ->i_mutex.  That patch fixes ext3 ioctl()
setting S_APPEND and friends.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] fix mips sys32_p{read,write}
Al Viro [Wed, 26 Apr 2006 06:28:09 +0000 (07:28 +0100)]
[PATCH] fix mips sys32_p{read,write}

Switched to use of sys_pread64()/sys_pwrite64() rather than keep duplicating
their guts; among the little things that had been missing there were such as
ret = security_file_permission (file, MAY_READ);
Gotta love the LSM robustness, right?

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] forgotten ->b_data in memcpy() call in ext3/resize.c (oopsable)
Al Viro [Wed, 26 Apr 2006 06:26:09 +0000 (07:26 +0100)]
[PATCH] forgotten ->b_data in memcpy() call in ext3/resize.c (oopsable)

sbi->s_group_desc is an array of pointers to buffer_head.  memcpy() of
buffer size from address of buffer_head is a bad idea - it will generate
junk in any case, may oops if buffer_head is close to the end of slab
page and next page is not mapped and isn't what was intended there.
IOW, ->b_data is missing in that call.  Fortunately, result doesn't go
into the primary on-disk data structures, so only backup ones get crap
written to them; that had allowed this bug to remain unnoticed until
now.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] fix leak in activate_ep_files()
Al Viro [Wed, 26 Apr 2006 06:20:48 +0000 (07:20 +0100)]
[PATCH] fix leak in activate_ep_files()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years agoMerge branch 'splice' of git://brick.kernel.dk/data/git/linux-2.6-block
Linus Torvalds [Wed, 26 Apr 2006 14:47:55 +0000 (07:47 -0700)]
Merge branch 'splice' of git://brick.kernel.dk/data/git/linux-2.6-block

* 'splice' of git://brick.kernel.dk/data/git/linux-2.6-block:
  [PATCH] splice: add ->splice_write support for /dev/null
  [PATCH] splice: rearrange moving to/from pipe helpers
  [PATCH] Add support for the sys_vmsplice syscall
  [PATCH] splice: fix offset problems
  [PATCH] splice: fix min() warning

18 years agoMerge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
Linus Torvalds [Wed, 26 Apr 2006 14:46:19 +0000 (07:46 -0700)]
Merge branch 'upstream-linus' of /linux/kernel/git/jgarzik/netdev-2.6

* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6:
  [PATCH] forcedeth: fix initialization
  [PATCH] sky2: version 1.2
  [PATCH] sky2: reset function can be devinit
  [PATCH] sky2: use ALIGN() macro
  [PATCH] sky2: add fake idle irq timer
  [PATCH] sky2: reschedule if irq still pending
  [PATCH] bcm43xx: make PIO mode usable
  [PATCH] bcm43xx: add to MAINTAINERS
  [PATCH] softmac: fix SIOCSIWAP
  [PATCH] Fix crash on big-endian systems during scan
  e1000: Update truesize with the length of the packet for packet split
  [PATCH] Fix locking in gianfar

18 years agoMerge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Linus Torvalds [Wed, 26 Apr 2006 14:45:57 +0000 (07:45 -0700)]
Merge /pub/scm/linux/kernel/git/davem/net-2.6

* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
  [BRIDGE]: allow full size vlan packets

18 years ago[PATCH] splice: add ->splice_write support for /dev/null
Jens Axboe [Wed, 26 Apr 2006 12:40:08 +0000 (14:40 +0200)]
[PATCH] splice: add ->splice_write support for /dev/null

Useful for testing.

Signed-off-by: Jens Axboe <axboe@suse.de>
18 years ago[PATCH] splice: rearrange moving to/from pipe helpers
Jens Axboe [Wed, 26 Apr 2006 12:39:29 +0000 (14:39 +0200)]
[PATCH] splice: rearrange moving to/from pipe helpers

We need these for people writing their own ->splice_read/write hooks.

Signed-off-by: Jens Axboe <axboe@suse.de>
18 years ago[PATCH] forcedeth: fix initialization
Ayaz Abdulla [Mon, 24 Apr 2006 22:41:31 +0000 (18:41 -0400)]
[PATCH] forcedeth: fix initialization

This patch fixes the nic initialization. If the nic was in low power
mode, it brings it back to normal power. Also, it utilizes a new
hardware reset during the init.

I am resending based on feedback, I corrected the register size mapping
and delay after posted write.

Signed-Off-By: Ayaz Abdulla <aabdulla@nvidia.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] sky2: version 1.2
Stephen Hemminger [Tue, 25 Apr 2006 17:58:54 +0000 (10:58 -0700)]
[PATCH] sky2: version 1.2

Update to version 1.2

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] sky2: reset function can be devinit
Stephen Hemminger [Tue, 25 Apr 2006 17:58:53 +0000 (10:58 -0700)]
[PATCH] sky2: reset function can be devinit

The sky2_reset function only called from sky2_probe.
Maybe the compiler was smart enough to figure this out already.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] sky2: use ALIGN() macro
Stephen Hemminger [Tue, 25 Apr 2006 17:58:52 +0000 (10:58 -0700)]
[PATCH] sky2: use ALIGN() macro

The ALIGN() macro in kernel.h does the same math that the
sky2 driver was using for padding.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] sky2: add fake idle irq timer
Stephen Hemminger [Tue, 25 Apr 2006 17:58:51 +0000 (10:58 -0700)]
[PATCH] sky2: add fake idle irq timer

Add an fake NAPI schedule once a second. This is an attempt to work around
for broken configurations with edge-triggered interrupts.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] sky2: reschedule if irq still pending
Stephen Hemminger [Tue, 25 Apr 2006 17:58:50 +0000 (10:58 -0700)]
[PATCH] sky2: reschedule if irq still pending

This is a workaround for the case edge-triggered irq's. Several users
seem to have broken configurations sharing edge-triggered irq's. To avoid
losing IRQ's, reshedule if more work arrives.

The changes to netdevice.h are to extract the part that puts device
back in list into separate inline.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years agoMerge branch 'upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/linvil...
Jeff Garzik [Wed, 26 Apr 2006 10:16:50 +0000 (06:16 -0400)]
Merge branch 'upstream-fixes' of git://git./linux/kernel/git/linville/wireless-2.6 into upstream-fixes

18 years agoMerge branch 'skb_truesize' of git://lost.foo-projects.org/~ahkok/git/linux-2.6 into...
Jeff Garzik [Wed, 26 Apr 2006 10:16:05 +0000 (06:16 -0400)]
Merge branch 'skb_truesize' of git://lost.foo-projects.org/~ahkok/git/linux-2.6 into upstream-fixes

18 years agoMerge branch 'master' into upstream-fixes
Jeff Garzik [Wed, 26 Apr 2006 10:15:27 +0000 (06:15 -0400)]
Merge branch 'master' into upstream-fixes

18 years ago[BRIDGE]: allow full size vlan packets
Stephen Hemminger [Wed, 26 Apr 2006 09:39:19 +0000 (02:39 -0700)]
[BRIDGE]: allow full size vlan packets

Need to allow for VLAN header when bridging.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
18 years ago[PATCH] Add support for the sys_vmsplice syscall
Jens Axboe [Wed, 26 Apr 2006 08:59:21 +0000 (10:59 +0200)]
[PATCH] Add support for the sys_vmsplice syscall

sys_splice() moves data to/from pipes with a file input/output. sys_vmsplice()
moves data to a pipe, with the input being a user address range instead.

This uses an approach suggested by Linus, where we can hold partial ranges
inside the pages[] map. Hopefully this will be useful for network
receive support as well.

Signed-off-by: Jens Axboe <axboe@suse.de>
18 years ago[doc] add paragraph about 'fs' subsystem to sysfs.txt
Miklos Szeredi [Wed, 26 Apr 2006 08:49:26 +0000 (10:49 +0200)]
[doc] add paragraph about 'fs' subsystem to sysfs.txt

Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
18 years ago[fuse] fix race between checking and setting file->private_data
Miklos Szeredi [Wed, 26 Apr 2006 08:49:16 +0000 (10:49 +0200)]
[fuse] fix race between checking and setting file->private_data

BKL does not protect against races if the task may sleep between
checking and setting a value.  So move checking of file->private_data
near to setting it in fuse_fill_super().

Found by Al Viro.

Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
18 years ago[fuse] fix deadlock between fuse_put_super() and request_end(), try #2
Miklos Szeredi [Wed, 26 Apr 2006 08:49:06 +0000 (10:49 +0200)]
[fuse] fix deadlock between fuse_put_super() and request_end(), try #2

A deadlock was possible, when the last reference to the superblock was
held due to a background request containing a file reference.

Releasing the file would release the vfsmount which in turn would
release the superblock.  Since sbput_sem is held during the fput() and
fuse_put_super() tries to acquire this same semaphore, a deadlock
results.

The solution is to move the fput() outside the region protected by
sbput_sem.

Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
18 years agoRevert "[fuse] fix deadlock between fuse_put_super() and request_end()"
Miklos Szeredi [Wed, 26 Apr 2006 08:48:55 +0000 (10:48 +0200)]
Revert "[fuse] fix deadlock between fuse_put_super() and request_end()"

This reverts 73ce8355c243a434524a34c05cc417dd0467996e commit.

It was wrong, because it didn't take into account the requirement,
that iput() for background requests must be performed synchronously
with ->put_super(), otherwise active inodes may remain after unmount.

The right solution is to keep the sbput_sem and perform iput() within
the locked region, but move fput() outside sbput_sem.

Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
18 years ago[PATCH] splice: fix offset problems
Jens Axboe [Tue, 25 Apr 2006 13:42:00 +0000 (15:42 +0200)]
[PATCH] splice: fix offset problems

Make the move_from_pipe() actors return number of bytes processed, then
move_from_pipe() can decide more cleverly when to move on to the next
buffer.

This fixes problems with pipe offset and differing file offset.

Signed-off-by: Jens Axboe <axboe@suse.de>
18 years ago[PATCH] splice: fix min() warning
Andrew Morton [Tue, 25 Apr 2006 13:33:34 +0000 (15:33 +0200)]
[PATCH] splice: fix min() warning

Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jens Axboe <axboe@suse.de>
18 years agoe1000: Update truesize with the length of the packet for packet split
Auke Kok [Wed, 26 Apr 2006 05:50:04 +0000 (22:50 -0700)]
e1000: Update truesize with the length of the packet for packet split

Update skb with the real packet size.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: John Ronciak <john.ronciak@intel.com>
18 years ago[ARM] vfp: fix leak of VFP_NAN_FLAG into FPSCR
Russell King [Tue, 25 Apr 2006 19:41:27 +0000 (20:41 +0100)]
[ARM] vfp: fix leak of VFP_NAN_FLAG into FPSCR

The VFP code can leak VFP_NAN_FLAG into the FPSCR. It doesn't correspond
to any real FPSCR bit (and overlaps one of the exception flags).

Bug report from Daniel Jacobowitz

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
18 years ago[ARM] 3484/1: Correct AEABI CFLAGS for correct enum handling
Richard Purdie [Tue, 25 Apr 2006 19:36:04 +0000 (20:36 +0100)]
[ARM] 3484/1: Correct AEABI CFLAGS for correct enum handling

Patch from Richard Purdie

The AAPCS says that enums can be variably sized depending on the range
of valid values. This is not the accepted behaviour under linux so for
compatibility gcc has an aapcs-linux target, the main difference being
that enums are always of type int. Change the ARM Makefile to use this
target.

Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
18 years ago[PATCH] Alpha: strncpy() fix
Ivan Kokshaysky [Tue, 25 Apr 2006 09:45:19 +0000 (13:45 +0400)]
[PATCH] Alpha: strncpy() fix

As it turned out after recent SCSI changes, strncpy() was broken -
it mixed up the return values from __stxncpy() in registers $24 and $27.

Thanks to Mathieu Chouquet-Stringer for tracking down the problem
and providing an excellent test case.

Signed-off-by: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years agoMerge master.kernel.org:/pub/scm/linux/kernel/git/sfrench/cifs-2.6-stable
Linus Torvalds [Tue, 25 Apr 2006 03:08:08 +0000 (20:08 -0700)]
Merge /linux/kernel/git/sfrench/cifs-2.6-stable

* master.kernel.org:/pub/scm/linux/kernel/git/sfrench/cifs-2.6-stable:
  [CIFS] Fix compile error when CONFIG_CIFS_EXPERIMENTAL is undefined

18 years ago[NETFILTER]: ipt action: use xt_check_target for basic verification
Patrick McHardy [Tue, 25 Apr 2006 00:18:59 +0000 (17:18 -0700)]
[NETFILTER]: ipt action: use xt_check_target for basic verification

The targets don't do the basic verification themselves anymore so
the ipt action needs to take care of it.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
18 years ago[NETFILTER]: x_tables: move table->lock initialization
Dmitry Mishin [Tue, 25 Apr 2006 00:18:25 +0000 (17:18 -0700)]
[NETFILTER]: x_tables: move table->lock initialization

xt_table->lock should be initialized before xt_replace_table() call, which
uses it. This patch removes strict requirement that table should define
lock before registering.

Signed-off-by: Dmitry Mishin <dim@openvz.org>
Signed-off-by: Kirill Korotaev <dev@openvz.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
18 years ago[NETFILTER]: ip6_tables: remove broken comefrom debugging
Patrick McHardy [Tue, 25 Apr 2006 00:17:49 +0000 (17:17 -0700)]
[NETFILTER]: ip6_tables: remove broken comefrom debugging

The introduction of x_tables broke comefrom debugging, remove it from
ip6_tables as well (ip_tables already got removed).

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
18 years ago[NETFILTER]: nf_conntrack: kill unused callback init_conntrack
Yasuyuki Kozakai [Tue, 25 Apr 2006 00:16:59 +0000 (17:16 -0700)]
[NETFILTER]: nf_conntrack: kill unused callback init_conntrack

Signed-off-by: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
18 years ago[NETFILTER]: Fix compat_xt_counters alignment for non-x86
Patrick McHardy [Tue, 25 Apr 2006 00:16:28 +0000 (17:16 -0700)]
[NETFILTER]: Fix compat_xt_counters alignment for non-x86

Some (?) non-x86 architectures require 8byte alignment for u_int64_t
even when compiled for 32bit, using u_int32_t in compat_xt_counters
breaks on these architectures, use u_int64_t for everything but x86.

Reported by Andreas Schwab <schwab@suse.de>.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
18 years ago[NETFILTER]: ULOG target is not obsolete
Thomas Voegtle [Tue, 25 Apr 2006 00:15:54 +0000 (17:15 -0700)]
[NETFILTER]: ULOG target is not obsolete

The backend part is obsoleted, but the target itself is still needed.

Signed-off-by: Thomas Voegtle <tv@lio96.de>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
18 years ago[NETFILTER]: nf_conntrack: Fix module refcount dropping too far
Yasuyuki Kozakai [Tue, 25 Apr 2006 00:15:17 +0000 (17:15 -0700)]
[NETFILTER]: nf_conntrack: Fix module refcount dropping too far

If nf_ct_l3proto_find_get() fails to get the refcount of
nf_ct_l3proto_generic, nf_ct_l3proto_put() will drop the refcount
too far.

This gets rid of '.me = THIS_MODULE' of nf_ct_l3proto_generic so that
nf_ct_l3proto_find_get() doesn't try to get refcount of it.
It's OK because its symbol is usable until nf_conntrack.ko is unloaded.

This also kills unnecessary NULL pointer check as well.
__nf_ct_proto_find() allways returns non-NULL pointer.

Signed-off-by: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
18 years ago[SPARC]: __NR_sys removal
OGAWA Hirofumi [Mon, 24 Apr 2006 20:48:51 +0000 (13:48 -0700)]
[SPARC]: __NR_sys removal

__NR_sys_sync_file_range part was lost somewhere...
[glibc is already checking __NR_sync_file_range]

Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
18 years ago[PATCH] bcm43xx: make PIO mode usable
Michael Buesch [Sun, 23 Apr 2006 11:23:10 +0000 (13:23 +0200)]
[PATCH] bcm43xx: make PIO mode usable

This patch fixes PIO mode on the softmac bcm43xx
driver. (A dscape patch will follow).
It mainly fixes endianess issues.
This patch is tested on PowerPC32 and i386.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>