Re: [PATCH 3/5] cciss: Use kernel provided PCI state save and restore functions

From: Stephen Cameron
Date: Fri Oct 22 2010 - 15:43:45 EST


--- On Fri, 10/22/10, Stephen M. Cameron <scameron@xxxxxxxxxxxxxxxxxx> wrote:

> From: Stephen M. Cameron <scameron@xxxxxxxxxxxxxxxxxx>
> Subject: [PATCH 3/5] cciss: Use kernel provided PCI state save and restore functions
> To: axboe@xxxxxxxxx
> Cc: akpm@xxxxxxxxxxxxxxxxxxxx, smcameron@xxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, mike.miller@xxxxxx, thenzl@xxxxxxxxxx
> Date: Friday, October 22, 2010, 2:21 PM
> From: Stephen M. Cameron <scameron@xxxxxxxxxxxxxxxxxx>
>
> and use the doorbell reset method if available (which doesn't
> lock up the controller if you properly save and restore
> all the PCI registers that you're supposed to.)


This patch, and all these cciss patches in this series, are vs. the jens/for-2.6.37/drivers branch.

One difference I noticed between linux-2.6.36 and jens/for-2.6.37/drivers is that linux-2.6.36 contains this in drivers/block/cciss.c
in the function cciss_kdump_hard_reset_controller:

/* The doorbell reset seems to cause lockups on some Smart
* Arrays (e.g. P410, P410i, maybe others). Until this is
* fixed or at least isolated, avoid the doorbell reset.
*/
use_doorbell = 0;

This is not present in jens/for-2.6.37/drivers.

That was added to linus tree by me, because I'd noticed we were getting controller lockups and subsequent data corruption when attempting kdumps using the doorbell reset when (unbeknownst to me at the time) the pci state saving and restoring code wasn't quite right. So these patches fix the pci state saving and restoring code, so the above "use_doorbell = 0" needs to come out when these patches go into Linus's tree. But such a patch cannot be made vs. Jens's tree, because that code isn't in Jens's tree.

-- steve




--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/